Repository navigation
feat: live subagent fleet rendering (Agent cards) - #277
Merged
Merged
Conversation
Live concurrency header + expandable per-subagent tool-call mini-feed, sourced from <sessionDir>/subagents/agent-<id>.jsonl, linked to the parent Task card via meta.toolUseId. Disk-sourced (durable), no proxy correlation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Shared SubAgentState/SubAgentToolCall/SessionSubAgentsEvent types - Pure buildSubAgentState (transcript+meta -> state, tool-call timeline, cap 40) - SubAgentWatcher: per-session polling tail of <sessionDir>/subagents/*.jsonl - SubAgentWatcherManager: dir derived from transcript path; parent tool_result flips running->done; wired into the session forwarder as session:sub-agents Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- runtime.subAgents folded from session:sub-agents IPC - SubAgentsContext provided from Feed (threaded via TileLeaf runtime) - Block.tsx routes Agent tool_use -> TaskSubagentRow (status + tool count + expandable tool-call mini-feed) instead of the dead generic ToolUseRow - ConversationRow groups sibling Agent spawns under SubagentGroupHeader Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 17, 2026
This was referenced Jul 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replaces the dead generic
Agenttool card in the feed with a live subagent fleet view: see how many subagents are running at once, and expand any one to watch what it's doing in real time.Before — an
Agentspawn rendered as a static generic tool card (just the name + description, never updating):After — sibling spawns group under a live header; each row drills in to its tool-call timeline:
How
The data was already on disk, never read. Claude Code writes each subagent's full transcript live to
<sessionDir>/subagents/agent-<id>.jsonl, with a sidecaragent-<id>.meta.jsoncarrying{ agentType, description, toolUseId }.toolUseIdmatches the parentAgenttool_use block id exactly — a deterministic join key, no wire/heuristic correlation needed.src/main/subagents/): a per-session polling watcher tails thesubagents/dir, parses appended JSONL incrementally (byte offsets), and derives aSubAgentStatepertoolUseId(status, tool-call timeline capped at 40, turn count, elapsed, current activity). The dir is derived from the main transcript'sfilepath (sidesteps providerSessionId-timing); parenttool_resultblocks flip a subagent running→done. Pushed via a newsession:sub-agentsIPC channel.runtime.subAgentsfolds the push;SubAgentsContext(provided fromFeed, threaded viaTileLeaf) exposes it to rows.Block.tsxroutesAgenttool_use →TaskSubagentRow(live status + expandableSubagentMiniFeed);ConversationRowgroups siblingAgentspawns underSubagentGroupHeader.All disk I/O is main-side — the renderer never reads files. Disk-sourced means it's durable (survives reload), unlike the ephemeral proxy stream.
Scope / safety
subAgents = {}) the feed renders exactly as before; a loneAgentspawn renders without a group header. No existing contract touched (there was noAgentrenderer before — it fell through to the genericToolUseRow).subagents/dir → inert.+N earliercount; mini-feed lazy (only the data we push); watcher scoped per active session.Design docs
docs/superpowers/specs/2026-06-14-subagent-fleet-rendering-design.mddocs/superpowers/plans/2026-06-14-subagent-fleet-rendering.mdVerification
npx tsc -b tsconfig.web.jsonandtsconfig.node.json: no new errors (only the 4 pre-existing baseline).subagents/data on disk (correct tool counts, cap/drop,toolUseIdlinkage, running/done resolution).🤖 Generated with Claude Code