小橘 cb61e98979 refactor(sense-generator): full DIP — all deps injected via build functions
Every role is self-contained (types.ts, prompt.ts, index.ts).
No shared.ts, no cross-role imports. All dependencies injected:

  index.ts          — wiring (resolve env, call buildSenseGenerator)
  build.ts          — buildSenseGenerator(deps) → WorkflowDefinition
  moderator.ts      — pure routing, composes meta from role types
  roles/planner/    — buildPlannerRole(deps), self-contained
  roles/coder/      — buildCoderRole(deps), self-contained
  roles/tester/     — buildTesterRole(deps), self-contained

Workflow is now reusable: buildSenseGenerator() can be called with
any provider/paths, not hardcoded to this machine.

小橘 🍊(NEKO Team)
2026-04-28 04:00:38 +00:00

23 lines
712 B
TypeScript

import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
import { createCursorRole } from "@uncaged/nerve-workflow-utils";
import { coderMetaSchema } from "./types.js";
import type { CoderMeta } from "./types.js";
import { coderPrompt } from "./prompt.js";
export type BuildCoderDeps = {
provider: LlmProvider;
cwd: string;
sensesDir: string;
nerveRoot: string;
};
export function buildCoderRole(deps: BuildCoderDeps) {
return createCursorRole<CoderMeta>({
cwd: deps.cwd,
mode: "default",
prompt: async (threadId) =>
coderPrompt({ threadId, sensesDir: deps.sensesDir, nerveRoot: deps.nerveRoot }),
extract: { provider: deps.provider, schema: coderMetaSchema },
});
}