Skip to content

Commit 90c7e0b

Browse files
authored
Merge branch 'main' into feat/session-data-masking
2 parents 5e4867e + d337ddf commit 90c7e0b

31 files changed

Lines changed: 2618 additions & 127 deletions

File tree

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

contributing/samples/live_bidi_streaming_multi_agent/agent.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,10 @@ def roll_die(sides: int) -> int:
3030
roll_agent = Agent(
3131
name="roll_agent",
3232
model=Gemini(
33-
# see https://docs.cloud.google.com/vertex-ai/generative-ai/docs/migrate
34-
# for vertex model names
35-
model="gemini-live-2.5-flash-native-audio", # vertex
36-
# see https://ai.google.dev/gemini-api/docs/models for AIS model names
37-
# model='gemini-2.5-flash-native-audio-latest', # for AI studio
33+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
34+
model="gemini-live-2.5-flash-native-audio", # Vertex
35+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
36+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
3837
speech_config=types.SpeechConfig(
3938
voice_config=types.VoiceConfig(
4039
prebuilt_voice_config=types.PrebuiltVoiceConfig(
@@ -85,11 +84,10 @@ def check_prime(nums: list[int]) -> str:
8584
prime_agent = Agent(
8685
name="prime_agent",
8786
model=Gemini(
88-
# see https://docs.cloud.google.com/vertex-ai/generative-ai/docs/migrate
89-
# for vertex model names
90-
model="gemini-live-2.5-flash-native-audio", # vertex
91-
# see https://ai.google.dev/gemini-api/docs/models for AIS model names
92-
# model='gemini-2.5-flash-native-audio-latest', # for AI studio
87+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
88+
model="gemini-live-2.5-flash-native-audio", # Vertex
89+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
90+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
9391
speech_config=types.SpeechConfig(
9492
voice_config=types.VoiceConfig(
9593
prebuilt_voice_config=types.PrebuiltVoiceConfig(
@@ -128,13 +126,11 @@ def get_current_weather(location: str):
128126

129127

130128
root_agent = Agent(
131-
# find supported models here: https://google.github.io/adk-docs/get-started/streaming/quickstart-streaming/
132129
model=Gemini(
133-
# see https://docs.cloud.google.com/vertex-ai/generative-ai/docs/migrate
134-
# for vertex model names
135-
model="gemini-live-2.5-flash-native-audio", # vertex
136-
# see https://ai.google.dev/gemini-api/docs/models for AIS model names
137-
# model='gemini-2.5-flash-native-audio-latest', # for AI studio
130+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
131+
model="gemini-live-2.5-flash-native-audio", # Vertex
132+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
133+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
138134
speech_config=types.SpeechConfig(
139135
voice_config=types.VoiceConfig(
140136
prebuilt_voice_config=types.PrebuiltVoiceConfig(

contributing/samples/live_bidi_streaming_parallel_tools_agent/agent.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ def turn_on_tv():
2929

3030

3131
root_agent = Agent(
32-
model="gemini-live-2.5-flash-native-audio",
32+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
33+
model="gemini-live-2.5-flash-native-audio", # Vertex
34+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
35+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
3336
name="Home_helper",
3437
instruction="Be polite and answer all user's questions.",
3538
tools=[turn_on_lights, turn_on_tv],

contributing/samples/live_bidi_streaming_single_agent/agent.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ async def check_prime(nums: list[int]) -> str:
6565

6666

6767
root_agent = Agent(
68-
# see https://docs.cloud.google.com/vertex-ai/generative-ai/docs/migrate
69-
# for vertex model names
70-
model='gemini-live-2.5-flash-native-audio', # vertex
71-
# see https://ai.google.dev/gemini-api/docs/models for AIS model names
72-
# model='gemini-2.5-flash-native-audio-latest', # for AI studio
68+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
69+
model='gemini-live-2.5-flash-native-audio', # Vertex
70+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
71+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
7372
name='roll_dice_agent',
7473
description=(
7574
'hello world agent that can roll a dice of 6 sides and check prime'

contributing/samples/live_bidi_streaming_tools_agent/agent.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,10 @@ def stop_streaming(function_name: str):
124124

125125

126126
root_agent = Agent(
127-
# see https://docs.cloud.google.com/vertex-ai/generative-ai/docs/migrate
128-
# for vertex model names
129-
model="gemini-live-2.5-flash-native-audio", # vertex
130-
# see https://ai.google.dev/gemini-api/docs/models for AIS model names
131-
# model='gemini-2.5-flash-native-audio-latest', # for AI studio
127+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
128+
model="gemini-live-2.5-flash-native-audio", # Vertex
129+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
130+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
132131
name="video_streaming_agent",
133132
instruction="""
134133
You are a monitoring agent. You can do video monitoring and stock price monitoring

contributing/samples/live_tool_callbacks_agent/agent.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,10 @@ async def after_tool_async_callback(
217217

218218
# Create the agent with tool callbacks
219219
root_agent = Agent(
220-
# find supported models here: https://google.github.io/adk-docs/get-started/streaming/quickstart-streaming/
221-
model="gemini-2.0-flash-live-preview-04-09", # for Vertex project
222-
# model="gemini-live-2.5-flash-preview", # for AI studio key
220+
# Find supported models in Vertex here: https://docs.cloud.google.com/vertex-ai/generative-ai/docs/live-api
221+
model="gemini-live-2.5-flash-native-audio", # Vertex
222+
# Find supported models in Gemini API here: https://ai.google.dev/gemini-api/docs/models
223+
# model='gemini-2.5-flash-native-audio-preview-12-2025', # Gemini API
223224
name="tool_callbacks_agent",
224225
description=(
225226
"Live streaming agent that demonstrates tool callbacks functionality. "

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,

0 commit comments

Comments
 (0)