From 7fc913cec4d5043bc4cec1b2e83123752431fd3c Mon Sep 17 00:00:00 2001 From: "Wei (Jack) Sun" Date: Thu, 9 Apr 2026 13:13:15 -0700 Subject: [PATCH 1/2] chore(release/v2-candidate): release 2.0.0-alpha.3 --- .github/.release-please-manifest-v2.json | 2 +- CHANGELOG-v2.md | 325 +++++++++++++++++++++++ 2 files changed, 326 insertions(+), 1 deletion(-) diff --git a/.github/.release-please-manifest-v2.json b/.github/.release-please-manifest-v2.json index af4b15c5f4..924b35241b 100644 --- a/.github/.release-please-manifest-v2.json +++ b/.github/.release-please-manifest-v2.json @@ -1,3 +1,3 @@ { - ".": "2.0.0-alpha.2" + ".": "2.0.0-alpha.3" } diff --git a/CHANGELOG-v2.md b/CHANGELOG-v2.md index fd8796b82b..dcf09873cc 100644 --- a/CHANGELOG-v2.md +++ b/CHANGELOG-v2.md @@ -1,5 +1,330 @@ # Changelog +## [2.0.0-alpha.3](https://github.com/google/adk-python/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2026-04-09) + + +### Features + +* **a2a:** add lifespan parameter to to_a2a() ([a07d4ec](https://github.com/google/adk-python/commit/a07d4ec0233534c66c231a2392761214d9147878)), closes [#4701](https://github.com/google/adk-python/issues/4701) +* Add /apps/{app_name}/app-info endpoint to ADK CLI web server ([32b84c3](https://github.com/google/adk-python/commit/32b84c32f4f06616b1b2b6b6d802b6b4c94eee64)) +* Add a new extension for the new version of ADK-A2A integration ([0e3540f](https://github.com/google/adk-python/commit/0e3540fd978b0fcb6561cb217e3de31b2740e011)) +* add adk test CLI command and agent test runner for automated agent validation ([69d003b](https://github.com/google/adk-python/commit/69d003bb0d08e36e6092a50fa9925a6c70338ab7)) +* add ADK trigger endpoints to ADK Web Server ([78b0769](https://github.com/google/adk-python/commit/78b0769268326c11b2ee22aece34630cbf9a3778)) +* add agent callback demonstration sample with tool and model interception logic ([baf72cc](https://github.com/google/adk-python/commit/baf72ccd8c84596ff128bbda194535792673a9de)) +* add App.root_node support and refactor Runner init ([312ad76](https://github.com/google/adk-python/commit/312ad76876700ddd65e595d0270910f151bd176a)) +* Add auth scheme/credential support to MCP toolsets in Agent Registry ([953217b](https://github.com/google/adk-python/commit/953217b7c3cad2f90cfbacd5f522e18a0c3d8dda)) +* Add blacklist for shell metacharacters in BashTool ([df24de7](https://github.com/google/adk-python/commit/df24de7b50217a2c97d94e429dde1346c7ce387f)) +* add configurable resource limits for subprocesses in BashTool ([f9c5306](https://github.com/google/adk-python/commit/f9c5306cdbea56cbd130ca5b68617328b5de81a8)) +* Add configurable view_prefix to BigQueryLoggerConfig ([aba919e](https://github.com/google/adk-python/commit/aba919e2ca17950bcfac0bb943b4491ebbe75916)) +* Add custom session id functionality to vertex ai session service ([f2af1c4](https://github.com/google/adk-python/commit/f2af1c4ddb5dd728c8ad98776ef73b4883fab7d4)) +* Add database_role property to SpannerToolSettings and use it in execute_sql to support fine grained access controls ([c6cd81e](https://github.com/google/adk-python/commit/c6cd81e0ee7510535283c0ad0278c5beab301518)) +* Add Description column to SKILL.md and update terminology ([3ee4f5d](https://github.com/google/adk-python/commit/3ee4f5dda446d098d4d577d57d1c518e645ca227)) +* Add Easy GCP support to ADK CLI ([f6df2f2](https://github.com/google/adk-python/commit/f6df2f2d0af80fc9f8657db1846503c94d3aeb75)) +* Add index to events table and update dependencies ([a9ef695](https://github.com/google/adk-python/commit/a9ef6956c240b522be9049406e36297cbbd08934)), closes [#4827](https://github.com/google/adk-python/issues/4827) +* Add model validator to derive run IDs from paths and update node name property to strip run ID suffixes ([3533aa3](https://github.com/google/adk-python/commit/3533aa382d39e61c7e94d058eb77fe61b4a966fd)) +* Add MultiTurn Task success metric ([e46ee1e](https://github.com/google/adk-python/commit/e46ee1e6811a5a9c3858c5ff5c479ebe2ed3f108)) +* Add MultiTurn Task trajectory and tool trajectory metrics ([98f48a2](https://github.com/google/adk-python/commit/98f48a2aa66a843094bd6fec21381562f1005f40)) +* add new workflow sample test cases for output, input reruns, routing, and state management ([37a23ff](https://github.com/google/adk-python/commit/37a23ffa256baf10df74d087dd9455cce65ceaa6)) +* Add regional endpoint support to `SecretManagerClient` ([7a4114a](https://github.com/google/adk-python/commit/7a4114a928c48f41dda887d2c7977f13aeb79679)) +* add REST API endpoints for managing, running, and rebuilding agent tests with corresponding unit tests ([c168065](https://github.com/google/adk-python/commit/c168065b06b4bde7b9c7470e513d08c965d54400)) +* add run_id support to node execution and update parallel tool call naming and agent structure ([f602a7a](https://github.com/google/adk-python/commit/f602a7ac84f94a4d3e46adbffdd83181cb172062)) +* add set_model_response action to support structured tool outputs and agent termination ([8021312](https://github.com/google/adk-python/commit/8021312bc166e51b029471e71632dfbe0e2b884b)) +* Add slack integration to ADK ([e374394](https://github.com/google/adk-python/commit/e37439421dece957ba7edd48185e6bcc8644fb61)) +* Add Spanner Admin Toolset ([4c9475d](https://github.com/google/adk-python/commit/4c9475dbe0e4312cfc07ce33c329e73345ef906f)) +* Add SSE streaming support to conformance tests ([d3192bd](https://github.com/google/adk-python/commit/d3192bd99eb0dc548bb09a94ff101928b25db16a)) +* add sub-agents sample demonstrating hierarchical agent delegation ([6212201](https://github.com/google/adk-python/commit/62122013e44b6bfcdf7dcd15450e22186afee6f3)) +* add support for agent transfers, CLI argument handling, and set_model_response filtering in test runner ([d66d0f7](https://github.com/google/adk-python/commit/d66d0f7d0ad497b806d07c4f2fa839d77fec36be)) +* Add support for Anthropic's thinking_blocks format in LiteLLM integration ([6ab85e1](https://github.com/google/adk-python/commit/6ab85e1eeee55af01e58723e01a0be0e1872b952)), closes [#4801](https://github.com/google/adk-python/issues/4801) +* Add support for model endpoints in Agent Registry ([0d62a20](https://github.com/google/adk-python/commit/0d62a204fe333859a9d8a6ed56f0ffa491244904)) +* Add support for timeout to UnsafeLocalCodeExecutor ([226c3a6](https://github.com/google/adk-python/commit/226c3a66c66ea1e4a976eee5d1a19c489a9a461d)) +* Add support for toolsets to additional_tools field of SkillToolset ([a9abd8e](https://github.com/google/adk-python/commit/a9abd8ef7065216c93aaecd1d18d95575cb69c3c)) +* add tool confirmation sample agent with test cases ([308d01f](https://github.com/google/adk-python/commit/308d01fa57de7205b99783575004ff34a88b3006)) +* Added tracking headers for ADK CLI command to Agent Engine ([b52fddd](https://github.com/google/adk-python/commit/b52fddddddcd27d7b40453ddf4714f950f3ede13)) +* **agents:** Add explicit ReAct loop nodes to replace _SingleLlmAgent ([9445361](https://github.com/google/adk-python/commit/944536191ea16b050ba0a38ad5783108dd0b79bc)) +* **agents:** Allow toggling V1/V2 LlmAgent via feature flag ([644a26f](https://github.com/google/adk-python/commit/644a26fe694083714362173fce65ccc92aad111b)) +* **agents:** Deduplicate output events in react loop ([c0cee3b](https://github.com/google/adk-python/commit/c0cee3b99d1d13f1fa9c7e14ca90bb89d5f1f026)) +* **auth:** Add pluggable support for auth integrations using AuthProviderRegistry within CredentialManager ([00c0bb9](https://github.com/google/adk-python/commit/00c0bb93a4af2df17c3e31134b27f0b020b2a76c)) +* **auth:** Add public api to register custom auth provider with credential manager ([8569547](https://github.com/google/adk-python/commit/85695478e106b2a59e92d7b1cd8095d14676e295)) +* **auth:** Integrate GCP IAM Connectors (Noop implementation) ([596afe7](https://github.com/google/adk-python/commit/596afe78e0dd691517bcf4ac3d76f2e71681075a)) +* **auth:** Pass consent_nonce to Agent Frontend ([a611c32](https://github.com/google/adk-python/commit/a611c32db599370ec8b4e7322ba744e8f584d050)) +* **auth:** Support additional HTTP headers in MCP tools ([98d5ead](https://github.com/google/adk-python/commit/98d5eadedb367c5f2080813eca4c780c65815644)) +* **bigquery:** Add ADK 1P Skills for ADK BQ Toolset ([b982f70](https://github.com/google/adk-python/commit/b982f70cb7977025a70ce933792b80000e560076)) +* **bigquery:** Migrate 1P BQ Toolset ([5c4e660](https://github.com/google/adk-python/commit/5c4e660e5f64bb65f2d18dc6c27b9fda56baade8)) +* **cli:** Add default route label on edges and update agent icon ([b9abbbe](https://github.com/google/adk-python/commit/b9abbbeb5632a9a6659efacb303720c349231291)) +* **cli:** Add distinct icons for each node type in graph ([d250b0f](https://github.com/google/adk-python/commit/d250b0f87e0efc9195f15c394310e05e7087151f)) +* **cli:** add END node to graph ([1826da1](https://github.com/google/adk-python/commit/1826da110a00374e7e6790d244ae3a7c1d151de0)) +* **cli:** Add query mode to adk run and enhance flags ([010658a](https://github.com/google/adk-python/commit/010658aa154b408ef7e2485e5df093f301ccce95)) +* **cli:** Add tool confirmation support and fix auto-resume logic ([dea1c0a](https://github.com/google/adk-python/commit/dea1c0a9c323c73f8f1da8ddf9826d42288899b7)) +* **cli:** Add workflow icon to graph visualization ([4413109](https://github.com/google/adk-python/commit/4413109a1b6272b47db8aa609959a57047842aa1)) +* **cli:** display NO DEFAULT warning on conditional nodes lacking default routes ([a8730e2](https://github.com/google/adk-python/commit/a8730e2359c02f040973348f26c0eab744381024)) +* **cli:** display tool nodes with dashed outlines in workflow visualization ([4be07d9](https://github.com/google/adk-python/commit/4be07d9595bca8109b51dd2e453bb2dc3239f7f7)) +* **cli:** display tool nodes with dashed outlines in workflow visualization ([4cedd09](https://github.com/google/adk-python/commit/4cedd0952a7d18fcb7d7a83371db0b355f89a1bf)) +* **cli:** expose dark mode flag in graph visualization endpoint ([abf910e](https://github.com/google/adk-python/commit/abf910ef2e6a0f550a6f0ce4bc33c66d872115ef)) +* **cli:** Rename --ephemeral flag to --in_memory ([2bf292b](https://github.com/google/adk-python/commit/2bf292b91014d74481bf36810e4628fd2d8b4021)) +* **cli:** Render conditional nodes as diamonds in graph ([0552f28](https://github.com/google/adk-python/commit/0552f2847df7694f732929cc3c7319fab83784c6)) +* **cli:** Show END node only for workflow graphs ([a9707f4](https://github.com/google/adk-python/commit/a9707f4ea5f2a67ffd0a5213dafed3b12bacbf65)) +* **cli:** Support BaseNode as root in adk web and adk run ([1c2a81b](https://github.com/google/adk-python/commit/1c2a81bb675f98ba06ffcd5423f2c5aedce94bee)) +* **cli:** Support test rebuilding with multi-turn inputs ([04ad5d5](https://github.com/google/adk-python/commit/04ad5d50bf5fb414bde7de85756055fb7fea4bcf)) +* **cli:** Use monochrome icons for cleaner graph rendering ([345b3fc](https://github.com/google/adk-python/commit/345b3fceafa15b993ee5ab393e89ae227321f49b)) +* enable suppressing A2A experimental warnings ([e30b80c](https://github.com/google/adk-python/commit/e30b80c06721b682b09775c4517858aa95898474)) +* Enhance AgentEngineSandboxCodeExecutor sample to automatically provision an Agent Engine if neither agent_engine_resource_name nor sandbox_resource_name is provided ([e6bb836](https://github.com/google/adk-python/commit/e6bb8367da3cf292c655ce55c1c017a92ef248e4)) +* **environment:** Add EnvironmentToolset for file I/O and command execution ([a33c18d](https://github.com/google/adk-python/commit/a33c18d1dbdbe719c3cf690c99b0e676a54a1cd2)) +* **environment:** Add LocalEnvironment for executing commands and file I/O locally ([5c6376b](https://github.com/google/adk-python/commit/5c6376b7b0633bf2e177483d655e589fab169a33)) +* **eval:** Add ADK CLI for eval_set generation ([ea8bb44](https://github.com/google/adk-python/commit/ea8bb44dd9dbfb1274a6deb938b3359a653fd1d7)) +* **events:** Add message_as_output to NodeInfo ([35538c9](https://github.com/google/adk-python/commit/35538c9a21ee7a21551496a0db93b8a4794f2d77)) +* **events:** make run_id calculated and remove from JSON dump ([4476854](https://github.com/google/adk-python/commit/44768544554d28958744d4634f7c72eaa9469285)) +* Extract and merge EventActions from A2A metadata ([ec813eb](https://github.com/google/adk-python/commit/ec813eb3b7127e9ec3dd118dd6190fcfd351b7e7)), closes [#3968](https://github.com/google/adk-python/issues/3968) +* **features:** Enable NEW_WORKFLOW and V1_LLM_AGENT by default ([50952fa](https://github.com/google/adk-python/commit/50952fad530803f397f122a45523823f0228d744)) +* implement auto-incrementing run IDs for dynamic nodes to support parallel execution and resumption ([db25881](https://github.com/google/adk-python/commit/db25881ca063007623ec747f2cecb24be09db304)) +* implement recursive sub-workflow discovery and update get_app_info_image to return multi-workflow graph results ([3daf5f4](https://github.com/google/adk-python/commit/3daf5f4d6ac25fd18a98877f735f864450f34402)) +* Implement robust process group management and timeouts in BashTool ([011b650](https://github.com/google/adk-python/commit/011b6506b1d2a267b37893adfeb90b0f504c55a3)) +* implement task mode support in V1 LLM agent wrapper and add integration test samples ([6f17304](https://github.com/google/adk-python/commit/6f173041b3ea0a581eae809b58ae730a540a8c83)) +* Implement timeout for _node_runner_class and migrate previous tests ([f6660ae](https://github.com/google/adk-python/commit/f6660aea49bb0eacafca3500e65a2f2ae733e067)) +* **live:** support live for `gemini-3.1-flash-live-preview` model ([9d7dc02](https://github.com/google/adk-python/commit/9d7dc02ebb8901e09038e96d1f67e0e477feac58)) +* **mcp:** add sampling callback support for MCP sessions ([9d55d08](https://github.com/google/adk-python/commit/9d55d08bf3b9d52f2c77241594b3dfa16698ab96)) +* Option to use shallow-copy for session in InMemorySessionService ([a61a4b3](https://github.com/google/adk-python/commit/a61a4b3cc9ee3fe36c2134d99136ee8aa511d3d0)) +* Optional GCP project and credential for GCS access ([2fb2add](https://github.com/google/adk-python/commit/2fb2add45008bfd5ac7f50bfe76e903366c002b1)) +* **otel:** Add functional tests for workflow telemetry ([f4a4813](https://github.com/google/adk-python/commit/f4a4813640dd8333d1c83e4cf04204460f2cdff6)) +* **otel:** Instrument NodeRunner control flow ([d883a6d](https://github.com/google/adk-python/commit/d883a6d1662590b3e078f8ceac9409d0572fbde8)) +* Propagate context to thread pools ([33b3cfe](https://github.com/google/adk-python/commit/33b3cfe2e269d10623f941c6ef1ff469b479b06b)) +* refresh credentials if token is missing in the common code and samples ([ffa62d6](https://github.com/google/adk-python/commit/ffa62d6291017de953bb7cc885704588b72076c8)) +* Remove use of raw_event field in vertex ai session service ([92832fe](https://github.com/google/adk-python/commit/92832fea9c7fffa615dd373626e3bb20fab13114)) +* replace random number agent sample with bank account management sub-agents ([ee6f068](https://github.com/google/adk-python/commit/ee6f068e4fd8ce40250651e5cb9251f47688667b)) +* **runners:** Add resume and user message support for BaseNode root ([eb8718e](https://github.com/google/adk-python/commit/eb8718e73415f62c833eb2e769f1fe149bce76c8)) +* **runners:** Bring back the old find_agent_to_run logic for when LlmAgent is root agent ([a21c8c7](https://github.com/google/adk-python/commit/a21c8c74daf20ef21075b91227381122c0b690f2)) +* **runners:** Support BaseNode as root in Runner ([91b56b9](https://github.com/google/adk-python/commit/91b56b9ab07eca1e9b7b590e2ad6eee52898c0bc)) +* **skills:** Add adk-sample-creator skill for authoring samples ([80e90c9](https://github.com/google/adk-python/commit/80e90c9bd631c8e5bfae982d701b5ccb0cd173b6)) +* skip specific agent tests when V1_LLM_AGENT feature is enabled ([5514069](https://github.com/google/adk-python/commit/5514069ac5e9e17b8078dc955f6de49d4fa6af54)) +* **state:** Enforce state_schema at runtime in Workflow ([cf05bf8](https://github.com/google/adk-python/commit/cf05bf831b93e78615e683ff4fc3546de7e416b3)) +* Support AgentRegistry association ([2b1f1d6](https://github.com/google/adk-python/commit/2b1f1d6a30405ccc8e82dc2cbef35b2f534bbbe7)) +* Support new embedding model in files retrieval ([7d2ae06](https://github.com/google/adk-python/commit/7d2ae0641276086fbee67689912b86badd4c138b)) +* Support propagating grounding metadata from AgentTool ([98908cf](https://github.com/google/adk-python/commit/98908cf0617a3d26d83a97f5b8db97f71d35a428)) +* support routing maps as inline chain elements in edge definitions ([a625a24](https://github.com/google/adk-python/commit/a625a24e6cdf67194022fac92ea8968095ad8e7b)) +* Support short options and positional arguments in RunSkillScriptTool ([74ee598](https://github.com/google/adk-python/commit/74ee598683288bf4d029933cd4b63167fba6c357)) +* **test:** Support custom pytest args and ensure reproducible test results ([4035cbd](https://github.com/google/adk-python/commit/4035cbdf2701d075a6278e844ef168b1bbdfe84d)) +* update nested workflow agent to pass year state to downstream agents and format aggregation output ([dd3fc8b](https://github.com/google/adk-python/commit/dd3fc8b0f44f0546a0a670f303176a636d7e62db)) +* Use raw_event field in vertex ai session service for append and list events ([95adb64](https://github.com/google/adk-python/commit/95adb6474fca7c77e288bf644230b09a428dd664)) +* Use raw_event to store event data in vertex ai session service ([c08fee5](https://github.com/google/adk-python/commit/c08fee5b16b2de43368ad3b3500ab8eca926f8cc)) +* **workflow:** Add ctx.event_author for orchestrator-owned authorship ([26a9232](https://github.com/google/adk-python/commit/26a9232da2cde4c4c745e82864c924759d628e2b)) +* **workflow:** Add custom run_id support to ctx.run_node() ([88638ba](https://github.com/google/adk-python/commit/88638ba4024c6a0bba26c18900d520c975729826)) +* **workflow:** Add DefaultNodeScheduler for standalone node resume via ctx.run_node() ([a68e70d](https://github.com/google/adk-python/commit/a68e70d5da23eaafc5db5611205d34976cb98e5a)) +* **workflow:** Add execution logging to improve debuggability ([7cd7420](https://github.com/google/adk-python/commit/7cd7420ee7a2b3456d8674e37e9d9966e94d1bf3)) +* **workflow:** add FunctionNode auth_config ([d93cdf3](https://github.com/google/adk-python/commit/d93cdf35dbcfc57fb31ea7a22cae1fb23b7b3c0d)) +* **workflow:** Add HITL resume via event reconstruction ([ca32732](https://github.com/google/adk-python/commit/ca32732991c89a3a0ab88a43874182af3e937a13)) +* **workflow:** Add lazy scan dedup and resume for dynamic nodes ([d600b19](https://github.com/google/adk-python/commit/d600b195bd5831cb6bc460e704178b739880576f)) +* **workflow:** Add NEW_WORKFLOW feature flag to toggle implementation ([5d60005](https://github.com/google/adk-python/commit/5d6000592f46428ef748f22e3f3fb09c9ece6ec1)) +* **workflow:** add node-level retry support in NodeRunner ([c51c05c](https://github.com/google/adk-python/commit/c51c05c2bd4cede67dd7164fbebb925a2e551e28)) +* **workflow:** Add NodeRunner class for per-node execution ([0b3e704](https://github.com/google/adk-python/commit/0b3e7043c47228f0ba1d89d6c86a0cf6a67ebd31)) +* **workflow:** Add output_for field to Event for output delegation tracking ([d56e11e](https://github.com/google/adk-python/commit/d56e11ed68dd45bdea8cbf837f535c3baf66ba1d)) +* **workflow:** Add Workflow(BaseNode) graph orchestration implementation ([c25d86f](https://github.com/google/adk-python/commit/c25d86f1adf6b32e5cc780880acf3d2e15e0b984)) +* **workflow:** Allow ctx.run_node() without a Workflow wrapper ([68c7c7e](https://github.com/google/adk-python/commit/68c7c7ed64c51cbf2850f729167a8ab7bc97de40)) +* **workflow:** Bundle state/artifact deltas into next yielded event ([2334098](https://github.com/google/adk-python/commit/2334098ef22c69970dad575683ae7f411a0b6a0d)) +* **workflow:** emit error event on each retry in NodeRunner ([4ce11d3](https://github.com/google/adk-python/commit/4ce11d33e3f9da0960a168a6c2c3c3a8cbcaa4c3)) +* **workflow:** emit error events on node failure ([4561d04](https://github.com/google/adk-python/commit/4561d04ab3961d4056d5a1d4a92b742e9a38af69)) +* **workflow:** Enable partial resume for nested Workflows ([c65ed8d](https://github.com/google/adk-python/commit/c65ed8d4a82ba902fede9d15bfd84580694a110b)) +* **workflow:** Fix LRO pause condition and add cross-branch lookup tests ([1fc6c68](https://github.com/google/adk-python/commit/1fc6c684870bd3dfb6c705ba5fe7a362ad2a5e03)) +* **workflow:** Flush state/artifact deltas onto yielded events ([0015308](https://github.com/google/adk-python/commit/0015308820a86e076581547ae585ade853f82707)) +* **workflow:** Log node execution exceptions ([b65bcf1](https://github.com/google/adk-python/commit/b65bcf16cca705d2b76fa8066974bcbef3d95e97)) +* **workflow:** Migrate dynamic node tests and fix resume/error gaps ([70ddcfe](https://github.com/google/adk-python/commit/70ddcfee2554aad4d24a500b88e8c3119b574e83)) +* **workflow:** Refactor DynamicNodeState to use nested dictionary structure ([bd015ea](https://github.com/google/adk-python/commit/bd015ea7bdcb914ac95ef40dd4506a205e3feccf)) +* **workflow:** Reuse execution_id on resume ([8a39dbf](https://github.com/google/adk-python/commit/8a39dbfcec742d2fdda9bc51b81bf9a855c10fb3)) +* **workflow:** support error in new workflow, graceful shutdown upon node error, and reduce duplicate error events ([525a47e](https://github.com/google/adk-python/commit/525a47e037b4233144c5f06483b7a36fbe4214de)) +* **workflow:** Support JSON string parsing in schema validation ([3efeee5](https://github.com/google/adk-python/commit/3efeee5764388fce6dfad1c9b03f4db0df008602)) +* **workflow:** Support node_input parameter binding for FunctionNode ([1472798](https://github.com/google/adk-python/commit/14727980e6ebf5da77e25140aa89c98f845f87b0)) +* **workflow:** Support object schema validation for HITL resumption ([ebec6ca](https://github.com/google/adk-python/commit/ebec6ca4ba48d259701fc041e07d4b8feda3ff83)) +* **workflow:** support output_schema validation in Workflow ([b902877](https://github.com/google/adk-python/commit/b902877705e354f2c7a40e56b049c3e2bc04ff37)) +* **workflow:** Support parsing input schema from Content text ([d7de2f7](https://github.com/google/adk-python/commit/d7de2f741ca7c477ae7a73e268ff16fe25ac9a1e)) +* **workflow:** support single-turn agents as tools and miscellaneous fixes ([30af95c](https://github.com/google/adk-python/commit/30af95c52c2ad1955e22cb1b2f48f532a37374b1)) +* **workflow:** support sub_branch in context and scheduler ([202b105](https://github.com/google/adk-python/commit/202b105b0c56a5f670d538a6ca5631c6884588ee)) +* **workflow:** Support use_as_output for dynamic node output dedup ([c9d81cb](https://github.com/google/adk-python/commit/c9d81cb7924d4291515102f119a1a047cd606c9a)) +* **workflow:** Support use_as_output in new Workflow class ([2a10462](https://github.com/google/adk-python/commit/2a10462afec8e38e9b1ba73fb32ce1c038e81c0d)) +* **workflow:** Support V1 agents in new workflows ([008dce8](https://github.com/google/adk-python/commit/008dce8077434443a725c0095efb39edd074f78d)) +* **workflow:** Support wait_for_output in dynamic nodes ([206a490](https://github.com/google/adk-python/commit/206a49036c881b2fe2f73ac6dc363e9fbbed1503)) +* **workflow:** Use SingleAgentReactNode for leaf single_turn agents in new Workflow ([dc2adf9](https://github.com/google/adk-python/commit/dc2adf9869a822e806fe36e95261d9119fc4271b)) + + +### Bug Fixes + +* Add A2ATransport.http_json to the default supported transports list ([6985cf8](https://github.com/google/adk-python/commit/6985cf83aafb5357da1a64e41cccc644a45c9416)) +* add agent name validation to prevent arbitrary module imports ([35355c3](https://github.com/google/adk-python/commit/35355c30dca460b80069a923abeec5e55eeb0c0b)) +* add httpx_client_factory support to SseConnectionParams ([a8122ef](https://github.com/google/adk-python/commit/a8122ef014d9892f991e0b51eba45a3811c7e3ab)) +* add missing import and fix variable name typo ([256c961](https://github.com/google/adk-python/commit/256c96119c95a5227c032a3d25f8cb8bdf34a5cf)) +* add protection for arbitrary module imports ([887a279](https://github.com/google/adk-python/commit/887a2796d385bad5b225229d9c7f14e009079437)), closes [#4947](https://github.com/google/adk-python/issues/4947) +* Add read-only session support in DatabaseSessionService ([7a31c61](https://github.com/google/adk-python/commit/7a31c61a87bd57970b83655c0b29db6593ee82e9)), closes [#4771](https://github.com/google/adk-python/issues/4771) +* **adk:** redact credentials in BigQuery analytics plugin ([77ae721](https://github.com/google/adk-python/commit/77ae72130cf71686ab5f3977ce92297c2eff64e7)) +* Allow snake case for skill name ([52250da](https://github.com/google/adk-python/commit/52250da81f237002e4e6df2efeeae750eeebbcc7)) +* api client initialization logic to be mutually exclusive between ExpressMode and GCP projects ([2514c1e](https://github.com/google/adk-python/commit/2514c1e5c0966be54adce38359ac2d627e144421)) +* **bigquery:** use valid dataplex OAuth scope ([b1e0188](https://github.com/google/adk-python/commit/b1e01889340b8ca7c4c74018830f6d408be1ae0e)) +* Cache BaseToolset.get_tools() for calls within the same invocation ([d568bf0](https://github.com/google/adk-python/commit/d568bf03a02e2a21a0e685bd82b7dbcf842142b8)) +* **cli:** fail Agent Engine deploy when config file path is invalid ([0737d07](https://github.com/google/adk-python/commit/0737d07975caf7c921ddca5b345d7636a6e4e613)) +* **cli:** Reset agent cache in test_agent_replay to ensure isolation ([017fef4](https://github.com/google/adk-python/commit/017fef45dee45b2ba09a40881ce7148b533901c6)) +* **cli:** Support Workflow graph visualization in web UI ([095a5c4](https://github.com/google/adk-python/commit/095a5c42ba2172a6a8e52fbb8383796f9e06d372)) +* **cli:** Update import path for renamed NodeStatus module ([977696e](https://github.com/google/adk-python/commit/977696ec91e4ef89407dd589705034d45541b2d4)) +* Default to ClusterIP so GKE deployment isn't publicly exposed by default ([d58ee0e](https://github.com/google/adk-python/commit/d58ee0e29e5adfac5dc5cbd49579e6a869f8b89b)) +* **deps:** bump google-genai minimum to >=1.64.0 for gemini-embedding-2-preview ([9300431](https://github.com/google/adk-python/commit/93004310668098517930019dd4e5c3a04eeeba30)) +* Disable tool caching for skill toolset ([8be229f](https://github.com/google/adk-python/commit/8be229fe4e417a96ad9b0ec086a8ec0754450538)) +* Disallow args on /builder and Add warning about Web UI usage to CLI help ([73a2d5a](https://github.com/google/adk-python/commit/73a2d5a6d2cb6ca73e0db214e6a7e460dbb29f75)) +* **docs:** add ctx param to retry sample README snippet ([fc90f36](https://github.com/google/adk-python/commit/fc90f364f95e15205bb4cd6d3b810dcfcbc78547)) +* empty events_iterator assignment ([880c303](https://github.com/google/adk-python/commit/880c30394af55c9e01796d926106bd5cad41af92)) +* enforce allowed file extensions for GET requests in the builder API ([a499651](https://github.com/google/adk-python/commit/a499651ce7415a5155ae24fae6f6a838ce411c32)) +* Enhance ADK release analyzer with resume functionality and better session management ([908179e](https://github.com/google/adk-python/commit/908179e1a274e6c9e33328831c8a6c852168c720)) +* **environment:** fix package references ([a925cdb](https://github.com/google/adk-python/commit/a925cdb8d3937da4c8137707ff3bfb07e2e90e5a)) +* error when event does not contain long_running_tool_ids ([8fbae27](https://github.com/google/adk-python/commit/8fbae27d6cbd145a0aba63f43d2010bdf52fff1f)) +* Exclude compromised LiteLLM versions from dependencies pin to 1.82.6 ([5b1ce6b](https://github.com/google/adk-python/commit/5b1ce6b919fa3b869a06cc517b79d04243616d6a)) +* Fix imports for environment simulation files ([f7185b7](https://github.com/google/adk-python/commit/f7185b747cc1dfb3737b7a496b1341c81c57556a)) +* Fix RemoteA2AAgent deepcopy errors ([c730ac3](https://github.com/google/adk-python/commit/c730ac3c2ceb9e8ea326b6dbe8fcf30c48ddd8bf)) +* Fixes for initializing RemoteA2aAgent - passing in preferred transport, protocol version, and auth headers ([56d29f5](https://github.com/google/adk-python/commit/56d29f56049f3efd3f76e561fa8d0623b13e1baf)) +* **flows:** Isolate sub-agent responses to prevent context leakage ([e25acb7](https://github.com/google/adk-python/commit/e25acb7f071bd0a530f215814b43bd999d20d666)) +* gate builder endpoints behind web flag ([be3712a](https://github.com/google/adk-python/commit/be3712a0b04834075106e69363afa481be8703af)) +* Generate IDs for FunctionCalls when processing streaming LLM responses ([3e94031](https://github.com/google/adk-python/commit/3e9403193a40276d274c7f45c5dd6f6cf7b39ad0)), closes [#4609](https://github.com/google/adk-python/issues/4609) +* Handle concurrent creation of app/user state rows in DatabaseSessionService ([8d0aacb](https://github.com/google/adk-python/commit/8d0aacb58dad338c4111031b20b728cede977251)), closes [#4954](https://github.com/google/adk-python/issues/4954) +* Handle merging lists in deep_merge_dicts ([e934819](https://github.com/google/adk-python/commit/e934819569beb2dc610a874d96db2f5869c44e07)) +* In memory session service to evaluate dictionary keys and value into an isolated snapshot sequence before starting loop ([18dcfc5](https://github.com/google/adk-python/commit/18dcfc509cbcbf018092b37d59619ff072ea3643)) +* include intermediate subagent final response events in evaluation intermediate data ([81d0465](https://github.com/google/adk-python/commit/81d0465111745e895bd47f48c537bc4e1db0d6af)) +* **live:** Buffer tool calls and emit them together upon turn completion ([89ef399](https://github.com/google/adk-python/commit/89ef39998b744309f8034208d12fc82d20387551)) +* **models:** handle arbitrary dict responses in part_to_message_block ([ec5e2f7](https://github.com/google/adk-python/commit/ec5e2f7536b088057dffc69626995fc29b73a8a1)) +* **models:** update 429 docs link for Gemini ([860a3a3](https://github.com/google/adk-python/commit/860a3a3032f494e7543fbcb416f024f09b5b2744)) +* populate `required` for Pydantic `BaseModel` parameters in `FunctionTool` ([923fc9a](https://github.com/google/adk-python/commit/923fc9a4817801ee8685f3863a0838b82b8ec688)), closes [#4777](https://github.com/google/adk-python/issues/4777) +* Preserve thought_signature in LiteLLM tool calls ([cfd87f0](https://github.com/google/adk-python/commit/cfd87f0e0bc35394b90af04bb4ff85e2a5efb5b2)), closes [#4650](https://github.com/google/adk-python/issues/4650) +* Prevent compaction of events with pending function calls ([824fcda](https://github.com/google/adk-python/commit/824fcda429f324269defd11815e8aff2dc5915f4)), closes [#4740](https://github.com/google/adk-python/issues/4740) +* Refactor blocking subprocess call to use asyncio in bash_tool ([6c1ce79](https://github.com/google/adk-python/commit/6c1ce79ab8524e1df45f3e3ac2ca7911d286be07)) +* Refactor LiteLlm check to avoid ImportError ([1fab051](https://github.com/google/adk-python/commit/1fab0516396c204225f428a9af7dd39f8d159908)) +* Refactor type string update in Anthropic tool param conversion ([1ab3964](https://github.com/google/adk-python/commit/1ab3964aad0fcfe5e267ad1ae87b3fcf1576fb57)) +* Reject appends to stale sessions in DatabaseSessionService ([a859570](https://github.com/google/adk-python/commit/a85957049c3462eb924515b20df40e2ff04903a8)), closes [#4751](https://github.com/google/adk-python/issues/4751) +* Remove redundant client_id from fetch_token call ([630d001](https://github.com/google/adk-python/commit/630d0017e411afdd09987e04181810560e0d81fb)), closes [#4782](https://github.com/google/adk-python/issues/4782) +* resolve 6 test failures in unit tests ([05c1a2d](https://github.com/google/adk-python/commit/05c1a2d6f4bbe990328182092d2e2ba3b434eed7)) +* returns '<No stdout/stderr captured>' instead of empty strings for clearer agent feedback and correct typing ([5e2619a](https://github.com/google/adk-python/commit/5e2619aaa15b0a01591e56e431a010f1ce5c514c)) +* **runners:** exclude LlmAgent from node execution path in Runner ([dfdf00a](https://github.com/google/adk-python/commit/dfdf00a6de2da617004e6caaee3036524766fa20)) +* **runners:** Expose exception callstack for root node failures ([ca6e053](https://github.com/google/adk-python/commit/ca6e0533af1c9db7addee03f793f3c8cc03fadd0)) +* Safer fix for UI widget merging in ADK ([c5e0045](https://github.com/google/adk-python/commit/c5e0045164a05f3c02bc1ad70609872587b6a2eb)) +* **samples:** Prevent infinite loop from dynamic node dedup in loop ([7622f29](https://github.com/google/adk-python/commit/7622f29b67fb60cc648738a384fc8009a720854a)) +* Small fixes for express mode ([9c09716](https://github.com/google/adk-python/commit/9c0971664a63ea39ddec0b44757b4e7b423792fd)) +* Store and retrieve usage_metadata in Vertex AI custom_metadata ([fea1b8f](https://github.com/google/adk-python/commit/fea1b8f887a3da44eaa33556a1d95ce271eac8f2)) +* Support resolving string annotations for `find_context_parameter` ([2030777](https://github.com/google/adk-python/commit/203077752fcb51a6ace5fc36d8de3bf24b21eee3)) +* sync callbacks with call_llm span ([959e88d](https://github.com/google/adk-python/commit/959e88d2b095f3a1f12555a6229f8467df63351e)) +* **telemetry:** ensure using Aclosing when calling agen from framework code to developer-written codes. ([5c03607](https://github.com/google/adk-python/commit/5c036076309b3015b613b1e68ea9f90107b32d3e)) +* **testing:** make agent test replay deterministic for parallel workflows ([56797a6](https://github.com/google/adk-python/commit/56797a603c18209730743c6beb5abfb8dd8e5af8)) +* **testing:** Make agent test replay deterministic to prevent flaky failures ([d3e9d23](https://github.com/google/adk-python/commit/d3e9d238fc9cf5766e89e265c73c6398dea74b61)) +* **tests:** add _state_schema to InvocationContext mocks ([17e35a8](https://github.com/google/adk-python/commit/17e35a8e07d775780824ccff72b7c5f2e9c968b7)) +* **tests:** Align retry sample test with 1-based attempt count ([61a8b5b](https://github.com/google/adk-python/commit/61a8b5b9b896797509d40d09a3053ab4b4824112)) +* **tools:** Acknowledge safety decisions to prevent API errors ([bdfdb33](https://github.com/google/adk-python/commit/bdfdb33a64668ba6192eecd54b0396522e7348ba)) +* **tools:** disable default httpx 5s timeout in OpenAPI tool _request ([1697e8d](https://github.com/google/adk-python/commit/1697e8d5f40e80b316703820d85c32f36a2d5927)), closes [#4431](https://github.com/google/adk-python/issues/4431) +* **tools:** handle toolset errors gracefully in canonical_tools ([c3d7f7f](https://github.com/google/adk-python/commit/c3d7f7fcbc4f8bb06c78ba8611eb4c7a9aba33d0)) +* **tools:** support regional Discovery Engine endpoints ([1e12eac](https://github.com/google/adk-python/commit/1e12eacb53489efcf4dc889d3817ac70b4f756e8)) +* **tools:** support structured datastores in DiscoveryEngineSearchTool ([da84e59](https://github.com/google/adk-python/commit/da84e59054048a763fab4bafcf4bc6a2d7ba8b14)), closes [#3406](https://github.com/google/adk-python/issues/3406) +* truncate error_message in v0 schema to prevent VARCHAR overflow ([feea8ca](https://github.com/google/adk-python/commit/feea8cac433b57b6e71a1745c0af487d00be84d6)), closes [#4993](https://github.com/google/adk-python/issues/4993) +* Update Agent Registry to use the full agent card if available ([e295d8a](https://github.com/google/adk-python/commit/e295d8aa4e0f9e3bc388a0845ad9580077300326)) +* Update eval extras to Vertex SDK package version with constrained LiteLLM upperbound ([bba5e79](https://github.com/google/adk-python/commit/bba5e79f771d84793ffde3087a479526510830b0)) +* Update import and version for k8s-agent-sandbox ([d0526b9](https://github.com/google/adk-python/commit/d0526b91b990f7a99af432516b9dcc77cc32ac96)), closes [#4883](https://github.com/google/adk-python/issues/4883) +* Update list_agents to only list directories, not validate agent definitions ([159f5ed](https://github.com/google/adk-python/commit/159f5ed6ad3c466c92d2a78eb437789039c9ad5d)) +* update toolbox-adk and toolbox server versions ([ad4ebb6](https://github.com/google/adk-python/commit/ad4ebb65947420417991182e1cd58340d34ad356)) +* Update v2 release workflow to be dispatched from v2 branch ([51e07b3](https://github.com/google/adk-python/commit/51e07b3610536c190b0f5cdcea4cf8f154f91f75)) +* **workflow:** Add input schema check and fix JoinNode ([d4973e9](https://github.com/google/adk-python/commit/d4973e90f0dc144fced6fae99a1dc027d41034e4)) +* **workflow:** Align nested workflow tests with V2 event protocols ([6e11f8f](https://github.com/google/adk-python/commit/6e11f8f842172e1c475afdd21d5be536f107a9ab)) +* **workflow:** Content→str in BaseNode input validation ([5f51958](https://github.com/google/adk-python/commit/5f51958e3c531c9e569dbe47bec63919159f6658)) +* **workflow:** Deduplicate terminal node output events ([93eb6d0](https://github.com/google/adk-python/commit/93eb6d0d72885e1f6bcba4b575ee750aa14acbf5)) +* **workflow:** Delete test_workflow_agent.py as it is duplicated ([bcd5e91](https://github.com/google/adk-python/commit/bcd5e9163d565ef8f3c26d8f93ccb612f9593638)) +* **workflow:** Disable sleep in message sample during pytest ([1936d46](https://github.com/google/adk-python/commit/1936d464e12f78dc7275975abea2ebb3961c05cb)) +* **workflow:** Eliminate duplicate output events in nested workflows ([8e5e111](https://github.com/google/adk-python/commit/8e5e111d546a23e443c84bb23b5c979e001bed64)) +* **workflow:** ensure non-rerunnable nodes complete and trigger downstream on resume ([03b7c95](https://github.com/google/adk-python/commit/03b7c95c9c84be031bfb6ee2fb87e1f3f2a9d37d)) +* **workflow:** Fix agent transfer failures and routing in non-resumable turns ([e516e26](https://github.com/google/adk-python/commit/e516e2666b5047680c6e31704391bb22fd8c20ab)) +* **workflow:** Fix node wrapper equality for duplicate checks ([677d18a](https://github.com/google/adk-python/commit/677d18a7a9bd0fdd05e5b0d12f3fd75192fa4e33)) +* **workflow:** handle empty parent path in is_descendant and direct_child_name ([c826e6d](https://github.com/google/adk-python/commit/c826e6d68d45bc4e553771c9421c9d811cdedc63)) +* **workflow:** Implement state_schema validation in V2 workflow ([c073b5d](https://github.com/google/adk-python/commit/c073b5d44b87f920545bc5ca6e0f9805b5cb3e56)) +* **workflow:** isolate node state per run to fix infinite loop ([c55d794](https://github.com/google/adk-python/commit/c55d79493993122270a948f6d293d0e85b188fdd)) +* **workflow:** Prevent re-execution of completed dynamic nodes on resume ([aa7925b](https://github.com/google/adk-python/commit/aa7925b0cd047d13443ef37b4e4e41d9bbce727f)) +* **workflow:** Prevent run_id reset for WAITING nodes ([66090d6](https://github.com/google/adk-python/commit/66090d6ee5945f2e583da4cd89f3df3ce9b7f20d)) +* **workflow:** refine node timeout implementation in NodeRunner ([569f6b9](https://github.com/google/adk-python/commit/569f6b9487a06dc91f7619f5d37de14e5ef98622)) +* **workflow:** Reject multiple output events per node ([0368e38](https://github.com/google/adk-python/commit/0368e380051be8c66190dda49c876a548c6245b7)) +* **workflow:** restore early-2.0 scheduler fallback in ctx.run_node() ([211bc1c](https://github.com/google/adk-python/commit/211bc1cb4b74de1e1e442d13a8dce1609930c957)) +* **workflow:** Restore legacy agents and fix regressions in tests ([4fc8360](https://github.com/google/adk-python/commit/4fc83607b17b53b92234d0ccefd217d28a792aaf)) +* **workflow:** Restore run_counter during rehydration to ensure unique loop paths ([7127b61](https://github.com/google/adk-python/commit/7127b618519f6cb6f7f41328d93d15e75974d3f4)) +* **workflow:** Standardize node paths to name@run_id to prevent state collision and fix descendant bug ([e8c8b15](https://github.com/google/adk-python/commit/e8c8b15e290d76b269fdd8a78af3000994772c00)) +* **workflow:** Stop SingleAgentReactNode loop on interrupt ([181dc23](https://github.com/google/adk-python/commit/181dc230815a68d48ccbbd90b36aaa1ad8d5ebc3)) +* **workflow:** Unwrap FR responses in resume event scanning ([b66de99](https://github.com/google/adk-python/commit/b66de99266ac931cfece172240c9ea5e60c4b160)) +* **workflow:** use rsplit for safer node name extraction ([0e06e5b](https://github.com/google/adk-python/commit/0e06e5bf5f08147291e9db1bb74ee385e989f274)) + + +### Performance Improvements + +* **workflow:** Bypass Mesh for leaf single_turn LlmAgent ([d864917](https://github.com/google/adk-python/commit/d864917fb6e8c82c4a67941cc8e8d11f9f7540d1)) + + +### Code Refactoring + +* **agents:** Extract _convert_tool_union_to_tools to shared module ([d1ca561](https://github.com/google/adk-python/commit/d1ca561979565f99e022dbe8cf3ed3f107ed51b9)) +* **agents:** Isolate V2 agents to llm_agent_workflow for V1 shim ([ab60439](https://github.com/google/adk-python/commit/ab604397a411a384aecb90bd4c17c719187b6d9a)) +* **agents:** Separate 2.0 LlmAgent into llm_agent_workflow/ and llm_agent_node/ ([cc51a76](https://github.com/google/adk-python/commit/cc51a76d5519d36036fcf14c3a317550ecc4d4d9)) +* **agents:** simplify tool execution flow by returning ToolActions directly ([4121f79](https://github.com/google/adk-python/commit/4121f79af173291ea35efad898badfe69a53013b)) +* **agents:** streamline tool output handling and execution flow ([62aeab4](https://github.com/google/adk-python/commit/62aeab46013609d850ac2568a30e9bceb347ab6c)) +* batch eval set results saving so they are grouped under the same run ([ee0f4bc](https://github.com/google/adk-python/commit/ee0f4bca0df1b35aa7b3c49fd050d62b119c9d6b)) +* centralize V1 agent test skipping logic in root conftest and remove redundant agent-level conftest ([976babf](https://github.com/google/adk-python/commit/976babf14b219a67828d4a764b2953f58cd96327)) +* **cli:** Optimize event printing and fix test mocks ([c7f6d24](https://github.com/google/adk-python/commit/c7f6d249d29db38cb5cd43f56793e7bb2cfe94cd)) +* consolidate root_node and root_agent into a single root_agent field in App and Runner classes ([6d930e8](https://github.com/google/adk-python/commit/6d930e880d58f661482dc67ae728173fca7af454)) +* Copy flows/ to ADK 2.0 ([a633b93](https://github.com/google/adk-python/commit/a633b9336cef68d114b221cc7174e0536dfbbaf7)) +* **events:** Remove unnecessary null checks for actions and node_info ([b8fa48a](https://github.com/google/adk-python/commit/b8fa48abb97f102b40e0c32d7064df9b836ae036)) +* fix merge bug. ([3fafc95](https://github.com/google/adk-python/commit/3fafc957544d2deeb4060ddc08002905b6b95beb)) +* group evaluation results by set ID to support multi-set processing and update test assertions ([0b5f4bf](https://github.com/google/adk-python/commit/0b5f4bf9e85ad8f53431d44b96dd890d6b49e18c)) +* move auth, confirmation, and long-running tool handling logic from parallel to individual tool call nodes ([8a7d30d](https://github.com/google/adk-python/commit/8a7d30dc9982b23ee19ecf89dce43251347f9fa6)) +* move new llm implementation to the folder 'new' and rename them to the final names. ([9c345de](https://github.com/google/adk-python/commit/9c345de849a0bbb4c54e535d6b8623808e73700c)) +* Move SecretManagerClient to google.adk.integrations.secret_manager package ([8359c9d](https://github.com/google/adk-python/commit/8359c9d94a5d437ebdebc448bb4a5c8336e70ced)) +* remove automatic test rebuilding from web server session save endpoint ([4d14acd](https://github.com/google/adk-python/commit/4d14acd6a2977bf1cfed747d326dc5121ef0530f)) +* remove legend generation from graph visualization output. We show them directly in the UI. ([bac858f](https://github.com/google/adk-python/commit/bac858f460a24670803ff6f19e93f049fb7fd306)) +* remove ParallelToolCallResult and use node_info.message_as_output for event handling and action propagation. ([1701611](https://github.com/google/adk-python/commit/17016115944b5b922d1c709a1fd90952584e732a)) +* Remove redundant _node_name parameter from dynamic node scheduling methods ([798749a](https://github.com/google/adk-python/commit/798749a93712ec11be5dec68dc78ac487b46eb96)) +* Remove the session events dependency from A2aAgentExecutor ([7bc2808](https://github.com/google/adk-python/commit/7bc2808d09fa8df0913981497fbc6f21d6e01f6d)) +* rename agent simulator to environment simulation. Also add tracing into environment simulation ([23b4d92](https://github.com/google/adk-python/commit/23b4d92f2f762cda58f566703e702704ee71df69)) +* **skills:** split architecture reference into topic files ([d0db5af](https://github.com/google/adk-python/commit/d0db5af43824d3aeb1a2514b5dc5906fa7050cdf)) +* **tests:** Restructure workflow tests, separating legacy stack and organizing components ([6987f52](https://github.com/google/adk-python/commit/6987f52de3828fa7992a39bbe3a2f4aa5d08eca7)) +* update agent workflow to use tool confirmation. Currently tests fail due to interruption not supported in llm agent as a node in a workflow. ([1f898f8](https://github.com/google/adk-python/commit/1f898f833d6a66649f7522e051f0400bb78d23b2)) +* update graph node font colors to use dynamic node_fontcolor variable ([8695ed9](https://github.com/google/adk-python/commit/8695ed90e06c4ba88da8071c433e92a9e2e7e9c3)) +* update LLM nodes to use message content as output via node_info flag ([9ed61bc](https://github.com/google/adk-python/commit/9ed61bc44ba81bc7bc45f5e6194e51438c8eb635)) +* update message_as_output type hint to allow None values ([cf0f034](https://github.com/google/adk-python/commit/cf0f034559b9dd94d064f155e9b891d961016118)) +* **workflow:** BaseNode [@final](https://github.com/final) run() + _run_impl() split ([a8cf19d](https://github.com/google/adk-python/commit/a8cf19dcc0a11e45d398f051b89995019d571a9d)) +* **workflow:** Extract DynamicNodeScheduler to own file ([2464408](https://github.com/google/adk-python/commit/246440841b5c6354e7ee2d436a9439d3041c1996)) +* **workflow:** Extract Trigger into standalone _trigger.py ([65e565e](https://github.com/google/adk-python/commit/65e565ed09919ab71b327f8cc7d4a8bc066cbf2e)) +* **workflow:** make graph public for dev UI serialization ([c823c20](https://github.com/google/adk-python/commit/c823c20b567f6213145545fa8caedc68f6618840)) +* **workflow:** Remove name from ctx.run_node() and update ParallelWorker ([a816125](https://github.com/google/adk-python/commit/a8161251b24d4c4f6331108b6206dd46ad13c432)) +* **workflow:** Remove run ID handling in tests ([2368fb8](https://github.com/google/adk-python/commit/2368fb862f0d25fff0fb731b58166404f901055e)) +* **workflow:** Remove unused node_name_map parameter from simplify_event_with_node ([d0f04cc](https://github.com/google/adk-python/commit/d0f04cc580e152bcd12d8e561e78678e682cd727)) +* **workflow:** Rename execution_id to run_id ([95a8dd5](https://github.com/google/adk-python/commit/95a8dd5e288fdd54d4128984632993f9dc070c8e)) +* **workflow:** Simplify node runner metadata handling ([2be5027](https://github.com/google/adk-python/commit/2be50272395af17252d8a5a971a8aa3f23c241ff)) +* **workflow:** Simplify ToolCallNode to yield raw response dicts ([26a2cc2](https://github.com/google/adk-python/commit/26a2cc205a6ba391ae56fe0ae7eef0dcac9d2d2d)) +* **workflow:** Split _execution_state into separate files ([891e8b7](https://github.com/google/adk-python/commit/891e8b78720ccca16da9b723ed33c29ea828b22a)) +* **workflow:** Standardize retry mechanics with attempt_count ([6f5d47c](https://github.com/google/adk-python/commit/6f5d47cc273ba9d25840808887ed0ae43791ad65)) +* **workflow:** Use Context as NodeRunner result channel ([8b18a19](https://github.com/google/adk-python/commit/8b18a195bef4a011bf8dce04f0e84f0d2e5b2ba3)) +* **workflow:** use run_id in output_for for precise state rehydration ([231eb5b](https://github.com/google/adk-python/commit/231eb5bac690d50ad8597948fe910b2f1d11bd8a)) +* **workflow:** Use sequential run_ids instead of UUIDs ([10754b3](https://github.com/google/adk-python/commit/10754b373b7c4282b80529696e03031320ef1502)) + + +### Documentation + +* Add adk-style skill for development best practices ([cee5aaa](https://github.com/google/adk-python/commit/cee5aaa2c3957b430aea3fc533d8286a80f90c9e)) +* Add git-ops skill for consistent commit conventions ([a66ce65](https://github.com/google/adk-python/commit/a66ce65b0f14fddb4ced58b49d36bb6fa1bfe797)) +* add parallel tool invocation examples and test cases for function tools and tool confirmation ([83ed380](https://github.com/google/adk-python/commit/83ed3804cf837b93479b1c52bd8928ca5e1a3133)) +* **adk:** clean up remote triggers README to remove internal references ([82a44ed](https://github.com/google/adk-python/commit/82a44ed9fffc46a900b41ba30161d62668d7fb55)) +* Auto-Assignment GitHub Action for Issues ([1cafbe4](https://github.com/google/adk-python/commit/1cafbe42169139807786cc1f42d9369bafb91597)) +* Feat/Issue Monitoring Agent ([3eb360f](https://github.com/google/adk-python/commit/3eb360f46d0d2910ac27805a38fae00465f0d3f2)) +* **samples:** add markdown table to streaming message sample ([2d5957e](https://github.com/google/adk-python/commit/2d5957eb3ca267659ba1619b39ff3279c93edf21)) +* **samples:** Add streaming message example ([1d59974](https://github.com/google/adk-python/commit/1d59974cf4ad003ad4e71481e478187a0505dab2)) +* **skills:** Add log redirection tip to enable agent debugging ([bdf4536](https://github.com/google/adk-python/commit/bdf453647a88465a21da14b4d0366e47c608154e)) +* **skills:** add observability architecture doc with span-on-Context design ([34e6235](https://github.com/google/adk-python/commit/34e623548d52ee466b922652f6f5ed571aa321d7)) +* **skills:** Add testing best practices to adk-style skill ([e1afa3e](https://github.com/google/adk-python/commit/e1afa3eaa6587d5dad876f48216f491ce6058171)) +* **skills:** add Workflow architecture reference for node authors ([716b4ca](https://github.com/google/adk-python/commit/716b4ca255feb364d177efbeb28ee2ab2f2f5dda)) +* **skills:** Document LLM context orchestration and update skill index ([349ed4f](https://github.com/google/adk-python/commit/349ed4ffd9be5f35edbd136f9dc9de1de5717496)) +* **skills:** enforce why-not-what in commit message descriptions ([02de279](https://github.com/google/adk-python/commit/02de279177efae37fb64d888d0780bbf5bf4e38a)) +* **skills:** enhance adk-style skill with latest architecture references ([104d265](https://github.com/google/adk-python/commit/104d265eb10af8351e10e89a0540161a494e9834)) +* **skills:** Rename execution_id to run_id in architecture refs ([19feb0b](https://github.com/google/adk-python/commit/19feb0b7097ac638ed39f0aa27d840f8cd443641)) +* **skills:** restructure adk-style into reference documents ([d897986](https://github.com/google/adk-python/commit/d89798653e7fa0d8f8a5d6a51e3a57384461df13)) +* **skills:** Update adk-debug skill with query mode best practices ([2b12bb6](https://github.com/google/adk-python/commit/2b12bb6b61f4e081e08d3c2861a3e67fad60bc48)) +* **skills:** Update adk-workflow and adk-debug for new adk run query mode ([cfc8673](https://github.com/google/adk-python/commit/cfc8673f360e516afedab26d43ea8da48114cae3)) +* **style:** Document ADK 2.0 paths to guide development and review ([3342146](https://github.com/google/adk-python/commit/3342146cfe020b0a82aba2a7897adca4001c8641)) +* update adk-workflow skills ([848ccc7](https://github.com/google/adk-python/commit/848ccc711b4622af88976cd75041fb50ef99452d)) +* update description of inline image from square to circle in agent workflow sample ([dd88f93](https://github.com/google/adk-python/commit/dd88f9320d0bdafb8dd3fc443f83d3ac48e9a165)) +* Update the MCP Toolbox docsite with the new URL ([57ae0b8](https://github.com/google/adk-python/commit/57ae0b87cc06d82d2a3451633de3fb6bd0cdd3b1)) +* Use a dedicated API key for docs agents ([1588cfc](https://github.com/google/adk-python/commit/1588cfc4588fe068302ed882c69f9829699b648c)) +* **workflow:** add comment to NodeState and fix formatting in _workflow_class.py ([c43953f](https://github.com/google/adk-python/commit/c43953f811105f7baeb388b52933a8a46be85dd9)) + ## [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) ### Features From ab2a8be821f2d4af401457759d7ffbe62fd989f3 Mon Sep 17 00:00:00 2001 From: Sasha Sobran Date: Thu, 9 Apr 2026 20:29:25 +0000 Subject: [PATCH 2/2] docs(release): update changelog for alpha.3 with clean summary --- CHANGELOG-v2.md | 323 +----------------------------------------------- 1 file changed, 3 insertions(+), 320 deletions(-) diff --git a/CHANGELOG-v2.md b/CHANGELOG-v2.md index dcf09873cc..25d6533869 100644 --- a/CHANGELOG-v2.md +++ b/CHANGELOG-v2.md @@ -2,328 +2,11 @@ ## [2.0.0-alpha.3](https://github.com/google/adk-python/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2026-04-09) - ### Features -* **a2a:** add lifespan parameter to to_a2a() ([a07d4ec](https://github.com/google/adk-python/commit/a07d4ec0233534c66c231a2392761214d9147878)), closes [#4701](https://github.com/google/adk-python/issues/4701) -* Add /apps/{app_name}/app-info endpoint to ADK CLI web server ([32b84c3](https://github.com/google/adk-python/commit/32b84c32f4f06616b1b2b6b6d802b6b4c94eee64)) -* Add a new extension for the new version of ADK-A2A integration ([0e3540f](https://github.com/google/adk-python/commit/0e3540fd978b0fcb6561cb217e3de31b2740e011)) -* add adk test CLI command and agent test runner for automated agent validation ([69d003b](https://github.com/google/adk-python/commit/69d003bb0d08e36e6092a50fa9925a6c70338ab7)) -* add ADK trigger endpoints to ADK Web Server ([78b0769](https://github.com/google/adk-python/commit/78b0769268326c11b2ee22aece34630cbf9a3778)) -* add agent callback demonstration sample with tool and model interception logic ([baf72cc](https://github.com/google/adk-python/commit/baf72ccd8c84596ff128bbda194535792673a9de)) -* add App.root_node support and refactor Runner init ([312ad76](https://github.com/google/adk-python/commit/312ad76876700ddd65e595d0270910f151bd176a)) -* Add auth scheme/credential support to MCP toolsets in Agent Registry ([953217b](https://github.com/google/adk-python/commit/953217b7c3cad2f90cfbacd5f522e18a0c3d8dda)) -* Add blacklist for shell metacharacters in BashTool ([df24de7](https://github.com/google/adk-python/commit/df24de7b50217a2c97d94e429dde1346c7ce387f)) -* add configurable resource limits for subprocesses in BashTool ([f9c5306](https://github.com/google/adk-python/commit/f9c5306cdbea56cbd130ca5b68617328b5de81a8)) -* Add configurable view_prefix to BigQueryLoggerConfig ([aba919e](https://github.com/google/adk-python/commit/aba919e2ca17950bcfac0bb943b4491ebbe75916)) -* Add custom session id functionality to vertex ai session service ([f2af1c4](https://github.com/google/adk-python/commit/f2af1c4ddb5dd728c8ad98776ef73b4883fab7d4)) -* Add database_role property to SpannerToolSettings and use it in execute_sql to support fine grained access controls ([c6cd81e](https://github.com/google/adk-python/commit/c6cd81e0ee7510535283c0ad0278c5beab301518)) -* Add Description column to SKILL.md and update terminology ([3ee4f5d](https://github.com/google/adk-python/commit/3ee4f5dda446d098d4d577d57d1c518e645ca227)) -* Add Easy GCP support to ADK CLI ([f6df2f2](https://github.com/google/adk-python/commit/f6df2f2d0af80fc9f8657db1846503c94d3aeb75)) -* Add index to events table and update dependencies ([a9ef695](https://github.com/google/adk-python/commit/a9ef6956c240b522be9049406e36297cbbd08934)), closes [#4827](https://github.com/google/adk-python/issues/4827) -* Add model validator to derive run IDs from paths and update node name property to strip run ID suffixes ([3533aa3](https://github.com/google/adk-python/commit/3533aa382d39e61c7e94d058eb77fe61b4a966fd)) -* Add MultiTurn Task success metric ([e46ee1e](https://github.com/google/adk-python/commit/e46ee1e6811a5a9c3858c5ff5c479ebe2ed3f108)) -* Add MultiTurn Task trajectory and tool trajectory metrics ([98f48a2](https://github.com/google/adk-python/commit/98f48a2aa66a843094bd6fec21381562f1005f40)) -* add new workflow sample test cases for output, input reruns, routing, and state management ([37a23ff](https://github.com/google/adk-python/commit/37a23ffa256baf10df74d087dd9455cce65ceaa6)) -* Add regional endpoint support to `SecretManagerClient` ([7a4114a](https://github.com/google/adk-python/commit/7a4114a928c48f41dda887d2c7977f13aeb79679)) -* add REST API endpoints for managing, running, and rebuilding agent tests with corresponding unit tests ([c168065](https://github.com/google/adk-python/commit/c168065b06b4bde7b9c7470e513d08c965d54400)) -* add run_id support to node execution and update parallel tool call naming and agent structure ([f602a7a](https://github.com/google/adk-python/commit/f602a7ac84f94a4d3e46adbffdd83181cb172062)) -* add set_model_response action to support structured tool outputs and agent termination ([8021312](https://github.com/google/adk-python/commit/8021312bc166e51b029471e71632dfbe0e2b884b)) -* Add slack integration to ADK ([e374394](https://github.com/google/adk-python/commit/e37439421dece957ba7edd48185e6bcc8644fb61)) -* Add Spanner Admin Toolset ([4c9475d](https://github.com/google/adk-python/commit/4c9475dbe0e4312cfc07ce33c329e73345ef906f)) -* Add SSE streaming support to conformance tests ([d3192bd](https://github.com/google/adk-python/commit/d3192bd99eb0dc548bb09a94ff101928b25db16a)) -* add sub-agents sample demonstrating hierarchical agent delegation ([6212201](https://github.com/google/adk-python/commit/62122013e44b6bfcdf7dcd15450e22186afee6f3)) -* add support for agent transfers, CLI argument handling, and set_model_response filtering in test runner ([d66d0f7](https://github.com/google/adk-python/commit/d66d0f7d0ad497b806d07c4f2fa839d77fec36be)) -* Add support for Anthropic's thinking_blocks format in LiteLLM integration ([6ab85e1](https://github.com/google/adk-python/commit/6ab85e1eeee55af01e58723e01a0be0e1872b952)), closes [#4801](https://github.com/google/adk-python/issues/4801) -* Add support for model endpoints in Agent Registry ([0d62a20](https://github.com/google/adk-python/commit/0d62a204fe333859a9d8a6ed56f0ffa491244904)) -* Add support for timeout to UnsafeLocalCodeExecutor ([226c3a6](https://github.com/google/adk-python/commit/226c3a66c66ea1e4a976eee5d1a19c489a9a461d)) -* Add support for toolsets to additional_tools field of SkillToolset ([a9abd8e](https://github.com/google/adk-python/commit/a9abd8ef7065216c93aaecd1d18d95575cb69c3c)) -* add tool confirmation sample agent with test cases ([308d01f](https://github.com/google/adk-python/commit/308d01fa57de7205b99783575004ff34a88b3006)) -* Added tracking headers for ADK CLI command to Agent Engine ([b52fddd](https://github.com/google/adk-python/commit/b52fddddddcd27d7b40453ddf4714f950f3ede13)) -* **agents:** Add explicit ReAct loop nodes to replace _SingleLlmAgent ([9445361](https://github.com/google/adk-python/commit/944536191ea16b050ba0a38ad5783108dd0b79bc)) -* **agents:** Allow toggling V1/V2 LlmAgent via feature flag ([644a26f](https://github.com/google/adk-python/commit/644a26fe694083714362173fce65ccc92aad111b)) -* **agents:** Deduplicate output events in react loop ([c0cee3b](https://github.com/google/adk-python/commit/c0cee3b99d1d13f1fa9c7e14ca90bb89d5f1f026)) -* **auth:** Add pluggable support for auth integrations using AuthProviderRegistry within CredentialManager ([00c0bb9](https://github.com/google/adk-python/commit/00c0bb93a4af2df17c3e31134b27f0b020b2a76c)) -* **auth:** Add public api to register custom auth provider with credential manager ([8569547](https://github.com/google/adk-python/commit/85695478e106b2a59e92d7b1cd8095d14676e295)) -* **auth:** Integrate GCP IAM Connectors (Noop implementation) ([596afe7](https://github.com/google/adk-python/commit/596afe78e0dd691517bcf4ac3d76f2e71681075a)) -* **auth:** Pass consent_nonce to Agent Frontend ([a611c32](https://github.com/google/adk-python/commit/a611c32db599370ec8b4e7322ba744e8f584d050)) -* **auth:** Support additional HTTP headers in MCP tools ([98d5ead](https://github.com/google/adk-python/commit/98d5eadedb367c5f2080813eca4c780c65815644)) -* **bigquery:** Add ADK 1P Skills for ADK BQ Toolset ([b982f70](https://github.com/google/adk-python/commit/b982f70cb7977025a70ce933792b80000e560076)) -* **bigquery:** Migrate 1P BQ Toolset ([5c4e660](https://github.com/google/adk-python/commit/5c4e660e5f64bb65f2d18dc6c27b9fda56baade8)) -* **cli:** Add default route label on edges and update agent icon ([b9abbbe](https://github.com/google/adk-python/commit/b9abbbeb5632a9a6659efacb303720c349231291)) -* **cli:** Add distinct icons for each node type in graph ([d250b0f](https://github.com/google/adk-python/commit/d250b0f87e0efc9195f15c394310e05e7087151f)) -* **cli:** add END node to graph ([1826da1](https://github.com/google/adk-python/commit/1826da110a00374e7e6790d244ae3a7c1d151de0)) -* **cli:** Add query mode to adk run and enhance flags ([010658a](https://github.com/google/adk-python/commit/010658aa154b408ef7e2485e5df093f301ccce95)) -* **cli:** Add tool confirmation support and fix auto-resume logic ([dea1c0a](https://github.com/google/adk-python/commit/dea1c0a9c323c73f8f1da8ddf9826d42288899b7)) -* **cli:** Add workflow icon to graph visualization ([4413109](https://github.com/google/adk-python/commit/4413109a1b6272b47db8aa609959a57047842aa1)) -* **cli:** display NO DEFAULT warning on conditional nodes lacking default routes ([a8730e2](https://github.com/google/adk-python/commit/a8730e2359c02f040973348f26c0eab744381024)) -* **cli:** display tool nodes with dashed outlines in workflow visualization ([4be07d9](https://github.com/google/adk-python/commit/4be07d9595bca8109b51dd2e453bb2dc3239f7f7)) -* **cli:** display tool nodes with dashed outlines in workflow visualization ([4cedd09](https://github.com/google/adk-python/commit/4cedd0952a7d18fcb7d7a83371db0b355f89a1bf)) -* **cli:** expose dark mode flag in graph visualization endpoint ([abf910e](https://github.com/google/adk-python/commit/abf910ef2e6a0f550a6f0ce4bc33c66d872115ef)) -* **cli:** Rename --ephemeral flag to --in_memory ([2bf292b](https://github.com/google/adk-python/commit/2bf292b91014d74481bf36810e4628fd2d8b4021)) -* **cli:** Render conditional nodes as diamonds in graph ([0552f28](https://github.com/google/adk-python/commit/0552f2847df7694f732929cc3c7319fab83784c6)) -* **cli:** Show END node only for workflow graphs ([a9707f4](https://github.com/google/adk-python/commit/a9707f4ea5f2a67ffd0a5213dafed3b12bacbf65)) -* **cli:** Support BaseNode as root in adk web and adk run ([1c2a81b](https://github.com/google/adk-python/commit/1c2a81bb675f98ba06ffcd5423f2c5aedce94bee)) -* **cli:** Support test rebuilding with multi-turn inputs ([04ad5d5](https://github.com/google/adk-python/commit/04ad5d50bf5fb414bde7de85756055fb7fea4bcf)) -* **cli:** Use monochrome icons for cleaner graph rendering ([345b3fc](https://github.com/google/adk-python/commit/345b3fceafa15b993ee5ab393e89ae227321f49b)) -* enable suppressing A2A experimental warnings ([e30b80c](https://github.com/google/adk-python/commit/e30b80c06721b682b09775c4517858aa95898474)) -* Enhance AgentEngineSandboxCodeExecutor sample to automatically provision an Agent Engine if neither agent_engine_resource_name nor sandbox_resource_name is provided ([e6bb836](https://github.com/google/adk-python/commit/e6bb8367da3cf292c655ce55c1c017a92ef248e4)) -* **environment:** Add EnvironmentToolset for file I/O and command execution ([a33c18d](https://github.com/google/adk-python/commit/a33c18d1dbdbe719c3cf690c99b0e676a54a1cd2)) -* **environment:** Add LocalEnvironment for executing commands and file I/O locally ([5c6376b](https://github.com/google/adk-python/commit/5c6376b7b0633bf2e177483d655e589fab169a33)) -* **eval:** Add ADK CLI for eval_set generation ([ea8bb44](https://github.com/google/adk-python/commit/ea8bb44dd9dbfb1274a6deb938b3359a653fd1d7)) -* **events:** Add message_as_output to NodeInfo ([35538c9](https://github.com/google/adk-python/commit/35538c9a21ee7a21551496a0db93b8a4794f2d77)) -* **events:** make run_id calculated and remove from JSON dump ([4476854](https://github.com/google/adk-python/commit/44768544554d28958744d4634f7c72eaa9469285)) -* Extract and merge EventActions from A2A metadata ([ec813eb](https://github.com/google/adk-python/commit/ec813eb3b7127e9ec3dd118dd6190fcfd351b7e7)), closes [#3968](https://github.com/google/adk-python/issues/3968) -* **features:** Enable NEW_WORKFLOW and V1_LLM_AGENT by default ([50952fa](https://github.com/google/adk-python/commit/50952fad530803f397f122a45523823f0228d744)) -* implement auto-incrementing run IDs for dynamic nodes to support parallel execution and resumption ([db25881](https://github.com/google/adk-python/commit/db25881ca063007623ec747f2cecb24be09db304)) -* implement recursive sub-workflow discovery and update get_app_info_image to return multi-workflow graph results ([3daf5f4](https://github.com/google/adk-python/commit/3daf5f4d6ac25fd18a98877f735f864450f34402)) -* Implement robust process group management and timeouts in BashTool ([011b650](https://github.com/google/adk-python/commit/011b6506b1d2a267b37893adfeb90b0f504c55a3)) -* implement task mode support in V1 LLM agent wrapper and add integration test samples ([6f17304](https://github.com/google/adk-python/commit/6f173041b3ea0a581eae809b58ae730a540a8c83)) -* Implement timeout for _node_runner_class and migrate previous tests ([f6660ae](https://github.com/google/adk-python/commit/f6660aea49bb0eacafca3500e65a2f2ae733e067)) -* **live:** support live for `gemini-3.1-flash-live-preview` model ([9d7dc02](https://github.com/google/adk-python/commit/9d7dc02ebb8901e09038e96d1f67e0e477feac58)) -* **mcp:** add sampling callback support for MCP sessions ([9d55d08](https://github.com/google/adk-python/commit/9d55d08bf3b9d52f2c77241594b3dfa16698ab96)) -* Option to use shallow-copy for session in InMemorySessionService ([a61a4b3](https://github.com/google/adk-python/commit/a61a4b3cc9ee3fe36c2134d99136ee8aa511d3d0)) -* Optional GCP project and credential for GCS access ([2fb2add](https://github.com/google/adk-python/commit/2fb2add45008bfd5ac7f50bfe76e903366c002b1)) -* **otel:** Add functional tests for workflow telemetry ([f4a4813](https://github.com/google/adk-python/commit/f4a4813640dd8333d1c83e4cf04204460f2cdff6)) -* **otel:** Instrument NodeRunner control flow ([d883a6d](https://github.com/google/adk-python/commit/d883a6d1662590b3e078f8ceac9409d0572fbde8)) -* Propagate context to thread pools ([33b3cfe](https://github.com/google/adk-python/commit/33b3cfe2e269d10623f941c6ef1ff469b479b06b)) -* refresh credentials if token is missing in the common code and samples ([ffa62d6](https://github.com/google/adk-python/commit/ffa62d6291017de953bb7cc885704588b72076c8)) -* Remove use of raw_event field in vertex ai session service ([92832fe](https://github.com/google/adk-python/commit/92832fea9c7fffa615dd373626e3bb20fab13114)) -* replace random number agent sample with bank account management sub-agents ([ee6f068](https://github.com/google/adk-python/commit/ee6f068e4fd8ce40250651e5cb9251f47688667b)) -* **runners:** Add resume and user message support for BaseNode root ([eb8718e](https://github.com/google/adk-python/commit/eb8718e73415f62c833eb2e769f1fe149bce76c8)) -* **runners:** Bring back the old find_agent_to_run logic for when LlmAgent is root agent ([a21c8c7](https://github.com/google/adk-python/commit/a21c8c74daf20ef21075b91227381122c0b690f2)) -* **runners:** Support BaseNode as root in Runner ([91b56b9](https://github.com/google/adk-python/commit/91b56b9ab07eca1e9b7b590e2ad6eee52898c0bc)) -* **skills:** Add adk-sample-creator skill for authoring samples ([80e90c9](https://github.com/google/adk-python/commit/80e90c9bd631c8e5bfae982d701b5ccb0cd173b6)) -* skip specific agent tests when V1_LLM_AGENT feature is enabled ([5514069](https://github.com/google/adk-python/commit/5514069ac5e9e17b8078dc955f6de49d4fa6af54)) -* **state:** Enforce state_schema at runtime in Workflow ([cf05bf8](https://github.com/google/adk-python/commit/cf05bf831b93e78615e683ff4fc3546de7e416b3)) -* Support AgentRegistry association ([2b1f1d6](https://github.com/google/adk-python/commit/2b1f1d6a30405ccc8e82dc2cbef35b2f534bbbe7)) -* Support new embedding model in files retrieval ([7d2ae06](https://github.com/google/adk-python/commit/7d2ae0641276086fbee67689912b86badd4c138b)) -* Support propagating grounding metadata from AgentTool ([98908cf](https://github.com/google/adk-python/commit/98908cf0617a3d26d83a97f5b8db97f71d35a428)) -* support routing maps as inline chain elements in edge definitions ([a625a24](https://github.com/google/adk-python/commit/a625a24e6cdf67194022fac92ea8968095ad8e7b)) -* Support short options and positional arguments in RunSkillScriptTool ([74ee598](https://github.com/google/adk-python/commit/74ee598683288bf4d029933cd4b63167fba6c357)) -* **test:** Support custom pytest args and ensure reproducible test results ([4035cbd](https://github.com/google/adk-python/commit/4035cbdf2701d075a6278e844ef168b1bbdfe84d)) -* update nested workflow agent to pass year state to downstream agents and format aggregation output ([dd3fc8b](https://github.com/google/adk-python/commit/dd3fc8b0f44f0546a0a670f303176a636d7e62db)) -* Use raw_event field in vertex ai session service for append and list events ([95adb64](https://github.com/google/adk-python/commit/95adb6474fca7c77e288bf644230b09a428dd664)) -* Use raw_event to store event data in vertex ai session service ([c08fee5](https://github.com/google/adk-python/commit/c08fee5b16b2de43368ad3b3500ab8eca926f8cc)) -* **workflow:** Add ctx.event_author for orchestrator-owned authorship ([26a9232](https://github.com/google/adk-python/commit/26a9232da2cde4c4c745e82864c924759d628e2b)) -* **workflow:** Add custom run_id support to ctx.run_node() ([88638ba](https://github.com/google/adk-python/commit/88638ba4024c6a0bba26c18900d520c975729826)) -* **workflow:** Add DefaultNodeScheduler for standalone node resume via ctx.run_node() ([a68e70d](https://github.com/google/adk-python/commit/a68e70d5da23eaafc5db5611205d34976cb98e5a)) -* **workflow:** Add execution logging to improve debuggability ([7cd7420](https://github.com/google/adk-python/commit/7cd7420ee7a2b3456d8674e37e9d9966e94d1bf3)) -* **workflow:** add FunctionNode auth_config ([d93cdf3](https://github.com/google/adk-python/commit/d93cdf35dbcfc57fb31ea7a22cae1fb23b7b3c0d)) -* **workflow:** Add HITL resume via event reconstruction ([ca32732](https://github.com/google/adk-python/commit/ca32732991c89a3a0ab88a43874182af3e937a13)) -* **workflow:** Add lazy scan dedup and resume for dynamic nodes ([d600b19](https://github.com/google/adk-python/commit/d600b195bd5831cb6bc460e704178b739880576f)) -* **workflow:** Add NEW_WORKFLOW feature flag to toggle implementation ([5d60005](https://github.com/google/adk-python/commit/5d6000592f46428ef748f22e3f3fb09c9ece6ec1)) -* **workflow:** add node-level retry support in NodeRunner ([c51c05c](https://github.com/google/adk-python/commit/c51c05c2bd4cede67dd7164fbebb925a2e551e28)) -* **workflow:** Add NodeRunner class for per-node execution ([0b3e704](https://github.com/google/adk-python/commit/0b3e7043c47228f0ba1d89d6c86a0cf6a67ebd31)) -* **workflow:** Add output_for field to Event for output delegation tracking ([d56e11e](https://github.com/google/adk-python/commit/d56e11ed68dd45bdea8cbf837f535c3baf66ba1d)) -* **workflow:** Add Workflow(BaseNode) graph orchestration implementation ([c25d86f](https://github.com/google/adk-python/commit/c25d86f1adf6b32e5cc780880acf3d2e15e0b984)) -* **workflow:** Allow ctx.run_node() without a Workflow wrapper ([68c7c7e](https://github.com/google/adk-python/commit/68c7c7ed64c51cbf2850f729167a8ab7bc97de40)) -* **workflow:** Bundle state/artifact deltas into next yielded event ([2334098](https://github.com/google/adk-python/commit/2334098ef22c69970dad575683ae7f411a0b6a0d)) -* **workflow:** emit error event on each retry in NodeRunner ([4ce11d3](https://github.com/google/adk-python/commit/4ce11d33e3f9da0960a168a6c2c3c3a8cbcaa4c3)) -* **workflow:** emit error events on node failure ([4561d04](https://github.com/google/adk-python/commit/4561d04ab3961d4056d5a1d4a92b742e9a38af69)) -* **workflow:** Enable partial resume for nested Workflows ([c65ed8d](https://github.com/google/adk-python/commit/c65ed8d4a82ba902fede9d15bfd84580694a110b)) -* **workflow:** Fix LRO pause condition and add cross-branch lookup tests ([1fc6c68](https://github.com/google/adk-python/commit/1fc6c684870bd3dfb6c705ba5fe7a362ad2a5e03)) -* **workflow:** Flush state/artifact deltas onto yielded events ([0015308](https://github.com/google/adk-python/commit/0015308820a86e076581547ae585ade853f82707)) -* **workflow:** Log node execution exceptions ([b65bcf1](https://github.com/google/adk-python/commit/b65bcf16cca705d2b76fa8066974bcbef3d95e97)) -* **workflow:** Migrate dynamic node tests and fix resume/error gaps ([70ddcfe](https://github.com/google/adk-python/commit/70ddcfee2554aad4d24a500b88e8c3119b574e83)) -* **workflow:** Refactor DynamicNodeState to use nested dictionary structure ([bd015ea](https://github.com/google/adk-python/commit/bd015ea7bdcb914ac95ef40dd4506a205e3feccf)) -* **workflow:** Reuse execution_id on resume ([8a39dbf](https://github.com/google/adk-python/commit/8a39dbfcec742d2fdda9bc51b81bf9a855c10fb3)) -* **workflow:** support error in new workflow, graceful shutdown upon node error, and reduce duplicate error events ([525a47e](https://github.com/google/adk-python/commit/525a47e037b4233144c5f06483b7a36fbe4214de)) -* **workflow:** Support JSON string parsing in schema validation ([3efeee5](https://github.com/google/adk-python/commit/3efeee5764388fce6dfad1c9b03f4db0df008602)) -* **workflow:** Support node_input parameter binding for FunctionNode ([1472798](https://github.com/google/adk-python/commit/14727980e6ebf5da77e25140aa89c98f845f87b0)) -* **workflow:** Support object schema validation for HITL resumption ([ebec6ca](https://github.com/google/adk-python/commit/ebec6ca4ba48d259701fc041e07d4b8feda3ff83)) -* **workflow:** support output_schema validation in Workflow ([b902877](https://github.com/google/adk-python/commit/b902877705e354f2c7a40e56b049c3e2bc04ff37)) -* **workflow:** Support parsing input schema from Content text ([d7de2f7](https://github.com/google/adk-python/commit/d7de2f741ca7c477ae7a73e268ff16fe25ac9a1e)) -* **workflow:** support single-turn agents as tools and miscellaneous fixes ([30af95c](https://github.com/google/adk-python/commit/30af95c52c2ad1955e22cb1b2f48f532a37374b1)) -* **workflow:** support sub_branch in context and scheduler ([202b105](https://github.com/google/adk-python/commit/202b105b0c56a5f670d538a6ca5631c6884588ee)) -* **workflow:** Support use_as_output for dynamic node output dedup ([c9d81cb](https://github.com/google/adk-python/commit/c9d81cb7924d4291515102f119a1a047cd606c9a)) -* **workflow:** Support use_as_output in new Workflow class ([2a10462](https://github.com/google/adk-python/commit/2a10462afec8e38e9b1ba73fb32ce1c038e81c0d)) -* **workflow:** Support V1 agents in new workflows ([008dce8](https://github.com/google/adk-python/commit/008dce8077434443a725c0095efb39edd074f78d)) -* **workflow:** Support wait_for_output in dynamic nodes ([206a490](https://github.com/google/adk-python/commit/206a49036c881b2fe2f73ac6dc363e9fbbed1503)) -* **workflow:** Use SingleAgentReactNode for leaf single_turn agents in new Workflow ([dc2adf9](https://github.com/google/adk-python/commit/dc2adf9869a822e806fe36e95261d9119fc4271b)) - - -### Bug Fixes - -* Add A2ATransport.http_json to the default supported transports list ([6985cf8](https://github.com/google/adk-python/commit/6985cf83aafb5357da1a64e41cccc644a45c9416)) -* add agent name validation to prevent arbitrary module imports ([35355c3](https://github.com/google/adk-python/commit/35355c30dca460b80069a923abeec5e55eeb0c0b)) -* add httpx_client_factory support to SseConnectionParams ([a8122ef](https://github.com/google/adk-python/commit/a8122ef014d9892f991e0b51eba45a3811c7e3ab)) -* add missing import and fix variable name typo ([256c961](https://github.com/google/adk-python/commit/256c96119c95a5227c032a3d25f8cb8bdf34a5cf)) -* add protection for arbitrary module imports ([887a279](https://github.com/google/adk-python/commit/887a2796d385bad5b225229d9c7f14e009079437)), closes [#4947](https://github.com/google/adk-python/issues/4947) -* Add read-only session support in DatabaseSessionService ([7a31c61](https://github.com/google/adk-python/commit/7a31c61a87bd57970b83655c0b29db6593ee82e9)), closes [#4771](https://github.com/google/adk-python/issues/4771) -* **adk:** redact credentials in BigQuery analytics plugin ([77ae721](https://github.com/google/adk-python/commit/77ae72130cf71686ab5f3977ce92297c2eff64e7)) -* Allow snake case for skill name ([52250da](https://github.com/google/adk-python/commit/52250da81f237002e4e6df2efeeae750eeebbcc7)) -* api client initialization logic to be mutually exclusive between ExpressMode and GCP projects ([2514c1e](https://github.com/google/adk-python/commit/2514c1e5c0966be54adce38359ac2d627e144421)) -* **bigquery:** use valid dataplex OAuth scope ([b1e0188](https://github.com/google/adk-python/commit/b1e01889340b8ca7c4c74018830f6d408be1ae0e)) -* Cache BaseToolset.get_tools() for calls within the same invocation ([d568bf0](https://github.com/google/adk-python/commit/d568bf03a02e2a21a0e685bd82b7dbcf842142b8)) -* **cli:** fail Agent Engine deploy when config file path is invalid ([0737d07](https://github.com/google/adk-python/commit/0737d07975caf7c921ddca5b345d7636a6e4e613)) -* **cli:** Reset agent cache in test_agent_replay to ensure isolation ([017fef4](https://github.com/google/adk-python/commit/017fef45dee45b2ba09a40881ce7148b533901c6)) -* **cli:** Support Workflow graph visualization in web UI ([095a5c4](https://github.com/google/adk-python/commit/095a5c42ba2172a6a8e52fbb8383796f9e06d372)) -* **cli:** Update import path for renamed NodeStatus module ([977696e](https://github.com/google/adk-python/commit/977696ec91e4ef89407dd589705034d45541b2d4)) -* Default to ClusterIP so GKE deployment isn't publicly exposed by default ([d58ee0e](https://github.com/google/adk-python/commit/d58ee0e29e5adfac5dc5cbd49579e6a869f8b89b)) -* **deps:** bump google-genai minimum to >=1.64.0 for gemini-embedding-2-preview ([9300431](https://github.com/google/adk-python/commit/93004310668098517930019dd4e5c3a04eeeba30)) -* Disable tool caching for skill toolset ([8be229f](https://github.com/google/adk-python/commit/8be229fe4e417a96ad9b0ec086a8ec0754450538)) -* Disallow args on /builder and Add warning about Web UI usage to CLI help ([73a2d5a](https://github.com/google/adk-python/commit/73a2d5a6d2cb6ca73e0db214e6a7e460dbb29f75)) -* **docs:** add ctx param to retry sample README snippet ([fc90f36](https://github.com/google/adk-python/commit/fc90f364f95e15205bb4cd6d3b810dcfcbc78547)) -* empty events_iterator assignment ([880c303](https://github.com/google/adk-python/commit/880c30394af55c9e01796d926106bd5cad41af92)) -* enforce allowed file extensions for GET requests in the builder API ([a499651](https://github.com/google/adk-python/commit/a499651ce7415a5155ae24fae6f6a838ce411c32)) -* Enhance ADK release analyzer with resume functionality and better session management ([908179e](https://github.com/google/adk-python/commit/908179e1a274e6c9e33328831c8a6c852168c720)) -* **environment:** fix package references ([a925cdb](https://github.com/google/adk-python/commit/a925cdb8d3937da4c8137707ff3bfb07e2e90e5a)) -* error when event does not contain long_running_tool_ids ([8fbae27](https://github.com/google/adk-python/commit/8fbae27d6cbd145a0aba63f43d2010bdf52fff1f)) -* Exclude compromised LiteLLM versions from dependencies pin to 1.82.6 ([5b1ce6b](https://github.com/google/adk-python/commit/5b1ce6b919fa3b869a06cc517b79d04243616d6a)) -* Fix imports for environment simulation files ([f7185b7](https://github.com/google/adk-python/commit/f7185b747cc1dfb3737b7a496b1341c81c57556a)) -* Fix RemoteA2AAgent deepcopy errors ([c730ac3](https://github.com/google/adk-python/commit/c730ac3c2ceb9e8ea326b6dbe8fcf30c48ddd8bf)) -* Fixes for initializing RemoteA2aAgent - passing in preferred transport, protocol version, and auth headers ([56d29f5](https://github.com/google/adk-python/commit/56d29f56049f3efd3f76e561fa8d0623b13e1baf)) -* **flows:** Isolate sub-agent responses to prevent context leakage ([e25acb7](https://github.com/google/adk-python/commit/e25acb7f071bd0a530f215814b43bd999d20d666)) -* gate builder endpoints behind web flag ([be3712a](https://github.com/google/adk-python/commit/be3712a0b04834075106e69363afa481be8703af)) -* Generate IDs for FunctionCalls when processing streaming LLM responses ([3e94031](https://github.com/google/adk-python/commit/3e9403193a40276d274c7f45c5dd6f6cf7b39ad0)), closes [#4609](https://github.com/google/adk-python/issues/4609) -* Handle concurrent creation of app/user state rows in DatabaseSessionService ([8d0aacb](https://github.com/google/adk-python/commit/8d0aacb58dad338c4111031b20b728cede977251)), closes [#4954](https://github.com/google/adk-python/issues/4954) -* Handle merging lists in deep_merge_dicts ([e934819](https://github.com/google/adk-python/commit/e934819569beb2dc610a874d96db2f5869c44e07)) -* In memory session service to evaluate dictionary keys and value into an isolated snapshot sequence before starting loop ([18dcfc5](https://github.com/google/adk-python/commit/18dcfc509cbcbf018092b37d59619ff072ea3643)) -* include intermediate subagent final response events in evaluation intermediate data ([81d0465](https://github.com/google/adk-python/commit/81d0465111745e895bd47f48c537bc4e1db0d6af)) -* **live:** Buffer tool calls and emit them together upon turn completion ([89ef399](https://github.com/google/adk-python/commit/89ef39998b744309f8034208d12fc82d20387551)) -* **models:** handle arbitrary dict responses in part_to_message_block ([ec5e2f7](https://github.com/google/adk-python/commit/ec5e2f7536b088057dffc69626995fc29b73a8a1)) -* **models:** update 429 docs link for Gemini ([860a3a3](https://github.com/google/adk-python/commit/860a3a3032f494e7543fbcb416f024f09b5b2744)) -* populate `required` for Pydantic `BaseModel` parameters in `FunctionTool` ([923fc9a](https://github.com/google/adk-python/commit/923fc9a4817801ee8685f3863a0838b82b8ec688)), closes [#4777](https://github.com/google/adk-python/issues/4777) -* Preserve thought_signature in LiteLLM tool calls ([cfd87f0](https://github.com/google/adk-python/commit/cfd87f0e0bc35394b90af04bb4ff85e2a5efb5b2)), closes [#4650](https://github.com/google/adk-python/issues/4650) -* Prevent compaction of events with pending function calls ([824fcda](https://github.com/google/adk-python/commit/824fcda429f324269defd11815e8aff2dc5915f4)), closes [#4740](https://github.com/google/adk-python/issues/4740) -* Refactor blocking subprocess call to use asyncio in bash_tool ([6c1ce79](https://github.com/google/adk-python/commit/6c1ce79ab8524e1df45f3e3ac2ca7911d286be07)) -* Refactor LiteLlm check to avoid ImportError ([1fab051](https://github.com/google/adk-python/commit/1fab0516396c204225f428a9af7dd39f8d159908)) -* Refactor type string update in Anthropic tool param conversion ([1ab3964](https://github.com/google/adk-python/commit/1ab3964aad0fcfe5e267ad1ae87b3fcf1576fb57)) -* Reject appends to stale sessions in DatabaseSessionService ([a859570](https://github.com/google/adk-python/commit/a85957049c3462eb924515b20df40e2ff04903a8)), closes [#4751](https://github.com/google/adk-python/issues/4751) -* Remove redundant client_id from fetch_token call ([630d001](https://github.com/google/adk-python/commit/630d0017e411afdd09987e04181810560e0d81fb)), closes [#4782](https://github.com/google/adk-python/issues/4782) -* resolve 6 test failures in unit tests ([05c1a2d](https://github.com/google/adk-python/commit/05c1a2d6f4bbe990328182092d2e2ba3b434eed7)) -* returns '<No stdout/stderr captured>' instead of empty strings for clearer agent feedback and correct typing ([5e2619a](https://github.com/google/adk-python/commit/5e2619aaa15b0a01591e56e431a010f1ce5c514c)) -* **runners:** exclude LlmAgent from node execution path in Runner ([dfdf00a](https://github.com/google/adk-python/commit/dfdf00a6de2da617004e6caaee3036524766fa20)) -* **runners:** Expose exception callstack for root node failures ([ca6e053](https://github.com/google/adk-python/commit/ca6e0533af1c9db7addee03f793f3c8cc03fadd0)) -* Safer fix for UI widget merging in ADK ([c5e0045](https://github.com/google/adk-python/commit/c5e0045164a05f3c02bc1ad70609872587b6a2eb)) -* **samples:** Prevent infinite loop from dynamic node dedup in loop ([7622f29](https://github.com/google/adk-python/commit/7622f29b67fb60cc648738a384fc8009a720854a)) -* Small fixes for express mode ([9c09716](https://github.com/google/adk-python/commit/9c0971664a63ea39ddec0b44757b4e7b423792fd)) -* Store and retrieve usage_metadata in Vertex AI custom_metadata ([fea1b8f](https://github.com/google/adk-python/commit/fea1b8f887a3da44eaa33556a1d95ce271eac8f2)) -* Support resolving string annotations for `find_context_parameter` ([2030777](https://github.com/google/adk-python/commit/203077752fcb51a6ace5fc36d8de3bf24b21eee3)) -* sync callbacks with call_llm span ([959e88d](https://github.com/google/adk-python/commit/959e88d2b095f3a1f12555a6229f8467df63351e)) -* **telemetry:** ensure using Aclosing when calling agen from framework code to developer-written codes. ([5c03607](https://github.com/google/adk-python/commit/5c036076309b3015b613b1e68ea9f90107b32d3e)) -* **testing:** make agent test replay deterministic for parallel workflows ([56797a6](https://github.com/google/adk-python/commit/56797a603c18209730743c6beb5abfb8dd8e5af8)) -* **testing:** Make agent test replay deterministic to prevent flaky failures ([d3e9d23](https://github.com/google/adk-python/commit/d3e9d238fc9cf5766e89e265c73c6398dea74b61)) -* **tests:** add _state_schema to InvocationContext mocks ([17e35a8](https://github.com/google/adk-python/commit/17e35a8e07d775780824ccff72b7c5f2e9c968b7)) -* **tests:** Align retry sample test with 1-based attempt count ([61a8b5b](https://github.com/google/adk-python/commit/61a8b5b9b896797509d40d09a3053ab4b4824112)) -* **tools:** Acknowledge safety decisions to prevent API errors ([bdfdb33](https://github.com/google/adk-python/commit/bdfdb33a64668ba6192eecd54b0396522e7348ba)) -* **tools:** disable default httpx 5s timeout in OpenAPI tool _request ([1697e8d](https://github.com/google/adk-python/commit/1697e8d5f40e80b316703820d85c32f36a2d5927)), closes [#4431](https://github.com/google/adk-python/issues/4431) -* **tools:** handle toolset errors gracefully in canonical_tools ([c3d7f7f](https://github.com/google/adk-python/commit/c3d7f7fcbc4f8bb06c78ba8611eb4c7a9aba33d0)) -* **tools:** support regional Discovery Engine endpoints ([1e12eac](https://github.com/google/adk-python/commit/1e12eacb53489efcf4dc889d3817ac70b4f756e8)) -* **tools:** support structured datastores in DiscoveryEngineSearchTool ([da84e59](https://github.com/google/adk-python/commit/da84e59054048a763fab4bafcf4bc6a2d7ba8b14)), closes [#3406](https://github.com/google/adk-python/issues/3406) -* truncate error_message in v0 schema to prevent VARCHAR overflow ([feea8ca](https://github.com/google/adk-python/commit/feea8cac433b57b6e71a1745c0af487d00be84d6)), closes [#4993](https://github.com/google/adk-python/issues/4993) -* Update Agent Registry to use the full agent card if available ([e295d8a](https://github.com/google/adk-python/commit/e295d8aa4e0f9e3bc388a0845ad9580077300326)) -* Update eval extras to Vertex SDK package version with constrained LiteLLM upperbound ([bba5e79](https://github.com/google/adk-python/commit/bba5e79f771d84793ffde3087a479526510830b0)) -* Update import and version for k8s-agent-sandbox ([d0526b9](https://github.com/google/adk-python/commit/d0526b91b990f7a99af432516b9dcc77cc32ac96)), closes [#4883](https://github.com/google/adk-python/issues/4883) -* Update list_agents to only list directories, not validate agent definitions ([159f5ed](https://github.com/google/adk-python/commit/159f5ed6ad3c466c92d2a78eb437789039c9ad5d)) -* update toolbox-adk and toolbox server versions ([ad4ebb6](https://github.com/google/adk-python/commit/ad4ebb65947420417991182e1cd58340d34ad356)) -* Update v2 release workflow to be dispatched from v2 branch ([51e07b3](https://github.com/google/adk-python/commit/51e07b3610536c190b0f5cdcea4cf8f154f91f75)) -* **workflow:** Add input schema check and fix JoinNode ([d4973e9](https://github.com/google/adk-python/commit/d4973e90f0dc144fced6fae99a1dc027d41034e4)) -* **workflow:** Align nested workflow tests with V2 event protocols ([6e11f8f](https://github.com/google/adk-python/commit/6e11f8f842172e1c475afdd21d5be536f107a9ab)) -* **workflow:** Content→str in BaseNode input validation ([5f51958](https://github.com/google/adk-python/commit/5f51958e3c531c9e569dbe47bec63919159f6658)) -* **workflow:** Deduplicate terminal node output events ([93eb6d0](https://github.com/google/adk-python/commit/93eb6d0d72885e1f6bcba4b575ee750aa14acbf5)) -* **workflow:** Delete test_workflow_agent.py as it is duplicated ([bcd5e91](https://github.com/google/adk-python/commit/bcd5e9163d565ef8f3c26d8f93ccb612f9593638)) -* **workflow:** Disable sleep in message sample during pytest ([1936d46](https://github.com/google/adk-python/commit/1936d464e12f78dc7275975abea2ebb3961c05cb)) -* **workflow:** Eliminate duplicate output events in nested workflows ([8e5e111](https://github.com/google/adk-python/commit/8e5e111d546a23e443c84bb23b5c979e001bed64)) -* **workflow:** ensure non-rerunnable nodes complete and trigger downstream on resume ([03b7c95](https://github.com/google/adk-python/commit/03b7c95c9c84be031bfb6ee2fb87e1f3f2a9d37d)) -* **workflow:** Fix agent transfer failures and routing in non-resumable turns ([e516e26](https://github.com/google/adk-python/commit/e516e2666b5047680c6e31704391bb22fd8c20ab)) -* **workflow:** Fix node wrapper equality for duplicate checks ([677d18a](https://github.com/google/adk-python/commit/677d18a7a9bd0fdd05e5b0d12f3fd75192fa4e33)) -* **workflow:** handle empty parent path in is_descendant and direct_child_name ([c826e6d](https://github.com/google/adk-python/commit/c826e6d68d45bc4e553771c9421c9d811cdedc63)) -* **workflow:** Implement state_schema validation in V2 workflow ([c073b5d](https://github.com/google/adk-python/commit/c073b5d44b87f920545bc5ca6e0f9805b5cb3e56)) -* **workflow:** isolate node state per run to fix infinite loop ([c55d794](https://github.com/google/adk-python/commit/c55d79493993122270a948f6d293d0e85b188fdd)) -* **workflow:** Prevent re-execution of completed dynamic nodes on resume ([aa7925b](https://github.com/google/adk-python/commit/aa7925b0cd047d13443ef37b4e4e41d9bbce727f)) -* **workflow:** Prevent run_id reset for WAITING nodes ([66090d6](https://github.com/google/adk-python/commit/66090d6ee5945f2e583da4cd89f3df3ce9b7f20d)) -* **workflow:** refine node timeout implementation in NodeRunner ([569f6b9](https://github.com/google/adk-python/commit/569f6b9487a06dc91f7619f5d37de14e5ef98622)) -* **workflow:** Reject multiple output events per node ([0368e38](https://github.com/google/adk-python/commit/0368e380051be8c66190dda49c876a548c6245b7)) -* **workflow:** restore early-2.0 scheduler fallback in ctx.run_node() ([211bc1c](https://github.com/google/adk-python/commit/211bc1cb4b74de1e1e442d13a8dce1609930c957)) -* **workflow:** Restore legacy agents and fix regressions in tests ([4fc8360](https://github.com/google/adk-python/commit/4fc83607b17b53b92234d0ccefd217d28a792aaf)) -* **workflow:** Restore run_counter during rehydration to ensure unique loop paths ([7127b61](https://github.com/google/adk-python/commit/7127b618519f6cb6f7f41328d93d15e75974d3f4)) -* **workflow:** Standardize node paths to name@run_id to prevent state collision and fix descendant bug ([e8c8b15](https://github.com/google/adk-python/commit/e8c8b15e290d76b269fdd8a78af3000994772c00)) -* **workflow:** Stop SingleAgentReactNode loop on interrupt ([181dc23](https://github.com/google/adk-python/commit/181dc230815a68d48ccbbd90b36aaa1ad8d5ebc3)) -* **workflow:** Unwrap FR responses in resume event scanning ([b66de99](https://github.com/google/adk-python/commit/b66de99266ac931cfece172240c9ea5e60c4b160)) -* **workflow:** use rsplit for safer node name extraction ([0e06e5b](https://github.com/google/adk-python/commit/0e06e5bf5f08147291e9db1bb74ee385e989f274)) - - -### Performance Improvements - -* **workflow:** Bypass Mesh for leaf single_turn LlmAgent ([d864917](https://github.com/google/adk-python/commit/d864917fb6e8c82c4a67941cc8e8d11f9f7540d1)) - - -### Code Refactoring - -* **agents:** Extract _convert_tool_union_to_tools to shared module ([d1ca561](https://github.com/google/adk-python/commit/d1ca561979565f99e022dbe8cf3ed3f107ed51b9)) -* **agents:** Isolate V2 agents to llm_agent_workflow for V1 shim ([ab60439](https://github.com/google/adk-python/commit/ab604397a411a384aecb90bd4c17c719187b6d9a)) -* **agents:** Separate 2.0 LlmAgent into llm_agent_workflow/ and llm_agent_node/ ([cc51a76](https://github.com/google/adk-python/commit/cc51a76d5519d36036fcf14c3a317550ecc4d4d9)) -* **agents:** simplify tool execution flow by returning ToolActions directly ([4121f79](https://github.com/google/adk-python/commit/4121f79af173291ea35efad898badfe69a53013b)) -* **agents:** streamline tool output handling and execution flow ([62aeab4](https://github.com/google/adk-python/commit/62aeab46013609d850ac2568a30e9bceb347ab6c)) -* batch eval set results saving so they are grouped under the same run ([ee0f4bc](https://github.com/google/adk-python/commit/ee0f4bca0df1b35aa7b3c49fd050d62b119c9d6b)) -* centralize V1 agent test skipping logic in root conftest and remove redundant agent-level conftest ([976babf](https://github.com/google/adk-python/commit/976babf14b219a67828d4a764b2953f58cd96327)) -* **cli:** Optimize event printing and fix test mocks ([c7f6d24](https://github.com/google/adk-python/commit/c7f6d249d29db38cb5cd43f56793e7bb2cfe94cd)) -* consolidate root_node and root_agent into a single root_agent field in App and Runner classes ([6d930e8](https://github.com/google/adk-python/commit/6d930e880d58f661482dc67ae728173fca7af454)) -* Copy flows/ to ADK 2.0 ([a633b93](https://github.com/google/adk-python/commit/a633b9336cef68d114b221cc7174e0536dfbbaf7)) -* **events:** Remove unnecessary null checks for actions and node_info ([b8fa48a](https://github.com/google/adk-python/commit/b8fa48abb97f102b40e0c32d7064df9b836ae036)) -* fix merge bug. ([3fafc95](https://github.com/google/adk-python/commit/3fafc957544d2deeb4060ddc08002905b6b95beb)) -* group evaluation results by set ID to support multi-set processing and update test assertions ([0b5f4bf](https://github.com/google/adk-python/commit/0b5f4bf9e85ad8f53431d44b96dd890d6b49e18c)) -* move auth, confirmation, and long-running tool handling logic from parallel to individual tool call nodes ([8a7d30d](https://github.com/google/adk-python/commit/8a7d30dc9982b23ee19ecf89dce43251347f9fa6)) -* move new llm implementation to the folder 'new' and rename them to the final names. ([9c345de](https://github.com/google/adk-python/commit/9c345de849a0bbb4c54e535d6b8623808e73700c)) -* Move SecretManagerClient to google.adk.integrations.secret_manager package ([8359c9d](https://github.com/google/adk-python/commit/8359c9d94a5d437ebdebc448bb4a5c8336e70ced)) -* remove automatic test rebuilding from web server session save endpoint ([4d14acd](https://github.com/google/adk-python/commit/4d14acd6a2977bf1cfed747d326dc5121ef0530f)) -* remove legend generation from graph visualization output. We show them directly in the UI. ([bac858f](https://github.com/google/adk-python/commit/bac858f460a24670803ff6f19e93f049fb7fd306)) -* remove ParallelToolCallResult and use node_info.message_as_output for event handling and action propagation. ([1701611](https://github.com/google/adk-python/commit/17016115944b5b922d1c709a1fd90952584e732a)) -* Remove redundant _node_name parameter from dynamic node scheduling methods ([798749a](https://github.com/google/adk-python/commit/798749a93712ec11be5dec68dc78ac487b46eb96)) -* Remove the session events dependency from A2aAgentExecutor ([7bc2808](https://github.com/google/adk-python/commit/7bc2808d09fa8df0913981497fbc6f21d6e01f6d)) -* rename agent simulator to environment simulation. Also add tracing into environment simulation ([23b4d92](https://github.com/google/adk-python/commit/23b4d92f2f762cda58f566703e702704ee71df69)) -* **skills:** split architecture reference into topic files ([d0db5af](https://github.com/google/adk-python/commit/d0db5af43824d3aeb1a2514b5dc5906fa7050cdf)) -* **tests:** Restructure workflow tests, separating legacy stack and organizing components ([6987f52](https://github.com/google/adk-python/commit/6987f52de3828fa7992a39bbe3a2f4aa5d08eca7)) -* update agent workflow to use tool confirmation. Currently tests fail due to interruption not supported in llm agent as a node in a workflow. ([1f898f8](https://github.com/google/adk-python/commit/1f898f833d6a66649f7522e051f0400bb78d23b2)) -* update graph node font colors to use dynamic node_fontcolor variable ([8695ed9](https://github.com/google/adk-python/commit/8695ed90e06c4ba88da8071c433e92a9e2e7e9c3)) -* update LLM nodes to use message content as output via node_info flag ([9ed61bc](https://github.com/google/adk-python/commit/9ed61bc44ba81bc7bc45f5e6194e51438c8eb635)) -* update message_as_output type hint to allow None values ([cf0f034](https://github.com/google/adk-python/commit/cf0f034559b9dd94d064f155e9b891d961016118)) -* **workflow:** BaseNode [@final](https://github.com/final) run() + _run_impl() split ([a8cf19d](https://github.com/google/adk-python/commit/a8cf19dcc0a11e45d398f051b89995019d571a9d)) -* **workflow:** Extract DynamicNodeScheduler to own file ([2464408](https://github.com/google/adk-python/commit/246440841b5c6354e7ee2d436a9439d3041c1996)) -* **workflow:** Extract Trigger into standalone _trigger.py ([65e565e](https://github.com/google/adk-python/commit/65e565ed09919ab71b327f8cc7d4a8bc066cbf2e)) -* **workflow:** make graph public for dev UI serialization ([c823c20](https://github.com/google/adk-python/commit/c823c20b567f6213145545fa8caedc68f6618840)) -* **workflow:** Remove name from ctx.run_node() and update ParallelWorker ([a816125](https://github.com/google/adk-python/commit/a8161251b24d4c4f6331108b6206dd46ad13c432)) -* **workflow:** Remove run ID handling in tests ([2368fb8](https://github.com/google/adk-python/commit/2368fb862f0d25fff0fb731b58166404f901055e)) -* **workflow:** Remove unused node_name_map parameter from simplify_event_with_node ([d0f04cc](https://github.com/google/adk-python/commit/d0f04cc580e152bcd12d8e561e78678e682cd727)) -* **workflow:** Rename execution_id to run_id ([95a8dd5](https://github.com/google/adk-python/commit/95a8dd5e288fdd54d4128984632993f9dc070c8e)) -* **workflow:** Simplify node runner metadata handling ([2be5027](https://github.com/google/adk-python/commit/2be50272395af17252d8a5a971a8aa3f23c241ff)) -* **workflow:** Simplify ToolCallNode to yield raw response dicts ([26a2cc2](https://github.com/google/adk-python/commit/26a2cc205a6ba391ae56fe0ae7eef0dcac9d2d2d)) -* **workflow:** Split _execution_state into separate files ([891e8b7](https://github.com/google/adk-python/commit/891e8b78720ccca16da9b723ed33c29ea828b22a)) -* **workflow:** Standardize retry mechanics with attempt_count ([6f5d47c](https://github.com/google/adk-python/commit/6f5d47cc273ba9d25840808887ed0ae43791ad65)) -* **workflow:** Use Context as NodeRunner result channel ([8b18a19](https://github.com/google/adk-python/commit/8b18a195bef4a011bf8dce04f0e84f0d2e5b2ba3)) -* **workflow:** use run_id in output_for for precise state rehydration ([231eb5b](https://github.com/google/adk-python/commit/231eb5bac690d50ad8597948fe910b2f1d11bd8a)) -* **workflow:** Use sequential run_ids instead of UUIDs ([10754b3](https://github.com/google/adk-python/commit/10754b373b7c4282b80529696e03031320ef1502)) - - -### Documentation - -* Add adk-style skill for development best practices ([cee5aaa](https://github.com/google/adk-python/commit/cee5aaa2c3957b430aea3fc533d8286a80f90c9e)) -* Add git-ops skill for consistent commit conventions ([a66ce65](https://github.com/google/adk-python/commit/a66ce65b0f14fddb4ced58b49d36bb6fa1bfe797)) -* add parallel tool invocation examples and test cases for function tools and tool confirmation ([83ed380](https://github.com/google/adk-python/commit/83ed3804cf837b93479b1c52bd8928ca5e1a3133)) -* **adk:** clean up remote triggers README to remove internal references ([82a44ed](https://github.com/google/adk-python/commit/82a44ed9fffc46a900b41ba30161d62668d7fb55)) -* Auto-Assignment GitHub Action for Issues ([1cafbe4](https://github.com/google/adk-python/commit/1cafbe42169139807786cc1f42d9369bafb91597)) -* Feat/Issue Monitoring Agent ([3eb360f](https://github.com/google/adk-python/commit/3eb360f46d0d2910ac27805a38fae00465f0d3f2)) -* **samples:** add markdown table to streaming message sample ([2d5957e](https://github.com/google/adk-python/commit/2d5957eb3ca267659ba1619b39ff3279c93edf21)) -* **samples:** Add streaming message example ([1d59974](https://github.com/google/adk-python/commit/1d59974cf4ad003ad4e71481e478187a0505dab2)) -* **skills:** Add log redirection tip to enable agent debugging ([bdf4536](https://github.com/google/adk-python/commit/bdf453647a88465a21da14b4d0366e47c608154e)) -* **skills:** add observability architecture doc with span-on-Context design ([34e6235](https://github.com/google/adk-python/commit/34e623548d52ee466b922652f6f5ed571aa321d7)) -* **skills:** Add testing best practices to adk-style skill ([e1afa3e](https://github.com/google/adk-python/commit/e1afa3eaa6587d5dad876f48216f491ce6058171)) -* **skills:** add Workflow architecture reference for node authors ([716b4ca](https://github.com/google/adk-python/commit/716b4ca255feb364d177efbeb28ee2ab2f2f5dda)) -* **skills:** Document LLM context orchestration and update skill index ([349ed4f](https://github.com/google/adk-python/commit/349ed4ffd9be5f35edbd136f9dc9de1de5717496)) -* **skills:** enforce why-not-what in commit message descriptions ([02de279](https://github.com/google/adk-python/commit/02de279177efae37fb64d888d0780bbf5bf4e38a)) -* **skills:** enhance adk-style skill with latest architecture references ([104d265](https://github.com/google/adk-python/commit/104d265eb10af8351e10e89a0540161a494e9834)) -* **skills:** Rename execution_id to run_id in architecture refs ([19feb0b](https://github.com/google/adk-python/commit/19feb0b7097ac638ed39f0aa27d840f8cd443641)) -* **skills:** restructure adk-style into reference documents ([d897986](https://github.com/google/adk-python/commit/d89798653e7fa0d8f8a5d6a51e3a57384461df13)) -* **skills:** Update adk-debug skill with query mode best practices ([2b12bb6](https://github.com/google/adk-python/commit/2b12bb6b61f4e081e08d3c2861a3e67fad60bc48)) -* **skills:** Update adk-workflow and adk-debug for new adk run query mode ([cfc8673](https://github.com/google/adk-python/commit/cfc8673f360e516afedab26d43ea8da48114cae3)) -* **style:** Document ADK 2.0 paths to guide development and review ([3342146](https://github.com/google/adk-python/commit/3342146cfe020b0a82aba2a7897adca4001c8641)) -* update adk-workflow skills ([848ccc7](https://github.com/google/adk-python/commit/848ccc711b4622af88976cd75041fb50ef99452d)) -* update description of inline image from square to circle in agent workflow sample ([dd88f93](https://github.com/google/adk-python/commit/dd88f9320d0bdafb8dd3fc443f83d3ac48e9a165)) -* Update the MCP Toolbox docsite with the new URL ([57ae0b8](https://github.com/google/adk-python/commit/57ae0b87cc06d82d2a3451633de3fb6bd0cdd3b1)) -* Use a dedicated API key for docs agents ([1588cfc](https://github.com/google/adk-python/commit/1588cfc4588fe068302ed882c69f9829699b648c)) -* **workflow:** add comment to NodeState and fix formatting in _workflow_class.py ([c43953f](https://github.com/google/adk-python/commit/c43953f811105f7baeb388b52933a8a46be85dd9)) +* **Workflow Orchestration:** Added Workflow(BaseNode) graph orchestration implementation, support for lazy scan deduplication and resume for dynamic nodes, partial resume for nested workflows, and state/artifact delta bundling onto yielded events. +* **CLI and Web UI:** Added support for Workflow graph visualization in web UI, improved graph readability with distinct icons and shapes, and active node rendering in event graph. +* **Documentation:** Added reference documentation for development (skills like adk-style, adk-git, and observability architecture). ## [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)