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 { buildReviewerRole } from "./roles/reviewer/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 { return { name: "workflow-generator", roles: { planner: buildPlannerRole({ provider, cwd: nerveRoot }), coder: buildCoderRole({ provider, cwd: nerveRoot }), reviewer: buildReviewerRole({ provider, nerveRoot }), tester: buildTesterRole({ provider, nerveRoot }), committer: buildCommitterRole({ nerveRoot }), }, moderator, }; }