From fcc7786d4a5ffc3ce1afe58ac77b8bcbf071c7d2 Mon Sep 17 00:00:00 2001 From: AbhishekMauryaGEEK Date: Sat, 18 Apr 2026 02:20:07 +0530 Subject: [PATCH 1/3] Fix: handle invalid app_name in /run and /run_sse endpoints (return 404 instead of 500) --- src/google/adk/cli/adk_web_server.py | 29 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index ef83dcd45a..c81bcdde67 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1886,28 +1886,29 @@ def _set_telemetry_context_if_needed(runner: Runner): _is_visual_builder.set(True) else: _is_visual_builder.set(False) - @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: - runner = await self.get_runner_async(req.app_name) + try: + runner = await self.get_runner_async(req.app_name) + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) from e + _set_telemetry_context_if_needed(runner) try: async with Aclosing( - runner.run_async( - user_id=req.user_id, - session_id=req.session_id, - new_message=req.new_message, - state_delta=req.state_delta, - invocation_id=req.invocation_id, + runner.run_async( + user_id=req.user_id, + session_id=req.session_id, + new_message=req.new_message, + state_delta=req.state_delta, + invocation_id=req.invocation_id, ) - ) as agen: - events = [event async for event in agen] + ) as agen: + events = [event async for event in agen] except SessionNotFoundError as e: raise HTTPException(status_code=404, detail=str(e)) from e - logger.info("Generated %s events in agent run", len(events)) - logger.debug("Events generated: %s", events) - return events - + + return events @app.post("/run_sse") async def run_agent_sse(req: RunAgentRequest) -> StreamingResponse: stream_mode = StreamingMode.SSE if req.streaming else StreamingMode.NONE From 0daa2c901347bb99844b4b7f9bd92aa526d18d6d Mon Sep 17 00:00:00 2001 From: AbhishekMauryaGEEK Date: Sat, 18 Apr 2026 02:55:56 +0530 Subject: [PATCH 2/3] chore: trigger CLA check From 8b8ee9b0587062145260c2bc7f83d437841b330a Mon Sep 17 00:00:00 2001 From: AbhishekMauryaGEEK Date: Mon, 20 Apr 2026 01:24:30 +0530 Subject: [PATCH 3/3] Fix: handle invalid app_name across endpoints to prevent 500 errors --- python | 0 src/google/adk/cli/adk_web_server.py | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 python diff --git a/python b/python new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index c81bcdde67..554e8c36d7 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1009,7 +1009,10 @@ async def list_apps( @app.get("/apps/{app_name}/app-info", response_model_exclude_none=True) async def get_adk_app_info(app_name: str) -> AppInfo: """Returns the detailed info for a given ADK app.""" - agent_or_app = self.agent_loader.load_agent(app_name) + try: + agent_or_app = self.agent_loader.load_agent(app_name) + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) from e root_agent = self._get_root_agent(agent_or_app) if isinstance(root_agent, LlmAgent): return AppInfo( @@ -1912,7 +1915,10 @@ async def run_agent(req: RunAgentRequest) -> list[Event]: @app.post("/run_sse") async def run_agent_sse(req: RunAgentRequest) -> StreamingResponse: stream_mode = StreamingMode.SSE if req.streaming else StreamingMode.NONE - runner = await self.get_runner_async(req.app_name) + try: + runner = await self.get_runner_async(req.app_name) + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) from e _set_telemetry_context_if_needed(runner) # Validate session existence before starting the stream.