@pouchy_ai/companion-sdk 0.40.1 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/a2ui.js ADDED
@@ -0,0 +1,622 @@
1
+ // Instant UI ⇄ Google A2UI v0.9 adapter — the PUBLIC, package-shipped home of
2
+ // the projection (round #127; owner-approved 2026-07-25). Integrators import
3
+ // `toA2UI` / `fromA2UI` from `@pouchy_ai/companion-sdk` (or the CDN bundle) and
4
+ // put the adapter in front of any renderer built against the A2UI catalog —
5
+ // no more vendoring the repo source, which was the one DX gap of the A2UI
6
+ // alignment.
7
+ //
8
+ // WHY the projection exists: Pouchy's Instant UI is a NESTED, state-bag schema;
9
+ // Google's A2UI v0.9 (the standard AGenUI implements) is a FLAT component list
10
+ // with ID references, a separate dataModel, and JSON-Pointer bindings. Three
11
+ // structural transforms:
12
+ // (i) nested tree → flat components map + ID refs
13
+ // (ii) state bag + bind/template → dataModel + {path:"/key"} JSON Pointer
14
+ // (iii) Button's embedded action → A2UI event {name, context}, the action
15
+ // carried in context so the host can dispatch it locally (no LLM
16
+ // round-trip) — external A2UI agents just receive the event.
17
+ //
18
+ // Fidelity: concepts A2UI genuinely has no standard for (Progress, Accordion,
19
+ // Chart's area/pie kinds, computed, `when`, Text tone, Slider step, TextField
20
+ // placeholder/maxLength, Select placeholder) ride a per-component `_pouchy`
21
+ // extension (A2UI renderers ignore unknown keys; fromA2UI reconstructs from
22
+ // it). Input widgets otherwise emit their STANDARD A2UI fields — TextField
23
+ // `variant` (longText|shortText), ChoicePicker `variant` (mutuallyExclusive),
24
+ // and a single-placeholder Text template emits a real {path} binding — so an
25
+ // external renderer honours the widget kind, not just a default.
26
+ // `fromA2UI(toA2UI(x))` is a faithful round-trip (pinned by the app-side
27
+ // adapter tests + the admin A2UI conformance probe).
28
+ //
29
+ // Spec conformance: component + field names below are verified against
30
+ // AGenUI's agenui_catalog.json and google/A2UI v0.9 — Text/Button/Row/Column/
31
+ // Card/Tabs/Image(url,description)/Video(url)/AudioPlayer(url)/Slider/
32
+ // CheckBox/ChoicePicker/TextField/DateTimeInput/Divider(axis) are standard;
33
+ // Table(columns,rows), Chart(chartType,data) and Markdown(content) are also
34
+ // standard catalog entries, so they emit the standard shape while `_pouchy`
35
+ // carries Pouchy's richer original for a lossless round-trip. Only Progress +
36
+ // Accordion stay `pouchy/`-namespaced custom components. Centralized in the
37
+ // A2UI map so a spec change is a one-line edit, never a transform rewrite.
38
+ //
39
+ // TYPES: the panel types below are a STRUCTURAL MIRROR of the app's canonical
40
+ // genui schema (src/lib/genui/schema.ts) — the package must stay standalone
41
+ // (no app imports; the npm build's rootDir is this directory), so the type
42
+ // text is duplicated ON PURPOSE, with one deliberate loosening: a Button /
43
+ // Table-row action is an opaque `EmbeddedAction { type }` here (the app's full
44
+ // AgentAction union is app-internal; the adapter only carries actions
45
+ // verbatim, never reads their fields). Drift is compile-enforced: the app-side
46
+ // shim (src/lib/genui/a2ui-adapter.ts) passes its STRICT DynamicInterface
47
+ // straight into `toA2UI` with no cast, so a mirror that goes incompatible or
48
+ // loses a node kind fails `pnpm check`; the node-type CATALOG is additionally
49
+ // pinned to the app's GENUI_NODE_SET by a2ui-sdk-drift.test.ts.
50
+ /** The Instant UI node-type catalog, as data — drift-pinned against the app's
51
+ * canonical GENUI_NODE_SET so the mirror can never silently lag a new atom. */
52
+ export const INSTANT_UI_NODE_TYPES = [
53
+ 'Text',
54
+ 'Button',
55
+ 'Progress',
56
+ 'Icon',
57
+ 'Slider',
58
+ 'Switch',
59
+ 'Select',
60
+ 'TextInput',
61
+ 'Group',
62
+ 'Image',
63
+ 'Chart',
64
+ 'Table',
65
+ 'DatePicker',
66
+ 'Tabs',
67
+ 'Accordion',
68
+ 'Divider',
69
+ 'Card',
70
+ 'Video',
71
+ 'AudioPlayer',
72
+ 'Markdown'
73
+ ];
74
+ // Centralized so a spec correction never touches the transform logic below.
75
+ const A2UI = {
76
+ rowComponent: 'Row',
77
+ columnComponent: 'Column',
78
+ // Pouchy-custom components — NOT in the A2UI v0.9 catalog, so they're
79
+ // namespaced and registered as custom components for external interop
80
+ // (they carry semantics A2UI's standard catalog lacks). Progress + Accordion
81
+ // have no standard A2UI equivalent; Table/Chart/Markdown DO (Table+Chart are
82
+ // SDK/Playground catalog entries, Markdown is a Playground example), so those
83
+ // use the standard names below and round-trip losslessly via `_pouchy`.
84
+ progressComponent: 'pouchy/Progress',
85
+ accordionComponent: 'pouchy/Accordion',
86
+ // Standard-catalog component names (verified against AGenUI agenui_catalog.json
87
+ // / google/A2UI v0.9: Table columns/rows, Chart chartType+data, Markdown content).
88
+ chartComponent: 'Chart',
89
+ tableComponent: 'Table',
90
+ textComponent: 'Text',
91
+ buttonComponent: 'Button',
92
+ iconComponent: 'Icon',
93
+ imageComponent: 'Image',
94
+ sliderComponent: 'Slider',
95
+ checkboxComponent: 'CheckBox',
96
+ choicePickerComponent: 'ChoicePicker',
97
+ textFieldComponent: 'TextField',
98
+ dateTimeComponent: 'DateTimeInput',
99
+ tabsComponent: 'Tabs',
100
+ dividerComponent: 'Divider',
101
+ cardComponent: 'Card',
102
+ videoComponent: 'Video',
103
+ audioComponent: 'AudioPlayer',
104
+ markdownComponent: 'Markdown',
105
+ // The event name carrying a Pouchy-embedded action.
106
+ pouchyActionEvent: 'pouchyAction'
107
+ };
108
+ /** JSON Pointer for a top-level dataModel key (keys are flat, no nesting). */
109
+ const ptr = (key) => ({ path: `/${key}` });
110
+ const isPtr = (v) => !!v && typeof v === 'object' && typeof v.path === 'string';
111
+ /** Key from a top-level JSON Pointer ("/qty" → "qty"). */
112
+ const ptrKey = (p) => p.path.replace(/^\//, '');
113
+ /** If a template is exactly ONE whole-value placeholder ("{total}"), return the
114
+ * key; else null. A2UI Text has no inline string interpolation, but its `text`
115
+ * IS a DynamicString that accepts a {path} binding — so a single-placeholder
116
+ * template can be emitted as a real binding an external renderer interpolates.
117
+ * A mixed template ("¥{total} left") has no A2UI form and stays literal. */
118
+ const singlePlaceholderKey = (tmpl) => {
119
+ const m = /^\{([\w.-]+)\}$/.exec(tmpl.trim());
120
+ return m ? m[1] : null;
121
+ };
122
+ // ─── toA2UI: Instant UI panel → A2UI surface ─────────────────────────────────
123
+ export function toA2UI(input) {
124
+ // The loose `payload.interface` shape is server-validated before it ever
125
+ // reaches a host, so the structural narrow here is safe (see InstantUIInput).
126
+ const iface = input;
127
+ const components = {};
128
+ let counter = 0;
129
+ const nextId = () => `c${counter++}`;
130
+ /** Emit one component (and its descendants), return its id. */
131
+ const emit = (node) => {
132
+ const id = nextId();
133
+ const c = buildComponent(id, node, emit);
134
+ if (node.when)
135
+ c._pouchy = { ...(c._pouchy ?? {}), when: node.when };
136
+ components[id] = c;
137
+ return id;
138
+ };
139
+ // The surface root is a Column wrapping the top-level node list (A2UI surfaces
140
+ // have a single root component).
141
+ const childIds = iface.nodes.map(emit);
142
+ const rootId = nextId();
143
+ components[rootId] = {
144
+ id: rootId,
145
+ component: A2UI.columnComponent,
146
+ children: childIds
147
+ };
148
+ const pouchy = {};
149
+ if (iface.title)
150
+ pouchy.title = iface.title;
151
+ if (iface.computed)
152
+ pouchy.computed = iface.computed;
153
+ if (iface.reportChanges)
154
+ pouchy.reportChanges = true;
155
+ if (iface.allowedActions)
156
+ pouchy.allowedActions = iface.allowedActions;
157
+ return {
158
+ root: rootId,
159
+ components,
160
+ dataModel: { ...(iface.state ?? {}) },
161
+ ...(Object.keys(pouchy).length > 0 ? { pouchy } : {})
162
+ };
163
+ }
164
+ /** Encode a Button's embedded action as an A2UI event (host dispatches it
165
+ * locally from context — external agents just receive the event). */
166
+ const encodeAction = (action) => action ? { event: { name: A2UI.pouchyActionEvent, context: { action } } } : null;
167
+ /** Map Pouchy's chart kinds to A2UI's standard `chartType` (line | donut | bar).
168
+ * A2UI has no area/pie, so area→line and pie→donut — the original kind is kept
169
+ * in `_pouchy.chart` so fromA2UI restores it exactly. */
170
+ const A2UI_CHART_TYPE = {
171
+ bar: 'bar',
172
+ line: 'line',
173
+ area: 'line',
174
+ pie: 'donut',
175
+ donut: 'donut'
176
+ };
177
+ /** Build A2UI's standard Chart `data` ({series:[{name,data:[{value,label}]}]})
178
+ * from Pouchy's number[] | {label?,value}[] so an external A2UI renderer draws
179
+ * the series even without reading `_pouchy`. */
180
+ function toA2UIChartData(data) {
181
+ const arr = Array.isArray(data) ? data : [];
182
+ const points = arr.map((d, i) => typeof d === 'number'
183
+ ? { value: d, label: String(i + 1) }
184
+ : {
185
+ value: Number(d?.value ?? 0),
186
+ ...(d?.label !== undefined
187
+ ? { label: String(d.label) }
188
+ : {})
189
+ });
190
+ return { series: [{ name: 'series', data: points }] };
191
+ }
192
+ function buildComponent(id, node, emit) {
193
+ switch (node.type) {
194
+ case 'Text': {
195
+ // A2UI Text's `text` is a DynamicString (literal | {path} | function).
196
+ // A single-placeholder template ("{total}") becomes a real {path}
197
+ // binding so an external renderer interpolates it live; a mixed template
198
+ // stays literal (no A2UI inline-interp form). Tone + the literal-vs-
199
+ // template distinction ride `_pouchy` so the round-trip is exact.
200
+ const soleKey = node.template ? singlePlaceholderKey(node.template) : null;
201
+ const text = soleKey ? ptr(soleKey) : (node.template ?? node.text ?? '');
202
+ return {
203
+ id,
204
+ component: A2UI.textComponent,
205
+ text,
206
+ _pouchy: { kind: node.template ? 'template' : 'text', ...(node.tone ? { tone: node.tone } : {}) }
207
+ };
208
+ }
209
+ case 'Button': {
210
+ // A2UI Button references a child component (the label Text).
211
+ const labelId = emit({ type: 'Text', text: node.label });
212
+ return {
213
+ id,
214
+ component: A2UI.buttonComponent,
215
+ child: labelId,
216
+ action: encodeAction(node.action),
217
+ ...(node.variant ? { variant: node.variant } : {})
218
+ };
219
+ }
220
+ case 'Progress':
221
+ return {
222
+ id,
223
+ component: A2UI.progressComponent,
224
+ value: isStateRefVal(node.value) ? ptr(node.value.$state) : node.value,
225
+ ...(node.max !== undefined ? { max: node.max } : {}),
226
+ ...(node.variant ? { variant: node.variant } : {})
227
+ };
228
+ case 'Icon':
229
+ return { id, component: A2UI.iconComponent, name: node.name, ...(node.size ? { size: node.size } : {}) };
230
+ case 'Slider':
231
+ return {
232
+ id,
233
+ component: A2UI.sliderComponent,
234
+ value: ptr(node.bind),
235
+ ...(node.min !== undefined ? { min: node.min } : {}),
236
+ ...(node.max !== undefined ? { max: node.max } : {}),
237
+ ...(node.label ? { label: node.label } : {}),
238
+ _pouchy: { ...(node.step !== undefined ? { step: node.step } : {}) }
239
+ };
240
+ case 'Switch':
241
+ return {
242
+ id,
243
+ component: A2UI.checkboxComponent,
244
+ value: ptr(node.bind),
245
+ ...(node.label ? { label: node.label } : {}),
246
+ _pouchy: { kind: 'switch' }
247
+ };
248
+ case 'Select':
249
+ // Pouchy Select is single-select → A2UI ChoicePicker variant
250
+ // 'mutuallyExclusive'. placeholder is non-standard → rides `_pouchy`.
251
+ return {
252
+ id,
253
+ component: A2UI.choicePickerComponent,
254
+ value: ptr(node.bind),
255
+ options: node.options,
256
+ variant: 'mutuallyExclusive',
257
+ ...(node.placeholder ? { _pouchy: { placeholder: node.placeholder } } : {})
258
+ };
259
+ case 'TextInput':
260
+ // A2UI TextField uses `variant` (longText | shortText | number |
261
+ // obscured) instead of a multiline flag; placeholder + maxLength are
262
+ // non-standard, so they ride `_pouchy` for the round-trip.
263
+ return {
264
+ id,
265
+ component: A2UI.textFieldComponent,
266
+ value: ptr(node.bind),
267
+ variant: node.multiline ? 'longText' : 'shortText',
268
+ ...(node.label ? { label: node.label } : {}),
269
+ ...(node.placeholder !== undefined || node.maxLength !== undefined
270
+ ? {
271
+ _pouchy: {
272
+ ...(node.placeholder ? { placeholder: node.placeholder } : {}),
273
+ ...(node.maxLength !== undefined ? { maxLength: node.maxLength } : {})
274
+ }
275
+ }
276
+ : {})
277
+ };
278
+ case 'DatePicker':
279
+ return {
280
+ id,
281
+ component: A2UI.dateTimeComponent,
282
+ value: ptr(node.bind),
283
+ ...(node.label ? { label: node.label } : {}),
284
+ ...(node.min ? { min: node.min } : {}),
285
+ ...(node.max ? { max: node.max } : {})
286
+ };
287
+ case 'Image':
288
+ return {
289
+ id,
290
+ component: A2UI.imageComponent,
291
+ url: node.src,
292
+ ...(node.alt ? { description: node.alt } : {}),
293
+ ...(node.ratio !== undefined ? { _pouchy: { ratio: node.ratio } } : {})
294
+ };
295
+ case 'Group': {
296
+ // gap/wrap have no A2UI standard, so they ride `_pouchy` — but only emit
297
+ // the extension when there's something to carry, so plain layout
298
+ // wrappers (and the Column wrappers Tabs/Card synthesize) stay clean
299
+ // instead of shipping an empty `_pouchy: {}`.
300
+ const ext = {
301
+ ...(node.gap !== undefined ? { gap: node.gap } : {}),
302
+ ...(node.wrap ? { wrap: true } : {})
303
+ };
304
+ return {
305
+ id,
306
+ component: node.direction === 'row' ? A2UI.rowComponent : A2UI.columnComponent,
307
+ children: node.children.map(emit),
308
+ ...(Object.keys(ext).length > 0 ? { _pouchy: ext } : {})
309
+ };
310
+ }
311
+ case 'Tabs':
312
+ return {
313
+ id,
314
+ component: A2UI.tabsComponent,
315
+ // A2UI tab = { title, child }; wrap each tab's node list in a Column.
316
+ tabs: node.tabs.map((t) => ({
317
+ title: t.label,
318
+ child: emit({ type: 'Group', direction: 'column', children: t.children })
319
+ })),
320
+ ...(node.bind ? { _pouchy: { bind: node.bind } } : {})
321
+ };
322
+ case 'Accordion':
323
+ return {
324
+ id,
325
+ component: A2UI.accordionComponent,
326
+ _pouchy: {
327
+ sections: node.sections.map((s) => ({
328
+ label: s.label,
329
+ childIds: s.children.map(emit),
330
+ ...(s.open ? { open: true } : {})
331
+ })),
332
+ ...(node.multi ? { multi: true } : {})
333
+ }
334
+ };
335
+ case 'Chart':
336
+ // Emit the STANDARD A2UI Chart shape (chartType + data series) so an
337
+ // external renderer draws it, AND carry Pouchy's richer original (area/pie
338
+ // kinds, raw data, max) in `_pouchy` for a lossless round-trip back.
339
+ return {
340
+ id,
341
+ component: A2UI.chartComponent,
342
+ chartType: A2UI_CHART_TYPE[node.chart] ?? 'bar',
343
+ data: toA2UIChartData(node.data),
344
+ _pouchy: {
345
+ chart: node.chart,
346
+ data: node.data,
347
+ ...(node.max !== undefined ? { max: node.max } : {}),
348
+ ...(node.title ? { title: node.title } : {})
349
+ }
350
+ };
351
+ case 'Table':
352
+ return {
353
+ id,
354
+ component: A2UI.tableComponent,
355
+ columns: node.columns,
356
+ rows: node.rows,
357
+ ...(node.title ? { _pouchy: { title: node.title } } : {})
358
+ };
359
+ case 'Video':
360
+ return {
361
+ id,
362
+ component: A2UI.videoComponent,
363
+ url: node.src,
364
+ ...(node.ratio !== undefined ? { _pouchy: { ratio: node.ratio } } : {})
365
+ };
366
+ case 'AudioPlayer':
367
+ return {
368
+ id,
369
+ component: A2UI.audioComponent,
370
+ url: node.src,
371
+ ...(node.title ? { _pouchy: { title: node.title } } : {})
372
+ };
373
+ case 'Markdown':
374
+ // A2UI's Markdown field is `content` (not `text`).
375
+ return { id, component: A2UI.markdownComponent, content: node.text };
376
+ case 'Divider':
377
+ // A2UI Divider carries an `axis`; Pouchy only renders horizontal rules.
378
+ return { id, component: A2UI.dividerComponent, axis: 'horizontal' };
379
+ case 'Card':
380
+ // A2UI Card is single-child; wrap the node list in a Column and carry
381
+ // the optional title on the extension (A2UI Card has no title slot).
382
+ return {
383
+ id,
384
+ component: A2UI.cardComponent,
385
+ child: emit({ type: 'Group', direction: 'column', children: node.children }),
386
+ ...(node.title ? { _pouchy: { title: node.title } } : {})
387
+ };
388
+ default:
389
+ // Unreachable for validated panels (the exhaustive union above). Kept
390
+ // for LOOSE SDK input (InstantUIInput): an unknown atom degrades to an
391
+ // empty Column instead of crashing the whole projection.
392
+ return { id, component: A2UI.columnComponent, children: [] };
393
+ }
394
+ }
395
+ const isStateRefVal = (v) => !!v && typeof v === 'object' && typeof v.$state === 'string';
396
+ // ─── fromA2UI: A2UI surface → Instant UI panel ───────────────────────────────
397
+ export function fromA2UI(surface) {
398
+ const { components, root } = surface;
399
+ const rebuild = (id) => {
400
+ const c = components[id];
401
+ if (!c)
402
+ return null;
403
+ const node = rebuildNode(c, rebuild);
404
+ if (!node)
405
+ return null;
406
+ const when = c._pouchy?.when;
407
+ if (when)
408
+ node.when = when;
409
+ return node;
410
+ };
411
+ const rootComp = components[root];
412
+ const nodes = [];
413
+ if (rootComp && Array.isArray(rootComp.children)) {
414
+ for (const childId of rootComp.children) {
415
+ const n = rebuild(childId);
416
+ if (n)
417
+ nodes.push(n);
418
+ }
419
+ }
420
+ const iface = { nodes };
421
+ if (surface.pouchy?.title)
422
+ iface.title = surface.pouchy.title;
423
+ if (surface.dataModel && Object.keys(surface.dataModel).length > 0)
424
+ iface.state = { ...surface.dataModel };
425
+ if (surface.pouchy?.computed)
426
+ iface.computed = surface.pouchy.computed;
427
+ if (surface.pouchy?.reportChanges)
428
+ iface.reportChanges = true;
429
+ if (surface.pouchy?.allowedActions)
430
+ iface.allowedActions = surface.pouchy.allowedActions;
431
+ return iface;
432
+ }
433
+ /** Decode an A2UI action event back to the embedded action. */
434
+ const decodeAction = (raw) => {
435
+ const ev = raw?.event;
436
+ if (ev?.name === A2UI.pouchyActionEvent && ev.context?.action)
437
+ return ev.context.action;
438
+ return null;
439
+ };
440
+ const bindFrom = (v) => (isPtr(v) ? ptrKey(v) : '');
441
+ function rebuildNode(c, rebuild) {
442
+ const p = c._pouchy ?? {};
443
+ switch (c.component) {
444
+ case A2UI.textComponent: {
445
+ // `text` may be a literal string OR a {path} binding (a single-
446
+ // placeholder template); reconstruct the "{key}" template from the
447
+ // pointer in that case.
448
+ let node;
449
+ if (p.kind === 'template') {
450
+ const tmpl = isPtr(c.text) ? `{${ptrKey(c.text)}}` : typeof c.text === 'string' ? c.text : '';
451
+ node = { type: 'Text', template: tmpl };
452
+ }
453
+ else {
454
+ node = { type: 'Text', text: typeof c.text === 'string' ? c.text : '' };
455
+ }
456
+ if (p.tone)
457
+ node.tone = p.tone;
458
+ return node;
459
+ }
460
+ case A2UI.buttonComponent: {
461
+ // The label is the child Text component A2UI Button references.
462
+ const child = typeof c.child === 'string' ? rebuild(c.child) : null;
463
+ const label = child && child.type === 'Text' ? (child.template ?? child.text ?? '') : '';
464
+ return {
465
+ type: 'Button',
466
+ label,
467
+ ...(c.variant ? { variant: c.variant } : {}),
468
+ action: decodeAction(c.action)
469
+ };
470
+ }
471
+ case A2UI.progressComponent:
472
+ return {
473
+ type: 'Progress',
474
+ value: isPtr(c.value) ? { $state: ptrKey(c.value) } : c.value,
475
+ ...(typeof c.max === 'number' ? { max: c.max } : {}),
476
+ ...(c.variant ? { variant: c.variant } : {})
477
+ };
478
+ case A2UI.iconComponent:
479
+ return {
480
+ type: 'Icon',
481
+ name: String(c.name ?? ''),
482
+ ...(typeof c.size === 'number' ? { size: c.size } : {})
483
+ };
484
+ case A2UI.sliderComponent:
485
+ return {
486
+ type: 'Slider',
487
+ bind: bindFrom(c.value),
488
+ ...(typeof c.min === 'number' ? { min: c.min } : {}),
489
+ ...(typeof c.max === 'number' ? { max: c.max } : {}),
490
+ ...(typeof p.step === 'number' ? { step: p.step } : {}),
491
+ ...(c.label ? { label: c.label } : {})
492
+ };
493
+ case A2UI.checkboxComponent:
494
+ return {
495
+ type: 'Switch',
496
+ bind: bindFrom(c.value),
497
+ ...(c.label ? { label: c.label } : {})
498
+ };
499
+ case A2UI.choicePickerComponent:
500
+ // placeholder rides `_pouchy`; `variant` (mutuallyExclusive) is the
501
+ // single-select marker Pouchy already implies, so it's dropped here.
502
+ return {
503
+ type: 'Select',
504
+ bind: bindFrom(c.value),
505
+ options: c.options ?? [],
506
+ ...(typeof p.placeholder === 'string' ? { placeholder: p.placeholder } : {})
507
+ };
508
+ case A2UI.textFieldComponent:
509
+ // multiline ← variant:'longText'; placeholder + maxLength ← `_pouchy`.
510
+ return {
511
+ type: 'TextInput',
512
+ bind: bindFrom(c.value),
513
+ ...(c.label ? { label: c.label } : {}),
514
+ ...(typeof p.placeholder === 'string' ? { placeholder: p.placeholder } : {}),
515
+ ...(c.variant === 'longText' ? { multiline: true } : {}),
516
+ ...(typeof p.maxLength === 'number' ? { maxLength: p.maxLength } : {})
517
+ };
518
+ case A2UI.dateTimeComponent:
519
+ return {
520
+ type: 'DatePicker',
521
+ bind: bindFrom(c.value),
522
+ ...(c.label ? { label: c.label } : {}),
523
+ ...(c.min ? { min: c.min } : {}),
524
+ ...(c.max ? { max: c.max } : {})
525
+ };
526
+ case A2UI.imageComponent:
527
+ return {
528
+ type: 'Image',
529
+ src: String(c.url ?? ''),
530
+ ...(c.description ? { alt: c.description } : {}),
531
+ ...(typeof p.ratio === 'number' ? { ratio: p.ratio } : {})
532
+ };
533
+ case A2UI.rowComponent:
534
+ case A2UI.columnComponent: {
535
+ const children = Array.isArray(c.children)
536
+ ? c.children.map(rebuild).filter((n) => n !== null)
537
+ : [];
538
+ return {
539
+ type: 'Group',
540
+ direction: c.component === A2UI.rowComponent ? 'row' : 'column',
541
+ ...(typeof p.gap === 'number' ? { gap: p.gap } : {}),
542
+ ...(p.wrap ? { wrap: true } : {}),
543
+ children
544
+ };
545
+ }
546
+ case A2UI.tabsComponent: {
547
+ const tabs = Array.isArray(c.tabs)
548
+ ? c.tabs.map((t) => {
549
+ const wrapper = rebuild(t.child);
550
+ const children = wrapper && wrapper.type === 'Group' ? wrapper.children : [];
551
+ return { label: t.title, children };
552
+ })
553
+ : [];
554
+ return { type: 'Tabs', tabs, ...(p.bind ? { bind: p.bind } : {}) };
555
+ }
556
+ case A2UI.accordionComponent: {
557
+ const sections = Array.isArray(p.sections)
558
+ ? p.sections.map((s) => ({
559
+ label: s.label,
560
+ children: s.childIds.map(rebuild).filter((n) => n !== null),
561
+ ...(s.open ? { open: true } : {})
562
+ }))
563
+ : [];
564
+ return { type: 'Accordion', sections, ...(p.multi ? { multi: true } : {}) };
565
+ }
566
+ case A2UI.chartComponent: {
567
+ // Prefer Pouchy's lossless `_pouchy` original; when absent (an external
568
+ // A2UI Chart), reconstruct from the standard chartType + data series.
569
+ if (p.chart !== undefined || p.data !== undefined) {
570
+ return {
571
+ type: 'Chart',
572
+ chart: p.chart,
573
+ data: p.data ?? [],
574
+ ...(typeof p.max === 'number' ? { max: p.max } : {}),
575
+ ...(p.title ? { title: p.title } : {})
576
+ };
577
+ }
578
+ const series = c.data?.series?.[0]?.data;
579
+ const data = Array.isArray(series)
580
+ ? series.map((pt) => ({ value: Number(pt?.value ?? 0), ...(pt?.label ? { label: pt.label } : {}) }))
581
+ : [];
582
+ return {
583
+ type: 'Chart',
584
+ chart: c.chartType ?? 'bar',
585
+ data: data
586
+ };
587
+ }
588
+ case A2UI.tableComponent:
589
+ return {
590
+ type: 'Table',
591
+ columns: c.columns ?? [],
592
+ rows: c.rows ?? [],
593
+ ...(p.title ? { title: p.title } : {})
594
+ };
595
+ case A2UI.videoComponent:
596
+ return {
597
+ type: 'Video',
598
+ src: String(c.url ?? ''),
599
+ ...(typeof p.ratio === 'number' ? { ratio: p.ratio } : {})
600
+ };
601
+ case A2UI.audioComponent:
602
+ return {
603
+ type: 'AudioPlayer',
604
+ src: String(c.url ?? ''),
605
+ ...(p.title ? { title: p.title } : {})
606
+ };
607
+ case A2UI.markdownComponent:
608
+ // Prefer A2UI's `content`; fall back to `text` when ingesting a surface
609
+ // that used the older field name.
610
+ return { type: 'Markdown', text: String(c.content ?? c.text ?? '') };
611
+ case A2UI.dividerComponent:
612
+ return { type: 'Divider' };
613
+ case A2UI.cardComponent: {
614
+ const wrapper = typeof c.child === 'string' ? rebuild(c.child) : null;
615
+ const children = wrapper && wrapper.type === 'Group' ? wrapper.children : [];
616
+ return { type: 'Card', ...(p.title ? { title: p.title } : {}), children };
617
+ }
618
+ default:
619
+ return null;
620
+ }
621
+ }
622
+ //# sourceMappingURL=a2ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2ui.js","sourceRoot":"","sources":["../src/a2ui.ts"],"names":[],"mappings":"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"}