from typing import Any, List from workflows.base_workflow import BaseWorkflow from agents.base_agent import AgentContext, AgentResult from utils.logger import get_logger logger = get_logger("sequential_workflow") class SequentialWorkflow(BaseWorkflow): """Run agents one by one in order.""" name = "sequential" async def execute(self, agents: List[Any], ctx: AgentContext) -> List[AgentResult]: results = [] for agent in agents: result = await agent.run(ctx) results.append(result) if result.status.value == "failed" and agent.critical: logger.error(f"Critical agent '{agent.name}' failed. Aborting.") break return results