Repository navigation
fix(feed): agent questions post as answerable choices, named for their agent - #28846
azooz2003-bit wants to merge 3 commits into
Conversation
…or its agent The Mac's feed bridge posted every acpmux question (Claude Code's AskUserQuestion, a Codex request_user_input) as a bare notice: "Agent asks: <the first question cut to 160 characters>", no options, poster "Agent". Only a Chief subagent's report, which arrives as a message of its own, showed what an agent said; every other agent's events read as one thin line. A question that fits a feed choice (1-4 questions, 2-8 options) now posts as a choice request: every question and option whole in its body, positional ids (q0/o0) in its prompt, the session's name as poster. The person's choice answer maps back onto the same request (re-read, same digest) and goes to acpmux as the question's own answer (CmuxAgentQuestion reply). Session answers are refused; a question is not a permission, so no presence proof is needed, as on the chat pane and the dialog socket. Other questions stay notices, now named for the agent; approvals name the agent too. Tests: CmuxNextAppTests/AcpmuxFeedBridgeQuestionTests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ces as the owner counts Review follow-ups: - An answer the person gives in this Mac's own feed goes to acpmux through the bridge's person-proven connection (FeedModel.onAnswer -> answeredHere), as an answer in the chat would; the Mac feed's own answers reach the owner as a session and would be refused. Owner answers are admitted only from another install, as a deny (never a session, never this Mac's own install). - Choice text is cut by UTF-16 units (the owner counts JS string length), and a choice whose cleaned question or label is empty posts as the notice. - _acpmux/info for the agent's name does not wait for the session log. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…from the bridge's nonisolated statics) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base db183fa; does not block Default changesThis pull request changes 2 defaults at
Needs a review. It passes with an independent review receipt on this commit: a comment or review whose first line is Regenerate the snapshot with |
Correctness review (subagent), and how each finding was resolvedHead reviewed: f17fd36 (and, for iOS, the commits that went straight to feat-cmux-next). Current head: 8b3a043. Verdict: no blockers. Mac findings
Verified correct by the reviewer
iOS findings (landed on feat-cmux-next as c78a916)
Tests
|
|
Found 2 test failures on Blacksmith runners: Failures
|
|
For awareness: this PR has a SHIP review at its head, but GitHub reports it as conflicting with |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. Awareness from #33562: a dropped ACP answer receiver now returns agent_gone rather than success. The caller audit found AcpmuxPermissionFeedBridge.swift:424 only logs a refused permission_respond; it does not reflect failed delivery on the Feed item or phone. This belongs with the Feed owner; no Feed code was changed. Tracked with reproduction and related caller findings in #33565. Please preserve a visible not-sent result when the underlying agent is gone. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
What
The Mac's feed bridge posted every question an agent asks in its chat (Claude Code's AskUserQuestion, a Codex
request_user_input) as a bare notice: "Agent asks: <first question, cut to 160 characters>", with no options, no body and the poster "Agent". Only a Chief subagent's report (a message of its own in the reports basket) showed what an agent actually said, which is why onlyoptchat-*agents' events looked complete in the Feed.Now:
choice(1 to 4 questions, 2 to 8 options each, the owner's bounds infeed-kinds.ts) posts as achoicerequest. Its body lists every question in full with its options and descriptions. Its prompt uses positional ids (q0,o0), because Claude keys answers by question text and the owner caps ids at 40 characters. The person answers it inline in the Feed.AgentQuestion.reply,_acpmux/permission_respond, withansweredBy).FeedModel.onAnswer→answeredHere), as an answer typed in the chat would. Answers relayed by the owner from another device are admitted only from another install, the same rule a Deny already follows: never asession:answer, and never this Mac's own install. A question is not a permission (Leo 2026-10-21), so no phone presence proof is required. Approvals are unchanged._acpmux/info("claude", "codex", "Fix login"), not "Agent".CmuxNextAgentPane/Approvals/AcpmuxFeedPost.swift, together with their 6 strings, which were moved byte-for-byte between catalogs. The question-to-choice mapping is new inCmuxNextAgentQuestion/AgentQuestionFeedChoice.swift. Net App lines: −3.The phone half (every finished turn's card shows the agent's whole reply, not a 160-character flattened preview) went straight to
feat-cmux-nextas iOS work: db183fa..c78a916 .Tests
CmuxNextAppTests/AcpmuxFeedBridgeQuestionTests(fleetpackage-test-lane.sh suite, Xcode 26.6): passed at 8b3a043 (cmux-ci step 6e65559206f0faea6d6ef847, aws-m4pro-8)aQuestionPostsAsAnAnswerableChoice: choice kind, options, body, agent poster.aChoiceAnswerAnswersTheQuestion: a feed answer maps back topermission_respondparams; unknown question or option ids answer nothing.aSessionAnswerNeverAnswersAQuestion: a session or this Mac's own install, relayed through the owner, never answers.aQuestionThatDoesNotFitAChoiceStaysANoticeaToolPermissionStillPostsAnApproveItem, plus the 2 existing question-title tests.Observed / Not run
feed-event-details(fleet job 106cb1fb41c1fd6fb2884966), built and published.No capture: the visible change is the content of a feed item (a
choicecard instead of an "Agent asks:" line). The choice card UI itself (FeedChoiceControls) is unchanged. No capture scene can post a bridge item without a signed-in cloud Feed and a live acpmux question. The before/after post bodies are in the report.Changelog
🤖 Generated with Claude Code