import { join } from "node:path"; import type { WorkflowDefinition } from "@uncaged/nerve-core"; import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { buildPlannerRole } from "./roles/planner/index.js"; import { buildCoderRole } from "./roles/coder/index.js"; import { buildTesterRole } from "./roles/tester/index.js"; import { buildCommitterRole } from "./roles/committer/index.js"; import { moderator } from "./moderator.js"; import type { WorkflowMeta } from "./moderator.js"; export type BuildWorkflowGeneratorDeps = { provider: LlmProvider; nerveRoot: string; }; export function buildWorkflowGenerator({ provider, nerveRoot, }: BuildWorkflowGeneratorDeps): WorkflowDefinition { const workflowsDir = join(nerveRoot, "workflows"); return { name: "workflow-generator", roles: { planner: buildPlannerRole({ provider, nerveRoot, workflowsDir }), coder: buildCoderRole({ nerveRoot, workflowsDir }), tester: buildTesterRole({ nerveRoot }), committer: buildCommitterRole({ nerveRoot }), }, moderator, }; }