Repository navigation
Agent pane: an agent a shell call starts (codex exec, acpmux run) draws as a subagent - #25043
Conversation
|
Owned by claude-sr2/subsession-card on cosmic-gray · session |
This comment has been minimized.
This comment has been minimized.
c3e6de0 to
2a60259
Compare
This comment has been minimized.
This comment has been minimized.
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Bead |
codex exec, claude -p, acpmux run (agentRuns.ts) in a chat of another family fold to a Subagent: its card where it started (AgentRunCard on AgentCard), its tray line and its Session Info row, with its harness mark, model and effort, live state, time and reply. A background run ends with acpmux background_task_update; a later read of its output file is its reply. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16f9b-2fcb-7c72-b06e-af8fce00adcb&host=cosmic-gray Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
env reads its own options (-S/--split-string, -u, -C, --) and splits only one command; command -p -v is a lookup; assignments count only before a command and after env; at most 8 wrappers; --parent only among the options. A run folds only when both harnesses are known and differ, and a run's output file is forgotten once it ended and was read. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16f9b-2fcb-7c72-b06e-af8fce00adcb&host=cosmic-gray Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8379df3 to
0de8308
Compare
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Probably yours: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 9e8ad58 to compare; do not merge until green; see lane-rules Tour of Gallery before/after for |
|
Found 98 test failures on Blacksmith runners: Failures
...and 88 more test failures. View all on Blacksmith: run 40162554826, run 40162554636, run 40162554681
|
sh -c and perl -e count only among the leading options (a script file before them runs instead), perl's -- ends its options, an env -S string that is not one command is not read, and exec -a takes a name. A run ended by the turn's stop forgets its output file; a stopped run's card says Stopped, not Failed; a call met before the chat's harness was known folds again once it is. The gallery's fixture names no fleet host and covers only the card. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16f9b-2fcb-7c72-b06e-af8fce00adcb&host=cosmic-gray Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
time's -o and -f take a value, perl reads -eSCRIPT and -we SCRIPT, and a function definition
(f() { … }, function f { … }) runs nothing until it is called, so its body is not a run.
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16f9b-2fcb-7c72-b06e-af8fce00adcb&host=cosmic-gray
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An array assignment (args=(codex exec "x")) is data, and a quoted brace closes no function body: words keep their source. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16f9b-2fcb-7c72-b06e-af8fce00adcb&host=cosmic-gray Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Stacked on #25040 (agentRuns.ts). #24977 (AgentCard) has landed, and this branch is rebased onto
feat-cmux-next. Until #25040 lands, the diff here also includes its two files (agentRuns.tsand its test). Its own change is about 640 lines. The typed-data follow-up foracpmux run --parent(acpmux #25019) is #25062.Leo, 2026-10-24, word for word, looking at a
codex execreview that renders as a plain "Command" row (spinner, "5m 13s Running", a stop square; Session Info → Background tasks shows only{ cat /Users/…/flee… 5m 13s):What changes
A shell call that starts an agent from another model family is now that agent, a
Subagentin the existing fold. Examples:codex exec …,claude -p …,acpmux run|new|exec …,sr codex …, and any of these throughreach HOST '…',ssh,sh -c,timeout,nohup,envor theperl -e 'alarm N; exec @ARGV'wrapper. "Different family" means the harness the call runs (from the executable, or from acpmux's-m) differs from this chat's harness (summary.harness). So a Codex chat's owncodex execstays a command.subagentFold.tsreduceRun: the call'stool_call(withrawInput.command, a string or Codex's argv) becomes a Subagent with idrun:<callId>and its own group row. The Subagent carries:kind"Codex · gpt-6-astra xhigh";description;The call's updates become the run's own view, so opening the run shows the Command row with everything it printed. When the call completes or fails, the run is done or failed, with its reply: Codex's final message after its
tokens usedlog, or the output's tail. A call that goes to the background ("Output is being written to …") keeps running until acpmux'sbackground_task_updateends it. A later Read,catortailof that output file sets the reply. A turn's end ends a foreground run whose end never arrived, the same way it does for Claude subagents.direct.ts: the chat's harness goes to the fold. If a call is only recognized as a run once its command arrives in a later update, its earlier Command row is dropped (dropToolItem).AgentRunCard.tsx(new) draws the run's group row with Agent pane: sub-session calls render as live sub-session cards, not JSON #24977'sAgentCard, the same card sub-sessions use. It shows the harness mark, title, model (plus the host), state (the shared working spinner, then Done/Failed) and elapsed time. Once the run ends it shows the reply as Markdown cut to three lines (the sub-session card'sCut). Raw opens the command. Show output opens the run's view. For an acpmux run whose-nsession is in the session list, Open chat opens it throughSubsessionContext.open.The tray above the composer, Session Info's Subagents section and the Subagents tab list the run like any subagent, with the harness's mark (
AgentLinemark) and "Codex · gpt-6-astra xhigh". The swallowed call no longer shows under Background tasks. A run has no Stop or Restart button, since those are Claude's own.runningTray.ts/subagentRows.ts: a run group (isRunGroup) keeps its card where it started, also in the tray's layout. It never opens into a list.model.tsestimates its height.The fallback is the command text. hb-acpmux is adding typed parent/state/result data to acpmux run/new (
--parent), and was asked for the event shape. A small follow-up PR will read that data first once it merges.Gallery
agent-pane.agent-runs. Every row is folded through the realSubagentFoldfrom the update shapes Claude Code recorded for these calls, with scrubbed paths and synthetic prompts and replies. Variants:before: today's Command row.card-running(shipped): running, with the spinner.card-done(shipped): done with its reply, failed, and an acpmux run with Open chat.group(not picked): the run as a plain subagent group card.line(not picked): a tray line plus a one-line end.summary: the Session Info rows.I picked the card because it is the only variant that shows the model and the reply where the run happened, and it is the card sub-sessions already use.
Captured on huge-blue (Linux Chromium, w420) from the gallery at this head.
beforeis the same recorded call drawn as the base draws it.group,lineRisk
Contained to the agent pane's webview. It only changes how shell calls that start another family's agent render. Every other call keeps its row, and the parser returns nothing for anything it can't read. No new timers: elapsed time uses
useNow, which ticks only while a run runs and stops when the pane is hidden. No observers beyondCut's existing one per card. The per-event cost is a Map lookup. The command is tokenized once per call, and calls that start no agent are remembered so they are never parsed again.Tests
agentRunFold.test.ts: a run's start, end and reply; a failed run; a background run that ends throughbackground_task_updateand gets its reply from a later Read; a turn's end that leaves a background run running; a same-family call and agrepthat stay commands; a Codex chat'sclaude -p.agentRuns.test.ts(from Agent pane: read the agent a shell call starts (codex exec, claude -p, acpmux run) #25040).Agent session: cosmic-gray
🤖 Generated with Claude Code