- 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
43 lines
1.4 KiB
TypeScript
43 lines
1.4 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 { createCoderRole } from "./roles/coder.js";
|
|
import { createWorkspaceCommitterRole } from "./roles/committer.js";
|
|
import { createPlannerRole } from "./roles/planner.js";
|
|
import { createReviewerRole } from "./roles/reviewer.js";
|
|
import { createTesterRole } from "./roles/tester.js";
|
|
|
|
export type CreateDevelopWorkflowDeps = {
|
|
adapters: Record<string, AgentFn>;
|
|
extract: LlmExtractorConfig;
|
|
nerveRoot: string;
|
|
};
|
|
|
|
export function createDevelopWorkflowWorkflow({
|
|
adapters,
|
|
extract,
|
|
nerveRoot,
|
|
}: CreateDevelopWorkflowDeps): WorkflowDefinition<WorkflowMeta> {
|
|
const roles = {
|
|
planner: createPlannerRole(adapters.planner, extract),
|
|
coder: createCoderRole(adapters.coder, extract),
|
|
reviewer: createReviewerRole(adapters.reviewer, extract, nerveRoot),
|
|
tester: createTesterRole(adapters.tester, extract, nerveRoot),
|
|
committer: createWorkspaceCommitterRole(adapters.committer, {
|
|
extract,
|
|
nerveRoot,
|
|
workflowName: "develop-workflow",
|
|
conventionalCommitScopeHint: "workflow",
|
|
branchCheckoutExample: "git checkout -b feat/workflow-new-step",
|
|
}),
|
|
};
|
|
|
|
return {
|
|
name: "develop-workflow",
|
|
roles,
|
|
moderator,
|
|
};
|
|
}
|