33 lines
1.3 KiB
TypeScript

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<WorkflowMeta> {
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,
};
}