28 lines
796 B
TypeScript
28 lines
796 B
TypeScript
import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
|
|
import { createCursorRole } from "@uncaged/nerve-workflow-utils";
|
|
import { coderPrompt } from "./prompt.js";
|
|
import { z } from "zod";
|
|
|
|
export type CoderMeta = { filesCreated: boolean };
|
|
export const coderMetaSchema = z.object({
|
|
filesCreated: z.boolean().describe("true if the sense files were created"),
|
|
});
|
|
|
|
export type BuildCoderDeps = {
|
|
provider: LlmProvider;
|
|
cwd: string;
|
|
sensesDir: string;
|
|
nerveRoot: string;
|
|
};
|
|
|
|
export function buildCoderRole({ provider, cwd, sensesDir, nerveRoot }: BuildCoderDeps) {
|
|
return createCursorRole<CoderMeta>({
|
|
cwd,
|
|
mode: "default",
|
|
prompt: async (threadId) => coderPrompt({ threadId, sensesDir, nerveRoot }),
|
|
extract: { provider, schema: coderMetaSchema },
|
|
});
|
|
}
|
|
|
|
|