Spaces:
Sleeping
Sleeping
File size: 1,585 Bytes
726069c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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
|