Provider resolved once at top level, injected into each build*Role().
Role builders no longer async — they're pure factory calls.
小橘 🍊(NEKO Team)
19 lines
724 B
TypeScript
19 lines
724 B
TypeScript
import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
|
|
import { createCursorRole } from "@uncaged/nerve-workflow-utils";
|
|
import { buildSenseExamples, getNerveYaml, NERVE_ROOT } from "../shared.js";
|
|
import { plannerMetaSchema } from "../types.js";
|
|
import type { SenseMeta } from "../types.js";
|
|
import { plannerPrompt } from "./prompt.js";
|
|
|
|
const senseExamples = buildSenseExamples();
|
|
const nerveYaml = getNerveYaml();
|
|
|
|
export function buildPlannerRole(provider: LlmProvider) {
|
|
return createCursorRole<SenseMeta["planner"]>({
|
|
cwd: NERVE_ROOT,
|
|
mode: "ask",
|
|
prompt: async (threadId) => plannerPrompt({ threadId, senseExamples, nerveYaml }),
|
|
extract: { provider, schema: plannerMetaSchema },
|
|
});
|
|
}
|