import type { WorkflowDefinition } from "@uncaged/nerve-core"; import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { moderator } from "./moderator.js"; import type { WorkflowMeta } from "./moderator.js"; import { buildIntakeRole } from "./roles/intake/index.js"; import { buildIssueReaderRole } from "./roles/issue-reader/index.js"; import { buildPlannerRole } from "./roles/planner/index.js"; import { buildImplementerRole } from "./roles/implementer/index.js"; import { buildReviewerRole } from "./roles/reviewer/index.js"; import { buildTesterRole } from "./roles/tester/index.js"; import { buildPrPublisherRole } from "./roles/pr-publisher/index.js"; export type BuildSolveIssueDeps = { nerveRoot: string; provider: LlmProvider; }; export function buildSolveIssue({ nerveRoot, provider }: BuildSolveIssueDeps): WorkflowDefinition { return { name: "solve-issue", roles: { intake: buildIntakeRole(), "issue-reader": buildIssueReaderRole({ nerveRoot }), planner: buildPlannerRole({ nerveRoot }), implementer: buildImplementerRole({ nerveRoot }), reviewer: buildReviewerRole({ provider, nerveRoot }), tester: buildTesterRole({ nerveRoot }), "pr-publisher": buildPrPublisherRole({ nerveRoot }), }, moderator, }; }