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