feat(tui): sub-agents UX — card identity, live agents tab, failure follow-through - #56
Merged
Conversation
Cards now carry their task's goal, parsed from the delegate_tasks argument at tool-call time (tasks the wire hasn't confirmed yet render as pending), tick a client-side elapsed timer between frame bursts, and retire as lost on a disconnect instead of spinning forever. The collapsed rollup counts failures, terminal errors/timeout stick to the notice strip until the turn ends, and every delegating turn closes with a swarm verdict marker so a failure can't scroll by uncounted. Stop resolution moves to a model-level live-task registry: a card left running by an earlier turn stays stoppable — previously /stop and the drawer were scoped to whatever turn happened to be current. The /agents tab becomes a live surface: 3s poll while visible (the runs-tab pattern), c arms the same two-step stop gate on the highlighted row, o jumps to the delegating transcript step expanded.
From the two-judge review panel of 20da00f: - swarm verdict counts lost cards as 'N lost' instead of 'N live' — an interrupted turn no longer contradicts its own cards - a lost card revives when frames resume after a reconnect - a failed stop un-advertises 'stop sent' from the card - the 3s agents poll no longer wipes an armed stop-gate prompt - agents tab joins mgmtPanel: esc folds the detail view instead of closing the drawer - footer hints teach c (stop) and o (jump); /help blurb refreshed - README: /stop stays current-turn scoped, drawer c is the cross-turn path
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.
Summary
Implements M1+M2 of the sub-agents UX plan (TEMP_BODEK_SUBAGENTS_UX_PLAN.md, panel-reviewed v2): the sub-agents integration goes from telemetry-rich/decision-poor to a surface where every card is identifiable, honest about its state, and actionable.
Changes
M1 — identity & honest telemetry
delegate_tasksargs parse into a per-step task manifest; cards carry their task's goal (sanitized at ingest), unconfirmed tasks render◌ SA# · pending (not yet reported)2/3 · 1 ✗ · 8.1k tok× lost on disconnect— no ghost spinnersM2 — action parity & failure follow-through
/agentstab: 3s live poll (runs-tab pattern),ctwo-step stop on any registry row (cross-turn via a model-level live-task registry — fixes stop false-negatives),ojump-to-transcript, ⏎ full record**swarm: 5 ✓ · 1 ✗ — SA4 error**Panel polish (2-judge review: UX + adversarial engineering)
stop sent; poll preserves armed stop-gate promptsc/o; agents tab joinsmgmtPanel(esc folds detail)Verification
make fmt·make vet·make lint(0 issues) ·make test(race, all packages green)subagent_manifest_test.go,subagent_follow_test.go)Per convention: merge once CI passes.