Skip to content

Commit 49d7bd5

Browse files
authored
Merge branch 'main' into feat/oci-generative-ai
2 parents 6650f8d + 454188d commit 49d7bd5

26 files changed

Lines changed: 2590 additions & 97 deletions
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.29.0"
2+
".": "1.30.0"
33
}

.github/release-please-config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3-
"last-release-sha": "6b1600fbf53bcf634c5fe4793f02921bc0b75125",
3+
"last-release-sha": "80a7ecf4b31e4c6de4a1425b03422f384c1a032d",
44
"packages": {
55
".": {
66
"release-type": "python",

CHANGELOG.md

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

3+
## [1.30.0](https://github.com/google/adk-python/compare/v1.29.0...v1.30.0) (2026-04-13)
4+
5+
6+
### Features
7+
8+
* Add Auth Provider support to agent registry ([f2c68eb](https://github.com/google/adk-python/commit/f2c68eb1536f1c0018c2cf7ee3f4417ca442080c))
9+
* Add Parameter Manager integration to ADK ([b0715d7](https://github.com/google/adk-python/commit/b0715d77a2a433bb2ed07a2475cc4d1f2d662b6c))
10+
* Add support for Gemma 4 models in ADK ([9d4ecbe](https://github.com/google/adk-python/commit/9d4ecbe9fd1141693e4682cbfe4d542cc62b76ac)), closes [#5156](https://github.com/google/adk-python/issues/5156)
11+
* allow users to include artifacts from artifact_service in A2A events using provided interceptor ([e63d991](https://github.com/google/adk-python/commit/e63d991be84e373fd31be29d4b6b0e32fdbde557))
12+
* emit a `TaskStatusUpdateEvent` for ADK events with no output parts but with event.actions ([dcc485b](https://github.com/google/adk-python/commit/dcc485b23e3509e2e386636d841033b91c9a401c))
13+
* Live avatar support in ADK ([a64a8e4](https://github.com/google/adk-python/commit/a64a8e46480753439b91b9cfd41fd190b4dad493))
14+
* **live:** expose live_session_resumption_update as Event in BaseLlmFlow ([2626ad7](https://github.com/google/adk-python/commit/2626ad7c69fb64a88372225d5583085fc08b1fcd)), closes [#4357](https://github.com/google/adk-python/issues/4357)
15+
* Promote BigQuery tools to Stable ([abcf14c](https://github.com/google/adk-python/commit/abcf14c166baf4f8cc6e919b1eb4c063bf3a92af))
16+
* **samples:** add sample for skill activation via environment tools ([2cbb523](https://github.com/google/adk-python/commit/2cbb52306910fac994fe1d29bdfcfacb258703b4))
17+
18+
19+
### Bug Fixes
20+
21+
* Add "gcloud config unset project" command to express mode flow ([e7d8160](https://github.com/google/adk-python/commit/e7d81604126cbdb4d9ee4624e1d1410b06585750))
22+
* avoid load all agents in adk web server ([cb4dd42](https://github.com/google/adk-python/commit/cb4dd42eff2df6d20c5e53211718ecb023f127fc))
23+
* Change express mode user flow so it's more clear that an express mode project is being created ([0fedb3b](https://github.com/google/adk-python/commit/0fedb3b5eb2074999d8ccdb839e054ea80da486f))
24+
* Custom pickling in McpToolset to exclude unpicklable objects like errlog ([d62558c](https://github.com/google/adk-python/commit/d62558cc2d7d6c0372e43c9f009c8c7a6863ff0a))
25+
* Fix credential leakage vulnerability in Agent Registry ([e3567a6](https://github.com/google/adk-python/commit/e3567a65196bb453cdac4a5ae42f7f079476d748))
26+
* Include a link to the deployed agent ([547766a](https://github.com/google/adk-python/commit/547766a47779915a8a47745237a46882a02dae9a))
27+
* preserve interaction ids for interactions SSE tool calls ([9a19304](https://github.com/google/adk-python/commit/9a1930407a4eff67093ea9f14292f1931631a661)), closes [#5169](https://github.com/google/adk-python/issues/5169)
28+
* validate user_id and session_id against path traversal ([cbcb5e6](https://github.com/google/adk-python/commit/cbcb5e6002b5bae89de5309caf7b9bb02d563cfc)), closes [#5110](https://github.com/google/adk-python/issues/5110)
29+
330
## [1.29.0](https://github.com/google/adk-python/compare/v1.28.0...v1.29.0) (2026-04-09)
431

532

pyproject.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ dependencies = [
4444
"google-cloud-spanner>=3.56.0, <4.0.0", # For Spanner database
4545
"google-cloud-speech>=2.30.0, <3.0.0", # For Audio Transcription
4646
"google-cloud-storage>=2.18.0, <4.0.0", # For GCS Artifact service
47-
"google-genai>=1.64.0, <2.0.0", # Google GenAI SDK
47+
"google-genai>=1.72.0, <2.0.0", # Google GenAI SDK
4848
"graphviz>=0.20.2, <1.0.0", # Graphviz for graph rendering
4949
"httpx>=0.27.0, <1.0.0", # HTTP client library
5050
"jsonschema>=4.23.0, <5.0.0", # Agent Builder config validation
51-
"mcp>=1.23.0, <2.0.0", # For MCP Toolset
51+
"mcp>=1.24.0, <2.0.0", # For MCP Toolset
5252
"opentelemetry-api>=1.36.0, <1.39.0", # OpenTelemetry - keep below 1.39.0 due to current agent_engines exporter constraints.
5353
"opentelemetry-exporter-gcp-logging>=1.9.0a0, <2.0.0",
5454
"opentelemetry-exporter-gcp-monitoring>=1.9.0a0, <2.0.0",
@@ -123,6 +123,7 @@ test = [
123123
"a2a-sdk>=0.3.0,<0.4.0",
124124
"anthropic>=0.43.0", # For anthropic model tests
125125
"crewai[tools];python_version>='3.11' and python_version<'3.12'", # For CrewaiTool tests; chromadb/pypika fail on 3.12+
126+
"google-cloud-firestore>=2.11.0, <3.0.0",
126127
"google-cloud-iamconnectorcredentials>=0.1.0, <0.2.0",
127128
"google-cloud-parametermanager>=0.4.0, <1.0.0",
128129
"kubernetes>=29.0.0", # For GkeCodeExecutor
@@ -159,6 +160,7 @@ extensions = [
159160
"beautifulsoup4>=3.2.2", # For load_web_page tool.
160161
"crewai[tools];python_version>='3.11' and python_version<'3.12'", # For CrewaiTool; chromadb/pypika fail on 3.12+
161162
"docker>=7.0.0", # For ContainerCodeExecutor
163+
"google-cloud-firestore>=2.11.0, <3.0.0", # For Firestore services
162164
"google-cloud-parametermanager>=0.4.0, <1.0.0",
163165
"kubernetes>=29.0.0", # For GkeCodeExecutor
164166
"k8s-agent-sandbox>=0.1.1.post3", # For GkeCodeExecutor sandbox mode

src/google/adk/agents/run_config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,9 @@ class RunConfig(BaseModel):
198198
response_modalities: Optional[list[str]] = None
199199
"""The output modalities. If not set, it's default to AUDIO."""
200200

201+
avatar_config: Optional[types.AvatarConfig] = None
202+
"""Avatar configuration for the live agent."""
203+
201204
save_input_blobs_as_artifacts: bool = Field(
202205
default=False,
203206
deprecated=True,

src/google/adk/errors/already_exists_error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class AlreadyExistsError(Exception):
1919
"""Represents an error that occurs when an entity already exists."""
2020

21-
def __init__(self, message="The resource already exists."):
21+
def __init__(self, message: str = "The resource already exists."):
2222
"""Initializes the AlreadyExistsError exception.
2323
2424
Args:

src/google/adk/flows/llm_flows/basic.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ def _build_basic_request(
9090
llm_request.live_connect_config.context_window_compression = (
9191
invocation_context.run_config.context_window_compression
9292
)
93+
llm_request.live_connect_config.avatar_config = (
94+
invocation_context.run_config.avatar_config
95+
)
9396

9497

9598
class _BasicLlmRequestProcessor(BaseLlmRequestProcessor):
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
from __future__ import annotations
16+
17+
"""Firestore integrations for ADK."""
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
from __future__ import annotations
16+
17+
DEFAULT_STOP_WORDS = {
18+
"a",
19+
"about",
20+
"above",
21+
"after",
22+
"again",
23+
"against",
24+
"all",
25+
"am",
26+
"an",
27+
"and",
28+
"any",
29+
"are",
30+
"as",
31+
"at",
32+
"be",
33+
"because",
34+
"been",
35+
"before",
36+
"being",
37+
"below",
38+
"between",
39+
"both",
40+
"but",
41+
"by",
42+
"can",
43+
"could",
44+
"did",
45+
"do",
46+
"does",
47+
"doing",
48+
"don",
49+
"down",
50+
"during",
51+
"each",
52+
"else",
53+
"few",
54+
"for",
55+
"from",
56+
"further",
57+
"had",
58+
"has",
59+
"have",
60+
"having",
61+
"he",
62+
"her",
63+
"here",
64+
"hers",
65+
"herself",
66+
"him",
67+
"himself",
68+
"his",
69+
"how",
70+
"i",
71+
"if",
72+
"in",
73+
"into",
74+
"is",
75+
"it",
76+
"its",
77+
"itself",
78+
"just",
79+
"may",
80+
"me",
81+
"might",
82+
"more",
83+
"most",
84+
"must",
85+
"my",
86+
"myself",
87+
"no",
88+
"nor",
89+
"not",
90+
"now",
91+
"of",
92+
"off",
93+
"on",
94+
"once",
95+
"only",
96+
"or",
97+
"other",
98+
"our",
99+
"ours",
100+
"ourselves",
101+
"out",
102+
"over",
103+
"own",
104+
"s",
105+
"same",
106+
"shall",
107+
"she",
108+
"should",
109+
"so",
110+
"some",
111+
"such",
112+
"t",
113+
"than",
114+
"that",
115+
"the",
116+
"their",
117+
"theirs",
118+
"them",
119+
"themselves",
120+
"then",
121+
"there",
122+
"these",
123+
"they",
124+
"this",
125+
"those",
126+
"through",
127+
"to",
128+
"too",
129+
"under",
130+
"until",
131+
"up",
132+
"very",
133+
"was",
134+
"we",
135+
"were",
136+
"what",
137+
"when",
138+
"where",
139+
"which",
140+
"who",
141+
"whom",
142+
"why",
143+
"will",
144+
"with",
145+
"would",
146+
"you",
147+
"your",
148+
"yours",
149+
"yourself",
150+
"yourselves",
151+
}

0 commit comments

Comments
 (0)