feat(a2a): implement SSE streaming for task updates and artifacts #1048

Merged
freemo merged 1 commits from feature/m6-a2a-sse-streaming into master 2026-03-22 01:24:58 +00:00
Owner
No description provided.
freemo added this to the v3.6.0 milestone 2026-03-18 06:15:26 +00:00
freemo added the
Type
Feature
label 2026-03-18 06:15:26 +00:00
freemo force-pushed feature/m6-a2a-sse-streaming from da4f820273 to 18d98a2723 2026-03-18 17:47:41 +00:00 Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-18 17:47:52 +00:00
Author
Owner

Code Review — PR #1048 feat(a2a): implement SSE streaming

(Note: Cannot submit formal review approval since this PR is authored by the same account. Leaving review as a comment instead.)

The implementation is technically sound — SseEventFormatter, EventBusBridge, and the domain-to-A2A event mapping are clean and well-tested with 8 Behave scenarios.

Process Issues

  1. Empty PR body — Per CONTRIBUTING.md §Pull Request Process, every PR must include a clear description with summary, issue reference, and dependency link. Please add a proper description.

  2. No linked issue — This feature addition should reference its tracking issue with a Closes #NNN keyword.

Minor Code Notes

  1. Inline importimport contextlib is imported inside the _on_domain_event method body rather than at the module top level. Per the project's import guidelines: "Ensure all imports are at the top of the Python file."

  2. Silent error suppressioncontextlib.suppress(RuntimeError) when publishing to the queue silently swallows all RuntimeError variants. Consider at minimum a debug-level log so that publish failures are traceable.

  3. default=str in JSON serializationSseEventFormatter.format() uses json.dumps(data, default=str) which silently converts any non-serializable type to its string representation. Pragmatic but could mask data type issues — worth a code comment.

## Code Review — PR #1048 `feat(a2a): implement SSE streaming` *(Note: Cannot submit formal review approval since this PR is authored by the same account. Leaving review as a comment instead.)* The implementation is technically sound — `SseEventFormatter`, `EventBusBridge`, and the domain-to-A2A event mapping are clean and well-tested with 8 Behave scenarios. ### Process Issues 1. **Empty PR body** — Per CONTRIBUTING.md §Pull Request Process, every PR must include a clear description with summary, issue reference, and dependency link. Please add a proper description. 2. **No linked issue** — This feature addition should reference its tracking issue with a `Closes #NNN` keyword. ### Minor Code Notes 3. **Inline import** — `import contextlib` is imported inside the `_on_domain_event` method body rather than at the module top level. Per the project's import guidelines: *"Ensure all imports are at the top of the Python file."* 4. **Silent error suppression** — `contextlib.suppress(RuntimeError)` when publishing to the queue silently swallows all `RuntimeError` variants. Consider at minimum a debug-level log so that publish failures are traceable. 5. **`default=str` in JSON serialization** — `SseEventFormatter.format()` uses `json.dumps(data, default=str)` which silently converts any non-serializable type to its string representation. Pragmatic but could mask data type issues — worth a code comment.
freemo requested review from CoreRasurae 2026-03-19 05:16:52 +00:00
freemo requested review from brent.edwards 2026-03-19 05:16:52 +00:00
freemo force-pushed feature/m6-a2a-sse-streaming from 18d98a2723 to f5f083f8cd 2026-03-20 21:37:25 +00:00 Compare
freemo force-pushed feature/m6-a2a-sse-streaming from f5f083f8cd to f138bab5ff 2026-03-22 01:07:21 +00:00 Compare
freemo merged commit f138bab5ff into master 2026-03-22 01:24:58 +00:00
freemo deleted branch feature/m6-a2a-sse-streaming 2026-03-22 01:24:58 +00:00
Sign in to join this conversation.
No Label
Type
Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cleveragents/cleveragents-core#1048