import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { createCursorRole } from "@uncaged/nerve-workflow-utils"; import { plannerPrompt } from "./prompt.js"; import { z } from "zod"; export type PlannerMeta = { senseName: string }; export const plannerMetaSchema = z.object({ senseName: z.string().describe("kebab-case sense name from the plan"), }); export type BuildPlannerDeps = { provider: LlmProvider; cwd: string; nerveYaml: string; }; export function buildPlannerRole({ provider, cwd, nerveYaml }: BuildPlannerDeps) { return createCursorRole({ cwd, mode: "ask", prompt: async (threadId) => plannerPrompt({ threadId, nerveYaml }), extract: { provider, schema: plannerMetaSchema }, }); }