Skip to content

Commit 9e18390

Browse files
committed
chore(release/candidate): release 2.4.0
1 parent 81f9f2e commit 9e18390

3 files changed

Lines changed: 135 additions & 2 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "2.3.0"
2+
".": "2.4.0"
33
}

CHANGELOG.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,138 @@
11
# Changelog
22

3+
## [2.4.0](https://github.com/google/adk-python/compare/v2.3.0...v2.4.0) (2026-06-29)
4+
5+
6+
### Features
7+
8+
* add error handling to VertexAiMemoryBankService.search_memory ([f3529e9](https://github.com/google/adk-python/commit/f3529e995a1e3eb6971b3f4e4eda391d9ca7c239))
9+
* Add mTLS support for DiscoveryEngineSearchTool ([8ba0e6a](https://github.com/google/adk-python/commit/8ba0e6aa657107f4e959051cd56e71fff16b9eaa))
10+
* add OpenAI Responses API support in labs ([6b831d5](https://github.com/google/adk-python/commit/6b831d5aa0e39b75f69df87746f073bfd66a60a0)), closes [#3209](https://github.com/google/adk-python/issues/3209)
11+
* Add support for reusing an existing SQLAlchemy AsyncEngine in DatabaseSessionService ([f4c7e4c](https://github.com/google/adk-python/commit/f4c7e4cac30954ebe703be21d0219c38b729689a))
12+
* add support for session TTL and expiration in Vertex AI session service ([49d4441](https://github.com/google/adk-python/commit/49d4441ebd4b715919c52ea15319df0abdff9609))
13+
* Added Log info when agent run is cancelled and log warning if putting sentinel on queue fails during cleanup avoiding silent error suppression ([c84c17a](https://github.com/google/adk-python/commit/c84c17a720b3713bf25fa44ce853ec4249deb95b))
14+
* Expose branch property on Context ([50c81eb](https://github.com/google/adk-python/commit/50c81ebfb12f3a865a7e509c26e1c5657496c6c3))
15+
* Expose parameter_binding in [@node](https://github.com/node) decorator ([bfc236d](https://github.com/google/adk-python/commit/bfc236d2894eda1e349283f479d32c7430c8571d))
16+
* HTTP traces for MCP server requests/errors ([4c4f77a](https://github.com/google/adk-python/commit/4c4f77ae39f7c98591b9469e70a145d08a170151))
17+
* **interactions:** stream thought, media, code-exec and function-result deltas ([b2dda6e](https://github.com/google/adk-python/commit/b2dda6eb6cf9b0ef38824787f542d6f2bc0ed444))
18+
* **interactions:** surface streamed grounding and final usage metadata ([6a50b8d](https://github.com/google/adk-python/commit/6a50b8d17f618e1241b94eab58d38e10e16a9d81))
19+
* **memory:** add Vertex AI load_profiles tool ([fb2b3af](https://github.com/google/adk-python/commit/fb2b3afea11fc2b1c0d22bb2cfca28370ccf8122))
20+
* **models:** Add configuration options to Gemini class ([037ec12](https://github.com/google/adk-python/commit/037ec127e4adfce70dfe8772e10921209439c061)), closes [#3813](https://github.com/google/adk-python/issues/3813)
21+
* **models:** surface and recover environment_id from interactions ([81f9f2e](https://github.com/google/adk-python/commit/81f9f2ecaa2272a5461ead62e7b5ef2b7a222f04))
22+
* Pass invocation_id to _setup_invocation_context ([73ecf8d](https://github.com/google/adk-python/commit/73ecf8d7306e56eb3043030e68a29342a144ad90))
23+
* refactor ADK CLI server to support nested agents in dev mode and simplify API ([35a3e4c](https://github.com/google/adk-python/commit/35a3e4c31669cb644803436c44e9546a452561f7))
24+
* **sessions:** add public prepare_tables() for eager initialization ([66221c4](https://github.com/google/adk-python/commit/66221c436f46b7fad93505ffb58e30cc8eeec8af))
25+
* **skills:** inject session state into SKILL.md via adk_inject_state ([3afdb08](https://github.com/google/adk-python/commit/3afdb085862aa51ceb0e9e1f9f51b26ae8662b04))
26+
* support file_data URI references in GcsArtifactService ([43115b2](https://github.com/google/adk-python/commit/43115b222b2a9d7a58bab9fe3d0fe54aa5a1a583))
27+
* Support provider-prefixed Gemini model IDs ([816a87f](https://github.com/google/adk-python/commit/816a87f35615edecc3a52335ab539d4ae8d62848))
28+
* **telemetry:** add tool type attribute to tool execution duration ([d5e8bc7](https://github.com/google/adk-python/commit/d5e8bc723f2af019b08b7227ca3e4bb9515dfc81))
29+
* **telemetry:** introduce ADK_TELEMETRY_SCHEMA_VERSION_OPT_IN ([84bbb35](https://github.com/google/adk-python/commit/84bbb3570db533464b9faafb4e9bdd83725c804e))
30+
* **telemetry:** specify bucket boundaries for GenAI metrics ([abf9258](https://github.com/google/adk-python/commit/abf9258a8484d7c362636c75b282e0160dc57e47))
31+
* **tools:** add response_scheduling to control Live function response behavior ([7443bfa](https://github.com/google/adk-python/commit/7443bfaed1356b22adce7e741a94490667b7374d))
32+
* **tools:** resolve built-in tools for managed-agent requests ([f11d19d](https://github.com/google/adk-python/commit/f11d19d25b8a706dd9741e47da5fb80a146aad14))
33+
* **tools:** Support tuple tool parameters ([a57c3e4](https://github.com/google/adk-python/commit/a57c3e4bfb8d21ace1337476b700b811f3c57cde))
34+
* **utils:** Add support for nested state access in template injection ([94c43a2](https://github.com/google/adk-python/commit/94c43a269dcf6691556d38aef46360f04f736584))
35+
36+
37+
### Bug Fixes
38+
39+
* adapt interactions conversion to google-genai 2.9 SDK changes ([9f3aeef](https://github.com/google/adk-python/commit/9f3aeef55dd5c300618dd1be11393644fd672630))
40+
* add module blocklist for YAML agent config code references ([6a5be34](https://github.com/google/adk-python/commit/6a5be34bed12614f549f1a0d948b4bd281b775a6))
41+
* add parameter validation for sync tools in ADK functions.py ([9b9d27d](https://github.com/google/adk-python/commit/9b9d27dae37cf2cb131c0308604444540a7d85cc))
42+
* add trailing newline to check_new_py_files.sh ([21512ea](https://github.com/google/adk-python/commit/21512ea13cbe988404ad0a10b1ae6919faa10928))
43+
* **agents:** persist `output_key` when `before_agent_callback` short-circuits LlmAgent ([0e263f1](https://github.com/google/adk-python/commit/0e263f1b5effa374fae5e3609359f1db6c5a960e))
44+
* **agents:** preserve text streamed before tool calls in output_key ([5a0b4af](https://github.com/google/adk-python/commit/5a0b4af5c459fe4b740465e889536a5b080ce80f))
45+
* **agents:** prevent path traversal in AgentTool config_path resolution ([171ae9e](https://github.com/google/adk-python/commit/171ae9e7bef6cee5a39121a9ecd2a3e2298d9c9d))
46+
* **ApplicationIntegrationTool:** implement dynamic mTLS endpoint resolution ([37ca6fb](https://github.com/google/adk-python/commit/37ca6fbeee6b8f206dc206178ed7a5b60ecfc1be))
47+
* apply run_config custom_metadata to user event in node runtime ([066fbce](https://github.com/google/adk-python/commit/066fbce224a8e8166018d719143ec1f45c163b1b))
48+
* **artifacts:** Preserve .text on GcsArtifactService load ([ba51ff2](https://github.com/google/adk-python/commit/ba51ff2e0ee1918c0fd235a8b90708609b901d1b)), closes [#3157](https://github.com/google/adk-python/issues/3157)
49+
* Avoid overwriting existing isolation scope in stamp_event_branch_context ([798207a](https://github.com/google/adk-python/commit/798207aeacaf4f9348c76c35f538b7541b07f849))
50+
* catch RecursionError in safe JSON serialization helpers ([5515800](https://github.com/google/adk-python/commit/551580058dd492c1bcca47c7698da90fea599ccc)), closes [#5411](https://github.com/google/adk-python/issues/5411)
51+
* check if transfer target is a sibling agent ([fa18d26](https://github.com/google/adk-python/commit/fa18d26ae58f9f1309ef7c6a21c2f16feed63172))
52+
* **ci:** Restrict GitHub Actions to main/v1 branches and main repository ([8c4173e](https://github.com/google/adk-python/commit/8c4173ee5c4ddf453b35987aebf0ed2d39a2fc05))
53+
* **cli:** enable interspersed option parsing for cloud_run command ([7b049b9](https://github.com/google/adk-python/commit/7b049b9e534d3a2de7237d518ecda07f39f71412))
54+
* **cli:** Ensure ADK compatibility in agent engine requirements ([ea772b9](https://github.com/google/adk-python/commit/ea772b93b9db5b613699bfd03d230749f43332f3)), closes [#5966](https://github.com/google/adk-python/issues/5966)
55+
* **cli:** respect ignore files in adk deploy commands ([ee79e71](https://github.com/google/adk-python/commit/ee79e7129cb9b6295a24405525e929dcf2d98f90))
56+
* concatenate list values in deep_merge_dicts during parallel tool call merge ([fda2347](https://github.com/google/adk-python/commit/fda23474bc6803d0a07652f137467e203da44b47)), closes [#5190](https://github.com/google/adk-python/issues/5190)
57+
* concatenate list values in deep_merge_dicts during parallel tool call merge ([1ff84eb](https://github.com/google/adk-python/commit/1ff84ebb83245079dcf9c5f979ccd4f18e8c03f5)), closes [#5190](https://github.com/google/adk-python/issues/5190)
58+
* Enable history_config on Vertex AI now that it is supported ([2920145](https://github.com/google/adk-python/commit/292014516b9896ccd0624b4f937ebe246f205652))
59+
* enforce agent-config args denylist when loaded under adk web ([e506fa6](https://github.com/google/adk-python/commit/e506fa6ba03b83f894e2771e6172087e02efad73))
60+
* ensure AgentTool text output when skip_summarization is True ([b983fcf](https://github.com/google/adk-python/commit/b983fcf9033b385e3120bc6e03b6106b332f700d)), closes [#3881](https://github.com/google/adk-python/issues/3881)
61+
* exclude live HTTP clients from trace serialization ([59868ea](https://github.com/google/adk-python/commit/59868ea8e76ba2007655a79e3d2d6060ade63590))
62+
* exit connection cleanly on expected GoAway signal in bidi streaming ([4d165ef](https://github.com/google/adk-python/commit/4d165efbfffac2006a58c26aba35e9544a6ed9f5))
63+
* fingerprint cacheable context prefix ([7c7f1e7](https://github.com/google/adk-python/commit/7c7f1e706ab04474c3c992473f21939404c9720a))
64+
* fix ADK Web update workflow PR ownership and CLA issue ([b9646f4](https://github.com/google/adk-python/commit/b9646f4d398941548de12421332d95bebc7225dc))
65+
* Fix branch parsing and unify branch stamping ([9e3b43f](https://github.com/google/adk-python/commit/9e3b43fc9245dbfc927271cb6252b15db6efa3db))
66+
* Fix Code Generation Template Injection via Filenames ([e042b8d](https://github.com/google/adk-python/commit/e042b8df227335cbb8b3b65016779cf4e636df29))
67+
* Fix error swallowing in MCP session context ([ccb8138](https://github.com/google/adk-python/commit/ccb8138eca5ca5776b4a1310207f23838d20989b))
68+
* Fix event loop closed and thread leak errors in unit tests ([2f2e03b](https://github.com/google/adk-python/commit/2f2e03b4acf573ecf25fcd5a906cbe78225bf450))
69+
* Fix instructions_utils matching invalid nested paths ([20ba01c](https://github.com/google/adk-python/commit/20ba01c2caf8e29140d790fa988c3605f309c798))
70+
* Fix MCP debug client factory compatibility with keyword-only factories ([1ad8864](https://github.com/google/adk-python/commit/1ad88641b931656b368f1263aed301cc5609f13b))
71+
* Fix regression in instructions_utils placeholder matching ([9ecbaed](https://github.com/google/adk-python/commit/9ecbaed5d61513d698fb5a10e04ab2e92bd577e7))
72+
* Fix Vertex AI Live API session replay on reconnect / modality switch ([c007a87](https://github.com/google/adk-python/commit/c007a87468ba3db805d60a2b56460b56870402b0))
73+
* guard against None converter results in RemoteA2aAgent ([23ff66e](https://github.com/google/adk-python/commit/23ff66e213e38226169911237fc6a775ef31af76))
74+
* guard against None converter results in RemoteA2aAgent handlers ([2e3d717](https://github.com/google/adk-python/commit/2e3d717c5d418df0b5de902d69635dc6e3dcaf6f))
75+
* guard user_content assignment against None in EvaluationGenerator ([6bc9c9f](https://github.com/google/adk-python/commit/6bc9c9fb78ae0edeecde02fe24e2879f9a96c676))
76+
* Handle empty message in LiteLLM response ([d3e793f](https://github.com/google/adk-python/commit/d3e793ff924e07e6b4379607a3c7ce1f3d304fb0))
77+
* handle Pydantic models in safe_json_serialize for tool tracing ([25d666a](https://github.com/google/adk-python/commit/25d666a7eb8844d1105f41ba844afe108130a427)), closes [#4629](https://github.com/google/adk-python/issues/4629)
78+
* harden ContainerCodeExecutor sandbox by default ([0a9ce0f](https://github.com/google/adk-python/commit/0a9ce0f691d2ac3960359962453259a5e2ec9f60))
79+
* implement dynamic mtls endpoint resolution for parameter manager ([62b9700](https://github.com/google/adk-python/commit/62b97007378c4da749a1615d0881aba443a32325))
80+
* implement dynamic mtls endpoint resolution for secret manager ([5d4a13f](https://github.com/google/adk-python/commit/5d4a13f1ce4395ed6ee9c1bad39558c5661fddaf))
81+
* import App lazily in _resolve_app to fix legacy Runner NameError ([7481d07](https://github.com/google/adk-python/commit/7481d07e84d1efd5ef757f619fbf4dccad4b6f7f))
82+
* LiteLLM Claude thinking blocks with display: "omitted" were lost ([7461863](https://github.com/google/adk-python/commit/7461863ee142a6e9b03e212ae4dd7281bd4c52bf))
83+
* Litellm preserve streamed reasoning deltas in LiteLLM adapter ([b9625bf](https://github.com/google/adk-python/commit/b9625bfd709282b96c259f3c8136beb4c79955eb))
84+
* **LiteLlm:** recognize assistant- prefix as valid OpenAI file ID ([ea325c7](https://github.com/google/adk-python/commit/ea325c7b3c4503a62e4f2d6d44e4f6984e522e6d)), closes [#5664](https://github.com/google/adk-python/issues/5664)
85+
* **LiteLlm:** recognize assistant- prefix as valid OpenAI file ID ([796964a](https://github.com/google/adk-python/commit/796964ac49047838e47dc923852d99cf682f162c))
86+
* **live:** forward thinking config ([71d8c84](https://github.com/google/adk-python/commit/71d8c8422afee21f25684baf595661eefb7d65f8))
87+
* Make EUC request args JSON-serializable ([a181a39](https://github.com/google/adk-python/commit/a181a395f24fbf24366724ea4d3b8d3f5ab11509))
88+
* map A2A Message.role to correct GenAI content role ([fe08a9f](https://github.com/google/adk-python/commit/fe08a9fb5a4dca38d5c7ed606cbce1d6731ce0ac))
89+
* **mcp:** propagate trace context in default streamable HTTP client ([431e3c2](https://github.com/google/adk-python/commit/431e3c2e2033b72950570b023eb45fd08e761cec)), closes [#4768](https://github.com/google/adk-python/issues/4768)
90+
* migrate AgentRegistry base URLs from v1alpha to v1 ([82432a3](https://github.com/google/adk-python/commit/82432a317ac56dea597a6e81b756b70f122f504d))
91+
* **models:** gate Gemini cache creation on cacheable prefix tokens ([1070036](https://github.com/google/adk-python/commit/10700363978c739005690b5055bbdb036f0e3d6e))
92+
* N sized sliding window ([d00ad67](https://github.com/google/adk-python/commit/d00ad67e4055d2747ce0729853ade29279075139))
93+
* preserve Anthropic thinking blocks and signatures in LiteLLM round-trip ([febb250](https://github.com/google/adk-python/commit/febb250bf240dad9b791a0c9ed8f8971e96b30ab))
94+
* preserve JSON-native types in A2A _serialize_value() ([139c700](https://github.com/google/adk-python/commit/139c700de6c79b3764cd578efafe9f3b618ccfb0)), closes [#5183](https://github.com/google/adk-python/issues/5183)
95+
* prevent VertexAiRagRetrieval from blocking the event loop ([5898f37](https://github.com/google/adk-python/commit/5898f37a90a78338a87f3d895d815b12c1c32ef2)), closes [#5033](https://github.com/google/adk-python/issues/5033)
96+
* propagate Gemini grounding metadata from ModelResponse ([c303c62](https://github.com/google/adk-python/commit/c303c623ba5608887ee766baf6bb5e6ad373feac))
97+
* raise ValueError for unsupported MIME types in file_data URI path ([42eceb3](https://github.com/google/adk-python/commit/42eceb3a59628a6beadd53fa6eff217fc383c9d9))
98+
* reconnect on live connection 1011 error ([f36d257](https://github.com/google/adk-python/commit/f36d2573195c172be1062ffb4c079a7cea597a92)), closes [#5525](https://github.com/google/adk-python/issues/5525)
99+
* recurse into JSON-native containers in A2A _serialize_value() ([c08debc](https://github.com/google/adk-python/commit/c08debc93fa540a1c181918da9d19825470d02a3))
100+
* refactor `_redact_file_uri_for_log` to dynamically extract file ID prefixes (`file-`, `assistant-`). This ensures compatibility with both current prefixes and future OpenAI/Azure file ID types. ([ea325c7](https://github.com/google/adk-python/commit/ea325c7b3c4503a62e4f2d6d44e4f6984e522e6d))
101+
* remove unit test with wrong assumption about claude thinking parts ([94fcdbb](https://github.com/google/adk-python/commit/94fcdbb8573940e1a9acec60b4cac9beab51b334))
102+
* restore auth_token initialization for secret and parameter manager clients ([46a2181](https://github.com/google/adk-python/commit/46a2181761ece50ca23ee95509574bf5acd9a6c0))
103+
* Rollback instruction util refactoring as its breaking internal customers ([59fe9b3](https://github.com/google/adk-python/commit/59fe9b3bb83277f23f39ed0e71e392b4306ebe83))
104+
* sandbox nested persona template rendering in evaluation prompts ([30493ba](https://github.com/google/adk-python/commit/30493bae56f62dddb8adde249e9cd0654882bd05))
105+
* scope single-turn node inputs to workflow branch ([8d389e2](https://github.com/google/adk-python/commit/8d389e233b747de9c09192b07f158caa7f9fb908))
106+
* send correct field names for sandbox input files ([2b7e08a](https://github.com/google/adk-python/commit/2b7e08a5e190eebc1b82e224eac3632cf5dfe063))
107+
* **sessions:** drop unsupported part_metadata before Vertex appendEvent ([40a0279](https://github.com/google/adk-python/commit/40a02795707d131487c24e2f5321e43505b0a273)), closes [#6014](https://github.com/google/adk-python/issues/6014)
108+
* **sessions:** strip tzinfo for MariaDB in DatabaseSessionService ([2f799d5](https://github.com/google/adk-python/commit/2f799d5196ad04c322f51f5dc084400558f29b41))
109+
* strip tzinfo from datetime for MySQL in create_session ([a012bb7](https://github.com/google/adk-python/commit/a012bb7542d481538ad9162993c63ad73259b357))
110+
* surface error for empty STOP model turn in non-streaming mode ([932a9b5](https://github.com/google/adk-python/commit/932a9b5615055672bedc482fbeb1e7f05acc9a9c)), closes [#5631](https://github.com/google/adk-python/issues/5631)
111+
* terminate infinite retry loop in RunSkillScriptTool on SCRIPT_NOT_FOUND ([89d9bda](https://github.com/google/adk-python/commit/89d9bda72e412f04730e6836726282c54180a756)), closes [#5684](https://github.com/google/adk-python/issues/5684)
112+
* **tools:** handle tuple schemas in function parsing fallback ([4fa7741](https://github.com/google/adk-python/commit/4fa774192ad0971074d95577368304f0f0ddb655))
113+
* update litellm dependency constraint to >=1.84.0 ([a912306](https://github.com/google/adk-python/commit/a912306ad79fb100646a8b81082bcf9fe21d2e58))
114+
* update mtls_utils import in secret_client.py ([0b79f8d](https://github.com/google/adk-python/commit/0b79f8da4ca7ee06405cfc7ccfec8925b8210e96))
115+
* use Modality enum for RunConfig.response_modalities ([5c8c55a](https://github.com/google/adk-python/commit/5c8c55a7632f2388fea7af37cddba54714f84eb1))
116+
* validate local eval path segments ([7b87f91](https://github.com/google/adk-python/commit/7b87f910cd69b22d8a7d6ea2a0ec5fcd403fb000))
117+
* Wrap math formulas in `math` blocks in retry config guide ([a40f199](https://github.com/google/adk-python/commit/a40f19930f90cd144a282dc1f5af6b425876bcb3))
118+
119+
120+
### Performance Improvements
121+
122+
* create SQLite session schema once per service instance ([10a2cc5](https://github.com/google/adk-python/commit/10a2cc5d78609c59102c718ca3f162d3e64418d8))
123+
* skip event query in DB get_session when num_recent_events is 0 ([7e8191a](https://github.com/google/adk-python/commit/7e8191aec68d4e0512d7d05e2bbe0559111c2832))
124+
125+
126+
### Documentation
127+
128+
* Add manual batch mode trigger for ADK Pull Request Triaging workflow ([dbd4bb0](https://github.com/google/adk-python/commit/dbd4bb07d0cd396f74c1558b6e9459f6e87a4ce9))
129+
* clarify is_final_response() is a public helper ([978be4b](https://github.com/google/adk-python/commit/978be4b13359fc38e8385dcf3bac0cc8156750f2)), closes [#4016](https://github.com/google/adk-python/issues/4016)
130+
* remove trailing whitespace in dynamic_nodes guide ([a7377b4](https://github.com/google/adk-python/commit/a7377b446abc6879f75d27fbd3e9c5293f6a8d06))
131+
* Sort PRs by update time in list_untriaged_pull_requests ([8679aa8](https://github.com/google/adk-python/commit/8679aa8e955afec20312493357ca3cd379f358dc))
132+
* Streamline open_source_workspace/AGENTS.md ([ea2ea73](https://github.com/google/adk-python/commit/ea2ea7390504970a710743295c09ee45525c0317))
133+
* Update ADK Pull Request Triaging Agent workflow to run periodically ([b3f278a](https://github.com/google/adk-python/commit/b3f278a692b51a0d138d355607bbd6c11ba1fae0))
134+
* **workflow:** Add and update workflow developer guides ([e5c7d20](https://github.com/google/adk-python/commit/e5c7d20d5d93fc495d95f162f393c00e0357f8c9))
135+
3136
## [2.3.0](https://github.com/google/adk-python/compare/v2.2.0...v2.3.0) (2026-06-17)
4137

5138

src/google/adk/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# limitations under the License.
1414

1515
# version: major.minor.patch
16-
__version__ = "2.3.0"
16+
__version__ = "2.4.0"

0 commit comments

Comments
 (0)