22 lines
710 B
TypeScript

import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
import { createCursorRole } from "@uncaged/nerve-workflow-utils";
import { plannerMetaSchema } from "./types.js";
import type { PlannerMeta } from "./types.js";
import { plannerPrompt } from "./prompt.js";
export type BuildPlannerDeps = {
provider: LlmProvider;
cwd: string;
senseExamples: string;
nerveYaml: string;
};
export function buildPlannerRole({ provider, cwd, senseExamples, nerveYaml }: BuildPlannerDeps) {
return createCursorRole<PlannerMeta>({
cwd,
mode: "ask",
prompt: async (threadId) => plannerPrompt({ threadId, senseExamples, nerveYaml }),
extract: { provider, schema: plannerMetaSchema },
});
}