33 lines
1.3 KiB
TypeScript
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,
|
|
};
|
|
}
|