from collections.abc import AsyncIterator from app.core.contracts import AgentRequest, RequestContext, RunProgressEvent from app.service.agent.factory import AgentFactory class AgentExecutor: def __init__(self, factory: AgentFactory) -> None: self.factory = factory async def execute( self, agent_type: str, request: AgentRequest, context: RequestContext, run_id: str ) -> AsyncIterator[RunProgressEvent]: agent = self.factory.create(agent_type, context) async for event in agent.execute(request, context, run_id): yield event