@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 30.9 kB
Source Map (JSON)
{"version":3,"file":"ai.mjs","names":[],"sources":["../../src/schemas/ai.ts"],"sourcesContent":["import z from \"zod\";\nimport type { ControllerSchema } from \"../types.js\";\nimport { brickInputSchema } from \"./collection-bricks.js\";\nimport { fieldInputSchema } from \"./collection-fields.js\";\nimport { queryFormatted, queryString } from \"./helpers/querystring.js\";\nimport { profilePictureResponseSchema } from \"./media.js\";\n\nconst aiMaxBase64ImageLength = 8_000_000;\nconst aiImageDetailSchema = z.enum([\"low\", \"high\", \"auto\"]).default(\"low\");\nconst mediaImageMaxEdgeLength = 3_840;\nconst mediaImageMinPixels = 655_360;\nconst mediaImageMaxPixels = 8_294_400;\nconst mediaImageMaxAspectRatio = 3;\nconst mediaImageSizeIncrement = 16;\n\nconst mediaImageCustomSizeSchema = z\n\t.tuple([z.number(), z.number()])\n\t.superRefine(([width, height], context) => {\n\t\tconst hasValidEdges =\n\t\t\tNumber.isInteger(width) &&\n\t\t\tNumber.isInteger(height) &&\n\t\t\twidth > 0 &&\n\t\t\theight > 0;\n\n\t\tif (!hasValidEdges) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: \"Image width and height must be positive whole pixels.\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (width > mediaImageMaxEdgeLength || height > mediaImageMaxEdgeLength) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Image width and height must not exceed ${mediaImageMaxEdgeLength}px.`,\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\twidth % mediaImageSizeIncrement !== 0 ||\n\t\t\theight % mediaImageSizeIncrement !== 0\n\t\t) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Image width and height must be multiples of ${mediaImageSizeIncrement}px.`,\n\t\t\t});\n\t\t}\n\n\t\tconst longEdge = Math.max(width, height);\n\t\tconst shortEdge = Math.min(width, height);\n\t\tif (longEdge / shortEdge > mediaImageMaxAspectRatio) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Image long edge to short edge ratio must not exceed ${mediaImageMaxAspectRatio}:1.`,\n\t\t\t});\n\t\t}\n\n\t\tconst pixels = width * height;\n\t\tif (pixels < mediaImageMinPixels || pixels > mediaImageMaxPixels) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Image total pixels must be between ${mediaImageMinPixels} and ${mediaImageMaxPixels}.`,\n\t\t\t});\n\t\t}\n\t});\n\nconst mediaImageGenerationSchema = z\n\t.object({\n\t\tsize: z\n\t\t\t.union(\n\t\t\t\t[\n\t\t\t\t\tz.enum([\n\t\t\t\t\t\t\"auto\",\n\t\t\t\t\t\t\"1024x1024\",\n\t\t\t\t\t\t\"1536x1024\",\n\t\t\t\t\t\t\"1024x1536\",\n\t\t\t\t\t\t\"2048x2048\",\n\t\t\t\t\t\t\"2048x1152\",\n\t\t\t\t\t\t\"3840x2160\",\n\t\t\t\t\t\t\"2160x3840\",\n\t\t\t\t\t]),\n\t\t\t\t\tmediaImageCustomSizeSchema,\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\terror:\n\t\t\t\t\t\t\"Image resolution must be a preset or custom width and height.\",\n\t\t\t\t},\n\t\t\t)\n\t\t\t.default(\"1024x1024\"),\n\t\tquality: z.enum([\"auto\", \"low\", \"medium\", \"high\"]).default(\"medium\"),\n\t\toutputFormat: z.enum([\"webp\", \"png\", \"jpeg\"]).default(\"webp\"),\n\t})\n\t.strict()\n\t.default({\n\t\tsize: \"1024x1024\",\n\t\tquality: \"medium\",\n\t\toutputFormat: \"webp\",\n\t});\n\nconst localeSchema = z\n\t.object({\n\t\tsource: z.string().trim().min(2).max(32).optional(),\n\t\ttarget: z\n\t\t\t.array(z.string().trim().min(2).max(32))\n\t\t\t.min(1)\n\t\t\t.superRefine((locales, context) => {\n\t\t\t\tif (new Set(locales).size !== locales.length) {\n\t\t\t\t\tcontext.addIssue({\n\t\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\t\tmessage: \"Target locales must be unique.\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}),\n\t})\n\t.strict();\n\nconst aiGenerateResponseSchema = z\n\t.object({\n\t\tmode: z.enum([\"sync\", \"async\"]),\n\t\tstatus: z.literal(\"complete\").optional(),\n\t\trequestId: z.string(),\n\t\tfeature: z\n\t\t\t.object({\n\t\t\t\tkey: z.string(),\n\t\t\t\tversion: z.string(),\n\t\t\t})\n\t\t\t.strict(),\n\t\toutput: z.unknown(),\n\t\tusage: z\n\t\t\t.object({\n\t\t\t\tmodel: z.string(),\n\t\t\t\tproviderRequestId: z.string().optional(),\n\t\t\t\ttokens: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tinput: z\n\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\ttext: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\timage: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\taudio: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\tcached: z\n\t\t\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\t\t\ttotal: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\t\t\ttext: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\t\t\timage: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\t\t\taudio: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t\t\t\ttotal: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t\toutput: z\n\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\ttext: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\timage: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\taudio: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\treasoning: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\tacceptedPrediction: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\trejectedPrediction: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t\ttotal: z.number().int().nonnegative(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t\ttotal: z.number().int().nonnegative(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict(),\n\t\t\t\tcost: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tcurrency: z.string(),\n\t\t\t\t\t\ttotalCostMinor: z.number().int().nonnegative(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict(),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nconst aiGenerateAcceptedResponseSchema = z\n\t.object({\n\t\tmode: z.literal(\"async\"),\n\t\trequestId: z.string(),\n\t\tfeature: z\n\t\t\t.object({\n\t\t\t\tkey: z.string(),\n\t\t\t\tversion: z.string(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tstatus: z.enum([\"queued\", \"processing\"]),\n\t})\n\t.strict();\n\nconst mediaImageFeatureSchema = z\n\t.object({\n\t\tkey: z.literal(\"media.image.generate\"),\n\t\tversion: z.literal(\"v1\"),\n\t})\n\t.strict();\n\nconst mediaImageGenerateResponseSchema =\n\taiGenerateAcceptedResponseSchema.extend({\n\t\tfeature: mediaImageFeatureSchema,\n\t});\n\nconst mediaImageCompletionResponseSchema = aiGenerateResponseSchema.extend({\n\tfeature: mediaImageFeatureSchema,\n\toutput: z\n\t\t.object({\n\t\t\tid: z.string(),\n\t\t\turl: z.string(),\n\t\t\tstorageKey: z.string(),\n\t\t\tbyteSize: z.number().int().nonnegative(),\n\t\t\tmimeType: z.string(),\n\t\t\textension: z.string(),\n\t\t\tsize: z.string(),\n\t\t\tquality: z.string(),\n\t\t\toutputFormat: z.string(),\n\t\t})\n\t\t.strict(),\n});\n\nconst aiUsageChartDateSchema = z\n\t.string()\n\t.trim()\n\t.regex(/^\\d{4}-\\d{2}-\\d{2}$/);\n\nconst aiUsageChartDimensionSchema = z.enum([\"day\"]);\nconst aiUsageChartMetricSchema = z.enum([\"requests\", \"totalTokens\", \"cost\"]);\n\nexport const controllerSchemas = {\n\tgetUsageChart: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: z\n\t\t\t\t.object({\n\t\t\t\t\tdimension: aiUsageChartDimensionSchema.optional().meta({\n\t\t\t\t\t\tdescription: \"Groups chart points by the selected dimension.\",\n\t\t\t\t\t\texample: \"day\",\n\t\t\t\t\t}),\n\t\t\t\t\tmetric: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.superRefine((value, ctx) => {\n\t\t\t\t\t\t\tconst metrics = value\n\t\t\t\t\t\t\t\t.split(\",\")\n\t\t\t\t\t\t\t\t.map((metric) => metric.trim())\n\t\t\t\t\t\t\t\t.filter(Boolean);\n\n\t\t\t\t\t\t\tif (metrics.length === 0) {\n\t\t\t\t\t\t\t\tctx.addIssue({\n\t\t\t\t\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\t\t\t\t\tmessage: \"At least one metric must be provided.\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (const metric of metrics) {\n\t\t\t\t\t\t\t\tif (!aiUsageChartMetricSchema.safeParse(metric).success) {\n\t\t\t\t\t\t\t\t\tctx.addIssue({\n\t\t\t\t\t\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\t\t\t\t\t\tmessage: `Unsupported metric \"${metric}\".`,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.optional()\n\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"Comma-separated usage metrics to aggregate. Supported values are requests, totalTokens, and cost.\",\n\t\t\t\t\t\t\texample: \"requests,totalTokens\",\n\t\t\t\t\t\t}),\n\t\t\t\t\tstartDate: aiUsageChartDateSchema.optional().meta({\n\t\t\t\t\t\tdescription: \"Inclusive chart start date in YYYY-MM-DD format.\",\n\t\t\t\t\t\texample: \"2026-06-01\",\n\t\t\t\t\t}),\n\t\t\t\t\tendDate: aiUsageChartDateSchema.optional().meta({\n\t\t\t\t\t\tdescription: \"Inclusive chart end date in YYYY-MM-DD format.\",\n\t\t\t\t\t\texample: \"2026-06-07\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[featureKey]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"media.image.generate\",\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t\t.meta(queryString.meta),\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: z\n\t\t\t.object({\n\t\t\t\tdimension: aiUsageChartDimensionSchema,\n\t\t\t\tmetrics: z.array(aiUsageChartMetricSchema),\n\t\t\t\tstartDate: aiUsageChartDateSchema,\n\t\t\t\tendDate: aiUsageChartDateSchema,\n\t\t\t\tcurrency: z.string().nullable(),\n\t\t\t\tfeature: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tkey: z.string(),\n\t\t\t\t\t\tlabel: z.string(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict()\n\t\t\t\t\t.nullable(),\n\t\t\t\tseries: z.array(\n\t\t\t\t\tz\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\tmetric: aiUsageChartMetricSchema,\n\t\t\t\t\t\t\tpoints: z.array(\n\t\t\t\t\t\t\t\tz\n\t\t\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\t\t\tdate: aiUsageChartDateSchema,\n\t\t\t\t\t\t\t\t\t\tvalue: z.number().nonnegative(),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict(),\n\t\t\t\t),\n\t\t\t})\n\t\t\t.strict(),\n\t} satisfies ControllerSchema,\n\tgetUsage: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: z\n\t\t\t\t.object({\n\t\t\t\t\t\"filter[requestId]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"req_123\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[providerRequestId]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"provider_req_123\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[featureKey]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"media.image.generate\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[status]\": queryString.schema.filter(true, {\n\t\t\t\t\t\texample: \"success\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[model]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"gpt-image-1\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[userId]\": queryString.schema.filter(true, {\n\t\t\t\t\t\texample: \"1\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[featureVersion]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"1\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[targetType]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"media\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[durationMs]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"1000\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[createdAt]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"2026-01-01T00:00:00Z\",\n\t\t\t\t\t}),\n\t\t\t\t\tsort: queryString.schema.sort(\"createdAt,cost,durationMs\"),\n\t\t\t\t\tpage: queryString.schema.page,\n\t\t\t\t\tperPage: queryString.schema.perPage,\n\t\t\t\t})\n\t\t\t\t.meta(queryString.meta),\n\t\t\tformatted: z.object({\n\t\t\t\tfilter: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\trequestId: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tproviderRequestId: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tfeatureKey: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tfeatureVersion: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tstatus: queryFormatted.schema.filters.union.optional(),\n\t\t\t\t\t\tmodel: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tuserId: queryFormatted.schema.filters.union.optional(),\n\t\t\t\t\t\ttargetType: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tdurationMs: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tcreatedAt: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tfilterOr: queryFormatted.schema.filterOr,\n\t\t\t\tsort: z\n\t\t\t\t\t.array(\n\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\tkey: z.enum([\"createdAt\", \"cost\", \"durationMs\"]),\n\t\t\t\t\t\t\tdirection: z.enum([\"asc\", \"desc\"]),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\t.optional(),\n\t\t\t\tpage: queryFormatted.schema.page,\n\t\t\t\tperPage: queryFormatted.schema.perPage,\n\t\t\t}),\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: z.array(\n\t\t\tz\n\t\t\t\t.object({\n\t\t\t\t\tid: z.number(),\n\t\t\t\t\trequestId: z.string(),\n\t\t\t\t\tproviderRequestId: z.string().nullable(),\n\t\t\t\t\tfeature: z\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\tkey: z.string(),\n\t\t\t\t\t\t\tlabel: z.string(),\n\t\t\t\t\t\t\tversion: z.string(),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict(),\n\t\t\t\t\tstatus: z.enum([\"failed\", \"pending\", \"success\"]),\n\t\t\t\t\tmodel: z.string().nullable(),\n\t\t\t\t\tcreatedAt: z.string().nullable(),\n\t\t\t\t\tdurationMs: z.number().nullable(),\n\t\t\t\t\terrorMessage: z.string().nullable(),\n\t\t\t\t\ttokens: z\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\tinput: z.number().int().nonnegative(),\n\t\t\t\t\t\t\toutput: z.number().int().nonnegative(),\n\t\t\t\t\t\t\ttotal: z.number().int().nonnegative(),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict()\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t\tcost: z\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\tcurrency: z.string(),\n\t\t\t\t\t\t\ttotalCostMinor: z.number().int().nonnegative(),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict()\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t\ttarget: z\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\ttype: z.string(),\n\t\t\t\t\t\t\tdata: z.record(z.string(), z.unknown()),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict(),\n\t\t\t\t\tuser: z\n\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\tid: z.number(),\n\t\t\t\t\t\t\tusername: z.string(),\n\t\t\t\t\t\t\temail: z.email(),\n\t\t\t\t\t\t\tfirstName: z.string().nullable(),\n\t\t\t\t\t\t\tlastName: z.string().nullable(),\n\t\t\t\t\t\t\tprofilePicture: profilePictureResponseSchema.nullable(),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.strict()\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t})\n\t\t\t\t.strict(),\n\t\t),\n\t} satisfies ControllerSchema,\n\tcustomFieldInput: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\tinstruction: z.string().trim().min(1).max(8_000).optional(),\n\t\t\t\tguidance: z.string().trim().min(1).optional(),\n\t\t\t\tvalue: z.record(z.string().trim().min(2).max(32), z.unknown()),\n\t\t\t\tdocument: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tfields: z.array(fieldInputSchema).optional(),\n\t\t\t\t\t\tbricks: z.array(brickInputSchema).optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict()\n\t\t\t\t\t.optional(),\n\t\t\t\ttarget: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tcollectionKey: z.string().trim().min(1),\n\t\t\t\t\t\tbrickKey: z.string().trim().min(1).optional(),\n\t\t\t\t\t\tfieldKey: z.string().trim().min(1),\n\t\t\t\t\t})\n\t\t\t\t\t.strict(),\n\t\t\t\tlocale: localeSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: aiGenerateResponseSchema.extend({\n\t\t\tfeature: z\n\t\t\t\t.object({\n\t\t\t\t\tkey: z.literal(\"custom-field.input.generate\"),\n\t\t\t\t\tversion: z.literal(\"v1\"),\n\t\t\t\t})\n\t\t\t\t.strict(),\n\t\t\toutput: z.record(z.string().trim().min(2).max(32), z.unknown()),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tmediaAlt: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\tinstruction: z.string().trim().min(1).max(8_000).optional(),\n\t\t\t\tpreviousResponses: z\n\t\t\t\t\t.array(\n\t\t\t\t\t\tz\n\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\tinstruction: z.string().trim().min(1).max(8_000).optional(),\n\t\t\t\t\t\t\t\toutput: z.record(\n\t\t\t\t\t\t\t\t\tz.string().trim().min(2).max(32),\n\t\t\t\t\t\t\t\t\tz.string().trim(),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t)\n\t\t\t\t\t.optional(),\n\t\t\t\timage: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tdata: z.string().trim().min(1).max(aiMaxBase64ImageLength),\n\t\t\t\t\t\tmimeType: z.literal(\"image/webp\"),\n\t\t\t\t\t\tdetail: aiImageDetailSchema,\n\t\t\t\t\t\tfilename: z.string().trim().min(1).max(255).optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict(),\n\t\t\t\tmedia: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tid: z.union([z.string().trim().min(1), z.number()]).optional(),\n\t\t\t\t\t\tname: z\n\t\t\t\t\t\t\t.record(z.string().trim().min(2).max(32), z.string().trim())\n\t\t\t\t\t\t\t.optional(),\n\t\t\t\t\t\talt: z\n\t\t\t\t\t\t\t.record(z.string().trim().min(2).max(32), z.string().trim())\n\t\t\t\t\t\t\t.optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.strict(),\n\t\t\t\tlocale: localeSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: aiGenerateResponseSchema.extend({\n\t\t\tfeature: z\n\t\t\t\t.object({\n\t\t\t\t\tkey: z.literal(\"media.alt.generate\"),\n\t\t\t\t\tversion: z.literal(\"v1\"),\n\t\t\t\t})\n\t\t\t\t.strict(),\n\t\t\toutput: z.record(z.string().trim().min(2).max(32), z.string()),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tmediaImageGenerate: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\tinstruction: z.string().trim().min(1).max(8_000).optional(),\n\t\t\t\tguidance: z.string().trim().min(1).optional(),\n\t\t\t\tpreviousInstructions: z\n\t\t\t\t\t.array(z.string().trim().min(1).max(8_000))\n\t\t\t\t\t.max(10)\n\t\t\t\t\t.optional(),\n\t\t\t\timage: z\n\t\t\t\t\t.discriminatedUnion(\"type\", [\n\t\t\t\t\t\tz\n\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\ttype: z.literal(\"url\"),\n\t\t\t\t\t\t\t\turl: z.url().trim().max(2_048),\n\t\t\t\t\t\t\t\tdetail: aiImageDetailSchema,\n\t\t\t\t\t\t\t\tfilename: z.string().trim().min(1).max(255).optional(),\n\t\t\t\t\t\t\t\tmimeType: z\n\t\t\t\t\t\t\t\t\t.enum([\"image/webp\", \"image/png\", \"image/jpeg\"])\n\t\t\t\t\t\t\t\t\t.optional(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t\tz\n\t\t\t\t\t\t\t.object({\n\t\t\t\t\t\t\t\ttype: z.literal(\"base64\"),\n\t\t\t\t\t\t\t\tdata: z.string().trim().min(1).max(aiMaxBase64ImageLength),\n\t\t\t\t\t\t\t\tmimeType: z.enum([\"image/webp\", \"image/png\", \"image/jpeg\"]),\n\t\t\t\t\t\t\t\tdetail: aiImageDetailSchema,\n\t\t\t\t\t\t\t\tfilename: z.string().trim().min(1).max(255).optional(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.strict(),\n\t\t\t\t\t])\n\t\t\t\t\t.optional(),\n\t\t\t\tgeneration: mediaImageGenerationSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: mediaImageGenerateResponseSchema,\n\t} satisfies ControllerSchema,\n\tmediaImageCompletion: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z\n\t\t\t.object({\n\t\t\t\trequestId: z.uuid(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tresponse: z.union([\n\t\t\tmediaImageGenerateResponseSchema,\n\t\t\tmediaImageCompletionResponseSchema,\n\t\t]),\n\t} satisfies ControllerSchema,\n};\n\nexport type CustomFieldInputBody = z.infer<\n\ttypeof controllerSchemas.customFieldInput.body\n>;\nexport type MediaAltBody = z.infer<typeof controllerSchemas.mediaAlt.body>;\nexport type MediaImageGenerateBody = z.infer<\n\ttypeof controllerSchemas.mediaImageGenerate.body\n>;\nexport type MediaImageCompletionParams = z.infer<\n\ttypeof controllerSchemas.mediaImageCompletion.params\n>;\nexport type GetUsageChartQueryParams = z.infer<\n\ttypeof controllerSchemas.getUsageChart.query.string\n>;\nexport type GetUsageQueryParams = z.infer<\n\ttypeof controllerSchemas.getUsage.query.formatted\n>;\n"],"mappings":"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"}