github.com-google-adk-python
all · 18 devs · built 2026-06-13
Repository snapshot
Monthly reports
Highlights
- Introduced new *AI agent skills* including `adk-pr-triage` for automated pull request management and CLA verification [ce9011c1 · Bo Yang], `adk-review` for rigorous change quality control [cc6f78c3 · Bo Yang], and `adk-issue` for GitHub issue analysis and triage [be03166f · Bo Yang].
- Achieved a *performance optimization* in *LLM flows* by enabling parallel resolution of agent tool unions, significantly reducing execution time for agent operations [ae95a972 · Google Team Member].
- Enhanced *observability* by adding native OpenTelemetry `gen_ai.client.*` metrics with `gen_ai.agent.name` attribute for more granular insights into LLM operations [0bb329ba · Marcin Vinietowicz].
- Added a new `RubricBasedMultiTurnTrajectoryEvaluator` to the *evaluation subsystem*, enabling sophisticated LLM-based assessment of multi-turn conversational quality [cae23371 · wenhzhang].
- Implemented critical bug fixes to prevent *MCP tool* initialization hangs and task group leaks by switching to `anyio.fail_after` for timeouts [334ef815 · Bo Yang].
- Addressed a security vulnerability in the `ReadFileTool` by properly escaping `path` and `range` arguments to prevent *shell injection* [e16629b3 · Wei (Jack) Sun].
- Performed significant *refactoring* to restore backward compatibility for 1.x agent configurations and split *environment tools* into single-class modules, improving maintainability and simplifying configuration [44cd1167 · George Weale], [1cc298ed · Wei (Jack) Sun].
Observations
- The *Grow* score for May 2026 was 4, representing a substantial 40% decrease compared to the 5-month average of 7, indicating a reduced focus on new feature development during this period.
- Total output (Grow + Maintenance + Waste) decreased by 21% (18 current vs 23 5-month average), despite the commit volume remaining stable at 169 commits, which is only +1% above the 5-month average of 167 commits.
- A notable number of commits focused on *bug fixes* and *stability improvements* across various components, including *workflow rehydration* [4f992b0c · Samarth2410], *session management* [03ef3f61 · George Weale], *Gemini LLM connection* [e896c620 · Kathy Wu], and *Firestore session integration* [a5db3467 · Kjell Reidar Jøssang], suggesting an emphasis on hardening existing systems.
- Several *maintenance* activities were undertaken, such as refactoring agent and tool retrieval functions for *asynchronous execution* [e623b3b4 · Bo Yang], graduating the `SkillToolset` from experimental status [91ded3a1 · Kathy Wu], and updating CI/CD workflows for security checks and test timeouts [eaff9c02 · Google Team Member], [7ad79947 · asobran].
- The `tools` subsystem, particularly `AgentTool` and `SkillToolset`, received multiple fixes and enhancements, addressing issues like plugin lifecycle management [2a68c4e7 · thacht], skill script import paths [9296198b · Yufeng He], and `LoadSkillResourceTool` retry loops [bc45ee67 · Google Team Member], indicating an area of active refinement and complexity.
Performance over time
ETV stacked by Growth, Maintenance and Fixes — 90-day moving average, normalized to ETV / month.
Average performance per developer
ETV per active developer per month — 30-day moving average.
Active developers over time
Unique developers committing each day — 90-day moving average.
Knowledge concentration
How dependent is this repo on a small number of contributors? Higher top-1 share = higher key-person risk.
Xiang (Sean) Zhou owns 21.5 % of commits.
Top contributors
Most impactful commits
Top 20 by ETV in the all-time window.
- 2.0ETVfeat: support context caching 1. add a context cache config in app level which will apply to all agents in the app 2. pass on cache config through invocation context to llm_reqeust 3. store cache metadata in llm_response 4. lookup old cache metadata from latest event for reusing old cache 5. create new cache if old cache cannot be reused PiperOrigin-RevId: 809158578Xiang (Sean) Zhou · c66245a3 · 2025-09-19
- 2.0ETVfeat: Add ComputerUseToolset PiperOrigin-RevId: 785646071Xiang (Sean) Zhou · 083dcb44 · 2025-07-22
- 1.7ETVfeat: Add Vertex AI Agent Engine Sandbox integration for computer use Implement AgentEngineSandboxComputer, a BaseComputer implementation that uses Vertex AI Agent Engine Computer Use Sandbox as a remote browser environment. This enables computer-use agents to operate in secure, isolated cloud-based browser environments. Key features: - SandboxClient: Low-level CDP client using vertexai SDK send_command() - AgentEngineSandboxComputer: BaseComputer implementation with session state management for sandbox sharing across invocations - Support for both auto-provisioning and bring-your-own-sandbox (BYOS) modes - Automatic token refresh and retry logic for transient navigation errors - Fix wait_5_seconds adapter to properly pass tool_context Co-authored-by: Xiang (Sean) Zhou <seanzhougoogle@google.com> PiperOrigin-RevId: 900292803Xiang (Sean) Zhou · 76868485 · 2026-04-15
- 1.6ETVCreate a developer folder and add samples. PiperOrigin-RevId: 755885332Hangfei Lin · a4adb739 · 2025-05-07
- 1.6ETVchore: Add initial version of agent builder assistant that assists user to build config based agent PiperOrigin-RevId: 801014241Xiang (Sean) Zhou · 3ed90979 · 2025-08-29
- 1.3ETVfeat: Support interactions API for calling models Co-authored-by: Xiang (Sean) Zhou <seanzhougoogle@google.com> PiperOrigin-RevId: 843032402Xiang (Sean) Zhou · c6320caa · 2025-12-11
- 1.3ETVfeat: Adds Rubric based final response evaluator The evaluator uses a set of rubrics to assess the quality of the agent's final response. PiperOrigin-RevId: 811154498Ankur Sharma · 5a485b01 · 2025-09-25
- 1.3ETVfix: Support project-based gemini model path for BuiltInCodeExecutor and all built-in tools This is to support model path like : projects/265104255505/locations/us-central1/publishers/google/models/gemini-2.0-flash-001" PiperOrigin-RevId: 783413351Xiang (Sean) Zhou · a5d6f1e5 · 2025-07-15
- 1.2ETVfeat(mcp): gracefully handle tool execution errors and transport crashes Previously, if an MCP tool returned a JSON-RPC error (e.g. 403 Forbidden) or if the underlying transport connection crashed, the resulting exceptions (McpError and ConnectionError) would bubble up and crash the entire ADK runner. This change introduces robust error boundaries for MCP tools: - `McpTool.run_async()` now catches `McpError` and general exceptions, returning them as structured error dictionaries `{"error": ...}` to the LLM agent so the conversation can continue gracefully. - `SessionContext` races tool calls against the background session task so transport crashes surface immediately instead of hanging. - Fixes an AnyIO cancellation scope bug ("Attempted to exit cancel scope in a different task") by removing redundant `asyncio.wait_for` wrappers around exit stack context entry. - Connection errors trigger automatic retries via `@retry_on_errors` before finally surfacing the failure to the agent. Fixes #4901, #4162 Co-authored-by: Kathy Wu <wukathy@google.com> PiperOrigin-RevId: 902912292Kathy Wu · 7ae83b2b · 2026-04-21
- 1.2ETVfeat: Add agent card builder PiperOrigin-RevId: 785565665Xiang (Sean) Zhou · 18f5bea4 · 2025-07-21
- 1.1ETVfeat: Enable MCP Tool Auth (Experimental) PiperOrigin-RevId: 773002759Xiang (Sean) Zhou · 157d9be8 · 2025-06-18
- 1.0ETVfix: add protection for arbitrary module imports Close #4947 Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 888296476George Weale · 995cd1cb · 2026-03-23
- 1.0ETVfeat: Add remote a2a agent PiperOrigin-RevId: 776643130Xiang (Sean) Zhou · c13c9875 · 2025-06-27
- 1.0ETVfix: Make credential key generation stable and prevent cross-user credential leaks This change updates the credential key generation to use a stable hash (SHA256) instead of Python's built-in hash, which can vary based on PYTHONHASHSEED. It also makes sure that temporary or exchanged OAuth2 fields are excluded from the key calculation. I also added when saving credentials, a copy of the AuthConfig is used to avoid modifying the original shared AuthConfig instance with user-specific exchanged credentials. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 864599326George Weale · 33012e6d · 2026-02-03
- 1.0ETVfeat: Add support for store audio and transcription into events/sessions and artifacts PiperOrigin-RevId: 798011660Hangfei Lin · ddb070ff · 2025-08-22
- 1.0ETVfix: Fixes `thought` handling in contents.py and refactors its unit tests Before this change, other agent's reply with thought will still be inserted in the outgoing LlmRequest due to the wrong `else` statement for calling all other type of part. This commit also refactors test_contents.py to be behavior-oriented tests, instead of implementation-oriented, and add more test cases to cover expected scenarios. The tests are divided into the following files with different focus: - test_contents.py: covers the basic logic of event filter; - test_contents_branch.py: covers the behavior related to branch, which takes effect when ParallelAgent is used. - test_contents_other_agent.py: covers the retelling behavior to include other agents' reply as context for the current agent. - test_contents_function.py: covers the function_call/function_response rearrangement logic mainly for `LongRunningFunctionTool`. PiperOrigin-RevId: 802759821Wei Sun (Jack) · a30851ee · 2025-09-03
- 0.9ETVfeat: Add Authenticated Tool (Experimental) PiperOrigin-RevId: 772992074Xiang (Sean) Zhou · dcea7767 · 2025-06-18
- 0.9ETVfeat: Support both output_schema and tools at the same time in LlmAgent 1. Allow developers to specify output schema and tools together. 2. If both are specified, do the following: 2.1 Do not set output schema on the model config 2.2 Add a special tool called set_model_response(result) 2.3 `result` has the same schema as the requested output_schema 2.4 Instruct the model to use set_model_response() to output its final result, rather than output text directly. 2.5 When the set_model_response() is called, ADK will extract its content and put it in a text part, so the client would treat it as the model response. PiperOrigin-RevId: 792686011Xiang (Sean) Zhou · af635674 · 2025-08-08
- 0.9ETVchore: Add a DebugLoggingPlugin to record human readable debugging logs Co-authored-by: Xuan Yang <xygoogle@google.com> PiperOrigin-RevId: 856067925Xuan Yang · 8973618b · 2026-01-14
- 0.9ETVfix(live): Handle live session resumption and GoAway signal * Skip sending conversation history when a live session is being resumed using a handle. * Catch ConnectionClosed and APIError exceptions during live sessions and attempt to reconnect if a session resumption handle is available. * Handle the server's "go_away" signal by proactively closing the connection to trigger a reconnection with the latest session handle. * Propagate the "go_away" signal from the Gemini connection to the LlmResponse. * Add unit tests for reconnection on ConnectionClosed, APIError, skipping history on resumption, and handling the go_away signal. Closes #4996 Co-authored-by: Liang Wu <wuliang@google.com> PiperOrigin-RevId: 896687925Liang Wu · 6b1600fb · 2026-04-08