native-ui: render a per-subagent status line row #237
Labels
No labels
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose#237
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Step 5 of the native UI build order.
Claude Code supports
subagentStatusLine.command, which renders one row per subagent in the agent panel and receives that row's context as JSON on stdin. Today only the session-levelstatusLineis wired.Scope
--subagentmode to the existingagent-compose statuslinecommand that reads row context from stdin.internal/statusline.subagentStatusLinekey fromnative-uionce the mode exists.Notes
This is pull-based like the session status line, so it needs no host mutation beyond the settings key, and it survives
--safe-mode.Worth checking against the fixed eight
_FOR_SUBAGENTS_ONLYcolor tokens. A role already claims the nearest slot in its theme, and two roles can share one, so the row text should carry the identity rather than relying on the slot color alone.Done when
An agent panel shows the role mark and color per subagent row, driven by the composed identity.
Landed on
mainas0a7683f.The contract is not what this issue assumed
This issue says the command "renders one row per subagent in the agent panel and receives that row's context as JSON on stdin." Read from the 2.1.221 binary, it is the other way around on both halves.
Input. The command runs once per tick with every live row, as a single object on stdin:
typeis one oflocal_agent,local_bash,local_workflow,remote_agent,in_process_teammate.labelis already resolved by the harness per type.tokenSamplesis capped at 16.Output. Not text. One JSON object per line, validated strictly as
{id: string, content: string}. A line that is not JSON, or that fails the shape, is logged and dropped. Rows the command does not name simply get no decoration.Timing. 5000 ms timeout. First tick at 300 ms, then every 5000 ms. Skipped entirely when workspace trust is not accepted.
What ships
statusline --subagentreads the tick and emits the JSONL rows.cwd, not the session's, so an agent working in another checkout reports that checkout's identity. Resolution is cached per directory, which matters at 16 rows a tick.native-uiemitssubagentStatusLinefor every role, so a composed Claude launch wires this through the--settingspath from #236 with no host mutation.Row text:
Identity is text, per the note on this issue about the eight shared color slots.
Verified and not
Confirmed against a live projection: a tick naming this session's directory returns the engineer row with the melded colors, and a second row under
/tmpis correctly omitted.Not confirmed: that Ink honors ANSI inside
contentwhen it paints the panel. The session status line already carries ANSI the same way, so the risk is low, but it is inference. Checking it needs a session with live subagents, which means driving a real turn.