Skip to content

Commit e583195

Browse files
committed
fix(fastapi): pass state_delta to runner in /run endpoint
1 parent fcd748e commit e583195

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

‎src/google/adk/cli/adk_web_server.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -993,6 +993,7 @@ async def run_agent(req: RunAgentRequest) -> list[Event]:
993993
user_id=req.user_id,
994994
session_id=req.session_id,
995995
new_message=req.new_message,
996+
state_delta=req.state_delta,
996997
)
997998
) as agen:
998999
events = [event async for event in agen]

‎tests/unittests/cli/test_fast_api.py‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

747786
def test_list_artifact_names(test_app, create_test_session):
748787
"""Test listing artifact names for a session."""

0 commit comments

Comments
 (0)