fix(a2a): let one JSON-RPC envelope define the wire at every edge - #535
fix(a2a): let one JSON-RPC envelope define the wire at every edge#535yordis wants to merge 2 commits into
Conversation
`session/update` already reaches the client through the client-op proxy for every operation, so the prompt-scoped notification consumer was a second delivery path that existed only for the duration of a prompt. Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Streaming clients could not correlate SSE frames to the call that started them, because chunks left as named SSE events carrying no JSON-RPC id. Four separate types spelled the single JSON-RPC id, so each edge decided for itself what the wire looked like and the shared codec was bypassed. Audit traffic could not be filtered per agent: the emitter was handed an agent id and dropped it, spending the subject terminal on the method instead. Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
PR SummaryHigh Risk Overview Shared JSON-RPC types: A2A edges converge on Audit (ADR#0055): ACP: Mid-flight Reviewed by Cursor Bugbot for commit 2e01f2b. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Warning Review limit reached
Next review available in: 37 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (64)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2e01f2b. Configure here.
| Ok(chunk) => sse_task_line(&chunk), | ||
| Err(ref err) => sse_error_line(err), | ||
| Ok(chunk) => sse_data_line(chunk.as_ref()), | ||
| Err(ref err) => sse_error_line(&caller_id, err), |
There was a problem hiding this comment.
SSE frames omit caller id
High Severity
sse_from_bootstrap_and_payloads takes the caller's JSON-RPC id but only stamps it on error frames. Bootstrap and task chunks are forwarded verbatim, so SSE success frames can keep a null or transport id. Spec clients then cannot correlate stream progress to the call that opened it, which is the correlation this change is meant to provide on this edge.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 2e01f2b. Configure here.
Code Coverage SummaryDetailsDiff against mainResults for commit: 2e01f2b Minimum allowed coverage is ♻️ This comment has been updated with latest results |


session/updatetwice over: the client-op proxy already carries it for every operation, so the prompt-scoped consumer was a parallel path that only existed while a prompt was open.