@burdenoff/fe-libs 2026.1027.2 → 2026.1027.4

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 (52) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +8 -5
  2. package/dist/chrome/MobileTabBar.d.ts +9 -2
  3. package/dist/chrome/MobileTabBar.js +51 -42
  4. package/dist/node_modules/@openuidev/devtools/dist/index.js +74 -0
  5. package/dist/node_modules/@openuidev/lang-core/dist/index.js +3779 -0
  6. package/dist/node_modules/@openuidev/lang-core/dist/shared-Dzgc28Wo.js +39 -0
  7. package/dist/node_modules/@openuidev/observability/dist/index.js +30 -0
  8. package/dist/node_modules/@openuidev/react-lang/dist/exports-CLfR509v.js +946 -0
  9. package/dist/node_modules/@openuidev/react-lang/dist/index.js +25 -0
  10. package/dist/node_modules/ci-info/index.js +34 -0
  11. package/dist/node_modules/ci-info/vendors.json.js +331 -0
  12. package/dist/node_modules/react-dom/cjs/react-dom-client.development.js +11168 -0
  13. package/dist/node_modules/react-dom/cjs/react-dom-client.production.js +7384 -0
  14. package/dist/node_modules/react-dom/client.js +19 -0
  15. package/dist/node_modules/scheduler/cjs/scheduler.development.js +203 -0
  16. package/dist/node_modules/scheduler/cjs/scheduler.production.js +203 -0
  17. package/dist/node_modules/scheduler/index.js +10 -0
  18. package/dist/node_modules/zod/v4/classic/errors.js +23 -0
  19. package/dist/node_modules/zod/v4/classic/iso.js +31 -0
  20. package/dist/node_modules/zod/v4/classic/parse.js +6 -0
  21. package/dist/node_modules/zod/v4/classic/schemas.js +339 -0
  22. package/dist/node_modules/zod/v4/core/api.js +491 -0
  23. package/dist/node_modules/zod/v4/core/checks.js +283 -0
  24. package/dist/node_modules/zod/v4/core/core.js +44 -0
  25. package/dist/node_modules/zod/v4/core/doc.js +23 -0
  26. package/dist/node_modules/zod/v4/core/errors.js +41 -0
  27. package/dist/node_modules/zod/v4/core/json-schema-processors.js +306 -0
  28. package/dist/node_modules/zod/v4/core/parse.js +68 -0
  29. package/dist/node_modules/zod/v4/core/regexes.js +25 -0
  30. package/dist/node_modules/zod/v4/core/registries.js +40 -0
  31. package/dist/node_modules/zod/v4/core/schemas.js +796 -0
  32. package/dist/node_modules/zod/v4/core/to-json-schema.js +222 -0
  33. package/dist/node_modules/zod/v4/core/util.js +266 -0
  34. package/dist/node_modules/zod/v4/core/versions.js +8 -0
  35. package/dist/shared/assistant/index.d.ts +4 -0
  36. package/dist/shared/assistant/openui/AssistantOpenUiBlock.d.ts +19 -0
  37. package/dist/shared/assistant/openui/AssistantOpenUiBlock.js +26 -0
  38. package/dist/shared/assistant/openui/AssistantRichContent.d.ts +13 -0
  39. package/dist/shared/assistant/openui/AssistantRichContent.js +37 -0
  40. package/dist/shared/assistant/openui/OpenUiBoundary.d.ts +26 -0
  41. package/dist/shared/assistant/openui/OpenUiBoundary.js +13 -0
  42. package/dist/shared/assistant/openui/generativeUi.d.ts +6 -0
  43. package/dist/shared/assistant/openui/generativeUi.js +12 -0
  44. package/dist/shared/assistant/openui/library.d.ts +2 -0
  45. package/dist/shared/assistant/openui/library.js +191 -0
  46. package/dist/shared/assistant/openui/limits.d.ts +12 -0
  47. package/dist/shared/assistant/openui/limits.js +7 -0
  48. package/dist/shared/assistant/openui/segments.d.ts +40 -0
  49. package/dist/shared/assistant/openui/segments.js +52 -0
  50. package/dist/shared/assistant/ui/AssistantMessageItem.js +115 -109
  51. package/dist/shared-assistant.js +108 -104
  52. package/package.json +2 -1
