Repository navigation
Agent pane: a queued agent's message draws as its received line - #23825
Conversation
…o Send now A `queued` record of another agent's message (its `_meta.provenance`, a `[name]` prefix from `acpmux send`, or `fromAgent`) now keeps its sender's name on the queue entry (direct.ts `queuedFrom`), and acpmux's queue list keeps it. Its row draws the name as a chip ahead of the text, as the received line does once it runs, and drops Send now, the person's override for their own prompt. An edit makes it the person's, as acpmux does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
|
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)
Unclear: CI failed on
Not re-run automatically: Written by red: web / Web status; base red: the same failure on the base fcacd19; does not block Gallery before/after for
States
Pick other states with a |
|
Found 3 test failures on Blacksmith runners: Failures
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
|
|
|
Bead |
|
|
Leo (via claude-sr2): a queued prompt that is another agent's message must read as the agent row, not as the person's prompt. The queue entry now keeps the whole message (direct.ts `queuedMessage`, as the transcript reads it once it runs, else acpmux's `fromAgent` with a lead that only repeats the sender dropped), and its row is IncomingMessageLine: the sender's mark, its name as a chip that opens its chat (the listed chats reach the queue from App), a one-line preview, and a glass Markdown card when opened. Edit, Remove and Send now sit at the line's end. Gallery cases for it closed and opened. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
Whether IncomingMessageLine is open is its own state, so opening a queued agent's message never drew the queue again and the list kept its one-line height, the card clipped to a sliver (review). The line now says when it opens or closes (`onToggle`), and the queue draws again and fits. The gallery's opened state waits for the whole card inside the list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
Review: opening Details in a queued agent's message clipped it too, as anything inside IncomingMessageLine changes its height without drawing the queue again (images, late highlighting). The queue now watches its rows' heights and fits again, instead of the line's onToggle (dropped). mergeQueue keeps a queued message only while its text is the one acpmux lists: an edit the pane missed makes it the person's, as acpmux does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
…s message line too Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
|
Review (subagent, correctness first): SHIP at e34ce27 Independent Non-blocking: rows are re-observed on every draw, which costs one cheap extra Fleet stand-in for the merge compile: Tests: these files run in no PR check here, because react-apps-check stops first at a base-red gate ("the agent pane imports inspector/ContextSection.css but build-agent-pane-web.sh does not add it", from #23789). So I ran them at this head on huge-blue: Reds at this head, all from base and none in files this PR changes:
|
Base gained #23825, whose queued agent message draws as its received line and whose test read the line's one-line preview, which this branch removes. The test now reads the card under the line (whole, not cut), and the queue's comment and gallery note say the message is a card cut to six lines. Review: a click on a cut card that plays a video or presses another control (input, label, summary, role=button) no longer opens it, and two comments that still spoke of the preview are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray
…lines (#23932) * Agent pane: another agent's message shows under its line, cut to six lines The message is now drawn by default as the muted glass card under its line (Markdown, PR and file links), instead of hiding behind a one-line preview. A message longer than six lines is cut there with the last line fading out; the line's chevron, or a click on the cut card, opens it whole, with Details (the prompt as the agent got it) under it. The row estimate (model.ts) counts the card's text up to the same six lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray * Agent pane: a queued agent message shows its card too Base gained #23825, whose queued agent message draws as its received line and whose test read the line's one-line preview, which this branch removes. The test now reads the card under the line (whole, not cut), and the queue's comment and gallery note say the message is a card cut to six lines. Review: a click on a cut card that plays a video or presses another control (input, label, summary, role=button) no longer opens it, and two comments that still spoke of the preview are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16028-eee2-75a1-b075-2e4023976100&host=cosmic-gray --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ok-queue-click Conflicts with #23872 (a paused queue names its error) and #23825 (a queued agent message draws as its received line): the paused note keeps its ellipsis in the new two-column grid; the received line spans the row with no mark column. The header's composer.queueHeld goes with the header; queue-paused-why asserts the note leads the rows and no header shows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16027-99fc-73f0-9482-5a4babfe1b0a&host=cosmic-gray
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
In progress: review, fleet compile and CI are running at the head.
Another agent's message waiting behind a running turn used to show in the composer queue as if the person had typed it. Now its row is the message's received line:
IncomingMessageLine(conversation/IncomingMessageCard.tsx, from #23727), the same component the transcript draws it with once it runs. That gives the sender's harness mark or a small bot, the sender's name as a chip that opens their chat, a muted one-line preview, and the message as a glass Markdown card when opened. Edit, Remove and Send now sit in the line's actions slot at its end. The person's own queued prompts are unchanged.direct.tsqueuedMessage(msg)reads aqueuedrecord the way the received line reads the same prompt once it runs (incomingPrompt:agent_message,session_message/subsession_message, the[name] textfromacpmux sendin a shell). Failing that, it uses acpmux'sfromAgent, dropping a leading[name]orFrom name:that only repeats the sender. The person's own prompt gets none.QueuedPrompt(message) throughqueue_order, delivery updates andmergeQueue, since acpmux's queue list doesn't name a sender. An edit (queue_updated) makes the prompt the person's, matching acpmux, which drops its provenance andfromAgent(hub/queue.rs).SubsessionContext. App now hands the listed chats to the queue (ComposerqueueSubsessions), so the chip finds a shell sender's chat by name and opens it.IncomingMessageLineonToggle), so the card shows whole.agent-pane.composerqueued-from-agent(closed) andqueued-from-agent-open(the card; its play waits for the whole card inside the list).No capture: webview-only (the composer queue row in the agent pane web view). The gallery states
agent-pane.composerqueued-from-agentandqueued-from-agent-opencover it, rendered by gallery health on Linux Chromium.Tests (CI only; nothing is built or tested on Leo's Mac):
queuedMessage.test.ts: each provenance kind, the CLI[name]prefix,fromAgentwith and without a repeated lead, none for the person's prompt, andmergeQueuekeeping the message.test/queue-agent-message.test.tsx(JSDOM): the agent row shows the chip, the preview and all three actions inside the line; the chip opens the sender's chat; the preview opens the card. The person's row is unchanged.Overlap: #23753 (queued rows show Steer, a trash can and ⋯) changes the same row code. Whichever lands second rebases.
Agent session: cosmic-gray
🤖 Generated with Claude Code