@alquimia-ai/tools 2.2.0 → 2.4.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 (76) hide show
  1. package/dist/actions/index.d.mts +1 -0
  2. package/dist/actions/index.d.ts +1 -0
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/index.mjs.map +1 -1
  5. package/dist/actions-B0hfoYRd.d.ts +57 -0
  6. package/dist/actions-CZU_GRy5.d.mts +57 -0
  7. package/dist/adapters/fetch.d.mts +1 -0
  8. package/dist/adapters/fetch.d.ts +1 -0
  9. package/dist/adapters/fetch.js +4 -0
  10. package/dist/adapters/fetch.js.map +1 -1
  11. package/dist/adapters/fetch.mjs +4 -0
  12. package/dist/adapters/fetch.mjs.map +1 -1
  13. package/dist/adapters/index.d.mts +1 -0
  14. package/dist/adapters/index.d.ts +1 -0
  15. package/dist/adapters/index.js.map +1 -1
  16. package/dist/adapters/next.d.mts +1 -0
  17. package/dist/adapters/next.d.ts +1 -0
  18. package/dist/adapters/next.js +4 -0
  19. package/dist/adapters/next.js.map +1 -1
  20. package/dist/adapters/next.mjs +4 -0
  21. package/dist/adapters/next.mjs.map +1 -1
  22. package/dist/genui/index.d.mts +3027 -0
  23. package/dist/genui/index.d.ts +3027 -0
  24. package/dist/genui/index.js +3368 -0
  25. package/dist/genui/index.js.map +1 -0
  26. package/dist/genui/index.mjs +3345 -0
  27. package/dist/genui/index.mjs.map +1 -0
  28. package/dist/hooks/index.d.mts +25 -2
  29. package/dist/hooks/index.d.ts +25 -2
  30. package/dist/hooks/index.js +510 -0
  31. package/dist/hooks/index.js.map +1 -1
  32. package/dist/hooks/index.mjs +511 -1
  33. package/dist/hooks/index.mjs.map +1 -1
  34. package/dist/next/index.d.mts +7 -0
  35. package/dist/next/index.d.ts +7 -0
  36. package/dist/next/index.js +50 -0
  37. package/dist/next/index.js.map +1 -1
  38. package/dist/next/index.mjs +50 -0
  39. package/dist/next/index.mjs.map +1 -1
  40. package/dist/providers/index.d.mts +3 -2
  41. package/dist/providers/index.d.ts +3 -2
  42. package/dist/providers/index.js.map +1 -1
  43. package/dist/providers/index.mjs.map +1 -1
  44. package/dist/proxy.d.mts +2 -0
  45. package/dist/proxy.d.ts +2 -0
  46. package/dist/proxy.js +41 -0
  47. package/dist/proxy.js.map +1 -1
  48. package/dist/proxy.mjs +41 -0
  49. package/dist/proxy.mjs.map +1 -1
  50. package/dist/registry-Bcu_ZYL1.d.mts +19 -0
  51. package/dist/registry-Bcu_ZYL1.d.ts +19 -0
  52. package/dist/sdk/index.d.mts +10 -0
  53. package/dist/sdk/index.d.ts +10 -0
  54. package/dist/sdk/index.js +26 -0
  55. package/dist/sdk/index.js.map +1 -1
  56. package/dist/sdk/index.mjs +26 -0
  57. package/dist/sdk/index.mjs.map +1 -1
  58. package/dist/services/index.d.mts +1 -0
  59. package/dist/services/index.d.ts +1 -0
  60. package/dist/types/index.d.mts +12 -1
  61. package/dist/types/index.d.ts +12 -1
  62. package/dist/types/index.js.map +1 -1
  63. package/dist/types/index.mjs.map +1 -1
  64. package/dist/types-DnfWUE9V.d.mts +56 -0
  65. package/dist/types-DnfWUE9V.d.ts +56 -0
  66. package/dist/{types-CIqszY3g.d.mts → types-Dvu9y4WM.d.mts} +1 -1
  67. package/dist/{types-CIqszY3g.d.ts → types-Dvu9y4WM.d.ts} +1 -1
  68. package/dist/utils/index.d.mts +6 -2
  69. package/dist/utils/index.d.ts +6 -2
  70. package/dist/utils/index.js +4 -0
  71. package/dist/utils/index.js.map +1 -1
  72. package/dist/utils/index.mjs +4 -0
  73. package/dist/utils/index.mjs.map +1 -1
  74. package/dist/worklog/index.d.mts +2 -2
  75. package/dist/worklog/index.d.ts +2 -2
  76. package/package.json +19 -7
