feat(web): wire up MCP task support — Tasks screen, Run-as-task, status toasts (#1422) (#1424)

Wires the ported Tasks screen + core task subsystem through App.tsx: sticky Clear Completed, cancel/refresh error toasts, core-side per-task progress correlation, Run-as-task on the Tools screen (gated on server support), per-server Task TTL, and live task-status toasts.
This commit is contained in:
Cliff Hall 2026-06-04 08:49:47 -04:00 • committed by GitHub
commit ed6eda7492
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 1192 additions and 40 deletions

View file

@ -356,6 +356,7 @@ const meta: Meta<typeof InspectorView> = {
onServerEdit: fn(),
onServerClone: fn(),
onServerRemove: fn(),
serverSupportsTaskToolCalls: false,
onToolsUiChange: fn(),
onCallTool: fn(),
onRefreshTools: fn(),

View file

@ -85,6 +85,7 @@ function makeProps(
onServerEdit: vi.fn(),
onServerClone: vi.fn(),
onServerRemove: vi.fn(),
serverSupportsTaskToolCalls: false,
onToolsUiChange: vi.fn(),
onCallTool: vi.fn(),
onRefreshTools: vi.fn(),

View file

@ -264,8 +264,14 @@ export interface InspectorViewProps {
// Per-primitive actions (route to `inspectorClient` methods / hook refresh).
// Each `on{Screen}UiChange` persists that screen's lifted UI state (#1417).
/** Whether the connected server advertises task-augmented tool calls. */
serverSupportsTaskToolCalls: boolean;
onToolsUiChange: (next: ToolsUiState) => void;
onCallTool: (name: string, args: Record<string, unknown>) => void;
onCallTool: (
name: string,
args: Record<string, unknown>,
runAsTask?: boolean,
) => void;
onCancelToolCall?: () => void;
onClearToolResult?: () => void;
onRefreshTools: () => void;
@ -362,6 +368,7 @@ export function InspectorView({
onServerEdit,
onServerClone,
onServerRemove,
serverSupportsTaskToolCalls,
onToolsUiChange,
onCallTool,
onCancelToolCall,
@ -524,6 +531,7 @@ export function InspectorView({
callState={toolCallState}
ui={toolsUi}
listChanged={false}
serverSupportsTaskToolCalls={serverSupportsTaskToolCalls}
onUiChange={onToolsUiChange}
onRefreshList={onRefreshTools}
onCallTool={onCallTool}