feat: deepresearch a2a-go agent#590
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a multi-agent deep research system utilizing the A2A protocol, featuring orchestrator, researcher, analyzer, and synthesizer agents, with NATS JetStream for event sourcing and MySQL for task persistence. Key feedback highlights several critical issues: a compilation error in the cluster client due to an invalid sync.WaitGroup.Go call, a database query error in indexing.go using status instead of state, and a missing agent column in the test database schema. Additionally, the review points out a race condition in eventqueue.go, a non-deterministic task ordering bug in taskstore.go, a DOM-based XSS vulnerability in the report page, and potential nil pointer panics in the planner. Defensive checks for empty subtasks in the orchestrator and minor documentation/typo fixes are also recommended.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
c9fee60 to
11b2b8b
Compare
ae58757 to
525db3b
Compare
525db3b to
888cc80
Compare
Overview
A multi-agent system that performs deep research on a given topic. The project showcases way of implementing the standard SDK interfaces for integrating with various popular infra components like MySQL and NATS.
Built using a2a-go and adk.
Details
Orchestrator agents handle client requests:
returnImmediately: true.If an orchestrator crashes, the state machine replays its event stream from the NATS STATES stream to recover which stages were dispatched and which completed, then resumes from where it left off.
Orchestrator never loads large task contents into memory and instead uses task references when communicating with synthesizer and analyzer. The final report is returned to a user a reference.
Push notifications allow orchestrator to limit the number of open long-lived connections and avoid subtask status polling.
Also moved the old non-a2a-go code under
samples/goto "archived" directory and separated go-linting because superlint errors did not make sense.