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; extract: LlmExtractorConfig; nerveRoot: string; }; export function createDevelopWorkflowWorkflow({ adapters, extract, nerveRoot, }: CreateDevelopWorkflowDeps): WorkflowDefinition { 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, }; }