- Rename build* → create* workflow factories - Workflow factories accept adapters: Record<string, AgentFn> - Each role file exports createXxxRole(adapter, ...) factory - _shared/workspace-committer accepts adapter as first param - All adapter imports moved to index.ts (injection point) - solve-issue roles also updated Closes #15
26 lines
761 B
TypeScript
26 lines
761 B
TypeScript
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<typeof reviewMetaSchema>;
|
|
|
|
export function createReviewRole(
|
|
adapter: AgentFn,
|
|
extract: LlmExtractorConfig,
|
|
nerveRoot: string,
|
|
): Role<ReviewMeta> {
|
|
return createRole(
|
|
adapter,
|
|
async (start: StartStep) =>
|
|
reviewPrompt({ threadId: start.meta.threadId, nerveRoot }),
|
|
reviewMetaSchema,
|
|
extract,
|
|
);
|
|
}
|