22 lines
754 B
TypeScript

import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
import { createHermesRole } from "@uncaged/nerve-workflow-utils";
import { reviewerPrompt } from "./prompt.js";
import { z } from "zod";
export const reviewerMetaSchema = z.object({
approved: z.boolean().describe("true if the diff is clean and ready for tester validation"),
});
export type ReviewerMeta = z.infer<typeof reviewerMetaSchema>;
export type BuildReviewerDeps = {
provider: LlmProvider;
nerveRoot: string;
};
export function buildReviewerRole({ provider, nerveRoot }: BuildReviewerDeps) {
return createHermesRole<ReviewerMeta>({
prompt: async (threadId) => reviewerPrompt({ threadId, nerveRoot }),
extract: { provider, schema: reviewerMetaSchema },
});
}