import type { WorkflowDefinition } from "@uncaged/nerve-core"; import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { buildPlannerRole } from "./roles/planner/index.js"; import { buildCoderRole } from "./roles/coder/index.js"; import { buildTesterRole } from "./roles/tester/index.js"; import { moderator } from "./moderator.js"; import type { SenseMeta } from "./moderator.js"; export type BuildSenseGeneratorDeps = { provider: LlmProvider; nerveRoot: string; sensesDir: string; senseExamples: string; nerveYaml: string; }; export function buildSenseGenerator(deps: BuildSenseGeneratorDeps): WorkflowDefinition { return { name: "sense-generator", roles: { planner: buildPlannerRole({ provider: deps.provider, cwd: deps.nerveRoot, senseExamples: deps.senseExamples, nerveYaml: deps.nerveYaml, }), coder: buildCoderRole({ provider: deps.provider, cwd: deps.nerveRoot, sensesDir: deps.sensesDir, nerveRoot: deps.nerveRoot, }), tester: buildTesterRole({ provider: deps.provider, sensesDir: deps.sensesDir, nerveRoot: deps.nerveRoot, }), }, moderator, }; }