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 { buildImplementRole } from "./roles/implement/index.js"; import { buildPlanRole } from "./roles/plan/index.js"; import { buildPrepareRole } from "./roles/prepare/index.js"; import { buildPublishRole } from "./roles/publish/index.js"; import { buildReadIssueRole } from "./roles/read-issue/index.js"; import { buildReviewRole } from "./roles/review/index.js"; import { buildTestRole } from "./roles/test/index.js"; export type BuildSolveIssueDeps = { nerveRoot: string; provider: LlmProvider; }; export function buildSolveIssue({ nerveRoot, provider }: BuildSolveIssueDeps): WorkflowDefinition { return { name: "solve-issue", roles: { "read-issue": buildReadIssueRole({ provider }), prepare: buildPrepareRole({ provider }), plan: buildPlanRole({ provider, nerveRoot }), implement: buildImplementRole({ provider, nerveRoot }), review: buildReviewRole({ provider, nerveRoot }), test: buildTestRole({ provider }), publish: buildPublishRole({ provider, nerveRoot }), }, moderator, }; }