@@ -0,0 +1,3345 @@
1
+ // src/genui/style.ts
2
+ import { z } from "zod";
3
+ var TONES = ["default", "muted", "primary", "success", "warning", "danger"];
4
+ var SIZES = ["sm", "md", "lg"];
5
+ var EMPHASES = ["low", "medium", "high"];
6
+ var ALIGNS = ["start", "center", "end"];
7
+ var DENSITIES = ["compact", "comfortable"];
8
+ var styleSchemaShape = {
9
+ tone: z.enum(TONES).optional(),
10
+ size: z.enum(SIZES).optional(),
11
+ emphasis: z.enum(EMPHASES).optional(),
12
+ align: z.enum(ALIGNS).optional(),
13
+ density: z.enum(DENSITIES).optional()
14
+ };
15
+
16
+ // src/genui/registry.ts
17
+ var UNKNOWN_COMPONENT = "__unknown__";
18
+ function resolveComponent(manifest, name) {
19
+ if (!name || typeof name !== "string") return null;
20
+ return manifest.components[name] ?? null;
21
+ }
22
+
23
+ // src/genui/catalog.ts
24
+ import { z as z2 } from "zod";
25
+ var CORE_CATALOG_ID = "https://alquimia.ai/catalogs/core/v1/catalog.json";
26
+ var def = (name, own, opts) => ({
27
+ name,
28
+ schema: z2.object({
29
+ ...styleSchemaShape,
30
+ ...opts?.variant ? { variant: z2.enum(opts.variant).optional() } : {},
31
+ ...own
32
+ }).passthrough(),
33
+ allowedActions: opts?.allowedActions
34
+ });
35
+ var option = z2.object({ label: z2.string(), value: z2.union([z2.string(), z2.number()]) });
36
+ var coreCatalog = {
37
+ id: CORE_CATALOG_ID,
38
+ components: {
39
+ // ---- layout ----
40
+ Stack: def("Stack", {
41
+ direction: z2.enum(["vertical", "horizontal"]).optional(),
42
+ gap: z2.enum(["sm", "md", "lg"]).optional()
43
+ }),
44
+ Grid: def("Grid", {
45
+ columns: z2.number().int().min(1).max(6).optional(),
46
+ gap: z2.enum(["sm", "md", "lg"]).optional()
47
+ }),
48
+ Row: def("Row", { gap: z2.enum(["sm", "md", "lg"]).optional(), wrap: z2.boolean().optional() }),
49
+ Column: def("Column", { gap: z2.enum(["sm", "md", "lg"]).optional() }),
50
+ Divider: def("Divider", { label: z2.string().optional() }),
51
+ Spacer: def("Spacer", { size: z2.enum(["sm", "md", "lg"]).optional() }),
52
+ Card: def("Card", { title: z2.string().optional(), description: z2.string().optional() }, {
53
+ variant: ["elevated", "outline", "ghost"]
54
+ }),
55
+ Accordion: def("Accordion", {
56
+ items: z2.array(z2.object({ title: z2.string(), value: z2.string() })).optional()
57
+ }),
58
+ Tabs: def("Tabs", { tabs: z2.array(z2.object({ label: z2.string(), value: z2.string() })).min(1) }),
59
+ // ---- content ----
60
+ Text: def("Text", { text: z2.string() }, { variant: ["body", "muted", "caption", "lead"] }),
61
+ Heading: def("Heading", { text: z2.string(), level: z2.number().int().min(1).max(4).optional() }),
62
+ Markdown: def("Markdown", { text: z2.string() }),
63
+ Image: def("Image", { src: z2.string(), alt: z2.string().optional() }),
64
+ Icon: def("Icon", { name: z2.string() }),
65
+ Badge: def("Badge", { text: z2.string() }, { variant: ["solid", "outline", "subtle"] }),
66
+ Avatar: def("Avatar", { src: z2.string().optional(), fallback: z2.string().optional() }),
67
+ Alert: def("Alert", { text: z2.string(), title: z2.string().optional() }, {
68
+ variant: ["info", "success", "warning", "danger"]
69
+ }),
70
+ Stat: def("Stat", { label: z2.string(), value: z2.union([z2.string(), z2.number()]), delta: z2.string().optional() }),
71
+ KeyValue: def("KeyValue", {}),
72
+ List: def("List", { ordered: z2.boolean().optional() }),
73
+ Quote: def("Quote", { text: z2.string(), cite: z2.string().optional() }),
74
+ // ---- inputs ----
75
+ TextField: def("TextField", { label: z2.string().optional(), placeholder: z2.string().optional() }),
76
+ TextArea: def("TextArea", {
77
+ label: z2.string().optional(),
78
+ placeholder: z2.string().optional(),
79
+ rows: z2.number().int().optional()
80
+ }),
81
+ NumberField: def("NumberField", {
82
+ label: z2.string().optional(),
83
+ min: z2.number().optional(),
84
+ max: z2.number().optional(),
85
+ step: z2.number().optional()
86
+ }),
87
+ Select: def("Select", {
88
+ label: z2.string().optional(),
89
+ placeholder: z2.string().optional(),
90
+ options: z2.array(option).min(1)
91
+ }),
92
+ MultiSelect: def("MultiSelect", { label: z2.string().optional(), options: z2.array(option).min(1) }),
93
+ Combobox: def("Combobox", {
94
+ label: z2.string().optional(),
95
+ placeholder: z2.string().optional(),
96
+ options: z2.array(option).min(1)
97
+ }),
98
+ Checkbox: def("Checkbox", { label: z2.string().optional() }),
99
+ CheckboxGroup: def("CheckboxGroup", { label: z2.string().optional(), options: z2.array(option).min(1) }),
100
+ Radio: def("Radio", { label: z2.string().optional(), options: z2.array(option).min(1) }),
101
+ Switch: def("Switch", { label: z2.string().optional() }),
102
+ Slider: def("Slider", {
103
+ label: z2.string().optional(),
104
+ min: z2.number().optional(),
105
+ max: z2.number().optional(),
106
+ step: z2.number().optional()
107
+ }),
108
+ DatePicker: def("DatePicker", { label: z2.string().optional() }),
109
+ DateRange: def("DateRange", { label: z2.string().optional() }),
110
+ FileUpload: def("FileUpload", {
111
+ label: z2.string().optional(),
112
+ accept: z2.string().optional(),
113
+ multiple: z2.boolean().optional()
114
+ }),
115
+ Rating: def("Rating", { label: z2.string().optional(), max: z2.number().int().optional() }),
116
+ // ---- data ----
117
+ Table: def("Table", {
118
+ columns: z2.array(z2.object({ key: z2.string(), header: z2.string().optional() })).min(1),
119
+ sortable: z2.boolean().optional()
120
+ }, { allowedActions: ["sort", "filter"] }),
121
+ Chart: def("Chart", {
122
+ kind: z2.enum(["bar", "line", "area", "pie"]),
123
+ x: z2.string().optional(),
124
+ series: z2.array(z2.object({ key: z2.string(), label: z2.string().optional() })).min(1),
125
+ title: z2.string().optional()
126
+ }),
127
+ Progress: def("Progress", { value: z2.number(), max: z2.number().optional(), label: z2.string().optional() }),
128
+ Timeline: def("Timeline", {
129
+ items: z2.array(z2.object({ title: z2.string(), description: z2.string().optional(), timestamp: z2.string().optional() })).min(1)
130
+ }),
131
+ // ---- actions ----
132
+ Button: def("Button", { text: z2.string() }, {
133
+ variant: ["solid", "outline", "ghost", "link"],
134
+ allowedActions: ["submit", "cancel", "reset", "select", "confirm"]
135
+ }),
136
+ ButtonGroup: def("ButtonGroup", {}),
137
+ Link: def("Link", { text: z2.string(), href: z2.string().optional() })
138
+ }
139
+ };
140
+
141
+ // src/genui/binding.ts
142
+ function decode(token) {
143
+ return token.replace(/~1/g, "/").replace(/~0/g, "~");
144
+ }
145
+ function tokens(pointer) {
146
+ if (pointer === "") return [];
147
+ if (pointer[0] !== "/") throw new Error(`Invalid JSON Pointer: ${pointer}`);
148
+ return pointer.slice(1).split("/").map(decode);
149
+ }
150
+ function getPointer(model, pointer) {
151
+ const parts = tokens(pointer);
152
+ let cur = model;
153
+ for (const p of parts) {
154
+ if (cur == null || typeof cur !== "object") return void 0;
155
+ cur = cur[p];
156
+ }
157
+ return cur;
158
+ }
159
+ function setPointer(model, pointer, value) {
160
+ const parts = tokens(pointer);
161
+ if (parts.length === 0) return value;
162
+ const root = model && typeof model === "object" ? { ...model } : {};
163
+ let cur = root;
164
+ for (let i = 0; i < parts.length - 1; i++) {
165
+ const key = parts[i];
166
+ const child = cur[key];
167
+ cur[key] = child && typeof child === "object" ? { ...child } : {};
168
+ cur = cur[key];
169
+ }
170
+ cur[parts[parts.length - 1]] = value;
171
+ return root;
172
+ }
173
+
174
+ // src/genui/actions.ts
175
+ var DISMISS_ACTION = "userDismissedSurface";
176
+ function buildDismissResult(surfaceId, userMessage) {
177
+ const said = typeof userMessage === "string" ? userMessage.trim() : "";
178
+ return {
179
+ action: DISMISS_ACTION,
180
+ surfaceId,
181
+ componentId: "",
182
+ data: {},
183
+ ...said ? { userMessage: said } : {}
184
+ };
185
+ }
186
+ function buildSurfaceResult(action) {
187
+ return {
188
+ action: action.action,
189
+ surfaceId: action.surfaceId,
190
+ componentId: action.componentId,
191
+ data: action.payload ?? {}
192
+ };
193
+ }
194
+ function classifyAction(action) {
195
+ return action.wantResponse === true ? "agent-bound" : "local";
196
+ }
197
+ var URL_LIKE = /^\s*([a-z][a-z0-9+.-]*:|\/\/)/i;
198
+ function assertSafeActionName(name) {
199
+ if (typeof name !== "string" || name.length === 0) {
200
+ throw new Error("action.name must be a non-empty string");
201
+ }
202
+ if (URL_LIKE.test(name)) {
203
+ throw new Error(`action.name must be a semantic name, not a URL: ${name}`);
204
+ }
205
+ }
206
+
207
+ // src/genui/validate.ts
208
+ import { z as z3 } from "zod";
209
+ var surfaceShape = z3.object({
210
+ surfaceId: z3.string().min(1),
211
+ // Tier 2 canonical id (versioned URI); `catalog` is the legacy alias. Both optional on the
212
+ // wire — the SDK stamps `catalogId` if the agent omits it.
213
+ catalogId: z3.string().min(1).optional(),
214
+ catalog: z3.string().min(1).optional(),
215
+ // Legacy explicit root. A2UI uses the component with id "root"; kept optional for back-compat.
216
+ root: z3.string().min(1).optional(),
217
+ components: z3.array(
218
+ z3.object({
219
+ id: z3.string().min(1),
220
+ component: z3.string().min(1),
221
+ children: z3.array(z3.string()).optional(),
222
+ child: z3.string().optional(),
223
+ binding: z3.string().optional(),
224
+ action: z3.object({ name: z3.string(), wantResponse: z3.boolean().optional() }).optional()
225
+ }).passthrough()
226
+ ),
227
+ dataModel: z3.record(z3.unknown()).optional()
228
+ });
229
+ var UAX31_ID = /^[\p{XID_Start}_][\p{XID_Continue}]*$/u;
230
+ function validateProps(node, def2) {
231
+ const { id, component, children, child, binding, action, ...props } = node;
232
+ const parsed = def2.schema.safeParse(props);
233
+ if (parsed.success) return { ok: true, value: parsed.data, errors: [] };
234
+ return {
235
+ ok: false,
236
+ errors: parsed.error.issues.map((i) => ({ path: `${id}.${i.path.join(".")}`, message: i.message }))
237
+ };
238
+ }
239
+ function validateSurface(input, manifest) {
240
+ const shape = surfaceShape.safeParse(input);
241
+ if (!shape.success) {
242
+ return { ok: false, errors: shape.error.issues.map((i) => ({ path: i.path.join("."), message: i.message })) };
243
+ }
244
+ const surface = shape.data;
245
+ const errors = [];
246
+ const warnings = [];
247
+ const ids = new Set(surface.components.map((c) => c.id));
248
+ const rootId = ids.has("root") ? "root" : surface.root;
249
+ if (!rootId || !ids.has(rootId)) {
250
+ errors.push({ path: "root", message: `no root component (expected a component with id "root")` });
251
+ }
252
+ if (!surface.catalogId && !surface.catalog) {
253
+ warnings.push({ path: "catalogId", message: "surface has no catalogId (SDK will stamp the active catalog)" });
254
+ }
255
+ for (const node of surface.components) {
256
+ if (!UAX31_ID.test(node.id)) {
257
+ warnings.push({ path: node.id, message: `id "${node.id}" is not a valid UAX#31 identifier` });
258
+ }
259
+ const def2 = resolveComponent(manifest, node.component);
260
+ if (!def2) {
261
+ warnings.push({ path: node.id, message: `unknown component "${node.component}" (renders as text)` });
262
+ continue;
263
+ }
264
+ warnings.push(...validateProps(node, def2).errors);
265
+ for (const childId of node.children ?? []) {
266
+ if (!ids.has(childId)) {
267
+ warnings.push({ path: node.id, message: `child "${childId}" does not exist (skipped)` });
268
+ }
269
+ }
270
+ if (node.child && !ids.has(node.child)) {
271
+ warnings.push({ path: node.id, message: `child "${node.child}" does not exist (skipped)` });
272
+ }
273
+ if (node.action) {
274
+ try {
275
+ assertSafeActionName(node.action.name);
276
+ } catch (e) {
277
+ errors.push({ path: `${node.id}.action`, message: e.message });
278
+ }
279
+ }
280
+ }
281
+ return errors.length === 0 ? { ok: true, value: surface, errors: [], warnings } : { ok: false, errors, warnings };
282
+ }
283
+
284
+ // src/genui/tool-schema.ts
285
+ var DESCRIPTION = 'Render a UI using A2UI. The arguments are a UI surface, NOT free-form. Shape: { surfaceId, root, components, dataModel? }. `components` is a FLAT array; every item is { id, component, children?, ...props } where `component` is one of the allowed names (use `component`, never `type`) and `children` is an array of string ids referencing other items (never nested objects). Inputs bind to the data model via `binding` (a JSON Pointer like "/name"). To collect input, include a Button with action { name, wantResponse: true } \u2014 its result (the data model) is returned to you; a surface with no such button is display-only. Example: { "surfaceId": "signup", "root": "root", "components": [ { "id": "root", "component": "Stack", "children": ["name", "desc", "submit"] }, { "id": "name", "component": "TextField", "label": "Username", "binding": "/name" }, { "id": "desc", "component": "TextField", "label": "Description", "binding": "/description" }, { "id": "submit", "component": "Button", "text": "Save", "action": { "name": "save", "wantResponse": true } } ], "dataModel": { "name": "", "description": "" } }. IMPORTANT: when you call render_ui, the rendered surface IS your reply \u2014 do NOT also reproduce its content as text, markdown, or ASCII. Any accompanying message must be a brief one-line intro at most, never a duplicate of the UI.';
286
+ function buildRenderUiSchema(manifest, allowlist) {
287
+ const allowed = allowlist.filter((name) => name in manifest.components);
288
+ return {
289
+ title: "render_ui",
290
+ name: "render_ui",
291
+ description: DESCRIPTION,
292
+ type: "object",
293
+ properties: {
294
+ surfaceId: { type: "string" },
295
+ // A2UI catalog id — a versioned URI. `const` nudges the model to echo it; the SDK
296
+ // also stamps it if omitted, so the client always knows which catalog version to render.
297
+ catalogId: { type: "string", const: manifest.id },
298
+ catalog: { type: "string" },
299
+ // legacy alias (accepted, ignored)
300
+ root: { type: "string" },
301
+ // legacy explicit root (accepted; A2UI uses the id:"root" component)
302
+ components: {
303
+ type: "array",
304
+ items: {
305
+ type: "object",
306
+ properties: {
307
+ id: { type: "string" },
308
+ component: { type: "string", enum: allowed },
309
+ children: { type: "array", items: { type: "string" } },
310
+ child: { type: "string" },
311
+ binding: { type: "string" },
312
+ action: {
313
+ type: "object",
314
+ properties: {
315
+ name: { type: "string" },
316
+ wantResponse: { type: "boolean" }
317
+ },
318
+ required: ["name"]
319
+ },
320
+ tone: { type: "string", enum: [...TONES] },
321
+ size: { type: "string", enum: [...SIZES] },
322
+ emphasis: { type: "string", enum: [...EMPHASES] },
323
+ align: { type: "string", enum: [...ALIGNS] },
324
+ density: { type: "string", enum: [...DENSITIES] },
325
+ variant: { type: "string" },
326
+ text: { type: "string" },
327
+ label: { type: "string" },
328
+ placeholder: { type: "string" },
329
+ title: { type: "string" },
330
+ direction: { type: "string" },
331
+ gap: { type: "string" },
332
+ // Data props for data components. Several are legitimately polymorphic across
333
+ // components — type them as their real unions so the runtime doesn't reject
334
+ // valid output (adapters normalize each shape):
335
+ // data: array (Chart/Table rows) | object (KeyValue)
336
+ // rows: array (Table) | number (TextArea row count)
337
+ // columns: array (Table col defs) | number (Grid column count)
338
+ data: { type: ["array", "object"] },
339
+ rows: { type: ["array", "number"] },
340
+ items: { type: "array" },
341
+ // Accept string OR object items — models routinely emit the terse string
342
+ // form (e.g. series:["revenue"], options:["A","B"]); adapters normalize.
343
+ columns: { type: ["array", "number"], items: { type: ["object", "string"] } },
344
+ series: { type: "array", items: { type: ["object", "string"] } },
345
+ options: { type: "array", items: { type: ["object", "string"] } },
346
+ kind: { type: "string" },
347
+ x: { type: "string" },
348
+ value: {}
349
+ },
350
+ required: ["id", "component"]
351
+ }
352
+ },
353
+ dataModel: { type: "object" }
354
+ },
355
+ required: ["surfaceId", "root", "components"],
356
+ additionalProperties: false
357
+ };
358
+ }
359
+
360
+ // src/genui/clause.ts
361
+ function buildGenuiClause(manifest, allowlist) {
362
+ const names = allowlist.filter((n) => n in manifest.components);
363
+ return [
364
+ "You can render UI by calling render_ui with an A2UI surface (a flat components array; each item is { id, component, children?, ...props }; component is one of the allowed names; children are string ids referencing other items).",
365
+ `Components: ${names.join(", ")}.`,
366
+ `Style each component via the semantic vocabulary (never CSS, colors, or HTML): tone (${TONES.join("/")}), size (${SIZES.join("/")}), emphasis (low/medium/high), align (start/center/end), density (compact/comfortable), plus a component-specific variant where offered.`,
367
+ "Data components MUST carry their data: Chart takes `data` (an array of row objects) + `series` (keys to plot) + `x` (the category key); Table takes `rows` (array of row objects) + `columns` ([{ key, header }] matching the row keys); List takes `items` (array); Stat takes `label`+`value`; KeyValue takes `data` (an object). Put the data inline on the component (or in dataModel referenced via `binding`).",
368
+ "To collect input, add a Button with an action { name, wantResponse: true }. You get back { action, surfaceId, componentId, data } \u2014 `data` is the collected data model and `componentId` is the id of the component that was acted on. A surface with no such button is display-only.",
369
+ "When you render several options to choose from (a grid of cards, each with its own button), give every option component a MEANINGFUL id (e.g. flight-NH107, hotel-memmo-alfama): `componentId` tells you which one the user picked, so never ask them to repeat a choice they already made.",
370
+ 'The user may ignore an interactive surface and just type instead. You then receive action "userDismissedSurface" with their words in `userMessage` \u2014 treat it as their reply, answer it directly, and do not re-render the same surface or scold them for not using it.',
371
+ "IMPORTANT: the rendered surface IS your reply \u2014 do NOT reproduce its content as text, markdown, or ASCII; a one-line intro at most.",
372
+ "Prefer plain text for simple replies."
373
+ ].join(" ");
374
+ }
375
+
376
+ // src/genui/dynamic.ts
377
+ function isPathRef(v) {
378
+ return !!v && typeof v === "object" && typeof v.path === "string";
379
+ }
380
+ function resolveDynamic(v, dataModel) {
381
+ return isPathRef(v) ? getPointer(dataModel, v.path) : v;
382
+ }
383
+
384
+ // src/genui/emit.ts
385
+ import { zodToJsonSchema } from "zod-to-json-schema";
386
+ var toJsonSchema = zodToJsonSchema;
387
+ var SHARED_DEFS = {
388
+ DynamicString: {
389
+ description: "A literal string OR a data-model path reference { path }.",
390
+ oneOf: [
391
+ { type: "string" },
392
+ { type: "object", properties: { path: { type: "string" } }, required: ["path"], additionalProperties: false }
393
+ ]
394
+ },
395
+ Action: {
396
+ description: "A semantic action (never a URL). wantResponse:true returns the data model to the agent.",
397
+ type: "object",
398
+ properties: { name: { type: "string" }, wantResponse: { type: "boolean" } },
399
+ required: ["name"],
400
+ additionalProperties: false
401
+ }
402
+ };
403
+ function emitA2uiCatalog(manifest, opts) {
404
+ const components = {};
405
+ for (const [name, def2] of Object.entries(manifest.components)) {
406
+ const propsSchema = toJsonSchema(def2.schema, { $refStrategy: "none", target: "jsonSchema2020" });
407
+ const properties = {
408
+ component: { const: name },
409
+ ...propsSchema.properties ?? {}
410
+ };
411
+ const required = Array.from(/* @__PURE__ */ new Set(["component", ...propsSchema.required ?? []]));
412
+ components[name] = {
413
+ type: "object",
414
+ properties,
415
+ required,
416
+ // Presentational props are open at authoring time (zod .passthrough()); the tool
417
+ // schema is where the model-facing prop set is fixed. Keep the catalog permissive.
418
+ unevaluatedProperties: false
419
+ };
420
+ }
421
+ return {
422
+ $schema: "https://json-schema.org/draft/2020-12/schema",
423
+ catalogId: opts.catalogId,
424
+ title: "Alquimia Core Catalog",
425
+ description: "Alquimia's default A2UI catalog. Abstract, framework-agnostic component contract; consumers map each component to their own (shadcn) renderer. Generated from the SDK authoring catalog.",
426
+ components,
427
+ $defs: SHARED_DEFS
428
+ };
429
+ }
430
+
431
+ // src/genui/core-v1.catalog.json
432
+ var core_v1_catalog_default = {
433
+ $schema: "https://json-schema.org/draft/2020-12/schema",
434
+ catalogId: "https://alquimia.ai/catalogs/core/v1/catalog.json",
435
+ title: "Alquimia Core Catalog",
436
+ description: "Alquimia's default A2UI catalog. Abstract, framework-agnostic component contract; consumers map each component to their own (shadcn) renderer. Generated from the SDK authoring catalog.",
437
+ components: {
438
+ Stack: {
439
+ type: "object",
440
+ properties: {
441
+ component: {
442
+ const: "Stack"
443
+ },
444
+ tone: {
445
+ type: "string",
446
+ enum: [
447
+ "default",
448
+ "muted",
449
+ "primary",
450
+ "success",
451
+ "warning",
452
+ "danger"
453
+ ]
454
+ },
455
+ size: {
456
+ type: "string",
457
+ enum: [
458
+ "sm",
459
+ "md",
460
+ "lg"
461
+ ]
462
+ },
463
+ emphasis: {
464
+ type: "string",
465
+ enum: [
466
+ "low",
467
+ "medium",
468
+ "high"
469
+ ]
470
+ },
471
+ align: {
472
+ type: "string",
473
+ enum: [
474
+ "start",
475
+ "center",
476
+ "end"
477
+ ]
478
+ },
479
+ density: {
480
+ type: "string",
481
+ enum: [
482
+ "compact",
483
+ "comfortable"
484
+ ]
485
+ },
486
+ direction: {
487
+ type: "string",
488
+ enum: [
489
+ "vertical",
490
+ "horizontal"
491
+ ]
492
+ },
493
+ gap: {
494
+ type: "string",
495
+ enum: [
496
+ "sm",
497
+ "md",
498
+ "lg"
499
+ ]
500
+ }
501
+ },
502
+ required: [
503
+ "component"
504
+ ],
505
+ unevaluatedProperties: false
506
+ },
507
+ Grid: {
508
+ type: "object",
509
+ properties: {
510
+ component: {
511
+ const: "Grid"
512
+ },
513
+ tone: {
514
+ type: "string",
515
+ enum: [
516
+ "default",
517
+ "muted",
518
+ "primary",
519
+ "success",
520
+ "warning",
521
+ "danger"
522
+ ]
523
+ },
524
+ size: {
525
+ type: "string",
526
+ enum: [
527
+ "sm",
528
+ "md",
529
+ "lg"
530
+ ]
531
+ },
532
+ emphasis: {
533
+ type: "string",
534
+ enum: [
535
+ "low",
536
+ "medium",
537
+ "high"
538
+ ]
539
+ },
540
+ align: {
541
+ type: "string",
542
+ enum: [
543
+ "start",
544
+ "center",
545
+ "end"
546
+ ]
547
+ },
548
+ density: {
549
+ type: "string",
550
+ enum: [
551
+ "compact",
552
+ "comfortable"
553
+ ]
554
+ },
555
+ columns: {
556
+ type: "integer",
557
+ minimum: 1,
558
+ maximum: 6
559
+ },
560
+ gap: {
561
+ type: "string",
562
+ enum: [
563
+ "sm",
564
+ "md",
565
+ "lg"
566
+ ]
567
+ }
568
+ },
569
+ required: [
570
+ "component"
571
+ ],
572
+ unevaluatedProperties: false
573
+ },
574
+ Row: {
575
+ type: "object",
576
+ properties: {
577
+ component: {
578
+ const: "Row"
579
+ },
580
+ tone: {
581
+ type: "string",
582
+ enum: [
583
+ "default",
584
+ "muted",
585
+ "primary",
586
+ "success",
587
+ "warning",
588
+ "danger"
589
+ ]
590
+ },
591
+ size: {
592
+ type: "string",
593
+ enum: [
594
+ "sm",
595
+ "md",
596
+ "lg"
597
+ ]
598
+ },
599
+ emphasis: {
600
+ type: "string",
601
+ enum: [
602
+ "low",
603
+ "medium",
604
+ "high"
605
+ ]
606
+ },
607
+ align: {
608
+ type: "string",
609
+ enum: [
610
+ "start",
611
+ "center",
612
+ "end"
613
+ ]
614
+ },
615
+ density: {
616
+ type: "string",
617
+ enum: [
618
+ "compact",
619
+ "comfortable"
620
+ ]
621
+ },
622
+ gap: {
623
+ type: "string",
624
+ enum: [
625
+ "sm",
626
+ "md",
627
+ "lg"
628
+ ]
629
+ },
630
+ wrap: {
631
+ type: "boolean"
632
+ }
633
+ },
634
+ required: [
635
+ "component"
636
+ ],
637
+ unevaluatedProperties: false
638
+ },
639
+ Column: {
640
+ type: "object",
641
+ properties: {
642
+ component: {
643
+ const: "Column"
644
+ },
645
+ tone: {
646
+ type: "string",
647
+ enum: [
648
+ "default",
649
+ "muted",
650
+ "primary",
651
+ "success",
652
+ "warning",
653
+ "danger"
654
+ ]
655
+ },
656
+ size: {
657
+ type: "string",
658
+ enum: [
659
+ "sm",
660
+ "md",
661
+ "lg"
662
+ ]
663
+ },
664
+ emphasis: {
665
+ type: "string",
666
+ enum: [
667
+ "low",
668
+ "medium",
669
+ "high"
670
+ ]
671
+ },
672
+ align: {
673
+ type: "string",
674
+ enum: [
675
+ "start",
676
+ "center",
677
+ "end"
678
+ ]
679
+ },
680
+ density: {
681
+ type: "string",
682
+ enum: [
683
+ "compact",
684
+ "comfortable"
685
+ ]
686
+ },
687
+ gap: {
688
+ type: "string",
689
+ enum: [
690
+ "sm",
691
+ "md",
692
+ "lg"
693
+ ]
694
+ }
695
+ },
696
+ required: [
697
+ "component"
698
+ ],
699
+ unevaluatedProperties: false
700
+ },
701
+ Divider: {
702
+ type: "object",
703
+ properties: {
704
+ component: {
705
+ const: "Divider"
706
+ },
707
+ tone: {
708
+ type: "string",
709
+ enum: [
710
+ "default",
711
+ "muted",
712
+ "primary",
713
+ "success",
714
+ "warning",
715
+ "danger"
716
+ ]
717
+ },
718
+ size: {
719
+ type: "string",
720
+ enum: [
721
+ "sm",
722
+ "md",
723
+ "lg"
724
+ ]
725
+ },
726
+ emphasis: {
727
+ type: "string",
728
+ enum: [
729
+ "low",
730
+ "medium",
731
+ "high"
732
+ ]
733
+ },
734
+ align: {
735
+ type: "string",
736
+ enum: [
737
+ "start",
738
+ "center",
739
+ "end"
740
+ ]
741
+ },
742
+ density: {
743
+ type: "string",
744
+ enum: [
745
+ "compact",
746
+ "comfortable"
747
+ ]
748
+ },
749
+ label: {
750
+ type: "string"
751
+ }
752
+ },
753
+ required: [
754
+ "component"
755
+ ],
756
+ unevaluatedProperties: false
757
+ },
758
+ Spacer: {
759
+ type: "object",
760
+ properties: {
761
+ component: {
762
+ const: "Spacer"
763
+ },
764
+ tone: {
765
+ type: "string",
766
+ enum: [
767
+ "default",
768
+ "muted",
769
+ "primary",
770
+ "success",
771
+ "warning",
772
+ "danger"
773
+ ]
774
+ },
775
+ size: {
776
+ type: "string",
777
+ enum: [
778
+ "sm",
779
+ "md",
780
+ "lg"
781
+ ]
782
+ },
783
+ emphasis: {
784
+ type: "string",
785
+ enum: [
786
+ "low",
787
+ "medium",
788
+ "high"
789
+ ]
790
+ },
791
+ align: {
792
+ type: "string",
793
+ enum: [
794
+ "start",
795
+ "center",
796
+ "end"
797
+ ]
798
+ },
799
+ density: {
800
+ type: "string",
801
+ enum: [
802
+ "compact",
803
+ "comfortable"
804
+ ]
805
+ }
806
+ },
807
+ required: [
808
+ "component"
809
+ ],
810
+ unevaluatedProperties: false
811
+ },
812
+ Card: {
813
+ type: "object",
814
+ properties: {
815
+ component: {
816
+ const: "Card"
817
+ },
818
+ tone: {
819
+ type: "string",
820
+ enum: [
821
+ "default",
822
+ "muted",
823
+ "primary",
824
+ "success",
825
+ "warning",
826
+ "danger"
827
+ ]
828
+ },
829
+ size: {
830
+ type: "string",
831
+ enum: [
832
+ "sm",
833
+ "md",
834
+ "lg"
835
+ ]
836
+ },
837
+ emphasis: {
838
+ type: "string",
839
+ enum: [
840
+ "low",
841
+ "medium",
842
+ "high"
843
+ ]
844
+ },
845
+ align: {
846
+ type: "string",
847
+ enum: [
848
+ "start",
849
+ "center",
850
+ "end"
851
+ ]
852
+ },
853
+ density: {
854
+ type: "string",
855
+ enum: [
856
+ "compact",
857
+ "comfortable"
858
+ ]
859
+ },
860
+ variant: {
861
+ type: "string",
862
+ enum: [
863
+ "elevated",
864
+ "outline",
865
+ "ghost"
866
+ ]
867
+ },
868
+ title: {
869
+ type: "string"
870
+ },
871
+ description: {
872
+ type: "string"
873
+ }
874
+ },
875
+ required: [
876
+ "component"
877
+ ],
878
+ unevaluatedProperties: false
879
+ },
880
+ Accordion: {
881
+ type: "object",
882
+ properties: {
883
+ component: {
884
+ const: "Accordion"
885
+ },
886
+ tone: {
887
+ type: "string",
888
+ enum: [
889
+ "default",
890
+ "muted",
891
+ "primary",
892
+ "success",
893
+ "warning",
894
+ "danger"
895
+ ]
896
+ },
897
+ size: {
898
+ type: "string",
899
+ enum: [
900
+ "sm",
901
+ "md",
902
+ "lg"
903
+ ]
904
+ },
905
+ emphasis: {
906
+ type: "string",
907
+ enum: [
908
+ "low",
909
+ "medium",
910
+ "high"
911
+ ]
912
+ },
913
+ align: {
914
+ type: "string",
915
+ enum: [
916
+ "start",
917
+ "center",
918
+ "end"
919
+ ]
920
+ },
921
+ density: {
922
+ type: "string",
923
+ enum: [
924
+ "compact",
925
+ "comfortable"
926
+ ]
927
+ },
928
+ items: {
929
+ type: "array",
930
+ items: {
931
+ type: "object",
932
+ properties: {
933
+ title: {
934
+ type: "string"
935
+ },
936
+ value: {
937
+ type: "string"
938
+ }
939
+ },
940
+ required: [
941
+ "title",
942
+ "value"
943
+ ],
944
+ additionalProperties: false
945
+ }
946
+ }
947
+ },
948
+ required: [
949
+ "component"
950
+ ],
951
+ unevaluatedProperties: false
952
+ },
953
+ Tabs: {
954
+ type: "object",
955
+ properties: {
956
+ component: {
957
+ const: "Tabs"
958
+ },
959
+ tone: {
960
+ type: "string",
961
+ enum: [
962
+ "default",
963
+ "muted",
964
+ "primary",
965
+ "success",
966
+ "warning",
967
+ "danger"
968
+ ]
969
+ },
970
+ size: {
971
+ type: "string",
972
+ enum: [
973
+ "sm",
974
+ "md",
975
+ "lg"
976
+ ]
977
+ },
978
+ emphasis: {
979
+ type: "string",
980
+ enum: [
981
+ "low",
982
+ "medium",
983
+ "high"
984
+ ]
985
+ },
986
+ align: {
987
+ type: "string",
988
+ enum: [
989
+ "start",
990
+ "center",
991
+ "end"
992
+ ]
993
+ },
994
+ density: {
995
+ type: "string",
996
+ enum: [
997
+ "compact",
998
+ "comfortable"
999
+ ]
1000
+ },
1001
+ tabs: {
1002
+ type: "array",
1003
+ items: {
1004
+ type: "object",
1005
+ properties: {
1006
+ label: {
1007
+ type: "string"
1008
+ },
1009
+ value: {
1010
+ type: "string"
1011
+ }
1012
+ },
1013
+ required: [
1014
+ "label",
1015
+ "value"
1016
+ ],
1017
+ additionalProperties: false
1018
+ },
1019
+ minItems: 1
1020
+ }
1021
+ },
1022
+ required: [
1023
+ "component",
1024
+ "tabs"
1025
+ ],
1026
+ unevaluatedProperties: false
1027
+ },
1028
+ Text: {
1029
+ type: "object",
1030
+ properties: {
1031
+ component: {
1032
+ const: "Text"
1033
+ },
1034
+ tone: {
1035
+ type: "string",
1036
+ enum: [
1037
+ "default",
1038
+ "muted",
1039
+ "primary",
1040
+ "success",
1041
+ "warning",
1042
+ "danger"
1043
+ ]
1044
+ },
1045
+ size: {
1046
+ type: "string",
1047
+ enum: [
1048
+ "sm",
1049
+ "md",
1050
+ "lg"
1051
+ ]
1052
+ },
1053
+ emphasis: {
1054
+ type: "string",
1055
+ enum: [
1056
+ "low",
1057
+ "medium",
1058
+ "high"
1059
+ ]
1060
+ },
1061
+ align: {
1062
+ type: "string",
1063
+ enum: [
1064
+ "start",
1065
+ "center",
1066
+ "end"
1067
+ ]
1068
+ },
1069
+ density: {
1070
+ type: "string",
1071
+ enum: [
1072
+ "compact",
1073
+ "comfortable"
1074
+ ]
1075
+ },
1076
+ variant: {
1077
+ type: "string",
1078
+ enum: [
1079
+ "body",
1080
+ "muted",
1081
+ "caption",
1082
+ "lead"
1083
+ ]
1084
+ },
1085
+ text: {
1086
+ type: "string"
1087
+ }
1088
+ },
1089
+ required: [
1090
+ "component",
1091
+ "text"
1092
+ ],
1093
+ unevaluatedProperties: false
1094
+ },
1095
+ Heading: {
1096
+ type: "object",
1097
+ properties: {
1098
+ component: {
1099
+ const: "Heading"
1100
+ },
1101
+ tone: {
1102
+ type: "string",
1103
+ enum: [
1104
+ "default",
1105
+ "muted",
1106
+ "primary",
1107
+ "success",
1108
+ "warning",
1109
+ "danger"
1110
+ ]
1111
+ },
1112
+ size: {
1113
+ type: "string",
1114
+ enum: [
1115
+ "sm",
1116
+ "md",
1117
+ "lg"
1118
+ ]
1119
+ },
1120
+ emphasis: {
1121
+ type: "string",
1122
+ enum: [
1123
+ "low",
1124
+ "medium",
1125
+ "high"
1126
+ ]
1127
+ },
1128
+ align: {
1129
+ type: "string",
1130
+ enum: [
1131
+ "start",
1132
+ "center",
1133
+ "end"
1134
+ ]
1135
+ },
1136
+ density: {
1137
+ type: "string",
1138
+ enum: [
1139
+ "compact",
1140
+ "comfortable"
1141
+ ]
1142
+ },
1143
+ text: {
1144
+ type: "string"
1145
+ },
1146
+ level: {
1147
+ type: "integer",
1148
+ minimum: 1,
1149
+ maximum: 4
1150
+ }
1151
+ },
1152
+ required: [
1153
+ "component",
1154
+ "text"
1155
+ ],
1156
+ unevaluatedProperties: false
1157
+ },
1158
+ Markdown: {
1159
+ type: "object",
1160
+ properties: {
1161
+ component: {
1162
+ const: "Markdown"
1163
+ },
1164
+ tone: {
1165
+ type: "string",
1166
+ enum: [
1167
+ "default",
1168
+ "muted",
1169
+ "primary",
1170
+ "success",
1171
+ "warning",
1172
+ "danger"
1173
+ ]
1174
+ },
1175
+ size: {
1176
+ type: "string",
1177
+ enum: [
1178
+ "sm",
1179
+ "md",
1180
+ "lg"
1181
+ ]
1182
+ },
1183
+ emphasis: {
1184
+ type: "string",
1185
+ enum: [
1186
+ "low",
1187
+ "medium",
1188
+ "high"
1189
+ ]
1190
+ },
1191
+ align: {
1192
+ type: "string",
1193
+ enum: [
1194
+ "start",
1195
+ "center",
1196
+ "end"
1197
+ ]
1198
+ },
1199
+ density: {
1200
+ type: "string",
1201
+ enum: [
1202
+ "compact",
1203
+ "comfortable"
1204
+ ]
1205
+ },
1206
+ text: {
1207
+ type: "string"
1208
+ }
1209
+ },
1210
+ required: [
1211
+ "component",
1212
+ "text"
1213
+ ],
1214
+ unevaluatedProperties: false
1215
+ },
1216
+ Image: {
1217
+ type: "object",
1218
+ properties: {
1219
+ component: {
1220
+ const: "Image"
1221
+ },
1222
+ tone: {
1223
+ type: "string",
1224
+ enum: [
1225
+ "default",
1226
+ "muted",
1227
+ "primary",
1228
+ "success",
1229
+ "warning",
1230
+ "danger"
1231
+ ]
1232
+ },
1233
+ size: {
1234
+ type: "string",
1235
+ enum: [
1236
+ "sm",
1237
+ "md",
1238
+ "lg"
1239
+ ]
1240
+ },
1241
+ emphasis: {
1242
+ type: "string",
1243
+ enum: [
1244
+ "low",
1245
+ "medium",
1246
+ "high"
1247
+ ]
1248
+ },
1249
+ align: {
1250
+ type: "string",
1251
+ enum: [
1252
+ "start",
1253
+ "center",
1254
+ "end"
1255
+ ]
1256
+ },
1257
+ density: {
1258
+ type: "string",
1259
+ enum: [
1260
+ "compact",
1261
+ "comfortable"
1262
+ ]
1263
+ },
1264
+ src: {
1265
+ type: "string"
1266
+ },
1267
+ alt: {
1268
+ type: "string"
1269
+ }
1270
+ },
1271
+ required: [
1272
+ "component",
1273
+ "src"
1274
+ ],
1275
+ unevaluatedProperties: false
1276
+ },
1277
+ Icon: {
1278
+ type: "object",
1279
+ properties: {
1280
+ component: {
1281
+ const: "Icon"
1282
+ },
1283
+ tone: {
1284
+ type: "string",
1285
+ enum: [
1286
+ "default",
1287
+ "muted",
1288
+ "primary",
1289
+ "success",
1290
+ "warning",
1291
+ "danger"
1292
+ ]
1293
+ },
1294
+ size: {
1295
+ type: "string",
1296
+ enum: [
1297
+ "sm",
1298
+ "md",
1299
+ "lg"
1300
+ ]
1301
+ },
1302
+ emphasis: {
1303
+ type: "string",
1304
+ enum: [
1305
+ "low",
1306
+ "medium",
1307
+ "high"
1308
+ ]
1309
+ },
1310
+ align: {
1311
+ type: "string",
1312
+ enum: [
1313
+ "start",
1314
+ "center",
1315
+ "end"
1316
+ ]
1317
+ },
1318
+ density: {
1319
+ type: "string",
1320
+ enum: [
1321
+ "compact",
1322
+ "comfortable"
1323
+ ]
1324
+ },
1325
+ name: {
1326
+ type: "string"
1327
+ }
1328
+ },
1329
+ required: [
1330
+ "component",
1331
+ "name"
1332
+ ],
1333
+ unevaluatedProperties: false
1334
+ },
1335
+ Badge: {
1336
+ type: "object",
1337
+ properties: {
1338
+ component: {
1339
+ const: "Badge"
1340
+ },
1341
+ tone: {
1342
+ type: "string",
1343
+ enum: [
1344
+ "default",
1345
+ "muted",
1346
+ "primary",
1347
+ "success",
1348
+ "warning",
1349
+ "danger"
1350
+ ]
1351
+ },
1352
+ size: {
1353
+ type: "string",
1354
+ enum: [
1355
+ "sm",
1356
+ "md",
1357
+ "lg"
1358
+ ]
1359
+ },
1360
+ emphasis: {
1361
+ type: "string",
1362
+ enum: [
1363
+ "low",
1364
+ "medium",
1365
+ "high"
1366
+ ]
1367
+ },
1368
+ align: {
1369
+ type: "string",
1370
+ enum: [
1371
+ "start",
1372
+ "center",
1373
+ "end"
1374
+ ]
1375
+ },
1376
+ density: {
1377
+ type: "string",
1378
+ enum: [
1379
+ "compact",
1380
+ "comfortable"
1381
+ ]
1382
+ },
1383
+ variant: {
1384
+ type: "string",
1385
+ enum: [
1386
+ "solid",
1387
+ "outline",
1388
+ "subtle"
1389
+ ]
1390
+ },
1391
+ text: {
1392
+ type: "string"
1393
+ }
1394
+ },
1395
+ required: [
1396
+ "component",
1397
+ "text"
1398
+ ],
1399
+ unevaluatedProperties: false
1400
+ },
1401
+ Avatar: {
1402
+ type: "object",
1403
+ properties: {
1404
+ component: {
1405
+ const: "Avatar"
1406
+ },
1407
+ tone: {
1408
+ type: "string",
1409
+ enum: [
1410
+ "default",
1411
+ "muted",
1412
+ "primary",
1413
+ "success",
1414
+ "warning",
1415
+ "danger"
1416
+ ]
1417
+ },
1418
+ size: {
1419
+ type: "string",
1420
+ enum: [
1421
+ "sm",
1422
+ "md",
1423
+ "lg"
1424
+ ]
1425
+ },
1426
+ emphasis: {
1427
+ type: "string",
1428
+ enum: [
1429
+ "low",
1430
+ "medium",
1431
+ "high"
1432
+ ]
1433
+ },
1434
+ align: {
1435
+ type: "string",
1436
+ enum: [
1437
+ "start",
1438
+ "center",
1439
+ "end"
1440
+ ]
1441
+ },
1442
+ density: {
1443
+ type: "string",
1444
+ enum: [
1445
+ "compact",
1446
+ "comfortable"
1447
+ ]
1448
+ },
1449
+ src: {
1450
+ type: "string"
1451
+ },
1452
+ fallback: {
1453
+ type: "string"
1454
+ }
1455
+ },
1456
+ required: [
1457
+ "component"
1458
+ ],
1459
+ unevaluatedProperties: false
1460
+ },
1461
+ Alert: {
1462
+ type: "object",
1463
+ properties: {
1464
+ component: {
1465
+ const: "Alert"
1466
+ },
1467
+ tone: {
1468
+ type: "string",
1469
+ enum: [
1470
+ "default",
1471
+ "muted",
1472
+ "primary",
1473
+ "success",
1474
+ "warning",
1475
+ "danger"
1476
+ ]
1477
+ },
1478
+ size: {
1479
+ type: "string",
1480
+ enum: [
1481
+ "sm",
1482
+ "md",
1483
+ "lg"
1484
+ ]
1485
+ },
1486
+ emphasis: {
1487
+ type: "string",
1488
+ enum: [
1489
+ "low",
1490
+ "medium",
1491
+ "high"
1492
+ ]
1493
+ },
1494
+ align: {
1495
+ type: "string",
1496
+ enum: [
1497
+ "start",
1498
+ "center",
1499
+ "end"
1500
+ ]
1501
+ },
1502
+ density: {
1503
+ type: "string",
1504
+ enum: [
1505
+ "compact",
1506
+ "comfortable"
1507
+ ]
1508
+ },
1509
+ variant: {
1510
+ type: "string",
1511
+ enum: [
1512
+ "info",
1513
+ "success",
1514
+ "warning",
1515
+ "danger"
1516
+ ]
1517
+ },
1518
+ text: {
1519
+ type: "string"
1520
+ },
1521
+ title: {
1522
+ type: "string"
1523
+ }
1524
+ },
1525
+ required: [
1526
+ "component",
1527
+ "text"
1528
+ ],
1529
+ unevaluatedProperties: false
1530
+ },
1531
+ Stat: {
1532
+ type: "object",
1533
+ properties: {
1534
+ component: {
1535
+ const: "Stat"
1536
+ },
1537
+ tone: {
1538
+ type: "string",
1539
+ enum: [
1540
+ "default",
1541
+ "muted",
1542
+ "primary",
1543
+ "success",
1544
+ "warning",
1545
+ "danger"
1546
+ ]
1547
+ },
1548
+ size: {
1549
+ type: "string",
1550
+ enum: [
1551
+ "sm",
1552
+ "md",
1553
+ "lg"
1554
+ ]
1555
+ },
1556
+ emphasis: {
1557
+ type: "string",
1558
+ enum: [
1559
+ "low",
1560
+ "medium",
1561
+ "high"
1562
+ ]
1563
+ },
1564
+ align: {
1565
+ type: "string",
1566
+ enum: [
1567
+ "start",
1568
+ "center",
1569
+ "end"
1570
+ ]
1571
+ },
1572
+ density: {
1573
+ type: "string",
1574
+ enum: [
1575
+ "compact",
1576
+ "comfortable"
1577
+ ]
1578
+ },
1579
+ label: {
1580
+ type: "string"
1581
+ },
1582
+ value: {
1583
+ type: [
1584
+ "string",
1585
+ "number"
1586
+ ]
1587
+ },
1588
+ delta: {
1589
+ type: "string"
1590
+ }
1591
+ },
1592
+ required: [
1593
+ "component",
1594
+ "label",
1595
+ "value"
1596
+ ],
1597
+ unevaluatedProperties: false
1598
+ },
1599
+ KeyValue: {
1600
+ type: "object",
1601
+ properties: {
1602
+ component: {
1603
+ const: "KeyValue"
1604
+ },
1605
+ tone: {
1606
+ type: "string",
1607
+ enum: [
1608
+ "default",
1609
+ "muted",
1610
+ "primary",
1611
+ "success",
1612
+ "warning",
1613
+ "danger"
1614
+ ]
1615
+ },
1616
+ size: {
1617
+ type: "string",
1618
+ enum: [
1619
+ "sm",
1620
+ "md",
1621
+ "lg"
1622
+ ]
1623
+ },
1624
+ emphasis: {
1625
+ type: "string",
1626
+ enum: [
1627
+ "low",
1628
+ "medium",
1629
+ "high"
1630
+ ]
1631
+ },
1632
+ align: {
1633
+ type: "string",
1634
+ enum: [
1635
+ "start",
1636
+ "center",
1637
+ "end"
1638
+ ]
1639
+ },
1640
+ density: {
1641
+ type: "string",
1642
+ enum: [
1643
+ "compact",
1644
+ "comfortable"
1645
+ ]
1646
+ }
1647
+ },
1648
+ required: [
1649
+ "component"
1650
+ ],
1651
+ unevaluatedProperties: false
1652
+ },
1653
+ List: {
1654
+ type: "object",
1655
+ properties: {
1656
+ component: {
1657
+ const: "List"
1658
+ },
1659
+ tone: {
1660
+ type: "string",
1661
+ enum: [
1662
+ "default",
1663
+ "muted",
1664
+ "primary",
1665
+ "success",
1666
+ "warning",
1667
+ "danger"
1668
+ ]
1669
+ },
1670
+ size: {
1671
+ type: "string",
1672
+ enum: [
1673
+ "sm",
1674
+ "md",
1675
+ "lg"
1676
+ ]
1677
+ },
1678
+ emphasis: {
1679
+ type: "string",
1680
+ enum: [
1681
+ "low",
1682
+ "medium",
1683
+ "high"
1684
+ ]
1685
+ },
1686
+ align: {
1687
+ type: "string",
1688
+ enum: [
1689
+ "start",
1690
+ "center",
1691
+ "end"
1692
+ ]
1693
+ },
1694
+ density: {
1695
+ type: "string",
1696
+ enum: [
1697
+ "compact",
1698
+ "comfortable"
1699
+ ]
1700
+ },
1701
+ ordered: {
1702
+ type: "boolean"
1703
+ }
1704
+ },
1705
+ required: [
1706
+ "component"
1707
+ ],
1708
+ unevaluatedProperties: false
1709
+ },
1710
+ Quote: {
1711
+ type: "object",
1712
+ properties: {
1713
+ component: {
1714
+ const: "Quote"
1715
+ },
1716
+ tone: {
1717
+ type: "string",
1718
+ enum: [
1719
+ "default",
1720
+ "muted",
1721
+ "primary",
1722
+ "success",
1723
+ "warning",
1724
+ "danger"
1725
+ ]
1726
+ },
1727
+ size: {
1728
+ type: "string",
1729
+ enum: [
1730
+ "sm",
1731
+ "md",
1732
+ "lg"
1733
+ ]
1734
+ },
1735
+ emphasis: {
1736
+ type: "string",
1737
+ enum: [
1738
+ "low",
1739
+ "medium",
1740
+ "high"
1741
+ ]
1742
+ },
1743
+ align: {
1744
+ type: "string",
1745
+ enum: [
1746
+ "start",
1747
+ "center",
1748
+ "end"
1749
+ ]
1750
+ },
1751
+ density: {
1752
+ type: "string",
1753
+ enum: [
1754
+ "compact",
1755
+ "comfortable"
1756
+ ]
1757
+ },
1758
+ text: {
1759
+ type: "string"
1760
+ },
1761
+ cite: {
1762
+ type: "string"
1763
+ }
1764
+ },
1765
+ required: [
1766
+ "component",
1767
+ "text"
1768
+ ],
1769
+ unevaluatedProperties: false
1770
+ },
1771
+ TextField: {
1772
+ type: "object",
1773
+ properties: {
1774
+ component: {
1775
+ const: "TextField"
1776
+ },
1777
+ tone: {
1778
+ type: "string",
1779
+ enum: [
1780
+ "default",
1781
+ "muted",
1782
+ "primary",
1783
+ "success",
1784
+ "warning",
1785
+ "danger"
1786
+ ]
1787
+ },
1788
+ size: {
1789
+ type: "string",
1790
+ enum: [
1791
+ "sm",
1792
+ "md",
1793
+ "lg"
1794
+ ]
1795
+ },
1796
+ emphasis: {
1797
+ type: "string",
1798
+ enum: [
1799
+ "low",
1800
+ "medium",
1801
+ "high"
1802
+ ]
1803
+ },
1804
+ align: {
1805
+ type: "string",
1806
+ enum: [
1807
+ "start",
1808
+ "center",
1809
+ "end"
1810
+ ]
1811
+ },
1812
+ density: {
1813
+ type: "string",
1814
+ enum: [
1815
+ "compact",
1816
+ "comfortable"
1817
+ ]
1818
+ },
1819
+ label: {
1820
+ type: "string"
1821
+ },
1822
+ placeholder: {
1823
+ type: "string"
1824
+ }
1825
+ },
1826
+ required: [
1827
+ "component"
1828
+ ],
1829
+ unevaluatedProperties: false
1830
+ },
1831
+ TextArea: {
1832
+ type: "object",
1833
+ properties: {
1834
+ component: {
1835
+ const: "TextArea"
1836
+ },
1837
+ tone: {
1838
+ type: "string",
1839
+ enum: [
1840
+ "default",
1841
+ "muted",
1842
+ "primary",
1843
+ "success",
1844
+ "warning",
1845
+ "danger"
1846
+ ]
1847
+ },
1848
+ size: {
1849
+ type: "string",
1850
+ enum: [
1851
+ "sm",
1852
+ "md",
1853
+ "lg"
1854
+ ]
1855
+ },
1856
+ emphasis: {
1857
+ type: "string",
1858
+ enum: [
1859
+ "low",
1860
+ "medium",
1861
+ "high"
1862
+ ]
1863
+ },
1864
+ align: {
1865
+ type: "string",
1866
+ enum: [
1867
+ "start",
1868
+ "center",
1869
+ "end"
1870
+ ]
1871
+ },
1872
+ density: {
1873
+ type: "string",
1874
+ enum: [
1875
+ "compact",
1876
+ "comfortable"
1877
+ ]
1878
+ },
1879
+ label: {
1880
+ type: "string"
1881
+ },
1882
+ placeholder: {
1883
+ type: "string"
1884
+ },
1885
+ rows: {
1886
+ type: "integer"
1887
+ }
1888
+ },
1889
+ required: [
1890
+ "component"
1891
+ ],
1892
+ unevaluatedProperties: false
1893
+ },
1894
+ NumberField: {
1895
+ type: "object",
1896
+ properties: {
1897
+ component: {
1898
+ const: "NumberField"
1899
+ },
1900
+ tone: {
1901
+ type: "string",
1902
+ enum: [
1903
+ "default",
1904
+ "muted",
1905
+ "primary",
1906
+ "success",
1907
+ "warning",
1908
+ "danger"
1909
+ ]
1910
+ },
1911
+ size: {
1912
+ type: "string",
1913
+ enum: [
1914
+ "sm",
1915
+ "md",
1916
+ "lg"
1917
+ ]
1918
+ },
1919
+ emphasis: {
1920
+ type: "string",
1921
+ enum: [
1922
+ "low",
1923
+ "medium",
1924
+ "high"
1925
+ ]
1926
+ },
1927
+ align: {
1928
+ type: "string",
1929
+ enum: [
1930
+ "start",
1931
+ "center",
1932
+ "end"
1933
+ ]
1934
+ },
1935
+ density: {
1936
+ type: "string",
1937
+ enum: [
1938
+ "compact",
1939
+ "comfortable"
1940
+ ]
1941
+ },
1942
+ label: {
1943
+ type: "string"
1944
+ },
1945
+ min: {
1946
+ type: "number"
1947
+ },
1948
+ max: {
1949
+ type: "number"
1950
+ },
1951
+ step: {
1952
+ type: "number"
1953
+ }
1954
+ },
1955
+ required: [
1956
+ "component"
1957
+ ],
1958
+ unevaluatedProperties: false
1959
+ },
1960
+ Select: {
1961
+ type: "object",
1962
+ properties: {
1963
+ component: {
1964
+ const: "Select"
1965
+ },
1966
+ tone: {
1967
+ type: "string",
1968
+ enum: [
1969
+ "default",
1970
+ "muted",
1971
+ "primary",
1972
+ "success",
1973
+ "warning",
1974
+ "danger"
1975
+ ]
1976
+ },
1977
+ size: {
1978
+ type: "string",
1979
+ enum: [
1980
+ "sm",
1981
+ "md",
1982
+ "lg"
1983
+ ]
1984
+ },
1985
+ emphasis: {
1986
+ type: "string",
1987
+ enum: [
1988
+ "low",
1989
+ "medium",
1990
+ "high"
1991
+ ]
1992
+ },
1993
+ align: {
1994
+ type: "string",
1995
+ enum: [
1996
+ "start",
1997
+ "center",
1998
+ "end"
1999
+ ]
2000
+ },
2001
+ density: {
2002
+ type: "string",
2003
+ enum: [
2004
+ "compact",
2005
+ "comfortable"
2006
+ ]
2007
+ },
2008
+ label: {
2009
+ type: "string"
2010
+ },
2011
+ placeholder: {
2012
+ type: "string"
2013
+ },
2014
+ options: {
2015
+ type: "array",
2016
+ items: {
2017
+ type: "object",
2018
+ properties: {
2019
+ label: {
2020
+ type: "string"
2021
+ },
2022
+ value: {
2023
+ type: [
2024
+ "string",
2025
+ "number"
2026
+ ]
2027
+ }
2028
+ },
2029
+ required: [
2030
+ "label",
2031
+ "value"
2032
+ ],
2033
+ additionalProperties: false
2034
+ },
2035
+ minItems: 1
2036
+ }
2037
+ },
2038
+ required: [
2039
+ "component",
2040
+ "options"
2041
+ ],
2042
+ unevaluatedProperties: false
2043
+ },
2044
+ MultiSelect: {
2045
+ type: "object",
2046
+ properties: {
2047
+ component: {
2048
+ const: "MultiSelect"
2049
+ },
2050
+ tone: {
2051
+ type: "string",
2052
+ enum: [
2053
+ "default",
2054
+ "muted",
2055
+ "primary",
2056
+ "success",
2057
+ "warning",
2058
+ "danger"
2059
+ ]
2060
+ },
2061
+ size: {
2062
+ type: "string",
2063
+ enum: [
2064
+ "sm",
2065
+ "md",
2066
+ "lg"
2067
+ ]
2068
+ },
2069
+ emphasis: {
2070
+ type: "string",
2071
+ enum: [
2072
+ "low",
2073
+ "medium",
2074
+ "high"
2075
+ ]
2076
+ },
2077
+ align: {
2078
+ type: "string",
2079
+ enum: [
2080
+ "start",
2081
+ "center",
2082
+ "end"
2083
+ ]
2084
+ },
2085
+ density: {
2086
+ type: "string",
2087
+ enum: [
2088
+ "compact",
2089
+ "comfortable"
2090
+ ]
2091
+ },
2092
+ label: {
2093
+ type: "string"
2094
+ },
2095
+ options: {
2096
+ type: "array",
2097
+ items: {
2098
+ type: "object",
2099
+ properties: {
2100
+ label: {
2101
+ type: "string"
2102
+ },
2103
+ value: {
2104
+ type: [
2105
+ "string",
2106
+ "number"
2107
+ ]
2108
+ }
2109
+ },
2110
+ required: [
2111
+ "label",
2112
+ "value"
2113
+ ],
2114
+ additionalProperties: false
2115
+ },
2116
+ minItems: 1
2117
+ }
2118
+ },
2119
+ required: [
2120
+ "component",
2121
+ "options"
2122
+ ],
2123
+ unevaluatedProperties: false
2124
+ },
2125
+ Combobox: {
2126
+ type: "object",
2127
+ properties: {
2128
+ component: {
2129
+ const: "Combobox"
2130
+ },
2131
+ tone: {
2132
+ type: "string",
2133
+ enum: [
2134
+ "default",
2135
+ "muted",
2136
+ "primary",
2137
+ "success",
2138
+ "warning",
2139
+ "danger"
2140
+ ]
2141
+ },
2142
+ size: {
2143
+ type: "string",
2144
+ enum: [
2145
+ "sm",
2146
+ "md",
2147
+ "lg"
2148
+ ]
2149
+ },
2150
+ emphasis: {
2151
+ type: "string",
2152
+ enum: [
2153
+ "low",
2154
+ "medium",
2155
+ "high"
2156
+ ]
2157
+ },
2158
+ align: {
2159
+ type: "string",
2160
+ enum: [
2161
+ "start",
2162
+ "center",
2163
+ "end"
2164
+ ]
2165
+ },
2166
+ density: {
2167
+ type: "string",
2168
+ enum: [
2169
+ "compact",
2170
+ "comfortable"
2171
+ ]
2172
+ },
2173
+ label: {
2174
+ type: "string"
2175
+ },
2176
+ placeholder: {
2177
+ type: "string"
2178
+ },
2179
+ options: {
2180
+ type: "array",
2181
+ items: {
2182
+ type: "object",
2183
+ properties: {
2184
+ label: {
2185
+ type: "string"
2186
+ },
2187
+ value: {
2188
+ type: [
2189
+ "string",
2190
+ "number"
2191
+ ]
2192
+ }
2193
+ },
2194
+ required: [
2195
+ "label",
2196
+ "value"
2197
+ ],
2198
+ additionalProperties: false
2199
+ },
2200
+ minItems: 1
2201
+ }
2202
+ },
2203
+ required: [
2204
+ "component",
2205
+ "options"
2206
+ ],
2207
+ unevaluatedProperties: false
2208
+ },
2209
+ Checkbox: {
2210
+ type: "object",
2211
+ properties: {
2212
+ component: {
2213
+ const: "Checkbox"
2214
+ },
2215
+ tone: {
2216
+ type: "string",
2217
+ enum: [
2218
+ "default",
2219
+ "muted",
2220
+ "primary",
2221
+ "success",
2222
+ "warning",
2223
+ "danger"
2224
+ ]
2225
+ },
2226
+ size: {
2227
+ type: "string",
2228
+ enum: [
2229
+ "sm",
2230
+ "md",
2231
+ "lg"
2232
+ ]
2233
+ },
2234
+ emphasis: {
2235
+ type: "string",
2236
+ enum: [
2237
+ "low",
2238
+ "medium",
2239
+ "high"
2240
+ ]
2241
+ },
2242
+ align: {
2243
+ type: "string",
2244
+ enum: [
2245
+ "start",
2246
+ "center",
2247
+ "end"
2248
+ ]
2249
+ },
2250
+ density: {
2251
+ type: "string",
2252
+ enum: [
2253
+ "compact",
2254
+ "comfortable"
2255
+ ]
2256
+ },
2257
+ label: {
2258
+ type: "string"
2259
+ }
2260
+ },
2261
+ required: [
2262
+ "component"
2263
+ ],
2264
+ unevaluatedProperties: false
2265
+ },
2266
+ CheckboxGroup: {
2267
+ type: "object",
2268
+ properties: {
2269
+ component: {
2270
+ const: "CheckboxGroup"
2271
+ },
2272
+ tone: {
2273
+ type: "string",
2274
+ enum: [
2275
+ "default",
2276
+ "muted",
2277
+ "primary",
2278
+ "success",
2279
+ "warning",
2280
+ "danger"
2281
+ ]
2282
+ },
2283
+ size: {
2284
+ type: "string",
2285
+ enum: [
2286
+ "sm",
2287
+ "md",
2288
+ "lg"
2289
+ ]
2290
+ },
2291
+ emphasis: {
2292
+ type: "string",
2293
+ enum: [
2294
+ "low",
2295
+ "medium",
2296
+ "high"
2297
+ ]
2298
+ },
2299
+ align: {
2300
+ type: "string",
2301
+ enum: [
2302
+ "start",
2303
+ "center",
2304
+ "end"
2305
+ ]
2306
+ },
2307
+ density: {
2308
+ type: "string",
2309
+ enum: [
2310
+ "compact",
2311
+ "comfortable"
2312
+ ]
2313
+ },
2314
+ label: {
2315
+ type: "string"
2316
+ },
2317
+ options: {
2318
+ type: "array",
2319
+ items: {
2320
+ type: "object",
2321
+ properties: {
2322
+ label: {
2323
+ type: "string"
2324
+ },
2325
+ value: {
2326
+ type: [
2327
+ "string",
2328
+ "number"
2329
+ ]
2330
+ }
2331
+ },
2332
+ required: [
2333
+ "label",
2334
+ "value"
2335
+ ],
2336
+ additionalProperties: false
2337
+ },
2338
+ minItems: 1
2339
+ }
2340
+ },
2341
+ required: [
2342
+ "component",
2343
+ "options"
2344
+ ],
2345
+ unevaluatedProperties: false
2346
+ },
2347
+ Radio: {
2348
+ type: "object",
2349
+ properties: {
2350
+ component: {
2351
+ const: "Radio"
2352
+ },
2353
+ tone: {
2354
+ type: "string",
2355
+ enum: [
2356
+ "default",
2357
+ "muted",
2358
+ "primary",
2359
+ "success",
2360
+ "warning",
2361
+ "danger"
2362
+ ]
2363
+ },
2364
+ size: {
2365
+ type: "string",
2366
+ enum: [
2367
+ "sm",
2368
+ "md",
2369
+ "lg"
2370
+ ]
2371
+ },
2372
+ emphasis: {
2373
+ type: "string",
2374
+ enum: [
2375
+ "low",
2376
+ "medium",
2377
+ "high"
2378
+ ]
2379
+ },
2380
+ align: {
2381
+ type: "string",
2382
+ enum: [
2383
+ "start",
2384
+ "center",
2385
+ "end"
2386
+ ]
2387
+ },
2388
+ density: {
2389
+ type: "string",
2390
+ enum: [
2391
+ "compact",
2392
+ "comfortable"
2393
+ ]
2394
+ },
2395
+ label: {
2396
+ type: "string"
2397
+ },
2398
+ options: {
2399
+ type: "array",
2400
+ items: {
2401
+ type: "object",
2402
+ properties: {
2403
+ label: {
2404
+ type: "string"
2405
+ },
2406
+ value: {
2407
+ type: [
2408
+ "string",
2409
+ "number"
2410
+ ]
2411
+ }
2412
+ },
2413
+ required: [
2414
+ "label",
2415
+ "value"
2416
+ ],
2417
+ additionalProperties: false
2418
+ },
2419
+ minItems: 1
2420
+ }
2421
+ },
2422
+ required: [
2423
+ "component",
2424
+ "options"
2425
+ ],
2426
+ unevaluatedProperties: false
2427
+ },
2428
+ Switch: {
2429
+ type: "object",
2430
+ properties: {
2431
+ component: {
2432
+ const: "Switch"
2433
+ },
2434
+ tone: {
2435
+ type: "string",
2436
+ enum: [
2437
+ "default",
2438
+ "muted",
2439
+ "primary",
2440
+ "success",
2441
+ "warning",
2442
+ "danger"
2443
+ ]
2444
+ },
2445
+ size: {
2446
+ type: "string",
2447
+ enum: [
2448
+ "sm",
2449
+ "md",
2450
+ "lg"
2451
+ ]
2452
+ },
2453
+ emphasis: {
2454
+ type: "string",
2455
+ enum: [
2456
+ "low",
2457
+ "medium",
2458
+ "high"
2459
+ ]
2460
+ },
2461
+ align: {
2462
+ type: "string",
2463
+ enum: [
2464
+ "start",
2465
+ "center",
2466
+ "end"
2467
+ ]
2468
+ },
2469
+ density: {
2470
+ type: "string",
2471
+ enum: [
2472
+ "compact",
2473
+ "comfortable"
2474
+ ]
2475
+ },
2476
+ label: {
2477
+ type: "string"
2478
+ }
2479
+ },
2480
+ required: [
2481
+ "component"
2482
+ ],
2483
+ unevaluatedProperties: false
2484
+ },
2485
+ Slider: {
2486
+ type: "object",
2487
+ properties: {
2488
+ component: {
2489
+ const: "Slider"
2490
+ },
2491
+ tone: {
2492
+ type: "string",
2493
+ enum: [
2494
+ "default",
2495
+ "muted",
2496
+ "primary",
2497
+ "success",
2498
+ "warning",
2499
+ "danger"
2500
+ ]
2501
+ },
2502
+ size: {
2503
+ type: "string",
2504
+ enum: [
2505
+ "sm",
2506
+ "md",
2507
+ "lg"
2508
+ ]
2509
+ },
2510
+ emphasis: {
2511
+ type: "string",
2512
+ enum: [
2513
+ "low",
2514
+ "medium",
2515
+ "high"
2516
+ ]
2517
+ },
2518
+ align: {
2519
+ type: "string",
2520
+ enum: [
2521
+ "start",
2522
+ "center",
2523
+ "end"
2524
+ ]
2525
+ },
2526
+ density: {
2527
+ type: "string",
2528
+ enum: [
2529
+ "compact",
2530
+ "comfortable"
2531
+ ]
2532
+ },
2533
+ label: {
2534
+ type: "string"
2535
+ },
2536
+ min: {
2537
+ type: "number"
2538
+ },
2539
+ max: {
2540
+ type: "number"
2541
+ },
2542
+ step: {
2543
+ type: "number"
2544
+ }
2545
+ },
2546
+ required: [
2547
+ "component"
2548
+ ],
2549
+ unevaluatedProperties: false
2550
+ },
2551
+ DatePicker: {
2552
+ type: "object",
2553
+ properties: {
2554
+ component: {
2555
+ const: "DatePicker"
2556
+ },
2557
+ tone: {
2558
+ type: "string",
2559
+ enum: [
2560
+ "default",
2561
+ "muted",
2562
+ "primary",
2563
+ "success",
2564
+ "warning",
2565
+ "danger"
2566
+ ]
2567
+ },
2568
+ size: {
2569
+ type: "string",
2570
+ enum: [
2571
+ "sm",
2572
+ "md",
2573
+ "lg"
2574
+ ]
2575
+ },
2576
+ emphasis: {
2577
+ type: "string",
2578
+ enum: [
2579
+ "low",
2580
+ "medium",
2581
+ "high"
2582
+ ]
2583
+ },
2584
+ align: {
2585
+ type: "string",
2586
+ enum: [
2587
+ "start",
2588
+ "center",
2589
+ "end"
2590
+ ]
2591
+ },
2592
+ density: {
2593
+ type: "string",
2594
+ enum: [
2595
+ "compact",
2596
+ "comfortable"
2597
+ ]
2598
+ },
2599
+ label: {
2600
+ type: "string"
2601
+ }
2602
+ },
2603
+ required: [
2604
+ "component"
2605
+ ],
2606
+ unevaluatedProperties: false
2607
+ },
2608
+ DateRange: {
2609
+ type: "object",
2610
+ properties: {
2611
+ component: {
2612
+ const: "DateRange"
2613
+ },
2614
+ tone: {
2615
+ type: "string",
2616
+ enum: [
2617
+ "default",
2618
+ "muted",
2619
+ "primary",
2620
+ "success",
2621
+ "warning",
2622
+ "danger"
2623
+ ]
2624
+ },
2625
+ size: {
2626
+ type: "string",
2627
+ enum: [
2628
+ "sm",
2629
+ "md",
2630
+ "lg"
2631
+ ]
2632
+ },
2633
+ emphasis: {
2634
+ type: "string",
2635
+ enum: [
2636
+ "low",
2637
+ "medium",
2638
+ "high"
2639
+ ]
2640
+ },
2641
+ align: {
2642
+ type: "string",
2643
+ enum: [
2644
+ "start",
2645
+ "center",
2646
+ "end"
2647
+ ]
2648
+ },
2649
+ density: {
2650
+ type: "string",
2651
+ enum: [
2652
+ "compact",
2653
+ "comfortable"
2654
+ ]
2655
+ },
2656
+ label: {
2657
+ type: "string"
2658
+ }
2659
+ },
2660
+ required: [
2661
+ "component"
2662
+ ],
2663
+ unevaluatedProperties: false
2664
+ },
2665
+ FileUpload: {
2666
+ type: "object",
2667
+ properties: {
2668
+ component: {
2669
+ const: "FileUpload"
2670
+ },
2671
+ tone: {
2672
+ type: "string",
2673
+ enum: [
2674
+ "default",
2675
+ "muted",
2676
+ "primary",
2677
+ "success",
2678
+ "warning",
2679
+ "danger"
2680
+ ]
2681
+ },
2682
+ size: {
2683
+ type: "string",
2684
+ enum: [
2685
+ "sm",
2686
+ "md",
2687
+ "lg"
2688
+ ]
2689
+ },
2690
+ emphasis: {
2691
+ type: "string",
2692
+ enum: [
2693
+ "low",
2694
+ "medium",
2695
+ "high"
2696
+ ]
2697
+ },
2698
+ align: {
2699
+ type: "string",
2700
+ enum: [
2701
+ "start",
2702
+ "center",
2703
+ "end"
2704
+ ]
2705
+ },
2706
+ density: {
2707
+ type: "string",
2708
+ enum: [
2709
+ "compact",
2710
+ "comfortable"
2711
+ ]
2712
+ },
2713
+ label: {
2714
+ type: "string"
2715
+ },
2716
+ accept: {
2717
+ type: "string"
2718
+ },
2719
+ multiple: {
2720
+ type: "boolean"
2721
+ }
2722
+ },
2723
+ required: [
2724
+ "component"
2725
+ ],
2726
+ unevaluatedProperties: false
2727
+ },
2728
+ Rating: {
2729
+ type: "object",
2730
+ properties: {
2731
+ component: {
2732
+ const: "Rating"
2733
+ },
2734
+ tone: {
2735
+ type: "string",
2736
+ enum: [
2737
+ "default",
2738
+ "muted",
2739
+ "primary",
2740
+ "success",
2741
+ "warning",
2742
+ "danger"
2743
+ ]
2744
+ },
2745
+ size: {
2746
+ type: "string",
2747
+ enum: [
2748
+ "sm",
2749
+ "md",
2750
+ "lg"
2751
+ ]
2752
+ },
2753
+ emphasis: {
2754
+ type: "string",
2755
+ enum: [
2756
+ "low",
2757
+ "medium",
2758
+ "high"
2759
+ ]
2760
+ },
2761
+ align: {
2762
+ type: "string",
2763
+ enum: [
2764
+ "start",
2765
+ "center",
2766
+ "end"
2767
+ ]
2768
+ },
2769
+ density: {
2770
+ type: "string",
2771
+ enum: [
2772
+ "compact",
2773
+ "comfortable"
2774
+ ]
2775
+ },
2776
+ label: {
2777
+ type: "string"
2778
+ },
2779
+ max: {
2780
+ type: "integer"
2781
+ }
2782
+ },
2783
+ required: [
2784
+ "component"
2785
+ ],
2786
+ unevaluatedProperties: false
2787
+ },
2788
+ Table: {
2789
+ type: "object",
2790
+ properties: {
2791
+ component: {
2792
+ const: "Table"
2793
+ },
2794
+ tone: {
2795
+ type: "string",
2796
+ enum: [
2797
+ "default",
2798
+ "muted",
2799
+ "primary",
2800
+ "success",
2801
+ "warning",
2802
+ "danger"
2803
+ ]
2804
+ },
2805
+ size: {
2806
+ type: "string",
2807
+ enum: [
2808
+ "sm",
2809
+ "md",
2810
+ "lg"
2811
+ ]
2812
+ },
2813
+ emphasis: {
2814
+ type: "string",
2815
+ enum: [
2816
+ "low",
2817
+ "medium",
2818
+ "high"
2819
+ ]
2820
+ },
2821
+ align: {
2822
+ type: "string",
2823
+ enum: [
2824
+ "start",
2825
+ "center",
2826
+ "end"
2827
+ ]
2828
+ },
2829
+ density: {
2830
+ type: "string",
2831
+ enum: [
2832
+ "compact",
2833
+ "comfortable"
2834
+ ]
2835
+ },
2836
+ columns: {
2837
+ type: "array",
2838
+ items: {
2839
+ type: "object",
2840
+ properties: {
2841
+ key: {
2842
+ type: "string"
2843
+ },
2844
+ header: {
2845
+ type: "string"
2846
+ }
2847
+ },
2848
+ required: [
2849
+ "key"
2850
+ ],
2851
+ additionalProperties: false
2852
+ },
2853
+ minItems: 1
2854
+ },
2855
+ sortable: {
2856
+ type: "boolean"
2857
+ }
2858
+ },
2859
+ required: [
2860
+ "component",
2861
+ "columns"
2862
+ ],
2863
+ unevaluatedProperties: false
2864
+ },
2865
+ Chart: {
2866
+ type: "object",
2867
+ properties: {
2868
+ component: {
2869
+ const: "Chart"
2870
+ },
2871
+ tone: {
2872
+ type: "string",
2873
+ enum: [
2874
+ "default",
2875
+ "muted",
2876
+ "primary",
2877
+ "success",
2878
+ "warning",
2879
+ "danger"
2880
+ ]
2881
+ },
2882
+ size: {
2883
+ type: "string",
2884
+ enum: [
2885
+ "sm",
2886
+ "md",
2887
+ "lg"
2888
+ ]
2889
+ },
2890
+ emphasis: {
2891
+ type: "string",
2892
+ enum: [
2893
+ "low",
2894
+ "medium",
2895
+ "high"
2896
+ ]
2897
+ },
2898
+ align: {
2899
+ type: "string",
2900
+ enum: [
2901
+ "start",
2902
+ "center",
2903
+ "end"
2904
+ ]
2905
+ },
2906
+ density: {
2907
+ type: "string",
2908
+ enum: [
2909
+ "compact",
2910
+ "comfortable"
2911
+ ]
2912
+ },
2913
+ kind: {
2914
+ type: "string",
2915
+ enum: [
2916
+ "bar",
2917
+ "line",
2918
+ "area",
2919
+ "pie"
2920
+ ]
2921
+ },
2922
+ x: {
2923
+ type: "string"
2924
+ },
2925
+ series: {
2926
+ type: "array",
2927
+ items: {
2928
+ type: "object",
2929
+ properties: {
2930
+ key: {
2931
+ type: "string"
2932
+ },
2933
+ label: {
2934
+ type: "string"
2935
+ }
2936
+ },
2937
+ required: [
2938
+ "key"
2939
+ ],
2940
+ additionalProperties: false
2941
+ },
2942
+ minItems: 1
2943
+ },
2944
+ title: {
2945
+ type: "string"
2946
+ }
2947
+ },
2948
+ required: [
2949
+ "component",
2950
+ "kind",
2951
+ "series"
2952
+ ],
2953
+ unevaluatedProperties: false
2954
+ },
2955
+ Progress: {
2956
+ type: "object",
2957
+ properties: {
2958
+ component: {
2959
+ const: "Progress"
2960
+ },
2961
+ tone: {
2962
+ type: "string",
2963
+ enum: [
2964
+ "default",
2965
+ "muted",
2966
+ "primary",
2967
+ "success",
2968
+ "warning",
2969
+ "danger"
2970
+ ]
2971
+ },
2972
+ size: {
2973
+ type: "string",
2974
+ enum: [
2975
+ "sm",
2976
+ "md",
2977
+ "lg"
2978
+ ]
2979
+ },
2980
+ emphasis: {
2981
+ type: "string",
2982
+ enum: [
2983
+ "low",
2984
+ "medium",
2985
+ "high"
2986
+ ]
2987
+ },
2988
+ align: {
2989
+ type: "string",
2990
+ enum: [
2991
+ "start",
2992
+ "center",
2993
+ "end"
2994
+ ]
2995
+ },
2996
+ density: {
2997
+ type: "string",
2998
+ enum: [
2999
+ "compact",
3000
+ "comfortable"
3001
+ ]
3002
+ },
3003
+ value: {
3004
+ type: "number"
3005
+ },
3006
+ max: {
3007
+ type: "number"
3008
+ },
3009
+ label: {
3010
+ type: "string"
3011
+ }
3012
+ },
3013
+ required: [
3014
+ "component",
3015
+ "value"
3016
+ ],
3017
+ unevaluatedProperties: false
3018
+ },
3019
+ Timeline: {
3020
+ type: "object",
3021
+ properties: {
3022
+ component: {
3023
+ const: "Timeline"
3024
+ },
3025
+ tone: {
3026
+ type: "string",
3027
+ enum: [
3028
+ "default",
3029
+ "muted",
3030
+ "primary",
3031
+ "success",
3032
+ "warning",
3033
+ "danger"
3034
+ ]
3035
+ },
3036
+ size: {
3037
+ type: "string",
3038
+ enum: [
3039
+ "sm",
3040
+ "md",
3041
+ "lg"
3042
+ ]
3043
+ },
3044
+ emphasis: {
3045
+ type: "string",
3046
+ enum: [
3047
+ "low",
3048
+ "medium",
3049
+ "high"
3050
+ ]
3051
+ },
3052
+ align: {
3053
+ type: "string",
3054
+ enum: [
3055
+ "start",
3056
+ "center",
3057
+ "end"
3058
+ ]
3059
+ },
3060
+ density: {
3061
+ type: "string",
3062
+ enum: [
3063
+ "compact",
3064
+ "comfortable"
3065
+ ]
3066
+ },
3067
+ items: {
3068
+ type: "array",
3069
+ items: {
3070
+ type: "object",
3071
+ properties: {
3072
+ title: {
3073
+ type: "string"
3074
+ },
3075
+ description: {
3076
+ type: "string"
3077
+ },
3078
+ timestamp: {
3079
+ type: "string"
3080
+ }
3081
+ },
3082
+ required: [
3083
+ "title"
3084
+ ],
3085
+ additionalProperties: false
3086
+ },
3087
+ minItems: 1
3088
+ }
3089
+ },
3090
+ required: [
3091
+ "component",
3092
+ "items"
3093
+ ],
3094
+ unevaluatedProperties: false
3095
+ },
3096
+ Button: {
3097
+ type: "object",
3098
+ properties: {
3099
+ component: {
3100
+ const: "Button"
3101
+ },
3102
+ tone: {
3103
+ type: "string",
3104
+ enum: [
3105
+ "default",
3106
+ "muted",
3107
+ "primary",
3108
+ "success",
3109
+ "warning",
3110
+ "danger"
3111
+ ]
3112
+ },
3113
+ size: {
3114
+ type: "string",
3115
+ enum: [
3116
+ "sm",
3117
+ "md",
3118
+ "lg"
3119
+ ]
3120
+ },
3121
+ emphasis: {
3122
+ type: "string",
3123
+ enum: [
3124
+ "low",
3125
+ "medium",
3126
+ "high"
3127
+ ]
3128
+ },
3129
+ align: {
3130
+ type: "string",
3131
+ enum: [
3132
+ "start",
3133
+ "center",
3134
+ "end"
3135
+ ]
3136
+ },
3137
+ density: {
3138
+ type: "string",
3139
+ enum: [
3140
+ "compact",
3141
+ "comfortable"
3142
+ ]
3143
+ },
3144
+ variant: {
3145
+ type: "string",
3146
+ enum: [
3147
+ "solid",
3148
+ "outline",
3149
+ "ghost",
3150
+ "link"
3151
+ ]
3152
+ },
3153
+ text: {
3154
+ type: "string"
3155
+ }
3156
+ },
3157
+ required: [
3158
+ "component",
3159
+ "text"
3160
+ ],
3161
+ unevaluatedProperties: false
3162
+ },
3163
+ ButtonGroup: {
3164
+ type: "object",
3165
+ properties: {
3166
+ component: {
3167
+ const: "ButtonGroup"
3168
+ },
3169
+ tone: {
3170
+ type: "string",
3171
+ enum: [
3172
+ "default",
3173
+ "muted",
3174
+ "primary",
3175
+ "success",
3176
+ "warning",
3177
+ "danger"
3178
+ ]
3179
+ },
3180
+ size: {
3181
+ type: "string",
3182
+ enum: [
3183
+ "sm",
3184
+ "md",
3185
+ "lg"
3186
+ ]
3187
+ },
3188
+ emphasis: {
3189
+ type: "string",
3190
+ enum: [
3191
+ "low",
3192
+ "medium",
3193
+ "high"
3194
+ ]
3195
+ },
3196
+ align: {
3197
+ type: "string",
3198
+ enum: [
3199
+ "start",
3200
+ "center",
3201
+ "end"
3202
+ ]
3203
+ },
3204
+ density: {
3205
+ type: "string",
3206
+ enum: [
3207
+ "compact",
3208
+ "comfortable"
3209
+ ]
3210
+ }
3211
+ },
3212
+ required: [
3213
+ "component"
3214
+ ],
3215
+ unevaluatedProperties: false
3216
+ },
3217
+ Link: {
3218
+ type: "object",
3219
+ properties: {
3220
+ component: {
3221
+ const: "Link"
3222
+ },
3223
+ tone: {
3224
+ type: "string",
3225
+ enum: [
3226
+ "default",
3227
+ "muted",
3228
+ "primary",
3229
+ "success",
3230
+ "warning",
3231
+ "danger"
3232
+ ]
3233
+ },
3234
+ size: {
3235
+ type: "string",
3236
+ enum: [
3237
+ "sm",
3238
+ "md",
3239
+ "lg"
3240
+ ]
3241
+ },
3242
+ emphasis: {
3243
+ type: "string",
3244
+ enum: [
3245
+ "low",
3246
+ "medium",
3247
+ "high"
3248
+ ]
3249
+ },
3250
+ align: {
3251
+ type: "string",
3252
+ enum: [
3253
+ "start",
3254
+ "center",
3255
+ "end"
3256
+ ]
3257
+ },
3258
+ density: {
3259
+ type: "string",
3260
+ enum: [
3261
+ "compact",
3262
+ "comfortable"
3263
+ ]
3264
+ },
3265
+ text: {
3266
+ type: "string"
3267
+ },
3268
+ href: {
3269
+ type: "string"
3270
+ }
3271
+ },
3272
+ required: [
3273
+ "component",
3274
+ "text"
3275
+ ],
3276
+ unevaluatedProperties: false
3277
+ }
3278
+ },
3279
+ $defs: {
3280
+ DynamicString: {
3281
+ description: "A literal string OR a data-model path reference { path }.",
3282
+ oneOf: [
3283
+ {
3284
+ type: "string"
3285
+ },
3286
+ {
3287
+ type: "object",
3288
+ properties: {
3289
+ path: {
3290
+ type: "string"
3291
+ }
3292
+ },
3293
+ required: [
3294
+ "path"
3295
+ ],
3296
+ additionalProperties: false
3297
+ }
3298
+ ]
3299
+ },
3300
+ Action: {
3301
+ description: "A semantic action (never a URL). wantResponse:true returns the data model to the agent.",
3302
+ type: "object",
3303
+ properties: {
3304
+ name: {
3305
+ type: "string"
3306
+ },
3307
+ wantResponse: {
3308
+ type: "boolean"
3309
+ }
3310
+ },
3311
+ required: [
3312
+ "name"
3313
+ ],
3314
+ additionalProperties: false
3315
+ }
3316
+ }
3317
+ };
3318
+ export {
3319
+ ALIGNS,
3320
+ CORE_CATALOG_ID,
3321
+ DENSITIES,
3322
+ DISMISS_ACTION,
3323
+ EMPHASES,
3324
+ SIZES,
3325
+ TONES,
3326
+ UNKNOWN_COMPONENT,
3327
+ assertSafeActionName,
3328
+ buildDismissResult,
3329
+ buildGenuiClause,
3330
+ buildRenderUiSchema,
3331
+ buildSurfaceResult,
3332
+ classifyAction,
3333
+ coreCatalog,
3334
+ core_v1_catalog_default as coreCatalogJson,
3335
+ emitA2uiCatalog,
3336
+ getPointer,
3337
+ isPathRef,
3338
+ resolveComponent,
3339
+ resolveDynamic,
3340
+ setPointer,
3341
+ styleSchemaShape,
3342
+ validateProps,
3343
+ validateSurface
3344
+ };
3345
+ //# sourceMappingURL=index.mjs.map