File size: 731 Bytes
0e38162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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