@seed-ship/mcp-ui-solid 5.4.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/mcp-ui-spec/dist/schemas.cjs +493 -0
  3. package/dist/mcp-ui-spec/dist/schemas.cjs.map +1 -0
  4. package/dist/mcp-ui-spec/dist/schemas.js +493 -0
  5. package/dist/mcp-ui-spec/dist/schemas.js.map +1 -0
  6. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.cjs +118 -0
  7. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.cjs.map +1 -0
  8. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +118 -0
  9. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
  10. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.cjs +10 -0
  11. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.cjs.map +1 -0
  12. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +10 -0
  13. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
  14. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.cjs +8 -0
  15. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.cjs.map +1 -0
  16. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +9 -0
  17. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  18. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.cjs +122 -0
  19. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.cjs.map +1 -0
  20. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +122 -0
  21. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  22. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.cjs +137 -0
  23. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.cjs.map +1 -0
  24. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +139 -0
  25. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
  26. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.cjs +105 -0
  27. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.cjs.map +1 -0
  28. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +106 -0
  29. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
  30. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs +3229 -0
  31. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs.map +1 -0
  32. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +3230 -0
  33. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
  34. package/dist/services/validation.cjs +70 -152
  35. package/dist/services/validation.cjs.map +1 -1
  36. package/dist/services/validation.d.ts.map +1 -1
  37. package/dist/services/validation.js +70 -152
  38. package/dist/services/validation.js.map +1 -1
  39. package/package.json +3 -2
  40. package/src/services/validation.spec-migration.test.ts +207 -0
  41. package/src/services/validation.ts +132 -178
  42. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,72 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [5.5.0] - 2026-04-27
