22 lines
718 B
TypeScript

import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
import { createHermesRole } from "@uncaged/nerve-workflow-utils";
import { z } from "zod";
import { reviewPrompt } from "./prompt.js";
export const reviewMetaSchema = z.object({
approved: z.boolean().describe("true if diff is clean and ready for tests"),
});
export type ReviewMeta = z.infer<typeof reviewMetaSchema>;
export type BuildReviewDeps = {
provider: LlmProvider;
nerveRoot: string;
};
export function buildReviewRole({ provider, nerveRoot }: BuildReviewDeps) {
return createHermesRole<ReviewMeta>({
prompt: async (threadId) => reviewPrompt({ threadId, nerveRoot }),
extract: { provider, schema: reviewMetaSchema },
});
}