Repository navigation
fix(mothership): hold a tool call's display grouping beside its arguments - #9296
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
No issues found across 19 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Heads up: you’re close to your flex budget. Increase your flex budget so reviews don’t pause.
Turn on auto-fix | Re-trigger cubic
[Medium impact] The PR appears safe to merge; no blocking issue was found in the changes since the previous review. SummaryKeeps tool-call display grouping in
|
|
@greptile |
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
No issues found across 19 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Heads up: you’re close to your flex budget. Increase your flex budget so reviews don’t pause.
Turn on auto-fix | Re-trigger cubic
Summary
activity) in its own field beside its arguments, end to end, instead of merging it intoparams.activity. The two shared one key, so an integration operation with its ownactivityargument lost the gateway's grouping on reload, and a completed grouping could overwrite an operation-ownedactivityargument with the same idparamsstay exactly as the frame gave them; the grouping (own or inherited, titles completed) lives onToolCallState.activityPersistedToolCall.activityis written and normalized; the display projection, Stop reconcile and stop-path replay (buildLiveAssistantMessage) carry it, and the browser model serializes and replays it the same wayreadFrameActivity, decides what grouping a call frame supplies for all three frame reducers (server, browser, stop-path replay): a gateway's resolved operation owns its arguments, so its frames, including repeats after the rebind, never supply onereadCallActivity(the field, elseparams.activity), so older rows render unchangedactivityargument is grouping-shaped (an object with a stringid) still reads as a grouping, since it can't be told apart from an older row. Pre-existing; built-in integrations takeactivityas a stringType of Change
Testing
persisted-message.test.ts(write → JSON → normalize → display),handlers.test.ts(execution args and held grouping, incl. a repeated frame),effective-transcript.test.ts(stop-path replay),turn-model-serialize.test.ts(live model and snapshot replay)check:audits, the full suite and the integration suite run in CIChecklist
test-auditauthoring gate)