import type { AgentFn, Role, ThreadContext } from "@uncaged/nerve-core"; import type { LlmExtractorConfig } from "@uncaged/nerve-workflow-utils"; import { createRole } from "@uncaged/nerve-workflow-utils"; import { z } from "zod"; import { readIssuePrompt } from "./prompt.js"; export const readIssueMetaSchema = z.object({ ready: z.boolean().describe("true if issue content was fetched and markers are present"), }); export type ReadIssueMeta = z.infer; export function createReadIssueRole(adapter: AgentFn, extract: LlmExtractorConfig): Role { return createRole( adapter, async (ctx: ThreadContext) => readIssuePrompt({ threadId: ctx.start.meta.threadId }), readIssueMetaSchema, extract, ); }