dashboard: subagent tree (rail) + swimlane (timeline) for parallel agent runs #965

Closed
opened 2026-05-08 12:15:22 +00:00 by claude-desktop · 1 comment
Collaborator

User story

As an operator running parallel agent fleets (code-lead delegating to dev / reviewer; cursor's Task tool dispatching subagents), I want a tree of all active runs in the side rail and horizontal swimlanes on the timeline showing which lane every event belongs to, so I can follow concurrent work without losing context.

Acceptance criteria

Tree (side rail)

  • <SubagentTree> in the drawer / monitor surface. Renders the parent-task → child-task tree. Each node: agent type, status pill, duration, current tool (or last tool finished).
  • Auto-expand the node corresponding to the agent currently working; collapse others.
  • Breadcrumb header shows the active path: code-lead › dev › grep.
  • Click a node = focus its swimlane on the timeline.

Swimlane (timeline)

  • Replace the current single-column timeline with a multi-lane Gantt-style track keyed by agent. One lane per active subagent. Events render as bars on their lane (color = ToolKind, length = duration).
  • Lanes collapse when there's only one (no visual weight when serial).
  • Hover an event shows a popover with the same content as the tool card body.

Server

  • TaskRecord.subagents: SubagentRecord[] populated from tool_call_started / tool_call_completed events of kind === "subagent_task". Each subagent gets its own event sub-stream.

Out of scope

  • Subagent log replay (cursor Run.conversation() ticket #956 covers replay; this issue covers live rendering).
  • Drag-to-reorder lanes — single-operator scale, not needed.

Dependencies

  • Depends on <ToolCard> ticket (event hover popover).
  • Depends on status-pill-vocabulary ticket.

References

## User story As an operator running parallel agent fleets (code-lead delegating to dev / reviewer; cursor's `Task` tool dispatching subagents), I want a tree of all active runs in the side rail and horizontal swimlanes on the timeline showing which lane every event belongs to, so I can follow concurrent work without losing context. ## Acceptance criteria ### Tree (side rail) - [ ] `<SubagentTree>` in the drawer / monitor surface. Renders the parent-task → child-task tree. Each node: agent type, status pill, duration, current tool (or last tool finished). - [ ] Auto-expand the node corresponding to the agent currently working; collapse others. - [ ] Breadcrumb header shows the active path: `code-lead › dev › grep`. - [ ] Click a node = focus its swimlane on the timeline. ### Swimlane (timeline) - [ ] Replace the current single-column timeline with a multi-lane Gantt-style track keyed by agent. One lane per active subagent. Events render as bars on their lane (color = `ToolKind`, length = duration). - [ ] Lanes collapse when there's only one (no visual weight when serial). - [ ] Hover an event shows a popover with the same content as the tool card body. ### Server - [ ] `TaskRecord.subagents: SubagentRecord[]` populated from `tool_call_started` / `tool_call_completed` events of `kind === "subagent_task"`. Each subagent gets its own event sub-stream. ## Out of scope - Subagent log replay (cursor `Run.conversation()` ticket #956 covers replay; this issue covers live rendering). - Drag-to-reorder lanes — single-operator scale, not needed. ## Dependencies - Depends on `<ToolCard>` ticket (event hover popover). - Depends on status-pill-vocabulary ticket. ## References - Claude Code Agent Monitor hierarchy tree: https://github.com/hoangsonww/Claude-Code-Agent-Monitor - LangSmith tree-of-runs: https://www.langchain.com/langsmith/observability
Collaborator

🤖 Auto-assigned to dev (heuristic: area:dashboard + body 1881 bytes (≤ 2 KB) — code role). Reply /unassign to reroute.

🤖 Auto-assigned to **dev** (heuristic: area:dashboard + body 1881 bytes (≤ 2 KB) — code role). Reply `/unassign` to reroute.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
charles/claude-hooks#965
No description provided.