ai_agents / src /qa_platform /workflow.py
tomas.helmfridsson
better text color and guidelines
726069c
Raw History Blame Contribute Delete
1.59 kB
from __future__ import annotations
from dataclasses import dataclass, field
@dataclass(frozen=True)
class WorkflowNode:
stage_key: str
agent_key: str
stage_index: int
description: str
@dataclass
class WorkflowGraph:
start_stage: str
nodes: dict[str, WorkflowNode] = field(default_factory=dict)
def add_node(self, node: WorkflowNode) -> None:
self.nodes[node.stage_key] = node
def get_node(self, stage_key: str) -> WorkflowNode:
return self.nodes[stage_key]
def build_default_workflow_graph() -> WorkflowGraph:
graph = WorkflowGraph(start_stage="orchestrator")
graph.add_node(
WorkflowNode(
stage_key="orchestrator",
agent_key="orchestrator",
stage_index=0,
description="Route the workflow to the next valid agent.",
)
)
graph.add_node(
WorkflowNode(
stage_key="requirements",
agent_key="requirements_analyst",
stage_index=1,
description="Extract structured requirements from raw scenario text.",
)
)
graph.add_node(
WorkflowNode(
stage_key="design",
agent_key="test_design",
stage_index=2,
description="Create concrete test-case designs from requirements.",
)
)
graph.add_node(
WorkflowNode(
stage_key="review",
agent_key="review",
stage_index=3,
description="Review coverage, oracle strength, and routing focus.",
)
)
return graph