main
33 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
92d00aa937 |
feat: add update_data_agent tool to data_agent toolset
Implements the update_data_agent tool mimicking the MCP toolbox implementation, allowing the updating of Gemini Data Agents. PiperOrigin-RevId: 966070636 |
||
|
|
9b451fca3b |
feat: add delete_data_agent tool to data_agent toolset
Implements the delete_data_agent tool mimicking the MCP toolbox implementation, allowing the deletion of Gemini Data Agents. PiperOrigin-RevId: 966052260 |
||
|
|
8963a04846 |
fix: filter thought parts from A2A client user-facing response
Merge https://github.com/google/adk-python/pull/4686 Fixes #4676 PiperOrigin-RevId: 964433048 |
||
|
|
5cd38a0b3d |
feat: add create_data_agent tool to data_agent toolset
Implements the create_data_agent tool mimicking the MCP toolbox implementation, allowing the creation of Gemini Data Agents. PiperOrigin-RevId: 964346405 |
||
|
|
a3bd11152d |
feat(eventarc): Support Context callables and correct OMIT behavior
Merge https://github.com/google/adk-python/pull/6600 **1\. Link to an existing issue (if applicable):** - Related: google/adk-docs\#2045 (Addresses technical verification feedback in [https://github.com/google/adk-docs/pull/2045\#issuecomment-5184438669](https://github.com/google/adk-docs/pull/2045#issuecomment-5184438669)) **2\. Or, if no issue exists, describe the change:** **Problem:** 1. Callable attribute bindings in `CloudEventAttributesBinding` were always evaluated against the event `payload`. This prevented developers from correlating CloudEvents with ADK runtime telemetry (such as session IDs or invocation IDs from `Context`). 2. Setting `time=OMIT` or `datacontenttype=OMIT` in `CloudEventAttributesBinding` skipped adding keyword arguments when calling `publish_message`. Because `publish_message` auto-generates default UTC timestamps and content types when arguments are `None` or omitted, `time=OMIT` generated a timestamp instead of omitting the header. 3. Sample READMEs omitted the required `pip install "google-adk[gcp]"` prerequisite step needed for Eventarc publishing. **Solution:** 1. Added automatic signature inspection (`0-arg`, `1-arg`, and `2-arg` callables) to `CloudEventAttributesBinding` so callables can receive the event `payload`, the runtime `Context` (`tool_context`), or both, while preserving full backward compatibility with existing payload callbacks. 2. Setting `time=OMIT` or `datacontenttype=OMIT` now explicitly passes empty string (`""`) to `publish_message` so attributes are omitted from published CloudEvents. Explicitly setting required CloudEvent specification headers (`id=OMIT`, `specversion=OMIT`) now raises a `TypeError` at tool build time. 3. Updated sample agents and sample READMEs (`domain_specific_agent` and `generic_agent`) to demonstrate `Context` callables, `time=OMIT`, and GCP extra prerequisites. ### Testing Plan **Unit Tests:** - I have added or updated unit tests for my change. - All unit tests pass locally. Summary of passed `pytest` results: ``` uv run --all-extras pytest tests/unittests/integrations/eventarc -v ======================== 63 passed, 4 warnings, 13 subtests passed in 3.14s ======================== ``` - Added `test_runtime_execution_with_context_and_payload_lambdas` to verify 1-parameter (`payload` or `Context`) and 2-parameter callables. - Added `test_time_and_datacontenttype_omit_pass_empty_string` to verify omission of `time` and `datacontenttype`. - Added `test_id_and_specversion_omit_raise_typeerror` to verify static validation against omitting mandatory CloudEvent specification headers. **Manual End-to-End (E2E) Tests:** - Verified that sample agent tools in `contributing/samples/integrations/eventarc/domain_specific_agent/agent.py` build and run correctly. - Confirmed that `complete_outreach_lambda_tool` correctly injects `Context.session_id` into the event source and that `ping_system_tool` emits events without a timestamp header when configured with `time=OMIT`. ### Checklist - [x] I have read the [CONTRIBUTING.md](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) document. - [x] I have performed a self-review of my own code. - [x] I have commented my code, particularly in hard-to-understand areas. - [x] I have added tests that prove my fix is effective or that my feature works. - [x] New and existing unit tests pass locally with my changes. - [x] I have manually tested my changes end-to-end. - [x] Any dependent changes have been merged and published in downstream modules. Additional context Addresses the technical verification report on google/adk-docs#2045 comment. COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6600 from milenvk:main 647744f65452358842982b4d88cd1401d4143c42 PiperOrigin-RevId: 964084439 |
||
|
|
64dddf2bf3 |
fix(samples): repair integrations samples that no longer run against the current API
Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 963642287 |
||
|
|
13168602af |
chore: remove stale internal references from samples and docs
Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 960573273 |
||
|
|
6ccb83734e |
fix: Use official SDK for credential finalization in GCP auth sample
PiperOrigin-RevId: 960164313 |
||
|
|
ad9c113f6e |
refactor: move get_bucket tool to GCS admin toolset
Move get_bucket (get bucket metadata) from standard GCS toolset to GCS admin toolset, as retrieving bucket metadata is an administrative task. Maintain a deprecated stub in storage_tool.py for backward compatibility. Update tests and samples accordingly. PiperOrigin-RevId: 958673216 |
||
|
|
eebdf22c07 |
refactor: update gcp_auth client to support dynamic agent selection
Refactor the `client/` directory within the `gcp_auth` sample to support dynamic agent selection. The client now scans the parent directory for available Python agents for local testing. PiperOrigin-RevId: 956851269 |
||
|
|
096ecfcf56 |
docs: fix broken relative links in documentation
Merge https://github.com/google/adk-python/pull/6489 Fixes four broken relative links in the documentation. PiperOrigin-RevId: 954428272 |
||
|
|
13e311b0e4 |
chore: add codespell pre-commit hook to catch typos
Merge https://github.com/google/adk-python/pull/6406 Add a codespell hook to catch typos automatically. Fix existing typos flagged by codespell. PiperOrigin-RevId: 952416492 |
||
|
|
217a90a2e6 |
feat(eventarc): add Eventarc Advanced toolset for ADK
This adds a new integration for Google Cloud Eventarc Advanced. Provides `eventarc_toolset` which allows LLM agents to publish structured CloudEvents. It strictly validates and sanitizes attributes according to the CloudEvents 1.0 specification and supports dynamically resolving fields like `time` and `id` at runtime using lambdas. Includes comprehensive testing and documentation. PiperOrigin-RevId: 952384562 |
||
|
|
d4f157d2ed |
feat(eventarc): add Eventarc Advanced toolset for ADK
PiperOrigin-RevId: 952241614 |
||
|
|
9cf295d452 |
chore: bump pyjwt from 2.10.1 to 2.13.0
Merge https://github.com/google/adk-python/pull/6414 PiperOrigin-RevId: 949209003 |
||
|
|
ee3a3815a1 |
fix: repair two broken contributing samples
jira_agent passed tool_name to ApplicationIntegrationToolset, which only accepts tool_name_prefix. hello_world_litellm_add_function_to_prompt failed at import because langchain-core 1.x no longer auto-imports langchain_core.tools, which convert_to_openai_function relies on. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 945809141 |
||
|
|
5e3fa3be4b |
chore: Update BigQuery MCP endpoint in the sample agent to support mTLS
PiperOrigin-RevId: 945382785 |
||
|
|
ed579c1304 |
feat: Add search agents and search MCP severs to agent registry
Co-authored-by: Kathy Wu <wukathy@google.com> PiperOrigin-RevId: 945244717 |
||
|
|
a721c1eb34 |
fix(security): enable Jinja2 autoescape to prevent XSS in gepa sample
Merge https://github.com/google/adk-python/pull/5526 ## Security Fix: XSS via Jinja2 Template Injection (CWE-79) ### Vulnerability `contributing/samples/gepa/rater_lib.py` instantiates `jinja2.Environment()` **without** `autoescape=True`. The companion template `rubric_validation_template.txt` renders `{{user_input}}` and `{{model_response}}` without escaping. ### Impact Since ADK is Google's official framework for building AI agents, developers copy/adapt this sample code into production web applications. Unescaped user-controlled input in Jinja2 templates enables: - **Cross-Site Scripting (XSS)** — Arbitrary JavaScript execution in browsers - **Session Hijacking** — Steal cookies/tokens if rendered in web context - **Phishing** — Inject fake login forms ### Proof of Concept ```python # user_input: <script>alert("XSS")</script> # Renders as: <main_prompt><script>alert("XSS")</script></main_prompt> # model_response: <img src=x onerror=alert("XSS from model")> # Renders as: <responses><img src=x onerror=alert("XSS from model")></responses> ``` ### Changes 1. **rater_lib.py:170** — `jinja2.Environment()` → `jinja2.Environment(autoescape=True)` 2. **rubric_validation_template.txt:158** — `{{user_input}}` → `{{user_input|e}}` 3. **rubric_validation_template.txt:163** — `{{model_response}}` → `{{model_response|e}}` Defense in depth: `autoescape=True` provides baseline protection, explicit `|e` filters ensure escaping even if autoescape is later disabled. ### References - CWE-79: Cross-site Scripting (XSS) - OWASP A7:2017 — Cross-site Scripting - Jinja2 docs: https://jinja.palletsprojects.com/en/3.1.x/api/#autoescaping Co-authored-by: Shangjie Chen <deanchen@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/5526 from k4w-wak:fix/jinja2-xss-autoescape b5b6d3eee616aa95c6a06ced4053fdc0745d5e0a PiperOrigin-RevId: 943549514 |
||
|
|
3cbcefce9f |
chore: add missing Apache 2.0 license headers
Merge https://github.com/google/adk-python/pull/6155 **Please ensure you have read the [contribution guide](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) before creating a pull request.** ### Link to Issue or Description of Change **1. Link to an existing issue (if applicable):** N/A **2. Or, if no issue exists, describe the change:** **Problem:** The repository is missing Apache 2.0 license headers across 155 files. This is required by Google OSPO. **Solution:** Prepended the standard Apache 2.0 open-source license header to all flagged files. The copyright year was dynamically assigned based on each file's first commit year in git history. ### Testing Plan _Please describe the tests that you ran to verify your changes. This is required for all PRs that are not small documentation or typo fixes._ **Unit Tests:** - [ ] I have added or updated unit tests for my change. - [x] All unit tests pass locally. _Please include a summary of passed `pytest` results._ N/A - This PR only adds comments (license headers) to the top of files and contains zero functional code changes. No new tests are needed, and existing tests should pass as-is. **Manual End-to-End (E2E) Tests:** N/A - No functional code was changed. ### Checklist - [x] I have read the [CONTRIBUTING.md](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) document. - [x] I have performed a self-review of my own code. - [ ] I have commented my code, particularly in hard-to-understand areas. - [ ] I have added tests that prove my fix is effective or that my feature works. - [x] New and existing unit tests pass locally with my changes. - [ ] I have manually tested my changes end-to-end. - [ ] Any dependent changes have been merged and published in downstream modules. ### Additional context Co-authored-by: Shangjie Chen <deanchen@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6155 from milenvk:fix-missing-licenses d2a264b9a812fd997daf975ec37996e6b4b7a042 PiperOrigin-RevId: 936165783 |
||
|
|
1c7255b83a |
chore(samples): pin google-adk to 2.2.0 and update sample model
Bump the pinned google-adk dependency in three sample requirement files from 1.28.1 to 2.2.0 (the latest 2.x release): - contributing/samples/integrations/authn-adk-all-in-one/requirements.txt - contributing/samples/integrations/authn-adk-all-in-one/adk_agents/requirements.txt - contributing/samples/adk_team/adk_knowledge_agent/requirements.txt Also update the authn-adk-all-in-one sample default model to gemini-flash-latest, since gemini-2.5-flash is no longer served by the Gemini API and returns a 404. Co-authored-by: Haran Rajkumar <haranrk@google.com> PiperOrigin-RevId: 934016255 |
||
|
|
9dc8ed722e |
chore(deps): bump the pip group across 1 directory with 3 updates
Merge https://github.com/google/adk-python/pull/5748 Bumps the pip group with 3 updates in the /contributing/samples/integrations/authn-adk-all-in-one directory: [google-adk](https://github.com/google/adk-python), [python-dotenv](https://github.com/theskumar/python-dotenv) and [requests](https://github.com/psf/requests). Updates `google-adk` from 1.12 to 1.28.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/google/adk-python/releases">google-adk's releases</a>.</em></p> <blockquote> <h2>v1.28.1</h2> <h2><a href="https://github.com/google/adk-python/compare/v1.28.0...v1.28.1">1.28.1</a> (2026-04-02)</h2> <h3>Features</h3> <ul> <li><strong>live:</strong> support live for <code>gemini-3.1-flash-live-preview</code> model (<a href="https://github.com/google/adk-python/commit/ee69661a616056fa89e0ec2188aaa59bd714d8c9">ee69661</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Disallow args on /builder and Add warning about Web UI usage to CLI help (<a href="https://github.com/google/adk-python/commit/f037f68d67ae1bd16b00df0c7523fb67cbd1e911">f037f68</a>)</li> <li><strong>live:</strong> Buffer tool calls and emit them together upon turn completion (<a href="https://github.com/google/adk-python/commit/081adbdfa41490e4868b028a1cdabceb811a7505">081adbd</a>)</li> </ul> <h2>v1.28.0</h2> <h2><a href="https://github.com/google/adk-python/compare/v1.27.5...v1.28.0">1.28.0</a> (2026-03-26)</h2> <h3>Features</h3> <ul> <li><strong>a2a:</strong> add lifespan parameter to to_a2a() (<a href="https://github.com/google/adk-python/commit/0f4c8073e5a180a220f88928d67ee8d521486f03">0f4c807</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/4701">#4701</a></li> <li>Add a new extension for the new version of ADK-A2A integration (<a href="https://github.com/google/adk-python/commit/6f0dcb3e26dd82fed1a8564c17a47eec03b04617">6f0dcb3</a>)</li> <li>Add ability to run individual unit tests to unittests.sh (<a href="https://github.com/google/adk-python/commit/b3fcd8a21fe64063cdd8d07121ee4da3adb44c30">b3fcd8a</a>)</li> <li>Add database_role property to SpannerToolSettings and use it in execute_sql to support fine grained access controls (<a href="https://github.com/google/adk-python/commit/360e0f7ebaba7a682f7230c259b474ace7ff6d13">360e0f7</a>)</li> <li>Add index to events table and update dependencies (<a href="https://github.com/google/adk-python/commit/3153e6d74f401f39e363a36f6fa0664f245013db">3153e6d</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/4827">#4827</a></li> <li>Add MultiTurn Task success metric (<a href="https://github.com/google/adk-python/commit/9a75c06873b79fbd206b3712231c0280fb2f87ca">9a75c06</a>)</li> <li>Add MultiTurn Task trajectory and tool trajectory metrics (<a href="https://github.com/google/adk-python/commit/38bfb4475406d63af3111775950d9c25acf17ed2">38bfb44</a>)</li> <li>Add slack integration to ADK (<a href="https://github.com/google/adk-python/commit/6909a167c8d030111bf7118b9d5e78255a299684">6909a16</a>)</li> <li>Add Spanner Admin Toolset (<a href="https://github.com/google/adk-python/commit/28618a8dcbee9c4faeec6653a5d978d0330f39bb">28618a8</a>)</li> <li>Add SSE streaming support to conformance tests (<a href="https://github.com/google/adk-python/commit/c910961501ef559814f54c22aca1609fd3227b80">c910961</a>)</li> <li>Add support for Anthropic's thinking_blocks format in LiteLLM integration (<a href="https://github.com/google/adk-python/commit/fc45fa68d75fbf5276bf5951929026285a8bb4af">fc45fa6</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/4801">#4801</a></li> <li>Add support for timeout to UnsafeLocalCodeExecutor (<a href="https://github.com/google/adk-python/commit/71d26ef7b90fe25a5093e4ccdf74b103e64fac67">71d26ef</a>)</li> <li><strong>auth:</strong> Integrate GCP IAM Connectors (Noop implementation) (<a href="https://github.com/google/adk-python/commit/78e5a908dcb4b1a93e156c6f1b282f59ec6b69d4">78e5a90</a>)</li> <li><strong>bigquery:</strong> Migrate 1P BQ Toolset (<a href="https://github.com/google/adk-python/commit/08be44295de614f30e686113897af7fe9c228751">08be442</a>) (<a href="https://github.com/google/adk-python/commit/7aa1f5252c15caaf40fde73ac4283fa0a48d8a96">7aa1f52</a>) (<a href="https://github.com/google/adk-python/commit/d1121317ef4e1ac559f4ae13855ac1af28eef8f6">d112131</a>) (<a href="https://github.com/google/adk-python/commit/166ff99b9266cd3bb0e86070c58a67d937216297">166ff99</a>)</li> <li>enable suppressing A2A experimental warnings (<a href="https://github.com/google/adk-python/commit/fdc2b4355b5a73b8f32d3fa32a092339d963ce67">fdc2b43</a>)</li> <li>Enhance AgentEngineSandboxCodeExecutor sample to automatically provision an Agent Engine if neither agent_engine_resource_name nor sandbox_resource_name is provided (<a href="https://github.com/google/adk-python/commit/6c34694da64968bc766a7e5e860c0ed9acbc69c2">6c34694</a>)</li> <li>Extract and merge EventActions from A2A metadata (<a href="https://github.com/google/adk-python/commit/4b677e73b939f5a13269abd9ba9fe65e4b78d7f6">4b677e7</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/3968">#3968</a></li> <li><strong>mcp:</strong> add sampling callback support for MCP sessions (<a href="https://github.com/google/adk-python/commit/8f826972cc06ef250c1f020e34b9d1cdbd0788c4">8f82697</a>)</li> <li>Optional GCP project and credential for GCS access (<a href="https://github.com/google/adk-python/commit/2f90c1ac09638517b08cd96a17d595f0968f0bf6">2f90c1a</a>)</li> <li>Support new embedding model in files retrieval (<a href="https://github.com/google/adk-python/commit/faafac9bb33b45174f04746055fc655b12d3e7f7">faafac9</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>add agent name validation to prevent arbitrary module imports (<a href="https://github.com/google/adk-python/commit/116f75d">116f75d</a>)</li> <li>add protection for arbitrary module imports (<a href="https://github.com/google/adk-python/commit/995cd1c">995cd1c</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/4947">#4947</a></li> <li>Add read-only session support in DatabaseSessionService (<a href="https://github.com/google/adk-python/commit/f6ea58b5939b33afad5a2d2f8fb395150120ae07">f6ea58b</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/4771">#4771</a></li> <li>Allow snake case for skill name (<a href="https://github.com/google/adk-python/commit/b157276cbb3c4f7f7b97e338e9d9df63d9c949cd">b157276</a>)</li> <li><strong>bigquery:</strong> use valid dataplex OAuth scope (<a href="https://github.com/google/adk-python/commit/4010716470fc83918dc367c5971342ff551401c8">4010716</a>)</li> <li>Default to ClusterIP so GKE deployment isn't publicly exposed by default (<a href="https://github.com/google/adk-python/commit/f7359e3fd40eae3b8ef50c7bc88f1075ffb9b7de">f7359e3</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/google/adk-python/blob/main/CHANGELOG.md">google-adk's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2><a href="https://github.com/google/adk-python/compare/v1.33.0...v1.34.0">1.34.0</a> (2026-05-18)</h2> <h3>Features</h3> <ul> <li><strong>a2a:</strong> add support for persistent task stores (<a href="https://github.com/google/adk-python/commit/cd78d87b967111d40d429bcf9552a962b7e9614f">cd78d87</a>)</li> <li>add general support for Gemini Live API in ADK evaluate (<a href="https://github.com/google/adk-python/commit/790c9bef9a336ea000d0cf68e63b025dfead5227">790c9be</a>)</li> <li>Add mTLS support to Google Cloud Telemetry exporter (<a href="https://github.com/google/adk-python/commit/cfe8d2cc2b29e392886f997be4d77d4cced9959e">cfe8d2c</a>)</li> <li>add support for A2aAgentExecutor factory in to_a2a() function (<a href="https://github.com/google/adk-python/commit/115124cdf413859c7f634ce995113e4de6cf5ff7">115124c</a>)</li> <li>add support for non-ADK produced input-required events (<a href="https://github.com/google/adk-python/commit/6e534723dd6be938e6fb1b6f55b06de8ac4d27d8">6e53472</a>)</li> <li>Added config option to include tool calls/responses in conversation history passed to user simulator (<a href="https://github.com/google/adk-python/commit/baf7efbaa92ce9d71152ea9ba7f5d0706277b171">baf7efb</a>)</li> <li><strong>ci:</strong> add Gemini auto review and invoke workflows (<a href="https://github.com/google/adk-python/commit/fd8b49295d628075cf70acabb2c52eedf62dd5bd">fd8b492</a>)</li> <li>Implement GCPSkillRegistry in ADK (<a href="https://github.com/google/adk-python/commit/88ebd426beaec9564bec1fe98ad0096bba519e3d">88ebd42</a>)</li> <li>Implement Skill Registry in ADK (<a href="https://github.com/google/adk-python/commit/380d261e59b1955af735bf66e47aba2150f04d9f">380d261</a>)</li> <li>Make Agent Skill description validation more informative (<a href="https://github.com/google/adk-python/commit/9f38973081aacf1999f707dac9778b72b5ce75fd">9f38973</a>)</li> <li>Simplify data retrieved handling of ask_data_agent tool and ask_data_insights tool (<a href="https://github.com/google/adk-python/commit/48f1b302510c3520643db739494ff8ea318b7b8f">48f1b30</a>)</li> <li>Support OAuth PKCE in McpToolset (<a href="https://github.com/google/adk-python/commit/e7316dc077d676b4349a8d7779ad4ad73f6b0d24">e7316dc</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>agents:</strong> fix visibility of output_key state delta in callbacks (<a href="https://github.com/google/adk-python/commit/0524797ac75ddd13b1c01cac91e507ba2c42cef0">0524797</a>)</li> <li><strong>anthropic:</strong> map negative thinking_budget to adaptive thinking (<a href="https://github.com/google/adk-python/commit/03b915b1bdf5dcab14ae51d8b8cadf37d649acca">03b915b</a>)</li> <li><strong>auth:</strong> persist refreshed OAuth2 credentials to store (<a href="https://github.com/google/adk-python/commit/218ea76e30ced48898a46ca48a014f7dffd266a7">218ea76</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5329">#5329</a></li> <li><strong>auth:</strong> remove unneeded OAuth flows (<a href="https://github.com/google/adk-python/commit/c35a57969d70cb98356297beb36fdf79ab7c00f6">c35a579</a>)</li> <li>avoid pre-serializing dict values in Interactions API to prevent double-escaping (<a href="https://github.com/google/adk-python/commit/85f397d20f8b32cdfd074463ff505a06c8535ddf">85f397d</a>)</li> <li><strong>cache:</strong> enforce CacheMetadata active-state invariant (<a href="https://github.com/google/adk-python/commit/76b9f0baa0bcc4e715ee996b4dc894ffc9264583">76b9f0b</a>)</li> <li><strong>cache:</strong> handle fingerprint-only metadata in performance analyzer (<a href="https://github.com/google/adk-python/commit/9c5de58cfa55fc2b4aade2018456214c95140c16">9c5de58</a>)</li> <li>Catch OSError when importing AnthropicLlm (<a href="https://github.com/google/adk-python/commit/91cb5c6071cc73da8b97e789557dfbc32026a3e8">91cb5c6</a>)</li> <li><strong>evaluation:</strong> handle none config in per_turn_user_simulator_quality (<a href="https://github.com/google/adk-python/commit/eed9bd319ffc398fae14c2362c93f986ffe25f67">eed9bd3</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5677">#5677</a></li> <li>fallback to project id if crendetials don't contain quota project (<a href="https://github.com/google/adk-python/commit/e377cb5ec057ed4176f2714f368c45e730053eb0">e377cb5</a>)</li> <li>Fix missing dynamically loaded tools in SkillToolset during the same invocation (<a href="https://github.com/google/adk-python/commit/f9097cbf7b64b78da894e482480fc22a9603e429">f9097cb</a>)</li> <li><strong>live:</strong> ensure sub live agent doesn't inherit session resumption handle from parent live agent to avoid interrupting the conversation (<a href="https://github.com/google/adk-python/commit/8dd9147443b1dc4121756ad186090f1f267e83b0">8dd9147</a>)</li> <li><strong>models:</strong> preserve string content in Anthropic tool_result blocks (<a href="https://github.com/google/adk-python/commit/9a1e75f24256cfe54766c69691247df90dc5558f">9a1e75f</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5358">#5358</a></li> <li><strong>models:</strong> preserve tool_use IDs for Anthropic models on session resume (<a href="https://github.com/google/adk-python/commit/327c45f9f4c98f7b32feeb8555c166b814ee6684">327c45f</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5074">#5074</a></li> <li><strong>models:</strong> treat empty GenerateContentResponse without prompt feedback as successful (<a href="https://github.com/google/adk-python/commit/0cb9ae94b30ac2cff120b2c4ccab77e6b85cbf45">0cb9ae9</a>)</li> <li>only serialize llm_response to json if it will be included in the trace (<a href="https://github.com/google/adk-python/commit/12844939f1a89b2a06c592a52bbd3c293860e808">1284493</a>)</li> <li>Preserve live_session_id in function call handling (<a href="https://github.com/google/adk-python/commit/07a9a01b3c1fb2866cc8bdcd8d8ab0906aa88682">07a9a01</a>)</li> <li>Prevent compaction of events involved in Human-in-the-Loop interactions (<a href="https://github.com/google/adk-python/commit/bb2efb6bd234e3235c47b3245676581f6022b458">bb2efb6</a>)</li> <li>raise eagerly on importing AgentRegistry if a2a-sdk is missing (<a href="https://github.com/google/adk-python/commit/33cf6cb61016bdd227749a7eff113045f848b203">33cf6cb</a>)</li> <li><strong>small:</strong> Convert events to the A2A format while respecting user vs agent role (<a href="https://github.com/google/adk-python/commit/59f7347a635bc56fa8abdd3c7c771ae11bebf9ab">59f7347</a>)</li> <li><strong>tools:</strong> preserve code_execution_result and executable_code in AgentTool (<a href="https://github.com/google/adk-python/commit/7e61b517027a23c640b7b636a87e04a0a02c392c">7e61b51</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5481">#5481</a></li> <li><strong>tools:</strong> Prevent AnyIO CancelScope task boundary violations during MCP session creation failure (<a href="https://github.com/google/adk-python/commit/430915970062a4ff926a65e5884cc5bc2912c48c">4309159</a>)</li> <li>Update model name in hello_world agent (<a href="https://github.com/google/adk-python/commit/192f19d82495eb560ee701eb751ce14b90e4b5c7">192f19d</a>)</li> <li>Update model to gemini-3-flash-preview in hello word agent sample (<a href="https://github.com/google/adk-python/commit/6d89d2194a21220801c602248b27b81b9188050c">6d89d21</a>)</li> <li>Update model to gemini-3-flash-preview in session state agent sample (<a href="https://github.com/google/adk-python/commit/2d423e835569e0e8e67772a09bf1a76f1bb5324e">2d423e8</a>)</li> <li>use tool_responses role for gemma4 models in LiteLLM integration (<a href="https://github.com/google/adk-python/commit/3d07960a70031fb7786485f58a964a98dbdb932d">3d07960</a>), closes <a href="https://redirect.github.com/google/adk-python/issues/5650">#5650</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/google/adk-python/commit/0d48362f2e5410f0f39fab8b38c2164d4293abc1"><code>0d48362</code></a> chore(release/candidate): release 1.28.1 (<a href="https://redirect.github.com/google/adk-python/issues/5121">#5121</a>)</li> <li><a href="https://github.com/google/adk-python/commit/f037f68d67ae1bd16b00df0c7523fb67cbd1e911"><code>f037f68</code></a> fix: Disallow args on /builder and Add warning about Web UI usage to CLI help</li> <li><a href="https://github.com/google/adk-python/commit/081adbdfa41490e4868b028a1cdabceb811a7505"><code>081adbd</code></a> fix(live): Buffer tool calls and emit them together upon turn completion</li> <li><a href="https://github.com/google/adk-python/commit/ee69661a616056fa89e0ec2188aaa59bd714d8c9"><code>ee69661</code></a> feat(live): support live for <code>gemini-3.1-flash-live-preview</code> model</li> <li><a href="https://github.com/google/adk-python/commit/4e05efb76ca96351f6fd868e09f26fe6d8cf8f9f"><code>4e05efb</code></a> chore: update last-release-sha for next release</li> <li><a href="https://github.com/google/adk-python/commit/c57d000699d9d4c0a0cb5d1c9e40e86f29f55b05"><code>c57d000</code></a> chore(release/candidate): release 1.28.0 (<a href="https://redirect.github.com/google/adk-python/issues/5014">#5014</a>)</li> <li><a href="https://github.com/google/adk-python/commit/50209549206256abe5d1c5d84ab2b14dfdf80d66"><code>5020954</code></a> fix: Update list_agents to only list directories, not validate agent definitions</li> <li><a href="https://github.com/google/adk-python/commit/f7359e3fd40eae3b8ef50c7bc88f1075ffb9b7de"><code>f7359e3</code></a> fix: Default to ClusterIP so GKE deployment isn't publicly exposed by default</li> <li><a href="https://github.com/google/adk-python/commit/ab9ae0fce7b9da2e8901e2af1a46c30d3bf16f7e"><code>ab9ae0f</code></a> ADK changes</li> <li><a href="https://github.com/google/adk-python/commit/08be44295de614f30e686113897af7fe9c228751"><code>08be442</code></a> feat(bigquery): Migrate 1P BQ Toolset</li> <li>Additional commits viewable in <a href="https://github.com/google/adk-python/compare/v1.12.0...v1.28.1">compare view</a></li> </ul> </details> <br /> Updates `python-dotenv` from 1.1.1 to 1.2.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/theskumar/python-dotenv/releases">python-dotenv's releases</a>.</em></p> <blockquote> <h2>v1.2.2</h2> <h3>Added</h3> <ul> <li>Support for Python 3.14, including the free-threaded (3.14t) build. (#)</li> </ul> <h3>Changed</h3> <ul> <li>The <code>dotenv run</code> command now forwards flags directly to the specified command by <a href="https://github.com/bbc2"><code>@bbc2</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/607">theskumar/python-dotenv#607</a></li> <li>Improved documentation clarity regarding override behavior and the reference page.</li> <li>Updated PyPy support to version 3.11.</li> <li>Documentation for FIFO file support.</li> <li>Support for Python 3.9.</li> </ul> <h3>Fixed</h3> <ul> <li>Improved <code>set_key</code> and <code>unset_key</code> behavior when interacting with symlinks by <a href="https://github.com/bbc2"><code>@bbc2</code></a> in <a href="https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311">#790c5</a></li> <li>Corrected the license specifier and added missing Python 3.14 classifiers in package metadata by <a href="https://github.com/JYOuyang"><code>@JYOuyang</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/590">theskumar/python-dotenv#590</a></li> </ul> <h3>Breaking Changes</h3> <ul> <li> <p><code>dotenv.set_key</code> and <code>dotenv.unset_key</code> used to follow symlinks in some situations. This is no longer the case. For that behavior to be restored in all cases, <code>follow_symlinks=True</code> should be used.</p> </li> <li> <p>In the CLI, <code>set</code> and <code>unset</code> used to follow symlinks in some situations. This is no longer the case.</p> </li> <li> <p><code>dotenv.set_key</code>, <code>dotenv.unset_key</code> and the CLI commands <code>set</code> and <code>unset</code> used to reset the file mode of the modified .env file to <code>0o600</code> in some situations. This is no longer the case: The original mode of the file is now preserved. Is the file needed to be created or wasn't a regular file, mode <code>0o600</code> is used.</p> </li> </ul> <h3>Misc</h3> <ul> <li>skip 000 permission tests for root user by <a href="https://github.com/burnout-projects"><code>@burnout-projects</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/561">theskumar/python-dotenv#561</a></li> <li>Bump actions/checkout from 5 to 6 in the github-actions group by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/593">theskumar/python-dotenv#593</a></li> <li>Add Windows testing to CI by <a href="https://github.com/bbc2"><code>@bbc2</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/604">theskumar/python-dotenv#604</a></li> <li>Improve workflow efficiency with best practices by <a href="https://github.com/theskumar"><code>@theskumar</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/609">theskumar/python-dotenv#609</a></li> <li>Remove the use of <code>sh</code> in tests by <a href="https://github.com/bbc2"><code>@bbc2</code></a> in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/612">theskumar/python-dotenv#612</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/JYOuyang"><code>@JYOuyang</code></a> made their first contribution in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/590">theskumar/python-dotenv#590</a></li> <li><a href="https://github.com/burnout-projects"><code>@burnout-projects</code></a> made their first contribution in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/561">theskumar/python-dotenv#561</a></li> <li><a href="https://github.com/cpackham-atlnz"><code>@cpackham-atlnz</code></a> made their first contribution in <a href="https://redirect.github.com/theskumar/python-dotenv/pull/597">theskumar/python-dotenv#597</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2">https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2</a></p> <h2>v1.2.1</h2> <h2>What's Changed</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md">python-dotenv's changelog</a>.</em></p> <blockquote> <h2>[1.2.2] - 2026-03-01</h2> <h3>Added</h3> <ul> <li>Support for Python 3.14, including the free-threaded (3.14t) build. (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/588">#588</a>)</li> </ul> <h3>Changed</h3> <ul> <li>The <code>dotenv run</code> command now forwards flags directly to the specified command by [<a href="https://github.com/bbc2"><code>@bbc2</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/607">#607</a></li> <li>Improved documentation clarity regarding override behavior and the reference page.</li> <li>Updated PyPy support to version 3.11.</li> <li>Documentation for FIFO file support.</li> <li>Dropped Support for Python 3.9.</li> </ul> <h3>Fixed</h3> <ul> <li>Improved <code>set_key</code> and <code>unset_key</code> behavior when interacting with symlinks by [<a href="https://github.com/bbc2"><code>@bbc2</code></a>] in [790c5c0]</li> <li>Corrected the license specifier and added missing Python 3.14 classifiers in package metadata by [<a href="https://github.com/JYOuyang"><code>@JYOuyang</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/590">#590</a></li> </ul> <h3>Breaking Changes</h3> <ul> <li> <p><code>dotenv.set_key</code> and <code>dotenv.unset_key</code> used to follow symlinks in some situations. This is no longer the case. For that behavior to be restored in all cases, <code>follow_symlinks=True</code> should be used.</p> </li> <li> <p>In the CLI, <code>set</code> and <code>unset</code> used to follow symlinks in some situations. This is no longer the case.</p> </li> <li> <p><code>dotenv.set_key</code>, <code>dotenv.unset_key</code> and the CLI commands <code>set</code> and <code>unset</code> used to reset the file mode of the modified .env file to <code>0o600</code> in some situations. This is no longer the case: The original mode of the file is now preserved. Is the file needed to be created or wasn't a regular file, mode <code>0o600</code> is used.</p> </li> </ul> <h2>[1.2.1] - 2025-10-26</h2> <ul> <li>Move more config to <code>pyproject.toml</code>, removed <code>setup.cfg</code></li> <li>Add support for reading <code>.env</code> from FIFOs (Unix) by [<a href="https://github.com/sidharth-sudhir"><code>@sidharth-sudhir</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/586">#586</a></li> </ul> <h2>[1.2.0] - 2025-10-26</h2> <ul> <li>Upgrade build system to use PEP 517 & PEP 518 to use <code>build</code> and <code>pyproject.toml</code> by [<a href="https://github.com/EpicWink"><code>@EpicWink</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/583">#583</a></li> <li>Add support for Python 3.14 by [<a href="https://github.com/23f3001135"><code>@23f3001135</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/579">#579</a></li> <li>Add support for disabling of <code>load_dotenv()</code> using <code>PYTHON_DOTENV_DISABLED</code> env var. by [<a href="https://github.com/matthewfranglen"><code>@matthewfranglen</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/569">#569</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d"><code>36004e0</code></a> Bump version: 1.2.1 → 1.2.2</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8"><code>eb20252</code></a> docs: update changelog for v1.2.2</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311"><code>790c5c0</code></a> Merge commit from fork</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1"><code>43340da</code></a> Remove the use of <code>sh</code> in tests (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/612">#612</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c"><code>09d7cee</code></a> docs: clarify override behavior and document FIFO support (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/610">#610</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c"><code>c8de288</code></a> ci: improve workflow efficiency with best practices (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/609">#609</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4"><code>7bd9e3d</code></a> Add Windows testing to CI (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/604">#604</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81"><code>1baaf04</code></a> Drop Python 3.9 support and update to PyPy 3.11 (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/608">#608</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc"><code>4a22cf8</code></a> ci: enable testing on Python 3.14t (free-threaded) (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/588">#588</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4"><code>e2e8e77</code></a> Fix license specifier (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/597">#597</a>)</li> <li>Additional commits viewable in <a href="https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2">compare view</a></li> </ul> </details> <br /> Updates `requests` from 2.32.4 to 2.33.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/releases">requests's releases</a>.</em></p> <blockquote> <h2>v2.33.0</h2> <h2>2.33.0 (2026-03-25)</h2> <p><strong>Announcements</strong></p> <ul> <li>📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at <a href="https://redirect.github.com/psf/requests/issues/7271">#7271</a>. Give it a try, and report any gaps or feedback you may have in the issue. 📣</li> </ul> <p><strong>Security</strong></p> <ul> <li>CVE-2026-25645 <code>requests.utils.extract_zipped_paths</code> now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.</li> </ul> <p><strong>Improvements</strong></p> <ul> <li>Migrated to a PEP 517 build system using setuptools. (<a href="https://redirect.github.com/psf/requests/issues/7012">#7012</a>)</li> </ul> <p><strong>Bugfixes</strong></p> <ul> <li>Fixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (<a href="https://redirect.github.com/psf/requests/issues/7205">#7205</a>)</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Dropped support for Python 3.9 following its end of support. (<a href="https://redirect.github.com/psf/requests/issues/7196">#7196</a>)</li> </ul> <p><strong>Documentation</strong></p> <ul> <li>Various typo fixes and doc improvements.</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/M0d3v1"><code>@M0d3v1</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/6865">psf/requests#6865</a></li> <li><a href="https://github.com/aminvakil"><code>@aminvakil</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/7220">psf/requests#7220</a></li> <li><a href="https://github.com/E8Price"><code>@E8Price</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/6960">psf/requests#6960</a></li> <li><a href="https://github.com/mitre88"><code>@mitre88</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/7244">psf/requests#7244</a></li> <li><a href="https://github.com/magsen"><code>@magsen</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/6553">psf/requests#6553</a></li> <li><a href="https://github.com/Rohan5commit"><code>@Rohan5commit</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/7227">psf/requests#7227</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25">https://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25</a></p> <h2>v2.32.5</h2> <h2>2.32.5 (2025-08-18)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>The SSLContext caching feature originally introduced in 2.32.0 has created a new class of issues in Requests that have had negative impact across a number of use cases. The Requests team has decided to revert this feature as long term maintenance of it is proving to be unsustainable in its current iteration.</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Added support for Python 3.14.</li> <li>Dropped support for Python 3.8 following its end of support.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's changelog</a>.</em></p> <blockquote> <h2>2.33.0 (2026-03-25)</h2> <p><strong>Announcements</strong></p> <ul> <li>📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at <a href="https://redirect.github.com/psf/requests/issues/7271">#7271</a>. Give it a try, and report any gaps or feedback you may have in the issue. 📣</li> </ul> <p><strong>Security</strong></p> <ul> <li>CVE-2026-25645 <code>requests.utils.extract_zipped_paths</code> now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.</li> </ul> <p><strong>Improvements</strong></p> <ul> <li>Migrated to a PEP 517 build system using setuptools. (<a href="https://redirect.github.com/psf/requests/issues/7012">#7012</a>)</li> </ul> <p><strong>Bugfixes</strong></p> <ul> <li>Fixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (<a href="https://redirect.github.com/psf/requests/issues/7205">#7205</a>)</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Dropped support for Python 3.9 following its end of support. (<a href="https://redirect.github.com/psf/requests/issues/7196">#7196</a>)</li> </ul> <p><strong>Documentation</strong></p> <ul> <li>Various typo fixes and doc improvements.</li> </ul> <h2>2.32.5 (2025-08-18)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>The SSLContext caching feature originally introduced in 2.32.0 has created a new class of issues in Requests that have had negative impact across a number of use cases. The Requests team has decided to revert this feature as long term maintenance of it is proving to be unsustainable in its current iteration.</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Added support for Python 3.14.</li> <li>Dropped support for Python 3.8 following its end of support.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761"><code>bc04dfd</code></a> v2.33.0</li> <li><a href="https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7"><code>66d21cb</code></a> Merge commit from fork</li> <li><a href="https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028"><code>8b9bc8f</code></a> Move badges to top of README (<a href="https://redirect.github.com/psf/requests/issues/7293">#7293</a>)</li> <li><a href="https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286"><code>e331a28</code></a> Remove unused extraction call (<a href="https://redirect.github.com/psf/requests/issues/7292">#7292</a>)</li> <li><a href="https://github.com/psf/requests/commit/753fd08c5eacce0aa0df73fe47e49525c67e0a29"><code>753fd08</code></a> docs: fix FAQ grammar in httplib2 example</li> <li><a href="https://github.com/psf/requests/commit/774a0b837a194ee885d4fdd9ca947900cc3daf71"><code>774a0b8</code></a> docs(socks): same block as other sections</li> <li><a href="https://github.com/psf/requests/commit/9c72a41bec8597f948c9d8caa5dc3f12273b3303"><code>9c72a41</code></a> Bump github/codeql-action from 4.33.0 to 4.34.1</li> <li><a href="https://github.com/psf/requests/commit/ebf71906798ec82f34e07d3168f8b8aecaf8a3be"><code>ebf7190</code></a> Bump github/codeql-action from 4.32.0 to 4.33.0</li> <li><a href="https://github.com/psf/requests/commit/0e4ae38f0c93d4f92a96c774bd52c069d12a4798"><code>0e4ae38</code></a> docs: exclude Response.is_permanent_redirect from API docs (<a href="https://redirect.github.com/psf/requests/issues/7244">#7244</a>)</li> <li><a href="https://github.com/psf/requests/commit/d568f47278492e630cc990a259047c67991d007a"><code>d568f47</code></a> docs: clarify Quickstart POST example (<a href="https://redirect.github.com/psf/requests/issues/6960">#6960</a>)</li> <li>Additional commits viewable in <a href="https://github.com/psf/requests/compare/v2.32.4...v2.33.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/google/adk-python/network/alerts). </details> Co-authored-by: Haran Rajkumar <haranrk@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/5748 from google:dependabot/pip/contributing/samples/integrations/authn-adk-all-in-one/pip-34b5800231 be03a4d1907f2b7cef211809cab2fde27f8cf75a PiperOrigin-RevId: 933980994 |
||
|
|
d3c21d716e |
docs: Align Python version to 3.10+ and update README badges
Merge https://github.com/google/adk-python/pull/6107 ## Summary - Fix README claiming Python 3.11+ while the package requires `>=3.10`; sync all docs (README, AGENTS.md, adk-setup skill, two sample READMEs) to 3.10+ - Swap the rate-limited shields.io PyPI downloads badge for a pepy.tech one (the old badge rendered "rate limited by upstream service") - Add a Python Unit Tests CI status badge ## Test plan - [ ] Confirm README badges render correctly on GitHub (downloads + unit test status) - [ ] Verify Python version wording matches `requires-python = ">=3.10"` in pyproject.toml Co-authored-by: Wei Sun (Jack) <weisun@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6107 from google:docs/readme-badges-python-310 bdfa1c125375abe94c343389702994cbc8857e7d PiperOrigin-RevId: 931539712 |
||
|
|
57bdecfcb1 |
feat: Update gcp_auth client UI to support Remote Agents
Enhance the `client/` directory within the `gcp_auth` sample to support interaction with remote agents. The client can now discover and communicate with agents hosted on remote endpoints. Key updates: - Implemented functionality to list and select remote agents, replacing local filesystem scanning. - Added client-side logic to communicate with remote agents. - The Material 3-based "Agent Playground" interface is adapted for remote agent selection and interaction. - Updated `README.md` with new setup instructions. - Revised `requirements.txt` to include new dependencies required for remote agent communication. PiperOrigin-RevId: 930965837 |
||
|
|
fb19e1a155 |
feat: add GCS first party toolset to ADK integrations
GCS toolset supports basic operations to interact with GCS buckets and objects. PiperOrigin-RevId: 930830041 |
||
|
|
4cb27fd42e |
feat(labs): add experimental Antigravity SDK agent wrapper
Merge https://github.com/google/adk-python/pull/6040 ## Summary Introduces `google.adk.labs.antigravity` with `AntigravityAgent`, a `BaseAgent` that runs a Google Antigravity SDK agent (described by an `AgentConfig`) as a native ADK root agent. Lives under `labs/` as an experimental feature. - Delegates each turn to a fresh SDK `Agent` and maps trajectory steps to ADK events: model text, function calls/responses, and SSE-gated partial thinking/text deltas. - Folder-based session resumption via `config.save_dir`: renames the harness trajectory to a deterministic per-session name and skips replayed steps using a persisted resume step index. - Restricted to standalone root use (local mode only) with construction-time guards (cannot be a sub-agent or have sub-agents). - `serialize_agent` now honors `Field(exclude=True)` so the non-serializable `config` does not break the `build_graph` endpoint. - Adds the `[antigravity]` optional extra (in both the extra and `test` groups, with `uv.lock` updated), a game-developer sample, package README, and unit tests. ## Test plan - [ ] `pytest tests/unittests/labs/antigravity/` (22 unit tests pass) - [ ] `pytest tests/unittests/cli/utils/test_graph_serialization.py` - [ ] Manual: run the sample via `adk web` with `GEMINI_API_KEY` and a `[antigravity]` install, confirm multi-turn resumption and no duplicate events. Co-authored-by: Wei Sun (Jack) <weisun@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6040 from google:feat/antigravity-agent 304f6ad4d1e9edc414a28aa01eb77028519de11a PiperOrigin-RevId: 930712984 |
||
|
|
4100a24021 |
chore: replace vertexai with enterprise in samples and docs
Co-authored-by: Haran Rajkumar <haranrk@google.com> PiperOrigin-RevId: 930146494 |
||
|
|
0337d19c47 | chore: sync Google internal changes to GitHub (#6022) | ||
|
|
af8bfe08ac |
fix: Format the files to fix pre-commit failures
Change-Id: Ie86c42e4fa3f0c2acd1d73d399fbe6f4e0c54f02 |
||
|
|
cbd14ebf99 |
feat: Add support for creating sandboxes from templates and snapshots
This change allows AgentEngineSandboxComputer to create new sandboxes using either a specified sandbox template or a sandbox snapshot. The environment variables VMAAS_SANDBOX_TEMPLATE_NAME and VMAAS_SANDBOX_SNAPSHOT_NAME are introduced to configure this behavior. Co-authored-by: Emily Feng <emilyfeng@google.com> Change-Id: Iebdd980a16966ba765cacbce6d63d0d5b691650a |
||
|
|
db064160bf |
feat: Add chart generation and artifact loading to data agent
Introduces a generate_chart tool to the Data Agent sample, leveraging Altair and vl-convert to render Vega-Lite specifications into charts. Co-authored-by: Han Cao <huanc@google.com> Change-Id: I5765487406d511e650091f5dc884102c43568fd4 |
||
|
|
a4f394e139 |
chore: edit files
Change-Id: I4e3e3e9f1846520f3fda86cc83453b30bdd336ef |
||
|
|
162279358c |
chore: switch main to v2.0.0 GA (transition to v2)
Co-authored-by: Bo Yang <ybo@google.com> Co-authored-by: Wei Sun (Jack) <weisun@google.com> Co-authored-by: George Weale <gweale@google.com> Co-authored-by: Swapnil Agarwal <swapnilag@google.com> Co-authored-by: Xuan Yang <xygoogle@google.com> Co-authored-by: Shangjie Chen <deanchen@google.com> Co-authored-by: Yifan Wang <wanyif@google.com> Co-authored-by: Kathy Wu <wukathy@google.com> |