import type { AgentFn, WorkflowDefinition } from "@uncaged/nerve-core"; import type { LlmExtractorConfig } from "@uncaged/nerve-workflow-utils"; import { moderator } from "./moderator.js"; import type { SenseMeta } 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 CreateDevelopSenseDeps = { adapters: Record; extract: LlmExtractorConfig; cwd: string; }; export function createDevelopSenseWorkflow({ adapters, extract, cwd, }: CreateDevelopSenseDeps): WorkflowDefinition { const roles = { planner: createPlannerRole(adapters.planner, extract), coder: createCoderRole(adapters.coder, extract), reviewer: createReviewerRole(adapters.reviewer, extract, cwd), tester: createTesterRole(adapters.tester, extract, cwd), committer: createWorkspaceCommitterRole(adapters.committer, { extract, nerveRoot: cwd, workflowName: "develop-sense", conventionalCommitScopeHint: "sense", branchCheckoutExample: "git checkout -b fix/sense-export-path", }), }; return { name: "develop-sense", roles, moderator, }; }