34
34
from google .adk .evaluation .eval_set import EvalSet
35
35
from google .adk .evaluation .in_memory_eval_sets_manager import InMemoryEvalSetsManager
36
36
from google .adk .events .event import Event
37
+ from google .adk .events .event_actions import EventActions
37
38
from google .adk .runners import Runner
38
39
from google .adk .sessions .base_session_service import ListSessionsResponse
39
40
from google .genai import types
@@ -94,6 +95,14 @@ def _event_3():
94
95
)
95
96
96
97
98
+ def _event_state_delta (state_delta : dict [str , Any ]):
99
+ return Event (
100
+ author = "dummy agent" ,
101
+ invocation_id = "invocation_id" ,
102
+ actions = EventActions (state_delta = state_delta ),
103
+ )
104
+
105
+
97
106
# Define mocked async generator functions for the Runner
98
107
async def dummy_run_live (self , session , live_request_queue ):
99
108
yield _event_1 ()
@@ -110,6 +119,7 @@ async def dummy_run_async(
110
119
user_id ,
111
120
session_id ,
112
121
new_message ,
122
+ state_delta = None ,
113
123
run_config : RunConfig = RunConfig (),
114
124
):
115
125
yield _event_1 ()
@@ -119,6 +129,10 @@ async def dummy_run_async(
119
129
await asyncio .sleep (0 )
120
130
121
131
yield _event_3 ()
132
+ await asyncio .sleep (0 )
133
+
134
+ if state_delta is not None :
135
+ yield _event_state_delta (state_delta )
122
136
123
137
124
138
# Define a local mock for EvalCaseResult specific to fast_api tests
@@ -743,6 +757,27 @@ def test_agent_run(test_app, create_test_session):
743
757
744
758
logger .info ("Agent run test completed successfully" )
745
759
760
+ def test_agent_run_passes_state_delta (test_app , create_test_session ):
761
+ """Test /run forwards state_delta and surfaces it in events."""
762
+ info = create_test_session
763
+ payload = {
764
+ "app_name" : info ["app_name" ],
765
+ "user_id" : info ["user_id" ],
766
+ "session_id" : info ["session_id" ],
767
+ "new_message" : {"role" : "user" , "parts" : [{"text" : "Hello" }]},
768
+ "streaming" : False ,
769
+ "state_delta" : {"k" : "v" , "count" : 1 },
770
+ }
771
+
772
+ # Verify the response
773
+ response = test_app .post ("/run" , json = payload )
774
+ assert response .status_code == 200
775
+ data = response .json ()
776
+ assert isinstance (data , list )
777
+ assert len (data ) == 4
778
+
779
+ # Verify we got the expected event
780
+ assert data [3 ]["actions" ]["stateDelta" ] == payload ["state_delta" ]
746
781
747
782
def test_list_artifact_names (test_app , create_test_session ):
748
783
"""Test listing artifact names for a session."""
0 commit comments