@@ -110,6 +110,7 @@ async def dummy_run_async(
110110 user_id ,
111111 session_id ,
112112 new_message ,
113+ state_delta = None ,
113114 run_config : RunConfig = RunConfig (),
114115):
115116 yield _event_1 ()
@@ -743,6 +744,44 @@ def test_agent_run(test_app, create_test_session):
743744
744745 logger .info ("Agent run test completed successfully" )
745746
747+ def test_agent_run_passes_state_delta (test_app , create_test_session , monkeypatch ):
748+ """Test /run forwards state_delta to Runner.run_async."""
749+ captured = {}
750+
751+ async def spy_run_async (
752+ self ,
753+ * ,
754+ user_id ,
755+ session_id ,
756+ new_message ,
757+ state_delta = None ,
758+ run_config = None ,
759+ ):
760+ captured ["user_id" ] = user_id
761+ captured ["session_id" ] = session_id
762+ captured ["state_delta" ] = state_delta
763+ if False : # make this an async generator
764+ yield
765+
766+ monkeypatch .setattr (Runner , "run_async" , spy_run_async )
767+
768+ info = create_test_session
769+ payload = {
770+ "app_name" : info ["app_name" ],
771+ "user_id" : info ["user_id" ],
772+ "session_id" : info ["session_id" ],
773+ "new_message" : {"role" : "user" , "parts" : [{"text" : "Hello" }]},
774+ "streaming" : False ,
775+ "state_delta" : {"k" : "v" , "count" : 1 },
776+ }
777+
778+ response = test_app .post ("/run" , json = payload )
779+ assert response .status_code == 200
780+ assert isinstance (response .json (), list )
781+
782+ assert captured ["user_id" ] == info ["user_id" ]
783+ assert captured ["session_id" ] == info ["session_id" ]
784+ assert captured ["state_delta" ] == payload ["state_delta" ]
746785
747786def test_list_artifact_names (test_app , create_test_session ):
748787 """Test listing artifact names for a session."""
0 commit comments