@watt42/a2ui-core 0.1.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/README.md +32 -0
- package/dist/a2uiDiagnostics.d.ts +18 -0
- package/dist/a2uiDiagnostics.d.ts.map +1 -0
- package/dist/a2uiDiagnostics.js +32 -0
- package/dist/a2uiDiagnostics.js.map +1 -0
- package/dist/catalogDiagnostics.d.ts +33 -0
- package/dist/catalogDiagnostics.d.ts.map +1 -0
- package/dist/catalogDiagnostics.js +268 -0
- package/dist/catalogDiagnostics.js.map +1 -0
- package/dist/catalogIds.d.ts +5 -0
- package/dist/catalogIds.d.ts.map +1 -0
- package/dist/catalogIds.js +15 -0
- package/dist/catalogIds.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/normalize.d.ts +44 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +451 -0
- package/dist/normalize.js.map +1 -0
- package/dist/prepare.d.ts +7 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +172 -0
- package/dist/prepare.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI message and component normalization (prepare pipeline).
|
|
3
|
+
*
|
|
4
|
+
* ## Dynamic UI (what we preserve)
|
|
5
|
+
* - Data bindings: `{ "path": "/field" }` on Chart, Input, tab titles, etc.
|
|
6
|
+
* - Literals from the data model: `updateDataModel` + optional `literalString` in props.
|
|
7
|
+
* - Function-call bindings when present in incoming JSON.
|
|
8
|
+
*
|
|
9
|
+
* ## What we do NOT do (no hardcoded content)
|
|
10
|
+
* - No static component name lists (use the generated catalog / registry).
|
|
11
|
+
* - No invented tab titles ("Tab 1"), no Python `SystemState` defaults, no template substitution.
|
|
12
|
+
*
|
|
13
|
+
* ## Structural-only transforms (shape repair)
|
|
14
|
+
* - Message key coercion (`type` → `createSurface` / `updateComponents` / `updateDataModel`).
|
|
15
|
+
* - Flat component extraction, Card single-child wrapper, Tabs `tabItems` → `tabs`, Chart field aliases.
|
|
16
|
+
*/
|
|
17
|
+
import { WATT42_SHARED_UI_CATALOG } from "./catalogIds.js";
|
|
18
|
+
const DEFAULT_SURFACE_ID = 'default';
|
|
19
|
+
const DEFAULT_VERSION = 'v0.9';
|
|
20
|
+
const MESSAGE_TYPES = new Set([
|
|
21
|
+
'updateComponents',
|
|
22
|
+
'createSurface',
|
|
23
|
+
'surfaceUpdate',
|
|
24
|
+
'updateDataModel',
|
|
25
|
+
'dataModelUpdate',
|
|
26
|
+
'deleteSurface',
|
|
27
|
+
'beginRendering',
|
|
28
|
+
]);
|
|
29
|
+
const COMPONENT_META_KEYS = new Set(['id', 'componentId', 'component', 'type', 'props']);
|
|
30
|
+
function isRecord(value) {
|
|
31
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
32
|
+
}
|
|
33
|
+
/** True when value is already an A2UI dynamic binding (not a static string to rewrite). */
|
|
34
|
+
export function isDynamicBindingValue(value) {
|
|
35
|
+
if (!isRecord(value))
|
|
36
|
+
return false;
|
|
37
|
+
return (typeof value.path === 'string' ||
|
|
38
|
+
typeof value.literalString === 'string' ||
|
|
39
|
+
'call' in value ||
|
|
40
|
+
'function' in value);
|
|
41
|
+
}
|
|
42
|
+
/** Resolve surface id from v0.9 payloads (models sometimes use `id` instead of `surfaceId`). */
|
|
43
|
+
export function resolveSurfaceId(payload, fallback = DEFAULT_SURFACE_ID) {
|
|
44
|
+
if (typeof payload.surfaceId === 'string' && payload.surfaceId.trim()) {
|
|
45
|
+
return payload.surfaceId.trim();
|
|
46
|
+
}
|
|
47
|
+
if (typeof payload.id === 'string' && payload.id.trim()) {
|
|
48
|
+
return payload.id.trim();
|
|
49
|
+
}
|
|
50
|
+
return fallback;
|
|
51
|
+
}
|
|
52
|
+
function surfaceIdFrom(payload, fallback = DEFAULT_SURFACE_ID) {
|
|
53
|
+
return resolveSurfaceId(payload, fallback);
|
|
54
|
+
}
|
|
55
|
+
/** Ensure createSurface / deleteSurface / beginRendering payloads use `surfaceId`. */
|
|
56
|
+
export function normalizeSurfacePayload(payload) {
|
|
57
|
+
const surfaceId = resolveSurfaceId(payload);
|
|
58
|
+
const { id: _id, surfaceId: _surfaceId, ...rest } = payload;
|
|
59
|
+
return { ...rest, surfaceId };
|
|
60
|
+
}
|
|
61
|
+
function versionFrom(message) {
|
|
62
|
+
const raw = typeof message.version === 'string' ? message.version.trim() : DEFAULT_VERSION;
|
|
63
|
+
if (raw === 'v0.8' || raw === '0.8' || raw === '0.9') {
|
|
64
|
+
return DEFAULT_VERSION;
|
|
65
|
+
}
|
|
66
|
+
return raw || DEFAULT_VERSION;
|
|
67
|
+
}
|
|
68
|
+
function coerceSurfacePayload(rest) {
|
|
69
|
+
return normalizeSurfacePayload({
|
|
70
|
+
surfaceId: surfaceIdFrom(rest),
|
|
71
|
+
catalogId: typeof rest.catalogId === 'string' ? rest.catalogId : WATT42_SHARED_UI_CATALOG,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** Coerce `{ "type": "updateComponents", ... }` into proper A2UI v0.9 message keys. */
|
|
75
|
+
export function coerceA2UiMessages(messages) {
|
|
76
|
+
return messages.flatMap((message) => {
|
|
77
|
+
if (!isRecord(message))
|
|
78
|
+
return [message];
|
|
79
|
+
const msgType = message.type;
|
|
80
|
+
if (typeof msgType === 'string') {
|
|
81
|
+
const versionStr = versionFrom(message);
|
|
82
|
+
const { type: _type, version: _v, ...rest } = message;
|
|
83
|
+
switch (msgType) {
|
|
84
|
+
case 'createSurface':
|
|
85
|
+
return [{ version: versionStr, createSurface: coerceSurfacePayload(rest) }];
|
|
86
|
+
case 'updateComponents':
|
|
87
|
+
case 'surfaceUpdate':
|
|
88
|
+
return [
|
|
89
|
+
{
|
|
90
|
+
version: versionStr,
|
|
91
|
+
updateComponents: {
|
|
92
|
+
surfaceId: surfaceIdFrom(rest),
|
|
93
|
+
components: Array.isArray(rest.components) ? rest.components : [],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
case 'updateDataModel':
|
|
98
|
+
case 'dataModelUpdate':
|
|
99
|
+
return [
|
|
100
|
+
{
|
|
101
|
+
version: versionStr,
|
|
102
|
+
updateDataModel: {
|
|
103
|
+
surfaceId: surfaceIdFrom(rest),
|
|
104
|
+
path: typeof rest.path === 'string' ? rest.path : '/',
|
|
105
|
+
value: rest.value ?? rest.contents,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
];
|
|
109
|
+
case 'deleteSurface':
|
|
110
|
+
return [{ version: versionStr, deleteSurface: { surfaceId: surfaceIdFrom(rest) } }];
|
|
111
|
+
case 'beginRendering':
|
|
112
|
+
return [
|
|
113
|
+
{
|
|
114
|
+
version: versionStr,
|
|
115
|
+
beginRendering: {
|
|
116
|
+
surfaceId: surfaceIdFrom(rest),
|
|
117
|
+
root: typeof rest.root === 'string' ? rest.root : 'root',
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
default:
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (Array.isArray(message.components)) {
|
|
126
|
+
return [
|
|
127
|
+
{
|
|
128
|
+
version: versionFrom(message),
|
|
129
|
+
updateComponents: {
|
|
130
|
+
surfaceId: surfaceIdFrom(message),
|
|
131
|
+
components: message.components,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
if (isRecord(message.createSurface)) {
|
|
137
|
+
return [
|
|
138
|
+
{
|
|
139
|
+
version: versionFrom(message),
|
|
140
|
+
createSurface: coerceSurfacePayload(message.createSurface),
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
if (isRecord(message.updateComponents)) {
|
|
145
|
+
const payload = message.updateComponents;
|
|
146
|
+
return [
|
|
147
|
+
{
|
|
148
|
+
version: versionFrom(message),
|
|
149
|
+
updateComponents: {
|
|
150
|
+
...normalizeSurfacePayload(payload),
|
|
151
|
+
components: Array.isArray(payload.components) ? payload.components : [],
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
if (isRecord(message.updateDataModel)) {
|
|
157
|
+
const payload = message.updateDataModel;
|
|
158
|
+
return [
|
|
159
|
+
{
|
|
160
|
+
version: versionFrom(message),
|
|
161
|
+
updateDataModel: {
|
|
162
|
+
...normalizeSurfacePayload(payload),
|
|
163
|
+
path: typeof payload.path === 'string' ? payload.path : '/',
|
|
164
|
+
value: payload.value ?? payload.contents,
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
return [message];
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function normalizeRawComponent(raw) {
|
|
173
|
+
if (!isRecord(raw))
|
|
174
|
+
return null;
|
|
175
|
+
const id = typeof raw.id === 'string'
|
|
176
|
+
? raw.id
|
|
177
|
+
: typeof raw.componentId === 'string'
|
|
178
|
+
? raw.componentId
|
|
179
|
+
: null;
|
|
180
|
+
if (!id)
|
|
181
|
+
return null;
|
|
182
|
+
let type = null;
|
|
183
|
+
let props = {};
|
|
184
|
+
if (typeof raw.component === 'string') {
|
|
185
|
+
type = raw.component;
|
|
186
|
+
}
|
|
187
|
+
else if (typeof raw.type === 'string' && !MESSAGE_TYPES.has(raw.type)) {
|
|
188
|
+
type = raw.type;
|
|
189
|
+
}
|
|
190
|
+
else if (isRecord(raw.component)) {
|
|
191
|
+
const [first] = Object.entries(raw.component);
|
|
192
|
+
if (!first)
|
|
193
|
+
return null;
|
|
194
|
+
type = first[0];
|
|
195
|
+
props = isRecord(first[1]) ? first[1] : {};
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
201
|
+
if (!COMPONENT_META_KEYS.has(key)) {
|
|
202
|
+
props[key] = value;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// When `component` names the widget, `type` is often a Chart kind (line/bar/…) — not stripped above.
|
|
206
|
+
if (typeof raw.component === 'string' &&
|
|
207
|
+
typeof raw.type === 'string' &&
|
|
208
|
+
!MESSAGE_TYPES.has(raw.type) &&
|
|
209
|
+
raw.type !== raw.component) {
|
|
210
|
+
props.type = raw.type;
|
|
211
|
+
}
|
|
212
|
+
if (isRecord(raw.props)) {
|
|
213
|
+
Object.assign(props, raw.props);
|
|
214
|
+
}
|
|
215
|
+
return { id, type, props };
|
|
216
|
+
}
|
|
217
|
+
function normalizeChildList(value) {
|
|
218
|
+
if (Array.isArray(value))
|
|
219
|
+
return value;
|
|
220
|
+
if (!isRecord(value))
|
|
221
|
+
return value;
|
|
222
|
+
if (Array.isArray(value.explicitList))
|
|
223
|
+
return value.explicitList;
|
|
224
|
+
return value;
|
|
225
|
+
}
|
|
226
|
+
function resolveTabTitle(value) {
|
|
227
|
+
if (typeof value === 'string' && value.trim())
|
|
228
|
+
return value.trim();
|
|
229
|
+
if (isRecord(value) && typeof value.path === 'string' && value.path.trim()) {
|
|
230
|
+
return { path: value.path.trim() };
|
|
231
|
+
}
|
|
232
|
+
if (isRecord(value) && typeof value.literalString === 'string' && value.literalString.trim()) {
|
|
233
|
+
return value.literalString.trim();
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
function tabChildId(item) {
|
|
238
|
+
const child = item.child ?? item.content ?? item.contentId;
|
|
239
|
+
return typeof child === 'string' && child.trim() ? child.trim() : null;
|
|
240
|
+
}
|
|
241
|
+
function normalizeTabItemRecords(items) {
|
|
242
|
+
const result = [];
|
|
243
|
+
for (const item of items) {
|
|
244
|
+
if (!isRecord(item))
|
|
245
|
+
continue;
|
|
246
|
+
const title = resolveTabTitle(item.title ?? item.label ?? item.name);
|
|
247
|
+
const child = tabChildId(item);
|
|
248
|
+
if (title && child)
|
|
249
|
+
result.push({ title, child });
|
|
250
|
+
}
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Canonical A2UI v0.9 Tabs `tabs` array: [{ title, child }].
|
|
255
|
+
* Preserves dynamic titles (`path` bindings). Does not invent placeholder titles.
|
|
256
|
+
*/
|
|
257
|
+
export function normalizeTabsArray(props) {
|
|
258
|
+
const raw = props.tabs ?? props.tabItems;
|
|
259
|
+
if (Array.isArray(raw)) {
|
|
260
|
+
const parsed = normalizeTabItemRecords(raw);
|
|
261
|
+
if (parsed.length > 0)
|
|
262
|
+
return parsed;
|
|
263
|
+
}
|
|
264
|
+
if (isRecord(raw) && Array.isArray(raw.explicitList)) {
|
|
265
|
+
const parsed = normalizeTabItemRecords(raw.explicitList);
|
|
266
|
+
if (parsed.length > 0)
|
|
267
|
+
return parsed;
|
|
268
|
+
}
|
|
269
|
+
const children = normalizeChildList(props.children);
|
|
270
|
+
const titles = props.tabTitles ?? props.titles;
|
|
271
|
+
if (Array.isArray(children) && Array.isArray(titles)) {
|
|
272
|
+
const paired = [];
|
|
273
|
+
const childIds = children.filter((c) => typeof c === 'string');
|
|
274
|
+
for (let i = 0; i < childIds.length; i++) {
|
|
275
|
+
const title = resolveTabTitle(titles[i]);
|
|
276
|
+
if (title)
|
|
277
|
+
paired.push({ title, child: childIds[i] });
|
|
278
|
+
}
|
|
279
|
+
if (paired.length > 0)
|
|
280
|
+
return paired;
|
|
281
|
+
}
|
|
282
|
+
return [];
|
|
283
|
+
}
|
|
284
|
+
function collectReferencedIdsFromProps(props) {
|
|
285
|
+
const ids = [];
|
|
286
|
+
const children = props.children;
|
|
287
|
+
if (Array.isArray(children)) {
|
|
288
|
+
for (const child of children) {
|
|
289
|
+
if (typeof child === 'string')
|
|
290
|
+
ids.push(child);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (typeof props.child === 'string')
|
|
294
|
+
ids.push(props.child);
|
|
295
|
+
const tabs = props.tabs ?? props.tabItems;
|
|
296
|
+
if (Array.isArray(tabs)) {
|
|
297
|
+
for (const item of tabs) {
|
|
298
|
+
if (!isRecord(item))
|
|
299
|
+
continue;
|
|
300
|
+
const child = tabChildId(item);
|
|
301
|
+
if (child)
|
|
302
|
+
ids.push(child);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return ids;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Shape-only prop aliases for catalog compatibility. Does not change dynamic binding values.
|
|
309
|
+
*/
|
|
310
|
+
function applyCatalogAliases(componentName, props) {
|
|
311
|
+
const next = { ...props };
|
|
312
|
+
if ('children' in next) {
|
|
313
|
+
next.children = normalizeChildList(next.children);
|
|
314
|
+
}
|
|
315
|
+
if (componentName === 'Card') {
|
|
316
|
+
if (!next.child) {
|
|
317
|
+
const content = next.content ?? next.contentId;
|
|
318
|
+
if (typeof content === 'string')
|
|
319
|
+
next.child = content;
|
|
320
|
+
}
|
|
321
|
+
if (Array.isArray(next.children)) {
|
|
322
|
+
const childIds = next.children.filter((c) => typeof c === 'string');
|
|
323
|
+
if (childIds.length === 1 && !next.child) {
|
|
324
|
+
// Catalog Card is single-child; collapse one-element lists to `child`.
|
|
325
|
+
next.child = childIds[0];
|
|
326
|
+
delete next.children;
|
|
327
|
+
}
|
|
328
|
+
else if (childIds.length > 1) {
|
|
329
|
+
// Keep multi-child lists for the surface renderer (and injectCardWrappers).
|
|
330
|
+
next.children = childIds;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
delete next.children;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
delete next.content;
|
|
337
|
+
delete next.contentId;
|
|
338
|
+
}
|
|
339
|
+
if (componentName === 'Tabs') {
|
|
340
|
+
const tabs = normalizeTabsArray(next);
|
|
341
|
+
if (tabs.length > 0)
|
|
342
|
+
next.tabs = tabs;
|
|
343
|
+
delete next.tabItems;
|
|
344
|
+
delete next.tabTitles;
|
|
345
|
+
delete next.titles;
|
|
346
|
+
if (next.tabs)
|
|
347
|
+
delete next.children;
|
|
348
|
+
}
|
|
349
|
+
if (componentName === 'Slider') {
|
|
350
|
+
if (next.min == null && next.minValue != null)
|
|
351
|
+
next.min = next.minValue;
|
|
352
|
+
if (next.max == null && next.maxValue != null)
|
|
353
|
+
next.max = next.maxValue;
|
|
354
|
+
}
|
|
355
|
+
if (componentName === 'Chart') {
|
|
356
|
+
// Catalog + compiler emit chartType; keep it as the ChartSpec field.
|
|
357
|
+
// Also mirror onto `type` for older processors that still read Chart.type.
|
|
358
|
+
if (!next.chartType && typeof next.type === 'string')
|
|
359
|
+
next.chartType = next.type;
|
|
360
|
+
if (!next.type && typeof next.chartType === 'string')
|
|
361
|
+
next.type = next.chartType;
|
|
362
|
+
if (!next.chartData && next.data != null)
|
|
363
|
+
next.chartData = next.data;
|
|
364
|
+
delete next.data;
|
|
365
|
+
delete next.labels;
|
|
366
|
+
delete next.values;
|
|
367
|
+
}
|
|
368
|
+
return next;
|
|
369
|
+
}
|
|
370
|
+
/** Preserve multi-child Card.children for the surface renderer (no non-catalog Column). */
|
|
371
|
+
function injectCardWrappers(items) {
|
|
372
|
+
return items.map((item) => {
|
|
373
|
+
if (item.type !== 'Card')
|
|
374
|
+
return item;
|
|
375
|
+
return { ...item, props: applyCatalogAliases('Card', item.props) };
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
function toProcessorComponent(item) {
|
|
379
|
+
const props = applyCatalogAliases(item.type, item.props);
|
|
380
|
+
return { id: item.id, component: item.type, ...props };
|
|
381
|
+
}
|
|
382
|
+
export function normalizeProcessorComponents(rawComponents) {
|
|
383
|
+
const flatItems = [];
|
|
384
|
+
for (const raw of rawComponents) {
|
|
385
|
+
const normalized = normalizeRawComponent(raw);
|
|
386
|
+
if (normalized)
|
|
387
|
+
flatItems.push(normalized);
|
|
388
|
+
}
|
|
389
|
+
const components = injectCardWrappers(flatItems).map(toProcessorComponent);
|
|
390
|
+
if (components.some((c) => c.id === 'root')) {
|
|
391
|
+
return components;
|
|
392
|
+
}
|
|
393
|
+
const referenced = new Set();
|
|
394
|
+
for (const component of components) {
|
|
395
|
+
for (const id of collectReferencedIdsFromProps(component)) {
|
|
396
|
+
referenced.add(id);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
const rootCandidates = components.filter((c) => typeof c.id === 'string' && !referenced.has(c.id));
|
|
400
|
+
if (rootCandidates.length === 1) {
|
|
401
|
+
const oldId = rootCandidates[0].id;
|
|
402
|
+
return components.map((c) => (c.id === oldId ? { ...c, id: 'root' } : c));
|
|
403
|
+
}
|
|
404
|
+
if (rootCandidates.length > 1) {
|
|
405
|
+
return [
|
|
406
|
+
{
|
|
407
|
+
id: 'root',
|
|
408
|
+
component: 'Column',
|
|
409
|
+
children: rootCandidates.map((c) => c.id),
|
|
410
|
+
},
|
|
411
|
+
...components,
|
|
412
|
+
];
|
|
413
|
+
}
|
|
414
|
+
return components;
|
|
415
|
+
}
|
|
416
|
+
function extractComponentArrays(message) {
|
|
417
|
+
const updateComponents = message.updateComponents;
|
|
418
|
+
if (isRecord(updateComponents) && Array.isArray(updateComponents.components)) {
|
|
419
|
+
return updateComponents.components;
|
|
420
|
+
}
|
|
421
|
+
const surfaceUpdate = message.surfaceUpdate;
|
|
422
|
+
if (isRecord(surfaceUpdate) && Array.isArray(surfaceUpdate.components)) {
|
|
423
|
+
return surfaceUpdate.components;
|
|
424
|
+
}
|
|
425
|
+
return Array.isArray(message.components) ? message.components : [];
|
|
426
|
+
}
|
|
427
|
+
function normalizeA2UiMessages(messages) {
|
|
428
|
+
const map = new Map();
|
|
429
|
+
for (const message of coerceA2UiMessages(messages)) {
|
|
430
|
+
for (const raw of extractComponentArrays(message)) {
|
|
431
|
+
const normalized = normalizeRawComponent(raw);
|
|
432
|
+
if (normalized)
|
|
433
|
+
map.set(normalized.id, normalized);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return map;
|
|
437
|
+
}
|
|
438
|
+
export function countRenderableComponents(messages) {
|
|
439
|
+
return normalizeA2UiMessages(messages).size;
|
|
440
|
+
}
|
|
441
|
+
export function hasUpdateComponentsMessage(messages) {
|
|
442
|
+
return coerceA2UiMessages(messages).some((message) => {
|
|
443
|
+
if (message.updateComponents || message.surfaceUpdate)
|
|
444
|
+
return true;
|
|
445
|
+
if (Array.isArray(message.components))
|
|
446
|
+
return true;
|
|
447
|
+
const t = message.type;
|
|
448
|
+
return t === 'updateComponents' || t === 'surfaceUpdate';
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepare coerced A2UI messages for @a2ui/web_core MessageProcessor.
|
|
3
|
+
*/
|
|
4
|
+
import type { A2UiMessage } from "./types.js";
|
|
5
|
+
/** Normalize, inject createSurface when missing, and order for MessageProcessor. */
|
|
6
|
+
export declare function prepareA2UiMessagesForProcessor(messages: A2UiMessage[]): A2UiMessage[];
|
|
7
|
+
//# sourceMappingURL=prepare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiL9C,oFAAoF;AACpF,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAMtF"}
|
package/dist/prepare.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepare coerced A2UI messages for @a2ui/web_core MessageProcessor.
|
|
3
|
+
*/
|
|
4
|
+
import { coerceA2UiMessages, normalizeProcessorComponents, normalizeSurfacePayload, resolveSurfaceId, } from "./normalize.js";
|
|
5
|
+
import { WATT42_SHARED_UI_CATALOG, resolveCatalogId } from "./catalogIds.js";
|
|
6
|
+
function isRecord(value) {
|
|
7
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
function surfaceIdFromPayload(payload, fallback = 'default') {
|
|
10
|
+
if (!isRecord(payload))
|
|
11
|
+
return fallback;
|
|
12
|
+
return resolveSurfaceId(payload, fallback);
|
|
13
|
+
}
|
|
14
|
+
/** Processor order: create → data model → components (paths must exist before bind). */
|
|
15
|
+
function messageKind(message) {
|
|
16
|
+
if (message.createSurface)
|
|
17
|
+
return 0;
|
|
18
|
+
if (message.updateDataModel || message.dataModelUpdate)
|
|
19
|
+
return 1;
|
|
20
|
+
if (message.updateComponents || message.surfaceUpdate)
|
|
21
|
+
return 2;
|
|
22
|
+
if (message.deleteSurface)
|
|
23
|
+
return 9;
|
|
24
|
+
return 4;
|
|
25
|
+
}
|
|
26
|
+
function hasCreateSurface(messages, surfaceId) {
|
|
27
|
+
return messages.some((message) => {
|
|
28
|
+
if (!isRecord(message.createSurface))
|
|
29
|
+
return false;
|
|
30
|
+
return surfaceIdFromPayload(message.createSurface) === surfaceId;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function collectReferencedSurfaceIds(messages) {
|
|
34
|
+
const ids = new Set();
|
|
35
|
+
for (const message of messages) {
|
|
36
|
+
if (message.updateComponents) {
|
|
37
|
+
ids.add(surfaceIdFromPayload(message.updateComponents));
|
|
38
|
+
}
|
|
39
|
+
if (message.surfaceUpdate) {
|
|
40
|
+
ids.add(surfaceIdFromPayload(message.surfaceUpdate));
|
|
41
|
+
}
|
|
42
|
+
if (message.updateDataModel) {
|
|
43
|
+
ids.add(surfaceIdFromPayload(message.updateDataModel));
|
|
44
|
+
}
|
|
45
|
+
if (message.dataModelUpdate) {
|
|
46
|
+
ids.add(surfaceIdFromPayload(message.dataModelUpdate));
|
|
47
|
+
}
|
|
48
|
+
if (message.deleteSurface) {
|
|
49
|
+
ids.add(surfaceIdFromPayload(message.deleteSurface));
|
|
50
|
+
}
|
|
51
|
+
if (message.beginRendering) {
|
|
52
|
+
ids.add(surfaceIdFromPayload(message.beginRendering));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return ids;
|
|
56
|
+
}
|
|
57
|
+
function injectMissingCreateSurfaces(messages) {
|
|
58
|
+
const referenced = collectReferencedSurfaceIds(messages);
|
|
59
|
+
const injected = [];
|
|
60
|
+
for (const surfaceId of referenced) {
|
|
61
|
+
if (!hasCreateSurface(messages, surfaceId)) {
|
|
62
|
+
injected.push({
|
|
63
|
+
version: 'v0.9',
|
|
64
|
+
createSurface: {
|
|
65
|
+
surfaceId,
|
|
66
|
+
catalogId: WATT42_SHARED_UI_CATALOG,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return [...injected, ...messages];
|
|
72
|
+
}
|
|
73
|
+
/** v0.9 MessageProcessor only handles updateComponents / updateDataModel keys. */
|
|
74
|
+
function canonicalizeV09MessageKeys(messages) {
|
|
75
|
+
return messages.map((message) => {
|
|
76
|
+
if (isRecord(message.surfaceUpdate) && !message.updateComponents) {
|
|
77
|
+
const { surfaceUpdate, ...rest } = message;
|
|
78
|
+
return { ...rest, updateComponents: surfaceUpdate };
|
|
79
|
+
}
|
|
80
|
+
if (isRecord(message.dataModelUpdate) && !message.updateDataModel) {
|
|
81
|
+
const { dataModelUpdate, ...rest } = message;
|
|
82
|
+
return { ...rest, updateDataModel: dataModelUpdate };
|
|
83
|
+
}
|
|
84
|
+
return message;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function sortProcessorMessages(messages) {
|
|
88
|
+
return [...messages].sort((a, b) => messageKind(a) - messageKind(b));
|
|
89
|
+
}
|
|
90
|
+
function normalizeSurfaceMessages(messages) {
|
|
91
|
+
return messages.map((message) => {
|
|
92
|
+
if (isRecord(message.createSurface)) {
|
|
93
|
+
const payload = message.createSurface;
|
|
94
|
+
return {
|
|
95
|
+
...message,
|
|
96
|
+
createSurface: normalizeSurfacePayload({
|
|
97
|
+
...payload,
|
|
98
|
+
catalogId: resolveCatalogId(payload.catalogId ?? WATT42_SHARED_UI_CATALOG),
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (isRecord(message.deleteSurface)) {
|
|
103
|
+
return { ...message, deleteSurface: normalizeSurfacePayload(message.deleteSurface) };
|
|
104
|
+
}
|
|
105
|
+
if (isRecord(message.beginRendering)) {
|
|
106
|
+
return { ...message, beginRendering: normalizeSurfacePayload(message.beginRendering) };
|
|
107
|
+
}
|
|
108
|
+
if (isRecord(message.updateComponents)) {
|
|
109
|
+
const payload = message.updateComponents;
|
|
110
|
+
return {
|
|
111
|
+
...message,
|
|
112
|
+
updateComponents: normalizeSurfacePayload(payload),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (isRecord(message.surfaceUpdate)) {
|
|
116
|
+
const payload = message.surfaceUpdate;
|
|
117
|
+
return {
|
|
118
|
+
...message,
|
|
119
|
+
surfaceUpdate: normalizeSurfacePayload(payload),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (isRecord(message.updateDataModel)) {
|
|
123
|
+
const payload = message.updateDataModel;
|
|
124
|
+
return {
|
|
125
|
+
...message,
|
|
126
|
+
updateDataModel: normalizeSurfacePayload(payload),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (isRecord(message.dataModelUpdate)) {
|
|
130
|
+
const payload = message.dataModelUpdate;
|
|
131
|
+
return {
|
|
132
|
+
...message,
|
|
133
|
+
dataModelUpdate: normalizeSurfacePayload(payload),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return message;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function normalizeUpdateComponentMessages(messages) {
|
|
140
|
+
return messages.map((message) => {
|
|
141
|
+
const payload = message.updateComponents ?? message.surfaceUpdate;
|
|
142
|
+
if (!isRecord(payload) || !Array.isArray(payload.components)) {
|
|
143
|
+
return message;
|
|
144
|
+
}
|
|
145
|
+
const normalizedComponents = normalizeProcessorComponents(payload.components);
|
|
146
|
+
if (message.updateComponents) {
|
|
147
|
+
return {
|
|
148
|
+
...message,
|
|
149
|
+
updateComponents: {
|
|
150
|
+
...payload,
|
|
151
|
+
components: normalizedComponents,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
...message,
|
|
157
|
+
surfaceUpdate: {
|
|
158
|
+
...payload,
|
|
159
|
+
components: normalizedComponents,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/** Normalize, inject createSurface when missing, and order for MessageProcessor. */
|
|
165
|
+
export function prepareA2UiMessagesForProcessor(messages) {
|
|
166
|
+
const coerced = coerceA2UiMessages(messages);
|
|
167
|
+
const withSurfaceIds = normalizeSurfaceMessages(coerced);
|
|
168
|
+
const withSurfaces = injectMissingCreateSurfaces(withSurfaceIds);
|
|
169
|
+
const withComponents = normalizeUpdateComponentMessages(withSurfaces);
|
|
170
|
+
return sortProcessorMessages(canonicalizeV09MessageKeys(withComponents));
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB,EAAE,QAAQ,GAAG,SAAS;IAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvC,OAAO,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,OAAoB;IACvC,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,CAAA;IAC/D,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,CAAA;IACnC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAuB,EAAE,SAAiB;IAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;YAAE,OAAO,KAAK,CAAA;QAClD,OAAO,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,SAAS,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAuB;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAuB;IAC1D,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAElC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE;oBACb,SAAS;oBACT,SAAS,EAAE,wBAAwB;iBACpC;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,kFAAkF;AAClF,SAAS,0BAA0B,CAAC,QAAuB;IACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;YAC1C,OAAO,EAAE,GAAG,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAA;QACrD,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAClE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;YAC5C,OAAO,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAuB;IACpD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAuB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;YACrC,OAAO;gBACL,GAAG,OAAO;gBACV,aAAa,EAAE,uBAAuB,CAAC;oBACrC,GAAG,OAAO;oBACV,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,IAAI,wBAAwB,CAAC;iBAC3E,CAAC;aACH,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAA;QACtF,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAA;QACxF,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAA;YACxC,OAAO;gBACL,GAAG,OAAO;gBACV,gBAAgB,EAAE,uBAAuB,CAAC,OAAO,CAAC;aACnD,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;YACrC,OAAO;gBACL,GAAG,OAAO;gBACV,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC;aAChD,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAA;YACvC,OAAO;gBACL,GAAG,OAAO;gBACV,eAAe,EAAE,uBAAuB,CAAC,OAAO,CAAC;aAClD,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAA;YACvC,OAAO;gBACL,GAAG,OAAO;gBACV,eAAe,EAAE,uBAAuB,CAAC,OAAO,CAAC;aAClD,CAAA;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,gCAAgC,CAAC,QAAuB;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAA;QACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,MAAM,oBAAoB,GAAG,4BAA4B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAC7E,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,OAAO;gBACV,gBAAgB,EAAE;oBAChB,GAAG,OAAO;oBACV,UAAU,EAAE,oBAAoB;iBACjC;aACF,CAAA;QACH,CAAC;QAED,OAAO;YACL,GAAG,OAAO;YACV,aAAa,EAAE;gBACb,GAAG,OAAO;gBACV,UAAU,EAAE,oBAAoB;aACjC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,+BAA+B,CAAC,QAAuB;IACrE,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACxD,MAAM,YAAY,GAAG,2BAA2B,CAAC,cAAc,CAAC,CAAA;IAChE,MAAM,cAAc,GAAG,gCAAgC,CAAC,YAAY,CAAC,CAAA;IACrE,OAAO,qBAAqB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAA;AAC1E,CAAC"}
|