import { z } from "zod"; export const PROMPT_KIND_VALUES = ["system", "user", "template", "structured"] as const; export const promptVariableSchema = z.object({ name: z.string().regex(/^[A-Za-z_][\w.-]*$/).max(64), label: z.string().max(80).optional(), default: z.string().max(4000).optional(), required: z.boolean().optional(), options: z.array(z.string().max(200)).max(50).optional(), }); /** Body of POST /api/prompts; PATCH uses `.partial()`. */ export const promptBodySchema = z.object({ kind: z.enum(PROMPT_KIND_VALUES).optional(), name: z.string().min(1).max(120), description: z.string().max(600).nullable().optional(), content: z.string().min(1).max(100_000), variables: z.array(promptVariableSchema).max(50).optional(), schema: z.record(z.string(), z.unknown()).nullable().optional(), folder: z.string().max(60).nullable().optional(), tags: z.array(z.string().max(32)).max(12).optional(), favorite: z.boolean().optional(), defaultModelKey: z.string().max(120).nullable().optional(), projectId: z.string().max(64).nullable().optional(), }); export type PromptBodyInput = z.infer; /** Body of POST /api/prompts/:id/use. */ export const promptUseSchema = z.object({ variables: z.record(z.string().max(64), z.string().max(20_000)).optional() }).default({});