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 ef83dcd45a..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( @@ -1886,32 +1889,36 @@ 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 - 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.