@@ -0,0 +1,3779 @@
1
+ import { __toESM as e } from "../../../../_virtual/_rolldown/runtime.js";
2
+ import { TELEMETRY_REQUEST_TIMEOUT_MS as t, getPostHogConfig as n, isRuntimeTelemetryEnabled as r, normalizeProjectIdentity as i } from "./shared-Dzgc28Wo.js";
3
+ import { clone as a, mergeDefs as o } from "../../../zod/v4/core/util.js";
4
+ import { globalRegistry as s, registry as c } from "../../../zod/v4/core/registries.js";
5
+ import { toJSONSchema as l } from "../../../zod/v4/core/json-schema-processors.js";
6
+ import { _enum as u, any as d, array as f, literal as p, number as m, object as h, record as g, string as _, union as v } from "../../../zod/v4/classic/schemas.js";
7
+ //#region node_modules/@openuidev/lang-core/dist/index.mjs
8
+ var ee = /* @__PURE__ */ new WeakSet();
9
+ function te(e) {
10
+ ee.add(e);
11
+ }
12
+ function y(e) {
13
+ return typeof e == "object" && !!e && ee.has(e);
14
+ }
15
+ var b = /* @__PURE__ */ new WeakMap();
16
+ function x(e, t) {
17
+ b.set(e, t);
18
+ }
19
+ var S = /* @__PURE__ */ new WeakMap();
20
+ function ne(e, t) {
21
+ return S.set(t, e), t;
22
+ }
23
+ function re(e, t) {
24
+ let n = b.get(e);
25
+ n && b.set(t, n);
26
+ let r = S.get(e);
27
+ r && S.set(t, r);
28
+ }
29
+ function ie(e, t) {
30
+ if (typeof e == "object" && e && "_def" in e && !("_zod" in e)) throw Error(`[OpenUI] Component "${t}" was defined with a Zod 3 schema. OpenUI requires Zod 4 schemas. If you're on zod@3.25+, import from "zod/v4" instead of "zod". See: https://zod.dev/v4/versioning`);
31
+ }
32
+ function C(e) {
33
+ return e?._zod?.def;
34
+ }
35
+ function ae(e) {
36
+ return C(e)?.type;
37
+ }
38
+ function oe(e) {
39
+ let t = ae(e);
40
+ return t === "optional" || t === "default" || t === "nullable";
41
+ }
42
+ function w(e) {
43
+ let t = e, n = C(t);
44
+ for (; n?.type === "optional" || n?.type === "default" || n?.type === "nullable";) t = n.innerType, n = C(t);
45
+ return t;
46
+ }
47
+ function se(e) {
48
+ return ae(w(e)) === "array";
49
+ }
50
+ function ce(e) {
51
+ let t = C(w(e));
52
+ if (t?.type === "array") return t.element ?? t.innerType;
53
+ }
54
+ function le(e) {
55
+ let t = C(w(e));
56
+ if (t?.type === "enum") {
57
+ if (Array.isArray(t.values)) return t.values;
58
+ if (t.entries && typeof t.entries == "object") return Object.keys(t.entries);
59
+ }
60
+ }
61
+ function ue(e, t) {
62
+ try {
63
+ let n = t?.get(e);
64
+ if (n?.id) return n.id;
65
+ } catch {}
66
+ if (typeof e == "object" && e) return b.get(e);
67
+ }
68
+ function T(e) {
69
+ let t = C(e);
70
+ if (t?.type === "union" && Array.isArray(t.options)) return t.options;
71
+ }
72
+ function de(e) {
73
+ let t = C(e);
74
+ if (t?.type === "object" && t.shape && typeof t.shape == "object") return t.shape;
75
+ }
76
+ function E(e, t) {
77
+ let n = y(e), r = fe(w(e), t);
78
+ if (r) return n ? `$binding<${r}>` : r;
79
+ }
80
+ function fe(e, t) {
81
+ let n = typeof e == "object" && !!e && S.get(e);
82
+ if (n) return `@${n}`;
83
+ let r = ue(e, t);
84
+ if (r) return r;
85
+ let i = T(e);
86
+ if (i) {
87
+ let e = i.map((e) => E(e, t)).filter(Boolean);
88
+ if (e.length > 0) return e.join(" | ");
89
+ }
90
+ if (se(e)) {
91
+ let n = ce(e);
92
+ if (!n) return;
93
+ let r = E(n, t);
94
+ return r ? T(w(n)) === void 0 ? `${r}[]` : `(${r})[]` : void 0;
95
+ }
96
+ let a = ae(e);
97
+ if (a === "string") return "string";
98
+ if (a === "number") return "number";
99
+ if (a === "boolean") return "boolean";
100
+ if (a === "any") return "any";
101
+ if (a === "record") {
102
+ let n = C(e);
103
+ return `Record<${E(n?.keyType, t) ?? "string"}, ${E(n?.valueType, t) ?? "any"}>`;
104
+ }
105
+ let o = le(e);
106
+ if (o) return o.map((e) => `"${e}"`).join(" | ");
107
+ if (a === "literal") {
108
+ let t = C(e)?.values;
109
+ if (Array.isArray(t) && t.length === 1) {
110
+ let e = t[0];
111
+ return typeof e == "string" ? `"${e}"` : String(e);
112
+ }
113
+ }
114
+ let s = de(e);
115
+ return s ? `{${Object.entries(s).map(([e, n]) => {
116
+ let r = oe(n) ? "?" : "", i = E(n, t);
117
+ return i ? `${e}${r}: ${i}` : `${e}${r}`;
118
+ }).join(", ")}}` : "any";
119
+ }
120
+ function pe(e, t) {
121
+ return Object.entries(e).map(([e, n]) => ({
122
+ name: e,
123
+ isOptional: oe(n),
124
+ isArray: se(n),
125
+ typeAnnotation: E(n, t)
126
+ }));
127
+ }
128
+ function me(e, t) {
129
+ return `${e}(${t.map((e) => e.typeAnnotation ? e.isOptional ? `${e.name}?: ${e.typeAnnotation}` : `${e.name}: ${e.typeAnnotation}` : e.isArray ? e.isOptional ? `[${e.name}]?` : `[${e.name}]` : e.isOptional ? `${e.name}?` : e.name).join(", ")})`;
130
+ }
131
+ function he(e, t, n, r) {
132
+ let i = me(e, pe(t._zod.def.shape, r)), a = n && E(n, r);
133
+ return a ? `${i} → ${a}` : i;
134
+ }
135
+ var D = (e) => {
136
+ throw Error(`[extend] ${e}`);
137
+ };
138
+ function ge(e, t) {
139
+ let n = _e(e, t.components), r = be(n, ye(n));
140
+ return {
141
+ ...e,
142
+ id: void 0,
143
+ components: Se(n, r),
144
+ componentGroups: Oe(e.componentGroups, n.removed),
145
+ functions: [...e.functions ?? [], ...t.functions?.add ?? []],
146
+ actions: [...e.actions ?? [], ...t.actions?.add ?? []]
147
+ };
148
+ }
149
+ function _e(e, t = {}) {
150
+ let n = new Map(e.components.map((e) => [e.name, e])), r = new Map(e.components.map((e) => [e.props, e.name])), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
151
+ n.set(e.name, e), r.set(e.props, e.name), a.add(e.name);
152
+ };
153
+ for (let e of t.add ?? []) {
154
+ let { component: t, slots: r } = "slots" in e ? e : {
155
+ component: e,
156
+ slots: void 0
157
+ }, a = t.name;
158
+ n.has(a) && D(`Component "${a}" already exists. Use override.`), r?.length === 0 && D(`"slots" for "${a}" is empty. Omit it to only list it.`), o(t), r && i.set(a, r);
159
+ }
160
+ let s = /* @__PURE__ */ new Set();
161
+ for (let e of t.override ?? []) n.has(e.name) || D(`Cannot override "${e.name}": not in the library. Use add.`), s.has(e.name) && D(`Component "${e.name}" is overridden twice.`), s.add(e.name), o(e);
162
+ let c = new Set(t.remove);
163
+ for (let t of c) a.has(t) && D(`Cannot remove "${t}": it is added or overridden in the same call.`), n.delete(t) || D(`Cannot remove "${t}": not in the library.`), t === e.root && D(`Cannot remove "${t}": it is the library root.`);
164
+ return {
165
+ byName: n,
166
+ nameOf: r,
167
+ slotRequests: i,
168
+ removed: c
169
+ };
170
+ }
171
+ function ve(e, t) {
172
+ let n = w(e), r = C(n);
173
+ return r?.type === "array" ? ve(r.element, t) : T(n)?.some((e) => t.has(e)) ? n : void 0;
174
+ }
175
+ function ye({ byName: e, nameOf: t }) {
176
+ let n = [];
177
+ for (let r of e.values()) for (let [e, i] of Object.entries(r.props.shape)) ve(i, t) && n.push(`${r.name}.${e}`);
178
+ return n;
179
+ }
180
+ function be(e, t) {
181
+ let n = /* @__PURE__ */ new Map();
182
+ for (let [r, i] of e.slotRequests) for (let a of i) {
183
+ let i = xe(a, r, t, e.byName), o = n.get(i) ?? [];
184
+ o.includes(r) || n.set(i, [...o, r]);
185
+ }
186
+ return n;
187
+ }
188
+ function xe(e, t, n, r) {
189
+ if (n.includes(e)) return e;
190
+ let i = e.split(".")[0], a = n.filter((e) => e.startsWith(`${i}.`));
191
+ if (!e.includes(".") && a.length === 1) return a[0];
192
+ let o = `Slot "${e}" for "${t}"`;
193
+ return r.has(i) || D(`${o}: "${i}" is not in the library.`), a.length || D(`${o}: "${i}" has no content slot (a prop that is a union of components, or an optional or array of one).`), D(`${o} must be one content slot. Candidates: ${a.join(", ")}.`);
194
+ }
195
+ function Se(e, t) {
196
+ let { byName: n, nameOf: r, removed: i } = e, a = new Map(n), o = /* @__PURE__ */ new Map();
197
+ for (let r of Ce(e, t)) {
198
+ let e = n.get(r), t = {}, i = De(e.props, { get shape() {
199
+ return t;
200
+ } });
201
+ a.set(r, {
202
+ ...e,
203
+ props: i,
204
+ ref: i
205
+ }), o.set(r, t);
206
+ }
207
+ let s = (e) => a.get(e).props, c = (e, t) => D(`Cannot remove "${e}": it is the only type allowed in ${t.path}.`), l = (e, t, n) => {
208
+ let a = r.get(e);
209
+ if (a !== void 0) return i.has(a) && c(a, t), s(a);
210
+ let o = C(e);
211
+ if (!o || o.type === "lazy") return e;
212
+ if (n.has(e)) return n.get(e);
213
+ n.set(e, e);
214
+ let u = (e) => l(e, t, n), d = {}, f = T(e), p = f?.some((e) => r.has(e));
215
+ for (let [e, t] of Object.entries(o)) {
216
+ if (e === "checks" || p && e === "options") continue;
217
+ let n = Te(e, t, u);
218
+ Ee(n, t) || (d[e] = n);
219
+ }
220
+ if (p) {
221
+ let n = f.filter((e) => !i.has(r.get(e) ?? "")).map(u), a = e === t.union ? t.added.filter((e) => !n.includes(e)) : [];
222
+ !n.length && !a.length && c(r.get(f[0]), t);
223
+ let o = [...n, ...a];
224
+ Ee(o, f) || (d.options = o);
225
+ }
226
+ let m = Object.keys(d).length ? De(e, d) : e;
227
+ return n.set(e, m), m;
228
+ };
229
+ for (let [e, i] of o) for (let [a, o] of Object.entries(n.get(e).props.shape)) {
230
+ let n = `${e}.${a}`, c = (t.get(n) ?? []).map(s);
231
+ i[a] = l(o, {
232
+ path: n,
233
+ union: ve(o, r),
234
+ added: c
235
+ }, /* @__PURE__ */ new Map());
236
+ }
237
+ return [...a.values()];
238
+ }
239
+ function Ce({ byName: e, nameOf: t, removed: n }, r) {
240
+ let i = /* @__PURE__ */ new Map();
241
+ for (let [n, r] of e) {
242
+ let e = /* @__PURE__ */ new Set();
243
+ for (let n of Object.values(r.props.shape)) we(n, t, e);
244
+ i.set(n, e);
245
+ }
246
+ let a = (r) => {
247
+ let i = t.get(r);
248
+ return n.has(i) || e.get(i).props !== r;
249
+ }, o = new Set([...r.keys()].map((e) => e.split(".")[0])), s = new Set([...e.keys()].filter((e) => o.has(e)));
250
+ for (let [e, t] of i) [...t].some(a) && s.add(e);
251
+ for (let e = !0; e;) {
252
+ e = !1;
253
+ for (let [n, r] of i) s.has(n) || ![...r].some((e) => s.has(t.get(e))) || (s.add(n), e = !0);
254
+ }
255
+ return s;
256
+ }
257
+ function we(e, t, n, r = /* @__PURE__ */ new Set()) {
258
+ if (t.has(e)) return void n.add(e);
259
+ let i = C(e);
260
+ if (!(!i || i.type === "lazy" || r.has(e))) {
261
+ r.add(e);
262
+ for (let [e, a] of Object.entries(i)) e !== "checks" && Te(e, a, (e) => we(e, t, n, r));
263
+ }
264
+ }
265
+ function Te(e, t, n) {
266
+ if (C(t)) return n(t);
267
+ if (Array.isArray(t)) return t.map(n);
268
+ if (e !== "shape") return t;
269
+ let r = {};
270
+ for (let [e, i] of Object.entries(t)) r[e] = n(i);
271
+ return r;
272
+ }
273
+ function Ee(e, t) {
274
+ if (e === t) return !0;
275
+ if (C(e)) return !1;
276
+ let n = Object.entries(e);
277
+ return n.length === Object.keys(t).length && n.every(([e, n]) => n === t[e]);
278
+ }
279
+ function De(e, t) {
280
+ let n = e, r = a(n, o(n._zod.def, t));
281
+ re(n, r), y(n) && te(r);
282
+ let i = s.get(n);
283
+ return i && s.add(r, i), r;
284
+ }
285
+ function Oe(e, t) {
286
+ return e?.map((e) => ({
287
+ ...e,
288
+ components: e.components.filter((e) => !t.has(e))
289
+ })).filter((e) => e.components.length);
290
+ }
291
+ function ke(e, t) {
292
+ if (ie(e, t), e?._zod?.def.type !== "object") throw Error(`[OpenUI] "${t}" params must be a z.object().`);
293
+ }
294
+ function O(e) {
295
+ return ke(e.params, e.name), e.returns && ie(e.returns, e.name), e;
296
+ }
297
+ function k(e) {
298
+ ke(e.params, e.name);
299
+ let t = h({
300
+ type: p(e.name),
301
+ params: e.params
302
+ });
303
+ return {
304
+ ...e,
305
+ ref: ne(e.name, t)
306
+ };
307
+ }
308
+ function Ae(e, t) {
309
+ if (!t || e == null) return;
310
+ if (!t.includes(".")) return e[t];
311
+ let n = e;
312
+ for (let e of t.split(".")) {
313
+ if (n == null) return;
314
+ n = n[e];
315
+ }
316
+ return n;
317
+ }
318
+ function A(e) {
319
+ if (typeof e == "number") return e;
320
+ if (typeof e == "string") {
321
+ let t = Number(e);
322
+ return isNaN(t) ? 0 : t;
323
+ }
324
+ return typeof e == "boolean" ? +!!e : 0;
325
+ }
326
+ var je = (e) => e.reduce((e, t) => e + A(t), 0), j = () => f(d()), M = () => h({ numbers: f(m()) }), Me = () => h({ number: m() }), Ne = [
327
+ O({
328
+ name: "Count",
329
+ description: "Returns array length",
330
+ params: h({ array: j() }),
331
+ returns: m(),
332
+ fn: ({ array: e }) => Array.isArray(e) ? e.length : 0
333
+ }),
334
+ O({
335
+ name: "First",
336
+ description: "Returns first element of array",
337
+ params: h({ array: j() }),
338
+ returns: d(),
339
+ fn: ({ array: e }) => Array.isArray(e) ? e[0] ?? null : null
340
+ }),
341
+ O({
342
+ name: "Last",
343
+ description: "Returns last element of array",
344
+ params: h({ array: j() }),
345
+ returns: d(),
346
+ fn: ({ array: e }) => Array.isArray(e) ? e[e.length - 1] ?? null : null
347
+ }),
348
+ O({
349
+ name: "Sum",
350
+ description: "Sum of numeric array",
351
+ params: M(),
352
+ returns: m(),
353
+ fn: ({ numbers: e }) => Array.isArray(e) ? je(e) : 0
354
+ }),
355
+ O({
356
+ name: "Avg",
357
+ description: "Average of numeric array",
358
+ params: M(),
359
+ returns: m(),
360
+ fn: ({ numbers: e }) => Array.isArray(e) && e.length ? je(e) / e.length : 0
361
+ }),
362
+ O({
363
+ name: "Min",
364
+ description: "Minimum value in array",
365
+ params: M(),
366
+ returns: m(),
367
+ fn: ({ numbers: e }) => Array.isArray(e) && e.length ? e.reduce((e, t) => Math.min(e, A(t)), A(e[0])) : 0
368
+ }),
369
+ O({
370
+ name: "Max",
371
+ description: "Maximum value in array",
372
+ params: M(),
373
+ returns: m(),
374
+ fn: ({ numbers: e }) => Array.isArray(e) && e.length ? e.reduce((e, t) => Math.max(e, A(t)), A(e[0])) : 0
375
+ }),
376
+ O({
377
+ name: "Sort",
378
+ description: "Sort array by field. Direction: \"asc\" (default) or \"desc\"",
379
+ params: h({
380
+ array: j(),
381
+ field: _(),
382
+ direction: u(["asc", "desc"]).optional()
383
+ }),
384
+ returns: j(),
385
+ fn: ({ array: e, field: t, direction: n }) => {
386
+ if (!Array.isArray(e)) return e;
387
+ let r = String(t ?? ""), i = String(n ?? "asc") === "desc";
388
+ return [...e].sort((e, t) => {
389
+ let n = r ? Ae(e, r) : e, a = r ? Ae(t, r) : t, o = typeof n == "number" || typeof n == "string" && !isNaN(Number(n)) && n !== "", s = typeof a == "number" || typeof a == "string" && !isNaN(Number(a)) && a !== "";
390
+ if (o && s) {
391
+ let e = A(n) - A(a);
392
+ return i ? -e : e;
393
+ }
394
+ let c = String(n ?? "").localeCompare(String(a ?? ""));
395
+ return i ? -c : c;
396
+ });
397
+ }
398
+ }),
399
+ O({
400
+ name: "Filter",
401
+ description: "Filter array by field value",
402
+ params: h({
403
+ array: j(),
404
+ field: _(),
405
+ operator: u([
406
+ "==",
407
+ "!=",
408
+ ">",
409
+ "<",
410
+ ">=",
411
+ "<=",
412
+ "contains"
413
+ ]),
414
+ value: d()
415
+ }),
416
+ returns: j(),
417
+ fn: ({ array: e, field: t, operator: n, value: r }) => {
418
+ if (!Array.isArray(e)) return [];
419
+ let i = String(t ?? ""), a = String(n ?? "==");
420
+ return e.filter((e) => {
421
+ let t = i ? Ae(e, i) : e;
422
+ switch (a) {
423
+ case "==": return t == r;
424
+ case "!=": return t != r;
425
+ case ">": return A(t) > A(r);
426
+ case "<": return A(t) < A(r);
427
+ case ">=": return A(t) >= A(r);
428
+ case "<=": return A(t) <= A(r);
429
+ case "contains": return String(t ?? "").includes(String(r ?? ""));
430
+ default: return !1;
431
+ }
432
+ });
433
+ }
434
+ }),
435
+ O({
436
+ name: "Round",
437
+ description: "Round to N decimal places (default 0)",
438
+ params: h({
439
+ number: m(),
440
+ decimals: m().optional()
441
+ }),
442
+ returns: m(),
443
+ fn: ({ number: e, decimals: t }) => {
444
+ let n = A(e), r = 10 ** (t == null ? 0 : A(t));
445
+ return Math.round(n * r) / r;
446
+ }
447
+ }),
448
+ O({
449
+ name: "Abs",
450
+ description: "Absolute value",
451
+ params: Me(),
452
+ returns: m(),
453
+ fn: ({ number: e }) => Math.abs(A(e))
454
+ }),
455
+ O({
456
+ name: "Floor",
457
+ description: "Round down to nearest integer",
458
+ params: Me(),
459
+ returns: m(),
460
+ fn: ({ number: e }) => Math.floor(A(e))
461
+ }),
462
+ O({
463
+ name: "Ceil",
464
+ description: "Round up to nearest integer",
465
+ params: Me(),
466
+ returns: m(),
467
+ fn: ({ number: e }) => Math.ceil(A(e))
468
+ }),
469
+ {
470
+ name: "Each",
471
+ description: "Evaluate template for each element. varName is the loop variable — use it ONLY inside the template expression (inline). Do NOT create a separate statement for the template.",
472
+ params: h({
473
+ array: j(),
474
+ varName: _(),
475
+ template: d()
476
+ }),
477
+ lazy: !0
478
+ }
479
+ ], Pe = Object.fromEntries(Ne.map((e) => [e.name, e])), N = {
480
+ Run: "run",
481
+ ToAssistant: "continue_conversation",
482
+ OpenUrl: "open_url",
483
+ Set: "set",
484
+ Reset: "reset"
485
+ };
486
+ function Fe(e) {
487
+ let t = d();
488
+ return x(t, e), t;
489
+ }
490
+ var Ie = () => h({
491
+ type: p("open_url"),
492
+ url: _()
493
+ }), Le = () => h({
494
+ type: p("continue_conversation"),
495
+ context: _().optional()
496
+ }), Re = v([
497
+ Ie(),
498
+ Le(),
499
+ h({
500
+ type: _(),
501
+ params: g(_(), d()).optional()
502
+ })
503
+ ]);
504
+ x(Re, "ActionExpression");
505
+ function ze() {
506
+ return Re;
507
+ }
508
+ var P = {
509
+ OpenUrl: { ref: ne("OpenUrl", Ie()) },
510
+ ToAssistant: { ref: ne("ToAssistant", Le()) }
511
+ }, Be = {
512
+ ActionExpression: Re,
513
+ OpenUrl: P.OpenUrl.ref,
514
+ ToAssistant: P.ToAssistant.ref
515
+ }, Ve = [
516
+ {
517
+ ...k({
518
+ name: "Run",
519
+ description: "Execute a Mutation or re-fetch a Query (ref must be a declared Query/Mutation)",
520
+ params: h({ ref: Fe("Query | Mutation") })
521
+ }),
522
+ lazy: !0
523
+ },
524
+ {
525
+ ...k({
526
+ name: "ToAssistant",
527
+ description: "Send a message to the assistant (for conversational buttons like \"Tell me more\", \"Explain this\"). The optional context is any value (object, array, string, number) passed to the assistant as hidden data, e.g. @ToAssistant(\"Show details\", {orderId: 42})",
528
+ params: h({
529
+ message: _(),
530
+ context: d().optional()
531
+ })
532
+ }),
533
+ ref: P.ToAssistant.ref,
534
+ step: ({ message: e, context: t }) => ({
535
+ type: N.ToAssistant,
536
+ message: String(e ?? ""),
537
+ context: t ?? void 0
538
+ })
539
+ },
540
+ {
541
+ ...k({
542
+ name: "OpenUrl",
543
+ description: "Navigate to a URL",
544
+ params: h({ url: _() })
545
+ }),
546
+ ref: P.OpenUrl.ref,
547
+ step: ({ url: e }) => ({
548
+ type: N.OpenUrl,
549
+ url: String(e ?? "")
550
+ })
551
+ },
552
+ {
553
+ ...k({
554
+ name: "Set",
555
+ description: "Set a $variable to a specific value",
556
+ params: h({
557
+ variable: Fe("$variable"),
558
+ value: d()
559
+ })
560
+ }),
561
+ lazy: !0
562
+ },
563
+ {
564
+ ...k({
565
+ name: "Reset",
566
+ description: "Reset $variables to their declared defaults; pass several to reset each (e.g. @Reset($title, $priority) restores $title=\"\" and $priority=\"medium\")",
567
+ params: h({ variable: Fe("$variable") })
568
+ }),
569
+ lazy: !0
570
+ }
571
+ ], He = Object.fromEntries(Ve.map((e) => [e.name, e])), Ue = (e, t) => ({
572
+ kind: e,
573
+ params: Object.keys(t.params.shape).map((e) => ({
574
+ name: e,
575
+ required: !1
576
+ })),
577
+ builtin: !0,
578
+ ...t.lazy ? { lazy: !0 } : {}
579
+ }), F = new Map([
580
+ ...Ne.map((e) => [e.name, Ue("function", e)]),
581
+ ...Ve.map((e) => [e.name, Ue("action", e)]),
582
+ ["Action", {
583
+ kind: "action",
584
+ params: [{
585
+ name: "steps",
586
+ required: !0
587
+ }],
588
+ builtin: !0,
589
+ lazy: !0
590
+ }]
591
+ ]);
592
+ function I(e) {
593
+ return e?.callDefs ?? F;
594
+ }
595
+ function L(e) {
596
+ return F.has(e);
597
+ }
598
+ function We(e, t) {
599
+ return F.get(e)?.kind === "action" || !!t && Object.prototype.hasOwnProperty.call(t, e);
600
+ }
601
+ var R = {
602
+ Query: "Query",
603
+ Mutation: "Mutation"
604
+ };
605
+ function z(e) {
606
+ return e in R;
607
+ }
608
+ var Ge = "lang_core_system_prompt_generation_used", Ke = "lang_core_parser_parse_used", qe = .1, Je = .1, Ye = "1.0.1", Xe = Symbol.for("@openuidev/lang-core/telemetry/v1");
609
+ function Ze(e) {
610
+ let t = (e.tools?.length ?? 0) > 0, n = e.toolCalls ?? t, r = e.bindings ?? n, i = Object.entries(e.components).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => ({
611
+ name: e,
612
+ signature: t.signature,
613
+ description: t.description ?? null
614
+ })), a = (e.componentGroups ?? []).map((e) => ({
615
+ name: e.name,
616
+ components: [...e.components].sort(),
617
+ notes: [...e.notes ?? []]
618
+ })).sort((e, t) => e.name.localeCompare(t.name));
619
+ return {
620
+ root: e.root ?? "Root",
621
+ components: i,
622
+ componentGroups: a,
623
+ modes: {
624
+ toolCalls: n,
625
+ bindings: r,
626
+ editMode: e.editMode === !0,
627
+ inlineMode: e.inlineMode === !0
628
+ }
629
+ };
630
+ }
631
+ async function Qe(e) {
632
+ let t = globalThis.crypto?.subtle;
633
+ if (!t) throw Error("Web Crypto is unavailable");
634
+ let n = new TextEncoder().encode(e), r = await t.digest("SHA-256", n);
635
+ return Array.from(new Uint8Array(r), (e) => e.toString(16).padStart(2, "0")).join("");
636
+ }
637
+ function $e(e) {
638
+ return Qe(JSON.stringify(Ze(e)));
639
+ }
640
+ function et() {
641
+ let e = globalThis.process;
642
+ if (!(!e || typeof e != "object")) return e;
643
+ }
644
+ function tt() {
645
+ let e = globalThis;
646
+ return e.navigator?.product === "ReactNative" || !!(e.window && e.document);
647
+ }
648
+ function nt() {
649
+ let e = globalThis.WorkerGlobalScope;
650
+ return !!(e && e.prototype.isPrototypeOf(globalThis));
651
+ }
652
+ function rt() {
653
+ if (tt()) return;
654
+ let e = globalThis, t = et();
655
+ if (e.Bun && typeof e.Bun == "object") return {
656
+ name: "bun",
657
+ version: e.Bun.version,
658
+ env: t?.env,
659
+ process: t
660
+ };
661
+ if (e.Deno && typeof e.Deno == "object") return {
662
+ name: "deno",
663
+ version: e.Deno.version?.deno
664
+ };
665
+ if (typeof e.EdgeRuntime == "string") return {
666
+ name: "edge",
667
+ version: e.EdgeRuntime
668
+ };
669
+ if (typeof e.WebSocketPair == "function") return { name: "edge" };
670
+ if (!nt() && (t?.release?.name === "node" || typeof t?.versions?.node == "string" && t.versions.node.length > 0)) return {
671
+ name: "node",
672
+ version: t.versions?.node,
673
+ env: t.env,
674
+ process: t
675
+ };
676
+ }
677
+ function it(e) {
678
+ let t = e?.NODE_ENV;
679
+ return t === "production" || t === "development" || t === "test" ? t : "unknown";
680
+ }
681
+ function at() {
682
+ let e = globalThis;
683
+ return e[Xe] ??= { runtimeId: globalThis.crypto.randomUUID() }, e[Xe];
684
+ }
685
+ function ot(e) {
686
+ let t = e.getBuiltinModule?.("node:child_process")?.execFile;
687
+ return t ? new Promise((e) => {
688
+ try {
689
+ t("git", [
690
+ "config",
691
+ "--local",
692
+ "--get",
693
+ "remote.origin.url"
694
+ ], {
695
+ encoding: "utf8",
696
+ timeout: 1e3,
697
+ windowsHide: !0
698
+ }, (t, n) => {
699
+ let r = n?.trim();
700
+ e(t || !r ? void 0 : r);
701
+ });
702
+ } catch {
703
+ e(void 0);
704
+ }
705
+ }) : Promise.resolve(void 0);
706
+ }
707
+ async function st(e) {
708
+ if (!e) return;
709
+ let t = await ot(e) || e.env?.REPOSITORY_URL || e.cwd?.();
710
+ return t && i(t) || void 0;
711
+ }
712
+ function ct(e) {
713
+ let t = i(e);
714
+ return t ? Qe(t) : Promise.reject(/* @__PURE__ */ TypeError("Repository identifier is empty"));
715
+ }
716
+ function lt(e, t) {
717
+ return t.name === "node" ? (e.projectHash ??= Promise.resolve().then(() => st(t.process)).then((e) => e ? ct(e) : void 0).catch(() => void 0), e.projectHash) : Promise.resolve(void 0);
718
+ }
719
+ async function ut(t) {
720
+ if (!t.env) return {
721
+ id: null,
722
+ isCI: !1
723
+ };
724
+ try {
725
+ let t = await import("../../../ci-info/index.js").then((t) => /* @__PURE__ */ e(t.default, 1));
726
+ return {
727
+ id: t.id,
728
+ isCI: t.isCI
729
+ };
730
+ } catch {
731
+ return {
732
+ id: null,
733
+ isCI: !1
734
+ };
735
+ }
736
+ }
737
+ async function dt(e, r, i) {
738
+ let a = n(i.env);
739
+ await globalThis.fetch(a.captureUrl, {
740
+ method: "POST",
741
+ headers: { "content-type": "application/json" },
742
+ body: JSON.stringify({
743
+ api_key: a.apiKey,
744
+ event: e,
745
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
746
+ properties: r
747
+ }),
748
+ keepalive: !0,
749
+ signal: globalThis.AbortSignal.timeout(t)
750
+ });
751
+ }
752
+ async function ft(e, t, n, r, i, a) {
753
+ let [o, s, c] = await Promise.all([
754
+ n,
755
+ lt(e, i),
756
+ ut(i)
757
+ ]);
758
+ await dt(Ge, {
759
+ distinct_id: e.runtimeId,
760
+ $process_person_profile: !1,
761
+ event_id: globalThis.crypto.randomUUID(),
762
+ telemetry_schema_version: 1,
763
+ system_prompt_config_hash_version: 1,
764
+ system_prompt_config_hash: o,
765
+ component_count: Object.keys(t.components).length,
766
+ tool_count: t.tools?.length ?? 0,
767
+ sdk_name: "@openuidev/lang-core",
768
+ sdk_version: Ye,
769
+ api_surface: "generate_system_prompt",
770
+ input_shape: r,
771
+ runtime: i.name,
772
+ runtime_version: i.version,
773
+ environment: a,
774
+ ci: c.isCI,
775
+ ...c.id ? { ci_name: c.id } : {},
776
+ sample_rate: qe,
777
+ ...s ? {
778
+ project_hash_version: 1,
779
+ project_hash: s
780
+ } : {}
781
+ }, i);
782
+ }
783
+ function pt(e, t) {
784
+ try {
785
+ let n = rt();
786
+ if (!n || typeof globalThis.fetch != "function" || !globalThis.crypto?.subtle || typeof globalThis.crypto.randomUUID != "function" || typeof globalThis.AbortSignal?.timeout != "function") return;
787
+ let i = n.env, a = it(i);
788
+ if (!r(i) || Math.random() >= qe) return;
789
+ let o = at(), s = $e(e);
790
+ Promise.resolve().then(() => ft(o, e, s, t, n, a)).catch(() => void 0);
791
+ } catch {}
792
+ }
793
+ function mt(e) {
794
+ let t = {
795
+ "unknown-component": 0,
796
+ "missing-required": 0,
797
+ "null-required": 0,
798
+ "inline-reserved": 0,
799
+ "excess-args": 0,
800
+ "type-mismatch": 0,
801
+ "unknown-function": 0,
802
+ "no-root": 0
803
+ };
804
+ for (let n of e.meta.errors) t[n.code] += 1;
805
+ return {
806
+ unknown_component_count: t["unknown-component"],
807
+ missing_required_count: t["missing-required"],
808
+ null_required_count: t["null-required"],
809
+ inline_reserved_count: t["inline-reserved"],
810
+ excess_args_count: t["excess-args"]
811
+ };
812
+ }
813
+ function ht(e) {
814
+ return {
815
+ outcome: e.meta.errors.length > 0 ? "invalid" : e.root ? "valid" : "no_renderable_root",
816
+ incomplete: e.meta.incomplete,
817
+ has_renderable_root: e.root !== null,
818
+ statement_count: e.meta.statementCount,
819
+ unresolved_count: e.meta.unresolved.length,
820
+ orphaned_count: e.meta.orphaned.length,
821
+ validation_error_count: e.meta.errors.length,
822
+ ...mt(e)
823
+ };
824
+ }
825
+ async function gt(e, t) {
826
+ let { state: n, runtime: r, environment: i } = e, [a, o] = await Promise.all([lt(n, r), ut(r)]);
827
+ await dt(Ke, {
828
+ distinct_id: n.runtimeId,
829
+ $process_person_profile: !1,
830
+ event_id: globalThis.crypto.randomUUID(),
831
+ telemetry_schema_version: 1,
832
+ sdk_name: "@openuidev/lang-core",
833
+ sdk_version: Ye,
834
+ api_surface: "parser.parse",
835
+ runtime: r.name,
836
+ runtime_version: r.version,
837
+ environment: i,
838
+ ci: o.isCI,
839
+ ...o.id ? { ci_name: o.id } : {},
840
+ sample_rate: Je,
841
+ ...t,
842
+ ...a ? {
843
+ project_hash_version: 1,
844
+ project_hash: a
845
+ } : {}
846
+ }, r);
847
+ }
848
+ function _t() {
849
+ try {
850
+ let e = rt();
851
+ if (!e || typeof globalThis.fetch != "function" || typeof globalThis.crypto?.randomUUID != "function" || typeof globalThis.AbortSignal?.timeout != "function") return;
852
+ let t = e.env;
853
+ return !r(t) || Math.random() >= Je ? void 0 : {
854
+ state: at(),
855
+ runtime: e,
856
+ environment: it(t)
857
+ };
858
+ } catch {
859
+ return;
860
+ }
861
+ }
862
+ function vt(e, t) {
863
+ if (e) try {
864
+ let n = ht(t);
865
+ Promise.resolve().then(() => gt(e, n)).catch(() => void 0);
866
+ } catch {}
867
+ }
868
+ function yt(e) {
869
+ if (e) try {
870
+ Promise.resolve().then(() => gt(e, { outcome: "threw" })).catch(() => void 0);
871
+ } catch {}
872
+ }
873
+ var bt = /^#\/\$defs\/(.+)$/;
874
+ function B(e) {
875
+ return typeof e == "object" && !!e && !Array.isArray(e);
876
+ }
877
+ function xt(e, t, n, r) {
878
+ if (Array.isArray(e)) {
879
+ e.forEach((e, i) => xt(e, `${t}/${i}`, n, r));
880
+ return;
881
+ }
882
+ if (!B(e)) return;
883
+ let i = e.$ref;
884
+ if (typeof i == "string") {
885
+ let e = bt.exec(i);
886
+ (!e || !n.has(e[1])) && r.push({
887
+ code: "unresolved-ref",
888
+ message: `Unresolvable $ref "${i}" at ${t} — refs must be "#/$defs/<name>" pointing at a component in $defs.`,
889
+ path: t
890
+ });
891
+ }
892
+ for (let [i, a] of Object.entries(e)) i !== "$ref" && xt(a, `${t}/${i}`, n, r);
893
+ }
894
+ function St(e) {
895
+ let t = [];
896
+ if (!B(e)) return [{
897
+ code: "invalid-shape",
898
+ message: "chatLibrary must be an object."
899
+ }];
900
+ let { root: n, schema: r, componentGroups: i } = e;
901
+ if (n !== void 0 && (typeof n != "string" || n.length === 0) && t.push({
902
+ code: "invalid-shape",
903
+ message: "chatLibrary.root, when present, must be a non-empty string.",
904
+ path: "root"
905
+ }), !B(r)) return t.push({
906
+ code: "invalid-shape",
907
+ message: "chatLibrary.schema must be an object with a $defs map of component schemas.",
908
+ path: "schema"
909
+ }), t;
910
+ let a = r.$defs;
911
+ if (!B(a) || Object.keys(a).length === 0) return t.push({
912
+ code: "invalid-shape",
913
+ message: "chatLibrary.schema.$defs must be a non-empty object keyed by component name.",
914
+ path: "schema/$defs"
915
+ }), t;
916
+ let o = new Set(Object.keys(a));
917
+ typeof n == "string" && n.length > 0 && !o.has(n) && t.push({
918
+ code: "root-not-found",
919
+ message: `Root component "${n}" was not found in schema.$defs. Available components: ${[...o].join(", ")}.`,
920
+ path: "root"
921
+ });
922
+ for (let [e, n] of Object.entries(a)) {
923
+ let r = `$defs/${e}`;
924
+ if (!B(n)) {
925
+ t.push({
926
+ code: "invalid-shape",
927
+ message: `${r} must be an object component schema.`,
928
+ path: r
929
+ });
930
+ continue;
931
+ }
932
+ let i = n.properties;
933
+ i !== void 0 && !B(i) && t.push({
934
+ code: "invalid-shape",
935
+ message: `${r}/properties must be an object.`,
936
+ path: `${r}/properties`
937
+ });
938
+ let a = n.required;
939
+ if (a !== void 0) if (!Array.isArray(a) || a.some((e) => typeof e != "string")) t.push({
940
+ code: "invalid-required",
941
+ message: `${r}/required must be an array of property names.`,
942
+ path: `${r}/required`
943
+ });
944
+ else {
945
+ let e = new Set(B(i) ? Object.keys(i) : []);
946
+ for (let n of a) e.has(n) || t.push({
947
+ code: "invalid-required",
948
+ message: `${r} lists required property "${n}" that is not in properties.`,
949
+ path: `${r}/required`
950
+ });
951
+ }
952
+ xt(i, `${r}/properties`, o, t);
953
+ }
954
+ for (let e of i ?? []) {
955
+ if (!B(e) || typeof e.name != "string" || !Array.isArray(e.components)) {
956
+ t.push({
957
+ code: "invalid-shape",
958
+ message: "Each componentGroups entry must be {name: string, components: string[], notes?: string[]}.",
959
+ path: "componentGroups"
960
+ });
961
+ continue;
962
+ }
963
+ for (let n of e.components) (typeof n != "string" || !o.has(n)) && t.push({
964
+ code: "unknown-group-component",
965
+ message: `Component group "${e.name}" references unknown component "${String(n)}".`,
966
+ path: "componentGroups"
967
+ });
968
+ }
969
+ return t;
970
+ }
971
+ var Ct = "]]>openui:config\n", wt = "0.1.0";
972
+ function Tt(e) {
973
+ if (!e) return;
974
+ let t = {};
975
+ return e.examples && (t.examples = e.examples), e.preamble && (t.preamble = e.preamble), e.additionalRules && (t.additionalRules = e.additionalRules), Object.keys(t).length > 0 ? t : void 0;
976
+ }
977
+ function Et(e) {
978
+ let t;
979
+ if (e.library) {
980
+ let n = St(e.library);
981
+ if (n.length > 0) throw Error(`[generateSystemPrompt] Invalid library: ${n.map((e) => e.message).join(" ")}`);
982
+ let { components: r, ...i } = e.library, a = Tt(e.promptOptions);
983
+ t = {
984
+ chatLibrary: i,
985
+ ...a ? { systemPromptOptions: a } : {}
986
+ };
987
+ } else {
988
+ if (e.promptOptions && Tt(e.promptOptions)) throw Error("[generateSystemPrompt] promptOptions requires a library — the built-in library ignores it.");
989
+ t = { libraryVersion: wt };
990
+ }
991
+ let n = `${Ct}${JSON.stringify(t)}`;
992
+ return e.instructions ? `${n}\n${e.instructions}` : n;
993
+ }
994
+ function Dt(e) {
995
+ let t = e.type;
996
+ if (t === "string") {
997
+ let t = e.enum;
998
+ return t ? t.map((e) => `"${e}"`).join(" | ") : "string";
999
+ }
1000
+ if (t === "number" || t === "integer") return "number";
1001
+ if (t === "boolean") return "boolean";
1002
+ if (t === "array") {
1003
+ let t = e.items;
1004
+ return t ? `${Dt(t)}[]` : "any[]";
1005
+ }
1006
+ if (t === "object") {
1007
+ let t = e.properties;
1008
+ if (t && Object.keys(t).length > 0) {
1009
+ let n = e.required ?? [];
1010
+ return `{${Object.entries(t).map(([e, t]) => `${e}${n.includes(e) ? "" : "?"}: ${Dt(t)}`).join(", ")}}`;
1011
+ }
1012
+ return "object";
1013
+ }
1014
+ return "any";
1015
+ }
1016
+ function Ot(e) {
1017
+ let t = e.type;
1018
+ if (t === "string") return "";
1019
+ if (t === "number" || t === "integer") return 0;
1020
+ if (t === "boolean") return !1;
1021
+ if (t === "array") return [];
1022
+ if (t === "object") {
1023
+ let t = e.properties;
1024
+ if (t && Object.keys(t).length > 0) {
1025
+ let e = {};
1026
+ for (let [n, r] of Object.entries(t)) e[n] = Ot(r);
1027
+ return e;
1028
+ }
1029
+ return {};
1030
+ }
1031
+ return null;
1032
+ }
1033
+ var kt = "You are an AI assistant that responds using openui-lang, a declarative UI language. Your ENTIRE response must be valid openui-lang code — no markdown, no explanations, just openui-lang.";
1034
+ function At(e, t) {
1035
+ let n = [
1036
+ "## Syntax Rules",
1037
+ "",
1038
+ "1. Each statement is on its own line: `identifier = Expression`",
1039
+ `2. \`root\` is the entry point — every program must define \`root = ${e}(...)\``,
1040
+ "3. Expressions are: strings (\"...\"), numbers, booleans (true/false), null, arrays ([...]), objects ({...}), or component calls TypeName(arg1, arg2, ...)",
1041
+ "4. Use references for readability: define `name = ...` on one line, then use `name` later",
1042
+ "5. EVERY variable (except root) MUST be referenced by at least one other variable. Unreferenced variables are silently dropped and will NOT render. Always include defined variables in their parent's children/items array.",
1043
+ "6. Arguments are POSITIONAL (order matters, not names). Write `SomeComp([children], \"row\", \"l\")` NOT `SomeComp([children], direction: \"row\", gap: \"l\")` — colon syntax is NOT supported and silently breaks",
1044
+ "7. Optional arguments can be omitted from the end"
1045
+ ], r = 8;
1046
+ return t.bindings && n.push(`${r++}. Declare mutable state with \`$varName = defaultValue\`. Components marked with \`$binding\` can read/write these. Undeclared $variables are auto-created with null default.`), t.supportsExpressions && n.push(`${r++}. String concatenation: \`"text" + $var + "more"\``, `${r++}. Dot member access: \`query.field\` reads a field; on arrays it extracts that field from every element`, `${r++}. Index access: \`arr[0]\`, \`data[index]\``, `${r++}. Arithmetic operators: +, -, *, /, % (work on numbers; + is string concat when either side is a string)`, `${r++}. Comparison: ==, !=, >, <, >=, <=`, `${r++}. Logical: &&, ||, ! (prefix)`, `${r++}. Ternary: \`condition ? valueIfTrue : valueIfFalse\``, `${r++}. Parentheses for grouping: \`(a + b) * c\``), n.push("- Strings use double quotes with backslash escaping"), n.join("\n");
1047
+ }
1048
+ function V(e) {
1049
+ return e.description ? `@${e.signature} — ${e.description}` : `@${e.signature}`;
1050
+ }
1051
+ function jt(e, t) {
1052
+ let n = [...Object.values(Pe).map((e) => V({
1053
+ ...e,
1054
+ signature: he(e.name, e.params, e.returns)
1055
+ })), ...e].join("\n");
1056
+ return `## Built-in Functions
1057
+
1058
+ Data functions prefixed with \`@\` to distinguish from components. These are the ONLY functions available — do NOT invent new ones.
1059
+ Use @-prefixed built-in functions (@Count, @Sum, @Avg, @Min, @Max, @Round) on ${t ? "Query results" : "data"}. Do NOT hardcode computed values.
1060
+
1061
+ ${n}
1062
+
1063
+ Builtins compose — output of one is input to the next:
1064
+ \`@Count(@Filter(data.rows, "field", "==", "val"))\` for KPIs/chart values, \`@Round(@Avg(data.rows.score), 1)\`, \`@Each(data.rows, "item", Comp(item.field))\` for per-item rendering.
1065
+ Array pluck: \`data.rows.field\` extracts a field from every row → use with @Sum, @Avg, charts, tables.
1066
+
1067
+ IMPORTANT @Each rule: The loop variable (e.g. "item") is ONLY available inside the @Each template expression. Always inline the template — do NOT extract it to a separate statement.
1068
+ CORRECT: \`list = @Each(rows, "t", Comp(t.name))\`
1069
+ WRONG: \`item = Comp(t.name)\` then \`list = @Each(rows, "t", item)\`, because t is undefined in item.`;
1070
+ }
1071
+ function Mt() {
1072
+ return "## Query — Live Data Fetching\n\nFetch data from available tools. Returns defaults instantly, swaps in real data when it arrives.\n\n```\nmetrics = Query(\"tool_name\", {arg1: value, arg2: $binding}, {defaultField: 0, defaultData: []}, refreshInterval?)\n```\n\n- First arg: tool name (string)\n- Second arg: arguments object (may reference $bindings — re-fetches automatically on change)\n- Third arg: default data (rendered immediately before fetch resolves)\n- Fourth arg (optional): refresh interval in seconds (e.g. 30 for auto-refresh every 30s)\n- Use dot access on results: metrics.totalEvents, metrics.data.day (array pluck)\n- Query results must use regular identifiers: `metrics = Query(...)`, NOT `$metrics = Query(...)`\n- Manual refresh: `Button(\"Refresh\", Action([@Run(query1), @Run(query2)]), \"secondary\")` — re-fetches the listed queries\n- Refresh all queries: create Action with @Run for each query";
1073
+ }
1074
+ function Nt() {
1075
+ return "## Mutation — Write Operations\n\nExecute state-changing tool calls (create, update, delete). Unlike Query (auto-fetches on render), Mutation fires only on button click via Action.\n\n```\nresult = Mutation(\"tool_name\", {arg1: $binding, arg2: \"value\"})\n```\n\n- First arg: tool name (string)\n- Second arg: arguments object (evaluated with current $binding values at click time)\n- result.status: \"idle\" | \"loading\" | \"success\" | \"error\"\n- result.data: tool response on success\n- result.error: error message on failure\n- Mutation results use regular identifiers: `result = Mutation(...)`, NOT `$result`\n- Show loading state: `result.status == \"loading\" ? TextContent(\"Saving...\") : null`";
1076
+ }
1077
+ var Pt = "## Action — Button Behavior";
1078
+ function Ft(e) {
1079
+ return Object.values(He).filter((t) => t.name === "Run" ? e.toolCalls : t.name === "Set" || t.name === "Reset" ? e.bindings : !0);
1080
+ }
1081
+ function It(e, t) {
1082
+ let n = [...Ft(e).map((e) => `- ${V({
1083
+ ...e,
1084
+ signature: he(e.name, e.params)
1085
+ })}`), ...t], r = [];
1086
+ e.toolCalls && r.push("Example — mutation + refresh + reset (PREFERRED pattern):\n```\n$binding = \"default\"\nresult = Mutation(\"tool_name\", {field: $binding})\ndata = Query(\"tool_name\", {}, {rows: []})\nonSubmit = Action([@Run(result), @Run(data), @Reset($binding)])\n```"), r.push("Example — simple nav:\n```\nviewBtn = Button(\"View\", @OpenUrl(\"https://example.com\"))\n```");
1087
+ let i = ["- An action can be assigned to a variable or inlined: Button(\"Go\", onSubmit) and Button(\"Go\", Action([...])) both work"];
1088
+ return e.toolCalls && i.push("- If a @Run(mutation) step fails, remaining steps are skipped (halt on failure)", "- @Run(queryRef) re-fetches the query (fire-and-forget, cannot fail)"), `${Pt}
1089
+
1090
+ An action wires a button click to operations. Pass one @-prefixed step bare, e.g. Button("Ask", @ToAssistant("Tell me more")). Put several steps in Action([...]), e.g. Button("Read", Action([@OpenUrl("https://example.com"), @ToAssistant("Summarize this page")])). Steps execute in order.
1091
+ Buttons without an action automatically send their label to the assistant (equivalent to @ToAssistant(label)).
1092
+
1093
+ Available steps:
1094
+ ${n.join("\n")}
1095
+
1096
+ ${r.join("\n\n")}
1097
+
1098
+ ${i.join("\n")}`;
1099
+ }
1100
+ function Lt() {
1101
+ return "## Interactive Filters\n\nTo let the user filter data with a dropdown:\n1. Declare a $variable with a default: `$dateRange = \"14\"`\n2. Create a Select with name, items, and binding: `Select(\"dateRange\", [SelectItem(\"7\", \"Last 7 days\"), ...], null, null, $dateRange)`\n3. Wrap in FormControl for a label: `FormControl(\"Date Range\", Select(...))`\n4. Pass $dateRange in Query args: `Query(\"tool\", {dateRange: $dateRange}, {defaults})`\n5. When the user changes the Select, $dateRange updates and the Query automatically re-fetches\n\nFILTER WIRING RULE: If a $binding filter is visible in the UI, EVERY relevant Query MUST reference that $binding in its args. Never show a filter dropdown while hardcoding the query args.\n\nRules for $variables:\n- $variables hold simple values (strings or numbers), NOT arrays or objects\n- $variables must be bound to a Select/Input component via the value argument (last positional arg) to be interactive\n- Queries must use regular identifiers (NOT $variables): `metrics = Query(...)` not `$metrics = Query(...)`\n- **Auto-declare**: You do NOT need to explicitly declare $variables. If you use `$foo` without declaring it, the parser auto-creates `$foo = null`. You can still declare explicitly to set a default: `$days = \"14\"`\n\n## Forms\n\nSimple form — no $bindings needed. Field values are managed internally by the Form via the name prop:\n```\ncontactForm = Form(\"contact\", submitBtn, [nameField, emailField])\nnameField = FormControl(\"Name\", Input(\"name\", \"Your name\", \"text\", {required: true}))\nemailField = FormControl(\"Email\", Input(\"email\", \"your@email.com\", \"email\", {required: true, email: true}))\nsubmitBtn = Button(\"Submit\")\n```\n\nUse $bindings when you need to read field values elsewhere (in Action context, Query args, or conditionals). They are auto-declared:\n```\n$role = \"engineer\"\ncontactForm = Form(\"contact\", submitBtn, [nameField, emailField, roleField])\nnameField = FormControl(\"Name\", Input(\"name\", \"Enter your name\", \"text\", {required: true}, $name))\nemailField = FormControl(\"Email\", Input(\"email\", \"Enter your email\", \"email\", {required: true, email: true}, $email))\nroleField = FormControl(\"Role\", Select(\"role\", [SelectItem(\"engineer\", \"Engineer\"), SelectItem(\"designer\", \"Designer\"), SelectItem(\"pm\", \"PM\")], null, {required: true}, $role))\nsubmitBtn = Button(\"Submit\")\n```\n\nFor form + mutation patterns (create, refresh, reset), see the Action section example above.\n\nIMPORTANT: Always add validation rules to form fields used with Mutations. Use OBJECT syntax: {required: true, email: true, minLength: 8}. The renderer shows error messages automatically and blocks submit when validation fails.";
1102
+ }
1103
+ function Rt() {
1104
+ return "## Edit Mode\n\nThe runtime merges by statement name: same name = replace, new name = append.\nOutput ONLY statements that changed or are new. Everything else is kept automatically.\n\n### Delete\nTo remove a component, re-declare its parent without that component in the parent's children array. The removed component and any statements only it referenced are automatically garbage-collected.\n\n### Patch size guide\n- Changing a title or label: 1 statement\n- Adding a component: 2-3 statements (the new component + parent update)\n- Removing a component: 1 statement (re-declare parent without the removed child)\n- Adding a filter + wiring to query: 3-5 statements\n- Restructuring into tabs: 5-10 statements\n\n### Rules\n- Reuse existing statement names exactly — do not rename\n- Do NOT re-emit unchanged statements — the runtime keeps them\n- A typical edit patch is 1-10 statements, not 20+\n- If the existing code already satisfies the request, output only the root statement\n- NEVER output the entire program as a patch. Only output what actually changes\n- If you are about to output more than 10 statements, reconsider — most edits need fewer";
1105
+ }
1106
+ function zt(e, t) {
1107
+ let n = [`1. \`root = ${e}(...)\` — UI shell appears immediately`];
1108
+ if (t.supportsExpressions) {
1109
+ n.push("2. $variable declarations — state ready for bindings"), t.toolCalls && n.push("3. Query statements — defaults resolve immediately so components render with data");
1110
+ let e = n.length;
1111
+ n.push(`${e + 1}. Component definitions — fill in with data already available`), n.push(`${e + 2}. Data values — leaf content last`);
1112
+ } else n.push("2. Component definitions — fill in as they stream"), n.push("3. Data values — leaf content last");
1113
+ return `## Hoisting & Streaming (CRITICAL)
1114
+
1115
+ openui-lang supports hoisting: a reference can be used BEFORE it is defined. The parser resolves all references after the full input is parsed.
1116
+
1117
+ During streaming, the output is re-parsed on every chunk. Undefined references are temporarily unresolved and appear once their definitions stream in. This creates a progressive top-down reveal — structure first, then data fills in.
1118
+
1119
+ **Recommended statement order for optimal streaming:**
1120
+ ${n.join("\n")}
1121
+
1122
+ Always write the root = ${e}(...) statement first so the UI shell appears immediately, even before child data has streamed in.`;
1123
+ }
1124
+ function Bt() {
1125
+ return "## Inline Mode\n\nYou are in inline mode. You can respond in two ways:\n\n### 1. Code response (when the user wants to CREATE or CHANGE the UI)\nWrap openui-lang code in triple-backtick fences. You can include explanatory text before/after:\n\nHere's your dashboard:\n\n```openui-lang\nroot = RootComp([header, content])\nheader = SomeHeader(\"Title\")\ncontent = SomeContent(\"Hello world\")\n```\n\nI created a simple layout with a header.\n\n### 2. Text-only response (when the user asks a QUESTION)\nIf the user asks \"what is this?\", \"explain the chart\", \"how does this work\", etc. — respond with plain text. Do NOT output any openui-lang code. The existing dashboard stays unchanged.\n\n### Rules\n- When the user asks for changes, output ONLY the changed/new statements in a fenced block\n- When the user asks a question, respond with text only — NO code. The dashboard stays unchanged.\n- The parser extracts code from fences automatically. Text outside fences is shown as chat.";
1126
+ }
1127
+ function Vt() {
1128
+ return "## Data Workflow\n\nWhen tools are available, follow this workflow:\n1. FIRST: Call the most relevant tool to inspect the real data shape before generating code\n2. Use Query() for READ operations (data that should stay live) — NEVER hardcode tool results as literal arrays or objects\n3. Use Mutation() for WRITE operations (create, update, delete) — triggered by button clicks via @Run(mutationRef)\n4. Use the real data from step 1 as condensed Query defaults (3-5 rows) so the UI renders immediately\n5. Use @-prefixed builtins (@Count, @Filter, @Sort, @Sum) on Query results for KPIs and aggregations — the runtime evaluates these live on every refresh\n6. Hardcoded arrays are ONLY for static display data (labels, options) where no tool exists\n\nWRONG — you called a tool and got data back, but you inlined the results:\n```\nopenCount = 2\nitem1 = SomeComp(\"first item title\")\nitem2 = SomeComp(\"second item title\")\nlist = SomeList([item1, item2])\nchart = SomeChart([\"A\", \"B\"], [12, 8])\n```\nThis is static — it shows stale data and won't update. Creating item1, item2, item3... manually is ALWAYS wrong when a tool exists.\n\nRIGHT — use Query() for live data, Mutation() for writes, @builtins to derive values:\n```\ndata = Query(\"tool_name\", {}, {rows: []})\nopenCount = @Count(@Filter(data.rows, \"field\", \"==\", \"value\"))\nlist = @Each(data.rows, \"item\", SomeComp(item.title, item.field))\ncreateResult = Mutation(\"create_tool\", {title: $title})\nsubmitBtn = Button(\"Create\", Action([@Run(createResult), @Run(data), @Reset($title)]))\n```\nEverything derives from the Query — when data refreshes, the entire dashboard updates automatically.";
1129
+ }
1130
+ function Ht(e, t) {
1131
+ let n = [`1. root = ${e}(...) is the FIRST line (for optimal streaming).`, "2. Every referenced name is defined. Every defined name (other than root) is reachable from root."];
1132
+ return t.toolCalls && n.push("3. Every Query result is referenced by at least one component."), t.bindings && n.push(`${t.toolCalls ? "4" : "3"}. Every $binding appears in at least one component or expression.`), t.toolCalls && t.bindings && n.push("5. Every visible filter $binding appears in at least one Query args object."), `## Important Rules
1133
+ - Choose components that best represent the content (tables for comparisons, charts for trends, forms for input, etc.)
1134
+
1135
+ ## Final Verification
1136
+ Before finishing, walk your output and verify:
1137
+ ${n.join("\n")}`;
1138
+ }
1139
+ function Ut(e) {
1140
+ let t = "";
1141
+ if (e.inputSchema) {
1142
+ let n = e.inputSchema.properties, r = e.inputSchema.required ?? [];
1143
+ n && Object.keys(n).length > 0 && (t = Object.entries(n).map(([e, t]) => `${e}${r.includes(e) ? "" : "?"}: ${Dt(t)}`).join(", "));
1144
+ }
1145
+ let n = "";
1146
+ e.outputSchema && (n = ` → ${Dt(e.outputSchema)}`);
1147
+ let r = `- ${e.name}(${t})${n}`;
1148
+ return e.description && (r += `\n ${e.description}`), r;
1149
+ }
1150
+ function Wt(e) {
1151
+ let t = [], n = [], r = [];
1152
+ for (let t of e) typeof t == "string" ? n.push(t) : r.push(t);
1153
+ t.push("## Available Tools"), t.push(""), t.push("Use these with Query() for read operations or Mutation() for write operations. The LLM decides which is appropriate based on the tool's purpose."), t.push("");
1154
+ for (let e of n) t.push(`- ${e}`);
1155
+ for (let e of r) t.push(Ut(e));
1156
+ let i = r.filter((e) => e.outputSchema);
1157
+ if (i.length > 0) {
1158
+ t.push(""), t.push("### Default values for Query results"), t.push(""), t.push("Use these shapes as minimal Query defaults:");
1159
+ for (let e of i) {
1160
+ let n = Ot(e.outputSchema);
1161
+ t.push(`- ${e.name}: \`${JSON.stringify(n)}\``);
1162
+ }
1163
+ }
1164
+ return t.push(""), t.push("CRITICAL: Use ONLY the tools listed above in Query() and Mutation() calls. Do NOT invent or guess tool names. If the user asks for functionality that doesn't match any available tool, use realistic mock data instead of fabricating a tool call."), t.join("\n");
1165
+ }
1166
+ var Gt = /[:|] @[A-Z]/;
1167
+ function Kt(e, t) {
1168
+ let n = [
1169
+ "## Component Signatures",
1170
+ "",
1171
+ "Arguments marked with ? are optional. Sub-components can be inline or referenced; prefer references for better streaming."
1172
+ ];
1173
+ if (t.usesActionExpression) {
1174
+ let r = [...Ft(t).map((e) => e.name), ...Object.keys(e.actions ?? {})].map((e) => `@${e}`);
1175
+ n.push(`Props typed \`ActionExpression\` accept one @step, or Action([@steps...]) for several. See the Action section for available steps (${r.join(", ")}).`), Object.values(e.components).some((e) => Gt.test(e.signature ?? "")) && n.push("Props typed like `@OpenUrl | @ToAssistant` accept only the steps listed.");
1176
+ }
1177
+ (t.bindings || Object.values(e.components).some((e) => e.signature?.includes("$binding"))) && n.push("Props marked `$binding<type>` accept a `$variable` reference for two-way binding.");
1178
+ let r = (e) => e.description ? `${e.signature} — ${e.description}` : e.signature;
1179
+ if (e.componentGroups?.length) {
1180
+ let t = /* @__PURE__ */ new Set();
1181
+ for (let i of e.componentGroups) {
1182
+ n.push("", `### ${i.name}`);
1183
+ for (let a of i.components) {
1184
+ if (t.has(a)) continue;
1185
+ let i = e.components[a];
1186
+ i && (t.add(a), n.push(r(i)));
1187
+ }
1188
+ if (i.notes?.length) for (let e of i.notes) n.push(e);
1189
+ }
1190
+ let i = Object.keys(e.components).filter((e) => !t.has(e));
1191
+ if (i.length) {
1192
+ n.push("", "### Other");
1193
+ for (let t of i) {
1194
+ let i = e.components[t];
1195
+ n.push(r(i));
1196
+ }
1197
+ }
1198
+ } else {
1199
+ n.push("");
1200
+ for (let [, t] of Object.entries(e.components)) n.push(r(t));
1201
+ }
1202
+ return n.join("\n");
1203
+ }
1204
+ function qt(e) {
1205
+ let t = e.root ?? "Root", n = !!e.tools?.length, r = e.toolCalls ?? n, i = e.bindings ?? r, a = r || i, o = Object.values(e.components).some((e) => e.signature?.includes("ActionExpression") || Gt.test(e.signature ?? "")), s = [];
1206
+ s.push(e.preamble ?? kt), s.push(""), s.push(At(t, {
1207
+ supportsExpressions: a,
1208
+ bindings: i
1209
+ })), s.push(""), s.push(Kt(e, {
1210
+ toolCalls: r,
1211
+ bindings: i,
1212
+ usesActionExpression: o
1213
+ }));
1214
+ let c = Object.values(e.functions ?? {}).map(V);
1215
+ e.builtinFunctions ?? a ? (s.push(""), s.push(jt(c, r))) : c.length && (s.push(""), s.push(`## Built-in Functions\n\n${c.join("\n")}`)), r && (s.push(""), s.push(Mt()), s.push(""), s.push(Nt()));
1216
+ let l = Object.values(e.actions ?? {}).map((e) => `- ${V(e)}`);
1217
+ o ? (s.push(""), s.push(It({
1218
+ toolCalls: r,
1219
+ bindings: i
1220
+ }, l))) : l.length && (s.push(""), s.push(`${Pt}\n\nPass one step, or Action([...]) with several steps, as a button's action.\n\nAvailable steps:\n${l.join("\n")}`)), r && i && (s.push(""), s.push(Lt())), r && (s.push(""), s.push(Vt())), e.tools?.length && (s.push(""), s.push(Wt(e.tools))), s.push(""), s.push(zt(t, {
1221
+ supportsExpressions: a,
1222
+ toolCalls: r
1223
+ }));
1224
+ let u = [...e.examples ?? [], ...e.toolExamples ?? []];
1225
+ if (u.length) {
1226
+ s.push(""), s.push("## Examples"), s.push("");
1227
+ for (let e of u) s.push(e), s.push("");
1228
+ }
1229
+ if (e.editMode && (s.push(""), s.push(Rt())), e.inlineMode && (s.push(""), s.push(Bt())), s.push(Ht(t, {
1230
+ toolCalls: r,
1231
+ bindings: i
1232
+ })), e.additionalRules?.length) {
1233
+ s.push("");
1234
+ for (let t of e.additionalRules) s.push(`- ${t}`);
1235
+ }
1236
+ return s.join("\n");
1237
+ }
1238
+ function Jt(e) {
1239
+ if (Yt(e)) return Et(e);
1240
+ if (!Xt(e)) {
1241
+ let t = qt(e);
1242
+ return pt(e, "legacy_prompt_spec"), t;
1243
+ }
1244
+ let t = {
1245
+ ...e.library,
1246
+ ...e.promptOptions
1247
+ }, n = qt(t);
1248
+ return pt(t, "library_spec"), n;
1249
+ }
1250
+ function Yt(e) {
1251
+ return "cloud" in e && e.cloud === !0;
1252
+ }
1253
+ function Xt(e) {
1254
+ return "library" in e && typeof e.library == "object";
1255
+ }
1256
+ function Zt(e) {
1257
+ return ie(e.props, e.name), x(e.props, e.name), {
1258
+ ...e,
1259
+ ref: e.props
1260
+ };
1261
+ }
1262
+ function Qt(e, t) {
1263
+ let n = {};
1264
+ for (let [r, i] of Object.entries(e)) n[r] = {
1265
+ signature: he(r, i.props, void 0, t),
1266
+ description: i.description
1267
+ };
1268
+ return n;
1269
+ }
1270
+ function $t(e, t) {
1271
+ let n = Object.entries(e);
1272
+ if (!n.length) return;
1273
+ let r = {};
1274
+ for (let [e, i] of n) r[e] = {
1275
+ signature: he(e, i.params, "returns" in i ? i.returns : void 0, t),
1276
+ description: i.description
1277
+ };
1278
+ return r;
1279
+ }
1280
+ var en = 0;
1281
+ function tn() {
1282
+ return typeof globalThis.crypto?.randomUUID == "function" ? globalThis.crypto.randomUUID() : (en += 1, `openui-lib-${Date.now().toString(36)}-${en.toString(36)}`);
1283
+ }
1284
+ function nn(e) {
1285
+ let t = {}, n = c(), r = tn();
1286
+ for (let r of e.components) n.add(r.props, { id: r.name }), t[r.name] = r;
1287
+ for (let [e, r] of Object.entries(Be)) t[e] || n.add(r, { id: e });
1288
+ if (e.root && !t[e.root]) {
1289
+ let n = Object.keys(t).join(", ");
1290
+ throw Error(`[createLibrary] Root component "${e.root}" was not found in components. Available components: ${n}`);
1291
+ }
1292
+ let i = new Set(Object.keys(t)), a = (e, t) => {
1293
+ if (L(t) || z(t) || i.has(t)) throw Error(`[createLibrary] ${e} "${t}" collides with a built-in, component, function, or action of the same name. Rename it.`);
1294
+ i.add(t);
1295
+ }, o = {};
1296
+ for (let t of e.functions ?? []) a("Function", t.name), o[t.name] = t;
1297
+ let s = {};
1298
+ for (let t of e.actions ?? []) a("Action", t.name), s[t.name] = t, n.add(t.ref, { id: t.name });
1299
+ let u = () => {
1300
+ let e = $t(o, n), t = $t(s, n);
1301
+ return {
1302
+ ...e ? { functions: e } : {},
1303
+ ...t ? { actions: t } : {}
1304
+ };
1305
+ }, d = {
1306
+ components: t,
1307
+ componentGroups: e.componentGroups,
1308
+ functions: o,
1309
+ actions: s,
1310
+ root: e.root,
1311
+ id: e.id,
1312
+ __libraryId: r,
1313
+ prompt(r) {
1314
+ return qt({
1315
+ root: e.root,
1316
+ components: Qt(t, n),
1317
+ componentGroups: e.componentGroups,
1318
+ ...u(),
1319
+ ...r
1320
+ });
1321
+ },
1322
+ toSpec() {
1323
+ return {
1324
+ root: e.root,
1325
+ components: Qt(t, n),
1326
+ componentGroups: e.componentGroups,
1327
+ ...u(),
1328
+ schema: m(),
1329
+ ...e.id === void 0 ? {} : { id: e.id }
1330
+ };
1331
+ },
1332
+ toJSONSchema() {
1333
+ return m();
1334
+ },
1335
+ extend(t) {
1336
+ return nn(ge(e, t));
1337
+ }
1338
+ };
1339
+ function f(e) {
1340
+ let { $schema: t, $defs: r, ...i } = l(e, { metadata: n });
1341
+ return i;
1342
+ }
1343
+ function p(e) {
1344
+ let t = Object.entries(e);
1345
+ if (t.length) return Object.fromEntries(t.map(([e, t]) => [e, {
1346
+ description: t.description,
1347
+ params: f(t.params),
1348
+ ..."returns" in t && t.returns ? { returns: f(t.returns) } : {}
1349
+ }]));
1350
+ }
1351
+ function m() {
1352
+ let e = l(h(Object.fromEntries(Object.entries(t).map(([e, t]) => [e, t.props]))), { metadata: n });
1353
+ for (let [n, r] of Object.entries(t)) {
1354
+ let t = e.$defs?.[n];
1355
+ t && r.description && (t.description = r.description);
1356
+ }
1357
+ let r = p(o);
1358
+ r && (e.functions = r);
1359
+ let i = p(s);
1360
+ return i && (e.actions = i), e;
1361
+ }
1362
+ return d;
1363
+ }
1364
+ var H = "]]>openui:", rn = /^\]\]>openui:([a-z]+)(?:\?(.*))?$/, an = /([^\n])(?=\]\]>openui:content(?:\?|\r?\n|$))/g, on = /[^\n](\]\]>[a-z:]*)$/, sn = (e) => encodeURIComponent(e).replace(/[!'()~]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/%20/g, "+"), cn = (e) => {
1365
+ try {
1366
+ return decodeURIComponent(e.replace(/\+/g, " "));
1367
+ } catch {
1368
+ return e;
1369
+ }
1370
+ };
1371
+ function ln(e = "") {
1372
+ let t = {};
1373
+ for (let n of e.split("&")) {
1374
+ let e = n.indexOf("="), r = cn(e === -1 ? n : n.slice(0, e));
1375
+ r && (t[r] = e === -1 ? "" : cn(n.slice(e + 1)));
1376
+ }
1377
+ return t;
1378
+ }
1379
+ function un(e, { streaming: t } = {}) {
1380
+ let n = e.replace(an, "$1\n"), r = t ? on.exec(n) : null;
1381
+ r && `${H}content`.startsWith(r[1]) && (n = n.slice(0, r.index + 1));
1382
+ let i = n.split("\n"), a = i[i.length - 1], o = t && a !== "" && (a.startsWith(H) || H.startsWith(a));
1383
+ o && i.pop();
1384
+ let s = [{
1385
+ kind: null,
1386
+ attributes: {},
1387
+ lines: []
1388
+ }], c = () => {
1389
+ let e = s[s.length - 1].lines;
1390
+ e.length && (e[e.length - 1] = e[e.length - 1].replace(/\r$/, ""));
1391
+ }, l = -1;
1392
+ for (let [e, t] of i.entries()) {
1393
+ let n = rn.exec(t.replace(/\r$/, ""));
1394
+ if (!n) {
1395
+ s[s.length - 1].lines.push(t);
1396
+ continue;
1397
+ }
1398
+ if (c(), n[1] === "end") {
1399
+ if (l = s.length - 1, e === i.length - 2 && i[e + 1] === "") break;
1400
+ continue;
1401
+ }
1402
+ s.push({
1403
+ kind: n[1],
1404
+ attributes: ln(n[2]),
1405
+ lines: []
1406
+ });
1407
+ }
1408
+ o && c();
1409
+ let u = s.map((e) => e.kind), d = Math.max(0, u.lastIndexOf("content")), f = u.lastIndexOf("context"), p = f > d ? s[f].lines.join("\n") : null;
1410
+ try {
1411
+ typeof p == "string" && (p = JSON.parse(p));
1412
+ } catch {}
1413
+ let m = s[d], h = l >= d;
1414
+ return {
1415
+ content: m.lines.join("\n"),
1416
+ context: p,
1417
+ attributes: m.attributes,
1418
+ end: h
1419
+ };
1420
+ }
1421
+ function dn({ content: e, context: t, attributes: n, end: r }) {
1422
+ let i = Object.entries(n ?? {}).map(([e, t]) => `${sn(e)}=${sn(t)}`).join("&"), a = `${H}content${i ? `?${i}` : ""}\n${e}`;
1423
+ return t != null && (a += `\n${H}context\n${typeof t == "string" ? t : JSON.stringify(t)}`), r ? `${a}\n${H}end` : a;
1424
+ }
1425
+ function U(e) {
1426
+ if (!e || typeof e != "object" || Array.isArray(e)) return !1;
1427
+ let t = e;
1428
+ return t.type === "element" && typeof t.typeName == "string" && typeof t.props == "object" && t.props !== null && typeof t.partial == "boolean";
1429
+ }
1430
+ var fn = /* @__PURE__ */ function(e) {
1431
+ return e.ContinueConversation = "continue_conversation", e.OpenUrl = "open_url", e;
1432
+ }({});
1433
+ function pn(e) {
1434
+ switch (e.k) {
1435
+ case "StateRef":
1436
+ case "RuntimeRef":
1437
+ case "BinOp":
1438
+ case "UnaryOp":
1439
+ case "Ternary":
1440
+ case "Member":
1441
+ case "Index":
1442
+ case "Assign": return !0;
1443
+ default: return !1;
1444
+ }
1445
+ }
1446
+ var mn = new Set([
1447
+ "Comp",
1448
+ "Ref",
1449
+ "StateRef",
1450
+ "RuntimeRef",
1451
+ "BinOp",
1452
+ "UnaryOp",
1453
+ "Ternary",
1454
+ "Member",
1455
+ "Index",
1456
+ "Assign",
1457
+ "Str",
1458
+ "Num",
1459
+ "Bool",
1460
+ "Null",
1461
+ "Arr",
1462
+ "Obj",
1463
+ "Ph"
1464
+ ]);
1465
+ function W(e) {
1466
+ return !e || typeof e != "object" || Array.isArray(e) ? !1 : mn.has(e.k);
1467
+ }
1468
+ function hn(e, t) {
1469
+ let n = (e) => {
1470
+ switch (t(e), e.k) {
1471
+ case "Comp":
1472
+ e.args.forEach(n), Object.values(e.mappedProps ?? {}).forEach(n);
1473
+ break;
1474
+ case "Arr":
1475
+ e.els.forEach(n);
1476
+ break;
1477
+ case "Obj":
1478
+ e.entries.forEach(([, e]) => n(e));
1479
+ break;
1480
+ case "BinOp":
1481
+ n(e.left), n(e.right);
1482
+ break;
1483
+ case "UnaryOp":
1484
+ n(e.operand);
1485
+ break;
1486
+ case "Ternary":
1487
+ n(e.cond), n(e.then), n(e.else);
1488
+ break;
1489
+ case "Member":
1490
+ n(e.obj);
1491
+ break;
1492
+ case "Index":
1493
+ n(e.obj), n(e.index);
1494
+ break;
1495
+ case "Assign":
1496
+ n(e.value);
1497
+ break;
1498
+ }
1499
+ };
1500
+ n(e);
1501
+ }
1502
+ function gn(e) {
1503
+ return e == null ? { k: "Null" } : typeof e == "string" ? {
1504
+ k: "Str",
1505
+ v: e
1506
+ } : typeof e == "number" ? {
1507
+ k: "Num",
1508
+ v: e
1509
+ } : typeof e == "boolean" ? {
1510
+ k: "Bool",
1511
+ v: e
1512
+ } : Array.isArray(e) ? {
1513
+ k: "Arr",
1514
+ els: e.map(gn)
1515
+ } : typeof e == "object" ? {
1516
+ k: "Obj",
1517
+ entries: Object.entries(e).map(([e, t]) => [e, gn(t)])
1518
+ } : { k: "Null" };
1519
+ }
1520
+ function _n(e) {
1521
+ switch (e.k) {
1522
+ case "Str":
1523
+ case "Num":
1524
+ case "Bool": return { v: e.v };
1525
+ case "Null": return { v: null };
1526
+ case "Arr": {
1527
+ let t = [];
1528
+ for (let n of e.els) {
1529
+ let e = _n(n);
1530
+ if (!e) return;
1531
+ t.push(e.v);
1532
+ }
1533
+ return { v: t };
1534
+ }
1535
+ case "Obj": {
1536
+ let t = {};
1537
+ for (let [n, r] of e.entries) {
1538
+ let e = _n(r);
1539
+ if (!e) return;
1540
+ t[n] = e.v;
1541
+ }
1542
+ return { v: t };
1543
+ }
1544
+ default: return;
1545
+ }
1546
+ }
1547
+ var vn = 1, yn = 2, bn = 3, xn = 4, G = 5, Sn = 6, Cn = 7, wn = 8, Tn = 9;
1548
+ function En(e) {
1549
+ let t = 0, n = () => e[t] ?? { t: 13 }, r = () => {
1550
+ let e = n();
1551
+ return t++, e;
1552
+ }, i = (e) => {
1553
+ n().t === e && t++;
1554
+ };
1555
+ function a(e) {
1556
+ switch (e.t) {
1557
+ case 34: return vn;
1558
+ case 32: return yn;
1559
+ case 31: return bn;
1560
+ case 25:
1561
+ case 26: return xn;
1562
+ case 27:
1563
+ case 28:
1564
+ case 29:
1565
+ case 30: return G;
1566
+ case 20:
1567
+ case 21: return Sn;
1568
+ case 22:
1569
+ case 23:
1570
+ case 24: return Cn;
1571
+ case 19:
1572
+ case 3: return Tn;
1573
+ default: return 0;
1574
+ }
1575
+ }
1576
+ function o(e = 0) {
1577
+ let t = s();
1578
+ for (; a(n()) > e;) t = c(t);
1579
+ return t;
1580
+ }
1581
+ function s() {
1582
+ let a = n();
1583
+ if (a.t === 14) return r(), {
1584
+ k: "Str",
1585
+ v: a.v
1586
+ };
1587
+ if (a.t === 15) return r(), {
1588
+ k: "Num",
1589
+ v: a.v
1590
+ };
1591
+ if (a.t === 10) return r(), {
1592
+ k: "Bool",
1593
+ v: !0
1594
+ };
1595
+ if (a.t === 11) return r(), {
1596
+ k: "Bool",
1597
+ v: !1
1598
+ };
1599
+ if (a.t === 12) return r(), { k: "Null" };
1600
+ if (a.t === 3) return u();
1601
+ if (a.t === 5) return d();
1602
+ if (a.t === 18) {
1603
+ let e = a.v;
1604
+ return r(), n().t === 9 ? (r(), {
1605
+ k: "Assign",
1606
+ target: e,
1607
+ value: o(0)
1608
+ }) : {
1609
+ k: "StateRef",
1610
+ n: e
1611
+ };
1612
+ }
1613
+ if (a.t === 17) {
1614
+ let n = a.v;
1615
+ return e[t + 1]?.t === 1 && (!L(n) || n === "Action") ? l() : (r(), {
1616
+ k: "Ref",
1617
+ n
1618
+ });
1619
+ }
1620
+ if (a.t === 35) {
1621
+ if (e[t + 1]?.t === 1) {
1622
+ let e = l();
1623
+ return e.k === "Comp" && !L(e.name) && (e.fn = !0), e;
1624
+ }
1625
+ return r(), {
1626
+ k: "Ref",
1627
+ n: a.v
1628
+ };
1629
+ }
1630
+ if (a.t === 16) return r(), {
1631
+ k: "Ref",
1632
+ n: a.v
1633
+ };
1634
+ if (a.t === 33) return r(), {
1635
+ k: "UnaryOp",
1636
+ op: "!",
1637
+ operand: o(wn)
1638
+ };
1639
+ if (a.t === 21) return r(), {
1640
+ k: "UnaryOp",
1641
+ op: "-",
1642
+ operand: o(wn)
1643
+ };
1644
+ if (a.t === 1) {
1645
+ r();
1646
+ let e = o(0);
1647
+ return i(2), e;
1648
+ }
1649
+ return r(), { k: "Null" };
1650
+ }
1651
+ function c(e) {
1652
+ let t = n();
1653
+ if (t.t === 20) return r(), {
1654
+ k: "BinOp",
1655
+ op: "+",
1656
+ left: e,
1657
+ right: o(Sn)
1658
+ };
1659
+ if (t.t === 21) return r(), {
1660
+ k: "BinOp",
1661
+ op: "-",
1662
+ left: e,
1663
+ right: o(Sn)
1664
+ };
1665
+ if (t.t === 22) return r(), {
1666
+ k: "BinOp",
1667
+ op: "*",
1668
+ left: e,
1669
+ right: o(Cn)
1670
+ };
1671
+ if (t.t === 23) return r(), {
1672
+ k: "BinOp",
1673
+ op: "/",
1674
+ left: e,
1675
+ right: o(Cn)
1676
+ };
1677
+ if (t.t === 24) return r(), {
1678
+ k: "BinOp",
1679
+ op: "%",
1680
+ left: e,
1681
+ right: o(Cn)
1682
+ };
1683
+ if (t.t === 25) return r(), {
1684
+ k: "BinOp",
1685
+ op: "==",
1686
+ left: e,
1687
+ right: o(xn)
1688
+ };
1689
+ if (t.t === 26) return r(), {
1690
+ k: "BinOp",
1691
+ op: "!=",
1692
+ left: e,
1693
+ right: o(xn)
1694
+ };
1695
+ if (t.t === 27) return r(), {
1696
+ k: "BinOp",
1697
+ op: ">",
1698
+ left: e,
1699
+ right: o(G)
1700
+ };
1701
+ if (t.t === 28) return r(), {
1702
+ k: "BinOp",
1703
+ op: "<",
1704
+ left: e,
1705
+ right: o(G)
1706
+ };
1707
+ if (t.t === 29) return r(), {
1708
+ k: "BinOp",
1709
+ op: ">=",
1710
+ left: e,
1711
+ right: o(G)
1712
+ };
1713
+ if (t.t === 30) return r(), {
1714
+ k: "BinOp",
1715
+ op: "<=",
1716
+ left: e,
1717
+ right: o(G)
1718
+ };
1719
+ if (t.t === 31) return r(), {
1720
+ k: "BinOp",
1721
+ op: "&&",
1722
+ left: e,
1723
+ right: o(bn)
1724
+ };
1725
+ if (t.t === 32) return r(), {
1726
+ k: "BinOp",
1727
+ op: "||",
1728
+ left: e,
1729
+ right: o(yn)
1730
+ };
1731
+ if (t.t === 34) {
1732
+ r();
1733
+ let t = o(0);
1734
+ return i(8), {
1735
+ k: "Ternary",
1736
+ cond: e,
1737
+ then: t,
1738
+ else: o(0)
1739
+ };
1740
+ }
1741
+ if (t.t === 19) {
1742
+ r();
1743
+ let t = n();
1744
+ return {
1745
+ k: "Member",
1746
+ obj: e,
1747
+ field: t.t === 16 || t.t === 17 || t.t === 14 || t.t === 15 ? (r(), String(t.v)) : t.t === 18 ? (r(), t.v.replace(/^\$/, "")) : (r(), "?")
1748
+ };
1749
+ }
1750
+ if (t.t === 3) {
1751
+ r();
1752
+ let t = o(0);
1753
+ return i(4), {
1754
+ k: "Index",
1755
+ obj: e,
1756
+ index: t
1757
+ };
1758
+ }
1759
+ return e;
1760
+ }
1761
+ function l() {
1762
+ let e = n().v;
1763
+ r(), i(1);
1764
+ let t = [];
1765
+ for (; n().t !== 2 && n().t !== 13;) t.push(o(0)), n().t === 7 && r();
1766
+ return i(2), {
1767
+ k: "Comp",
1768
+ name: e,
1769
+ args: t
1770
+ };
1771
+ }
1772
+ function u() {
1773
+ r();
1774
+ let e = [];
1775
+ for (; n().t !== 4 && n().t !== 13;) e.push(o(0)), n().t === 7 && r();
1776
+ return i(4), {
1777
+ k: "Arr",
1778
+ els: e
1779
+ };
1780
+ }
1781
+ function d() {
1782
+ r();
1783
+ let e = [];
1784
+ for (; n().t !== 6 && n().t !== 13;) {
1785
+ let t = n(), a = t.t === 16 || t.t === 14 || t.t === 17 || t.t === 15 ? (r(), String(t.v)) : t.t === 18 ? (r(), t.v.replace(/^\$/, "")) : (r(), "?");
1786
+ i(8), e.push([a, o(0)]), n().t === 7 && r();
1787
+ }
1788
+ return i(6), {
1789
+ k: "Obj",
1790
+ entries: e
1791
+ };
1792
+ }
1793
+ return o(0);
1794
+ }
1795
+ function Dn(e) {
1796
+ let t = [], n = 0, r = e.length;
1797
+ for (; n < r;) {
1798
+ for (; n < r && (e[n] === " " || e[n] === " " || e[n] === "\r");) n++;
1799
+ if (n >= r) break;
1800
+ let i = e[n];
1801
+ if (i === "\n") {
1802
+ t.push({ t: 0 }), n++;
1803
+ continue;
1804
+ }
1805
+ if (i === "(") {
1806
+ t.push({ t: 1 }), n++;
1807
+ continue;
1808
+ }
1809
+ if (i === ")") {
1810
+ t.push({ t: 2 }), n++;
1811
+ continue;
1812
+ }
1813
+ if (i === "[") {
1814
+ t.push({ t: 3 }), n++;
1815
+ continue;
1816
+ }
1817
+ if (i === "]") {
1818
+ t.push({ t: 4 }), n++;
1819
+ continue;
1820
+ }
1821
+ if (i === "{") {
1822
+ t.push({ t: 5 }), n++;
1823
+ continue;
1824
+ }
1825
+ if (i === "}") {
1826
+ t.push({ t: 6 }), n++;
1827
+ continue;
1828
+ }
1829
+ if (i === ",") {
1830
+ t.push({ t: 7 }), n++;
1831
+ continue;
1832
+ }
1833
+ if (i === ":") {
1834
+ t.push({ t: 8 }), n++;
1835
+ continue;
1836
+ }
1837
+ if (i === "=") {
1838
+ n + 1 < r && e[n + 1] === "=" ? (t.push({ t: 25 }), n += 2) : (t.push({ t: 9 }), n++);
1839
+ continue;
1840
+ }
1841
+ if (i === "!") {
1842
+ n + 1 < r && e[n + 1] === "=" ? (t.push({ t: 26 }), n += 2) : (t.push({ t: 33 }), n++);
1843
+ continue;
1844
+ }
1845
+ if (i === ">") {
1846
+ n + 1 < r && e[n + 1] === "=" ? (t.push({ t: 29 }), n += 2) : (t.push({ t: 27 }), n++);
1847
+ continue;
1848
+ }
1849
+ if (i === "<") {
1850
+ n + 1 < r && e[n + 1] === "=" ? (t.push({ t: 30 }), n += 2) : (t.push({ t: 28 }), n++);
1851
+ continue;
1852
+ }
1853
+ if (i === "&") {
1854
+ n + 1 < r && e[n + 1] === "&" ? (t.push({ t: 31 }), n += 2) : (t.push({ t: 31 }), n++);
1855
+ continue;
1856
+ }
1857
+ if (i === "|") {
1858
+ n + 1 < r && e[n + 1] === "|" ? (t.push({ t: 32 }), n += 2) : (t.push({ t: 32 }), n++);
1859
+ continue;
1860
+ }
1861
+ if (i === ".") {
1862
+ t.push({ t: 19 }), n++;
1863
+ continue;
1864
+ }
1865
+ if (i === "?") {
1866
+ t.push({ t: 34 }), n++;
1867
+ continue;
1868
+ }
1869
+ if (i === "+") {
1870
+ t.push({ t: 20 }), n++;
1871
+ continue;
1872
+ }
1873
+ if (i === "*") {
1874
+ t.push({ t: 22 }), n++;
1875
+ continue;
1876
+ }
1877
+ if (i === "/") {
1878
+ t.push({ t: 23 }), n++;
1879
+ continue;
1880
+ }
1881
+ if (i === "%") {
1882
+ t.push({ t: 24 }), n++;
1883
+ continue;
1884
+ }
1885
+ if (i === "\"") {
1886
+ let i = n;
1887
+ n++;
1888
+ let a = !1;
1889
+ for (; n < r;) if (e[n] === "\\") n += 2;
1890
+ else if (e[n] === "\"") {
1891
+ n++, a = !0;
1892
+ break;
1893
+ } else n++;
1894
+ let o = e.slice(i, n);
1895
+ try {
1896
+ let e = a ? o : o + "\"";
1897
+ t.push({
1898
+ t: 14,
1899
+ v: JSON.parse(e)
1900
+ });
1901
+ } catch {
1902
+ let e = o.replace(/^"|"$/g, "");
1903
+ t.push({
1904
+ t: 14,
1905
+ v: e
1906
+ });
1907
+ }
1908
+ continue;
1909
+ }
1910
+ if (i === "'") {
1911
+ n++;
1912
+ let i = "";
1913
+ for (; n < r;) if (e[n] === "\\") {
1914
+ if (n++, n < r) {
1915
+ let t = e[n];
1916
+ t === "'" ? i += "'" : t === "\\" ? i += "\\" : t === "n" ? i += "\n" : t === "t" ? i += " " : i += t, n++;
1917
+ }
1918
+ } else if (e[n] === "'") {
1919
+ n++;
1920
+ break;
1921
+ } else i += e[n], n++;
1922
+ t.push({
1923
+ t: 14,
1924
+ v: i
1925
+ });
1926
+ continue;
1927
+ }
1928
+ if (i === "-") {
1929
+ let i = t.length > 0 ? t[t.length - 1] : null;
1930
+ if (!(!(i != null && (i.t === 15 || i.t === 14 || i.t === 16 || i.t === 17 || i.t === 2 || i.t === 4 || i.t === 10 || i.t === 11 || i.t === 12 || i.t === 18 || i.t === 35)) && n + 1 < r && e[n + 1] >= "0" && e[n + 1] <= "9")) {
1931
+ t.push({ t: 21 }), n++;
1932
+ continue;
1933
+ }
1934
+ }
1935
+ let a = i >= "0" && i <= "9", o = i === "-" && n + 1 < r && e[n + 1] >= "0" && e[n + 1] <= "9";
1936
+ if (a || o) {
1937
+ let i = n;
1938
+ for (e[n] === "-" && n++; n < r && e[n] >= "0" && e[n] <= "9";) n++;
1939
+ if (n < r && e[n] === "." && n + 1 < r && e[n + 1] >= "0" && e[n + 1] <= "9") for (n++; n < r && e[n] >= "0" && e[n] <= "9";) n++;
1940
+ if (n < r && (e[n] === "e" || e[n] === "E")) for (n++, n < r && (e[n] === "+" || e[n] === "-") && n++; n < r && e[n] >= "0" && e[n] <= "9";) n++;
1941
+ t.push({
1942
+ t: 15,
1943
+ v: +e.slice(i, n)
1944
+ });
1945
+ continue;
1946
+ }
1947
+ if (i === "$" && n + 1 < r && (e[n + 1] >= "a" && e[n + 1] <= "z" || e[n + 1] >= "A" && e[n + 1] <= "Z" || e[n + 1] === "_")) {
1948
+ let i = n;
1949
+ for (n++; n < r && (e[n] >= "a" && e[n] <= "z" || e[n] >= "A" && e[n] <= "Z" || e[n] >= "0" && e[n] <= "9" || e[n] === "_");) n++;
1950
+ t.push({
1951
+ t: 18,
1952
+ v: e.slice(i, n)
1953
+ });
1954
+ continue;
1955
+ }
1956
+ if (i >= "a" && i <= "z" || i >= "A" && i <= "Z" || i === "_") {
1957
+ let a = n;
1958
+ for (; n < r && (e[n] >= "a" && e[n] <= "z" || e[n] >= "A" && e[n] <= "Z" || e[n] >= "0" && e[n] <= "9" || e[n] === "_");) n++;
1959
+ let o = e.slice(a, n);
1960
+ if (o === "true") {
1961
+ t.push({ t: 10 });
1962
+ continue;
1963
+ }
1964
+ if (o === "false") {
1965
+ t.push({ t: 11 });
1966
+ continue;
1967
+ }
1968
+ if (o === "null") {
1969
+ t.push({ t: 12 });
1970
+ continue;
1971
+ }
1972
+ let s = i >= "A" && i <= "Z" ? 17 : 16;
1973
+ t.push({
1974
+ t: s,
1975
+ v: o
1976
+ });
1977
+ continue;
1978
+ }
1979
+ if (i === "@" && n + 1 < r && (e[n + 1] >= "a" && e[n + 1] <= "z" || e[n + 1] >= "A" && e[n + 1] <= "Z" || e[n + 1] === "_")) {
1980
+ n++;
1981
+ let i = n;
1982
+ for (; n < r && (e[n] >= "a" && e[n] <= "z" || e[n] >= "A" && e[n] <= "Z" || e[n] >= "0" && e[n] <= "9" || e[n] === "_");) n++;
1983
+ t.push({
1984
+ t: 35,
1985
+ v: e.slice(i, n)
1986
+ });
1987
+ continue;
1988
+ }
1989
+ n++;
1990
+ }
1991
+ return t.push({ t: 13 }), t;
1992
+ }
1993
+ var On = [
1994
+ "string",
1995
+ "number",
1996
+ "boolean"
1997
+ ], kn = {}, An = [];
1998
+ function jn(e) {
1999
+ return Array.isArray(e) ? "array" : typeof e;
2000
+ }
2001
+ function Mn(e) {
2002
+ return typeof e.$ref == "string" ? e.$ref.split("/").pop() : void 0;
2003
+ }
2004
+ function Nn(e) {
2005
+ return "$ref" in e || "anyOf" in e || "oneOf" in e || "allOf" in e;
2006
+ }
2007
+ function Pn(e) {
2008
+ if (Array.isArray(e.enum)) return { enumValues: e.enum };
2009
+ if ("const" in e) return { enumValues: [e.const] };
2010
+ switch (e.type) {
2011
+ case "string": return { expectedType: "string" };
2012
+ case "number":
2013
+ case "integer": return { expectedType: "number" };
2014
+ case "boolean": return { expectedType: "boolean" };
2015
+ default: return {};
2016
+ }
2017
+ }
2018
+ function Fn(e) {
2019
+ if (!(!e || typeof e != "object" || Array.isArray(e))) return e.default;
2020
+ }
2021
+ function In(e) {
2022
+ if (!e || typeof e != "object" || Array.isArray(e)) return;
2023
+ let t = e, n = Mn(t);
2024
+ if (n) return n;
2025
+ let r = Pn(t);
2026
+ return r.enumValues ? r.enumValues.map((e) => JSON.stringify(e)).join("|") : r.expectedType ? r.expectedType : typeof t.type == "string" ? t.type : void 0;
2027
+ }
2028
+ function Ln(e, t) {
2029
+ return `${e}(${t.map((e) => {
2030
+ let t = In(e.schema), n = e.required ? `${e.name}*` : e.name;
2031
+ return t ? `${n}: ${t}` : n;
2032
+ }).join(", ")})`;
2033
+ }
2034
+ function Rn(e, t) {
2035
+ let n = typeof e;
2036
+ return t.enumValues ? !On.includes(n) || t.enumValues.includes(e) ? null : {
2037
+ expected: `one of [${t.enumValues.map((e) => JSON.stringify(e)).join(", ")}]`,
2038
+ actual: JSON.stringify(e)
2039
+ } : t.expectedType && t.expectedType !== n ? {
2040
+ expected: t.expectedType,
2041
+ actual: jn(e)
2042
+ } : null;
2043
+ }
2044
+ function zn(e, t, n) {
2045
+ switch (n.code) {
2046
+ case "type-mismatch": return `field "${t}" expects ${n.expected} but got ${n.actual}`;
2047
+ case "missing-required": return `missing required field "${t}"${n.signature ? ` — signature: ${n.signature}` : ""}`;
2048
+ case "null-required": return `required field "${t}" cannot be null${n.signature ? ` — signature: ${n.signature}` : ""}`;
2049
+ case "unknown-component": return `Unknown component "${e}" — not found in catalog or builtins${n.available?.length ? `. Available components: ${n.available.join(", ")}` : ""}`;
2050
+ case "inline-reserved": return `${e}() must be declared as a top-level statement, not used inline as a value`;
2051
+ case "excess-args": return `${e} takes ${n.declared} arg(s), got ${n.got} (${n.got - n.declared} excess dropped)`;
2052
+ case "unknown-function": return `Unknown function "@${e}": not a built-in or action step. The call evaluates to null`;
2053
+ case "no-root": return n.reason === "not-component" ? "root does not evaluate to a component" : n.reason === "fallback" ? `No root statement. Rendering the first statement that calls the root component ${e}` : e ? `No root statement, and no statement calls the root component ${e}` : "No root statement";
2054
+ }
2055
+ }
2056
+ function K(e, t, n, r) {
2057
+ e.errors.push({
2058
+ code: r.code,
2059
+ component: t,
2060
+ path: n,
2061
+ message: zn(t, n, r),
2062
+ statementId: e.currentStatementId,
2063
+ ...r.code === "no-root" && r.reason === "fallback" && { severity: "warning" }
2064
+ });
2065
+ }
2066
+ var q = Symbol("invalid");
2067
+ function Bn(e, t) {
2068
+ return t === void 0 ? e ? q : void 0 : t;
2069
+ }
2070
+ function Vn(e, t, n, r, i) {
2071
+ return Nn(t) ? !1 : typeof t.type == "string" || Array.isArray(t.enum) || "const" in t ? (K(i, n, r, {
2072
+ code: "type-mismatch",
2073
+ expected: typeof t.type == "string" ? t.type : "a literal value",
2074
+ actual: `component "${e.typeName}"`
2075
+ }), !0) : !1;
2076
+ }
2077
+ function Hn(e) {
2078
+ return (e.anyOf ?? e.oneOf ?? [e]).map(Mn);
2079
+ }
2080
+ function Un(e, t) {
2081
+ let n = Hn(e);
2082
+ return n.length > 0 && n.every((e) => e !== void 0 && t.cat?.has(e));
2083
+ }
2084
+ function Wn(e, t, n, r, i) {
2085
+ if (typeof e != "object" || Array.isArray(e)) return K(i, n, r, {
2086
+ code: "type-mismatch",
2087
+ expected: "object",
2088
+ actual: jn(e)
2089
+ }), q;
2090
+ let a = e, o, s = t.properties && typeof t.properties == "object" ? t.properties : kn, c = Array.isArray(t.required) ? t.required : An, l = !1;
2091
+ if (!i.partial) for (let e of c) {
2092
+ let t = e in a;
2093
+ if (!t || a[e] == null) {
2094
+ let c = Fn(s[e]);
2095
+ if (c !== void 0) {
2096
+ (o ??= { ...a })[e] = c;
2097
+ continue;
2098
+ }
2099
+ K(i, n, `${r}/${e}`, { code: t ? "null-required" : "missing-required" }), l = !0;
2100
+ }
2101
+ }
2102
+ for (let e of Object.keys(s)) {
2103
+ if (!(e in a)) continue;
2104
+ let t = s[e], u = J(a[e], t, n, `${r}/${e}`, i);
2105
+ if (u === q && (u = Bn(c.includes(e), Fn(t)), u === q)) {
2106
+ l = !0;
2107
+ continue;
2108
+ }
2109
+ u !== a[e] && (o ??= { ...a }, u === void 0 ? delete o[e] : o[e] = u);
2110
+ }
2111
+ return l ? q : o ?? a;
2112
+ }
2113
+ function Gn(e, t, n, r, i) {
2114
+ if (!Array.isArray(e)) return K(i, n, r, {
2115
+ code: "type-mismatch",
2116
+ expected: "array",
2117
+ actual: jn(e)
2118
+ }), q;
2119
+ let a = t.items;
2120
+ if (!a || typeof a != "object" || Array.isArray(a)) return e;
2121
+ let o;
2122
+ for (let t = 0; t < e.length; t++) {
2123
+ let s = J(e[t], a, n, `${r}/${t}`, i);
2124
+ s !== e[t] && !o && (o = e.slice(0, t)), o && s !== q && o.push(s);
2125
+ }
2126
+ return o ?? e;
2127
+ }
2128
+ function Kn(e, t, n, r, i) {
2129
+ let a = Pn(t);
2130
+ if (a.expectedType == null && a.enumValues == null || a.enumValues && i.partial) return !1;
2131
+ let o = Rn(e, a);
2132
+ return o ? (K(i, n, r, {
2133
+ code: "type-mismatch",
2134
+ ...o
2135
+ }), !0) : !1;
2136
+ }
2137
+ function J(e, t, n, r, i) {
2138
+ if (!t || typeof t != "object" || Array.isArray(t)) return e;
2139
+ let a = t;
2140
+ if (e == null || W(e)) return e;
2141
+ if (U(e)) return Vn(e, a, n, r, i) ? q : e;
2142
+ if (Nn(a)) return Un(a, i) ? (K(i, n, r, {
2143
+ code: "type-mismatch",
2144
+ expected: Hn(a).join(" | "),
2145
+ actual: Array.isArray(e) ? "array" : typeof e == "object" ? "plain object" : typeof e
2146
+ }), q) : e;
2147
+ let o = a.type;
2148
+ return o === "object" ? Wn(e, a, n, r, i) : o === "array" ? Gn(e, a, n, r, i) : Kn(e, a, n, r, i) ? q : e;
2149
+ }
2150
+ function qn(e) {
2151
+ if (typeof e != "object" || !e) return !1;
2152
+ if (W(e)) return !0;
2153
+ if (Array.isArray(e)) return e.some(qn);
2154
+ if (U(e)) return Object.values(e.props).some(qn);
2155
+ let t = e;
2156
+ return Array.isArray(t.steps) ? !0 : Object.values(t).some(qn);
2157
+ }
2158
+ function Jn(e, t, n) {
2159
+ if (t.visited.has(e) || !t.syms.has(e)) return t.unres.push(e), n === "expr" ? {
2160
+ k: "Ph",
2161
+ n: e
2162
+ } : null;
2163
+ let r = t.syms.get(e);
2164
+ if (t.unreached?.delete(e), r.k === "Comp" && z(r.name)) return {
2165
+ k: "RuntimeRef",
2166
+ n: e,
2167
+ refType: r.name === R.Mutation ? "mutation" : "query"
2168
+ };
2169
+ t.visited.add(e);
2170
+ let i = t.currentStatementId;
2171
+ t.currentStatementId = e;
2172
+ try {
2173
+ let i = n === "value" ? X(r, t) : tr(r, t);
2174
+ return n === "value" && U(i) && (i.statementId = e), i;
2175
+ } finally {
2176
+ t.currentStatementId = i, t.visited.delete(e);
2177
+ }
2178
+ }
2179
+ function Yn(e, t) {
2180
+ return I(t.cat).has(e) || z(e);
2181
+ }
2182
+ function Xn(e, t) {
2183
+ let n = {};
2184
+ for (let r = 0; r < t.length && r < e.length; r++) n[t[r].name] = e[r];
2185
+ return n;
2186
+ }
2187
+ function Zn(e, t, n, r) {
2188
+ let { params: i } = n;
2189
+ t.length > i.length && K(r, e, "", {
2190
+ code: "excess-args",
2191
+ declared: i.length,
2192
+ got: t.length
2193
+ });
2194
+ let a = Xn(t, i), o = !1, s = r.errors.length;
2195
+ for (let t of i) {
2196
+ let n = a[t.name], s = n ? _n(n) : { v: void 0 };
2197
+ if (!s) continue;
2198
+ if (s.v == null) {
2199
+ if (!t.required || t.defaultValue !== void 0) continue;
2200
+ K(r, e, `/${t.name}`, {
2201
+ code: n ? "null-required" : "missing-required",
2202
+ signature: Ln(e, i)
2203
+ }), o = !0;
2204
+ continue;
2205
+ }
2206
+ let c = J(s.v, t.schema, e, `/${t.name}`, r);
2207
+ c === q && (c = Bn(t.required, t.defaultValue)), c === q ? o = !0 : c === void 0 ? delete a[t.name] : c !== s.v && (a[t.name] = gn(c));
2208
+ }
2209
+ return n.kind === "action" && r.errors.length > s && (o = !0), o ? null : a;
2210
+ }
2211
+ function Qn(e, t, n) {
2212
+ let r = e.args.map(n), i = I(t.cat).get(e.name);
2213
+ if (!i || i.lazy) return {
2214
+ ...e,
2215
+ args: r
2216
+ };
2217
+ let a = i.builtin ? Xn(r, i.params) : Zn(e.name, r, i, t);
2218
+ return a ? {
2219
+ ...e,
2220
+ args: r,
2221
+ mappedProps: a
2222
+ } : i.kind === "action" ? {
2223
+ k: "Comp",
2224
+ name: "Action",
2225
+ args: [{
2226
+ k: "Arr",
2227
+ els: []
2228
+ }]
2229
+ } : { k: "Null" };
2230
+ }
2231
+ function $n(e, t, n) {
2232
+ let r = t.currentStatementId;
2233
+ t.currentStatementId = n;
2234
+ let i = /* @__PURE__ */ new Set();
2235
+ for (let n of e) hn(n, (e) => {
2236
+ if (e.k !== "Comp" || i.has(e)) return;
2237
+ i.add(e);
2238
+ let n = I(t.cat).get(e.name);
2239
+ !n || n.lazy || (e.mappedProps = (n.builtin ? null : Zn(e.name, e.args, n, t)) ?? Xn(e.args, n.params));
2240
+ });
2241
+ t.currentStatementId = r;
2242
+ }
2243
+ function er(e, t, n) {
2244
+ let r = I(t.cat).get(e.name);
2245
+ if (r?.kind !== "function" || !r.lazy || e.args.length < 3) return null;
2246
+ let i = e.args[1], a = i.k === "Ref" ? i.n : i.k === "Str" ? i.v : null;
2247
+ if (!a) return null;
2248
+ let o = new Set(n);
2249
+ o.add(a);
2250
+ let s = e.args.map((e, n) => n === 1 ? e : Y(e, t, o));
2251
+ return {
2252
+ ...e,
2253
+ args: s
2254
+ };
2255
+ }
2256
+ function Y(e, t, n) {
2257
+ switch (e.k) {
2258
+ case "Ref": return n.has(e.n) ? e : Jn(e.n, t, "expr");
2259
+ case "Ph": return e;
2260
+ case "Comp": {
2261
+ if (e.fn && !Yn(e.name, t)) return K(t, e.name, "", { code: "unknown-function" }), { k: "Null" };
2262
+ let r = er(e, t, n);
2263
+ if (r) return r;
2264
+ if (Yn(e.name, t)) return Qn(e, t, (e) => Y(e, t, n));
2265
+ let i = e.args.map((e) => Y(e, t, n)), a = t.cat?.get(e.name);
2266
+ if (a) {
2267
+ let t = {};
2268
+ for (let e = 0; e < a.params.length && e < i.length; e++) t[a.params[e].name] = i[e];
2269
+ return {
2270
+ ...e,
2271
+ args: i,
2272
+ mappedProps: t
2273
+ };
2274
+ }
2275
+ return K(t, e.name, "", {
2276
+ code: "unknown-component",
2277
+ available: t.cat && [...t.cat.keys()]
2278
+ }), {
2279
+ ...e,
2280
+ args: i
2281
+ };
2282
+ }
2283
+ case "Arr": return {
2284
+ ...e,
2285
+ els: e.els.map((e) => Y(e, t, n))
2286
+ };
2287
+ case "Obj": return {
2288
+ ...e,
2289
+ entries: e.entries.map(([e, r]) => [e, Y(r, t, n)])
2290
+ };
2291
+ case "BinOp": return {
2292
+ ...e,
2293
+ left: Y(e.left, t, n),
2294
+ right: Y(e.right, t, n)
2295
+ };
2296
+ case "UnaryOp": return {
2297
+ ...e,
2298
+ operand: Y(e.operand, t, n)
2299
+ };
2300
+ case "Ternary": return {
2301
+ ...e,
2302
+ cond: Y(e.cond, t, n),
2303
+ then: Y(e.then, t, n),
2304
+ else: Y(e.else, t, n)
2305
+ };
2306
+ case "Member": return {
2307
+ ...e,
2308
+ obj: Y(e.obj, t, n)
2309
+ };
2310
+ case "Index": return {
2311
+ ...e,
2312
+ obj: Y(e.obj, t, n),
2313
+ index: Y(e.index, t, n)
2314
+ };
2315
+ case "Assign": return {
2316
+ ...e,
2317
+ value: Y(e.value, t, n)
2318
+ };
2319
+ default: return e;
2320
+ }
2321
+ }
2322
+ function tr(e, t) {
2323
+ return Y(e, t, /* @__PURE__ */ new Set());
2324
+ }
2325
+ function X(e, t) {
2326
+ switch (e.k) {
2327
+ case "Ref": return Jn(e.n, t, "value");
2328
+ case "Str": return e.v;
2329
+ case "Num": return e.v;
2330
+ case "Bool": return e.v;
2331
+ case "Null": return null;
2332
+ case "Ph": return null;
2333
+ case "Arr": {
2334
+ let n = [];
2335
+ for (let r of e.els) {
2336
+ if (r.k === "Ph") continue;
2337
+ let e = X(r, t);
2338
+ e === null && (r.k === "Comp" || r.k === "Ref") || n.push(e);
2339
+ }
2340
+ return n;
2341
+ }
2342
+ case "Obj": {
2343
+ let n = {};
2344
+ for (let [r, i] of e.entries) n[r] = X(i, t);
2345
+ return n;
2346
+ }
2347
+ case "Comp": {
2348
+ let { name: n, args: r } = e;
2349
+ if (e.fn && !Yn(n, t)) return K(t, n, "", { code: "unknown-function" }), null;
2350
+ if (z(n)) return K(t, n, "", { code: "inline-reserved" }), null;
2351
+ if (Yn(n, t)) return er(e, t, /* @__PURE__ */ new Set()) || Qn(e, t, (e) => tr(e, t));
2352
+ let i = t.cat?.get(n), a = {};
2353
+ if (i) {
2354
+ let e = !1;
2355
+ for (let o = 0; o < i.params.length && o < r.length; o++) {
2356
+ let s = i.params[o], c = X(r[o], t);
2357
+ if (a[s.name] = c, s.schema === void 0) continue;
2358
+ let l = J(c, s.schema, n, `/${s.name}`, t);
2359
+ l === q && (l = Bn(s.required, s.defaultValue), l === q ? e = !0 : l === void 0 && delete a[s.name]), l !== q && l !== void 0 && (a[s.name] = l);
2360
+ }
2361
+ r.length > i.params.length && K(t, n, "", {
2362
+ code: "excess-args",
2363
+ declared: i.params.length,
2364
+ got: r.length
2365
+ });
2366
+ let o = i.params.filter((e) => e.required && (!(e.name in a) || a[e.name] === null));
2367
+ if (o.length) {
2368
+ let e = o.filter((e) => e.defaultValue === void 0 ? !0 : (a[e.name] = e.defaultValue, !1));
2369
+ if (e.length) {
2370
+ for (let r of e) K(t, n, `/${r.name}`, {
2371
+ code: r.name in a ? "null-required" : "missing-required",
2372
+ signature: Ln(n, i.params)
2373
+ });
2374
+ return null;
2375
+ }
2376
+ }
2377
+ if (e) return null;
2378
+ } else return K(t, n, "", {
2379
+ code: "unknown-component",
2380
+ available: t.cat && [...t.cat.keys()]
2381
+ }), null;
2382
+ let o = Object.values(a).some((e) => qn(e));
2383
+ return {
2384
+ type: "element",
2385
+ typeName: n,
2386
+ props: a,
2387
+ partial: t.partial,
2388
+ hasDynamicProps: o
2389
+ };
2390
+ }
2391
+ default: return pn(e) ? tr(e, t) : e;
2392
+ }
2393
+ }
2394
+ function nr(e) {
2395
+ let t = [], n = !1, r = !1;
2396
+ for (let i = 0; i < e.length; i++) {
2397
+ let a = e[i];
2398
+ if (r) {
2399
+ r = !1;
2400
+ continue;
2401
+ }
2402
+ if (a === "\\" && n) {
2403
+ r = !0;
2404
+ continue;
2405
+ }
2406
+ if (n) {
2407
+ a === n && (n = !1);
2408
+ continue;
2409
+ }
2410
+ if (a === "\"" || a === "'") {
2411
+ n = a;
2412
+ continue;
2413
+ }
2414
+ a === "(" || a === "[" || a === "{" ? t.push(a) : (a === ")" && t[t.length - 1] === "(" || a === "]" && t[t.length - 1] === "[" || a === "}" && t[t.length - 1] === "{") && t.pop();
2415
+ }
2416
+ if (!(n || t.length > 0)) return {
2417
+ text: e,
2418
+ wasIncomplete: !1
2419
+ };
2420
+ let i = e;
2421
+ n && (r && (i += "\\"), i += n);
2422
+ for (let e = t.length - 1; e >= 0; e--) i += t[e] === "(" ? ")" : t[e] === "[" ? "]" : "}";
2423
+ return {
2424
+ text: i,
2425
+ wasIncomplete: !0
2426
+ };
2427
+ }
2428
+ function rr(e) {
2429
+ let t = [], n = 0;
2430
+ for (; n < e.length;) {
2431
+ for (; n < e.length && e[n].t === 0;) n++;
2432
+ if (n >= e.length || e[n].t === 13) break;
2433
+ let r = e[n];
2434
+ if (r.t !== 16 && r.t !== 17 && r.t !== 18) {
2435
+ for (; n < e.length && e[n].t !== 0 && e[n].t !== 13;) n++;
2436
+ continue;
2437
+ }
2438
+ let i = r.v, a = r.t;
2439
+ if (n++, n >= e.length || e[n].t !== 9) {
2440
+ for (; n < e.length && e[n].t !== 0 && e[n].t !== 13;) n++;
2441
+ continue;
2442
+ }
2443
+ n++;
2444
+ let o = [], s = 0, c = 0;
2445
+ for (; n < e.length && e[n].t !== 13;) {
2446
+ let t = e[n].t;
2447
+ if (t === 0 && s <= 0 && c <= 0) {
2448
+ let t = n + 1;
2449
+ for (; t < e.length && e[t].t === 0;) t++;
2450
+ let r = t < e.length ? e[t].t : 13;
2451
+ if (r === 34 || r === 8 && c > 0) {
2452
+ n++;
2453
+ continue;
2454
+ }
2455
+ break;
2456
+ }
2457
+ if (t === 0) {
2458
+ n++;
2459
+ continue;
2460
+ }
2461
+ t === 1 || t === 3 || t === 5 ? s++ : (t === 2 || t === 4 || t === 6) && s > 0 ? s-- : t === 34 && s === 0 ? c++ : t === 8 && s === 0 && c > 0 && c--, o.push(e[n++]);
2462
+ }
2463
+ o.length && t.push({
2464
+ id: i,
2465
+ idTokenType: a,
2466
+ tokens: o
2467
+ });
2468
+ }
2469
+ return t;
2470
+ }
2471
+ function ir(e = !0) {
2472
+ return {
2473
+ root: null,
2474
+ meta: {
2475
+ incomplete: e,
2476
+ unresolved: [],
2477
+ orphaned: [],
2478
+ statementCount: 0,
2479
+ errors: []
2480
+ },
2481
+ stateDeclarations: {},
2482
+ queryStatements: [],
2483
+ mutationStatements: []
2484
+ };
2485
+ }
2486
+ function ar(e) {
2487
+ if (!W(e)) return [];
2488
+ let t = /* @__PURE__ */ new Set();
2489
+ return hn(e, (e) => {
2490
+ e.k === "StateRef" && t.add(e.n);
2491
+ }), [...t];
2492
+ }
2493
+ function or(e, t) {
2494
+ if (t.k === "Comp" && t.name === R.Query) {
2495
+ let n = ar(t.args[1]);
2496
+ return {
2497
+ kind: "query",
2498
+ id: e.id,
2499
+ call: {
2500
+ callee: R.Query,
2501
+ args: t.args
2502
+ },
2503
+ expr: t,
2504
+ deps: n.length > 0 ? n : void 0
2505
+ };
2506
+ }
2507
+ return t.k === "Comp" && t.name === R.Mutation ? {
2508
+ kind: "mutation",
2509
+ id: e.id,
2510
+ call: {
2511
+ callee: R.Mutation,
2512
+ args: t.args
2513
+ },
2514
+ expr: t
2515
+ } : e.idTokenType === 18 ? {
2516
+ kind: "state",
2517
+ id: e.id,
2518
+ init: t
2519
+ } : {
2520
+ kind: "value",
2521
+ id: e.id,
2522
+ expr: t
2523
+ };
2524
+ }
2525
+ function sr(e, t, n) {
2526
+ let r = {}, i = [], a = [];
2527
+ for (let n of e) switch (n.kind) {
2528
+ case "state":
2529
+ r[n.id] = X(n.init, t);
2530
+ break;
2531
+ case "query":
2532
+ $n(n.call.args, t, n.id), i.push({
2533
+ statementId: n.id,
2534
+ toolAST: n.call.args[0] ?? null,
2535
+ argsAST: n.call.args[1] ?? null,
2536
+ defaultsAST: n.call.args[2] ?? null,
2537
+ refreshAST: n.call.args[3] ?? null,
2538
+ deps: n.deps,
2539
+ complete: !0
2540
+ });
2541
+ break;
2542
+ case "mutation":
2543
+ $n(n.call.args, t, n.id), a.push({
2544
+ statementId: n.id,
2545
+ toolAST: n.call.args[0] ?? null,
2546
+ argsAST: n.call.args[1] ?? null
2547
+ });
2548
+ break;
2549
+ }
2550
+ for (let t of e) {
2551
+ let e = t.kind === "state" ? [t.init] : t.kind === "value" ? [t.expr] : t.kind === "query" || t.kind === "mutation" ? t.call.args : [];
2552
+ for (let i of e) for (let e of ar(i)) e === n?.name && n.stmts.has(t) || e in r || (r[e] = null);
2553
+ }
2554
+ return {
2555
+ stateDeclarations: r,
2556
+ queryStatements: i,
2557
+ mutationStatements: a
2558
+ };
2559
+ }
2560
+ var cr = "root";
2561
+ function lr(e) {
2562
+ return e?.k === "Comp" && !e.fn && !L(e.name) && !z(e.name);
2563
+ }
2564
+ function ur(e, t) {
2565
+ if (e.has(cr)) return {
2566
+ id: cr,
2567
+ fallback: !1
2568
+ };
2569
+ for (let n of e.values()) if (n.kind === "value" && lr(n.expr) && n.expr.name === t) return {
2570
+ id: n.id,
2571
+ fallback: !0
2572
+ };
2573
+ return null;
2574
+ }
2575
+ function dr(e, t) {
2576
+ let n = /* @__PURE__ */ new Set();
2577
+ for (; e?.k === "Ref" && !n.has(e.n);) n.add(e.n), e = t.get(e.n);
2578
+ return lr(e);
2579
+ }
2580
+ function fr(e) {
2581
+ let t = !1;
2582
+ return hn(e, (e) => {
2583
+ lr(e) && (t = !0);
2584
+ }), t;
2585
+ }
2586
+ function pr(e, t, n, r, i, a, o) {
2587
+ let s = ur(e, a), c = /* @__PURE__ */ new Map();
2588
+ for (let [t, n] of e) c.set(t, n.kind === "state" ? n.init : n.expr);
2589
+ let l = [], u = [], d = /* @__PURE__ */ new Set();
2590
+ for (let [t, n] of e) t !== s?.id && (n.kind === "state" || n.kind === "query" || n.kind === "mutation" || d.add(t));
2591
+ let f = {
2592
+ syms: c,
2593
+ cat: i,
2594
+ errors: u,
2595
+ unres: l,
2596
+ visited: /* @__PURE__ */ new Set(),
2597
+ partial: n,
2598
+ currentStatementId: s?.id,
2599
+ unreached: d
2600
+ }, p = null, m;
2601
+ if (s) {
2602
+ let e = X(c.get(s.id), f);
2603
+ U(e) ? (p = e, p.statementId = s.id) : W(e) && fr(e) && (m = e);
2604
+ }
2605
+ let { stateDeclarations: h, queryStatements: g, mutationStatements: _ } = sr(t, f, o);
2606
+ f.currentStatementId = s?.id;
2607
+ let v = a ?? "";
2608
+ s ? !p && !m && !dr(c.get(s.id), c) ? K(f, v, "", {
2609
+ code: "no-root",
2610
+ reason: "not-component"
2611
+ }) : s.fallback && K(f, v, "", {
2612
+ code: "no-root",
2613
+ reason: p ? "fallback" : "missing"
2614
+ }) : K(f, v, "", {
2615
+ code: "no-root",
2616
+ reason: "missing"
2617
+ });
2618
+ let ee = s ? [...d] : [];
2619
+ return {
2620
+ root: p,
2621
+ ...m ? { rootExpression: m } : {},
2622
+ meta: {
2623
+ incomplete: n,
2624
+ unresolved: l,
2625
+ orphaned: ee,
2626
+ statementCount: r,
2627
+ errors: u
2628
+ },
2629
+ stateDeclarations: h,
2630
+ queryStatements: g,
2631
+ mutationStatements: _
2632
+ };
2633
+ }
2634
+ function mr(e, t) {
2635
+ if (e[t] !== "\"") return t;
2636
+ let n = t + 1;
2637
+ for (; n < e.length;) {
2638
+ let t = e[n];
2639
+ if (t === "\\") n += 2;
2640
+ else if (t === "\"") return n + 1;
2641
+ else n++;
2642
+ }
2643
+ return n;
2644
+ }
2645
+ function hr(e) {
2646
+ let t = [], n = 0;
2647
+ for (; n < e.length;) {
2648
+ let r = -1;
2649
+ for (; n < e.length;) {
2650
+ let t = mr(e, n);
2651
+ if (t > n) {
2652
+ n = t;
2653
+ continue;
2654
+ }
2655
+ if (e[n] === "`" && n + 1 < e.length && e[n + 1] === "`" && n + 2 < e.length && e[n + 2] === "`") {
2656
+ r = n;
2657
+ break;
2658
+ }
2659
+ n++;
2660
+ }
2661
+ if (r === -1) break;
2662
+ let i = r + 3;
2663
+ for (; i < e.length && e[i] !== "\n";) i++;
2664
+ if (i >= e.length) {
2665
+ t.push(e.slice(r + 3).replace(/^[^\n]*\n?/, "")), n = e.length;
2666
+ break;
2667
+ }
2668
+ i++;
2669
+ let a = -1, o = i;
2670
+ for (; o < e.length;) {
2671
+ let t = mr(e, o);
2672
+ if (t > o) {
2673
+ o = t;
2674
+ continue;
2675
+ }
2676
+ if (e[o] === "`" && o + 1 < e.length && e[o + 1] === "`" && o + 2 < e.length && e[o + 2] === "`") {
2677
+ a = o;
2678
+ break;
2679
+ }
2680
+ o++;
2681
+ }
2682
+ a === -1 ? (t.push(e.slice(i)), n = e.length) : (t.push(e.slice(i, a)), n = a + 3);
2683
+ }
2684
+ if (t.length > 0) return t.join("\n");
2685
+ if (e.startsWith("```")) {
2686
+ let t = 3;
2687
+ for (; t < e.length && e[t] !== "\n";) t++;
2688
+ let n = t < e.length ? t + 1 : 3, r = e.slice(n), i = r.lastIndexOf("```");
2689
+ return i === -1 ? r : r.slice(0, i);
2690
+ }
2691
+ return e;
2692
+ }
2693
+ function gr(e) {
2694
+ let t = !1;
2695
+ return e.split("\n").map((e) => {
2696
+ for (let n = 0; n < e.length; n++) {
2697
+ let r = e[n];
2698
+ if (t) {
2699
+ if (r === "\\" && n + 1 < e.length) {
2700
+ n++;
2701
+ continue;
2702
+ }
2703
+ r === t && (t = !1);
2704
+ continue;
2705
+ }
2706
+ if (r === "\"" || r === "'") {
2707
+ t = r;
2708
+ continue;
2709
+ }
2710
+ if (r === "/" && e[n + 1] === "/" || r === "#") return e.substring(0, n).trimEnd();
2711
+ }
2712
+ return e;
2713
+ }).join("\n");
2714
+ }
2715
+ function _r(e) {
2716
+ return gr(hr(e.trim())).trim();
2717
+ }
2718
+ function vr(e, t, n) {
2719
+ let r = _r(e);
2720
+ if (!r) return ir();
2721
+ let { text: i, wasIncomplete: a } = nr(r), o = rr(Dn(i));
2722
+ if (!o.length) return ir(a);
2723
+ let s = /* @__PURE__ */ new Map();
2724
+ for (let e of o) {
2725
+ let t = or(e, En(e.tokens));
2726
+ s.set(e.id, t);
2727
+ }
2728
+ return pr(s, [...s.values()], a, s.size, t, n);
2729
+ }
2730
+ function yr(e, t) {
2731
+ let n = "", r = "", i = 0, a = /* @__PURE__ */ new Map(), o = 0;
2732
+ function s(e) {
2733
+ let t = e.trim();
2734
+ if (t) for (let e of rr(Dn(t))) {
2735
+ let t = or(e, En(e.tokens));
2736
+ a.set(e.id, t), o++;
2737
+ }
2738
+ }
2739
+ function c() {
2740
+ let e = _r(n);
2741
+ e.startsWith(r.slice(0, i)) || (i = 0, a.clear(), o = 0), r = e;
2742
+ }
2743
+ function l() {
2744
+ let e = 0, t = 0, n = !1, a = !1, o = i;
2745
+ for (let c = i; c < r.length; c++) {
2746
+ let l = r[c];
2747
+ if (a) {
2748
+ a = !1;
2749
+ continue;
2750
+ }
2751
+ if (l === "\\" && n) {
2752
+ a = !0;
2753
+ continue;
2754
+ }
2755
+ if (n) {
2756
+ l === n && (n = !1);
2757
+ continue;
2758
+ }
2759
+ if (l === "\"" || l === "'") {
2760
+ n = l;
2761
+ continue;
2762
+ }
2763
+ if (l === "(" || l === "[" || l === "{") e++;
2764
+ else if (l === ")" || l === "]" || l === "}") e = Math.max(0, e - 1);
2765
+ else if (l === "?" && e === 0) t++;
2766
+ else if (l === ":" && e === 0 && t > 0) t--;
2767
+ else if (l === "\n" && e <= 0 && t <= 0) {
2768
+ let e = c + 1;
2769
+ for (; e < r.length && (r[e] === " " || r[e] === " " || r[e] === "\r" || r[e] === "\n");) e++;
2770
+ if (e < r.length && (r[e] === "?" || r[e] === ":" && t > 0)) continue;
2771
+ let n = r.slice(o, c).trim();
2772
+ n && s(n), o = c + 1, i = c + 1;
2773
+ }
2774
+ }
2775
+ return o;
2776
+ }
2777
+ function u(i = !1) {
2778
+ c();
2779
+ let s = l(), u = r.slice(s).trim();
2780
+ if (!u) return o === 0 ? ir() : pr(a, [...a.values()], !1, o, e, t);
2781
+ let { text: d, wasIncomplete: f } = nr(u), p = rr(Dn(d));
2782
+ if (!p.length) return o === 0 ? ir(f) : pr(a, [...a.values()], f, o, e, t);
2783
+ let m = new Map(a), h = /* @__PURE__ */ new Set();
2784
+ for (let e of p) {
2785
+ if (a.has(e.id) && f) continue;
2786
+ let t = or(e, En(e.tokens));
2787
+ m.set(e.id, t), h.add(t);
2788
+ }
2789
+ let g = i ? void 0 : /\$\w+$/.exec(n)?.[0], _ = g && u.endsWith(g) && !RegExp(`\\${g}(?!\\w)`).test(u.slice(0, -g.length)) ? g : void 0;
2790
+ return pr(m, [...m.values()], f, o + p.length, e, t, _ ? {
2791
+ name: _,
2792
+ stmts: h
2793
+ } : void 0);
2794
+ }
2795
+ function d() {
2796
+ n = "", r = "", i = 0, a.clear(), o = 0;
2797
+ }
2798
+ return {
2799
+ push(e, t) {
2800
+ return n += e, u(t);
2801
+ },
2802
+ set(e, t) {
2803
+ (e.length < n.length || !e.startsWith(n)) && d();
2804
+ let r = e.slice(n.length);
2805
+ return r && (n += r), u(t);
2806
+ },
2807
+ getResult: u
2808
+ };
2809
+ }
2810
+ function br(e, t) {
2811
+ if (!e || typeof e != "object") return e;
2812
+ let n = e.$ref;
2813
+ if (typeof n == "string") return t.has(n) ? br(t.get(n), t) : e;
2814
+ let r = Array.isArray(e) ? [...e] : { ...e }, i = !1;
2815
+ for (let [e, n] of Object.entries(r)) r[e] = br(n, t), i ||= r[e] !== n;
2816
+ return i ? r : e;
2817
+ }
2818
+ function xr(e, t) {
2819
+ let n = e.properties ?? {}, r = e.required ?? [];
2820
+ return Object.keys(n).map((e) => ({
2821
+ name: e,
2822
+ required: r.includes(e),
2823
+ defaultValue: Fn(n[e]),
2824
+ schema: t.size ? br(n[e], t) : n[e]
2825
+ }));
2826
+ }
2827
+ function Sr(e) {
2828
+ let t = /* @__PURE__ */ new Map(), n = e.properties && new Set(Object.keys(e.properties)), r = /* @__PURE__ */ new Map();
2829
+ for (let t of [...Object.keys(Be), ...Object.keys(e.actions ?? {})]) {
2830
+ let i = e.$defs?.[t];
2831
+ i && !n?.has(t) && r.set(`#/$defs/${t}`, i);
2832
+ }
2833
+ for (let [i, a] of Object.entries(e.$defs ?? {})) (n ? !n.has(i) : r.has(`#/$defs/${i}`)) || t.set(i, { params: xr(a, r) });
2834
+ t.callDefs = new Map(F);
2835
+ for (let [n, i] of Object.entries(e.functions ?? {})) t.callDefs.set(n, {
2836
+ kind: "function",
2837
+ params: xr(i.params, r)
2838
+ });
2839
+ for (let [n, i] of Object.entries(e.actions ?? {})) t.callDefs.set(n, {
2840
+ kind: "action",
2841
+ params: xr(i.params, r)
2842
+ });
2843
+ return t;
2844
+ }
2845
+ function Cr(e, t) {
2846
+ let n = Sr(e);
2847
+ return { parse(e) {
2848
+ let r = _t();
2849
+ try {
2850
+ let i = vr(e, n, t);
2851
+ return vt(r, i), i;
2852
+ } catch (e) {
2853
+ throw yt(r), e;
2854
+ }
2855
+ } };
2856
+ }
2857
+ function wr(e, t) {
2858
+ return yr(Sr(e), t);
2859
+ }
2860
+ function Tr(e, t) {
2861
+ if (!t?.properties) return;
2862
+ let n = new Set(t.required ?? []);
2863
+ return `Signature: ${e}(${Object.keys(t.properties).map((e) => n.has(e) ? `${e}*` : e).join(", ")}) — * marks required`;
2864
+ }
2865
+ function Er(e, t, n) {
2866
+ return e.map((e) => {
2867
+ let r = {
2868
+ source: "parser",
2869
+ code: e.code,
2870
+ message: e.message,
2871
+ component: e.component,
2872
+ path: e.path || void 0,
2873
+ statementId: e.statementId,
2874
+ ...e.severity && { severity: e.severity }
2875
+ };
2876
+ return e.code === "unknown-component" && n.length ? r.hint = `Available components: ${n.join(", ")}` : e.code === "missing-required" || e.code === "null-required" ? r.hint = Tr(e.component, t.$defs?.[e.component]) : e.code === "inline-reserved" && (r.hint = `Declare as a top-level statement: myVar = ${e.component}(...)`), r;
2877
+ });
2878
+ }
2879
+ function Dr(e) {
2880
+ let t = [], n = 0, r = !1, i = !1, a = 0;
2881
+ for (let o = 0; o < e.length; o++) {
2882
+ let s = e[o];
2883
+ if (i) {
2884
+ i = !1;
2885
+ continue;
2886
+ }
2887
+ if (s === "\\" && r) {
2888
+ i = !0;
2889
+ continue;
2890
+ }
2891
+ if (r) {
2892
+ s === r && (r = !1);
2893
+ continue;
2894
+ }
2895
+ if (s === "\"" || s === "'") {
2896
+ r = s;
2897
+ continue;
2898
+ }
2899
+ if (s === "(" || s === "[" || s === "{") n++;
2900
+ else if (s === ")" || s === "]" || s === "}") n = Math.max(0, n - 1);
2901
+ else if (s === "\n" && n <= 0) {
2902
+ let n = e.slice(a, o).trim();
2903
+ n && t.push(n), a = o + 1;
2904
+ }
2905
+ }
2906
+ let o = e.slice(a).trim();
2907
+ return o && t.push(o), t;
2908
+ }
2909
+ function Or(e) {
2910
+ let t = e.trim();
2911
+ if (!t) return [];
2912
+ let n = [];
2913
+ for (let e of Dr(t)) {
2914
+ let t = rr(Dn(e))[0];
2915
+ t && n.push({
2916
+ id: t.id,
2917
+ ast: En(t.tokens),
2918
+ raw: e
2919
+ });
2920
+ }
2921
+ return n;
2922
+ }
2923
+ function kr(e, t) {
2924
+ hn(e, (e) => {
2925
+ e.k === "Ref" && t.add(e.n), e.k === "RuntimeRef" && t.add(e.n);
2926
+ });
2927
+ }
2928
+ function Ar(e, t, n, r = "root") {
2929
+ if (!n.get(r)) return;
2930
+ let i = new Set([r]), a = [r];
2931
+ for (; a.length > 0;) {
2932
+ let e = a.pop(), t = n.get(e);
2933
+ if (!t) continue;
2934
+ let r = /* @__PURE__ */ new Set();
2935
+ kr(t, r);
2936
+ for (let e of r) !i.has(e) && n.has(e) && (i.add(e), a.push(e));
2937
+ }
2938
+ for (let t of e) t.startsWith("$") && i.add(t);
2939
+ for (let n = e.length - 1; n >= 0; n--) i.has(e[n]) || (t.delete(e[n]), e.splice(n, 1));
2940
+ }
2941
+ function jr(e, t, n = "root") {
2942
+ let r = Or(e), i = Or(hr(t));
2943
+ if (!r.length) return i.map((e) => e.raw).join("\n");
2944
+ if (!i.length) return e;
2945
+ let a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = [];
2946
+ for (let e of r) a.set(e.id, e.raw), o.set(e.id, e.ast), s.push(e.id);
2947
+ for (let e of i) {
2948
+ if (e.ast.k === "Null") {
2949
+ a.delete(e.id), o.delete(e.id);
2950
+ let t = s.indexOf(e.id);
2951
+ t !== -1 && s.splice(t, 1);
2952
+ continue;
2953
+ }
2954
+ a.has(e.id) || s.push(e.id), a.set(e.id, e.raw), o.set(e.id, e.ast);
2955
+ }
2956
+ return Ar(s, a, o, n), s.filter((e) => a.has(e)).map((e) => a.get(e)).join("\n");
2957
+ }
2958
+ function Mr(e) {
2959
+ return typeof e == "object" && !!e && e.__reactive === "assign";
2960
+ }
2961
+ function Z(e, t, n) {
2962
+ switch (e.k) {
2963
+ case "Str": return e.v;
2964
+ case "Num": return e.v;
2965
+ case "Bool": return e.v;
2966
+ case "Null": return null;
2967
+ case "Ph": return null;
2968
+ case "StateRef": return t.extraScope?.[e.n] ?? t.getState(e.n);
2969
+ case "Ref":
2970
+ case "RuntimeRef": return t.resolveRef(e.n);
2971
+ case "Arr": return e.els.map((e) => Z(e, t));
2972
+ case "Obj": return Object.fromEntries(e.entries.map(([e, n]) => [e, Z(n, t)]));
2973
+ case "Comp": {
2974
+ let r = Pe[e.name];
2975
+ if (r) return r.lazy ? qr(e.name, e.args, t, n) : r.fn(Fr(e, t));
2976
+ if (We(e.name)) return Wr(e, t);
2977
+ let i = t.functions;
2978
+ if (i && Object.prototype.hasOwnProperty.call(i, e.name)) return zr(e.name, i[e.name], e, t);
2979
+ let a = t.actions;
2980
+ if (a && Object.prototype.hasOwnProperty.call(a, e.name)) {
2981
+ let n = a[e.name], r = Ir(e, t, n.params);
2982
+ if (Rr(r, n.params)) return { steps: [] };
2983
+ let i = Lr(r, n.params, e.name, "", t, !0);
2984
+ if (i === q) return { steps: [] };
2985
+ let o = {
2986
+ type: "custom_action",
2987
+ name: e.name,
2988
+ params: i
2989
+ };
2990
+ return Hr.add(o), { steps: [o] };
2991
+ }
2992
+ if (e.mappedProps) {
2993
+ let r = n?.library.components[e.name], i = {};
2994
+ for (let [a, o] of Object.entries(e.mappedProps)) {
2995
+ let e = r?.props?.shape?.[a];
2996
+ o.k === "StateRef" && e && y(e) ? i[a] = {
2997
+ __reactive: "assign",
2998
+ target: o.n,
2999
+ expr: {
3000
+ k: "StateRef",
3001
+ n: "$value"
3002
+ }
3003
+ } : o.k === "StateRef" ? i[a] = n ? t.getState(o.n) : o : i[a] = Z(o, t, n);
3004
+ }
3005
+ let a = {
3006
+ type: "element",
3007
+ typeName: e.name,
3008
+ props: i,
3009
+ partial: !1,
3010
+ hasDynamicProps: !0
3011
+ };
3012
+ if (n) for (let [e, r] of Object.entries(i)) U(r) ? i[e] = Nr(r, t, n) : Array.isArray(r) && (i[e] = r.map((e) => U(e) ? Nr(e, t, n) : e));
3013
+ return a;
3014
+ }
3015
+ return console.warn(`[openui] Unexpected unmapped Comp node: ${e.name}`), null;
3016
+ }
3017
+ case "BinOp": {
3018
+ if (e.op === "&&") return Z(e.left, t) && Z(e.right, t);
3019
+ if (e.op === "||") return Z(e.left, t) || Z(e.right, t);
3020
+ let n = Z(e.left, t), r = Z(e.right, t);
3021
+ switch (e.op) {
3022
+ case "+": return typeof n == "string" || typeof r == "string" ? String(n ?? "") + String(r ?? "") : A(n) + A(r);
3023
+ case "-": return A(n) - A(r);
3024
+ case "*": return A(n) * A(r);
3025
+ case "/": return A(r) === 0 ? 0 : A(n) / A(r);
3026
+ case "%": return A(r) === 0 ? 0 : A(n) % A(r);
3027
+ case "==": return n == r;
3028
+ case "!=": return n != r;
3029
+ case ">": return A(n) > A(r);
3030
+ case "<": return A(n) < A(r);
3031
+ case ">=": return A(n) >= A(r);
3032
+ case "<=": return A(n) <= A(r);
3033
+ default: return null;
3034
+ }
3035
+ }
3036
+ case "UnaryOp": return e.op === "!" ? !Z(e.operand, t) : e.op === "-" ? -A(Z(e.operand, t)) : null;
3037
+ case "Ternary": return Z(e.cond, t) ? Z(e.then, t) : Z(e.else, t);
3038
+ case "Member": {
3039
+ let n = Z(e.obj, t);
3040
+ return n == null ? null : Array.isArray(n) ? e.field === "length" ? n.length : n.map((t) => t?.[e.field] ?? null) : n[e.field];
3041
+ }
3042
+ case "Index": {
3043
+ let n = Z(e.obj, t), r = Z(e.index, t);
3044
+ return n == null || r == null ? null : Array.isArray(n) ? n[A(r)] : n[String(r)];
3045
+ }
3046
+ case "Assign": return {
3047
+ __reactive: "assign",
3048
+ target: e.target,
3049
+ expr: e.value
3050
+ };
3051
+ }
3052
+ }
3053
+ function Nr(e, t, n) {
3054
+ if (e.hasDynamicProps === !1) return e;
3055
+ let r = n.library.components[e.typeName], i = {};
3056
+ for (let [a, o] of Object.entries(e.props)) {
3057
+ let e = r?.props?.shape?.[a];
3058
+ i[a] = Pr(o, t, n, e);
3059
+ }
3060
+ return {
3061
+ ...e,
3062
+ props: i
3063
+ };
3064
+ }
3065
+ function Pr(e, t, n, r) {
3066
+ return Jr(e, t, n, r, {
3067
+ recurseElement: (e) => Nr(e, t, n),
3068
+ recurse: (e, r) => Pr(e, t, n, r)
3069
+ });
3070
+ }
3071
+ function Fr(e, t, n = F.get(e.name)?.params ?? []) {
3072
+ let r = e.mappedProps ?? Xn(e.args, n), i = {};
3073
+ for (let e in r) i[e] = Z(r[e], t);
3074
+ return i;
3075
+ }
3076
+ function Ir(e, t, n) {
3077
+ let r = Fr(e, t, Object.keys(n.properties ?? {}).map((e) => ({
3078
+ name: e,
3079
+ required: !1
3080
+ })));
3081
+ for (let e in r) r[e] === null && !n.required?.includes(e) && delete r[e];
3082
+ return r;
3083
+ }
3084
+ function Lr(e, t, n, r, i, a = !1) {
3085
+ let o = {
3086
+ errors: [],
3087
+ partial: !1
3088
+ }, s = J(e, t, n, r, o);
3089
+ for (let e of o.errors) i.reportError?.(`@${n}: ${e.message}`);
3090
+ return a && o.errors.length > 0 ? q : s;
3091
+ }
3092
+ function Rr(e, t) {
3093
+ return !!t.required?.some((n) => e[n] == null && Fn(t.properties?.[n]) === void 0);
3094
+ }
3095
+ function zr(e, t, n, r) {
3096
+ let i = Ir(n, r, t.params);
3097
+ if (Rr(i, t.params)) return null;
3098
+ let a = Lr(i, t.params, e, "", r);
3099
+ if (a === q) return null;
3100
+ let o;
3101
+ try {
3102
+ o = t.fn(a);
3103
+ } catch (t) {
3104
+ return r.reportError?.(`@${e} threw: ${t instanceof Error ? t.message : String(t)}`), null;
3105
+ }
3106
+ if (!t.returns) return o;
3107
+ let s = Lr(o, t.returns, e, "/returns", r);
3108
+ return s === q ? null : s ?? null;
3109
+ }
3110
+ function Br(e) {
3111
+ return typeof e == "object" && !!e && Array.isArray(e.steps);
3112
+ }
3113
+ function Vr(e) {
3114
+ return Ur({ steps: e.flatMap((e) => Br(e) ? e.steps : typeof e == "object" && e && "type" in e ? [e] : []) });
3115
+ }
3116
+ var Hr = /* @__PURE__ */ new WeakSet();
3117
+ function Ur(e) {
3118
+ let t = (e) => e?.type !== "custom_action" || Hr.has(e);
3119
+ return e.steps.every(t) ? e : {
3120
+ ...e,
3121
+ steps: e.steps.filter(t)
3122
+ };
3123
+ }
3124
+ function Wr(e, t) {
3125
+ let { name: n, args: r } = e;
3126
+ if (n === "Action") {
3127
+ let e = r.length > 0 ? Z(r[0], t) : [];
3128
+ return Vr(Array.isArray(e) ? e : []);
3129
+ }
3130
+ let i = He[n], a = i.step ? i.step(Fr(e, t)) : Gr(n, r);
3131
+ return { steps: a ? [a] : [] };
3132
+ }
3133
+ function Gr(e, t) {
3134
+ switch (e) {
3135
+ case "Run": {
3136
+ let e = t[0];
3137
+ return e?.k === "RuntimeRef" ? {
3138
+ type: N.Run,
3139
+ statementId: e.n,
3140
+ refType: e.refType
3141
+ } : null;
3142
+ }
3143
+ case "Set": return t.length < 2 || t[0].k !== "StateRef" ? null : {
3144
+ type: N.Set,
3145
+ target: t[0].n,
3146
+ valueAST: t[1]
3147
+ };
3148
+ case "Reset": {
3149
+ let e = t.filter((e) => e.k === "StateRef").map((e) => e.n);
3150
+ return e.length === 0 ? null : {
3151
+ type: N.Reset,
3152
+ targets: e
3153
+ };
3154
+ }
3155
+ default: return null;
3156
+ }
3157
+ }
3158
+ function Q(e, t, n) {
3159
+ switch (e.k) {
3160
+ case "Ref": return e.n === t ? gn(n) : e;
3161
+ case "Member":
3162
+ if (W(e.obj)) {
3163
+ let r = Q(e.obj, t, n);
3164
+ if (r.k === "Obj") {
3165
+ let t = r.entries.find(([t]) => t === e.field);
3166
+ if (t) return t[1];
3167
+ }
3168
+ return {
3169
+ ...e,
3170
+ obj: r
3171
+ };
3172
+ }
3173
+ return e;
3174
+ case "Index": return {
3175
+ ...e,
3176
+ obj: W(e.obj) ? Q(e.obj, t, n) : e.obj,
3177
+ index: W(e.index) ? Q(e.index, t, n) : e.index
3178
+ };
3179
+ case "BinOp": return {
3180
+ ...e,
3181
+ left: Q(e.left, t, n),
3182
+ right: Q(e.right, t, n)
3183
+ };
3184
+ case "UnaryOp": return {
3185
+ ...e,
3186
+ operand: Q(e.operand, t, n)
3187
+ };
3188
+ case "Ternary": return {
3189
+ ...e,
3190
+ cond: Q(e.cond, t, n),
3191
+ then: Q(e.then, t, n),
3192
+ else: Q(e.else, t, n)
3193
+ };
3194
+ case "Arr": return {
3195
+ ...e,
3196
+ els: e.els.map((e) => Q(e, t, n))
3197
+ };
3198
+ case "Obj": return {
3199
+ ...e,
3200
+ entries: e.entries.map(([e, r]) => [e, Q(r, t, n)])
3201
+ };
3202
+ case "Comp": {
3203
+ let r = (e) => Q(e, t, n), i = {
3204
+ ...e,
3205
+ args: e.args.map(r)
3206
+ };
3207
+ return e.mappedProps && (i.mappedProps = Kr(e.mappedProps, r)), i;
3208
+ }
3209
+ case "Assign": return {
3210
+ ...e,
3211
+ value: Q(e.value, t, n)
3212
+ };
3213
+ default: return e;
3214
+ }
3215
+ }
3216
+ function Kr(e, t) {
3217
+ let n = {};
3218
+ for (let r in e) n[r] = t(e[r]);
3219
+ return n;
3220
+ }
3221
+ function qr(e, t, n, r) {
3222
+ if (e === "Each") {
3223
+ if (t.length < 3) return [];
3224
+ let e = Z(t[0], n);
3225
+ if (!Array.isArray(e)) return [];
3226
+ let i = t[1].k === "Ref" ? t[1].n : t[1].k === "Str" ? t[1].v : null;
3227
+ if (!i) return [];
3228
+ let a = t[2];
3229
+ return e.map((e, t) => {
3230
+ let o = Q(a, i, e), s = {
3231
+ ...n,
3232
+ resolveRef: (t) => t === i ? e : n.resolveRef(t)
3233
+ }, c = Z(o, s, r);
3234
+ return r && U(c) ? Nr(c, s, r) : c;
3235
+ });
3236
+ }
3237
+ return null;
3238
+ }
3239
+ function Jr(e, t, n, r, i) {
3240
+ let a = Yr(e, t, n, r, i);
3241
+ return Br(a) ? Ur(a) : a;
3242
+ }
3243
+ function Yr(e, t, n, r, i) {
3244
+ if (typeof e != "object" || !e) return e;
3245
+ if (W(e)) {
3246
+ if (e.k === "StateRef" && r && y(r)) return {
3247
+ __reactive: "assign",
3248
+ target: e.n,
3249
+ expr: {
3250
+ k: "StateRef",
3251
+ n: "$value"
3252
+ }
3253
+ };
3254
+ let a = Z(e, t, n);
3255
+ return U(a) ? i.recurseElement(a) : Array.isArray(a) ? a.map((e) => U(e) ? i.recurseElement(e) : e) : Mr(a) && !(r && y(r)) ? t.getState(a.target) ?? null : a;
3256
+ }
3257
+ if (typeof e == "string" && r && y(r)) return e;
3258
+ if (Array.isArray(e)) return e.map((e) => i.recurse(e, r));
3259
+ if (U(e)) return i.recurseElement(e);
3260
+ if (Br(e)) return e;
3261
+ let a = e, o = !1;
3262
+ for (let e of Object.values(a)) if (typeof e == "object" && e) {
3263
+ o = !0;
3264
+ break;
3265
+ }
3266
+ if (o) {
3267
+ let e = {};
3268
+ for (let [t, n] of Object.entries(a)) e[t] = i.recurse(n, r);
3269
+ return e;
3270
+ }
3271
+ return e;
3272
+ }
3273
+ function Xr(e, t) {
3274
+ if (e.hasDynamicProps === !1) return e;
3275
+ let n = { library: t.library }, r = t.library.components[e.typeName], i = {}, a = "", o = (n) => {
3276
+ t.errors?.push({
3277
+ source: "runtime",
3278
+ code: "runtime-error",
3279
+ component: e.typeName,
3280
+ statementId: e.statementId,
3281
+ message: `Evaluating prop "${a}" on ${e.typeName} failed: ${n}`,
3282
+ hint: `Check the expression used for prop "${a}"`
3283
+ });
3284
+ }, s = t.ctx.functions || t.ctx.actions ? {
3285
+ ...t,
3286
+ ctx: {
3287
+ ...t.ctx,
3288
+ reportError: o
3289
+ }
3290
+ } : t;
3291
+ for (let [t, c] of Object.entries(e.props)) {
3292
+ a = t;
3293
+ let e = r?.props?.shape?.[a];
3294
+ try {
3295
+ i[a] = Qr(c, s, n, e);
3296
+ } catch (e) {
3297
+ i[a] = c, o(e instanceof Error ? e.message : String(e));
3298
+ }
3299
+ }
3300
+ return {
3301
+ ...e,
3302
+ props: i
3303
+ };
3304
+ }
3305
+ function Zr(e, t) {
3306
+ if (e.root) return Xr(e.root, t);
3307
+ if (!e.rootExpression) return null;
3308
+ let n = Z(e.rootExpression, t.ctx, { library: t.library });
3309
+ return U(n) ? Xr(n, t) : (t.errors?.push({
3310
+ source: "runtime",
3311
+ code: "no-root",
3312
+ statementId: "root",
3313
+ message: "root does not evaluate to a component"
3314
+ }), null);
3315
+ }
3316
+ function Qr(e, t, n, r) {
3317
+ return Jr(e, t.ctx, n, r, {
3318
+ recurseElement: (e) => Xr(e, t),
3319
+ recurse: (e, r) => Qr(e, t, n, r)
3320
+ });
3321
+ }
3322
+ var $r = class extends Error {
3323
+ toolErrorText;
3324
+ constructor(e) {
3325
+ super(`MCP tool error: ${e || "Unknown error"}`), this.name = "McpToolError", this.toolErrorText = e;
3326
+ }
3327
+ };
3328
+ function ei(e) {
3329
+ if (e.isError) {
3330
+ let t = e.content?.filter((e) => e.type === "text").map((e) => e.text).join("\n");
3331
+ throw new $r(t || "Unknown error");
3332
+ }
3333
+ if (e.structuredContent != null) return e.structuredContent;
3334
+ let t = e.content?.filter((e) => e.type === "text").map((e) => e.text ?? "");
3335
+ if (t?.length) {
3336
+ let e = t.join("");
3337
+ try {
3338
+ return JSON.parse(e);
3339
+ } catch {
3340
+ return e;
3341
+ }
3342
+ }
3343
+ return null;
3344
+ }
3345
+ var ti = class extends Error {
3346
+ toolName;
3347
+ availableTools;
3348
+ constructor(e, t = []) {
3349
+ super(`[openui] No handler for tool "${e}". Available: ${t.join(", ") || "(none)"}`), this.name = "ToolNotFoundError", this.toolName = e, this.availableTools = t;
3350
+ }
3351
+ };
3352
+ function ni(e) {
3353
+ return JSON.stringify(e, (e, t) => {
3354
+ if (t && typeof t == "object" && !Array.isArray(t)) {
3355
+ let e = {};
3356
+ for (let n of Object.keys(t).sort()) e[n] = t[n];
3357
+ return e;
3358
+ }
3359
+ if (t === void 0) return "__undefined__";
3360
+ if (typeof t == "number") {
3361
+ if (Number.isNaN(t)) return "__NaN__";
3362
+ if (t === Infinity) return "__Inf__";
3363
+ if (t === -Infinity) return "__-Inf__";
3364
+ }
3365
+ return t;
3366
+ });
3367
+ }
3368
+ function ri(e, t, n) {
3369
+ let r = n == null ? "" : "::" + ni(n);
3370
+ return e + "::" + ni(t) + r;
3371
+ }
3372
+ function ii(e) {
3373
+ let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), a = {
3374
+ __openui_loading: [],
3375
+ __openui_refetching: [],
3376
+ __openui_errors: []
3377
+ }, o = JSON.stringify(a), s = !1, c = 0;
3378
+ function l() {
3379
+ let e = {
3380
+ __openui_loading: [],
3381
+ __openui_refetching: [],
3382
+ __openui_errors: []
3383
+ };
3384
+ for (let [n, i] of t) {
3385
+ let t = r.get(i.cacheKey);
3386
+ if (t && t.data !== void 0) e[n] = t.data;
3387
+ else if (i.prevCacheKey) {
3388
+ let t = r.get(i.prevCacheKey);
3389
+ t && t.data !== void 0 ? e[n] = t.data : e[n] = i.defaults;
3390
+ } else e[n] = i.defaults;
3391
+ i.loading && (e.__openui_loading.push(n), i.everFetched && e.__openui_refetching.push(n)), i.error && e.__openui_errors.push(i.error);
3392
+ }
3393
+ for (let [t, r] of n) e[t] = r.result, r.error && e.__openui_errors.push(r.error);
3394
+ try {
3395
+ let t = JSON.stringify(e);
3396
+ if (t === o) return !1;
3397
+ a = e, o = t;
3398
+ } catch {
3399
+ a = e, o = "";
3400
+ }
3401
+ return !0;
3402
+ }
3403
+ function u() {
3404
+ for (let e of [...i]) e();
3405
+ }
3406
+ async function d(n, i) {
3407
+ if (!e) return;
3408
+ let a = t.get(i);
3409
+ if (!a) return;
3410
+ let o = n, c = a.toolName, p = a.args, m = r.get(o);
3411
+ m ? m.inFlight = !0 : (m = {
3412
+ data: void 0,
3413
+ inFlight: !0
3414
+ }, r.set(o, m)), a.loading = !0, l(), u();
3415
+ try {
3416
+ let n = await e.callTool(c, p ?? {});
3417
+ if (s) return;
3418
+ let r = t.get(i);
3419
+ if (!r || r.cacheKey !== o) {
3420
+ m.inFlight = !1;
3421
+ return;
3422
+ }
3423
+ if (m.data = n ?? null, r.everFetched = !0, r.error = void 0, r.prevCacheKey && r.prevCacheKey !== o) {
3424
+ let e = r.prevCacheKey;
3425
+ r.prevCacheKey = void 0, f(e);
3426
+ }
3427
+ } catch (e) {
3428
+ let n = t.get(i);
3429
+ n && n.cacheKey === o && (e instanceof ti ? n.error = {
3430
+ source: "query",
3431
+ code: "tool-not-found",
3432
+ message: `Query tool "${c}" not found`,
3433
+ statementId: i,
3434
+ component: "Query",
3435
+ toolName: c,
3436
+ hint: e.availableTools.length ? `Available tools: ${e.availableTools.join(", ")}` : void 0
3437
+ } : e instanceof $r ? n.error = {
3438
+ source: "query",
3439
+ code: "mcp-error",
3440
+ message: `Query "${c}" returned an error: ${e.toolErrorText}`,
3441
+ statementId: i,
3442
+ component: "Query",
3443
+ toolName: c
3444
+ } : n.error = {
3445
+ source: "query",
3446
+ code: "tool-error",
3447
+ message: `Query "${c}" failed: ${e instanceof Error ? e.message : String(e)}`,
3448
+ statementId: i,
3449
+ component: "Query",
3450
+ toolName: c
3451
+ }), console.error(`Query "${c}" failed:`, e);
3452
+ } finally {
3453
+ m.inFlight = !1;
3454
+ let e = t.get(i);
3455
+ e && e.cacheKey === o ? (e.loading = !1, l() && u(), e.needsRefetch && (e.needsRefetch = !1, d(e.cacheKey, i))) : l() && u();
3456
+ }
3457
+ }
3458
+ function f(e) {
3459
+ for (let n of t.values()) if (n.cacheKey === e || n.prevCacheKey === e) return;
3460
+ r.delete(e);
3461
+ }
3462
+ function p(n) {
3463
+ if (s) return;
3464
+ let i = new Set(n.map((e) => e.statementId));
3465
+ for (let [e, n] of t) i.has(e) || (n.timer && clearInterval(n.timer), t.delete(e), f(n.cacheKey), n.prevCacheKey && f(n.prevCacheKey));
3466
+ for (let i of n) {
3467
+ if (!i.complete) continue;
3468
+ let n = ri(i.toolName, i.args, i.deps), a = t.get(i.statementId);
3469
+ a ? (a.cacheKey !== n && (a.prevCacheKey = a.cacheKey), a.toolName = i.toolName, a.args = i.args, a.defaults = i.defaults, a.cacheKey = n) : t.set(i.statementId, {
3470
+ toolName: i.toolName,
3471
+ args: i.args,
3472
+ defaults: i.defaults,
3473
+ cacheKey: n,
3474
+ loading: !1,
3475
+ everFetched: !1,
3476
+ refreshInterval: 0,
3477
+ needsRefetch: !1
3478
+ });
3479
+ let o = t.get(i.statementId), c = r.get(n), l = c && c.data !== void 0 && !c.inFlight;
3480
+ e && !l && !c?.inFlight && d(n, i.statementId);
3481
+ let u = i.refreshInterval ?? 0;
3482
+ u !== o.refreshInterval && (o.timer &&= (clearInterval(o.timer), void 0), u > 0 && (o.timer = setInterval(() => {
3483
+ s || !e || r.get(o.cacheKey)?.inFlight || d(o.cacheKey, i.statementId);
3484
+ }, u * 1e3)), o.refreshInterval = u);
3485
+ }
3486
+ l() && u();
3487
+ }
3488
+ function m(e) {
3489
+ let n = t.get(e);
3490
+ if (!n) return null;
3491
+ let i = r.get(n.cacheKey);
3492
+ if (i && i.data !== void 0) return i.data;
3493
+ if (n.prevCacheKey) {
3494
+ let e = r.get(n.prevCacheKey);
3495
+ if (e && e.data !== void 0) return e.data;
3496
+ }
3497
+ return n.defaults;
3498
+ }
3499
+ function h(e) {
3500
+ return t.get(e)?.loading ?? !1;
3501
+ }
3502
+ function g() {
3503
+ for (let e of t.values()) if (e.loading) return !0;
3504
+ return !1;
3505
+ }
3506
+ function _(n) {
3507
+ if (s || !e) return;
3508
+ let i = n?.length ? n.filter((e) => t.has(e)) : [...t.keys()];
3509
+ for (let e of i) {
3510
+ let n = t.get(e);
3511
+ n && (r.get(n.cacheKey)?.inFlight ? n.needsRefetch = !0 : d(n.cacheKey, e));
3512
+ }
3513
+ }
3514
+ function v(e) {
3515
+ let t = new Set(e.map((e) => e.statementId));
3516
+ for (let e of n.keys()) t.has(e) || n.delete(e);
3517
+ for (let t of e) {
3518
+ let e = n.get(t.statementId);
3519
+ e ? e.toolName !== t.toolName && (e.toolName = t.toolName, e.result = {
3520
+ status: "idle",
3521
+ data: null,
3522
+ error: null
3523
+ }, e.error = void 0) : n.set(t.statementId, {
3524
+ toolName: t.toolName,
3525
+ result: { status: "idle" }
3526
+ });
3527
+ }
3528
+ l() && u();
3529
+ }
3530
+ async function ee(t, r, i) {
3531
+ if (s || !e) return !1;
3532
+ let a = n.get(t);
3533
+ if (!a || a.result.status === "loading") return !1;
3534
+ let o = c;
3535
+ a.result = { status: "loading" }, l(), u();
3536
+ let d = !1;
3537
+ try {
3538
+ let t = await e.callTool(a.toolName, r);
3539
+ if (s || o !== c) return !1;
3540
+ a.result = {
3541
+ status: "success",
3542
+ data: t
3543
+ }, a.error = void 0, d = !0;
3544
+ } catch (e) {
3545
+ if (s || o !== c) return !1;
3546
+ let n = e instanceof Error ? e.message : String(e);
3547
+ a.result = {
3548
+ status: "error",
3549
+ error: n
3550
+ }, e instanceof ti ? a.error = {
3551
+ source: "mutation",
3552
+ code: "tool-not-found",
3553
+ message: `Mutation tool "${a.toolName}" not found`,
3554
+ statementId: t,
3555
+ component: "Mutation",
3556
+ toolName: a.toolName,
3557
+ hint: e.availableTools.length ? `Available tools: ${e.availableTools.join(", ")}` : void 0
3558
+ } : e instanceof $r ? a.error = {
3559
+ source: "mutation",
3560
+ code: "mcp-error",
3561
+ message: `Mutation "${a.toolName}" returned an error: ${e.toolErrorText}`,
3562
+ statementId: t,
3563
+ component: "Mutation",
3564
+ toolName: a.toolName
3565
+ } : a.error = {
3566
+ source: "mutation",
3567
+ code: "tool-error",
3568
+ message: `Mutation "${a.toolName}" failed: ${n}`,
3569
+ statementId: t,
3570
+ component: "Mutation",
3571
+ toolName: a.toolName
3572
+ };
3573
+ }
3574
+ return l(), u(), d && i?.length && _(i), d;
3575
+ }
3576
+ function te(e) {
3577
+ return n.get(e)?.result ?? null;
3578
+ }
3579
+ function y(e) {
3580
+ return i.add(e), () => i.delete(e);
3581
+ }
3582
+ function b() {
3583
+ return a;
3584
+ }
3585
+ function x() {
3586
+ s = !1;
3587
+ }
3588
+ function S() {
3589
+ s = !0, c++, i.clear();
3590
+ for (let e of t.values()) e.timer &&= (clearInterval(e.timer), void 0), e.refreshInterval = 0, e.loading = !1, e.needsRefetch = !1;
3591
+ n.clear();
3592
+ }
3593
+ return {
3594
+ evaluateQueries: p,
3595
+ getResult: m,
3596
+ isLoading: h,
3597
+ isAnyLoading: g,
3598
+ invalidate: _,
3599
+ registerMutations: v,
3600
+ fireMutation: ee,
3601
+ getMutationResult: te,
3602
+ subscribe: y,
3603
+ getSnapshot: b,
3604
+ activate: x,
3605
+ dispose: S
3606
+ };
3607
+ }
3608
+ function ai(e, t, n, r, i, a) {
3609
+ if (Mr(t) && n && r) {
3610
+ let { target: i, expr: a } = t;
3611
+ return {
3612
+ name: e,
3613
+ value: n.get(i),
3614
+ setValue: (e) => {
3615
+ let t = { $value: e }, o = Z(a, {
3616
+ ...r,
3617
+ extraScope: t
3618
+ });
3619
+ n.set(i, o);
3620
+ },
3621
+ isReactive: !0
3622
+ };
3623
+ }
3624
+ return {
3625
+ name: e,
3626
+ value: i(e) ?? t,
3627
+ setValue: (t) => a(e, t),
3628
+ isReactive: !1
3629
+ };
3630
+ }
3631
+ function oi() {
3632
+ let e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = {};
3633
+ function i() {
3634
+ let e = [...n];
3635
+ for (let t of e) t();
3636
+ }
3637
+ function a() {
3638
+ r = Object.fromEntries(e);
3639
+ }
3640
+ function o(t) {
3641
+ return e.get(t);
3642
+ }
3643
+ function s(n, r, o) {
3644
+ o?.pristine ? t.add(n) : t.delete(n);
3645
+ let s = e.get(n);
3646
+ if (!Object.is(s, r)) {
3647
+ if (r && s && typeof r == "object" && typeof s == "object" && !Array.isArray(r) && !Array.isArray(s)) {
3648
+ let e = Object.keys(r), t = Object.keys(s);
3649
+ if (e.length === t.length && e.every((e) => Object.is(r[e], s[e]))) return;
3650
+ }
3651
+ e.set(n, r), a(), i();
3652
+ }
3653
+ }
3654
+ function c(e) {
3655
+ return n.add(e), () => {
3656
+ n.delete(e);
3657
+ };
3658
+ }
3659
+ function l() {
3660
+ return r;
3661
+ }
3662
+ function u(n, r) {
3663
+ let o = !1;
3664
+ for (let n of Object.keys(r)) t.delete(n), (!e.has(n) || !Object.is(e.get(n), r[n])) && (e.set(n, r[n]), o = !0);
3665
+ for (let r of Object.keys(n)) e.has(r) ? t.has(r) && !Object.is(e.get(r), n[r]) && (e.set(r, n[r]), o = !0) : (e.set(r, n[r]), t.add(r), o = !0);
3666
+ o && (a(), i());
3667
+ }
3668
+ function d() {
3669
+ e.clear(), t.clear(), n.clear(), r = {};
3670
+ }
3671
+ return {
3672
+ get: o,
3673
+ set: s,
3674
+ subscribe: c,
3675
+ getSnapshot: l,
3676
+ initialize: u,
3677
+ dispose: d
3678
+ };
3679
+ }
3680
+ var si = new Set([
3681
+ "min",
3682
+ "max",
3683
+ "minLength",
3684
+ "maxLength"
3685
+ ]);
3686
+ function ci(e) {
3687
+ let t = e.indexOf(":");
3688
+ if (t === -1) return { type: e };
3689
+ let n = e.slice(0, t), r = e.slice(t + 1);
3690
+ return {
3691
+ type: n,
3692
+ arg: si.has(n) && !Number.isNaN(Number(r)) ? Number(r) : r
3693
+ };
3694
+ }
3695
+ function li(e) {
3696
+ return Array.isArray(e) ? e.filter((e) => typeof e == "string").map(ci) : [];
3697
+ }
3698
+ function $(e) {
3699
+ return e == null || e === "" || Array.isArray(e) && e.length === 0 ? !0 : e && typeof e == "object" && !Array.isArray(e) && "value" in e ? $(e.value) : !!(typeof e == "object" && e && !Array.isArray(e) && Object.keys(e).length === 0);
3700
+ }
3701
+ var ui = {
3702
+ required: (e) => {
3703
+ if ($(e)) return "This field is required";
3704
+ if (typeof e == "object" && !Array.isArray(e) && e !== null) {
3705
+ let t = Object.values(e);
3706
+ if (t.length > 0 && t.every((e) => typeof e == "boolean") && !t.some(Boolean)) return "At least one option is required";
3707
+ }
3708
+ },
3709
+ email: (e) => {
3710
+ if (!$(e)) return typeof e == "string" && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e) ? void 0 : "Please enter a valid email";
3711
+ },
3712
+ url: (e) => {
3713
+ if (!$(e)) {
3714
+ if (typeof e != "string") return "Please enter a valid URL";
3715
+ try {
3716
+ new URL(e);
3717
+ return;
3718
+ } catch {
3719
+ return "Please enter a valid URL";
3720
+ }
3721
+ }
3722
+ },
3723
+ numeric: (e) => {
3724
+ if (!$(e) && !(typeof e == "number" && !isNaN(e)) && !(typeof e == "string" && !isNaN(parseFloat(e)) && e.trim() !== "")) return "Must be a number";
3725
+ },
3726
+ min: (e, t) => {
3727
+ if ($(e)) return;
3728
+ let n = typeof e == "number" ? e : parseFloat(String(e));
3729
+ if (isNaN(n)) return;
3730
+ let r = Number(t);
3731
+ return n >= r ? void 0 : `Must be at least ${r}`;
3732
+ },
3733
+ max: (e, t) => {
3734
+ if ($(e)) return;
3735
+ let n = typeof e == "number" ? e : parseFloat(String(e));
3736
+ if (isNaN(n)) return;
3737
+ let r = Number(t);
3738
+ return n <= r ? void 0 : `Must be no more than ${r}`;
3739
+ },
3740
+ minLength: (e, t) => {
3741
+ if ($(e) || typeof e != "string") return;
3742
+ let n = Number(t);
3743
+ return e.length >= n ? void 0 : `Must be at least ${n} characters`;
3744
+ },
3745
+ maxLength: (e, t) => {
3746
+ if ($(e) || typeof e != "string") return;
3747
+ let n = Number(t);
3748
+ return e.length <= n ? void 0 : `Must be no more than ${n} characters`;
3749
+ },
3750
+ pattern: (e, t) => {
3751
+ if (!$(e) && !(typeof e != "string" || typeof t != "string")) try {
3752
+ return new RegExp(t).test(e) ? void 0 : "Invalid format";
3753
+ } catch {
3754
+ return;
3755
+ }
3756
+ }
3757
+ };
3758
+ function di(e, t, n) {
3759
+ for (let r of t) {
3760
+ let t = n?.[r.type] ?? ui[r.type];
3761
+ if (!t) {
3762
+ console.warn(`[openui] Unknown validation rule type: "${r.type}"`);
3763
+ continue;
3764
+ }
3765
+ let i = t(e, r.arg);
3766
+ if (i) return i;
3767
+ }
3768
+ }
3769
+ function fi(e) {
3770
+ if (!e || typeof e != "object" || Array.isArray(e)) return [];
3771
+ let t = e, n = [];
3772
+ for (let [e, r] of Object.entries(t)) r === !1 || r == null || (r === !0 ? n.push({ type: e }) : n.push({
3773
+ type: e,
3774
+ arg: r
3775
+ }));
3776
+ return n;
3777
+ }
3778
+ //#endregion
3779
+ export { N as ACTION_STEPS, fn as BuiltinActionType, ti as ToolNotFoundError, ze as action, dn as buildMessage, ui as builtInValidators, nn as createLibrary, Cr as createParser, ii as createQueryManager, oi as createStore, wr as createStreamingParser, k as defineAction, Zt as defineComponent, O as defineFunction, Er as enrichErrors, Z as evaluate, Zr as evaluateRoot, ei as extractToolResult, qt as generatePrompt, Jt as generateSystemPrompt, Mr as isReactiveAssign, te as markReactive, jr as mergeStatements, un as parseMessage, li as parseRules, fi as parseStructuredRules, ai as resolveStateField, P as steps, x as tagSchemaId, di as validate };