{"version":3,"file":"blocks-schema.mjs","sources":["../../../../server/src/mcp/schemas/blocks-schema.ts"],"sourcesContent":["import { z } from '@strapi/utils';\n\n// ---------------------------------------------------------------------------\n// Inline nodes\n// ---------------------------------------------------------------------------\n\nconst textNodeSchema = z\n .object({\n type: z.literal('text'),\n text: z.string().describe('The text content.'),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: z.boolean().optional(),\n strikethrough: z.boolean().optional(),\n code: z.boolean().optional(),\n })\n .describe('A text node with optional formatting marks.');\n\nconst linkNodeSchema = z\n .object({\n type: z.literal('link'),\n url: z.string().describe('The URL the link points to.'),\n children: z.array(textNodeSchema).min(1),\n })\n .describe('An inline link node. Children must be text nodes.');\n\nconst inlineNodeSchema = z.discriminatedUnion('type', [textNodeSchema, linkNodeSchema]);\n\n// ---------------------------------------------------------------------------\n// Root block nodes\n// ---------------------------------------------------------------------------\n\nconst paragraphSchema = z.object({\n type: z.literal('paragraph'),\n children: z.array(inlineNodeSchema).min(1),\n});\n\nconst headingSchema = z.object({\n type: z.literal('heading'),\n level: z.union([\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n ]),\n children: z.array(inlineNodeSchema).min(1),\n});\n\nconst quoteSchema = z.object({\n type: z.literal('quote'),\n children: z.array(inlineNodeSchema).min(1),\n});\n\nconst codeSchema = z.object({\n type: z.literal('code'),\n language: z\n .string()\n .nullable()\n .optional()\n .describe('Programming language identifier (e.g. \"javascript\", \"python\").'),\n children: z.array(textNodeSchema).min(1),\n});\n\n// ---------------------------------------------------------------------------\n// List nodes (recursive via z.lazy — mirrors yup.lazy in blocks-validator.ts)\n// ---------------------------------------------------------------------------\n\nconst listItemSchema = z.object({\n type: z.literal('list-item'),\n children: z.array(inlineNodeSchema).min(1),\n});\n\n// ZodType annotation is required because of the self-reference via z.lazy\nconst listSchema: z.ZodType = z.object({\n type: z.literal('list'),\n format: z.enum(['ordered', 'unordered']),\n indentLevel: z.number().optional(),\n children: z\n .array(z.lazy(() => z.union([listItemSchema, listSchema])))\n .min(1)\n .describe('Children must be list-item or nested list nodes.'),\n});\n\n// ---------------------------------------------------------------------------\n// Image block\n// ---------------------------------------------------------------------------\n\nconst imageSchema = z.object({\n type: z.literal('image'),\n image: z\n .object({\n name: z.string(),\n alternativeText: z.string().nullable().optional(),\n url: z.string(),\n caption: z.string().nullable().optional(),\n width: z.number(),\n height: z.number(),\n formats: z.record(z.string(), z.unknown()).nullable().optional(),\n hash: z.string(),\n ext: z.string(),\n mime: z.string(),\n size: z.number(),\n previewUrl: z.string().nullable().optional(),\n provider: z.string(),\n provider_metadata: z.unknown().nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n })\n .describe(\n 'An existing media asset. Use media tools to retrieve this data — MCP cannot upload files.'\n ),\n children: z.array(z.object({ type: z.literal('text'), text: z.literal('') })).length(1),\n});\n\n// ---------------------------------------------------------------------------\n// Top-level schema\n// ---------------------------------------------------------------------------\n\nconst blockNodeSchema = z.discriminatedUnion('type', [\n paragraphSchema,\n headingSchema,\n quoteSchema,\n codeSchema,\n imageSchema,\n]);\n\n/**\n * Returns the Zod schema for a Strapi Blocks (rich-text) field input.\n * Accepts an array of block nodes — paragraph, heading, quote, code, image, and list —\n * matching Strapi's internal blocks data model.\n */\nexport const buildBlocksInputSchema = (): z.ZodArray =>\n z\n .array(\n // listSchema uses z.lazy so it cannot participate in discriminatedUnion;\n // use a regular union to merge it back in.\n z.union([blockNodeSchema, listSchema])\n )\n .describe('An array of block nodes representing structured rich text content.');\n"],"names":["textNodeSchema","z","object","type","literal","text","string","describe","bold","boolean","optional","italic","underline","strikethrough","code","linkNodeSchema","url","children","array","min","inlineNodeSchema","discriminatedUnion","paragraphSchema","headingSchema","level","union","quoteSchema","codeSchema","language","nullable","listItemSchema","listSchema","format","enum","indentLevel","number","lazy","imageSchema","image","name","alternativeText","caption","width","height","formats","record","unknown","hash","ext","mime","size","previewUrl","provider","provider_metadata","createdAt","updatedAt","length","blockNodeSchema","buildBlocksInputSchema"],"mappings":"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"}