"""GET /api/workflows — list seed workflow templates.""" from __future__ import annotations from pathlib import Path from typing import Annotated from fastapi import APIRouter, Depends from ...workflow import WorkflowTemplate from ..deps import get_workflows, seed_root from ..models import WorkflowPhaseSummary, WorkflowRoleSummary, WorkflowSummary router = APIRouter() WorkflowsDep = Annotated[list[tuple[Path, WorkflowTemplate]], Depends(get_workflows)] @router.get("", response_model=list[WorkflowSummary]) async def list_workflows(workflows: WorkflowsDep) -> list[WorkflowSummary]: base = seed_root() / "workflows" out: list[WorkflowSummary] = [] for path, tpl in workflows: try: rel = path.relative_to(base.parent) except ValueError: rel = path out.append( WorkflowSummary( path=str(rel), name=tpl.name, version=tpl.version, description=tpl.description, roles=[ WorkflowRoleSummary( id=r.id, required_capabilities=[c.value for c in r.required_capabilities], ) for r in tpl.roles ], phases=[ WorkflowPhaseSummary( key=ph.key, title=ph.title, risk=ph.risk.value, role=ph.role, ) for ph in tpl.phases ], ) ) return out