Skip to content

🤖 feat: sub-agent tasks strip in the VS Code webview dock #5109

Description

@ThomasK33

Refs #4968. Split out of the #5092 dock-strips work.

Problem

Desktop ChatPane shows the sub-agent tasks strip (SubAgentTasksDecoration) above the composer, so running and finished sub-agents and workflow runs stay visible from the parent chat. The VS Code webview dock has no equivalent, so sub-agents are invisible there. The webview marks the strip as planned in vscode/src/webview/chatUiCapabilities.ts.

Why it is not a drop-in

src/browser/components/SubAgentTasksDecoration/SubAgentTasksDecoration.tsx reads data the webview does not have:

  1. Descendant metadata: it collects descendants from WorkspaceContext (useWorkspaceMetadata()), including task status and workflow-task fields. The extension host's toUiWorkspace projection drops those fields, and the webview mounts no WorkspaceContext.
  2. Descendant activity: it reads WorkspaceStore sidebar state for the parent and every descendant (activeWorkflowRunIds, live/working hints, armed monitors). The webview has no WorkspaceStore, and the host's activity pump (vscode/src/workspaceActivityPump.ts) forwards only the selected workspace's monitor count.
  3. Workflow procedures: it calls workflows.listActiveRuns (cold-mount discovery) and polls workflows.getRunStatuses for nested runs. Neither is in vscode/src/orpcAllowlist.ts.
  4. Navigation: rows call navigateToWorkspace from the router, which is a no-op in the webview's embedded router. The webview equivalent is the host selectWorkspace message (or openWorkspace).

Proposed approach

  1. Split the decoration into a props-driven content component (descendants, workflow groups, per-descendant activity, row select callback) and the desktop container that feeds it from WorkspaceContext/WorkspaceStore, as 🤖 fix: VS Code webview streaming barrier and jump-to-bottom match desktop #4996 did for StreamingBarrierContent. Keep the content component in HOT_COMPONENTS.
  2. Extension host: forward descendant metadata for the selected workspace (task status, workflow task, parent links) and extend the activity pump to cover descendants (active workflow run ids, live hints, monitors), scoped to workspaces the host already sent.
  3. Allow workflows.listActiveRuns and workflows.getRunStatuses through the bridge, limited to known workspace ids with fixed input shapes.
  4. Map row clicks to selectWorkspace.
  5. Flip chatUiCapabilities.ts to supported, with App.test coverage and a side-by-side web vs webview check.

Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

Activity

  1. ThomasK33 commented on Oct 4, 2026

    @ThomasK33
    MemberAuthor

    Picked up by the issue coordinator: workspace workspace-74 (c18e502645), branch xum-5109-webview-subagent-strip


    Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

  2. ThomasK33 commented on Oct 4, 2026

    @ThomasK33
    MemberAuthor

    Closed when #5657 merged. The stack is complete.

    Residual work, all labeled backlog:


    Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions