MCPcopy Index your code
hub / github.com/google/adk-python / run_agent

Method run_agent

src/google/adk/cli/api_server.py:1460–1523  ·  view source on GitHub ↗
(req: RunAgentRequest, request: Request)

Source from the content-addressed store, hash-verified

1458
1459 @app.post("/run", response_model_exclude_none=True)
1460 async def run_agent(req: RunAgentRequest, request: Request) -> list[Event]:
1461 app_name = req.app_name or self.default_app_name
1462 if not app_name:
1463 raise HTTPException(
1464 status_code=400,
1465 detail="app_name is required when ADK_DEFAULT_APP_NAME is not set",
1466 )
1467 req.app_name = app_name
1468 self.current_app_name_ref.value = req.app_name
1469 runner = await self.get_runner_async(req.app_name)
1470 _set_telemetry_context_if_needed(runner)
1471 run_config = (
1472 RunConfig(custom_metadata=req.custom_metadata)
1473 if req.custom_metadata
1474 else None
1475 )
1476
1477 async def worker():
1478 try:
1479 async with Aclosing(
1480 runner.run_async(
1481 user_id=req.user_id,
1482 session_id=req.session_id,
1483 new_message=req.new_message,
1484 state_delta=req.state_delta,
1485 invocation_id=req.invocation_id,
1486 run_config=run_config,
1487 )
1488 ) as agen:
1489 return [event async for event in agen]
1490 except SessionNotFoundError as e:
1491 raise HTTPException(status_code=404, detail=str(e)) from e
1492
1493 worker_task = asyncio.create_task(worker())
1494
1495 async def monitor():
1496 try:
1497 while True:
1498 message = await request.receive()
1499 if message.get("type") == "http.disconnect":
1500 logger.warning(
1501 "Client disconnected. Aborting agent run for session %s.",
1502 req.session_id,
1503 )
1504 worker_task.cancel()
1505 break
1506 except asyncio.CancelledError:
1507 pass
1508 except Exception as e: # pylint: disable=broad-exception-caught
1509 logger.error("Exception in disconnect monitor: %s", e, exc_info=True)
1510
1511 monitor_task = asyncio.create_task(monitor())
1512
1513 try:
1514 events = await worker_task
1515 logger.info("Generated %s events in agent run", len(events))
1516 logger.debug("Events generated: %s", events)
1517 return events

Callers

nothing calls this directly

Calls 3

get_runner_asyncMethod · 0.95
RunConfigClass · 0.85
cancelMethod · 0.45

Tested by

no test coverage detected