Repository navigation
feat(AIC-3412): add the Google ADK agents handler - #106
andrewklatzke wants to merge 12 commits into
Conversation
ADK is a wildcard agent runtime, so the handler serves any provider. Gemini is the default transport and Vertex is an explicit opt-in. Co-authored-by: Cursor <cursoragent@cursor.com>
…-google-adk Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # .release-please-manifest.json # .sdk_metadata.json # AGENTS.md # tests/test_cross_handler_parity.py # uv.lock
…nd emit graph:node in the Google ADK adapter Co-authored-by: Cursor <cursoragent@cursor.com>
…span Co-authored-by: Cursor <cursoragent@cursor.com>
…-google-adk Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # .release-please-manifest.json # .sdk_metadata.json # AGENTS.md # tests/test_cross_handler_parity.py
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Open the chat span in before_model_callback, end it on the first non-partial after_model_callback, and fail it in on_model_error_callback. - Write gen_ai.response.finish_reasons through the shared table. - Sum usage_metadata over every non-partial event, not only the final one. - Stream with RunConfig(streaming_mode=SSE): ADK 2.9.2 defaults to NONE and yields no partial events. End the root span before yielding done. - to_adk_agents(definition, opts) awaits the resolve_graph() result like the sibling adapters, resolves each node's model through _resolve_model with the factory auth options, and sends handler._user_message. Drop the unused Workflow and its import. - google_adk_graph takes and forwards api_key. - Commit the API report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed two commits for the GA 1.0 audit (needs a human reviewer):
Two follow-ups are left open. The handler forwards no |
- ADK's FunctionTool takes only the callable and drops every argument its signature does not name. The tool adapter now carries a signature built from the AI Config JSON schema, and the tool's declaration is that schema. - history_contents drops system turns instead of sending them as user. - The handler seeds the variation's own user and assistant messages ahead of runtime history. - Graph nodes take their instruction from system messages when `instructions` is empty, like the handler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed baa83b1 for the four new Bugbot findings. AI Config tool schemas now reach ADK, both the signature and the declaration. System history is no longer seeded as user. Config user and assistant turns are seeded ahead of history. Graph nodes fall back to system messages for their instruction. Still needs a human reviewer. |
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 baa83b1. Configure here.
| project=options.get("project"), | ||
| location=options.get("location"), | ||
| ), | ||
| instruction=_instruction(config, variables), |
There was a problem hiding this comment.
Native graph skips config conversation turns
Medium Severity
to_adk_agents now applies _instruction so system messages become the node prompt, but it still never seeds that node's user and assistant turns. The handler path prepends those templated turns before history, so google_adk_graph and to_adk_agents diverge on the same messages-mode node and few-shot or prompt turns are dropped.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit baa83b1. Configure here.
There was a problem hiding this comment.
Fixed in 34c6f31: to_adk_agents now seeds each node templated user and assistant messages, through the same _config_turns the handler uses, ahead of history. Covered by test_config_turns_are_seeded_before_history in test_native_graph.py.
to_adk_agents now seeds a node's templated user and assistant messages ahead of history, as the handler does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>


Summary
launchdarkly-ai-google-adk-agents, a wildcard agent handler for Google ADK. Gemini Developer API is the default. Vertex is an explicit opt-in and never shares an API key with that path.provider/model).google-adkis not a declared dependency: 2.9.2 caps OpenTelemetry below this workspace's exporter pin, so production installs addgoogle-adk[extensions]themselves.google_adk_graphandto_adk_agents. The native adapter runs the root, followstransfer_to_<target>when the model calls it, and emitsld.ai.graphplus$ld:ai:graph:*when a context is present.Test plan
uv run mypy packages/google-adk-agents/srcuv run pytest packages/google-adk-agents/tests tests/test_cross_handler_parity.pyMade with Cursor