Skip to content

Commit 567807a

Browse files
authored
Merge branch 'main' into security/restrict-module-imports-config-agent
2 parents fba8ff2 + af8bfe0 commit 567807a

28 files changed

Lines changed: 788 additions & 506 deletions

.github/workflows/check-file-contents.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
# 1. Identify files containing any googleapis.com URL.
112112
set +e
113113
FILES_WITH_ENDPOINTS=$(grep -lE 'https?://[a-zA-Z0-9.-]+\.googleapis\.com' $CHANGED_FILES)
114-
114+
115115
# 2. From those, identify files that are MISSING the required mTLS version.
116116
if [ -n "$FILES_WITH_ENDPOINTS" ]; then
117117
FILES_MISSING_MTLS=$(grep -L '.mtls.googleapis.com' $FILES_WITH_ENDPOINTS)

.github/workflows/issue-monitor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ jobs:
5858
REPO: ${{ github.event.repository.name }}
5959
CONCURRENCY_LIMIT: 3
6060
INITIAL_FULL_SCAN: ${{ github.event.inputs.full_scan == 'true' }}
61-
LLM_MODEL_NAME: "gemini-2.5-flash"
61+
LLM_MODEL_NAME: "gemini-3.5-flash"
6262
PYTHONPATH: contributing/samples/adk_team
6363
run: python -m adk_issue_monitoring_agent.main

.github/workflows/stale-bot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
OWNER: ${{ github.repository_owner }}
3939
REPO: adk-python
4040
CONCURRENCY_LIMIT: 3
41-
LLM_MODEL_NAME: "gemini-2.5-flash"
41+
LLM_MODEL_NAME: "gemini-3.5-flash"
4242
PYTHONPATH: contributing/samples/adk_team
4343

4444
run: python -m adk_stale_agent.main

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ Thumbs.db
104104
.adk/
105105
.claude/
106106
.jetski*
107+
.antigravity*
107108
CLAUDE.md
108109
.cursor/
109110
.cursorrules

contributing/samples/integrations/data_agent/agent.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
],
8080
)
8181

82+
8283
# NOTE: The generate_chart tool requires 'altair' and 'vl-convert-python' to be
8384
# installed in your environment. You can install them using:
8485
# pip install altair vl-convert-python

