Files
ai-app/DECISIONS.md
T
irisandClaude Fable 5.1 9fa09b0af1 Show a session's subagents as subcards, each with a read-only transcript
A subagent is a second transcript owned by a session, in the same event
model, with no process and no controls. The claude translator routes lines
carrying parent_tool_use_id to a per-subagent translator and transcript
under <session>/subagents/<tool_use_id>; three routes expose the list, a
transcript page and the SSE stream. Echo grows /subagent [n] as the rig.

On the phone a card with subagents ends in a chevron expander, collapsed by
default, opening to outlined subcards styled like dev-updater's components;
a subcard opens SessionScreen in read-only form, addressed through
TranscriptAddress so paging, cache and stream are shared.

Design in SUBAGENTS.md; choices awaiting review in DECISIONS.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 13:41:15 -04:00

2.3 KiB

Decisions awaiting review

Choices made while working autonomously, for Bryan to keep or change. Each says what was picked and why; the detail is in the design doc it names. Delete an entry once it has been looked at.

Subagent views (2026-09-05, SUBAGENTS.md)

Made on my own judgement, limited blast radius:

  1. A subagent is a transcript, not a session. It has no process, controls or settings; it is addressed as /sessions/{id}/subagents/{sub} and stored under the session's directory, so deleting the session takes it. Alternative rejected: registering it as a session of its own, which would give it a card in the main list and a driver that can do nothing.
  2. Read-only view is the session screen minus its controls, rather than a second, simpler transcript screen. Keeps paging, caching, selection and rendering in one place. Cost: a readOnly mode threaded through SessionScreen.
  3. The list only carries a count. Each session row says how many subagents it has; their titles and statuses are fetched when the card is expanded. Keeps GET /sessions from reading every subagent transcript. Consequence: an expanded card's statuses refresh with the list, not live.
  4. Expanded/collapsed is remembered per session on the phone, not on the server. Collapsed by default, per the transcript convention that new things arrive collapsed.
  5. Subagents of imported sessions are not shown. The import path still skips isSidechain records; the CLI's own subagents/agent-*.jsonl files are not read. Only subagents run while this backend was watching exist.
  6. Echo grows /subagent [n] as the test rig, so nothing here needs a paid turn to exercise.

Deferred, because they reach further than this feature:

  • Live status on the list. Whether the session list should follow a stream at all (it refreshes on demand today) decides whether subagent status can ever be live there. Not changed.

  • Nested subagents. A subagent's own Task calls are shown as tool calls in its transcript and are not given transcripts of their own. Supporting that is the same mechanism one level down, but the UI would need nested expanders.

  • The subagent status row says "context unknown". Nothing measures a subagent's context; the row could leave it out rather than admit it.