import type { AgentFn, Role, StartStep } from "@uncaged/nerve-core"; import type { LlmExtractorConfig } from "@uncaged/nerve-workflow-utils"; import { createRole } 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; export function createReviewRole( adapter: AgentFn, extract: LlmExtractorConfig, nerveRoot: string, ): Role { return createRole( adapter, async (start: StartStep) => reviewPrompt({ threadId: start.meta.threadId, nerveRoot }), reviewMetaSchema, extract, ); }