From 9349f8495d73d5393f290e113b9e3febfd640461 Mon Sep 17 00:00:00 2001 From: "Wei (Jack) Sun" Date: Wed, 18 Mar 2026 09:12:27 -0700 Subject: [PATCH 1/2] chore(release/v2-candidate): release 2.0.0-alpha.1 --- .github/.release-please-manifest-v2.json | 2 +- CHANGELOG-v2.md | 396 +++++++++++++++++++++++ 2 files changed, 397 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG-v2.md diff --git a/.github/.release-please-manifest-v2.json b/.github/.release-please-manifest-v2.json index 0739396e62..4a263fa42a 100644 --- a/.github/.release-please-manifest-v2.json +++ b/.github/.release-please-manifest-v2.json @@ -1,3 +1,3 @@ { - ".": "2.0.0-alpha.0" + ".": "2.0.0-alpha.1" } diff --git a/CHANGELOG-v2.md b/CHANGELOG-v2.md new file mode 100644 index 0000000000..f7fc7ae17e --- /dev/null +++ b/CHANGELOG-v2.md @@ -0,0 +1,396 @@ +# Changelog + +## [2.0.0-alpha.1](https://github.com/google/adk-python/compare/v2.0.0-alpha.0...v2.0.0-alpha.1) (2026-03-18) + + +### ⚠ BREAKING CHANGES + +* **skill:** coloate default skill SI with skilltoolset +* Make credential manager to accept tool_context instead of callback_context + +### Features + +* Add .yml to watched file extensions and add unit tests for AgentChangeEventHandler ([ee9b4ca](https://github.com/google/adk-python/commit/ee9b4ca9083558483d528baf2b1579a8b9372dec)), closes [#3834](https://github.com/google/adk-python/issues/3834) +* Add /chat/completions integration to ApigeeLlm ([9c4c445](https://github.com/google/adk-python/commit/9c4c44536904f5cf3301a5abb910a5666344a8c5)) +* Add /chat/completions streaming support to Apigee LLM ([121d277](https://github.com/google/adk-python/commit/121d27741684685c564e484704ae949c5f0807b1)) +* Add `--disable_features` CLI option to ADK CLI ([53b67ce](https://github.com/google/adk-python/commit/53b67ce6340f3f3f8c3d732f9f7811e445c76359)) +* Add `--enable_features` CLI option to ADK CLI ([79fcddb](https://github.com/google/adk-python/commit/79fcddb39f71a4c1342e63b4d67832b3eccb2652)) +* Add `adk optimize` command ([b18d7a1](https://github.com/google/adk-python/commit/b18d7a140f8e18e03255b07e6d89948427790095)) +* Add `is_computer_use` field to agent information in adk-web server ([5923da7](https://github.com/google/adk-python/commit/5923da786eb1aaef6f0bcbc6adc906cbc8bf9b36)) +* Add a demo simple prompt optimizer for the optimization interface ([0abf4cd](https://github.com/google/adk-python/commit/0abf4cd2c7103a071506c9398455a3bd66fe5da5)) +* Add a handwritten tool for Cloud Pub/Sub ([b6f6dcb](https://github.com/google/adk-python/commit/b6f6dcbeb465a775b9c38ace7a324ee2155d366f)) +* Add a load MCP resource tool ([e25227d](https://github.com/google/adk-python/commit/e25227da5e91a8c1192af709f8e8bb2a471ded92)) +* add add_events_to_memory facade for event-delta ([59e8897](https://github.com/google/adk-python/commit/59e88972ae4f10274444593db0607f40cfcc597e)) +* Add add_session_to_memory to CallbackContext and ToolContext ([7b356dd](https://github.com/google/adk-python/commit/7b356ddc1b1694d2c8a9eee538f3a41cf5518e42)) +* Add an internal function name 'adk_framework' to allow passing function response to the framework but not poluting the agent context ([589f15c](https://github.com/google/adk-python/commit/589f15cb273b1b83a87f0c3145880344ed5b1b91)) +* add base_url option to Gemini LLM class ([781f605](https://github.com/google/adk-python/commit/781f605a1e5de6d77b69d7e7b9835ec6fc8de4bf)) +* Add code execution in the sample agent ([a86aa8b](https://github.com/google/adk-python/commit/a86aa8b03d13320a777c16c6bb065f850a5a6d86)) +* Add custom instructions support to LlmBackedUserSimulator ([a364388](https://github.com/google/adk-python/commit/a364388d9744969760fd87ed24d60793146c162a)) +* Add database schema migration command and script ([ce64787](https://github.com/google/adk-python/commit/ce64787c3e1130d1678e408aa31011fc88590e15)) +* add Dataplex Catalog search tool to BigQuery ADK ([82c2eef](https://github.com/google/adk-python/commit/82c2eefb27313c5b11b9e9382f626f543c53a29e)) +* Add experimental agent tool simulator ([0b9cbd2](https://github.com/google/adk-python/commit/0b9cbd2d42366f1efda6fc3253cd1aa95a28637d)) +* Add experimental agent tool simulator ([6645aa0](https://github.com/google/adk-python/commit/6645aa07fdba661206bb57148d04d70cc18620cd)) +* Add gcs filesystem support for Skills. It supports skills in text and pdf format, also has some sample agents ([6edcb97](https://github.com/google/adk-python/commit/6edcb975827dbd543a40ae3a402d2389327df603)) +* add generate/create modes for Vertex AI Memory Bank writes ([811e50a](https://github.com/google/adk-python/commit/811e50a0cbb181d502b9837711431ef78fca3f34)) +* Add GEPA root agent prompt optimizer ([4e3e2cb](https://github.com/google/adk-python/commit/4e3e2cb58858e08a79bc6119ad49b6c049dbc0d0)) +* Add get_auth_config method to toolset to expose auth requirement of the toolset ([381d44c](https://github.com/google/adk-python/commit/381d44cab437cac027af181ae627e7b260b7561e)) +* Add header_provider to OpenAPIToolset and RestApiTool ([e1a7593](https://github.com/google/adk-python/commit/e1a7593ae8455d51cdde46f5165410217400d3c9)) +* Add interceptor framework to A2aAgentExecutor ([87fcd77](https://github.com/google/adk-python/commit/87fcd77caa9672f219c12e5a0e2ff65cbbaaf6f3)) +* Add interface between optimization infra and LocalEvalService ([7b7ddda](https://github.com/google/adk-python/commit/7b7ddda46ca701952f002b2807b89dbef5322414)) +* Add interface for agent optimizers ([4ee125a](https://github.com/google/adk-python/commit/4ee125a03856fdb9ed28245bf7f5917c2d9038db)) +* Add intra-invocation compaction and token compaction pre-request ([485fcb8](https://github.com/google/adk-python/commit/485fcb84e3ca351f83416c012edcafcec479c1db)) +* Add list_skills_in_dir to skills utils ([327b3af](https://github.com/google/adk-python/commit/327b3affd2d0a192f5a072b90fdb4aae7575be90)) +* Add load_skill_from_dir() method ([9f7d5b3](https://github.com/google/adk-python/commit/9f7d5b3f1476234e552b783415527cc4bac55b39)) +* Add methods in MCPToolset for users to access MCP resources (read_resource, list_resources, get_resource_info) ([8f7d965](https://github.com/google/adk-python/commit/8f7d9659cfc19034af29952fbca765d012169b38)) +* add missing token usage span attributes during model usage ([77bf325](https://github.com/google/adk-python/commit/77bf325d2bf556621c3276f74ee2816fce2a7085)) +* Add models.py and prompt.py to adk/skills to use in skill toolset ([c736210](https://github.com/google/adk-python/commit/c7362100ebc9d93449d7ce341f420664eb3ac361)) +* add new conversational analytics api tool set ([82fa10b](https://github.com/google/adk-python/commit/82fa10b71e037b565cb407c82e9e908432dab0ff)) +* add new conversational analytics api tool set ([c34feb4](https://github.com/google/adk-python/commit/c34feb4c0e045f762b919f598d314d10773cc9de)) +* add new conversational analytics api tool set ([aaf76a6](https://github.com/google/adk-python/commit/aaf76a6a517da15caf28b37fc5a11c5162a99bc3)) +* Add option to send full history to stateless RemoteA2aAgents ([2bd984a](https://github.com/google/adk-python/commit/2bd984adb3c553438fa1fe9ac05b3f96bd508d5f)) +* Add param support to Bigtable execute_sql ([5702a4b](https://github.com/google/adk-python/commit/5702a4b1f59b17fd8b290fc125c349240b0953d7)) +* Add progress_callback support to MCPTool and MCPToolset ([adbc37f](https://github.com/google/adk-python/commit/adbc37fea1ae783416c62f74f954dd4b7e249fa1)) +* Add RunSkillScriptTool to SkillToolset ([636f68f](https://github.com/google/adk-python/commit/636f68fbee700aa47f01e2cfd746859353b3333d)) +* Add schema auto-upgrade, tool provenance, HITL tracing, and span hierarchy fix to BigQuery Agent Analytics plugin ([4260ef0](https://github.com/google/adk-python/commit/4260ef0c7c37ecdfea295fb0e1a933bb0df78bea)) +* Add SkillToolset to adk ([8d02792](https://github.com/google/adk-python/commit/8d0279251ce4fad6f0c84bd7777eb5a74f7ba07a)) +* add SpannerVectorStore for orchestrating and providing utility functions for a Spanner vector store ([59eda98](https://github.com/google/adk-python/commit/59eda98eaecf69ee092bf954da3fae75eb090f2b)) +* Add streaming support for Anthropic models ([5770cd3](https://github.com/google/adk-python/commit/5770cd3776c8805086ece34d747e589e36916a34)), closes [#3250](https://github.com/google/adk-python/issues/3250) +* Add support for ADK tools in SkillToolset ([44a5e6b](https://github.com/google/adk-python/commit/44a5e6bdb8e8f02891e72b65ef883f108c506f6a)) +* Add support for MCP App UI widgets in MCPTool ([86db35c](https://github.com/google/adk-python/commit/86db35c338adaafb41e156311465e71e17edf35e)) +* Add support for memory consolidation via Vertex AI Memory Bank ([4a88804](https://github.com/google/adk-python/commit/4a88804ec7d17fb4031b238c362f27d240df0a13)) +* Add support for PDF documents in Anthropic LLM ([4c8ba74](https://github.com/google/adk-python/commit/4c8ba74fcb07014db187ef8db8246ff966379aa9)) +* Add support to automatically create a session if one does not exist ([8e69a58](https://github.com/google/adk-python/commit/8e69a58df4eadeccbb100b7264bb518a46b61fd7)) +* add token_endpoint_auth_method support to OAuth2 credentials ([8782a69](https://github.com/google/adk-python/commit/8782a695036aa0c1528027673868159143f925f0)) +* Add UiWidget to EventActions for supporting new experimental UI Widgets feature ([530ff06](https://github.com/google/adk-python/commit/530ff06ece61a93855a53235e85af18b46b2a6a0)) +* ADK 2.0 alpha ([1c64a41](https://github.com/google/adk-python/commit/1c64a41b53df3854183276091ec40a97b77c0bbf)) +* Agent Registry in ADK ([abaa929](https://github.com/google/adk-python/commit/abaa92944c4cd43d206e2986d405d4ee07d45afe)) +* Agent Skills spec compliance — validation, aliases, scripts, and auto-injection ([223d9a7](https://github.com/google/adk-python/commit/223d9a7ff52d8da702f1f436bd22e94ad78bd5da)) +* Allow `thinking_config` in `generate_content_config` ([e162bb8](https://github.com/google/adk-python/commit/e162bb8832a806e2380048e39165bf837455f88c)) +* Allow google search tool to set different model ([b57a3d4](https://github.com/google/adk-python/commit/b57a3d43e4656f5a3c5db53addff02b67d1fde26)) +* Allow passthrough of GOOGLE_CLOUD_LOCATION for AgentEngine deployments ([004e15c](https://github.com/google/adk-python/commit/004e15ccb7c7f683623f8e7d2e77a9d12558c545)) +* allow Vertex AI Client initialization with API Key ([43d6075](https://github.com/google/adk-python/commit/43d6075ea7aa49ddb358732f2219ca9598dd286f)) +* **auth:** Add framework support for toolset authentication before get_tools ([ee873ca](https://github.com/google/adk-python/commit/ee873cae2e2df960910d264a4340ce6c0489eb7a)) +* **auth:** Add native support for id_token in OAuth2 credentials ([33f7d11](https://github.com/google/adk-python/commit/33f7d118b377b60f998c92944d2673679fddbc6e)) +* Bigquery ADK support for search catalog tool ([bef3f11](https://github.com/google/adk-python/commit/bef3f117b4842ce62760328304484cd26a1ec30a)) +* **bigtable:** add Bigtable cluster metadata tools ([34c560e](https://github.com/google/adk-python/commit/34c560e66e7ad379f586bbcd45a9460dc059bee2)) +* change default BigQuery table ID and update docstring ([7557a92](https://github.com/google/adk-python/commit/7557a929398ec2a1f946500d906cef5a4f86b5d1)) +* **cli:** Add `--auto_create_session` flag to `adk api_server` CLI ([40c15d0](https://github.com/google/adk-python/commit/40c15d059599472b40f48272a464eb3cb7345fc6)) +* **cli:** add `otel_to_cloud` flag to adk deploy agent_engine command ([21f63f6](https://github.com/google/adk-python/commit/21f63f66ee424501d9a70806277463ef718ae843)) +* **cli:** add `otel_to_cloud` flag to adk deploy cloud_run and adk deploy gke command ([62fa4e5](https://github.com/google/adk-python/commit/62fa4e513c30bdd084358f6a6e5738ee680deafc)) +* **conformance:** add report generation to `adk conformance test` command ([43c437e](https://github.com/google/adk-python/commit/43c437e38b9109b68a81de886d1901e4d8f87a01)) +* **conformance:** read report's version info from the server ([9dccd6a](https://github.com/google/adk-python/commit/9dccd6a69223925ed1c452189b33a922e6934643)) +* convert A2UI messages between A2A DataPart metadata and ADK events ([1133ce2](https://github.com/google/adk-python/commit/1133ce219c5a7a9a85222b03e348ba6b13830c8f)) +* durable runtime support ([07fdd23](https://github.com/google/adk-python/commit/07fdd23c9c3f5046aa668fb480840f67f13bf271)) +* enable dependency injection for agent loader in FastAPI app gen ([34da2d5](https://github.com/google/adk-python/commit/34da2d5b26e82f96f1951334fe974a0444843720)) +* Enable output schema with tools for LiteLlm models ([89df5fc](https://github.com/google/adk-python/commit/89df5fcf883b599cf7bfe40bde35b8d86ab0146b)), closes [#3969](https://github.com/google/adk-python/issues/3969) +* Enable PROGRESSIVE_SSE_STREAMING feature by default ([0b1cff2](https://github.com/google/adk-python/commit/0b1cff2976d1c04acf3863f76107b05d1cec448f)) +* Enhance BigQuery plugin schema upgrades and error reporting ([bcf38fa](https://github.com/google/adk-python/commit/bcf38fa2bac2f0d1ab74e07e01eb5160bad1d6dc)) +* Enhance BQ plugin with fork safety, auto views, and trace continuity ([80c5a24](https://github.com/google/adk-python/commit/80c5a245557cd75870e72bff0ecfaafbd37fdbc7)) +* Enhance google credentials config to support externally passed access token ([3cf43e3](https://github.com/google/adk-python/commit/3cf43e3842d9987499ea70d6f63d6e1c4d4a07db)) +* Enhance TraceManager async safety, enrich BigQuery plugin logging, and fix serialization ([a4116a6](https://github.com/google/adk-python/commit/a4116a6cbfadc161982af5dabd55a711d79348b7)) +* execute-type param addition in GkeCodeExecutor ([9c45166](https://github.com/google/adk-python/commit/9c451662819a6c7de71be71d12ea715b2fe74135)) +* Expand LiteLlm supported models and add registry tests ([d5332f4](https://github.com/google/adk-python/commit/d5332f44347f44d60360e14205a2342a0c990d66)) +* expose mcps streamable http custom httpx factory parameter ([bfed19c](https://github.com/google/adk-python/commit/bfed19cd78298fc9f896da8ed82a756004e92094)) +* Filter invocation and eval case rubrics by type when running rubric based evaluators ([da2c933](https://github.com/google/adk-python/commit/da2c933b53b5add1c9ee4b6fbfc66c8983325a1e)) +* **fix:** Check all content parts for emptiness in _contains_empty_content ([f35d129](https://github.com/google/adk-python/commit/f35d129b4c59d381e95418725d6eaa072ca7720a)) +* Handle Conflict Errors in BigQuery Agent Analytics Plugin ([372c76b](https://github.com/google/adk-python/commit/372c76b857daa1102e76d755c0758f1515d6f180)) +* Improve asyncio loop handling and test cleanup ([00aba2d](https://github.com/google/adk-python/commit/00aba2d884d24fb5244d1de84f8dba9cbc3c07e8)) +* improve error message when failing to get tools from MCP ([3480b3b](https://github.com/google/adk-python/commit/3480b3b82d89de69f77637d7ad034827434df45a)) +* Include model ID with token usage for live events ([23d330e](https://github.com/google/adk-python/commit/23d330eef1ed23696b56395ef2dee765eec3310f)) +* Introduce a post-hoc, per-turn evaluator for user simulations ([e515e0f](https://github.com/google/adk-python/commit/e515e0f321a259016c5e5f6b388ecf02ae343ba7)) +* Introduce A2A request interceptors in RemoteA2aAgent ([6f772d2](https://github.com/google/adk-python/commit/6f772d2b0841446bc168ccf405b59eb17c1d671a)) +* Introduce new database schema for DatabaseSessionService ([7e6ef71](https://github.com/google/adk-python/commit/7e6ef71eec8be2e804286cc4140d0cbdf84f1206)) +* Introduce User Personas to the ADK evaluation framework ([6a808c6](https://github.com/google/adk-python/commit/6a808c60b38ad7140ddeb222887c6accc63edce9)) +* limit number of user-provided BigQuery job labels and reserve internal prefixes ([8c4ff74](https://github.com/google/adk-python/commit/8c4ff74e7d70cf940f54f6d7735f001495ce75d5)) +* log exception details before re-raising in MCP session execution ([de79bf1](https://github.com/google/adk-python/commit/de79bf12b564a4eefc7e6a2568dbe0f08bb6efeb)) +* make LlmAgent.model optional with a default fallback ([b287215](https://github.com/google/adk-python/commit/b28721508a41bf6bcfef52bbc042fb6193a32dfa)) +* Make OpenAPI tool async ([9290b96](https://github.com/google/adk-python/commit/9290b966267dc02569786f95aab2a3cb78c7004f)) +* Make skill instruction optimizable and can adapt to user tasks ([21be6ad](https://github.com/google/adk-python/commit/21be6adcb86722a585b26f600c45c85e593b4ee0)) +* Mark Vertex calls made from non-gemini models ([7d58e0d](https://github.com/google/adk-python/commit/7d58e0d2f375bc80bdfac9cffea2926fd2344b8a)) +* Mark Vertex calls made from non-gemini models ([871571d](https://github.com/google/adk-python/commit/871571d997dedd9430d421cc366920321abbab5d)) +* Mark Vertex calls made from non-gemini models ([0f5b677](https://github.com/google/adk-python/commit/0f5b677c53ab937f275711c76a9b3df63be93346)) +* migrate `ToolboxToolset` to use `toolbox-adk` and align validation ([7dc6adf](https://github.com/google/adk-python/commit/7dc6adf4e563330a09e4cf28d2b1994c24b007d1)) +* New implementation of A2aAgentExecutor and A2A-ADK conversion ([87ffc55](https://github.com/google/adk-python/commit/87ffc55640dea1185cf67e6f9b78f70b30867bcc)) +* New implementation of RemoteA2aAgent and A2A-ADK conversion ([6770e41](https://github.com/google/adk-python/commit/6770e419f5e200f4c7ad26587e1f769693ef4da0)) +* **otel:** add `gen_ai.tool.definitions` to experimental semconv ([4dd4d5e](https://github.com/google/adk-python/commit/4dd4d5ecb6a1dadbc41389dac208616f6d21bc6e)) +* **otel:** add experimental semantic convention and emit `gen_ai.client.inference.operation.details` event ([19718e9](https://github.com/google/adk-python/commit/19718e9c174af7b1287b627e6b23a609db1ee5e2)) +* **otel:** add extra attributes to span generated with `opentelemetry-instrumentation-google-genai` ([a08bf62](https://github.com/google/adk-python/commit/a08bf62b951ad788665a23a5084e210351e0895e)) +* **otel:** add extra attributes to span generated with `opentelemetry-instrumentation-google-genai` ([e87a843](https://github.com/google/adk-python/commit/e87a8437fb430e0d4c42c73948e3ba1872040a15)) +* **otel:** add minimal `generate_content {model.name}` spans and logs for non-gemini inference and when `opentelemetry-inference-google-genai` dependency is missing ([935c279](https://github.com/google/adk-python/commit/935c279f8281bde99224f03d936b8abe51cbabfc)) +* Pass event id as a metadata when it is converted into a message ([85434e2](https://github.com/google/adk-python/commit/85434e293f7bd1e3711f190f84d5a36804e4462b)) +* pass trace context in MCP tool call's _meta field with Otel propagator ([bcbfeba](https://github.com/google/adk-python/commit/bcbfeba953d46fca731b11542a00103cef374e57)) +* Persist user input content to session in live mode ([a04828d](https://github.com/google/adk-python/commit/a04828dd8a848482acbd48acc7da432d0d2cb0aa)) +* **plugins:** Add flush mechanism to BigQueryAgentAnalyticsPlugin ([9579bea](https://github.com/google/adk-python/commit/9579bea05d946b3d8b4bfec35e510725dd371224)) +* Refine Feature Request Issue Template ([2380afd](https://github.com/google/adk-python/commit/2380afd28769a45da6a2c2847f2ff6a214e4226b)) +* Remove [@experimental](https://github.com/experimental) decorator from AgentEngineSandboxCodeExecutor ([135f763](https://github.com/google/adk-python/commit/135f7633253f6a415302142abc3579b664601d5b)) +* Remove overall_eval_status calculation from _CustomMetricEvaluator and add threshold to custom metric function expected signature ([553e376](https://github.com/google/adk-python/commit/553e376718ceb3d7fb1403231bb720836d71f42c)) +* **runners:** Allow app_name to override app.name when both provided ([86e7664](https://github.com/google/adk-python/commit/86e76640066b4d7b844e3ddd1acccf0da1f2f47e)) +* **runners:** pass GetSessionConfig through Runner to session service ([eff724a](https://github.com/google/adk-python/commit/eff724ac9aef2a203607f772c473703f21c09a72)) +* Set log level when deploying to Agent Engine ([1f546df](https://github.com/google/adk-python/commit/1f546df35a1c18aeb3d2fc7a2ac66edf386027c5)) +* **skill:** Add BashTool ([8a31612](https://github.com/google/adk-python/commit/8a3161202e4bac0bb8e8801b100f4403c1c75646)) +* start and close ClientSession in a single task in McpSessionManager ([cce430d](https://github.com/google/adk-python/commit/cce430da799766686e65f6cae02ba64e916d5c8a)) +* Support all `types.SchemaUnion` as output_schema in LLM Agent ([63f450e](https://github.com/google/adk-python/commit/63f450e0231f237ee1af37f17420d37b15426d48)) +* Support authentication for MCP tool listing ([e3d542a](https://github.com/google/adk-python/commit/e3d542a5ba3d357407f8cd29cfdd722f583c8564)) +* Support authentication for MCP tool listing ([19315fe](https://github.com/google/adk-python/commit/19315fe557039fa8bf446525a4830b1c9f40cba9)) +* Support dynamic config for VertexAiSearchTool ([585ebfd](https://github.com/google/adk-python/commit/585ebfdac7f1b8007b4e4a7e4258ec5de72c78b1)) +* Support ID token exchange in ServiceAccountCredentialExchanger ([7be90db](https://github.com/google/adk-python/commit/7be90db24b41f1830e39ca3d7e15bf4dbfa5a304)), closes [#4458](https://github.com/google/adk-python/issues/4458) +* Support interactions API for calling models ([c6320ca](https://github.com/google/adk-python/commit/c6320caaa5ab47371c474f9709a9ae47b3f52678)) +* Support page token in API Registry ([f1ccc0c](https://github.com/google/adk-python/commit/f1ccc0cfcae045e70636e81472f9f892a82ace9f)) +* Support per-eval case and per-invocation rubrics in rubric-based evaluators ([8afb99a](https://github.com/google/adk-python/commit/8afb99a078a8eae621722225c87a5d447d787a2d)) +* support regex for allowed origins ([2ea6e51](https://github.com/google/adk-python/commit/2ea6e513cff61d3f330274725c66f82fce4ba259)) +* Support run tools in separate thread for live mode ([714c3ad](https://github.com/google/adk-python/commit/714c3ad0477e775fba6696a919a366a293197268)) +* **telemetry:** add new gen_ai.agent.version span attribute ([ffe97ec](https://github.com/google/adk-python/commit/ffe97ec5ad7229c0b4ba573f33eb0edb8bb2877a)) +* **telemetry:** add new gen_ai.agent.version span attribute ([a61ccf3](https://github.com/google/adk-python/commit/a61ccf36a2e19a9cb4151c3b73bbf6618c1af451)) +* **telemetry:** capture tool execution error code in OpenTelemetry spans ([e0a6c6d](https://github.com/google/adk-python/commit/e0a6c6db6f8e2db161f8b86b9f11030f0cec807a)) +* This change restructures the bug report template as per intake process ([324796b](https://github.com/google/adk-python/commit/324796b4fe05bec3379bfef67071a29552ef355a)) +* **tools:** add preserve_property_names option to OpenAPIToolset ([078b516](https://github.com/google/adk-python/commit/078b5163ff47acec69b1c8e105f62eb7b74f5548)) +* **tools:** Implement toolset auth for McpToolset, OpenAPIToolset, and others ([798f65d](https://github.com/google/adk-python/commit/798f65df86b1bbe33d864e30c5b1f9e155e89810)) +* Update adk eval cli to consume custom metrics by adding CustomMetricEvaluator ([ea0934b](https://github.com/google/adk-python/commit/ea0934b9934c1fefd129a1026d6af369f126870e)) +* Update Agent Registry to create AgentCard from info in get agents endpoint ([c33d614](https://github.com/google/adk-python/commit/c33d614004a47d1a74951dd13628fd2300aeb9ef)) +* Update agent simulator by improving prompts and add environment data ([7af1858](https://github.com/google/adk-python/commit/7af1858f46b66fa4471c5ba7943385f2d23d08d3)) +* Update docstring for BigQuery search tool ([52b2f27](https://github.com/google/adk-python/commit/52b2f278b210e4da74e32c5fff60581d6b2e9cea)) +* Update EvalConfig and EvalMetric data models to support custom metrics ([6d2f33a](https://github.com/google/adk-python/commit/6d2f33a59cfba358dd758378290125fc2701c411)) +* Update event_converter used in A2ARemote agent to use a2a_task.status.message only if parts are non-empty ([e4ee9d7](https://github.com/google/adk-python/commit/e4ee9d7c46b57eed8493539d8f539c042bdfae60)) +* Upgrade BigQueryAgentAnalyticsPlugin to v2.0 ([7b2fe14](https://github.com/google/adk-python/commit/7b2fe14dab96440ee25b66dae9e66eadba629a56)) +* Use --memory_service_uri in ADK CLI run command ([a7b5097](https://github.com/google/adk-python/commit/a7b509763c1732f0363e90952bb4c2672572d542)) +* Use json schema for `base_retrieval_tool`, `load_artifacts_tool`, and `load_memory_tool` declaration when feature enabled ([69ad605](https://github.com/google/adk-python/commit/69ad605bc4bbe9a4f018127fd3625169ee70488e)) +* Use json schema for agent tool declaration when feature enabled ([6b241f5](https://github.com/google/adk-python/commit/6b241f5ef2d749cedf9d80c1ee4c60d20146fc35)) +* Use json schema for function tool declaration when feature enabled ([cb3244b](https://github.com/google/adk-python/commit/cb3244bb58904ab508f77069b436f85b442d3299)) +* Use json schema for IntegrationConnectorTool declaration when feature enabled ([2ed6865](https://github.com/google/adk-python/commit/2ed686527ac75ff64128ce7d9b1a3befc2b37c64)) +* Use json schema for RestApiTool declaration when feature enabled ([a5f0d33](https://github.com/google/adk-python/commit/a5f0d333d7f26f2966ed511d5d9def7a1933f0c2)) +* Use new JSON-based schema for newly-created databases ([ba91fea](https://github.com/google/adk-python/commit/ba91fea54136ab60f37c10b899c3648d0b0fa721)) +* Warn when accessing DEFAULT_SKILL_SYSTEM_INSTRUCTION ([35366f4](https://github.com/google/adk-python/commit/35366f4e2a0575090fe12cd85f51e8116a1cd0d3)) +* **web:** Add /health and /version endpoints to ADK web server ([25ec2c6](https://github.com/google/adk-python/commit/25ec2c6b614cf8d185ff6dbdac5697a210be68da)) + + +### Bug Fixes + +* 'NoneType' object is not iterable ([7db3ce9](https://github.com/google/adk-python/commit/7db3ce9613b1c2c97e6ca3cd8115736516dc1556)) +* Add a script to the sample skills agent ([8ad8bc9](https://github.com/google/adk-python/commit/8ad8bc9b69e27f09ec67db14fc92d15c3c78bd53)) +* add back migration_runner in cli_tools_click ([6c0bf85](https://github.com/google/adk-python/commit/6c0bf85042c38c7bafe1c183f1bba8bee1ba3570)) +* Add checks for event content and parts before accessing ([5912835](https://github.com/google/adk-python/commit/5912835c975673c8fc2fb315150f5ec29d685eac)), closes [#3769](https://github.com/google/adk-python/issues/3769) +* Add endpoints to get/list artifact version metadata ([e0b9712](https://github.com/google/adk-python/commit/e0b9712a492bf84ac17679095b333642a79b8ee6)), closes [#3710](https://github.com/google/adk-python/issues/3710) +* Add finish reason mapping and remove custom file URI handling in LiteLLM ([89bed43](https://github.com/google/adk-python/commit/89bed43f5e0c5ad12dd31c716d372145b7e33e78)), closes [#4125](https://github.com/google/adk-python/issues/4125) +* Add google-cloud-geminidataanalytics to dependencies ([a0b2aac](https://github.com/google/adk-python/commit/a0b2aac108ec4353dbd1a6efdf4d706502366ebf)) +* Add google-cloud-geminidataanalytics to dependencies ([3cd3d56](https://github.com/google/adk-python/commit/3cd3d5617696956da328ec02c1e442cfb7e9cc0b)) +* Add MIME type inference and default for file URIs in LiteLLM ([5c4bae7](https://github.com/google/adk-python/commit/5c4bae7ff2085c05b7f002f5fa368e9b48a752b1)), closes [#3787](https://github.com/google/adk-python/issues/3787) +* Add missing space in README.md ([42317f8](https://github.com/google/adk-python/commit/42317f849f2d9dd96db83e73758a56ef3825bcb8)) +* Add OpenAI strict JSON schema enforcement in LiteLLM ([2dbd1f2](https://github.com/google/adk-python/commit/2dbd1f25bdb1d88a6873d824b81b3dd5243332a4)), closes [#4573](https://github.com/google/adk-python/issues/4573) +* Add post-invocation token-threshold compaction with event retention ([a88e864](https://github.com/google/adk-python/commit/a88e8647558a9b9d0bfdf38d2d8de058e3ba0596)), closes [#4146](https://github.com/google/adk-python/issues/4146) +* Add pre-deployment validation for agent module imports ([2ac468e](https://github.com/google/adk-python/commit/2ac468ea7e30ef30c1324ffc86f67dbf32ab7ede)) +* Add push notification config store to agent_to_a2a ([4ca904f](https://github.com/google/adk-python/commit/4ca904f11113c4faa3e17bb4a9662dca1f936e2e)), closes [#4126](https://github.com/google/adk-python/issues/4126) +* Add pypika>=0.50.0 to project.toml since crewai depends on it and the default version does not work with py 3.12+ ([e8f7aa3](https://github.com/google/adk-python/commit/e8f7aa3140d2585ac38ebfe31c5b650383499a20)) +* Add query parameters to /run_live for advanced run configurations ([f90adff](https://github.com/google/adk-python/commit/f90adff8c5f247a20a433d511cc0bddcab83357c)), closes [#4263](https://github.com/google/adk-python/issues/4263) +* Add schema type sanitization to OpenAPI spec parser ([6dce7f8](https://github.com/google/adk-python/commit/6dce7f8a8f28de275b1119fc03219f1468bb883b)), closes [#3704](https://github.com/google/adk-python/issues/3704) [#3108](https://github.com/google/adk-python/issues/3108) +* Add support for injecting a custom google.genai.Client into Gemini models ([48105b4](https://github.com/google/adk-python/commit/48105b49c5ab8e4719a66e7219f731b2cd293b00)), closes [#2560](https://github.com/google/adk-python/issues/2560) +* Add support for injecting a custom google.genai.Client into Gemini models ([c615757](https://github.com/google/adk-python/commit/c615757ba12093ba4a2ba19bee3f498fef91584c)), closes [#2560](https://github.com/google/adk-python/issues/2560) +* Add update_timestamp_tz property to StorageSession ([666cebe](https://github.com/google/adk-python/commit/666cebe3693d2981fd5fea6e9e4c65e56dcd3f2b)), closes [#4334](https://github.com/google/adk-python/issues/4334) +* Add usage field to ModelResponse in LiteLLM tests ([245b2b9](https://github.com/google/adk-python/commit/245b2b9874246b678774572988f53c6b7da7d4e2)) +* Add x-goog-user-project header to http calls in API Registry ([0088b0f](https://github.com/google/adk-python/commit/0088b0f3adb963dded692929c314d94709dcc211)) +* adding back deprecated eval endpoint for web until we migrate ([ae993e8](https://github.com/google/adk-python/commit/ae993e884f44db276a4116ebb7a11a2fb586dbfe)) +* Allow artifact services to accept dictionary representations of types.Part ([b004da5](https://github.com/google/adk-python/commit/b004da50270475adc9e1d7afe4064ca1d10c560a)), closes [#2886](https://github.com/google/adk-python/issues/2886) +* Allow string values for ToolTrajectoryCriterion.match_type ([93d6e4c](https://github.com/google/adk-python/commit/93d6e4c888d5a2181e3c22da049d8be0d6ead70c)), closes [#3711](https://github.com/google/adk-python/issues/3711) +* Avoid false positive "App name mismatch" warnings in Runner ([6388ba3](https://github.com/google/adk-python/commit/6388ba3b2054e60d218eae6ec8abc621ed0a1139)), closes [#3143](https://github.com/google/adk-python/issues/3143) +* avoid local .adk storage in Cloud Run/GKE ([b30c2f4](https://github.com/google/adk-python/commit/b30c2f4e139e0d4410c5f8dd61acee2056ad06ea)), closes [#3907](https://github.com/google/adk-python/issues/3907) +* Built-in agents (names starting with "__") now use in-memory session storage instead of creating .adk folders in the agents directory ([e3bac1a](https://github.com/google/adk-python/commit/e3bac1ab8c724454fb433cc7e78416b61efe33ee)) +* Change error_message column type to TEXT in DatabaseSessionService ([8335f35](https://github.com/google/adk-python/commit/8335f35015c7d4349bc4ac47dedbe99663b78e62)) +* Change MCP read_resource to return the original contents ([ecce7e5](https://github.com/google/adk-python/commit/ecce7e54a688a915a1b9d742c39e4684186729be)) +* Change Mypy workflow trigger to manual dispatch ([d0825d8](https://github.com/google/adk-python/commit/d0825d817e39a9bd2e2fbb7ccd8690cf60593d14)) +* Check `will_continue` for streaming function calls ([2220d88](https://github.com/google/adk-python/commit/2220d885cda875144b52338b5becf6e5546f3f51)) +* Check both `input_stream` parameter name and its annotation to decide whether it's a streaming tool that accept input stream ([d56cb41](https://github.com/google/adk-python/commit/d56cb4142c5040b6e7d13beb09123b8a59341384)) +* **cli:** ignore session_db_kwargs for sqlite session services ([ce07cd8](https://github.com/google/adk-python/commit/ce07cd8144c8498434f68e61ebeb519bf329f778)) +* **cli:** pass log_level to uvicorn in web and api_server commands ([#4144](https://github.com/google/adk-python/issues/4144)) ([38d52b2](https://github.com/google/adk-python/commit/38d52b247600fb45a2beeb041c4698e90c00d705)), closes [#4139](https://github.com/google/adk-python/issues/4139) +* Conditionally preserve function call IDs in LLM requests ([663cb75](https://github.com/google/adk-python/commit/663cb75b3288d8d0649412e1009329502b21cbbc)), closes [#4381](https://github.com/google/adk-python/issues/4381) +* Convert examples for A2A agent card ([458d24e](https://github.com/google/adk-python/commit/458d24e24ebbfab80666bba0108e76267c75796c)) +* Convert unsupported inline artifact MIME types to text in LoadArtifactsTool ([fdc98d5](https://github.com/google/adk-python/commit/fdc98d5c927bfef021e87cf72103892e4c2ac12a)), closes [#4028](https://github.com/google/adk-python/issues/4028) +* Create a new session resumption config if it's None ([d6c964e](https://github.com/google/adk-python/commit/d6c964e05e81c58d7bd78c33af122f5a347a95c7)) +* Database reserved keyword issue ([94d48fc](https://github.com/google/adk-python/commit/94d48fce32a1f07cef967d50e82f2b1975b4abd9)) +* Decode image data from ComputerUse tool response into image blobs ([d7cfd8f](https://github.com/google/adk-python/commit/d7cfd8fe4def2198c113ff1993ef39cd519908a1)) +* **deps:** Increase pydantic lower version to 2.7.0 ([dbd6420](https://github.com/google/adk-python/commit/dbd64207aebea8c5af19830a9a02d4c05d1d9469)) +* disable save_input_blobs_as_artifacts deprecation warning message for users that don't set it ([c34615e](https://github.com/google/adk-python/commit/c34615ecf3c7bbe0f4275f72543774f258c565b4)) +* Do not treat FCs and FRs as invisible when marked as thoughts ([853a3b0](https://github.com/google/adk-python/commit/853a3b0e143ce27516f0de51e0e0df2af6ecf465)) +* **docs:** fix grammar and remove duplicate words in documentation and source ([3c63c2a](https://github.com/google/adk-python/commit/3c63c2ad39048dd3afccc9f1012d6e8c2ba471de)) +* drop Python 3.10 support ([#4878](https://github.com/google/adk-python/issues/4878)) ([4af7cbb](https://github.com/google/adk-python/commit/4af7cbb5c8319208337e18b0a6bc55288b51b0b1)) +* edit copybara and BUILD config for new adk/integrations folder (added with Agent Registry) ([37d52b4](https://github.com/google/adk-python/commit/37d52b4caf6738437e62fe804103efe4bde363a1)) +* Enable pool_pre_ping by default for non-SQLite database engines ([da73e71](https://github.com/google/adk-python/commit/da73e718efa9557ed33e2fb579de68fcbcf4c7f0)), closes [#4211](https://github.com/google/adk-python/issues/4211) +* Ensure consistent ADC quota project override in ADK ([226e873](https://github.com/google/adk-python/commit/226e873b0f0aa983100d9abeaf8ca43675fb373f)) +* Ensure database sessions are always rolled back on errors ([63a8eba](https://github.com/google/adk-python/commit/63a8eba53f2cb07625eb7cd111ff767e8e0030fa)) +* Ensure open api tool service account exchanger uses quota project id for ADC ([7c8bc69](https://github.com/google/adk-python/commit/7c8bc69dd04acc3b8dc5e1d427145e29cd66a848)) +* Escape Click’s Wrapping in bulled lists of `adk web` options ([ac1401b](https://github.com/google/adk-python/commit/ac1401bd44f37f5a69fd5d4e83a26c6a132403c3)) +* EscapieClick’s Wrapping in adk eval help ([#4258](https://github.com/google/adk-python/issues/4258)) ([3bcd8f7](https://github.com/google/adk-python/commit/3bcd8f7f7a0683f838005bc209f7d39dc93f850b)) +* Exclude thought parts when merging agent output ([07bb164](https://github.com/google/adk-python/commit/07bb1647588a781e701257c4c379736537029ea0)) +* Expand add_memory to accept MemoryEntry ([f27a9cf](https://github.com/google/adk-python/commit/f27a9cfb87caecb8d52967c50637ed5ad541cd07)) +* Expand LiteLLM reasoning extraction to include 'reasoning' field ([9468487](https://github.com/google/adk-python/commit/94684874e436c2959cfc90ec346010a6f4fddc49)), closes [#3694](https://github.com/google/adk-python/issues/3694) +* filter non-agent directoris from list_agents() ([3b5937f](https://github.com/google/adk-python/commit/3b5937f022adf9286dc41e01e3618071a23eb992)) +* Filter out thought parts in lite_llm._get_content ([1ace8fc](https://github.com/google/adk-python/commit/1ace8fc6780bc25e2ef4222c73bc2558082b0a00)), closes [#3948](https://github.com/google/adk-python/issues/3948) +* fix agent config path handling in generated deployment script ([8012339](https://github.com/google/adk-python/commit/801233902bbd6c0cca63b6fc8c1b0b2531f3f11e)), closes [#4223](https://github.com/google/adk-python/issues/4223) +* Fix cases where execution_result_delimiters have None type element due to code_execution_result.output is None ([a16e3cc](https://github.com/google/adk-python/commit/a16e3cc67e1cb391228ba78662547672404ae550)) +* Fix double JSON encoding when saving eval set results ([fc4e3d6](https://github.com/google/adk-python/commit/fc4e3d6f607032259e68e91bcb1ad0815a03164e)), closes [#3993](https://github.com/google/adk-python/issues/3993) +* Fix event loop closed bug in McpSessionManager ([4aa4751](https://github.com/google/adk-python/commit/4aa475145f196fb35fe97290dd9f928548bc737f)) +* fix httpx client closure during event pagination ([b725045](https://github.com/google/adk-python/commit/b725045e5a1192bc9fd5190cbd2758ab6ff02590)) +* fix inconsistent method signatures for evaluate_invocations ([0918b64](https://github.com/google/adk-python/commit/0918b647df6f88b95974d486a3161121a6514901)) +* Fix issue with MCP tools throwing an error ([26e77e1](https://github.com/google/adk-python/commit/26e77e16947aed1abcfdd7f526532a708f1f073b)) +* Fix pickling lock errors in McpSessionManager ([4e2d615](https://github.com/google/adk-python/commit/4e2d6159ae3552954aaae295fef3e09118502898)) +* Fix Pydantic Schema Generation Error for ClientSession ([131fbd3](https://github.com/google/adk-python/commit/131fbd39482980572487a30fea13236d2badd543)) +* fix SSRF vulnerability in load_web_page by disabling automatic redirects ([3c51ee7](https://github.com/google/adk-python/commit/3c51ee7f48419b1873a5bb4e61e21c27454bbe41)) +* Fix Type Error by initializing user_content as a Content object ([2addf6b](https://github.com/google/adk-python/commit/2addf6b9dacfe87344aeec0101df98d99c23bdb1)) +* fix typo in PlanReActPlanner instruction ([6d53d80](https://github.com/google/adk-python/commit/6d53d800d5f6dc5d4a3a75300e34d5a9b0f006f5)) +* Handle async driver URLs in migration tool ([4b29d15](https://github.com/google/adk-python/commit/4b29d15b3e5df65f3503daffa6bc7af85159507b)), closes [#4176](https://github.com/google/adk-python/issues/4176) +* Handle file URI conversion for LiteLLM based on provider and model ([43b484f](https://github.com/google/adk-python/commit/43b484ff66f3417f5ffcf37256bf6411b2f8c4a2)), closes [#4038](https://github.com/google/adk-python/issues/4038) +* Handle HTTP/HTTPS URLs for media files in LiteLLM content conversion ([47221cd](https://github.com/google/adk-python/commit/47221cd5c1e778cd4b92ed8d382c639435f5728c)), closes [#4112](https://github.com/google/adk-python/issues/4112) +* Handle length finish reason in LiteLLM responses ([4c6096b](https://github.com/google/adk-python/commit/4c6096baa1b0bed8533397287a5c11a0c4cb9101)), closes [#4482](https://github.com/google/adk-python/issues/4482) +* Handle list values in Gemini schema sanitization ([fd8a9e3](https://github.com/google/adk-python/commit/fd8a9e3962cca4f422beb7316cbe732edf726d51)), closes [#4363](https://github.com/google/adk-python/issues/4363) +* Handle mixed tool and non-tool parts in LiteLLM content conversion ([fdc286a](https://github.com/google/adk-python/commit/fdc286a23c2b1a9fd28a7b641f3959a39431d9b4)), closes [#4091](https://github.com/google/adk-python/issues/4091) +* Handle NOT_FOUND error when fetching Vertex AI sessions ([75231a3](https://github.com/google/adk-python/commit/75231a30f1857d930804769caf88bcc20839dd08)) +* Handle overriding of requirements when deploying to agent engine ([38a30a4](https://github.com/google/adk-python/commit/38a30a44d222fade8616f9d63410b1c2b6f84e1b)) +* Handle SQLite URLs in SqliteSessionService ([b8917bc](https://github.com/google/adk-python/commit/b8917bc80e5a00441044d9e8ebfbce52b032511c)), closes [#4077](https://github.com/google/adk-python/issues/4077) +* handle UnicodeDecodeError when loading skills in ADK ([3fbc27f](https://github.com/google/adk-python/commit/3fbc27fa4ddb58b2b69ee1bea1e3a7b2514bd725)) +* Harden YAML builder tmp save/cleanup ([6f259f0](https://github.com/google/adk-python/commit/6f259f08b3c45ad6050b8a93c9bd85913451ece6)) +* Heal missing tool results before LiteLLM requests ([6b7386b](https://github.com/google/adk-python/commit/6b7386b7620bbc51cda8c1c6d9914549536640e6)), closes [#3971](https://github.com/google/adk-python/issues/3971) +* Honor the modalities parameter in adk api server for live API ([19de45b](https://github.com/google/adk-python/commit/19de45b3250d09b9ec16c45788e7d472b3e588c2)) +* ignore adk-bot administrative actions in stale agent ([3ec7ae3](https://github.com/google/adk-python/commit/3ec7ae3b8d532ed4b60786201a78e980dfc56cf3)) +* Improve BigQuery Agent Analytics plugin reliability and code quality ([ea03487](https://github.com/google/adk-python/commit/ea034877ec15eef1be8f9a4be9fcd95446a3dc21)) +* In SaveFilesAsArtifactsPlugin, write the artifact delta to state then event actions so that the plugin works with ADK Web UI's artifacts panel ([d6f31be](https://github.com/google/adk-python/commit/d6f31be554d9b7ee15fd9c95ae655b2265fb1f32)) +* Include back-ticks around the BQ asset names in the tools examples ([8789ad8](https://github.com/google/adk-python/commit/8789ad8f16dfa250fab607946250a2857a25d5ef)) +* Include list of skills in every message and remove list_skills tool from system instruction ([4285f85](https://github.com/google/adk-python/commit/4285f852d54670390b19302ed38306bccc0a7cee)) +* Initialize self._auth_config inside BaseAuthenticatedTool ([d4da1bb](https://github.com/google/adk-python/commit/d4da1bb7330cdb87c1dcbe0b9023148357a6bd07)) +* installing dependencies for py 3.10 ([9cccab4](https://github.com/google/adk-python/commit/9cccab453706138826f313c47118812133e099c4)) +* Invoke on_tool_error_callback for missing tools in live mode ([e6b601a](https://github.com/google/adk-python/commit/e6b601a2ab71b7e2df0240fd55550dca1eba8397)) +* Keep query params embedded in OpenAPI paths when using httpx ([ffbcc0a](https://github.com/google/adk-python/commit/ffbcc0a626deb24fe38eab402b3d6ace484115df)), closes [#4555](https://github.com/google/adk-python/issues/4555) +* label response as thought if task is immediately returned as working ([4f3b733](https://github.com/google/adk-python/commit/4f3b733074c867e68ca5d38720ccb1f3e0b0d960)) +* Make all parts of a thought event be marked as thought ([f92d4e3](https://github.com/google/adk-python/commit/f92d4e397f37445fe9032a95ce26646a3a69300b)) +* Make credential key generation stable and prevent cross-user credential leaks ([33012e6](https://github.com/google/adk-python/commit/33012e6dda9ef20c7a1dae66a84717de5d782097)) +* Make credential manager to accept tool_context instead of callback_context ([fe82f3c](https://github.com/google/adk-python/commit/fe82f3cde854e49be13d90b4c02d786d82f8a202)) +* Make invocation_context optional in convert_event_to_a2a_message ([8e79a12](https://github.com/google/adk-python/commit/8e79a12d6bcde43cc33247b7ee6cc9e929fa6288)) +* Make OpenAPI /docs path work again ([65cbf4b](https://github.com/google/adk-python/commit/65cbf4b35ce220e1ae9bcea2c230db9605bf173e)), closes [#3173](https://github.com/google/adk-python/issues/3173) +* make the BigQuery analytics plugin work with agents that don't have instructions such as the LoopAgent ([8bed01c](https://github.com/google/adk-python/commit/8bed01cbdc5961c0d219fd6389f492f1a4235de5)) +* map LiteLLM thought parts to reasoning_content ([6c67b6c](https://github.com/google/adk-python/commit/6c67b6c0f414f3ac7937a9b924093732776e6572)), closes [#4069](https://github.com/google/adk-python/issues/4069) +* **mcp:** used logger to log instead of print ([6bc70a6](https://github.com/google/adk-python/commit/6bc70a6bab79b679a4b18ad146b3450fb9014475)) +* Migrate VertexAiMemoryBankService to use the async Vertex AI client ([64a44c2](https://github.com/google/adk-python/commit/64a44c28974de77cf8934f9c3d1bc03691b90e7b)), closes [#4386](https://github.com/google/adk-python/issues/4386) +* Move and enhance the deprecation warning for the plugins argument in "_validate_runner_params" to the beginning of the function ([43270bc](https://github.com/google/adk-python/commit/43270bcb6197526ba5765f83d7e4fb88f213b8d3)) +* nit fixes for API Registry - updating imports / type hints and formatting ([253ac87](https://github.com/google/adk-python/commit/253ac87c79ff4bf438c5ffacbcb0e46d625a367c)) +* Normalize multipart content for LiteLLM's ollama_chat provider ([055dfc7](https://github.com/google/adk-python/commit/055dfc79747aa365db8441908d4994f795e94a68)), closes [#3727](https://github.com/google/adk-python/issues/3727) +* oauth refresh not triggered on token expiry ([69997cd](https://github.com/google/adk-python/commit/69997cd5ef44ee881a974bb36dc100e17ed6de2e)) +* Only filter out audio content when sending history ([712b5a3](https://github.com/google/adk-python/commit/712b5a393d44e7b5ce35fc459da98361bae4bb16)) +* Only prepend "https://" to the MCP server url if it doesn't already have a scheme ([71b3289](https://github.com/google/adk-python/commit/71b32890f5ab279e2bed1fd28c0f4693cba3f45e)) +* Only relay the LiveRequest after tools is invoked ([b53bc55](https://github.com/google/adk-python/commit/b53bc555cceaa11dc53b42c9ca1d650592fb4365)) +* Optimize row-level locking in append_event ([d61846f](https://github.com/google/adk-python/commit/d61846f6c6dd5e357abb0e30eaf61fe27896ae6a)), closes [#4655](https://github.com/google/adk-python/issues/4655) +* otel_to_cloud flag help text points at Cloud Run instead of Agent Engine ([d9e8e9c](https://github.com/google/adk-python/commit/d9e8e9cf32799bfe3209be947a2d05175f47c280)) +* Parallelize tool resolution in LlmAgent.canonical_tools() ([7478bda](https://github.com/google/adk-python/commit/7478bdaa9817b0285b4119e8c739d7520373f719)) +* Pass invocation_id from /run endpoint to Runner.run_async ([d2dba27](https://github.com/google/adk-python/commit/d2dba27134f833e5d929fdf363ada9364cc852f9)), closes [#3290](https://github.com/google/adk-python/issues/3290) +* pass tool context into require_confirmation function in McpTool ([7deffb1](https://github.com/google/adk-python/commit/7deffb16fd652547a8c871826fa1788ec0f99294)) +* Per-session locking and row-level locking in `DatabaseSessionService.append_event` ([f508474](https://github.com/google/adk-python/commit/f50847460f8a3bd063ff8fbb2f0558d86e77d6fd)), closes [#1049](https://github.com/google/adk-python/issues/1049) +* Pin aiosqlite version to 0.21.0 ([f5f4c01](https://github.com/google/adk-python/commit/f5f4c01d1bd2079b686a27d0550fb15daf2c02d2)) +* Preserve thought_signature in function call conversions for interactions API integration ([2010569](https://github.com/google/adk-python/commit/20105690100d9c2f69c061ac08be5e94c50dc39c)) +* Preserve thought_signature in FunctionCall conversions between GenAI and A2A ([f9c104f](https://github.com/google/adk-python/commit/f9c104faf73e2a002bb3092b50fb88f4eed78163)) +* Prevent .env files from overriding existing environment variables ([0827d12](https://github.com/google/adk-python/commit/0827d12ccd74feb24758f64f2884c9493001b4ca)) +* Prevent ContextFilterPlugin from creating orphaned function responses ([e32f017](https://github.com/google/adk-python/commit/e32f017979e26a94b998311cafcde753fd29e44e)), closes [#4027](https://github.com/google/adk-python/issues/4027) +* Prevent retry_on_errors from retrying asyncio.CancelledError ([30d3411](https://github.com/google/adk-python/commit/30d3411d603f12ca5bcdd2d71773d087f3191dba)), closes [#4009](https://github.com/google/adk-python/issues/4009) +* Prevent splitting of SSE events with artifactDelta for function resume requests ([6a929af](https://github.com/google/adk-python/commit/6a929af718fa77199d1eecc62b16c54beb1c8d84)), closes [#4487](https://github.com/google/adk-python/issues/4487) +* Prevent stale bot from flagging internal maintainer discussions ([f51b9b7](https://github.com/google/adk-python/commit/f51b9b70b20369e7862c7c8a7527844bf613dea5)) +* Prevent stopping event processing on events with None content ([ed2c3eb](https://github.com/google/adk-python/commit/ed2c3ebde9cafbb5e2bf375f44db1e77cee9fb24)) +* prompt token may be None in streaming mode ([32ee07d](https://github.com/google/adk-python/commit/32ee07df01f10dbee0e98ca9d412440a7fe9163d)) +* Propagate file names during A2A to/from Genai Part conversion ([f324fa2](https://github.com/google/adk-python/commit/f324fa2d62442301ebb2e7974eb97ea870471410)) +* propagate grounding and citation metadata in streaming responses ([e6da417](https://github.com/google/adk-python/commit/e6da4172924ecc36ffc2535199c450a2a51c7bcc)) +* Propagate RunConfig custom metadata to all events ([e3db2d0](https://github.com/google/adk-python/commit/e3db2d0d8301748c63bad826f24692448dbd1c2c)), closes [#3953](https://github.com/google/adk-python/issues/3953) +* Propagate thought from A2A TextPart metadata to GenAI Part ([e59929e](https://github.com/google/adk-python/commit/e59929e11a56aaee7bb0c45cd4c9d9fef689548c)) +* race condition in table creation for `DatabaseSessionService` ([fbe9ecc](https://github.com/google/adk-python/commit/fbe9eccd05e628daa67059ba2e6a0d03966b240d)) +* Re-export DEFAULT_SKILL_SYSTEM_INSTRUCTION to skills and skill/prompt.py to avoid breaking current users ([de4dee8](https://github.com/google/adk-python/commit/de4dee899cd777a01ba15906f8496a72e717ea98)) +* Recognize function responses as non-empty parts in LiteLLM ([d0102ec](https://github.com/google/adk-python/commit/d0102ecea331e062190dbb7578a4ef7f4044306e)), closes [#4249](https://github.com/google/adk-python/issues/4249) +* recursively extract input/output schema for AgentTool ([bf2b56d](https://github.com/google/adk-python/commit/bf2b56de6d0052e40b6d871b2d22c56e9225e145)) +* Redact sensitive information from URIs in logs ([5257869](https://github.com/google/adk-python/commit/5257869d91a77ebd1381538a85e7fdc3a600da90)) +* Redirect LiteLLM logs from stderr to stdout ([db711cd](https://github.com/google/adk-python/commit/db711cd789cfcdd29e963188b15ccca13061cd5a)), closes [#3824](https://github.com/google/adk-python/issues/3824) +* Refactor context filtering to better handle multi-turn invocations ([9b112e2](https://github.com/google/adk-python/commit/9b112e2d13741a2fa68c274da38353bf7134b5d1)), closes [#4296](https://github.com/google/adk-python/issues/4296) +* Refactor LiteLLM response schema formatting for different models ([894d8c6](https://github.com/google/adk-python/commit/894d8c6c2652492324c428e8dae68a8646b17485)), closes [#3713](https://github.com/google/adk-python/issues/3713) [#3890](https://github.com/google/adk-python/issues/3890) +* Refactor LiteLLM streaming response parsing for compatibility with LiteLLM 1.81+ ([e8019b1](https://github.com/google/adk-python/commit/e8019b1b1b0b43dcc5fa23075942b31db502ffdd)), closes [#4225](https://github.com/google/adk-python/issues/4225) +* Refine Ollama content flattening and provider checks ([c6f389d](https://github.com/google/adk-python/commit/c6f389d4bc4d2b91795003a3bd87ed1f1b854493)), closes [#3928](https://github.com/google/adk-python/issues/3928) +* rehydration of EventActions in StorageEvent.to_event ([838530e](https://github.com/google/adk-python/commit/838530ebe053e5193d4329c5a203ca3d096ff7be)), closes [#4047](https://github.com/google/adk-python/issues/4047) +* Reload the stale session in database_session_service when the update_time of storage is later than the current in memory session object ([1063fa5](https://github.com/google/adk-python/commit/1063fa532cad59d8e9f7421ce2f523724d49d541)) +* Remove custom metadata from A2A response events ([81eaeb5](https://github.com/google/adk-python/commit/81eaeb5eba6d40cde0cf6147d96921ed1bf7bb31)) +* remove duplicate session GET when using API server, unbreak auto_session_create when using API server ([445dc18](https://github.com/google/adk-python/commit/445dc189e915ce5198e822ad7fadd6bb0880a95e)) +* Remove experimental decorators from user persona data models ([eccdf6d](https://github.com/google/adk-python/commit/eccdf6d01e70c37a1e5aa47c40d74469580365d2)) +* Remove fallback to cached exchanged credential in _load_existing_credential ([1ae0e16](https://github.com/google/adk-python/commit/1ae0e16b2c1a3139b9c2b1c4a3e725833a6240be)), closes [#3772](https://github.com/google/adk-python/issues/3772) +* remove print debugging artifact ([0d38a36](https://github.com/google/adk-python/commit/0d38a3683f13bc12dc5d181164b6cd5d72fc260c)) +* Replace the global DEFAULT_USER_PERSONA_REGISTRY with a function call to get_default_persona_registry ([2703613](https://github.com/google/adk-python/commit/2703613572a38bf4f9e25569be2ee678dc91b5b5)) +* Resolve project and credentials before creating Spanner client ([99f893a](https://github.com/google/adk-python/commit/99f893ae282a04c67cce5f80e87d3bfadd3943e6)) +* Resolving MutualTLSChannelError 'OpenSSL' module error on by adding pyopenssl dependency in pyproject.toml ([125bc85](https://github.com/google/adk-python/commit/125bc85ac5e1400bc38f7c681f76fa82626c9911)) +* **runner:** Yield buffered function_call/function_response events during live streaming ([7b25b8f](https://github.com/google/adk-python/commit/7b25b8fb1daf54d7694bf405d545d46d2c012d2b)) +* **sessions:** use async iteration for VertexAiSessionService.list_sessions pagination ([758d337](https://github.com/google/adk-python/commit/758d337c76d877e3174c35f06551cc9beb1def06)) +* Set empty JSON string as placeholder for redacted content in traces ([5880109](https://github.com/google/adk-python/commit/5880109ab13456d5ec511e991de9271fbbec41d8)), closes [#4094](https://github.com/google/adk-python/issues/4094) +* Set LITELLM_MODE to PRODUCTION before importing LiteLLM ([215c2f5](https://github.com/google/adk-python/commit/215c2f506e21a3d8c39551b80f6356943ecae320)) +* Set the default response modality to AUDIO only ([a4b914b](https://github.com/google/adk-python/commit/a4b914b09fbab76834050a8c8f0eb335b12cfc34)) +* **simulation:** handle NoneType generated_content ([9d15517](https://github.com/google/adk-python/commit/9d155177b956f690d4c99560f582e3e90e111f71)) +* **skill:** coloate default skill SI with skilltoolset ([fc1f1db](https://github.com/google/adk-python/commit/fc1f1db00562a79cd6c742cfd00f6267295c29a8)) +* Split SSE events with both content and artifactDelta in ADK Web Server ([084fcfa](https://github.com/google/adk-python/commit/084fcfaba52c4a6075397221dbe7aba2f2acd2d7)), closes [#4036](https://github.com/google/adk-python/issues/4036) +* Store and retrieve EventCompaction via custom_metadata in Vertex AISessionService ([2e434ca](https://github.com/google/adk-python/commit/2e434ca7be765d45426fde9d52b131921bd9fa30)), closes [#3465](https://github.com/google/adk-python/issues/3465) +* Stream errors as simple JSON objects in ADK web server SSE ([798d005](https://github.com/google/adk-python/commit/798d0053c832e7ed52e2e104f8a14f789ba8b17f)), closes [#4291](https://github.com/google/adk-python/issues/4291) +* Strip timezone for PostgreSQL timestamps in DatabaseSessionService ([19b6076](https://github.com/google/adk-python/commit/19b607684f15ce2b6ffd60382211ba5600705743)) +* Support before_tool_callback and after_tool_callback in Live mode ([c36a708](https://github.com/google/adk-python/commit/c36a708058163ade061cd3d2f9957231a505a62d)), closes [#4704](https://github.com/google/adk-python/issues/4704) +* Support escaped curly braces in instruction templates ([079f7a3](https://github.com/google/adk-python/commit/079f7a38be5c2dcae604a93a8dabc2fd60af79db)), closes [#3527](https://github.com/google/adk-python/issues/3527) +* Support escaped curly braces in instruction templates ([7c7d25a](https://github.com/google/adk-python/commit/7c7d25a4a6e4389e23037e70b8efdcd5341f44ea)), closes [#3527](https://github.com/google/adk-python/issues/3527) +* Support Generator and Async Generator tool declaration in JSON schema ([19555e7](https://github.com/google/adk-python/commit/19555e7dce6d60c3b960ca0bc2f928c138ac3cc0)) +* Support Generator and AsyncGenerator tool declaration ([7c28297](https://github.com/google/adk-python/commit/7c282973ea193841fee79f90b8a91c5e02627ccc)) +* temp-scoped state now visible to subsequent agents in same invocation ([2780ae2](https://github.com/google/adk-python/commit/2780ae2892adfbebc7580c843d2eaad29f86c335)) +* **tools:** Handle JSON Schema boolean schemas in Gemini schema conversion ([3256a67](https://github.com/google/adk-python/commit/3256a679da3e0fb6f18b26057e87f5284680cb58)) +* typo in A2A EXPERIMENTAL warning ([eb55eb7](https://github.com/google/adk-python/commit/eb55eb7e7f0fa647d762205225c333dcd8a08dd0)) +* Update agent_engine_sandbox_code_executor in ADK ([dff4c44](https://github.com/google/adk-python/commit/dff4c4404051b711c8be437ba0ae26ca2763df7d)) +* Update agent_engine_sandbox_code_executor in ADK ([ee8d956](https://github.com/google/adk-python/commit/ee8d956413473d1bbbb025a470ad882c1487d8b8)) +* Update agent_engine_sandbox_code_executor in ADK ([dab80e4](https://github.com/google/adk-python/commit/dab80e4a8f3c5476f731335724bff5df3e6f3650)) +* update Api Registry Agent prompt to be more specific and give it the gcloud project id ([78c96e9](https://github.com/google/adk-python/commit/78c96e99ff82962b9d6b5ab6a0ff25168e55e372)) +* update Bigtable query tools to async functions ([72f3e7e](https://github.com/google/adk-python/commit/72f3e7e1e00d93c632883027bf6d31a9095cd6c2)) +* Update dependency versions in pyproject.toml ([7955177](https://github.com/google/adk-python/commit/7955177fb28b8e5dc19aae8be94015a7b5d9882a)) +* Update empty event check to include executable code and execution results ([688f48f](https://github.com/google/adk-python/commit/688f48fffb9df6ef18a692cd2ccaa7628f4c82a7)), closes [#3859](https://github.com/google/adk-python/issues/3859) [#3921](https://github.com/google/adk-python/issues/3921) +* Update expected UsageMetadataChunk in LiteLLM tests ([dd0851a](https://github.com/google/adk-python/commit/dd0851ac74d358bc030def5adf242d875ab18265)), closes [#4680](https://github.com/google/adk-python/issues/4680) +* Update OpenTelemetry dependency versions ([706a6dd](https://github.com/google/adk-python/commit/706a6dda8144da147bd9fa42ef85bbfa58fec5d3)), closes [#4229](https://github.com/google/adk-python/issues/4229) +* Update sample skills agent to use weather-skill instead of weather_skill ([8f54281](https://github.com/google/adk-python/commit/8f5428150d18ed732b66379c0acb806a9121c3cb)) +* update Spanner query tools to async functions ([1dbcecc](https://github.com/google/adk-python/commit/1dbceccf36c28d693b0982b531a99877a3e75169)) +* Update SQLite database URL for async connection ([60e314a](https://github.com/google/adk-python/commit/60e314a78f7a5d9e41c26d5c0b1128da7f679f43)) +* Update the code to work with either 1 event or more than 1 events ([4f54660](https://github.com/google/adk-python/commit/4f54660d6de54ddde0fec6e09fdd68890ce657ca)) +* update toolbox server and SDK package versions ([2e370ea](https://github.com/google/adk-python/commit/2e370ea688033f0663501171d0babfb0d74de4b2)) +* Upgrade GitHub Actions for Node 24 compatibility ([1add41e](https://github.com/google/adk-python/commit/1add41e1609d8d31913d4f73fa97be044fcef2e0)) +* Upgrade GitHub Actions to latest versions ([fa717ad](https://github.com/google/adk-python/commit/fa717ad8f09a819240ca4a7b98f44c704d65e71e)) +* Use canonical tools to find streaming tools and use tool.name to register them ([ec6abf4](https://github.com/google/adk-python/commit/ec6abf401019c39e8e1a8d1b2c7d5cf5e8c7ac56)) +* use correct msg_out/msg_err keys for Agent Engine sandbox output ([b1e33a9](https://github.com/google/adk-python/commit/b1e33a90b4ba716d717e0488b84892b8a7f42aac)) +* Use json.dumps for error messages in SSE events ([6ad18cc](https://github.com/google/adk-python/commit/6ad18cc2fc3a3315a0fc240cb51b3283b53116b4)) +* use mode='json' in model_dump to serialize bytes correctly when using telemetry ([96c5db5](https://github.com/google/adk-python/commit/96c5db5a07f7f851751ccd68f176dad1634885cb)), closes [#4043](https://github.com/google/adk-python/issues/4043) +* Use the agent name as the author of the audio event ([ab62b1b](https://github.com/google/adk-python/commit/ab62b1bffd7ad2df5809d430ad1823872b8bd67a)) +* Use the correct path for config-based agents when deploying to AgentEngine ([83d7bb6](https://github.com/google/adk-python/commit/83d7bb6ef0d952ad04c5d9a61aaf202672c7e17d)) +* Validate app name in `adk create` command ([742c926](https://github.com/google/adk-python/commit/742c9265a260a9c598a1f65e0996d926b4b9c022)), closes [#3977](https://github.com/google/adk-python/issues/3977) +* Validate session before streaming instead of eagerly advancing the runner generator ([ebbc114](https://github.com/google/adk-python/commit/ebbc1147863956e85931f8d46abb0632e3d1cf67)) +* **web:** allow session resume without new message ([30b2ed3](https://github.com/google/adk-python/commit/30b2ed3ef8ee6d3633743c0db00533683d3342d8)) + + +### Code Refactoring + +* Extract helper function for llm request building and response processing ([753084f](https://github.com/google/adk-python/commit/753084fd46c9637488f33b0a05b4d270f6e03a39)) +* Extract reusable function for building agent transfer instructions ([e1e0d63](https://github.com/google/adk-python/commit/e1e0d6361675e7b9a2c9b2523e3a72e2e5e7ce05)) +* extract reusable functions from hitl and auth preprocessor ([c59afc2](https://github.com/google/adk-python/commit/c59afc21cbed27d1328872cdc2b0e182ab2ca6c8)) +* Extract reusable private methods ([976a238](https://github.com/google/adk-python/commit/976a238544330528b4f9f4bea6c4e75ec13b33e1)) +* Extract reusable private methods ([42eeaef](https://github.com/google/adk-python/commit/42eeaef2b34c860f126c79c552435458614255ad)) +* Extract reusable private methods ([706f9fe](https://github.com/google/adk-python/commit/706f9fe74db0197e19790ca542d372ce46d0ae87)) +* Import migration_runner lazily within the migrate command ([905604f](https://github.com/google/adk-python/commit/905604faac82aca8ae0935eebea288f82985e9c5)) +* Rename base classes and TypeVars in optimization data types ([9154ef5](https://github.com/google/adk-python/commit/9154ef59d29eb37538914e9967c4392cc2a24237)) +* Replace check of instance for LlmAgent with hasAttribute check ([7110336](https://github.com/google/adk-python/commit/7110336788662abb8c9bbbb0a53a50cc09130d5e)) +* use McpTool instead of MCPTool to resolve deprecation warnings ([175d638](https://github.com/google/adk-python/commit/175d6381c5e97ad865485427c6337324b55bb367)) +* use McpTool instead of MCPTool to resolve deprecation warnings ([af1c318](https://github.com/google/adk-python/commit/af1c3187428c2cb0cc1ce99cb652ce7d76084c6c)) + + +### Documentation + +* add `thinking_config` in `generate_content_config` in example agent ([c6b1c74](https://github.com/google/adk-python/commit/c6b1c74321faf62cc52d2518eb9ea0dcef050cde)) +* Add PostgreSQL session storage sample and documentation ([657acfa](https://github.com/google/adk-python/commit/657acfadbbb6f81fd489aec11061715adce7c07f)) +* **adk:** fix run_async example and correct ticketId payload key ([4111f85](https://github.com/google/adk-python/commit/4111f85b61b0aaa9e8ddcf9cd77d68607a33e2ba)) +* Fix ADK release analyzer agent for large releases ([83c24d2](https://github.com/google/adk-python/commit/83c24d2e7459c7edcebe66ceb1c840b0956d2b08)) +* Fix typos, broken links, and grammar across documentation ([322dd18](https://github.com/google/adk-python/commit/322dd1827a593e0487fbecc177fb64b728564a88)) +* Fix various typos ([5d94146](https://github.com/google/adk-python/commit/5d941460b607cf80af12a8226af7bfcd2ca3a3b1)) +* fixing a typo ([6ee5126](https://github.com/google/adk-python/commit/6ee5126d1c03cb2cb54929e09d539cfb809d26f7)) +* fixing multiple typos ([91ec80c](https://github.com/google/adk-python/commit/91ec80c606b812a6e92e62056e3ee546db1414ff)) +* fixing typo in multiple files ([80ff067](https://github.com/google/adk-python/commit/80ff067c6b2782e2dc4a19aef91668c4e7fd5c6d)) +* Move mcp session feature out of breaking changes ([316463b](https://github.com/google/adk-python/commit/316463be868919cbf365527dcf23c816f1a9337a)) +* Refactor ADK release analyzer with workflow agents ([8e7cc16](https://github.com/google/adk-python/commit/8e7cc16f1248174e247780f20785401ecf525305)) +* Switches to gemini 2.5 flash for two samples ([645bd0e](https://github.com/google/adk-python/commit/645bd0ed10bf75f853367fbc2dbcb906964ded01)) +* Update adk docs update workflow to invoke the updater agent once per suggestion ([b23deeb](https://github.com/google/adk-python/commit/b23deeb9abffbcdaf64e518ad62d70070bbc7c0a)) +* Update ADK release analyzer to use Gemini 3 Pro with retry and improve file filtering ([2155a35](https://github.com/google/adk-python/commit/2155a35c5156037a9a505ed76b6f0ccbe5904489)) +* update data agent README to match the behavior ([7edfb27](https://github.com/google/adk-python/commit/7edfb2701c8d7b5227090701dec73f8db8282b62)) +* Update the migration guide for adding a new database session schema ([d0aef8a](https://github.com/google/adk-python/commit/d0aef8a4fadc1c435ec75afecebd84f9ab0ffd7a)) +* Update to gemini-2.5-flash for api registry and mcp sample agents ([910f654](https://github.com/google/adk-python/commit/910f65473f7604c2b6cb3052d71ff0c3c11a0aaa)) From eda6e1e75683c980787f6df50aa2de2c1cdcecf5 Mon Sep 17 00:00:00 2001 From: sasha-gitg <44654632+sasha-gitg@users.noreply.github.com> Date: Wed, 18 Mar 2026 12:14:57 -0400 Subject: [PATCH 2/2] Update CHANGELOG-v2.md --- CHANGELOG-v2.md | 398 +----------------------------------------------- 1 file changed, 8 insertions(+), 390 deletions(-) diff --git a/CHANGELOG-v2.md b/CHANGELOG-v2.md index f7fc7ae17e..fd8796b82b 100644 --- a/CHANGELOG-v2.md +++ b/CHANGELOG-v2.md @@ -2,395 +2,13 @@ ## [2.0.0-alpha.1](https://github.com/google/adk-python/compare/v2.0.0-alpha.0...v2.0.0-alpha.1) (2026-03-18) - -### ⚠ BREAKING CHANGES - -* **skill:** coloate default skill SI with skilltoolset -* Make credential manager to accept tool_context instead of callback_context - ### Features -* Add .yml to watched file extensions and add unit tests for AgentChangeEventHandler ([ee9b4ca](https://github.com/google/adk-python/commit/ee9b4ca9083558483d528baf2b1579a8b9372dec)), closes [#3834](https://github.com/google/adk-python/issues/3834) -* Add /chat/completions integration to ApigeeLlm ([9c4c445](https://github.com/google/adk-python/commit/9c4c44536904f5cf3301a5abb910a5666344a8c5)) -* Add /chat/completions streaming support to Apigee LLM ([121d277](https://github.com/google/adk-python/commit/121d27741684685c564e484704ae949c5f0807b1)) -* Add `--disable_features` CLI option to ADK CLI ([53b67ce](https://github.com/google/adk-python/commit/53b67ce6340f3f3f8c3d732f9f7811e445c76359)) -* Add `--enable_features` CLI option to ADK CLI ([79fcddb](https://github.com/google/adk-python/commit/79fcddb39f71a4c1342e63b4d67832b3eccb2652)) -* Add `adk optimize` command ([b18d7a1](https://github.com/google/adk-python/commit/b18d7a140f8e18e03255b07e6d89948427790095)) -* Add `is_computer_use` field to agent information in adk-web server ([5923da7](https://github.com/google/adk-python/commit/5923da786eb1aaef6f0bcbc6adc906cbc8bf9b36)) -* Add a demo simple prompt optimizer for the optimization interface ([0abf4cd](https://github.com/google/adk-python/commit/0abf4cd2c7103a071506c9398455a3bd66fe5da5)) -* Add a handwritten tool for Cloud Pub/Sub ([b6f6dcb](https://github.com/google/adk-python/commit/b6f6dcbeb465a775b9c38ace7a324ee2155d366f)) -* Add a load MCP resource tool ([e25227d](https://github.com/google/adk-python/commit/e25227da5e91a8c1192af709f8e8bb2a471ded92)) -* add add_events_to_memory facade for event-delta ([59e8897](https://github.com/google/adk-python/commit/59e88972ae4f10274444593db0607f40cfcc597e)) -* Add add_session_to_memory to CallbackContext and ToolContext ([7b356dd](https://github.com/google/adk-python/commit/7b356ddc1b1694d2c8a9eee538f3a41cf5518e42)) -* Add an internal function name 'adk_framework' to allow passing function response to the framework but not poluting the agent context ([589f15c](https://github.com/google/adk-python/commit/589f15cb273b1b83a87f0c3145880344ed5b1b91)) -* add base_url option to Gemini LLM class ([781f605](https://github.com/google/adk-python/commit/781f605a1e5de6d77b69d7e7b9835ec6fc8de4bf)) -* Add code execution in the sample agent ([a86aa8b](https://github.com/google/adk-python/commit/a86aa8b03d13320a777c16c6bb065f850a5a6d86)) -* Add custom instructions support to LlmBackedUserSimulator ([a364388](https://github.com/google/adk-python/commit/a364388d9744969760fd87ed24d60793146c162a)) -* Add database schema migration command and script ([ce64787](https://github.com/google/adk-python/commit/ce64787c3e1130d1678e408aa31011fc88590e15)) -* add Dataplex Catalog search tool to BigQuery ADK ([82c2eef](https://github.com/google/adk-python/commit/82c2eefb27313c5b11b9e9382f626f543c53a29e)) -* Add experimental agent tool simulator ([0b9cbd2](https://github.com/google/adk-python/commit/0b9cbd2d42366f1efda6fc3253cd1aa95a28637d)) -* Add experimental agent tool simulator ([6645aa0](https://github.com/google/adk-python/commit/6645aa07fdba661206bb57148d04d70cc18620cd)) -* Add gcs filesystem support for Skills. It supports skills in text and pdf format, also has some sample agents ([6edcb97](https://github.com/google/adk-python/commit/6edcb975827dbd543a40ae3a402d2389327df603)) -* add generate/create modes for Vertex AI Memory Bank writes ([811e50a](https://github.com/google/adk-python/commit/811e50a0cbb181d502b9837711431ef78fca3f34)) -* Add GEPA root agent prompt optimizer ([4e3e2cb](https://github.com/google/adk-python/commit/4e3e2cb58858e08a79bc6119ad49b6c049dbc0d0)) -* Add get_auth_config method to toolset to expose auth requirement of the toolset ([381d44c](https://github.com/google/adk-python/commit/381d44cab437cac027af181ae627e7b260b7561e)) -* Add header_provider to OpenAPIToolset and RestApiTool ([e1a7593](https://github.com/google/adk-python/commit/e1a7593ae8455d51cdde46f5165410217400d3c9)) -* Add interceptor framework to A2aAgentExecutor ([87fcd77](https://github.com/google/adk-python/commit/87fcd77caa9672f219c12e5a0e2ff65cbbaaf6f3)) -* Add interface between optimization infra and LocalEvalService ([7b7ddda](https://github.com/google/adk-python/commit/7b7ddda46ca701952f002b2807b89dbef5322414)) -* Add interface for agent optimizers ([4ee125a](https://github.com/google/adk-python/commit/4ee125a03856fdb9ed28245bf7f5917c2d9038db)) -* Add intra-invocation compaction and token compaction pre-request ([485fcb8](https://github.com/google/adk-python/commit/485fcb84e3ca351f83416c012edcafcec479c1db)) -* Add list_skills_in_dir to skills utils ([327b3af](https://github.com/google/adk-python/commit/327b3affd2d0a192f5a072b90fdb4aae7575be90)) -* Add load_skill_from_dir() method ([9f7d5b3](https://github.com/google/adk-python/commit/9f7d5b3f1476234e552b783415527cc4bac55b39)) -* Add methods in MCPToolset for users to access MCP resources (read_resource, list_resources, get_resource_info) ([8f7d965](https://github.com/google/adk-python/commit/8f7d9659cfc19034af29952fbca765d012169b38)) -* add missing token usage span attributes during model usage ([77bf325](https://github.com/google/adk-python/commit/77bf325d2bf556621c3276f74ee2816fce2a7085)) -* Add models.py and prompt.py to adk/skills to use in skill toolset ([c736210](https://github.com/google/adk-python/commit/c7362100ebc9d93449d7ce341f420664eb3ac361)) -* add new conversational analytics api tool set ([82fa10b](https://github.com/google/adk-python/commit/82fa10b71e037b565cb407c82e9e908432dab0ff)) -* add new conversational analytics api tool set ([c34feb4](https://github.com/google/adk-python/commit/c34feb4c0e045f762b919f598d314d10773cc9de)) -* add new conversational analytics api tool set ([aaf76a6](https://github.com/google/adk-python/commit/aaf76a6a517da15caf28b37fc5a11c5162a99bc3)) -* Add option to send full history to stateless RemoteA2aAgents ([2bd984a](https://github.com/google/adk-python/commit/2bd984adb3c553438fa1fe9ac05b3f96bd508d5f)) -* Add param support to Bigtable execute_sql ([5702a4b](https://github.com/google/adk-python/commit/5702a4b1f59b17fd8b290fc125c349240b0953d7)) -* Add progress_callback support to MCPTool and MCPToolset ([adbc37f](https://github.com/google/adk-python/commit/adbc37fea1ae783416c62f74f954dd4b7e249fa1)) -* Add RunSkillScriptTool to SkillToolset ([636f68f](https://github.com/google/adk-python/commit/636f68fbee700aa47f01e2cfd746859353b3333d)) -* Add schema auto-upgrade, tool provenance, HITL tracing, and span hierarchy fix to BigQuery Agent Analytics plugin ([4260ef0](https://github.com/google/adk-python/commit/4260ef0c7c37ecdfea295fb0e1a933bb0df78bea)) -* Add SkillToolset to adk ([8d02792](https://github.com/google/adk-python/commit/8d0279251ce4fad6f0c84bd7777eb5a74f7ba07a)) -* add SpannerVectorStore for orchestrating and providing utility functions for a Spanner vector store ([59eda98](https://github.com/google/adk-python/commit/59eda98eaecf69ee092bf954da3fae75eb090f2b)) -* Add streaming support for Anthropic models ([5770cd3](https://github.com/google/adk-python/commit/5770cd3776c8805086ece34d747e589e36916a34)), closes [#3250](https://github.com/google/adk-python/issues/3250) -* Add support for ADK tools in SkillToolset ([44a5e6b](https://github.com/google/adk-python/commit/44a5e6bdb8e8f02891e72b65ef883f108c506f6a)) -* Add support for MCP App UI widgets in MCPTool ([86db35c](https://github.com/google/adk-python/commit/86db35c338adaafb41e156311465e71e17edf35e)) -* Add support for memory consolidation via Vertex AI Memory Bank ([4a88804](https://github.com/google/adk-python/commit/4a88804ec7d17fb4031b238c362f27d240df0a13)) -* Add support for PDF documents in Anthropic LLM ([4c8ba74](https://github.com/google/adk-python/commit/4c8ba74fcb07014db187ef8db8246ff966379aa9)) -* Add support to automatically create a session if one does not exist ([8e69a58](https://github.com/google/adk-python/commit/8e69a58df4eadeccbb100b7264bb518a46b61fd7)) -* add token_endpoint_auth_method support to OAuth2 credentials ([8782a69](https://github.com/google/adk-python/commit/8782a695036aa0c1528027673868159143f925f0)) -* Add UiWidget to EventActions for supporting new experimental UI Widgets feature ([530ff06](https://github.com/google/adk-python/commit/530ff06ece61a93855a53235e85af18b46b2a6a0)) -* ADK 2.0 alpha ([1c64a41](https://github.com/google/adk-python/commit/1c64a41b53df3854183276091ec40a97b77c0bbf)) -* Agent Registry in ADK ([abaa929](https://github.com/google/adk-python/commit/abaa92944c4cd43d206e2986d405d4ee07d45afe)) -* Agent Skills spec compliance — validation, aliases, scripts, and auto-injection ([223d9a7](https://github.com/google/adk-python/commit/223d9a7ff52d8da702f1f436bd22e94ad78bd5da)) -* Allow `thinking_config` in `generate_content_config` ([e162bb8](https://github.com/google/adk-python/commit/e162bb8832a806e2380048e39165bf837455f88c)) -* Allow google search tool to set different model ([b57a3d4](https://github.com/google/adk-python/commit/b57a3d43e4656f5a3c5db53addff02b67d1fde26)) -* Allow passthrough of GOOGLE_CLOUD_LOCATION for AgentEngine deployments ([004e15c](https://github.com/google/adk-python/commit/004e15ccb7c7f683623f8e7d2e77a9d12558c545)) -* allow Vertex AI Client initialization with API Key ([43d6075](https://github.com/google/adk-python/commit/43d6075ea7aa49ddb358732f2219ca9598dd286f)) -* **auth:** Add framework support for toolset authentication before get_tools ([ee873ca](https://github.com/google/adk-python/commit/ee873cae2e2df960910d264a4340ce6c0489eb7a)) -* **auth:** Add native support for id_token in OAuth2 credentials ([33f7d11](https://github.com/google/adk-python/commit/33f7d118b377b60f998c92944d2673679fddbc6e)) -* Bigquery ADK support for search catalog tool ([bef3f11](https://github.com/google/adk-python/commit/bef3f117b4842ce62760328304484cd26a1ec30a)) -* **bigtable:** add Bigtable cluster metadata tools ([34c560e](https://github.com/google/adk-python/commit/34c560e66e7ad379f586bbcd45a9460dc059bee2)) -* change default BigQuery table ID and update docstring ([7557a92](https://github.com/google/adk-python/commit/7557a929398ec2a1f946500d906cef5a4f86b5d1)) -* **cli:** Add `--auto_create_session` flag to `adk api_server` CLI ([40c15d0](https://github.com/google/adk-python/commit/40c15d059599472b40f48272a464eb3cb7345fc6)) -* **cli:** add `otel_to_cloud` flag to adk deploy agent_engine command ([21f63f6](https://github.com/google/adk-python/commit/21f63f66ee424501d9a70806277463ef718ae843)) -* **cli:** add `otel_to_cloud` flag to adk deploy cloud_run and adk deploy gke command ([62fa4e5](https://github.com/google/adk-python/commit/62fa4e513c30bdd084358f6a6e5738ee680deafc)) -* **conformance:** add report generation to `adk conformance test` command ([43c437e](https://github.com/google/adk-python/commit/43c437e38b9109b68a81de886d1901e4d8f87a01)) -* **conformance:** read report's version info from the server ([9dccd6a](https://github.com/google/adk-python/commit/9dccd6a69223925ed1c452189b33a922e6934643)) -* convert A2UI messages between A2A DataPart metadata and ADK events ([1133ce2](https://github.com/google/adk-python/commit/1133ce219c5a7a9a85222b03e348ba6b13830c8f)) -* durable runtime support ([07fdd23](https://github.com/google/adk-python/commit/07fdd23c9c3f5046aa668fb480840f67f13bf271)) -* enable dependency injection for agent loader in FastAPI app gen ([34da2d5](https://github.com/google/adk-python/commit/34da2d5b26e82f96f1951334fe974a0444843720)) -* Enable output schema with tools for LiteLlm models ([89df5fc](https://github.com/google/adk-python/commit/89df5fcf883b599cf7bfe40bde35b8d86ab0146b)), closes [#3969](https://github.com/google/adk-python/issues/3969) -* Enable PROGRESSIVE_SSE_STREAMING feature by default ([0b1cff2](https://github.com/google/adk-python/commit/0b1cff2976d1c04acf3863f76107b05d1cec448f)) -* Enhance BigQuery plugin schema upgrades and error reporting ([bcf38fa](https://github.com/google/adk-python/commit/bcf38fa2bac2f0d1ab74e07e01eb5160bad1d6dc)) -* Enhance BQ plugin with fork safety, auto views, and trace continuity ([80c5a24](https://github.com/google/adk-python/commit/80c5a245557cd75870e72bff0ecfaafbd37fdbc7)) -* Enhance google credentials config to support externally passed access token ([3cf43e3](https://github.com/google/adk-python/commit/3cf43e3842d9987499ea70d6f63d6e1c4d4a07db)) -* Enhance TraceManager async safety, enrich BigQuery plugin logging, and fix serialization ([a4116a6](https://github.com/google/adk-python/commit/a4116a6cbfadc161982af5dabd55a711d79348b7)) -* execute-type param addition in GkeCodeExecutor ([9c45166](https://github.com/google/adk-python/commit/9c451662819a6c7de71be71d12ea715b2fe74135)) -* Expand LiteLlm supported models and add registry tests ([d5332f4](https://github.com/google/adk-python/commit/d5332f44347f44d60360e14205a2342a0c990d66)) -* expose mcps streamable http custom httpx factory parameter ([bfed19c](https://github.com/google/adk-python/commit/bfed19cd78298fc9f896da8ed82a756004e92094)) -* Filter invocation and eval case rubrics by type when running rubric based evaluators ([da2c933](https://github.com/google/adk-python/commit/da2c933b53b5add1c9ee4b6fbfc66c8983325a1e)) -* **fix:** Check all content parts for emptiness in _contains_empty_content ([f35d129](https://github.com/google/adk-python/commit/f35d129b4c59d381e95418725d6eaa072ca7720a)) -* Handle Conflict Errors in BigQuery Agent Analytics Plugin ([372c76b](https://github.com/google/adk-python/commit/372c76b857daa1102e76d755c0758f1515d6f180)) -* Improve asyncio loop handling and test cleanup ([00aba2d](https://github.com/google/adk-python/commit/00aba2d884d24fb5244d1de84f8dba9cbc3c07e8)) -* improve error message when failing to get tools from MCP ([3480b3b](https://github.com/google/adk-python/commit/3480b3b82d89de69f77637d7ad034827434df45a)) -* Include model ID with token usage for live events ([23d330e](https://github.com/google/adk-python/commit/23d330eef1ed23696b56395ef2dee765eec3310f)) -* Introduce a post-hoc, per-turn evaluator for user simulations ([e515e0f](https://github.com/google/adk-python/commit/e515e0f321a259016c5e5f6b388ecf02ae343ba7)) -* Introduce A2A request interceptors in RemoteA2aAgent ([6f772d2](https://github.com/google/adk-python/commit/6f772d2b0841446bc168ccf405b59eb17c1d671a)) -* Introduce new database schema for DatabaseSessionService ([7e6ef71](https://github.com/google/adk-python/commit/7e6ef71eec8be2e804286cc4140d0cbdf84f1206)) -* Introduce User Personas to the ADK evaluation framework ([6a808c6](https://github.com/google/adk-python/commit/6a808c60b38ad7140ddeb222887c6accc63edce9)) -* limit number of user-provided BigQuery job labels and reserve internal prefixes ([8c4ff74](https://github.com/google/adk-python/commit/8c4ff74e7d70cf940f54f6d7735f001495ce75d5)) -* log exception details before re-raising in MCP session execution ([de79bf1](https://github.com/google/adk-python/commit/de79bf12b564a4eefc7e6a2568dbe0f08bb6efeb)) -* make LlmAgent.model optional with a default fallback ([b287215](https://github.com/google/adk-python/commit/b28721508a41bf6bcfef52bbc042fb6193a32dfa)) -* Make OpenAPI tool async ([9290b96](https://github.com/google/adk-python/commit/9290b966267dc02569786f95aab2a3cb78c7004f)) -* Make skill instruction optimizable and can adapt to user tasks ([21be6ad](https://github.com/google/adk-python/commit/21be6adcb86722a585b26f600c45c85e593b4ee0)) -* Mark Vertex calls made from non-gemini models ([7d58e0d](https://github.com/google/adk-python/commit/7d58e0d2f375bc80bdfac9cffea2926fd2344b8a)) -* Mark Vertex calls made from non-gemini models ([871571d](https://github.com/google/adk-python/commit/871571d997dedd9430d421cc366920321abbab5d)) -* Mark Vertex calls made from non-gemini models ([0f5b677](https://github.com/google/adk-python/commit/0f5b677c53ab937f275711c76a9b3df63be93346)) -* migrate `ToolboxToolset` to use `toolbox-adk` and align validation ([7dc6adf](https://github.com/google/adk-python/commit/7dc6adf4e563330a09e4cf28d2b1994c24b007d1)) -* New implementation of A2aAgentExecutor and A2A-ADK conversion ([87ffc55](https://github.com/google/adk-python/commit/87ffc55640dea1185cf67e6f9b78f70b30867bcc)) -* New implementation of RemoteA2aAgent and A2A-ADK conversion ([6770e41](https://github.com/google/adk-python/commit/6770e419f5e200f4c7ad26587e1f769693ef4da0)) -* **otel:** add `gen_ai.tool.definitions` to experimental semconv ([4dd4d5e](https://github.com/google/adk-python/commit/4dd4d5ecb6a1dadbc41389dac208616f6d21bc6e)) -* **otel:** add experimental semantic convention and emit `gen_ai.client.inference.operation.details` event ([19718e9](https://github.com/google/adk-python/commit/19718e9c174af7b1287b627e6b23a609db1ee5e2)) -* **otel:** add extra attributes to span generated with `opentelemetry-instrumentation-google-genai` ([a08bf62](https://github.com/google/adk-python/commit/a08bf62b951ad788665a23a5084e210351e0895e)) -* **otel:** add extra attributes to span generated with `opentelemetry-instrumentation-google-genai` ([e87a843](https://github.com/google/adk-python/commit/e87a8437fb430e0d4c42c73948e3ba1872040a15)) -* **otel:** add minimal `generate_content {model.name}` spans and logs for non-gemini inference and when `opentelemetry-inference-google-genai` dependency is missing ([935c279](https://github.com/google/adk-python/commit/935c279f8281bde99224f03d936b8abe51cbabfc)) -* Pass event id as a metadata when it is converted into a message ([85434e2](https://github.com/google/adk-python/commit/85434e293f7bd1e3711f190f84d5a36804e4462b)) -* pass trace context in MCP tool call's _meta field with Otel propagator ([bcbfeba](https://github.com/google/adk-python/commit/bcbfeba953d46fca731b11542a00103cef374e57)) -* Persist user input content to session in live mode ([a04828d](https://github.com/google/adk-python/commit/a04828dd8a848482acbd48acc7da432d0d2cb0aa)) -* **plugins:** Add flush mechanism to BigQueryAgentAnalyticsPlugin ([9579bea](https://github.com/google/adk-python/commit/9579bea05d946b3d8b4bfec35e510725dd371224)) -* Refine Feature Request Issue Template ([2380afd](https://github.com/google/adk-python/commit/2380afd28769a45da6a2c2847f2ff6a214e4226b)) -* Remove [@experimental](https://github.com/experimental) decorator from AgentEngineSandboxCodeExecutor ([135f763](https://github.com/google/adk-python/commit/135f7633253f6a415302142abc3579b664601d5b)) -* Remove overall_eval_status calculation from _CustomMetricEvaluator and add threshold to custom metric function expected signature ([553e376](https://github.com/google/adk-python/commit/553e376718ceb3d7fb1403231bb720836d71f42c)) -* **runners:** Allow app_name to override app.name when both provided ([86e7664](https://github.com/google/adk-python/commit/86e76640066b4d7b844e3ddd1acccf0da1f2f47e)) -* **runners:** pass GetSessionConfig through Runner to session service ([eff724a](https://github.com/google/adk-python/commit/eff724ac9aef2a203607f772c473703f21c09a72)) -* Set log level when deploying to Agent Engine ([1f546df](https://github.com/google/adk-python/commit/1f546df35a1c18aeb3d2fc7a2ac66edf386027c5)) -* **skill:** Add BashTool ([8a31612](https://github.com/google/adk-python/commit/8a3161202e4bac0bb8e8801b100f4403c1c75646)) -* start and close ClientSession in a single task in McpSessionManager ([cce430d](https://github.com/google/adk-python/commit/cce430da799766686e65f6cae02ba64e916d5c8a)) -* Support all `types.SchemaUnion` as output_schema in LLM Agent ([63f450e](https://github.com/google/adk-python/commit/63f450e0231f237ee1af37f17420d37b15426d48)) -* Support authentication for MCP tool listing ([e3d542a](https://github.com/google/adk-python/commit/e3d542a5ba3d357407f8cd29cfdd722f583c8564)) -* Support authentication for MCP tool listing ([19315fe](https://github.com/google/adk-python/commit/19315fe557039fa8bf446525a4830b1c9f40cba9)) -* Support dynamic config for VertexAiSearchTool ([585ebfd](https://github.com/google/adk-python/commit/585ebfdac7f1b8007b4e4a7e4258ec5de72c78b1)) -* Support ID token exchange in ServiceAccountCredentialExchanger ([7be90db](https://github.com/google/adk-python/commit/7be90db24b41f1830e39ca3d7e15bf4dbfa5a304)), closes [#4458](https://github.com/google/adk-python/issues/4458) -* Support interactions API for calling models ([c6320ca](https://github.com/google/adk-python/commit/c6320caaa5ab47371c474f9709a9ae47b3f52678)) -* Support page token in API Registry ([f1ccc0c](https://github.com/google/adk-python/commit/f1ccc0cfcae045e70636e81472f9f892a82ace9f)) -* Support per-eval case and per-invocation rubrics in rubric-based evaluators ([8afb99a](https://github.com/google/adk-python/commit/8afb99a078a8eae621722225c87a5d447d787a2d)) -* support regex for allowed origins ([2ea6e51](https://github.com/google/adk-python/commit/2ea6e513cff61d3f330274725c66f82fce4ba259)) -* Support run tools in separate thread for live mode ([714c3ad](https://github.com/google/adk-python/commit/714c3ad0477e775fba6696a919a366a293197268)) -* **telemetry:** add new gen_ai.agent.version span attribute ([ffe97ec](https://github.com/google/adk-python/commit/ffe97ec5ad7229c0b4ba573f33eb0edb8bb2877a)) -* **telemetry:** add new gen_ai.agent.version span attribute ([a61ccf3](https://github.com/google/adk-python/commit/a61ccf36a2e19a9cb4151c3b73bbf6618c1af451)) -* **telemetry:** capture tool execution error code in OpenTelemetry spans ([e0a6c6d](https://github.com/google/adk-python/commit/e0a6c6db6f8e2db161f8b86b9f11030f0cec807a)) -* This change restructures the bug report template as per intake process ([324796b](https://github.com/google/adk-python/commit/324796b4fe05bec3379bfef67071a29552ef355a)) -* **tools:** add preserve_property_names option to OpenAPIToolset ([078b516](https://github.com/google/adk-python/commit/078b5163ff47acec69b1c8e105f62eb7b74f5548)) -* **tools:** Implement toolset auth for McpToolset, OpenAPIToolset, and others ([798f65d](https://github.com/google/adk-python/commit/798f65df86b1bbe33d864e30c5b1f9e155e89810)) -* Update adk eval cli to consume custom metrics by adding CustomMetricEvaluator ([ea0934b](https://github.com/google/adk-python/commit/ea0934b9934c1fefd129a1026d6af369f126870e)) -* Update Agent Registry to create AgentCard from info in get agents endpoint ([c33d614](https://github.com/google/adk-python/commit/c33d614004a47d1a74951dd13628fd2300aeb9ef)) -* Update agent simulator by improving prompts and add environment data ([7af1858](https://github.com/google/adk-python/commit/7af1858f46b66fa4471c5ba7943385f2d23d08d3)) -* Update docstring for BigQuery search tool ([52b2f27](https://github.com/google/adk-python/commit/52b2f278b210e4da74e32c5fff60581d6b2e9cea)) -* Update EvalConfig and EvalMetric data models to support custom metrics ([6d2f33a](https://github.com/google/adk-python/commit/6d2f33a59cfba358dd758378290125fc2701c411)) -* Update event_converter used in A2ARemote agent to use a2a_task.status.message only if parts are non-empty ([e4ee9d7](https://github.com/google/adk-python/commit/e4ee9d7c46b57eed8493539d8f539c042bdfae60)) -* Upgrade BigQueryAgentAnalyticsPlugin to v2.0 ([7b2fe14](https://github.com/google/adk-python/commit/7b2fe14dab96440ee25b66dae9e66eadba629a56)) -* Use --memory_service_uri in ADK CLI run command ([a7b5097](https://github.com/google/adk-python/commit/a7b509763c1732f0363e90952bb4c2672572d542)) -* Use json schema for `base_retrieval_tool`, `load_artifacts_tool`, and `load_memory_tool` declaration when feature enabled ([69ad605](https://github.com/google/adk-python/commit/69ad605bc4bbe9a4f018127fd3625169ee70488e)) -* Use json schema for agent tool declaration when feature enabled ([6b241f5](https://github.com/google/adk-python/commit/6b241f5ef2d749cedf9d80c1ee4c60d20146fc35)) -* Use json schema for function tool declaration when feature enabled ([cb3244b](https://github.com/google/adk-python/commit/cb3244bb58904ab508f77069b436f85b442d3299)) -* Use json schema for IntegrationConnectorTool declaration when feature enabled ([2ed6865](https://github.com/google/adk-python/commit/2ed686527ac75ff64128ce7d9b1a3befc2b37c64)) -* Use json schema for RestApiTool declaration when feature enabled ([a5f0d33](https://github.com/google/adk-python/commit/a5f0d333d7f26f2966ed511d5d9def7a1933f0c2)) -* Use new JSON-based schema for newly-created databases ([ba91fea](https://github.com/google/adk-python/commit/ba91fea54136ab60f37c10b899c3648d0b0fa721)) -* Warn when accessing DEFAULT_SKILL_SYSTEM_INSTRUCTION ([35366f4](https://github.com/google/adk-python/commit/35366f4e2a0575090fe12cd85f51e8116a1cd0d3)) -* **web:** Add /health and /version endpoints to ADK web server ([25ec2c6](https://github.com/google/adk-python/commit/25ec2c6b614cf8d185ff6dbdac5697a210be68da)) - - -### Bug Fixes - -* 'NoneType' object is not iterable ([7db3ce9](https://github.com/google/adk-python/commit/7db3ce9613b1c2c97e6ca3cd8115736516dc1556)) -* Add a script to the sample skills agent ([8ad8bc9](https://github.com/google/adk-python/commit/8ad8bc9b69e27f09ec67db14fc92d15c3c78bd53)) -* add back migration_runner in cli_tools_click ([6c0bf85](https://github.com/google/adk-python/commit/6c0bf85042c38c7bafe1c183f1bba8bee1ba3570)) -* Add checks for event content and parts before accessing ([5912835](https://github.com/google/adk-python/commit/5912835c975673c8fc2fb315150f5ec29d685eac)), closes [#3769](https://github.com/google/adk-python/issues/3769) -* Add endpoints to get/list artifact version metadata ([e0b9712](https://github.com/google/adk-python/commit/e0b9712a492bf84ac17679095b333642a79b8ee6)), closes [#3710](https://github.com/google/adk-python/issues/3710) -* Add finish reason mapping and remove custom file URI handling in LiteLLM ([89bed43](https://github.com/google/adk-python/commit/89bed43f5e0c5ad12dd31c716d372145b7e33e78)), closes [#4125](https://github.com/google/adk-python/issues/4125) -* Add google-cloud-geminidataanalytics to dependencies ([a0b2aac](https://github.com/google/adk-python/commit/a0b2aac108ec4353dbd1a6efdf4d706502366ebf)) -* Add google-cloud-geminidataanalytics to dependencies ([3cd3d56](https://github.com/google/adk-python/commit/3cd3d5617696956da328ec02c1e442cfb7e9cc0b)) -* Add MIME type inference and default for file URIs in LiteLLM ([5c4bae7](https://github.com/google/adk-python/commit/5c4bae7ff2085c05b7f002f5fa368e9b48a752b1)), closes [#3787](https://github.com/google/adk-python/issues/3787) -* Add missing space in README.md ([42317f8](https://github.com/google/adk-python/commit/42317f849f2d9dd96db83e73758a56ef3825bcb8)) -* Add OpenAI strict JSON schema enforcement in LiteLLM ([2dbd1f2](https://github.com/google/adk-python/commit/2dbd1f25bdb1d88a6873d824b81b3dd5243332a4)), closes [#4573](https://github.com/google/adk-python/issues/4573) -* Add post-invocation token-threshold compaction with event retention ([a88e864](https://github.com/google/adk-python/commit/a88e8647558a9b9d0bfdf38d2d8de058e3ba0596)), closes [#4146](https://github.com/google/adk-python/issues/4146) -* Add pre-deployment validation for agent module imports ([2ac468e](https://github.com/google/adk-python/commit/2ac468ea7e30ef30c1324ffc86f67dbf32ab7ede)) -* Add push notification config store to agent_to_a2a ([4ca904f](https://github.com/google/adk-python/commit/4ca904f11113c4faa3e17bb4a9662dca1f936e2e)), closes [#4126](https://github.com/google/adk-python/issues/4126) -* Add pypika>=0.50.0 to project.toml since crewai depends on it and the default version does not work with py 3.12+ ([e8f7aa3](https://github.com/google/adk-python/commit/e8f7aa3140d2585ac38ebfe31c5b650383499a20)) -* Add query parameters to /run_live for advanced run configurations ([f90adff](https://github.com/google/adk-python/commit/f90adff8c5f247a20a433d511cc0bddcab83357c)), closes [#4263](https://github.com/google/adk-python/issues/4263) -* Add schema type sanitization to OpenAPI spec parser ([6dce7f8](https://github.com/google/adk-python/commit/6dce7f8a8f28de275b1119fc03219f1468bb883b)), closes [#3704](https://github.com/google/adk-python/issues/3704) [#3108](https://github.com/google/adk-python/issues/3108) -* Add support for injecting a custom google.genai.Client into Gemini models ([48105b4](https://github.com/google/adk-python/commit/48105b49c5ab8e4719a66e7219f731b2cd293b00)), closes [#2560](https://github.com/google/adk-python/issues/2560) -* Add support for injecting a custom google.genai.Client into Gemini models ([c615757](https://github.com/google/adk-python/commit/c615757ba12093ba4a2ba19bee3f498fef91584c)), closes [#2560](https://github.com/google/adk-python/issues/2560) -* Add update_timestamp_tz property to StorageSession ([666cebe](https://github.com/google/adk-python/commit/666cebe3693d2981fd5fea6e9e4c65e56dcd3f2b)), closes [#4334](https://github.com/google/adk-python/issues/4334) -* Add usage field to ModelResponse in LiteLLM tests ([245b2b9](https://github.com/google/adk-python/commit/245b2b9874246b678774572988f53c6b7da7d4e2)) -* Add x-goog-user-project header to http calls in API Registry ([0088b0f](https://github.com/google/adk-python/commit/0088b0f3adb963dded692929c314d94709dcc211)) -* adding back deprecated eval endpoint for web until we migrate ([ae993e8](https://github.com/google/adk-python/commit/ae993e884f44db276a4116ebb7a11a2fb586dbfe)) -* Allow artifact services to accept dictionary representations of types.Part ([b004da5](https://github.com/google/adk-python/commit/b004da50270475adc9e1d7afe4064ca1d10c560a)), closes [#2886](https://github.com/google/adk-python/issues/2886) -* Allow string values for ToolTrajectoryCriterion.match_type ([93d6e4c](https://github.com/google/adk-python/commit/93d6e4c888d5a2181e3c22da049d8be0d6ead70c)), closes [#3711](https://github.com/google/adk-python/issues/3711) -* Avoid false positive "App name mismatch" warnings in Runner ([6388ba3](https://github.com/google/adk-python/commit/6388ba3b2054e60d218eae6ec8abc621ed0a1139)), closes [#3143](https://github.com/google/adk-python/issues/3143) -* avoid local .adk storage in Cloud Run/GKE ([b30c2f4](https://github.com/google/adk-python/commit/b30c2f4e139e0d4410c5f8dd61acee2056ad06ea)), closes [#3907](https://github.com/google/adk-python/issues/3907) -* Built-in agents (names starting with "__") now use in-memory session storage instead of creating .adk folders in the agents directory ([e3bac1a](https://github.com/google/adk-python/commit/e3bac1ab8c724454fb433cc7e78416b61efe33ee)) -* Change error_message column type to TEXT in DatabaseSessionService ([8335f35](https://github.com/google/adk-python/commit/8335f35015c7d4349bc4ac47dedbe99663b78e62)) -* Change MCP read_resource to return the original contents ([ecce7e5](https://github.com/google/adk-python/commit/ecce7e54a688a915a1b9d742c39e4684186729be)) -* Change Mypy workflow trigger to manual dispatch ([d0825d8](https://github.com/google/adk-python/commit/d0825d817e39a9bd2e2fbb7ccd8690cf60593d14)) -* Check `will_continue` for streaming function calls ([2220d88](https://github.com/google/adk-python/commit/2220d885cda875144b52338b5becf6e5546f3f51)) -* Check both `input_stream` parameter name and its annotation to decide whether it's a streaming tool that accept input stream ([d56cb41](https://github.com/google/adk-python/commit/d56cb4142c5040b6e7d13beb09123b8a59341384)) -* **cli:** ignore session_db_kwargs for sqlite session services ([ce07cd8](https://github.com/google/adk-python/commit/ce07cd8144c8498434f68e61ebeb519bf329f778)) -* **cli:** pass log_level to uvicorn in web and api_server commands ([#4144](https://github.com/google/adk-python/issues/4144)) ([38d52b2](https://github.com/google/adk-python/commit/38d52b247600fb45a2beeb041c4698e90c00d705)), closes [#4139](https://github.com/google/adk-python/issues/4139) -* Conditionally preserve function call IDs in LLM requests ([663cb75](https://github.com/google/adk-python/commit/663cb75b3288d8d0649412e1009329502b21cbbc)), closes [#4381](https://github.com/google/adk-python/issues/4381) -* Convert examples for A2A agent card ([458d24e](https://github.com/google/adk-python/commit/458d24e24ebbfab80666bba0108e76267c75796c)) -* Convert unsupported inline artifact MIME types to text in LoadArtifactsTool ([fdc98d5](https://github.com/google/adk-python/commit/fdc98d5c927bfef021e87cf72103892e4c2ac12a)), closes [#4028](https://github.com/google/adk-python/issues/4028) -* Create a new session resumption config if it's None ([d6c964e](https://github.com/google/adk-python/commit/d6c964e05e81c58d7bd78c33af122f5a347a95c7)) -* Database reserved keyword issue ([94d48fc](https://github.com/google/adk-python/commit/94d48fce32a1f07cef967d50e82f2b1975b4abd9)) -* Decode image data from ComputerUse tool response into image blobs ([d7cfd8f](https://github.com/google/adk-python/commit/d7cfd8fe4def2198c113ff1993ef39cd519908a1)) -* **deps:** Increase pydantic lower version to 2.7.0 ([dbd6420](https://github.com/google/adk-python/commit/dbd64207aebea8c5af19830a9a02d4c05d1d9469)) -* disable save_input_blobs_as_artifacts deprecation warning message for users that don't set it ([c34615e](https://github.com/google/adk-python/commit/c34615ecf3c7bbe0f4275f72543774f258c565b4)) -* Do not treat FCs and FRs as invisible when marked as thoughts ([853a3b0](https://github.com/google/adk-python/commit/853a3b0e143ce27516f0de51e0e0df2af6ecf465)) -* **docs:** fix grammar and remove duplicate words in documentation and source ([3c63c2a](https://github.com/google/adk-python/commit/3c63c2ad39048dd3afccc9f1012d6e8c2ba471de)) -* drop Python 3.10 support ([#4878](https://github.com/google/adk-python/issues/4878)) ([4af7cbb](https://github.com/google/adk-python/commit/4af7cbb5c8319208337e18b0a6bc55288b51b0b1)) -* edit copybara and BUILD config for new adk/integrations folder (added with Agent Registry) ([37d52b4](https://github.com/google/adk-python/commit/37d52b4caf6738437e62fe804103efe4bde363a1)) -* Enable pool_pre_ping by default for non-SQLite database engines ([da73e71](https://github.com/google/adk-python/commit/da73e718efa9557ed33e2fb579de68fcbcf4c7f0)), closes [#4211](https://github.com/google/adk-python/issues/4211) -* Ensure consistent ADC quota project override in ADK ([226e873](https://github.com/google/adk-python/commit/226e873b0f0aa983100d9abeaf8ca43675fb373f)) -* Ensure database sessions are always rolled back on errors ([63a8eba](https://github.com/google/adk-python/commit/63a8eba53f2cb07625eb7cd111ff767e8e0030fa)) -* Ensure open api tool service account exchanger uses quota project id for ADC ([7c8bc69](https://github.com/google/adk-python/commit/7c8bc69dd04acc3b8dc5e1d427145e29cd66a848)) -* Escape Click’s Wrapping in bulled lists of `adk web` options ([ac1401b](https://github.com/google/adk-python/commit/ac1401bd44f37f5a69fd5d4e83a26c6a132403c3)) -* EscapieClick’s Wrapping in adk eval help ([#4258](https://github.com/google/adk-python/issues/4258)) ([3bcd8f7](https://github.com/google/adk-python/commit/3bcd8f7f7a0683f838005bc209f7d39dc93f850b)) -* Exclude thought parts when merging agent output ([07bb164](https://github.com/google/adk-python/commit/07bb1647588a781e701257c4c379736537029ea0)) -* Expand add_memory to accept MemoryEntry ([f27a9cf](https://github.com/google/adk-python/commit/f27a9cfb87caecb8d52967c50637ed5ad541cd07)) -* Expand LiteLLM reasoning extraction to include 'reasoning' field ([9468487](https://github.com/google/adk-python/commit/94684874e436c2959cfc90ec346010a6f4fddc49)), closes [#3694](https://github.com/google/adk-python/issues/3694) -* filter non-agent directoris from list_agents() ([3b5937f](https://github.com/google/adk-python/commit/3b5937f022adf9286dc41e01e3618071a23eb992)) -* Filter out thought parts in lite_llm._get_content ([1ace8fc](https://github.com/google/adk-python/commit/1ace8fc6780bc25e2ef4222c73bc2558082b0a00)), closes [#3948](https://github.com/google/adk-python/issues/3948) -* fix agent config path handling in generated deployment script ([8012339](https://github.com/google/adk-python/commit/801233902bbd6c0cca63b6fc8c1b0b2531f3f11e)), closes [#4223](https://github.com/google/adk-python/issues/4223) -* Fix cases where execution_result_delimiters have None type element due to code_execution_result.output is None ([a16e3cc](https://github.com/google/adk-python/commit/a16e3cc67e1cb391228ba78662547672404ae550)) -* Fix double JSON encoding when saving eval set results ([fc4e3d6](https://github.com/google/adk-python/commit/fc4e3d6f607032259e68e91bcb1ad0815a03164e)), closes [#3993](https://github.com/google/adk-python/issues/3993) -* Fix event loop closed bug in McpSessionManager ([4aa4751](https://github.com/google/adk-python/commit/4aa475145f196fb35fe97290dd9f928548bc737f)) -* fix httpx client closure during event pagination ([b725045](https://github.com/google/adk-python/commit/b725045e5a1192bc9fd5190cbd2758ab6ff02590)) -* fix inconsistent method signatures for evaluate_invocations ([0918b64](https://github.com/google/adk-python/commit/0918b647df6f88b95974d486a3161121a6514901)) -* Fix issue with MCP tools throwing an error ([26e77e1](https://github.com/google/adk-python/commit/26e77e16947aed1abcfdd7f526532a708f1f073b)) -* Fix pickling lock errors in McpSessionManager ([4e2d615](https://github.com/google/adk-python/commit/4e2d6159ae3552954aaae295fef3e09118502898)) -* Fix Pydantic Schema Generation Error for ClientSession ([131fbd3](https://github.com/google/adk-python/commit/131fbd39482980572487a30fea13236d2badd543)) -* fix SSRF vulnerability in load_web_page by disabling automatic redirects ([3c51ee7](https://github.com/google/adk-python/commit/3c51ee7f48419b1873a5bb4e61e21c27454bbe41)) -* Fix Type Error by initializing user_content as a Content object ([2addf6b](https://github.com/google/adk-python/commit/2addf6b9dacfe87344aeec0101df98d99c23bdb1)) -* fix typo in PlanReActPlanner instruction ([6d53d80](https://github.com/google/adk-python/commit/6d53d800d5f6dc5d4a3a75300e34d5a9b0f006f5)) -* Handle async driver URLs in migration tool ([4b29d15](https://github.com/google/adk-python/commit/4b29d15b3e5df65f3503daffa6bc7af85159507b)), closes [#4176](https://github.com/google/adk-python/issues/4176) -* Handle file URI conversion for LiteLLM based on provider and model ([43b484f](https://github.com/google/adk-python/commit/43b484ff66f3417f5ffcf37256bf6411b2f8c4a2)), closes [#4038](https://github.com/google/adk-python/issues/4038) -* Handle HTTP/HTTPS URLs for media files in LiteLLM content conversion ([47221cd](https://github.com/google/adk-python/commit/47221cd5c1e778cd4b92ed8d382c639435f5728c)), closes [#4112](https://github.com/google/adk-python/issues/4112) -* Handle length finish reason in LiteLLM responses ([4c6096b](https://github.com/google/adk-python/commit/4c6096baa1b0bed8533397287a5c11a0c4cb9101)), closes [#4482](https://github.com/google/adk-python/issues/4482) -* Handle list values in Gemini schema sanitization ([fd8a9e3](https://github.com/google/adk-python/commit/fd8a9e3962cca4f422beb7316cbe732edf726d51)), closes [#4363](https://github.com/google/adk-python/issues/4363) -* Handle mixed tool and non-tool parts in LiteLLM content conversion ([fdc286a](https://github.com/google/adk-python/commit/fdc286a23c2b1a9fd28a7b641f3959a39431d9b4)), closes [#4091](https://github.com/google/adk-python/issues/4091) -* Handle NOT_FOUND error when fetching Vertex AI sessions ([75231a3](https://github.com/google/adk-python/commit/75231a30f1857d930804769caf88bcc20839dd08)) -* Handle overriding of requirements when deploying to agent engine ([38a30a4](https://github.com/google/adk-python/commit/38a30a44d222fade8616f9d63410b1c2b6f84e1b)) -* Handle SQLite URLs in SqliteSessionService ([b8917bc](https://github.com/google/adk-python/commit/b8917bc80e5a00441044d9e8ebfbce52b032511c)), closes [#4077](https://github.com/google/adk-python/issues/4077) -* handle UnicodeDecodeError when loading skills in ADK ([3fbc27f](https://github.com/google/adk-python/commit/3fbc27fa4ddb58b2b69ee1bea1e3a7b2514bd725)) -* Harden YAML builder tmp save/cleanup ([6f259f0](https://github.com/google/adk-python/commit/6f259f08b3c45ad6050b8a93c9bd85913451ece6)) -* Heal missing tool results before LiteLLM requests ([6b7386b](https://github.com/google/adk-python/commit/6b7386b7620bbc51cda8c1c6d9914549536640e6)), closes [#3971](https://github.com/google/adk-python/issues/3971) -* Honor the modalities parameter in adk api server for live API ([19de45b](https://github.com/google/adk-python/commit/19de45b3250d09b9ec16c45788e7d472b3e588c2)) -* ignore adk-bot administrative actions in stale agent ([3ec7ae3](https://github.com/google/adk-python/commit/3ec7ae3b8d532ed4b60786201a78e980dfc56cf3)) -* Improve BigQuery Agent Analytics plugin reliability and code quality ([ea03487](https://github.com/google/adk-python/commit/ea034877ec15eef1be8f9a4be9fcd95446a3dc21)) -* In SaveFilesAsArtifactsPlugin, write the artifact delta to state then event actions so that the plugin works with ADK Web UI's artifacts panel ([d6f31be](https://github.com/google/adk-python/commit/d6f31be554d9b7ee15fd9c95ae655b2265fb1f32)) -* Include back-ticks around the BQ asset names in the tools examples ([8789ad8](https://github.com/google/adk-python/commit/8789ad8f16dfa250fab607946250a2857a25d5ef)) -* Include list of skills in every message and remove list_skills tool from system instruction ([4285f85](https://github.com/google/adk-python/commit/4285f852d54670390b19302ed38306bccc0a7cee)) -* Initialize self._auth_config inside BaseAuthenticatedTool ([d4da1bb](https://github.com/google/adk-python/commit/d4da1bb7330cdb87c1dcbe0b9023148357a6bd07)) -* installing dependencies for py 3.10 ([9cccab4](https://github.com/google/adk-python/commit/9cccab453706138826f313c47118812133e099c4)) -* Invoke on_tool_error_callback for missing tools in live mode ([e6b601a](https://github.com/google/adk-python/commit/e6b601a2ab71b7e2df0240fd55550dca1eba8397)) -* Keep query params embedded in OpenAPI paths when using httpx ([ffbcc0a](https://github.com/google/adk-python/commit/ffbcc0a626deb24fe38eab402b3d6ace484115df)), closes [#4555](https://github.com/google/adk-python/issues/4555) -* label response as thought if task is immediately returned as working ([4f3b733](https://github.com/google/adk-python/commit/4f3b733074c867e68ca5d38720ccb1f3e0b0d960)) -* Make all parts of a thought event be marked as thought ([f92d4e3](https://github.com/google/adk-python/commit/f92d4e397f37445fe9032a95ce26646a3a69300b)) -* Make credential key generation stable and prevent cross-user credential leaks ([33012e6](https://github.com/google/adk-python/commit/33012e6dda9ef20c7a1dae66a84717de5d782097)) -* Make credential manager to accept tool_context instead of callback_context ([fe82f3c](https://github.com/google/adk-python/commit/fe82f3cde854e49be13d90b4c02d786d82f8a202)) -* Make invocation_context optional in convert_event_to_a2a_message ([8e79a12](https://github.com/google/adk-python/commit/8e79a12d6bcde43cc33247b7ee6cc9e929fa6288)) -* Make OpenAPI /docs path work again ([65cbf4b](https://github.com/google/adk-python/commit/65cbf4b35ce220e1ae9bcea2c230db9605bf173e)), closes [#3173](https://github.com/google/adk-python/issues/3173) -* make the BigQuery analytics plugin work with agents that don't have instructions such as the LoopAgent ([8bed01c](https://github.com/google/adk-python/commit/8bed01cbdc5961c0d219fd6389f492f1a4235de5)) -* map LiteLLM thought parts to reasoning_content ([6c67b6c](https://github.com/google/adk-python/commit/6c67b6c0f414f3ac7937a9b924093732776e6572)), closes [#4069](https://github.com/google/adk-python/issues/4069) -* **mcp:** used logger to log instead of print ([6bc70a6](https://github.com/google/adk-python/commit/6bc70a6bab79b679a4b18ad146b3450fb9014475)) -* Migrate VertexAiMemoryBankService to use the async Vertex AI client ([64a44c2](https://github.com/google/adk-python/commit/64a44c28974de77cf8934f9c3d1bc03691b90e7b)), closes [#4386](https://github.com/google/adk-python/issues/4386) -* Move and enhance the deprecation warning for the plugins argument in "_validate_runner_params" to the beginning of the function ([43270bc](https://github.com/google/adk-python/commit/43270bcb6197526ba5765f83d7e4fb88f213b8d3)) -* nit fixes for API Registry - updating imports / type hints and formatting ([253ac87](https://github.com/google/adk-python/commit/253ac87c79ff4bf438c5ffacbcb0e46d625a367c)) -* Normalize multipart content for LiteLLM's ollama_chat provider ([055dfc7](https://github.com/google/adk-python/commit/055dfc79747aa365db8441908d4994f795e94a68)), closes [#3727](https://github.com/google/adk-python/issues/3727) -* oauth refresh not triggered on token expiry ([69997cd](https://github.com/google/adk-python/commit/69997cd5ef44ee881a974bb36dc100e17ed6de2e)) -* Only filter out audio content when sending history ([712b5a3](https://github.com/google/adk-python/commit/712b5a393d44e7b5ce35fc459da98361bae4bb16)) -* Only prepend "https://" to the MCP server url if it doesn't already have a scheme ([71b3289](https://github.com/google/adk-python/commit/71b32890f5ab279e2bed1fd28c0f4693cba3f45e)) -* Only relay the LiveRequest after tools is invoked ([b53bc55](https://github.com/google/adk-python/commit/b53bc555cceaa11dc53b42c9ca1d650592fb4365)) -* Optimize row-level locking in append_event ([d61846f](https://github.com/google/adk-python/commit/d61846f6c6dd5e357abb0e30eaf61fe27896ae6a)), closes [#4655](https://github.com/google/adk-python/issues/4655) -* otel_to_cloud flag help text points at Cloud Run instead of Agent Engine ([d9e8e9c](https://github.com/google/adk-python/commit/d9e8e9cf32799bfe3209be947a2d05175f47c280)) -* Parallelize tool resolution in LlmAgent.canonical_tools() ([7478bda](https://github.com/google/adk-python/commit/7478bdaa9817b0285b4119e8c739d7520373f719)) -* Pass invocation_id from /run endpoint to Runner.run_async ([d2dba27](https://github.com/google/adk-python/commit/d2dba27134f833e5d929fdf363ada9364cc852f9)), closes [#3290](https://github.com/google/adk-python/issues/3290) -* pass tool context into require_confirmation function in McpTool ([7deffb1](https://github.com/google/adk-python/commit/7deffb16fd652547a8c871826fa1788ec0f99294)) -* Per-session locking and row-level locking in `DatabaseSessionService.append_event` ([f508474](https://github.com/google/adk-python/commit/f50847460f8a3bd063ff8fbb2f0558d86e77d6fd)), closes [#1049](https://github.com/google/adk-python/issues/1049) -* Pin aiosqlite version to 0.21.0 ([f5f4c01](https://github.com/google/adk-python/commit/f5f4c01d1bd2079b686a27d0550fb15daf2c02d2)) -* Preserve thought_signature in function call conversions for interactions API integration ([2010569](https://github.com/google/adk-python/commit/20105690100d9c2f69c061ac08be5e94c50dc39c)) -* Preserve thought_signature in FunctionCall conversions between GenAI and A2A ([f9c104f](https://github.com/google/adk-python/commit/f9c104faf73e2a002bb3092b50fb88f4eed78163)) -* Prevent .env files from overriding existing environment variables ([0827d12](https://github.com/google/adk-python/commit/0827d12ccd74feb24758f64f2884c9493001b4ca)) -* Prevent ContextFilterPlugin from creating orphaned function responses ([e32f017](https://github.com/google/adk-python/commit/e32f017979e26a94b998311cafcde753fd29e44e)), closes [#4027](https://github.com/google/adk-python/issues/4027) -* Prevent retry_on_errors from retrying asyncio.CancelledError ([30d3411](https://github.com/google/adk-python/commit/30d3411d603f12ca5bcdd2d71773d087f3191dba)), closes [#4009](https://github.com/google/adk-python/issues/4009) -* Prevent splitting of SSE events with artifactDelta for function resume requests ([6a929af](https://github.com/google/adk-python/commit/6a929af718fa77199d1eecc62b16c54beb1c8d84)), closes [#4487](https://github.com/google/adk-python/issues/4487) -* Prevent stale bot from flagging internal maintainer discussions ([f51b9b7](https://github.com/google/adk-python/commit/f51b9b70b20369e7862c7c8a7527844bf613dea5)) -* Prevent stopping event processing on events with None content ([ed2c3eb](https://github.com/google/adk-python/commit/ed2c3ebde9cafbb5e2bf375f44db1e77cee9fb24)) -* prompt token may be None in streaming mode ([32ee07d](https://github.com/google/adk-python/commit/32ee07df01f10dbee0e98ca9d412440a7fe9163d)) -* Propagate file names during A2A to/from Genai Part conversion ([f324fa2](https://github.com/google/adk-python/commit/f324fa2d62442301ebb2e7974eb97ea870471410)) -* propagate grounding and citation metadata in streaming responses ([e6da417](https://github.com/google/adk-python/commit/e6da4172924ecc36ffc2535199c450a2a51c7bcc)) -* Propagate RunConfig custom metadata to all events ([e3db2d0](https://github.com/google/adk-python/commit/e3db2d0d8301748c63bad826f24692448dbd1c2c)), closes [#3953](https://github.com/google/adk-python/issues/3953) -* Propagate thought from A2A TextPart metadata to GenAI Part ([e59929e](https://github.com/google/adk-python/commit/e59929e11a56aaee7bb0c45cd4c9d9fef689548c)) -* race condition in table creation for `DatabaseSessionService` ([fbe9ecc](https://github.com/google/adk-python/commit/fbe9eccd05e628daa67059ba2e6a0d03966b240d)) -* Re-export DEFAULT_SKILL_SYSTEM_INSTRUCTION to skills and skill/prompt.py to avoid breaking current users ([de4dee8](https://github.com/google/adk-python/commit/de4dee899cd777a01ba15906f8496a72e717ea98)) -* Recognize function responses as non-empty parts in LiteLLM ([d0102ec](https://github.com/google/adk-python/commit/d0102ecea331e062190dbb7578a4ef7f4044306e)), closes [#4249](https://github.com/google/adk-python/issues/4249) -* recursively extract input/output schema for AgentTool ([bf2b56d](https://github.com/google/adk-python/commit/bf2b56de6d0052e40b6d871b2d22c56e9225e145)) -* Redact sensitive information from URIs in logs ([5257869](https://github.com/google/adk-python/commit/5257869d91a77ebd1381538a85e7fdc3a600da90)) -* Redirect LiteLLM logs from stderr to stdout ([db711cd](https://github.com/google/adk-python/commit/db711cd789cfcdd29e963188b15ccca13061cd5a)), closes [#3824](https://github.com/google/adk-python/issues/3824) -* Refactor context filtering to better handle multi-turn invocations ([9b112e2](https://github.com/google/adk-python/commit/9b112e2d13741a2fa68c274da38353bf7134b5d1)), closes [#4296](https://github.com/google/adk-python/issues/4296) -* Refactor LiteLLM response schema formatting for different models ([894d8c6](https://github.com/google/adk-python/commit/894d8c6c2652492324c428e8dae68a8646b17485)), closes [#3713](https://github.com/google/adk-python/issues/3713) [#3890](https://github.com/google/adk-python/issues/3890) -* Refactor LiteLLM streaming response parsing for compatibility with LiteLLM 1.81+ ([e8019b1](https://github.com/google/adk-python/commit/e8019b1b1b0b43dcc5fa23075942b31db502ffdd)), closes [#4225](https://github.com/google/adk-python/issues/4225) -* Refine Ollama content flattening and provider checks ([c6f389d](https://github.com/google/adk-python/commit/c6f389d4bc4d2b91795003a3bd87ed1f1b854493)), closes [#3928](https://github.com/google/adk-python/issues/3928) -* rehydration of EventActions in StorageEvent.to_event ([838530e](https://github.com/google/adk-python/commit/838530ebe053e5193d4329c5a203ca3d096ff7be)), closes [#4047](https://github.com/google/adk-python/issues/4047) -* Reload the stale session in database_session_service when the update_time of storage is later than the current in memory session object ([1063fa5](https://github.com/google/adk-python/commit/1063fa532cad59d8e9f7421ce2f523724d49d541)) -* Remove custom metadata from A2A response events ([81eaeb5](https://github.com/google/adk-python/commit/81eaeb5eba6d40cde0cf6147d96921ed1bf7bb31)) -* remove duplicate session GET when using API server, unbreak auto_session_create when using API server ([445dc18](https://github.com/google/adk-python/commit/445dc189e915ce5198e822ad7fadd6bb0880a95e)) -* Remove experimental decorators from user persona data models ([eccdf6d](https://github.com/google/adk-python/commit/eccdf6d01e70c37a1e5aa47c40d74469580365d2)) -* Remove fallback to cached exchanged credential in _load_existing_credential ([1ae0e16](https://github.com/google/adk-python/commit/1ae0e16b2c1a3139b9c2b1c4a3e725833a6240be)), closes [#3772](https://github.com/google/adk-python/issues/3772) -* remove print debugging artifact ([0d38a36](https://github.com/google/adk-python/commit/0d38a3683f13bc12dc5d181164b6cd5d72fc260c)) -* Replace the global DEFAULT_USER_PERSONA_REGISTRY with a function call to get_default_persona_registry ([2703613](https://github.com/google/adk-python/commit/2703613572a38bf4f9e25569be2ee678dc91b5b5)) -* Resolve project and credentials before creating Spanner client ([99f893a](https://github.com/google/adk-python/commit/99f893ae282a04c67cce5f80e87d3bfadd3943e6)) -* Resolving MutualTLSChannelError 'OpenSSL' module error on by adding pyopenssl dependency in pyproject.toml ([125bc85](https://github.com/google/adk-python/commit/125bc85ac5e1400bc38f7c681f76fa82626c9911)) -* **runner:** Yield buffered function_call/function_response events during live streaming ([7b25b8f](https://github.com/google/adk-python/commit/7b25b8fb1daf54d7694bf405d545d46d2c012d2b)) -* **sessions:** use async iteration for VertexAiSessionService.list_sessions pagination ([758d337](https://github.com/google/adk-python/commit/758d337c76d877e3174c35f06551cc9beb1def06)) -* Set empty JSON string as placeholder for redacted content in traces ([5880109](https://github.com/google/adk-python/commit/5880109ab13456d5ec511e991de9271fbbec41d8)), closes [#4094](https://github.com/google/adk-python/issues/4094) -* Set LITELLM_MODE to PRODUCTION before importing LiteLLM ([215c2f5](https://github.com/google/adk-python/commit/215c2f506e21a3d8c39551b80f6356943ecae320)) -* Set the default response modality to AUDIO only ([a4b914b](https://github.com/google/adk-python/commit/a4b914b09fbab76834050a8c8f0eb335b12cfc34)) -* **simulation:** handle NoneType generated_content ([9d15517](https://github.com/google/adk-python/commit/9d155177b956f690d4c99560f582e3e90e111f71)) -* **skill:** coloate default skill SI with skilltoolset ([fc1f1db](https://github.com/google/adk-python/commit/fc1f1db00562a79cd6c742cfd00f6267295c29a8)) -* Split SSE events with both content and artifactDelta in ADK Web Server ([084fcfa](https://github.com/google/adk-python/commit/084fcfaba52c4a6075397221dbe7aba2f2acd2d7)), closes [#4036](https://github.com/google/adk-python/issues/4036) -* Store and retrieve EventCompaction via custom_metadata in Vertex AISessionService ([2e434ca](https://github.com/google/adk-python/commit/2e434ca7be765d45426fde9d52b131921bd9fa30)), closes [#3465](https://github.com/google/adk-python/issues/3465) -* Stream errors as simple JSON objects in ADK web server SSE ([798d005](https://github.com/google/adk-python/commit/798d0053c832e7ed52e2e104f8a14f789ba8b17f)), closes [#4291](https://github.com/google/adk-python/issues/4291) -* Strip timezone for PostgreSQL timestamps in DatabaseSessionService ([19b6076](https://github.com/google/adk-python/commit/19b607684f15ce2b6ffd60382211ba5600705743)) -* Support before_tool_callback and after_tool_callback in Live mode ([c36a708](https://github.com/google/adk-python/commit/c36a708058163ade061cd3d2f9957231a505a62d)), closes [#4704](https://github.com/google/adk-python/issues/4704) -* Support escaped curly braces in instruction templates ([079f7a3](https://github.com/google/adk-python/commit/079f7a38be5c2dcae604a93a8dabc2fd60af79db)), closes [#3527](https://github.com/google/adk-python/issues/3527) -* Support escaped curly braces in instruction templates ([7c7d25a](https://github.com/google/adk-python/commit/7c7d25a4a6e4389e23037e70b8efdcd5341f44ea)), closes [#3527](https://github.com/google/adk-python/issues/3527) -* Support Generator and Async Generator tool declaration in JSON schema ([19555e7](https://github.com/google/adk-python/commit/19555e7dce6d60c3b960ca0bc2f928c138ac3cc0)) -* Support Generator and AsyncGenerator tool declaration ([7c28297](https://github.com/google/adk-python/commit/7c282973ea193841fee79f90b8a91c5e02627ccc)) -* temp-scoped state now visible to subsequent agents in same invocation ([2780ae2](https://github.com/google/adk-python/commit/2780ae2892adfbebc7580c843d2eaad29f86c335)) -* **tools:** Handle JSON Schema boolean schemas in Gemini schema conversion ([3256a67](https://github.com/google/adk-python/commit/3256a679da3e0fb6f18b26057e87f5284680cb58)) -* typo in A2A EXPERIMENTAL warning ([eb55eb7](https://github.com/google/adk-python/commit/eb55eb7e7f0fa647d762205225c333dcd8a08dd0)) -* Update agent_engine_sandbox_code_executor in ADK ([dff4c44](https://github.com/google/adk-python/commit/dff4c4404051b711c8be437ba0ae26ca2763df7d)) -* Update agent_engine_sandbox_code_executor in ADK ([ee8d956](https://github.com/google/adk-python/commit/ee8d956413473d1bbbb025a470ad882c1487d8b8)) -* Update agent_engine_sandbox_code_executor in ADK ([dab80e4](https://github.com/google/adk-python/commit/dab80e4a8f3c5476f731335724bff5df3e6f3650)) -* update Api Registry Agent prompt to be more specific and give it the gcloud project id ([78c96e9](https://github.com/google/adk-python/commit/78c96e99ff82962b9d6b5ab6a0ff25168e55e372)) -* update Bigtable query tools to async functions ([72f3e7e](https://github.com/google/adk-python/commit/72f3e7e1e00d93c632883027bf6d31a9095cd6c2)) -* Update dependency versions in pyproject.toml ([7955177](https://github.com/google/adk-python/commit/7955177fb28b8e5dc19aae8be94015a7b5d9882a)) -* Update empty event check to include executable code and execution results ([688f48f](https://github.com/google/adk-python/commit/688f48fffb9df6ef18a692cd2ccaa7628f4c82a7)), closes [#3859](https://github.com/google/adk-python/issues/3859) [#3921](https://github.com/google/adk-python/issues/3921) -* Update expected UsageMetadataChunk in LiteLLM tests ([dd0851a](https://github.com/google/adk-python/commit/dd0851ac74d358bc030def5adf242d875ab18265)), closes [#4680](https://github.com/google/adk-python/issues/4680) -* Update OpenTelemetry dependency versions ([706a6dd](https://github.com/google/adk-python/commit/706a6dda8144da147bd9fa42ef85bbfa58fec5d3)), closes [#4229](https://github.com/google/adk-python/issues/4229) -* Update sample skills agent to use weather-skill instead of weather_skill ([8f54281](https://github.com/google/adk-python/commit/8f5428150d18ed732b66379c0acb806a9121c3cb)) -* update Spanner query tools to async functions ([1dbcecc](https://github.com/google/adk-python/commit/1dbceccf36c28d693b0982b531a99877a3e75169)) -* Update SQLite database URL for async connection ([60e314a](https://github.com/google/adk-python/commit/60e314a78f7a5d9e41c26d5c0b1128da7f679f43)) -* Update the code to work with either 1 event or more than 1 events ([4f54660](https://github.com/google/adk-python/commit/4f54660d6de54ddde0fec6e09fdd68890ce657ca)) -* update toolbox server and SDK package versions ([2e370ea](https://github.com/google/adk-python/commit/2e370ea688033f0663501171d0babfb0d74de4b2)) -* Upgrade GitHub Actions for Node 24 compatibility ([1add41e](https://github.com/google/adk-python/commit/1add41e1609d8d31913d4f73fa97be044fcef2e0)) -* Upgrade GitHub Actions to latest versions ([fa717ad](https://github.com/google/adk-python/commit/fa717ad8f09a819240ca4a7b98f44c704d65e71e)) -* Use canonical tools to find streaming tools and use tool.name to register them ([ec6abf4](https://github.com/google/adk-python/commit/ec6abf401019c39e8e1a8d1b2c7d5cf5e8c7ac56)) -* use correct msg_out/msg_err keys for Agent Engine sandbox output ([b1e33a9](https://github.com/google/adk-python/commit/b1e33a90b4ba716d717e0488b84892b8a7f42aac)) -* Use json.dumps for error messages in SSE events ([6ad18cc](https://github.com/google/adk-python/commit/6ad18cc2fc3a3315a0fc240cb51b3283b53116b4)) -* use mode='json' in model_dump to serialize bytes correctly when using telemetry ([96c5db5](https://github.com/google/adk-python/commit/96c5db5a07f7f851751ccd68f176dad1634885cb)), closes [#4043](https://github.com/google/adk-python/issues/4043) -* Use the agent name as the author of the audio event ([ab62b1b](https://github.com/google/adk-python/commit/ab62b1bffd7ad2df5809d430ad1823872b8bd67a)) -* Use the correct path for config-based agents when deploying to AgentEngine ([83d7bb6](https://github.com/google/adk-python/commit/83d7bb6ef0d952ad04c5d9a61aaf202672c7e17d)) -* Validate app name in `adk create` command ([742c926](https://github.com/google/adk-python/commit/742c9265a260a9c598a1f65e0996d926b4b9c022)), closes [#3977](https://github.com/google/adk-python/issues/3977) -* Validate session before streaming instead of eagerly advancing the runner generator ([ebbc114](https://github.com/google/adk-python/commit/ebbc1147863956e85931f8d46abb0632e3d1cf67)) -* **web:** allow session resume without new message ([30b2ed3](https://github.com/google/adk-python/commit/30b2ed3ef8ee6d3633743c0db00533683d3342d8)) - - -### Code Refactoring - -* Extract helper function for llm request building and response processing ([753084f](https://github.com/google/adk-python/commit/753084fd46c9637488f33b0a05b4d270f6e03a39)) -* Extract reusable function for building agent transfer instructions ([e1e0d63](https://github.com/google/adk-python/commit/e1e0d6361675e7b9a2c9b2523e3a72e2e5e7ce05)) -* extract reusable functions from hitl and auth preprocessor ([c59afc2](https://github.com/google/adk-python/commit/c59afc21cbed27d1328872cdc2b0e182ab2ca6c8)) -* Extract reusable private methods ([976a238](https://github.com/google/adk-python/commit/976a238544330528b4f9f4bea6c4e75ec13b33e1)) -* Extract reusable private methods ([42eeaef](https://github.com/google/adk-python/commit/42eeaef2b34c860f126c79c552435458614255ad)) -* Extract reusable private methods ([706f9fe](https://github.com/google/adk-python/commit/706f9fe74db0197e19790ca542d372ce46d0ae87)) -* Import migration_runner lazily within the migrate command ([905604f](https://github.com/google/adk-python/commit/905604faac82aca8ae0935eebea288f82985e9c5)) -* Rename base classes and TypeVars in optimization data types ([9154ef5](https://github.com/google/adk-python/commit/9154ef59d29eb37538914e9967c4392cc2a24237)) -* Replace check of instance for LlmAgent with hasAttribute check ([7110336](https://github.com/google/adk-python/commit/7110336788662abb8c9bbbb0a53a50cc09130d5e)) -* use McpTool instead of MCPTool to resolve deprecation warnings ([175d638](https://github.com/google/adk-python/commit/175d6381c5e97ad865485427c6337324b55bb367)) -* use McpTool instead of MCPTool to resolve deprecation warnings ([af1c318](https://github.com/google/adk-python/commit/af1c3187428c2cb0cc1ce99cb652ce7d76084c6c)) - - -### Documentation - -* add `thinking_config` in `generate_content_config` in example agent ([c6b1c74](https://github.com/google/adk-python/commit/c6b1c74321faf62cc52d2518eb9ea0dcef050cde)) -* Add PostgreSQL session storage sample and documentation ([657acfa](https://github.com/google/adk-python/commit/657acfadbbb6f81fd489aec11061715adce7c07f)) -* **adk:** fix run_async example and correct ticketId payload key ([4111f85](https://github.com/google/adk-python/commit/4111f85b61b0aaa9e8ddcf9cd77d68607a33e2ba)) -* Fix ADK release analyzer agent for large releases ([83c24d2](https://github.com/google/adk-python/commit/83c24d2e7459c7edcebe66ceb1c840b0956d2b08)) -* Fix typos, broken links, and grammar across documentation ([322dd18](https://github.com/google/adk-python/commit/322dd1827a593e0487fbecc177fb64b728564a88)) -* Fix various typos ([5d94146](https://github.com/google/adk-python/commit/5d941460b607cf80af12a8226af7bfcd2ca3a3b1)) -* fixing a typo ([6ee5126](https://github.com/google/adk-python/commit/6ee5126d1c03cb2cb54929e09d539cfb809d26f7)) -* fixing multiple typos ([91ec80c](https://github.com/google/adk-python/commit/91ec80c606b812a6e92e62056e3ee546db1414ff)) -* fixing typo in multiple files ([80ff067](https://github.com/google/adk-python/commit/80ff067c6b2782e2dc4a19aef91668c4e7fd5c6d)) -* Move mcp session feature out of breaking changes ([316463b](https://github.com/google/adk-python/commit/316463be868919cbf365527dcf23c816f1a9337a)) -* Refactor ADK release analyzer with workflow agents ([8e7cc16](https://github.com/google/adk-python/commit/8e7cc16f1248174e247780f20785401ecf525305)) -* Switches to gemini 2.5 flash for two samples ([645bd0e](https://github.com/google/adk-python/commit/645bd0ed10bf75f853367fbc2dbcb906964ded01)) -* Update adk docs update workflow to invoke the updater agent once per suggestion ([b23deeb](https://github.com/google/adk-python/commit/b23deeb9abffbcdaf64e518ad62d70070bbc7c0a)) -* Update ADK release analyzer to use Gemini 3 Pro with retry and improve file filtering ([2155a35](https://github.com/google/adk-python/commit/2155a35c5156037a9a505ed76b6f0ccbe5904489)) -* update data agent README to match the behavior ([7edfb27](https://github.com/google/adk-python/commit/7edfb2701c8d7b5227090701dec73f8db8282b62)) -* Update the migration guide for adding a new database session schema ([d0aef8a](https://github.com/google/adk-python/commit/d0aef8a4fadc1c435ec75afecebd84f9ab0ffd7a)) -* Update to gemini-2.5-flash for api registry and mcp sample agents ([910f654](https://github.com/google/adk-python/commit/910f65473f7604c2b6cb3052d71ff0c3c11a0aaa)) +Introduces two major capabilities: +* Workflow runtime: graph-based execution engine for composing + deterministic execution flows for agentic apps, with support for + routing, fan-out/fan-in, loops, retry, state management, dynamic + nodes, human-in-the-loop, and nested workflows +* Task API: structured agent-to-agent delegation with multi-turn + task mode, single-turn controlled output, mixed delegation + patterns, human-in-the-loop, and task agents as workflow nodes