9
+
10
+ B.1 PR2 — `services/validation.ts` migration vers Zod schemas spec-driven (cf. audit deposium `MCP-UI-AUDIT-2026-04-26.md` §I + greenlight §J). **Non-breaking, aucune migration consumer requise.**
11
+
12
+ ### Changed — validation refactor (B.1 PR2)
13
+
14
+ - Nouvelle dépendance : **`@seed-ship/mcp-ui-spec` ^5.0.1** (workspace).
15
+ - `validateComponent()` consomme désormais les Zod schemas exportés depuis `mcp-ui-spec` pour **12 ComponentTypes sur 17** : `metric`, `text`, `iframe`, `image`, `link`, `action`, `video`, `carousel`, `image-gallery`, `action-group`, `code`, `artifact`.
16
+ - Mapper interne **`mapZodIssuesToErrors(issues, legacyCode)`** : convertit `ZodIssue[]` → `ValidationError[]` en préservant le `code` legacy par type (`INVALID_METRIC`, `EMPTY_CAROUSEL`, etc.). **L'API publique `validateComponent()` retourne exactement la même shape `{valid, errors: [{path, message, code}]}` qu'avant** — voir audit §J.1 (deposium a confirmé que `errors[].code` n'est lu nulle part en logique métier).
17
+ - Path Zod normalisé : `params.<joined>` (ex. `params.title`, `params.data.datasets`) — cohérent avec les chemins legacy.
18
+ - 5 ComponentTypes restent **délibérément sur le path impératif** :
19
+ - `chart` + `table` — leurs validateurs (`validateChartComponent`, `validateTableComponent`) font cross-field consistency + resource limits + codes riches (`MISSING_DATA`, `DATA_LENGTH_MISMATCH`, `DUPLICATE_COLUMN_KEY`...) que Zod ne peut pas exprimer aussi proprement.
20
+ - `form` — `FormComponentParamsSchema` du spec a une regex stricte sur les noms de fields qui pourrait rejeter des payloads LLM valides. Conservatisme.
21
+ - `map` — spec exige `center: tuple([number, number])` mais la prod accepte `{lat, lng}` objects. Backward-compat.
22
+ - `modal` — tous params optionnels, rien à valider.
23
+
24
+ ### Fixed — Artifact validation drift (side-effect)
25
+
26
+ - **Pré-v5.5.0 bug** : `validation.ts` exigeait `params.content` (code `INVALID_ARTIFACT`) mais `<ArtifactRenderer>` consomme `url + filename + mimeType`. Tout artifact rendu valide échouait la validation, et tout artifact "validé" ne pouvait pas être rendu.
27
+ - **Fix** : la migration vers `ArtifactComponentParamsSchema` aligne automatiquement la validation sur ce que le renderer attend (`url + filename + mimeType` requis, `size` ≥ 0, `description` optionnel).
28
+ - Code legacy `INVALID_ARTIFACT` préservé pour les consumers qui filtrent dessus.
29
+
30
+ ### Preserved — Resource limits + iframe whitelist (sécurité)
31
+
32
+ Explicitement **gardés impératifs**, hors scope de la migration Zod :
33
+ - `validatePayloadSize` (max 50KB par défaut)
34
+ - `validateChartComponent` data points limits (max 1000 par défaut)
35
+ - `validateTableComponent` row limits (max 100 par défaut)
36
+ - `validateIframeDomain` + `DEFAULT_IFRAME_DOMAINS` whitelist (~45 domaines)
37
+ - `getIframeSandbox` tiered sandbox flags
38
+
39
+ Ces couches sont chaînées **après** le spec parse (cf. `iframe` + `video` → spec parse réussi → domain whitelist).
40
+
41
+ ### Build pipeline (mcp-ui-spec @ 5.0.1+)
42
+
43
+ Bonus : remplacement du `scripts/generate-dts.js` hand-rolled (qui ne déclarait que 9 schemas sur ~30) par `tsc -p tsconfig.build.json --emitDeclarationOnly`. Les 30+ schemas sont maintenant tous correctement déclarés dans `dist/schemas.d.ts` automatiquement. Élimine une dette de maintenance.
44
+
45
+ ### Tests
46
+
47
+ - `services/validation.test.ts` (49 tests) — **inchangé**, passe tel quel → preuve que l'API externe est préservée.
48
+ - `services/validation.spec-migration.test.ts` — **+18 nouveaux tests** ciblant explicitement v5.5.0 :
49
+ - Mapper preserve legacy `code` per type (12 types vérifiés)
50
+ - ZodIssue path → `params.<joined>` translation
51
+ - Artifact bug fix (url+filename+mimeType requis, plus content)
52
+ - Iframe + video chain : spec parse réussi → domain check, parse failed → SKIP domain check (no cascade)
53
+ - Imperative passthrough types préservent leurs codes riches (`MISSING_DATA`, `EMPTY_COLUMNS`, `EMPTY_FORM`, etc.)
54
+ - Invariants : `UNKNOWN_COMPONENT_TYPE`, `MISSING_PARAMS`, `INVALID_GRID_COL_START` toujours émis
55
+
56
+ Suite totale solid : **523/523 tests pass** (vs 505 sur v5.4.0).
57
+
58
+ ### Cross-stack — bénéfice deposium
59
+
60
+ Avec spec@5.0.1 + solid@5.5.0, deposium peut maintenant factoriser sa validation cross-stack :
61
+ ```ts
62
+ import { ChartComponentParamsSchema } from '@seed-ship/mcp-ui-spec'
63
+ // Côté MCPs (backend) : valider extracted_charts à la source
64
+ // Côté Solid (frontend) : héritage automatique via mcp-ui-solid
65
+ ```
66
+
67
+ ### Non-breaking guarantee
68
+
69
+ - API `validateComponent()` shape **identique** : `{ valid: boolean, errors?: Array<{path, message, code}> }`.
70
+ - Tous les codes legacy préservés via le mapper (51 codes existants).
71
+ - Resource limits + iframe whitelist + sandbox flags **inchangés**.
72
+ - Seul changement de comportement observable : `artifact` accepte maintenant les payloads que le renderer rend réellement (bug fix).
73
+
8
74
  ## [5.4.0] - 2026-04-26
9
75
 
10
76
  Combo non-breaking d'observabilité + UX, motivé par l'audit deposium_MCPs `MCP-UI-AUDIT-2026-04-26.md` (items B.2 + B.3 + B.4).
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const types = require("../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs");
4
+ const GridPositionSchema = types.object({
5
+ colStart: types.number().int().min(1).max(12),
6
+ colSpan: types.number().int().min(1).max(12),
7
+ rowStart: types.number().int().min(1).optional(),
8
+ rowSpan: types.number().int().min(1).default(1).optional()
9
+ });
10
+ const ComponentTypeSchema = types.enum([
11
+ "chart",
12
+ "table",
13
+ "metric",
14
+ "text",
15
+ "composite",
16
+ "grid",
17
+ // Phase 5.0: Nested grid layouts
18
+ "iframe",
19
+ "image",
20
+ "link",
21
+ "action",
22
+ // Phase 5.0: Tool call actions
23
+ "footer",
24
+ // Phase 5.0: Metadata footer
25
+ "carousel",
26
+ "artifact",
27
+ "form",
28
+ // Sprint 1: Form component
29
+ "modal",
30
+ // Sprint 3: Modal/dialog component
31
+ "action-group",
32
+ // Sprint 3: Action grouping component
33
+ "image-gallery",
34
+ // Sprint 5: Image gallery with lightbox
35
+ "video",
36
+ // Sprint 5: Video embed (YouTube, Vimeo, direct)
37
+ "code",
38
+ // Sprint 6: Syntax highlighted code block
39
+ "map"
40
+ // Sprint 6: Interactive map (Leaflet)
41
+ ]);
42
+ const FormFieldOptionSchema = types.object({
43
+ label: types.string().min(1),
44
+ value: types.string(),
45
+ disabled: types.boolean().optional()
46
+ });
47
+ const FormFieldTypeSchema = types.enum([
48
+ "text",
49
+ "email",
50
+ "password",
51
+ "number",
52
+ "date",
53
+ "textarea",
54
+ "select",
55
+ "checkbox",
56
+ "radio",
57
+ "autocomplete",
58
+ "range",
59
+ "tags",
60
+ "toggle",
61
+ "fieldset"
62
+ ]);
63
+ const ShowWhenOperatorSchema = types.enum([
64
+ "equals",
65
+ "notEquals",
66
+ "in",
67
+ "notIn",
68
+ "contains",
69
+ "startsWith",
70
+ "endsWith",
71
+ "greaterThan",
72
+ "lessThan",
73
+ "isEmpty",
74
+ "isNotEmpty",
75
+ "isTrue",
76
+ "isFalse"
77
+ ]);
78
+ const ShowWhenConditionSchema = types.object({
79
+ field: types.string().min(1),
80
+ operator: ShowWhenOperatorSchema,
81
+ value: types.any().optional()
82
+ });
83
+ const PrefillSourceSchema = types.enum(["user", "detected", "inferred", "default"]);
84
+ const FormFieldSchema = types.object({
85
+ name: types.string().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/),
86
+ type: FormFieldTypeSchema,
87
+ label: types.string().optional(),
88
+ placeholder: types.string().optional(),
89
+ helpText: types.string().optional(),
90
+ required: types.boolean().optional(),
91
+ disabled: types.boolean().optional(),
92
+ defaultValue: types.any().optional(),
93
+ // Prefill — pre-populated value with source tracking (v4.2.0)
94
+ prefill: types.union([types.string(), types.array(types.string())]).optional(),
95
+ displayHint: types.string().optional(),
96
+ source: PrefillSourceSchema.optional(),
97
+ muted: types.boolean().optional(),
98
+ // Prefill mode for autocomplete fields (v4.3.0)
99
+ prefillMode: types.enum(["exact", "resolve"]).optional(),
100
+ // Value format validation (v4.3.0)
101
+ valueFormat: types.string().optional(),
102
+ valueFormatHint: types.string().optional(),
103
+ // Text/textarea specific
104
+ minLength: types.number().int().min(0).optional(),
105
+ maxLength: types.number().int().min(1).optional(),
106
+ pattern: types.string().optional(),
107
+ // Number specific
108
+ min: types.number().optional(),
109
+ max: types.number().optional(),
110
+ step: types.number().optional(),
111
+ // Date specific
112
+ minDate: types.string().optional(),
113
+ maxDate: types.string().optional(),
114
+ // Select/Radio specific
115
+ options: types.array(FormFieldOptionSchema).optional(),
116
+ // Multi-select (v2.6.0)
117
+ multiple: types.boolean().optional(),
118
+ // Autocomplete specific (v2.6.0)
119
+ apiUrl: types.string().url().optional(),
120
+ searchParam: types.string().optional(),
121
+ labelField: types.string().optional(),
122
+ valueField: types.string().optional(),
123
+ extraParams: types.record(types.string()).optional(),
124
+ minChars: types.number().int().min(0).optional(),
125
+ debounceMs: types.number().int().min(0).optional(),
126
+ // Dependent field (v2.7.0)
127
+ dependsOn: types.object({
128
+ field: types.string(),
129
+ apiUrl: types.string(),
130
+ labelField: types.string(),
131
+ valueField: types.string(),
132
+ extraParams: types.record(types.string()).optional()
133
+ }).optional(),
134
+ // Field status — API capability indicator (v2.11.0)
135
+ fieldStatus: types.enum(["required", "optional", "unsupported", "unknown"]).optional(),
136
+ statusReason: types.string().optional(),
137
+ // Checkbox specific
138
+ checkboxLabel: types.string().optional(),
139
+ // Textarea specific
140
+ rows: types.number().int().min(1).max(20).optional(),
141
+ // Conditional visibility
142
+ showWhen: ShowWhenConditionSchema.optional()
143
+ });
144
+ const FormSubmitActionSchema = types.object({
145
+ toolName: types.string().min(1),
146
+ params: types.record(types.unknown()).optional()
147
+ });
148
+ types.object({
149
+ title: types.string().optional(),
150
+ fields: types.array(FormFieldSchema).min(1),
151
+ submitLabel: types.string().optional(),
152
+ showReset: types.boolean().optional(),
153
+ submitAction: FormSubmitActionSchema.optional(),
154
+ // Persistence options (Sprint 4)
155
+ persistKey: types.string().optional(),
156
+ excludeFromPersistence: types.array(types.string()).optional(),
157
+ persistExpiresIn: types.number().int().positive().optional(),
158
+ layout: types.enum(["vertical", "horizontal", "inline"]).optional(),
159
+ // Auto-submit countdown in ms when all required fields are prefilled (v4.2.0)
160
+ autoSubmitDelay: types.number().int().min(1e3).max(3e4).optional()
161
+ });
162
+ const ModalSizeSchema = types.enum(["sm", "md", "lg", "xl", "full"]);
163
+ types.object({
164
+ title: types.string().optional(),
165
+ size: ModalSizeSchema.optional(),
166
+ showClose: types.boolean().optional(),
167
+ closeOnEscape: types.boolean().optional(),
168
+ closeOnBackdrop: types.boolean().optional(),
169
+ maxHeight: types.string().optional()
170
+ // Note: content and footer are UIComponent references, validated separately
171
+ });
172
+ const ActionGroupLayoutSchema = types.enum([
173
+ "horizontal",
174
+ "vertical",
175
+ "space-between",
176
+ "end",
177
+ "center"
178
+ ]);
179
+ const ActionGroupGapSchema = types.enum(["none", "sm", "md", "lg"]);
180
+ const ActionParamsSchema = types.object({
181
+ label: types.string().min(1),
182
+ type: types.enum(["button", "link"]).optional(),
183
+ action: types.enum(["tool-call", "link", "submit"]).optional(),
184
+ toolName: types.string().optional(),
185
+ params: types.record(types.unknown()).optional(),
186
+ url: types.string().optional(),
187
+ variant: types.enum(["primary", "secondary", "outline", "ghost", "danger"]).optional(),
188
+ size: types.enum(["sm", "md", "lg"]).optional(),
189
+ icon: types.string().optional(),
190
+ disabled: types.boolean().optional()
191
+ });
192
+ const ActionGroupParamsSchema = types.object({
193
+ actions: types.array(ActionParamsSchema).min(1),
194
+ layout: ActionGroupLayoutSchema.optional(),
195
+ gap: ActionGroupGapSchema.optional(),
196
+ fullWidth: types.boolean().optional(),
197
+ label: types.string().optional()
198
+ });
199
+ const GalleryImageSchema = types.object({
200
+ url: types.string().url(),
201
+ thumbnail: types.string().url().optional(),
202
+ alt: types.string().optional(),
203
+ caption: types.string().optional(),
204
+ srcset: types.string().optional(),
205
+ sizes: types.string().optional()
206
+ });
207
+ types.enum(["2", "3", "4", "5"]).transform(Number);
208
+ const ImageGalleryGapSchema = types.enum(["none", "sm", "md", "lg"]);
209
+ const ImageGalleryAspectRatioSchema = types.enum(["1:1", "16:9", "4:3", "auto"]);
210
+ const ImageGalleryParamsSchema = types.object({
211
+ title: types.string().optional(),
212
+ images: types.array(GalleryImageSchema).min(1),
213
+ columns: types.union([types.literal(2), types.literal(3), types.literal(4), types.literal(5)]).optional(),
214
+ gap: ImageGalleryGapSchema.optional(),
215
+ aspectRatio: ImageGalleryAspectRatioSchema.optional(),
216
+ lightbox: types.boolean().optional(),
217
+ showCaptions: types.boolean().optional()
218
+ });
219
+ const VideoAspectRatioSchema = types.enum(["16:9", "4:3", "1:1", "21:9"]);
220
+ const VideoComponentParamsSchema = types.object({
221
+ url: types.string().url(),
222
+ title: types.string().optional(),
223
+ caption: types.string().optional(),
224
+ poster: types.string().url().optional(),
225
+ aspectRatio: VideoAspectRatioSchema.optional(),
226
+ autoplay: types.boolean().optional(),
227
+ controls: types.boolean().optional(),
228
+ loop: types.boolean().optional(),
229
+ muted: types.boolean().optional(),
230
+ startTime: types.number().int().min(0).optional()
231
+ });
232
+ const CodeComponentParamsSchema = types.object({
233
+ code: types.string(),
234
+ language: types.string().optional(),
235
+ filename: types.string().optional(),
236
+ showLineNumbers: types.boolean().optional(),
237
+ startLine: types.number().optional(),
238
+ highlightLines: types.array(types.number()).optional(),
239
+ maxHeight: types.string().optional(),
240
+ theme: types.enum(["light", "dark"]).optional()
241
+ });
242
+ const MapMarkerSchema = types.object({
243
+ position: types.tuple([types.number(), types.number()]),
244
+ tooltip: types.string().optional(),
245
+ popup: types.string().optional()
246
+ });
247
+ types.object({
248
+ center: types.tuple([types.number(), types.number()]).optional(),
249
+ zoom: types.number().optional(),
250
+ markers: types.array(MapMarkerSchema).optional(),
251
+ height: types.string().optional(),
252
+ fitBounds: types.boolean().optional(),
253
+ zoomControl: types.boolean().optional(),
254
+ scrollWheelZoom: types.boolean().optional(),
255
+ tileLayer: types.string().optional(),
256
+ attribution: types.string().optional()
257
+ });
258
+ const ChartTypeSchema = types.enum([
259
+ "bar",
260
+ "line",
261
+ "pie",
262
+ "doughnut",
263
+ "radar",
264
+ "scatter",
265
+ "bubble",
266
+ "polarArea"
267
+ ]);
268
+ const ChartDatasetSchema = types.object({
269
+ label: types.string(),
270
+ // Either an array of numbers or an array of {x, y} points (Chart.js shapes)
271
+ data: types.union([
272
+ types.array(types.number()),
273
+ types.array(
274
+ types.object({
275
+ x: types.union([types.string(), types.number()]),
276
+ y: types.number()
277
+ })
278
+ )
279
+ ]),
280
+ backgroundColor: types.union([types.string(), types.array(types.string())]).optional(),
281
+ borderColor: types.union([types.string(), types.array(types.string())]).optional(),
282
+ borderWidth: types.number().optional(),
283
+ fill: types.union([types.boolean(), types.string()]).optional(),
284
+ tension: types.number().optional()
285
+ });
286
+ const ChartTimeAxisSchema = types.object({
287
+ parser: types.string().optional(),
288
+ unit: types.enum(["day", "week", "month", "quarter", "year"]).optional(),
289
+ tooltipFormat: types.string().optional(),
290
+ min: types.string().optional(),
291
+ max: types.string().optional()
292
+ });
293
+ types.object({
294
+ type: ChartTypeSchema,
295
+ title: types.string().optional(),
296
+ data: types.object({
297
+ labels: types.array(types.string()),
298
+ datasets: types.array(ChartDatasetSchema)
299
+ }),
300
+ options: types.object({
301
+ responsive: types.boolean().optional(),
302
+ maintainAspectRatio: types.boolean().optional(),
303
+ tension: types.number().optional(),
304
+ // `scales` and `plugins` are Chart.js opaque config objects — kept loose
305
+ scales: types.unknown().optional(),
306
+ plugins: types.unknown().optional()
307
+ }).optional(),
308
+ renderer: types.enum(["native", "iframe", "auto"]).optional(),
309
+ exportable: types.boolean().optional(),
310
+ timeAxis: ChartTimeAxisSchema.optional(),
311
+ height: types.string().optional(),
312
+ className: types.string().optional()
313
+ });
314
+ const TableColumnSchema = types.object({
315
+ key: types.string().min(1),
316
+ label: types.string(),
317
+ sortable: types.boolean().optional(),
318
+ width: types.string().optional()
319
+ });
320
+ const TablePaginationSchema = types.object({
321
+ currentPage: types.number().int().min(1),
322
+ pageSize: types.number().int().min(1),
323
+ totalRows: types.number().int().min(0)
324
+ });
325
+ const TableVirtualizeOptionsSchema = types.object({
326
+ enabled: types.boolean().optional(),
327
+ rowHeight: types.number().int().min(1).optional(),
328
+ overscan: types.number().int().min(0).optional(),
329
+ threshold: types.number().int().min(1).optional()
330
+ });
331
+ const TableExportableSchema = types.union([
332
+ types.boolean(),
333
+ types.object({
334
+ formats: types.array(types.enum(["csv", "tsv", "json"])).optional(),
335
+ filename: types.string().optional()
336
+ })
337
+ ]);
338
+ types.object({
339
+ title: types.string().optional(),
340
+ columns: types.array(TableColumnSchema).min(1),
341
+ rows: types.array(types.record(types.unknown())),
342
+ pagination: TablePaginationSchema.optional(),
343
+ virtualize: types.union([types.boolean(), TableVirtualizeOptionsSchema]).optional(),
344
+ exportable: TableExportableSchema.optional(),
345
+ className: types.string().optional()
346
+ });
347
+ const MetricTrendSchema = types.object({
348
+ value: types.number(),
349
+ direction: types.enum(["up", "down", "neutral"])
350
+ });
351
+ const MetricComponentParamsSchema = types.object({
352
+ title: types.string().min(1),
353
+ value: types.union([types.string(), types.number()]),
354
+ unit: types.string().optional(),
355
+ trend: MetricTrendSchema.optional(),
356
+ subtitle: types.string().optional(),
357
+ icon: types.string().optional(),
358
+ className: types.string().optional()
359
+ });
360
+ const TextComponentParamsSchema = types.object({
361
+ content: types.string().min(1),
362
+ markdown: types.boolean().optional(),
363
+ className: types.string().optional()
364
+ });
365
+ const IframeComponentParamsSchema = types.object({
366
+ url: types.string().min(1),
367
+ title: types.string().optional(),
368
+ height: types.string().optional(),
369
+ className: types.string().optional()
370
+ });
371
+ const ImageComponentParamsSchema = types.object({
372
+ url: types.string().min(1),
373
+ alt: types.string().optional(),
374
+ caption: types.string().optional(),
375
+ className: types.string().optional()
376
+ });
377
+ const LinkComponentParamsSchema = types.object({
378
+ url: types.string().min(1),
379
+ label: types.string().optional(),
380
+ description: types.string().optional(),
381
+ className: types.string().optional()
382
+ });
383
+ const CarouselComponentParamsSchema = types.object({
384
+ items: types.array(types.unknown()).min(1),
385
+ height: types.string().optional(),
386
+ className: types.string().optional()
387
+ });
388
+ const ArtifactComponentParamsSchema = types.object({
389
+ url: types.string().min(1),
390
+ filename: types.string().min(1),
391
+ mimeType: types.string().min(1),
392
+ size: types.number().int().min(0).optional(),
393
+ description: types.string().optional()
394
+ });
395
+ const SandboxFlagSchema = types.enum([
396
+ "allow-scripts",
397
+ "allow-same-origin",
398
+ "allow-forms",
399
+ "allow-popups",
400
+ "allow-modals"
401
+ ]);
402
+ const SecurityConstraintsSchema = types.object({
403
+ requiresAuth: types.boolean().default(false).optional(),
404
+ allowedDomains: types.array(types.string()).optional(),
405
+ maxIframeDepth: types.number().int().min(0).max(3).default(1).optional(),
406
+ sandboxFlags: types.array(SandboxFlagSchema).optional()
407
+ });
408
+ const PerformanceConstraintsSchema = types.object({
409
+ maxRenderTime: types.number().int().min(100).default(5e3).optional(),
410
+ maxDataSize: types.number().int().min(1024).default(102400).optional()
411
+ });
412
+ const ComponentSchemaSchema = types.object({
413
+ type: types.literal("object"),
414
+ required: types.array(types.string()).optional(),
415
+ properties: types.record(types.unknown()),
416
+ additionalProperties: types.boolean().optional()
417
+ });
418
+ const ComponentExampleSchema = types.object({
419
+ name: types.string().min(1),
420
+ description: types.string().optional(),
421
+ params: types.record(types.unknown()),
422
+ position: GridPositionSchema.optional()
423
+ });
424
+ const ComponentSchema = types.object({
425
+ id: types.string().regex(/^[a-z0-9-]+$/),
426
+ type: ComponentTypeSchema,
427
+ name: types.string().min(1),
428
+ description: types.string().optional(),
429
+ schema: ComponentSchemaSchema,
430
+ examples: types.array(ComponentExampleSchema).min(1),
431
+ security: SecurityConstraintsSchema.optional(),
432
+ performance: PerformanceConstraintsSchema.optional(),
433
+ tags: types.array(types.string().regex(/^[a-z0-9-]+$/)).optional(),
434
+ version: types.string().regex(/^\d+\.\d+\.\d+$/).optional(),
435
+ deprecated: types.boolean().default(false).optional(),
436
+ deprecationMessage: types.string().optional()
437
+ });
438
+ const RegistryMetadataSchema = types.object({
439
+ name: types.string().optional(),
440
+ description: types.string().optional(),
441
+ author: types.string().optional(),
442
+ repository: types.string().url().optional()
443
+ });
444
+ types.object({
445
+ version: types.literal("1.0.0"),
446
+ metadata: RegistryMetadataSchema.optional(),
447
+ components: types.array(ComponentSchema).min(1)
448
+ });
449
+ exports.ActionGroupGapSchema = ActionGroupGapSchema;
450
+ exports.ActionGroupLayoutSchema = ActionGroupLayoutSchema;
451
+ exports.ActionGroupParamsSchema = ActionGroupParamsSchema;
452
+ exports.ActionParamsSchema = ActionParamsSchema;
453
+ exports.ArtifactComponentParamsSchema = ArtifactComponentParamsSchema;
454
+ exports.CarouselComponentParamsSchema = CarouselComponentParamsSchema;
455
+ exports.ChartDatasetSchema = ChartDatasetSchema;
456
+ exports.ChartTimeAxisSchema = ChartTimeAxisSchema;
457
+ exports.ChartTypeSchema = ChartTypeSchema;
458
+ exports.CodeComponentParamsSchema = CodeComponentParamsSchema;
459
+ exports.ComponentExampleSchema = ComponentExampleSchema;
460
+ exports.ComponentSchema = ComponentSchema;
461
+ exports.ComponentSchemaSchema = ComponentSchemaSchema;
462
+ exports.ComponentTypeSchema = ComponentTypeSchema;
463
+ exports.FormFieldOptionSchema = FormFieldOptionSchema;
464
+ exports.FormFieldSchema = FormFieldSchema;
465
+ exports.FormFieldTypeSchema = FormFieldTypeSchema;
466
+ exports.FormSubmitActionSchema = FormSubmitActionSchema;
467
+ exports.GalleryImageSchema = GalleryImageSchema;
468
+ exports.GridPositionSchema = GridPositionSchema;
469
+ exports.IframeComponentParamsSchema = IframeComponentParamsSchema;
470
+ exports.ImageComponentParamsSchema = ImageComponentParamsSchema;
471
+ exports.ImageGalleryAspectRatioSchema = ImageGalleryAspectRatioSchema;
472
+ exports.ImageGalleryGapSchema = ImageGalleryGapSchema;
473
+ exports.ImageGalleryParamsSchema = ImageGalleryParamsSchema;
474
+ exports.LinkComponentParamsSchema = LinkComponentParamsSchema;
475
+ exports.MapMarkerSchema = MapMarkerSchema;
476
+ exports.MetricComponentParamsSchema = MetricComponentParamsSchema;
477
+ exports.MetricTrendSchema = MetricTrendSchema;
478
+ exports.ModalSizeSchema = ModalSizeSchema;
479
+ exports.PerformanceConstraintsSchema = PerformanceConstraintsSchema;
480
+ exports.PrefillSourceSchema = PrefillSourceSchema;
481
+ exports.RegistryMetadataSchema = RegistryMetadataSchema;
482
+ exports.SandboxFlagSchema = SandboxFlagSchema;
483
+ exports.SecurityConstraintsSchema = SecurityConstraintsSchema;
484
+ exports.ShowWhenConditionSchema = ShowWhenConditionSchema;
485
+ exports.ShowWhenOperatorSchema = ShowWhenOperatorSchema;
486
+ exports.TableColumnSchema = TableColumnSchema;
487
+ exports.TableExportableSchema = TableExportableSchema;
488
+ exports.TablePaginationSchema = TablePaginationSchema;
489
+ exports.TableVirtualizeOptionsSchema = TableVirtualizeOptionsSchema;
490
+ exports.TextComponentParamsSchema = TextComponentParamsSchema;
491
+ exports.VideoAspectRatioSchema = VideoAspectRatioSchema;
492
+ exports.VideoComponentParamsSchema = VideoComponentParamsSchema;
493
+ //# sourceMappingURL=schemas.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.cjs","sources":["../../../../mcp-ui-spec/dist/schemas.js"],"sourcesContent":["import { z } from \"zod\";\nconst GridPositionSchema = z.object({\n colStart: z.number().int().min(1).max(12),\n colSpan: z.number().int().min(1).max(12),\n rowStart: z.number().int().min(1).optional(),\n rowSpan: z.number().int().min(1).default(1).optional()\n});\nconst ComponentTypeSchema = z.enum([\n \"chart\",\n \"table\",\n \"metric\",\n \"text\",\n \"composite\",\n \"grid\",\n // Phase 5.0: Nested grid layouts\n \"iframe\",\n \"image\",\n \"link\",\n \"action\",\n // Phase 5.0: Tool call actions\n \"footer\",\n // Phase 5.0: Metadata footer\n \"carousel\",\n \"artifact\",\n \"form\",\n // Sprint 1: Form component\n \"modal\",\n // Sprint 3: Modal/dialog component\n \"action-group\",\n // Sprint 3: Action grouping component\n \"image-gallery\",\n // Sprint 5: Image gallery with lightbox\n \"video\",\n // Sprint 5: Video embed (YouTube, Vimeo, direct)\n \"code\",\n // Sprint 6: Syntax highlighted code block\n \"map\"\n // Sprint 6: Interactive map (Leaflet)\n]);\nconst FormFieldOptionSchema = z.object({\n label: z.string().min(1),\n value: z.string(),\n disabled: z.boolean().optional()\n});\nconst FormFieldTypeSchema = z.enum([\n \"text\",\n \"email\",\n \"password\",\n \"number\",\n \"date\",\n \"textarea\",\n \"select\",\n \"checkbox\",\n \"radio\",\n \"autocomplete\",\n \"range\",\n \"tags\",\n \"toggle\",\n \"fieldset\"\n]);\nconst ShowWhenOperatorSchema = z.enum([\n \"equals\",\n \"notEquals\",\n \"in\",\n \"notIn\",\n \"contains\",\n \"startsWith\",\n \"endsWith\",\n \"greaterThan\",\n \"lessThan\",\n \"isEmpty\",\n \"isNotEmpty\",\n \"isTrue\",\n \"isFalse\"\n]);\nconst ShowWhenConditionSchema = z.object({\n field: z.string().min(1),\n operator: ShowWhenOperatorSchema,\n value: z.any().optional()\n});\nconst PrefillSourceSchema = z.enum([\"user\", \"detected\", \"inferred\", \"default\"]);\nconst FormFieldSchema = z.object({\n name: z.string().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/),\n type: FormFieldTypeSchema,\n label: z.string().optional(),\n placeholder: z.string().optional(),\n helpText: z.string().optional(),\n required: z.boolean().optional(),\n disabled: z.boolean().optional(),\n defaultValue: z.any().optional(),\n // Prefill — pre-populated value with source tracking (v4.2.0)\n prefill: z.union([z.string(), z.array(z.string())]).optional(),\n displayHint: z.string().optional(),\n source: PrefillSourceSchema.optional(),\n muted: z.boolean().optional(),\n // Prefill mode for autocomplete fields (v4.3.0)\n prefillMode: z.enum([\"exact\", \"resolve\"]).optional(),\n // Value format validation (v4.3.0)\n valueFormat: z.string().optional(),\n valueFormatHint: z.string().optional(),\n // Text/textarea specific\n minLength: z.number().int().min(0).optional(),\n maxLength: z.number().int().min(1).optional(),\n pattern: z.string().optional(),\n // Number specific\n min: z.number().optional(),\n max: z.number().optional(),\n step: z.number().optional(),\n // Date specific\n minDate: z.string().optional(),\n maxDate: z.string().optional(),\n // Select/Radio specific\n options: z.array(FormFieldOptionSchema).optional(),\n // Multi-select (v2.6.0)\n multiple: z.boolean().optional(),\n // Autocomplete specific (v2.6.0)\n apiUrl: z.string().url().optional(),\n searchParam: z.string().optional(),\n labelField: z.string().optional(),\n valueField: z.string().optional(),\n extraParams: z.record(z.string()).optional(),\n minChars: z.number().int().min(0).optional(),\n debounceMs: z.number().int().min(0).optional(),\n // Dependent field (v2.7.0)\n dependsOn: z.object({\n field: z.string(),\n apiUrl: z.string(),\n labelField: z.string(),\n valueField: z.string(),\n extraParams: z.record(z.string()).optional()\n }).optional(),\n // Field status — API capability indicator (v2.11.0)\n fieldStatus: z.enum([\"required\", \"optional\", \"unsupported\", \"unknown\"]).optional(),\n statusReason: z.string().optional(),\n // Checkbox specific\n checkboxLabel: z.string().optional(),\n // Textarea specific\n rows: z.number().int().min(1).max(20).optional(),\n // Conditional visibility\n showWhen: ShowWhenConditionSchema.optional()\n});\nconst FormSubmitActionSchema = z.object({\n toolName: z.string().min(1),\n params: z.record(z.unknown()).optional()\n});\nconst FormComponentParamsSchema = z.object({\n title: z.string().optional(),\n fields: z.array(FormFieldSchema).min(1),\n submitLabel: z.string().optional(),\n showReset: z.boolean().optional(),\n submitAction: FormSubmitActionSchema.optional(),\n // Persistence options (Sprint 4)\n persistKey: z.string().optional(),\n excludeFromPersistence: z.array(z.string()).optional(),\n persistExpiresIn: z.number().int().positive().optional(),\n layout: z.enum([\"vertical\", \"horizontal\", \"inline\"]).optional(),\n // Auto-submit countdown in ms when all required fields are prefilled (v4.2.0)\n autoSubmitDelay: z.number().int().min(1e3).max(3e4).optional()\n});\nconst ModalSizeSchema = z.enum([\"sm\", \"md\", \"lg\", \"xl\", \"full\"]);\nconst ModalComponentParamsSchema = z.object({\n title: z.string().optional(),\n size: ModalSizeSchema.optional(),\n showClose: z.boolean().optional(),\n closeOnEscape: z.boolean().optional(),\n closeOnBackdrop: z.boolean().optional(),\n maxHeight: z.string().optional()\n // Note: content and footer are UIComponent references, validated separately\n});\nconst ActionGroupLayoutSchema = z.enum([\n \"horizontal\",\n \"vertical\",\n \"space-between\",\n \"end\",\n \"center\"\n]);\nconst ActionGroupGapSchema = z.enum([\"none\", \"sm\", \"md\", \"lg\"]);\nconst ActionParamsSchema = z.object({\n label: z.string().min(1),\n type: z.enum([\"button\", \"link\"]).optional(),\n action: z.enum([\"tool-call\", \"link\", \"submit\"]).optional(),\n toolName: z.string().optional(),\n params: z.record(z.unknown()).optional(),\n url: z.string().optional(),\n variant: z.enum([\"primary\", \"secondary\", \"outline\", \"ghost\", \"danger\"]).optional(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).optional(),\n icon: z.string().optional(),\n disabled: z.boolean().optional()\n});\nconst ActionGroupParamsSchema = z.object({\n actions: z.array(ActionParamsSchema).min(1),\n layout: ActionGroupLayoutSchema.optional(),\n gap: ActionGroupGapSchema.optional(),\n fullWidth: z.boolean().optional(),\n label: z.string().optional()\n});\nconst GalleryImageSchema = z.object({\n url: z.string().url(),\n thumbnail: z.string().url().optional(),\n alt: z.string().optional(),\n caption: z.string().optional(),\n srcset: z.string().optional(),\n sizes: z.string().optional()\n});\nconst ImageGalleryColumnsSchema = z.enum([\"2\", \"3\", \"4\", \"5\"]).transform(Number);\nconst ImageGalleryGapSchema = z.enum([\"none\", \"sm\", \"md\", \"lg\"]);\nconst ImageGalleryAspectRatioSchema = z.enum([\"1:1\", \"16:9\", \"4:3\", \"auto\"]);\nconst ImageGalleryParamsSchema = z.object({\n title: z.string().optional(),\n images: z.array(GalleryImageSchema).min(1),\n columns: z.union([z.literal(2), z.literal(3), z.literal(4), z.literal(5)]).optional(),\n gap: ImageGalleryGapSchema.optional(),\n aspectRatio: ImageGalleryAspectRatioSchema.optional(),\n lightbox: z.boolean().optional(),\n showCaptions: z.boolean().optional()\n});\nconst VideoAspectRatioSchema = z.enum([\"16:9\", \"4:3\", \"1:1\", \"21:9\"]);\nconst VideoComponentParamsSchema = z.object({\n url: z.string().url(),\n title: z.string().optional(),\n caption: z.string().optional(),\n poster: z.string().url().optional(),\n aspectRatio: VideoAspectRatioSchema.optional(),\n autoplay: z.boolean().optional(),\n controls: z.boolean().optional(),\n loop: z.boolean().optional(),\n muted: z.boolean().optional(),\n startTime: z.number().int().min(0).optional()\n});\nconst CodeComponentParamsSchema = z.object({\n code: z.string(),\n language: z.string().optional(),\n filename: z.string().optional(),\n showLineNumbers: z.boolean().optional(),\n startLine: z.number().optional(),\n highlightLines: z.array(z.number()).optional(),\n maxHeight: z.string().optional(),\n theme: z.enum([\"light\", \"dark\"]).optional()\n});\nconst MapMarkerSchema = z.object({\n position: z.tuple([z.number(), z.number()]),\n tooltip: z.string().optional(),\n popup: z.string().optional()\n});\nconst MapComponentParamsSchema = z.object({\n center: z.tuple([z.number(), z.number()]).optional(),\n zoom: z.number().optional(),\n markers: z.array(MapMarkerSchema).optional(),\n height: z.string().optional(),\n fitBounds: z.boolean().optional(),\n zoomControl: z.boolean().optional(),\n scrollWheelZoom: z.boolean().optional(),\n tileLayer: z.string().optional(),\n attribution: z.string().optional()\n});\nconst ChartTypeSchema = z.enum([\n \"bar\",\n \"line\",\n \"pie\",\n \"doughnut\",\n \"radar\",\n \"scatter\",\n \"bubble\",\n \"polarArea\"\n]);\nconst ChartDatasetSchema = z.object({\n label: z.string(),\n // Either an array of numbers or an array of {x, y} points (Chart.js shapes)\n data: z.union([\n z.array(z.number()),\n z.array(\n z.object({\n x: z.union([z.string(), z.number()]),\n y: z.number()\n })\n )\n ]),\n backgroundColor: z.union([z.string(), z.array(z.string())]).optional(),\n borderColor: z.union([z.string(), z.array(z.string())]).optional(),\n borderWidth: z.number().optional(),\n fill: z.union([z.boolean(), z.string()]).optional(),\n tension: z.number().optional()\n});\nconst ChartTimeAxisSchema = z.object({\n parser: z.string().optional(),\n unit: z.enum([\"day\", \"week\", \"month\", \"quarter\", \"year\"]).optional(),\n tooltipFormat: z.string().optional(),\n min: z.string().optional(),\n max: z.string().optional()\n});\nconst ChartComponentParamsSchema = z.object({\n type: ChartTypeSchema,\n title: z.string().optional(),\n data: z.object({\n labels: z.array(z.string()),\n datasets: z.array(ChartDatasetSchema)\n }),\n options: z.object({\n responsive: z.boolean().optional(),\n maintainAspectRatio: z.boolean().optional(),\n tension: z.number().optional(),\n // `scales` and `plugins` are Chart.js opaque config objects — kept loose\n scales: z.unknown().optional(),\n plugins: z.unknown().optional()\n }).optional(),\n renderer: z.enum([\"native\", \"iframe\", \"auto\"]).optional(),\n exportable: z.boolean().optional(),\n timeAxis: ChartTimeAxisSchema.optional(),\n height: z.string().optional(),\n className: z.string().optional()\n});\nconst TableColumnSchema = z.object({\n key: z.string().min(1),\n label: z.string(),\n sortable: z.boolean().optional(),\n width: z.string().optional()\n});\nconst TablePaginationSchema = z.object({\n currentPage: z.number().int().min(1),\n pageSize: z.number().int().min(1),\n totalRows: z.number().int().min(0)\n});\nconst TableVirtualizeOptionsSchema = z.object({\n enabled: z.boolean().optional(),\n rowHeight: z.number().int().min(1).optional(),\n overscan: z.number().int().min(0).optional(),\n threshold: z.number().int().min(1).optional()\n});\nconst TableExportableSchema = z.union([\n z.boolean(),\n z.object({\n formats: z.array(z.enum([\"csv\", \"tsv\", \"json\"])).optional(),\n filename: z.string().optional()\n })\n]);\nconst TableComponentParamsSchema = z.object({\n title: z.string().optional(),\n columns: z.array(TableColumnSchema).min(1),\n rows: z.array(z.record(z.unknown())),\n pagination: TablePaginationSchema.optional(),\n virtualize: z.union([z.boolean(), TableVirtualizeOptionsSchema]).optional(),\n exportable: TableExportableSchema.optional(),\n className: z.string().optional()\n});\nconst MetricTrendSchema = z.object({\n value: z.number(),\n direction: z.enum([\"up\", \"down\", \"neutral\"])\n});\nconst MetricComponentParamsSchema = z.object({\n title: z.string().min(1),\n value: z.union([z.string(), z.number()]),\n unit: z.string().optional(),\n trend: MetricTrendSchema.optional(),\n subtitle: z.string().optional(),\n icon: z.string().optional(),\n className: z.string().optional()\n});\nconst TextComponentParamsSchema = z.object({\n content: z.string().min(1),\n markdown: z.boolean().optional(),\n className: z.string().optional()\n});\nconst IframeComponentParamsSchema = z.object({\n url: z.string().min(1),\n title: z.string().optional(),\n height: z.string().optional(),\n className: z.string().optional()\n});\nconst ImageComponentParamsSchema = z.object({\n url: z.string().min(1),\n alt: z.string().optional(),\n caption: z.string().optional(),\n className: z.string().optional()\n});\nconst LinkComponentParamsSchema = z.object({\n url: z.string().min(1),\n label: z.string().optional(),\n description: z.string().optional(),\n className: z.string().optional()\n});\nconst CarouselComponentParamsSchema = z.object({\n items: z.array(z.unknown()).min(1),\n height: z.string().optional(),\n className: z.string().optional()\n});\nconst ArtifactComponentParamsSchema = z.object({\n url: z.string().min(1),\n filename: z.string().min(1),\n mimeType: z.string().min(1),\n size: z.number().int().min(0).optional(),\n description: z.string().optional()\n});\nconst SandboxFlagSchema = z.enum([\n \"allow-scripts\",\n \"allow-same-origin\",\n \"allow-forms\",\n \"allow-popups\",\n \"allow-modals\"\n]);\nconst SecurityConstraintsSchema = z.object({\n requiresAuth: z.boolean().default(false).optional(),\n allowedDomains: z.array(z.string()).optional(),\n maxIframeDepth: z.number().int().min(0).max(3).default(1).optional(),\n sandboxFlags: z.array(SandboxFlagSchema).optional()\n});\nconst PerformanceConstraintsSchema = z.object({\n maxRenderTime: z.number().int().min(100).default(5e3).optional(),\n maxDataSize: z.number().int().min(1024).default(102400).optional()\n});\nconst ComponentSchemaSchema = z.object({\n type: z.literal(\"object\"),\n required: z.array(z.string()).optional(),\n properties: z.record(z.unknown()),\n additionalProperties: z.boolean().optional()\n});\nconst ComponentExampleSchema = z.object({\n name: z.string().min(1),\n description: z.string().optional(),\n params: z.record(z.unknown()),\n position: GridPositionSchema.optional()\n});\nconst ComponentSchema = z.object({\n id: z.string().regex(/^[a-z0-9-]+$/),\n type: ComponentTypeSchema,\n name: z.string().min(1),\n description: z.string().optional(),\n schema: ComponentSchemaSchema,\n examples: z.array(ComponentExampleSchema).min(1),\n security: SecurityConstraintsSchema.optional(),\n performance: PerformanceConstraintsSchema.optional(),\n tags: z.array(z.string().regex(/^[a-z0-9-]+$/)).optional(),\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).optional(),\n deprecated: z.boolean().default(false).optional(),\n deprecationMessage: z.string().optional()\n});\nconst RegistryMetadataSchema = z.object({\n name: z.string().optional(),\n description: z.string().optional(),\n author: z.string().optional(),\n repository: z.string().url().optional()\n});\nconst ComponentRegistrySchema = z.object({\n version: z.literal(\"1.0.0\"),\n metadata: RegistryMetadataSchema.optional(),\n components: z.array(ComponentSchema).min(1)\n});\nexport {\n ActionGroupGapSchema,\n ActionGroupLayoutSchema,\n ActionGroupParamsSchema,\n ActionParamsSchema,\n ArtifactComponentParamsSchema,\n CarouselComponentParamsSchema,\n ChartComponentParamsSchema,\n ChartDatasetSchema,\n ChartTimeAxisSchema,\n ChartTypeSchema,\n CodeComponentParamsSchema,\n ComponentExampleSchema,\n ComponentRegistrySchema,\n ComponentSchema,\n ComponentSchemaSchema,\n ComponentTypeSchema,\n FormComponentParamsSchema,\n FormFieldOptionSchema,\n FormFieldSchema,\n FormFieldTypeSchema,\n FormSubmitActionSchema,\n GalleryImageSchema,\n GridPositionSchema,\n IframeComponentParamsSchema,\n ImageComponentParamsSchema,\n ImageGalleryAspectRatioSchema,\n ImageGalleryColumnsSchema,\n ImageGalleryGapSchema,\n ImageGalleryParamsSchema,\n LinkComponentParamsSchema,\n MapComponentParamsSchema,\n MapMarkerSchema,\n MetricComponentParamsSchema,\n MetricTrendSchema,\n ModalComponentParamsSchema,\n ModalSizeSchema,\n PerformanceConstraintsSchema,\n PrefillSourceSchema,\n RegistryMetadataSchema,\n SandboxFlagSchema,\n SecurityConstraintsSchema,\n ShowWhenConditionSchema,\n ShowWhenOperatorSchema,\n TableColumnSchema,\n TableComponentParamsSchema,\n TableExportableSchema,\n TablePaginationSchema,\n TableVirtualizeOptionsSchema,\n TextComponentParamsSchema,\n VideoAspectRatioSchema,\n VideoComponentParamsSchema\n};\n//# sourceMappingURL=schemas.js.map\n"],"names":["z.object","z.number","z.enum","z.string","z.boolean","z.any","z.union","z.array","z.record","z.unknown","z.literal","z.tuple"],"mappings":"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"}