src/google/adk/agents/llm_agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ async def _convert_tool_union_to_tools(
193193
class LlmAgent(BaseAgent):
194194
"""LLM-based Agent."""
195195

196-
DEFAULT_MODEL: ClassVar[str] = 'gemini-2.5-flash'
196+
DEFAULT_MODEL: ClassVar[str] = 'gemini-3-flash-preview'
197197
"""System default model used when no model is set on an agent."""
198198

199199
DEFAULT_LIVE_MODEL: ClassVar[str] = 'gemini-live-2.5-flash-native-audio'
@@ -210,7 +210,7 @@ class LlmAgent(BaseAgent):
210210
211211
When not set, the agent will inherit the model from its ancestor. If no
212212
ancestor provides a model, the agent uses the default model configured via
213-
LlmAgent.set_default_model. The built-in default is gemini-2.5-flash.
213+
LlmAgent.set_default_model. The built-in default is gemini-3-flash-preview.
214214
"""
215215

216216
instruction: Union[str, InstructionProvider] = ''

src/google/adk/agents/llm_agent_config.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ class LlmAgentConfig(BaseAgentConfig):
5555
default=None,
5656
description=(
5757
'Optional. LlmAgent.model. Provide a model name string (e.g.'
58-
' "gemini-2.5-flash"). If not set, the model will be inherited from'
59-
' the ancestor or fall back to the system default (gemini-2.5-flash'
60-
' unless overridden via LlmAgent.set_default_model). To construct a'
61-
' model instance from code, use model_code.'
58+
' "gemini-3-flash-preview"). If not set, the model will be inherited'
59+
' from the ancestor or fall back to the system default'
60+
' (gemini-3-flash-preview unless overridden via'
61+
' LlmAgent.set_default_model). To construct a model instance from'
62+
' code, use model_code.'
6263
),
6364
)
6465

src/google/adk/cli/utils/evals.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
from __future__ import annotations
1616

1717
import os
18-
from typing import Any, TYPE_CHECKING
18+
from typing import Any
19+
from typing import TYPE_CHECKING
1920

2021
from pydantic import alias_generators
2122
from pydantic import BaseModel
@@ -77,9 +78,9 @@ def create_gcs_eval_managers_from_uri(
7778
from ...evaluation.gcs_eval_sets_manager import GcsEvalSetsManager
7879
except ImportError as e:
7980
raise RuntimeError(
80-
'GCS evaluation managers require Google Cloud optional dependencies.\n'
81-
'Please install them using: pip install google-adk[gcp]\n'
82-
'Or: pip install google-cloud-storage>=2.18'
81+
'GCS evaluation managers require Google Cloud optional'
82+
' dependencies.\nPlease install them using: pip install'
83+
' google-adk[gcp]\nOr: pip install google-cloud-storage>=2.18'
8384
) from e
8485

8586
gcs_bucket = eval_storage_uri.split('://')[1]

src/google/adk/features/_feature_registry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class FeatureConfig:
150150
FeatureStage.EXPERIMENTAL, default_on=True
151151
),
152152
FeatureName.SKILL_TOOLSET: FeatureConfig(
153-
FeatureStage.EXPERIMENTAL, default_on=True
153+
FeatureStage.STABLE, default_on=True
154154
),
155155
FeatureName.SPANNER_ADMIN_TOOLSET: FeatureConfig(
156156
FeatureStage.EXPERIMENTAL, default_on=True

src/google/adk/runners.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ async def _run_node_async(
455455
user_id: str,
456456
session_id: str,
457457
new_message: Optional[types.Content] = None,
458+
state_delta: Optional[dict[str, Any]] = None,
458459
run_config: Optional[RunConfig] = None,
459460
yield_user_message: bool = False,
460461
node: Optional['BaseNode'] = None,
@@ -512,7 +513,9 @@ async def _run_node_async(
512513

513514
# Append user message to session for history
514515
if new_message:
515-
user_event = await self._append_user_event(ic, new_message)
516+
user_event = await self._append_user_event(
517+
ic, new_message, state_delta=state_delta
518+
)
516519
if yield_user_message and user_event:
517520
yield user_event
518521

@@ -706,14 +709,26 @@ def _resolve_invocation_id_from_fr(
706709
return invocation_ids.pop()
707710

708711
async def _append_user_event(
709-
self, ic: InvocationContext, content: types.Content
712+
self,
713+
ic: InvocationContext,
714+
content: types.Content,
715+
*,
716+
state_delta: Optional[dict[str, Any]] = None,
710717
) -> Event:
711718
"""Append a user message event to the session and return it."""
712-
event = Event(
713-
invocation_id=ic.invocation_id,
714-
author='user',
715-
content=content,
716-
)
719+
if state_delta:
720+
event = Event(
721+
invocation_id=ic.invocation_id,
722+
author='user',
723+
actions=EventActions(state_delta=state_delta),
724+
content=content,
725+
)
726+
else:
727+
event = Event(
728+
invocation_id=ic.invocation_id,
729+
author='user',
730+
content=content,
731+
)
717732
# when a paused task delegation is in flight, stamp
718733
# the new user message with that task's isolation_scope so the
719734
# task agent's content-build (scoped to <fc_id>) sees it.
@@ -989,6 +1004,7 @@ async def run_async(
9891004
user_id=user_id,
9901005
session_id=session_id,
9911006
new_message=new_message,
1007+
state_delta=state_delta,
9921008
run_config=run_config,
9931009
yield_user_message=yield_user_message,
9941010
node=agent_to_run,
@@ -1008,6 +1024,7 @@ async def run_async(
10081024
user_id=user_id,
10091025
session_id=session_id,
10101026
new_message=new_message,
1027+
state_delta=state_delta,
10111028
run_config=run_config,
10121029
yield_user_message=yield_user_message,
10131030
)

0 commit comments

Comments
 (0)