- Rename build* → create* workflow factories - Workflow factories accept adapters: Record<string, AgentFn> - Each role file exports createXxxRole(adapter, ...) factory - _shared/workspace-committer accepts adapter as first param - All adapter imports moved to index.ts (injection point) - solve-issue roles also updated Closes #15
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import type { AgentFn, WorkflowDefinition } from "@uncaged/nerve-core";
|
|
import type { LlmExtractorConfig } from "@uncaged/nerve-workflow-utils";
|
|
|
|
import { moderator } from "./moderator.js";
|
|
import type { WorkflowMeta } from "./moderator.js";
|
|
import { createCommitterRole } from "./roles/committer/index.js";
|
|
import { createImplementRole } from "./roles/implement/index.js";
|
|
import { createPlanRole } from "./roles/plan/index.js";
|
|
import { createPrepareRole } from "./roles/prepare/index.js";
|
|
import { createPublishRole } from "./roles/publish/index.js";
|
|
import { createReadIssueRole } from "./roles/read-issue/index.js";
|
|
import { createReviewRole } from "./roles/review/index.js";
|
|
import { createTestRole } from "./roles/test/index.js";
|
|
|
|
export type CreateSolveIssueDeps = {
|
|
adapters: Record<string, AgentFn>;
|
|
nerveRoot: string;
|
|
extract: LlmExtractorConfig;
|
|
};
|
|
|
|
export function createSolveIssueWorkflow({
|
|
adapters,
|
|
nerveRoot,
|
|
extract,
|
|
}: CreateSolveIssueDeps): WorkflowDefinition<WorkflowMeta> {
|
|
return {
|
|
name: "solve-issue",
|
|
roles: {
|
|
"read-issue": createReadIssueRole(adapters["read-issue"], extract),
|
|
prepare: createPrepareRole(adapters.prepare, extract),
|
|
plan: createPlanRole(adapters.plan, { extract, nerveRoot }),
|
|
implement: createImplementRole(adapters.implement, { extract, nerveRoot }),
|
|
committer: createCommitterRole(adapters.committer, { extract, nerveRoot }),
|
|
review: createReviewRole(adapters.review, extract, nerveRoot),
|
|
test: createTestRole(adapters.test, extract),
|
|
publish: createPublishRole(adapters.publish, { extract, nerveRoot }),
|
|
},
|
|
moderator,
|
|
};
|
|
}
|