Repository navigation
fix(activity): show a remote agent's Buzz send as its reply - #3025
Conversation
kgoose titles remote tool calls with goose's extension__tool name, so a buzz__send arrived as an ordinary tool row. Completed Buzz message tools now read as posted agent messages, as the local transcripts show them. Co-authored-by: mbot <3754f8729004d95654c46dbab3129e4ab9ef05cc2534e2a3fbfc155983bd637b@buzz.block.builderlab.xyz>
activity-transcript.ts imported isMessageTool from session-tools, which pulls in every Buzz tool (and docs/buzz-help.md) wherever the transcript renders. The message tool names now live in message-tools.ts, which session-tools re-exports.
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source review via Wes’s account, with independent systems/lifecycle, correctness/security, and product/UI coverage from Rocket, Mantis, and Groot.
Reviewed 402d9e303f9721263bf6f138b6f425c3bed49c9e against 5b7df025f67d9d74faaa29e80514f797a120e3a5.
The inline P2 identifies a failed send that this projection can label Posted while hiding its error.
[P2] Remove the private tracker reference from the public PR description. The opening line exposes an internal issue identifier and tracker URL. This repository is public, and its open-source boundary excludes internal ticket keys and coordination links. Remove that reference and retain the self-contained public problem description; keep the internal cross-reference in the private tracker.
Source-only review: no tests or app workflows executed. The author’s reported full-suite failures and runtime behavior remain unverified. The linked issue could not be read because the connector was unavailable. No attached images were present in the inspected PR description.
buzz-agent reports an MCP application error as a completed call with rawOutput.isError, so completed alone doesn't mean the message posted. Such a send stays a tool row and keeps its error output.
|
🤖 I removed the internal tracker reference from the PR description. The inline P2 is fixed in 52656f2. |
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated follow-up source review via Wes’s account, with independent coverage from Rocket, Mantis, and Groot.
Reviewed 52656f24ad443ce28f1e0627986e9b7f4e999115 against unchanged base 5b7df025f67d9d74faaa29e80514f797a120e3a5, focusing on the repair since 402d9e303f9721263bf6f138b6f425c3bed49c9e and retaining the earlier review’s coverage.
Both prior P2 findings are addressed. Explicit MCP application errors are retained per call and prevent Posted conversion, preserving the tool’s error output; the new regression covers completed-plus-error remaining a tool. The private tracker reference has also been removed from the PR description. No new actionable findings in this follow-up.
Source-only: no tests or app workflows were executed. The author’s reported test results/full-suite failures and actual runtime behavior remain unverified.
|
🤖 Drip design review at Intent: make a remote agent’s posted reply read as its voice in Activity. No must-fix design findings in the source review. Successful sends reuse the existing agent reply disclosure and Posted label; running, failed, and explicit MCP-error sends retain their tool row and output. Evidence: reply conversion, existing reply presentation. Not checked: no attached screenshots were available; tests, app rendering, both themes, narrow/wide widths, enlarged text, keyboard interaction, and live remote-agent delivery were not exercised. |
… contract Message tools are read by title, rawInput.text and rawOutput.isError and shown as posted messages, so the contract says so. Co-authored-by: ART <ea39c1c8acf57180161ef4ba4ed68abf8589f5291956b909a5aa991fc66664ca@buzz.block.builderlab.xyz> Signed-off-by: Bradley Axen <baxen@squareup.com>
Picks up c202642 (block#2837), which fixes the ThreadPanel catch-up test that fails on every run of a merge with the older main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * origin/main: (155 commits) deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (block#3077) fix(communities): accept invite links and bare hosts in Join a community (block#2412) fix(builderlab): open a remote agent's Activity on the conversation it was opened from (block#3051) refactor(builderlab): keep capabilities fresh in the session (block#3003) feat(moderation): show invite links as a QR code (block#3029) Keep Create agent's Model row readable and give Goose a Thinking row (block#2673) Join a community right after creating it in Settings (block#2991) Let new Solo chats start temporary by default (block#2874) fix(messages): fill a screen that a head of folded agent activity leaves empty (block#3037) fix(search): search saved conversations while the community is offline or connecting (block#2724) test(agents): make version-history date assertion time-zone independent (block#3010) feat(relay): gate artifact writers on NIP-AR support (block#2735) fix(channels): open the dock's community switcher from Personal space (block#2806) fix(members): keep the list's place after a member change (block#2818) fix(channels): keep a launcher's side panel open on Close all tabs (block#2803) fix(activity): show a remote agent's Buzz send as its reply (block#3025) refactor(settings): move external identity authorization to security (block#3032) test(typeahead): serve the fixture pages as a build so cold loads fit (block#2793) feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (block#2722) fix(solo): delete a removed workspace's settings after the groups write (block#2819) ... Signed-off-by: Andrew Harvard <aharvard@squareup.com>
…pover-card-layout-7eeda1e0 * origin/main: (128 commits) deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (#3077) fix(communities): accept invite links and bare hosts in Join a community (#2412) fix(builderlab): open a remote agent's Activity on the conversation it was opened from (#3051) refactor(builderlab): keep capabilities fresh in the session (#3003) feat(moderation): show invite links as a QR code (#3029) Keep Create agent's Model row readable and give Goose a Thinking row (#2673) Join a community right after creating it in Settings (#2991) Let new Solo chats start temporary by default (#2874) fix(messages): fill a screen that a head of folded agent activity leaves empty (#3037) fix(search): search saved conversations while the community is offline or connecting (#2724) test(agents): make version-history date assertion time-zone independent (#3010) feat(relay): gate artifact writers on NIP-AR support (#2735) fix(channels): open the dock's community switcher from Personal space (#2806) fix(members): keep the list's place after a member change (#2818) fix(channels): keep a launcher's side panel open on Close all tabs (#2803) fix(activity): show a remote agent's Buzz send as its reply (#3025) refactor(settings): move external identity authorization to security (#3032) test(typeahead): serve the fixture pages as a build so cold loads fit (#2793) feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (#2722) fix(solo): delete a removed workspace's settings after the groups write (#2819) ...
Problem
A remote (kgoose) agent's
buzz__sendshowed up in the Activity view as an ordinary tool row. Local agents' transcripts (goose, codex, claude, pi) show it as the agent's styled reply.Cause
kgoose titles tool calls with goose's fully qualified
extension__toolname (BuzzToolDisplay.kt: tools outside the sandbox extension getrawTitle). The shared ACP projection inactivity-transcript.tsdoesn't recognize Buzz message tools, so it never turned them into message items. Only the per-adapter local transcripts do that.Change
In
activity-transcript.ts, a completed tool call titledbuzz__send/buzz__reply_in_subthread(or Claude'smcp__buzz__…form) whoserawInput.textis non-empty now becomes amessageitem withposted: true. It keeps the tool's position and time. Failed or still-running sends stay as tool rows, so failures remain visible. That includes a send thatcompletedwithrawOutput.isError(how buzz-agent reports MCP application errors), which keeps its error output.isMessageToolis the source of truth for which tools post. I moved it into a newbuzz-mcp/message-tools.ts, whichsession-tools.tsre-exports. Importingsession-toolsdirectly would pull every Buzz tool, anddocs/buzz-help.md, into the renderer wherever the transcript is used. CI's flake-check graph test caught this.This also applies to local agents whose activity comes through ACP with Claude Code's
mcp__buzz__sendtitles. They get the same styled reply, which is the intended behavior.Tests
activity-transcript.test.ts: covers the kgoose sequence (runningtool_callwithout args, then a completion with args),mcp__buzz__reply_in_subthread, a failed send, and a non-messagebuzz__read.vitest runon the activity-transcript, ActivityTranscript, agent-activity, builderlab Activity, current-activity and work-stop tests: 9 files, 149 tests passing at8277a86f4. At402d9e303, the session-tools, acp, goose, codex, claude-code and pi transcript suites also pass (54 files, 1480 tests), along withtests/integration/flake-check.test.mjsandtsc.LEFTHOOK=0. The pre-push full suite failed 30 unrelated tests (MessageReactions, InboxPage, builderlab index, and others) on 5s timeouts at load average ~52 on the shared machine. Each one I re-ran alone still timed out the same way, and none of them touch this code. I'm relying on CI for the full suite.