@adonis-agora/agent 0.70.0 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/providers/agent_provider.d.ts.map +1 -1
  3. package/dist/providers/agent_provider.js +3 -0
  4. package/dist/providers/agent_provider.js.map +1 -1
  5. package/dist/src/a2ui/adapter.d.ts +34 -0
  6. package/dist/src/a2ui/adapter.d.ts.map +1 -0
  7. package/dist/src/a2ui/adapter.js +223 -0
  8. package/dist/src/a2ui/adapter.js.map +1 -0
  9. package/dist/src/a2ui/core.d.ts +181 -0
  10. package/dist/src/a2ui/core.d.ts.map +1 -0
  11. package/dist/src/a2ui/core.js +513 -0
  12. package/dist/src/a2ui/core.js.map +1 -0
  13. package/dist/src/a2ui/index.d.ts +10 -0
  14. package/dist/src/a2ui/index.d.ts.map +1 -0
  15. package/dist/src/a2ui/index.js +10 -0
  16. package/dist/src/a2ui/index.js.map +1 -0
  17. package/dist/src/ag-ui/adapter.d.ts +9 -0
  18. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  19. package/dist/src/ag-ui/adapter.js +29 -2
  20. package/dist/src/ag-ui/adapter.js.map +1 -1
  21. package/dist/src/ag-ui/core/encoder.d.ts +7 -0
  22. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -1
  23. package/dist/src/ag-ui/core/encoder.js +12 -1
  24. package/dist/src/ag-ui/core/encoder.js.map +1 -1
  25. package/dist/src/ag-ui/core/input.d.ts +7 -0
  26. package/dist/src/ag-ui/core/input.d.ts.map +1 -1
  27. package/dist/src/ag-ui/core/input.js +7 -0
  28. package/dist/src/ag-ui/core/input.js.map +1 -1
  29. package/dist/src/ag-ui/core/types.d.ts +8 -0
  30. package/dist/src/ag-ui/core/types.d.ts.map +1 -1
  31. package/dist/src/ag-ui/core/types.js.map +1 -1
  32. package/dist/src/genui/actions.d.ts +70 -0
  33. package/dist/src/genui/actions.d.ts.map +1 -0
  34. package/dist/src/genui/actions.js +116 -0
  35. package/dist/src/genui/actions.js.map +1 -0
  36. package/dist/src/genui/builtins.d.ts +1 -1
  37. package/dist/src/genui/builtins.d.ts.map +1 -1
  38. package/dist/src/genui/builtins.js +1 -0
  39. package/dist/src/genui/builtins.js.map +1 -1
  40. package/dist/src/genui/catalog.d.ts +9 -0
  41. package/dist/src/genui/catalog.d.ts.map +1 -1
  42. package/dist/src/genui/catalog.js +2 -0
  43. package/dist/src/genui/catalog.js.map +1 -1
  44. package/dist/src/genui/index.d.ts +9 -0
  45. package/dist/src/genui/index.d.ts.map +1 -1
  46. package/dist/src/genui/index.js +6 -2
  47. package/dist/src/genui/index.js.map +1 -1
  48. package/dist/src/genui/progressive.d.ts.map +1 -1
  49. package/dist/src/genui/progressive.js +4 -1
  50. package/dist/src/genui/progressive.js.map +1 -1
  51. package/dist/src/genui/public.d.ts +2 -0
  52. package/dist/src/genui/public.d.ts.map +1 -1
  53. package/dist/src/genui/public.js +2 -0
  54. package/dist/src/genui/public.js.map +1 -1
  55. package/dist/src/genui/sandbox.d.ts +169 -0
  56. package/dist/src/genui/sandbox.d.ts.map +1 -0
  57. package/dist/src/genui/sandbox.js +307 -0
  58. package/dist/src/genui/sandbox.js.map +1 -0
  59. package/dist/src/genui/tools.d.ts.map +1 -1
  60. package/dist/src/genui/tools.js +36 -0
  61. package/dist/src/genui/tools.js.map +1 -1
  62. package/dist/src/index.d.ts +1 -1
  63. package/dist/src/index.js +1 -1
  64. package/dist/src/opencode/client.d.ts +13 -0
  65. package/dist/src/opencode/client.d.ts.map +1 -1
  66. package/dist/src/opencode/turn.d.ts +17 -1
  67. package/dist/src/opencode/turn.d.ts.map +1 -1
  68. package/dist/src/opencode/turn.js +57 -0
  69. package/dist/src/opencode/turn.js.map +1 -1
  70. package/dist/src/opencode/turns.d.ts +2 -0
  71. package/dist/src/opencode/turns.d.ts.map +1 -1
  72. package/dist/src/opencode/turns.js +11 -0
  73. package/dist/src/opencode/turns.js.map +1 -1
  74. package/dist/src/react/core/genui/generative-ui.d.ts +19 -2
  75. package/dist/src/react/core/genui/generative-ui.d.ts.map +1 -1
  76. package/dist/src/react/core/genui/generative-ui.js +14 -3
  77. package/dist/src/react/core/genui/generative-ui.js.map +1 -1
  78. package/dist/src/react/core/genui/index.d.ts +3 -1
  79. package/dist/src/react/core/genui/index.d.ts.map +1 -1
  80. package/dist/src/react/core/genui/index.js +2 -1
  81. package/dist/src/react/core/genui/index.js.map +1 -1
  82. package/dist/src/react/core/genui/sandbox.d.ts +91 -0
  83. package/dist/src/react/core/genui/sandbox.d.ts.map +1 -0
  84. package/dist/src/react/core/genui/sandbox.js +242 -0
  85. package/dist/src/react/core/genui/sandbox.js.map +1 -0
  86. package/dist/src/react/core/genui/types.d.ts +6 -0
  87. package/dist/src/react/core/genui/types.d.ts.map +1 -1
  88. package/dist/src/react/core/use-agent-chat.d.ts +3 -0
  89. package/dist/src/react/core/use-agent-chat.d.ts.map +1 -1
  90. package/dist/src/react/core/use-agent-chat.js +8 -0
  91. package/dist/src/react/core/use-agent-chat.js.map +1 -1
  92. package/dist/src/spi/protocol-adapter.d.ts +3 -0
  93. package/dist/src/spi/protocol-adapter.d.ts.map +1 -1
  94. package/package.json +30 -22
@@ -0,0 +1,513 @@
1
+ import { readUiAction } from '../genui/actions.js';
2
+ import { toJsonSchema } from '../genui/schema.js';
3
+ import { componentToText } from '../genui/text.js';
4
+ import { GENUI_TREE_COMPONENT } from '../genui/tree.js';
5
+ /** The A2UI protocol version every message is stamped with. */
6
+ export const A2UI_VERSION = 'v0.9';
7
+ /** The catalog id of A2UI v0.9's basic catalog (what `@a2ui/react`'s `basicCatalog.id` is). */
8
+ export const A2UI_BASIC_CATALOG_ID = 'https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json';
9
+ /** The components of A2UI v0.9's basic catalog. */
10
+ export const A2UI_BASIC_COMPONENTS = [
11
+ 'Text',
12
+ 'Image',
13
+ 'Icon',
14
+ 'Video',
15
+ 'AudioPlayer',
16
+ 'Row',
17
+ 'Column',
18
+ 'List',
19
+ 'Card',
20
+ 'Tabs',
21
+ 'Modal',
22
+ 'Divider',
23
+ 'Button',
24
+ 'CheckBox',
25
+ 'TextField',
26
+ 'DateTimeInput',
27
+ 'ChoicePicker',
28
+ 'Slider',
29
+ ];
30
+ /** The AG-UI activity type A2UI surfaces travel under (AG-UI's A2UI middleware, CopilotKit). */
31
+ export const A2UI_ACTIVITY_TYPE = 'a2ui-surface';
32
+ /** The key of the A2UI messages in an `a2ui-surface` activity's content. */
33
+ export const A2UI_OPERATIONS_KEY = 'a2ui_operations';
34
+ /** Action names the transports answer themselves: deciding a parked approval. */
35
+ export const A2UI_APPROVE_ACTION = 'agora.approve';
36
+ export const A2UI_REJECT_ACTION = 'agora.reject';
37
+ function isRecord(value) {
38
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
39
+ }
40
+ const str = (value, fallback = '') => typeof value === 'string' ? value : typeof value === 'number' ? String(value) : fallback;
41
+ function text(id, value, variant) {
42
+ return { id, component: 'Text', text: value, ...(variant !== undefined ? { variant } : {}) };
43
+ }
44
+ /** A column of `[heading?, ...children]` — what most builtins come down to. */
45
+ function titled(ctx, title, children, extra = []) {
46
+ const heading = typeof title === 'string' && title.length > 0;
47
+ const titleId = ctx.derive('title');
48
+ return [
49
+ {
50
+ id: ctx.id,
51
+ component: 'Column',
52
+ children: heading ? [titleId, ...children] : [...children],
53
+ },
54
+ ...(heading ? [text(titleId, title, 'h4')] : []),
55
+ ...extra,
56
+ ];
57
+ }
58
+ function cards(ctx, items, lines) {
59
+ const list = Array.isArray(items) ? items.filter(isRecord) : [];
60
+ const out = [];
61
+ const ids = [];
62
+ list.forEach((item, index) => {
63
+ const card = ctx.derive(`item${index}`);
64
+ const column = ctx.derive(`item${index}col`);
65
+ const parts = lines(item).filter(([value]) => value.length > 0);
66
+ ids.push(card);
67
+ out.push({ id: card, component: 'Card', child: column });
68
+ out.push({
69
+ id: column,
70
+ component: 'Column',
71
+ children: parts.map((_, line) => ctx.derive(`item${index}l${line}`)),
72
+ });
73
+ parts.forEach(([value, variant], line) => {
74
+ out.push(text(ctx.derive(`item${index}l${line}`), value, variant));
75
+ });
76
+ });
77
+ return [{ id: ctx.id, component: 'Row', children: ids }, ...out];
78
+ }
79
+ function table(ctx, title, columns, rows) {
80
+ const out = [];
81
+ const header = ctx.derive('header');
82
+ const rowIds = rows.map((_, index) => ctx.derive(`row${index}`));
83
+ out.push({
84
+ id: header,
85
+ component: 'Row',
86
+ children: columns.map((_, index) => ctx.derive(`h${index}`)),
87
+ });
88
+ columns.forEach((column, index) => {
89
+ out.push({ ...text(ctx.derive(`h${index}`), column.label, 'caption'), weight: 1 });
90
+ });
91
+ rows.forEach((row, r) => {
92
+ out.push({
93
+ id: rowIds[r],
94
+ component: 'Row',
95
+ children: columns.map((_, c) => ctx.derive(`r${r}c${c}`)),
96
+ });
97
+ columns.forEach((column, c) => {
98
+ out.push({ ...text(ctx.derive(`r${r}c${c}`), str(row[column.key])), weight: 1 });
99
+ });
100
+ });
101
+ return titled(ctx, title, [header, ...rowIds], out);
102
+ }
103
+ function columnsOf(value) {
104
+ return (Array.isArray(value) ? value : [])
105
+ .filter(isRecord)
106
+ .filter((column) => typeof column.key === 'string')
107
+ .map((column) => ({
108
+ key: column.key,
109
+ label: str(column.label, column.key),
110
+ }));
111
+ }
112
+ function rowsOf(value) {
113
+ return (Array.isArray(value) ? value : []).filter(isRecord);
114
+ }
115
+ /** The library builtins, mapped onto A2UI's basic catalog. */
116
+ export const A2UI_BUILTIN_MAPPERS = Object.freeze({
117
+ Stack: (props, ctx) => [
118
+ {
119
+ id: ctx.id,
120
+ component: props.direction === 'row' ? 'Row' : 'Column',
121
+ children: [...ctx.children],
122
+ },
123
+ ],
124
+ Card: (props, ctx) => {
125
+ const inner = ctx.derive('body');
126
+ const subtitle = ctx.derive('subtitle');
127
+ const hasSubtitle = typeof props.subtitle === 'string' && props.subtitle.length > 0;
128
+ return [
129
+ { id: ctx.id, component: 'Card', child: inner },
130
+ ...titled({ ...ctx, id: inner }, props.title, hasSubtitle ? [subtitle, ...ctx.children] : ctx.children, hasSubtitle ? [text(subtitle, props.subtitle, 'caption')] : []),
131
+ ];
132
+ },
133
+ Heading: (props, ctx) => [text(ctx.id, str(props.text), 'h3')],
134
+ Text: (props, ctx) => [text(ctx.id, str(props.text), props.muted === true ? 'caption' : 'body')],
135
+ Badge: (props, ctx) => [text(ctx.id, str(props.text), 'caption')],
136
+ Callout: (props, ctx) => {
137
+ const body = ctx.derive('body');
138
+ const message = ctx.derive('text');
139
+ return [
140
+ { id: ctx.id, component: 'Card', child: body },
141
+ ...titled({ ...ctx, id: body }, props.title, [message], [text(message, str(props.text))]),
142
+ ];
143
+ },
144
+ Link: (props, ctx) => {
145
+ const label = ctx.derive('label');
146
+ return [
147
+ {
148
+ id: ctx.id,
149
+ component: 'Button',
150
+ variant: 'borderless',
151
+ child: label,
152
+ action: { functionCall: { call: 'openUrl', args: { url: str(props.url) } } },
153
+ },
154
+ text(label, str(props.text, str(props.url))),
155
+ ];
156
+ },
157
+ Image: (props, ctx) => [
158
+ {
159
+ id: ctx.id,
160
+ component: 'Image',
161
+ url: str(props.url),
162
+ ...(typeof props.alt === 'string' ? { description: props.alt } : {}),
163
+ },
164
+ ],
165
+ CodeBlock: (props, ctx) => [text(ctx.id, `\`\`\`\n${str(props.code)}\n\`\`\``)],
166
+ KpiCards: (props, ctx) => cards(ctx, props.items, (item) => [
167
+ [str(item.label), 'caption'],
168
+ [str(item.value), 'h3'],
169
+ [str(item.delta), 'caption'],
170
+ ]),
171
+ SourceCards: (props, ctx) => cards(ctx, props.items, (item) => [
172
+ [str(item.title), 'h5'],
173
+ [str(item.snippet), 'body'],
174
+ [str(item.source, str(item.url)), 'caption'],
175
+ ]),
176
+ DataTable: (props, ctx) => table(ctx, props.title, columnsOf(props.columns), rowsOf(props.rows)),
177
+ // The basic catalog has no chart: its points, as a table — what a text client gets too.
178
+ Chart: (props, ctx) => {
179
+ const xKey = str(props.xKey);
180
+ const series = (Array.isArray(props.series) ? props.series : [])
181
+ .filter(isRecord)
182
+ .filter((each) => typeof each.key === 'string')
183
+ .map((each) => ({ key: each.key, label: str(each.label, each.key) }));
184
+ return table(ctx, props.title, [{ key: xKey, label: xKey }, ...series], rowsOf(props.data));
185
+ },
186
+ });
187
+ /** Ids A2UI renderers accept everywhere: the node ids (`root.0.1`) and derived ones (`root.0~title`). */
188
+ function safeId(id) {
189
+ return id.replace(/[^A-Za-z0-9_.~:-]/g, '_');
190
+ }
191
+ /**
192
+ * A `ui` frame as A2UI components, flat, the root's id `root`. A composed tree (`genui:tree`) maps
193
+ * node by node — node ids are their positions (`root`, `root.0`, `root.0.2`), stable from the first
194
+ * preview to the final frame, so a streamed surface only ever grows. A node still held back
195
+ * (`held`) is left out: its parent references an id that arrives later, which A2UI draws as a
196
+ * placeholder.
197
+ */
198
+ export function toA2uiComponents(frame, options = {}) {
199
+ const props = isRecord(frame.props) ? frame.props : {};
200
+ const root = frame.component === GENUI_TREE_COMPONENT
201
+ ? isRecord(props.root) && typeof props.root.type === 'string'
202
+ ? props.root
203
+ : undefined
204
+ : { type: frame.component, props };
205
+ if (root === undefined)
206
+ return [];
207
+ const out = [];
208
+ const visit = (node, id, depth) => {
209
+ if (depth > 32 || node.held === true)
210
+ return;
211
+ const children = (Array.isArray(node.children) ? node.children : []).filter((child) => isRecord(child) && typeof child.type === 'string');
212
+ const childIds = children.map((_, index) => `${id}.${index}`);
213
+ const nodeProps = isRecord(node.props) ? node.props : {};
214
+ const ctx = {
215
+ id,
216
+ children: childIds,
217
+ derive: (suffix) => `${id}~${suffix}`,
218
+ incomplete: node.incomplete === true,
219
+ text: () => options.catalog !== undefined ? componentToText(options.catalog, node.type, nodeProps) : '',
220
+ };
221
+ out.push(...mapNode(node.type, nodeProps, ctx, options));
222
+ children.forEach((child, index) => {
223
+ visit(child, childIds[index], depth + 1);
224
+ });
225
+ };
226
+ visit(root, 'root', 1);
227
+ return out.map((component) => ({ ...component, id: safeId(component.id) })).map(fixRefs);
228
+ }
229
+ function fixRefs(component) {
230
+ const next = { ...component };
231
+ if (Array.isArray(next.children))
232
+ next.children = next.children.map((id) => safeId(String(id)));
233
+ for (const key of ['child', 'trigger', 'content']) {
234
+ if (typeof next[key] === 'string')
235
+ next[key] = safeId(next[key]);
236
+ }
237
+ return next;
238
+ }
239
+ function mapNode(type, props, ctx, options) {
240
+ const own = options.components?.[type];
241
+ if (typeof own === 'function')
242
+ return withRoot(own(props, ctx), ctx, type);
243
+ if (own === 'custom' || (own === undefined && options.unmapped === 'custom')) {
244
+ return [
245
+ {
246
+ ...props,
247
+ id: ctx.id,
248
+ component: type,
249
+ ...(ctx.children.length > 0 ? { children: [...ctx.children] } : {}),
250
+ },
251
+ ];
252
+ }
253
+ const builtin = A2UI_BUILTIN_MAPPERS[type];
254
+ if (builtin !== undefined)
255
+ return withRoot(builtin(props, ctx), ctx, type);
256
+ // Nothing maps it: its words, then whatever it holds.
257
+ const words = ctx.text();
258
+ if (ctx.children.length === 0)
259
+ return [text(ctx.id, words)];
260
+ const label = ctx.derive('text');
261
+ return [
262
+ {
263
+ id: ctx.id,
264
+ component: 'Column',
265
+ children: words.length > 0 ? [label, ...ctx.children] : [...ctx.children],
266
+ },
267
+ ...(words.length > 0 ? [text(label, words)] : []),
268
+ ];
269
+ }
270
+ function withRoot(components, ctx, type) {
271
+ if (!components.some((component) => component.id === ctx.id)) {
272
+ throw new Error(`a2ui: the mapping of ${type} must return a component with id "${ctx.id}"`);
273
+ }
274
+ return components;
275
+ }
276
+ /**
277
+ * {@link toA2uiComponents} that never throws: a mapping that fails (an app mapper that throws or
278
+ * forgets the root id) draws the component's text instead of breaking the stream it rides on.
279
+ */
280
+ function safeComponents(frame, options) {
281
+ try {
282
+ return toA2uiComponents(frame, options);
283
+ }
284
+ catch {
285
+ const props = isRecord(frame.props) ? frame.props : {};
286
+ const words = options.catalog !== undefined ? componentToText(options.catalog, frame.component, props) : '';
287
+ return words.length > 0 ? [text('root', words)] : [];
288
+ }
289
+ }
290
+ /** The messages that draw (or redraw) a surface: `createSurface` the first time, then its components. */
291
+ export function a2uiSurfaceMessages(surfaceId, components, options) {
292
+ const out = [];
293
+ if (options.create) {
294
+ out.push({
295
+ version: A2UI_VERSION,
296
+ createSurface: {
297
+ surfaceId,
298
+ catalogId: options.catalogId ?? A2UI_BASIC_CATALOG_ID,
299
+ ...(options.theme !== undefined ? { theme: options.theme } : {}),
300
+ ...(options.sendDataModel === true ? { sendDataModel: true } : {}),
301
+ },
302
+ });
303
+ }
304
+ if (components.length > 0) {
305
+ out.push({ version: A2UI_VERSION, updateComponents: { surfaceId, components } });
306
+ }
307
+ return out;
308
+ }
309
+ /** A surface id A2UI clients accept, from a `ui` frame id (`<toolCallId>:ui:0`). */
310
+ export function a2uiSurfaceId(frameId) {
311
+ return frameId.replace(/[^A-Za-z0-9_.~:-]/g, '_');
312
+ }
313
+ /**
314
+ * A2UI's AG-UI binding (the AG-UI A2UI middleware, CopilotKit's renderer): one `ACTIVITY_SNAPSHOT`
315
+ * of type `a2ui-surface` per `ui` frame, carrying the whole surface (`createSurface` +
316
+ * `updateComponents`) with `replace: true` — so each preview of a streaming tree repaints the same
317
+ * activity in place, keyed by the frame id.
318
+ */
319
+ export function a2uiActivityEvent(frame, options = {}) {
320
+ const props = isRecord(frame.props) ? frame.props : {};
321
+ const surfaceId = a2uiSurfaceId(frame.id);
322
+ // A withdrawn preview: the surface it painted goes.
323
+ if (frame.partial === true && Object.keys(props).length === 0) {
324
+ return {
325
+ type: 'ACTIVITY_SNAPSHOT',
326
+ messageId: `a2ui-surface-${surfaceId}`,
327
+ activityType: A2UI_ACTIVITY_TYPE,
328
+ content: { [A2UI_OPERATIONS_KEY]: [{ version: A2UI_VERSION, deleteSurface: { surfaceId } }] },
329
+ replace: true,
330
+ };
331
+ }
332
+ const components = safeComponents(frame, options);
333
+ if (components.length === 0)
334
+ return null;
335
+ return {
336
+ type: 'ACTIVITY_SNAPSHOT',
337
+ messageId: `a2ui-surface-${surfaceId}`,
338
+ activityType: A2UI_ACTIVITY_TYPE,
339
+ content: {
340
+ [A2UI_OPERATIONS_KEY]: a2uiSurfaceMessages(surfaceId, components, {
341
+ ...options,
342
+ create: true,
343
+ }),
344
+ },
345
+ replace: true,
346
+ };
347
+ }
348
+ /**
349
+ * An A2UI catalog definition (v0.9 inline catalog shape) for an agent catalog's components sent
350
+ * as custom components: `{ catalogId, components: { Name: JSON Schema } }` — what a client
351
+ * registers, or hands an A2UI-aware runtime (`a2uiClientCapabilities.inlineCatalogs`).
352
+ */
353
+ export function a2uiCatalog(catalog, options) {
354
+ const components = {};
355
+ for (const definition of catalog.modelComponents()) {
356
+ if (options.only !== undefined && !options.only.includes(definition.name))
357
+ continue;
358
+ const schema = toJsonSchema(definition.props) ?? { type: 'object' };
359
+ const properties = isRecord(schema.properties) ? schema.properties : {};
360
+ components[definition.name] = {
361
+ type: 'object',
362
+ description: definition.description,
363
+ properties: {
364
+ component: { const: definition.name },
365
+ ...properties,
366
+ ...(definition.children === true
367
+ ? {
368
+ children: {
369
+ $ref: 'https://a2ui.org/specification/v0_9/common_types.json#/$defs/ChildList',
370
+ },
371
+ }
372
+ : {}),
373
+ },
374
+ required: ['component', ...(Array.isArray(schema.required) ? schema.required : [])],
375
+ };
376
+ }
377
+ return { catalogId: options.catalogId, components };
378
+ }
379
+ /**
380
+ * A client-to-server A2UI message, or an AG-UI `forwardedProps.a2uiAction`, as a {@link UiAction}:
381
+ * v0.9 `{ version, action: { name, surfaceId, sourceComponentId, timestamp, context } }`, v0.8
382
+ * `{ userAction: { … } }`, or the bare action object. A string when it is not one.
383
+ */
384
+ export function readA2uiAction(raw, options = {}) {
385
+ if (!isRecord(raw))
386
+ return 'an A2UI action must be an object';
387
+ const inner = isRecord(raw.action) ? raw.action : isRecord(raw.userAction) ? raw.userAction : raw;
388
+ if (typeof inner.name !== 'string')
389
+ return 'an A2UI action carries a name';
390
+ return readUiAction({
391
+ source: 'a2ui',
392
+ name: inner.name,
393
+ context: isRecord(inner.context) ? inner.context : {},
394
+ ...(typeof inner.surfaceId === 'string' ? { surfaceId: inner.surfaceId } : {}),
395
+ ...(typeof inner.sourceComponentId === 'string'
396
+ ? { componentId: inner.sourceComponentId }
397
+ : {}),
398
+ ...(typeof inner.timestamp === 'string' ? { timestamp: inner.timestamp } : {}),
399
+ ...(typeof inner.text === 'string' ? { text: inner.text } : {}),
400
+ }, { ...options, source: 'a2ui' });
401
+ }
402
+ /** The surface an approval interrupt is shown on: its message, and Approve / Reject buttons. */
403
+ export function a2uiApprovalComponents(interrupt) {
404
+ const button = (id, label, name, variant) => [
405
+ {
406
+ id,
407
+ component: 'Button',
408
+ variant,
409
+ child: `${id}~label`,
410
+ action: { event: { name, context: { interruptId: interrupt.id } } },
411
+ },
412
+ text(`${id}~label`, label),
413
+ ];
414
+ return [
415
+ { id: 'root', component: 'Card', child: 'body' },
416
+ { id: 'body', component: 'Column', children: ['message', 'buttons'] },
417
+ text('message', interrupt.message ?? 'Approve?', 'body'),
418
+ { id: 'buttons', component: 'Row', children: ['approve', 'reject'] },
419
+ ...button('approve', 'Approve', A2UI_APPROVE_ACTION, 'primary'),
420
+ ...button('reject', 'Reject', A2UI_REJECT_ACTION, 'default'),
421
+ ];
422
+ }
423
+ /**
424
+ * One AG-UI run as an A2UI message stream — the projection the A2UI transport serves. Stateful
425
+ * (which surfaces exist), pure otherwise: feed it the run's AG-UI events in order.
426
+ *
427
+ * - `CUSTOM agora.ui` → a surface per `ui` frame id, created once and updated in place (previews
428
+ * included); a withdrawn preview deletes it;
429
+ * - text messages → a text surface each (see {@link A2uiStreamOptions.text});
430
+ * - an approval interrupt → a surface with Approve / Reject buttons ({@link A2UI_APPROVE_ACTION});
431
+ * any other interrupt → a text surface saying to answer it in the app;
432
+ * - `RUN_ERROR` → a text surface with the message.
433
+ */
434
+ export class A2uiProjector {
435
+ options;
436
+ surfaces = new Set();
437
+ texts = new Map();
438
+ constructor(options = {}) {
439
+ this.options = options;
440
+ }
441
+ project(event) {
442
+ switch (event.type) {
443
+ case 'CUSTOM':
444
+ return event.name === 'agora.ui' ? this.ui(event.value) : [];
445
+ case 'TEXT_MESSAGE_START':
446
+ if (this.options.text === 'omit')
447
+ return [];
448
+ this.texts.set(event.messageId, '');
449
+ return this.surface(`text-${event.messageId}`, [
450
+ { id: 'root', component: 'Text', text: { path: '/text' } },
451
+ ]);
452
+ case 'TEXT_MESSAGE_CONTENT': {
453
+ if (this.options.text === 'omit')
454
+ return [];
455
+ const next = `${this.texts.get(event.messageId) ?? ''}${event.delta}`;
456
+ this.texts.set(event.messageId, next);
457
+ return [
458
+ {
459
+ version: A2UI_VERSION,
460
+ updateDataModel: { surfaceId: `text-${event.messageId}`, path: '/text', value: next },
461
+ },
462
+ ];
463
+ }
464
+ case 'RUN_FINISHED': {
465
+ const outcome = event.outcome;
466
+ if (!isRecord(outcome) || outcome.type !== 'interrupt')
467
+ return [];
468
+ const interrupts = Array.isArray(outcome.interrupts) ? outcome.interrupts : [];
469
+ return interrupts.filter(isRecord).flatMap((interrupt) => {
470
+ const id = a2uiSurfaceId(`interrupt-${String(interrupt.id)}`);
471
+ return interrupt.reason === 'tool_approval'
472
+ ? this.surface(id, a2uiApprovalComponents(interrupt))
473
+ : this.surface(id, [
474
+ text('root', `${str(interrupt.message, 'The assistant is waiting for an answer.')} (answer it in the app)`),
475
+ ]);
476
+ });
477
+ }
478
+ case 'RUN_ERROR':
479
+ return this.surface(`error-${this.surfaces.size}`, [text('root', event.message)]);
480
+ default:
481
+ return [];
482
+ }
483
+ }
484
+ surface(surfaceId, components) {
485
+ const create = !this.surfaces.has(surfaceId);
486
+ this.surfaces.add(surfaceId);
487
+ return a2uiSurfaceMessages(surfaceId, components, {
488
+ ...this.options,
489
+ // Text, approvals and errors are basic-catalog components whatever the app's catalog is.
490
+ catalogId: A2UI_BASIC_CATALOG_ID,
491
+ create,
492
+ });
493
+ }
494
+ ui(value) {
495
+ if (!isRecord(value) || typeof value.id !== 'string' || typeof value.component !== 'string') {
496
+ return [];
497
+ }
498
+ const surfaceId = a2uiSurfaceId(value.id);
499
+ const props = isRecord(value.props) ? value.props : {};
500
+ if (value.partial === true && Object.keys(props).length === 0) {
501
+ if (!this.surfaces.delete(surfaceId))
502
+ return [];
503
+ return [{ version: A2UI_VERSION, deleteSurface: { surfaceId } }];
504
+ }
505
+ const components = safeComponents({ component: value.component, props: props }, this.options);
506
+ if (components.length === 0)
507
+ return [];
508
+ const create = !this.surfaces.has(surfaceId);
509
+ this.surfaces.add(surfaceId);
510
+ return a2uiSurfaceMessages(surfaceId, components, { ...this.options, create });
511
+ }
512
+ }
513
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/a2ui/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A2UI (https://a2ui.org, v0.9) for this agent: the `a2uiAdapter()` route (JSON Lines of A2UI
3
+ * messages), and the framework-free pieces it is built from — the `ui` frame → A2UI converter, the
4
+ * builtin → basic-catalog mappings, the catalog export, the inbound action reader. For A2UI over
5
+ * AG-UI, pass `a2ui: true` to `agUiAdapter()`.
6
+ */
7
+ export { type UiAction, uiActionText } from '../genui/actions.js';
8
+ export { type A2uiAdapterOptions, a2uiAdapter } from './adapter.js';
9
+ export { A2UI_ACTIVITY_TYPE, A2UI_APPROVE_ACTION, A2UI_BASIC_CATALOG_ID, A2UI_BASIC_COMPONENTS, A2UI_BUILTIN_MAPPERS, A2UI_OPERATIONS_KEY, A2UI_REJECT_ACTION, A2UI_VERSION, type A2uiComponent, type A2uiMapContext, type A2uiMapper, type A2uiOptions, A2uiProjector, type A2uiServerMessage, type A2uiStreamOptions, a2uiActivityEvent, a2uiApprovalComponents, a2uiCatalog, a2uiSurfaceId, a2uiSurfaceMessages, readA2uiAction, toA2uiComponents, } from './core.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2ui/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,KAAK,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A2UI (https://a2ui.org, v0.9) for this agent: the `a2uiAdapter()` route (JSON Lines of A2UI
3
+ * messages), and the framework-free pieces it is built from — the `ui` frame → A2UI converter, the
4
+ * builtin → basic-catalog mappings, the catalog export, the inbound action reader. For A2UI over
5
+ * AG-UI, pass `a2ui: true` to `agUiAdapter()`.
6
+ */
7
+ export { uiActionText } from '../genui/actions.js';
8
+ export { a2uiAdapter } from './adapter.js';
9
+ export { A2UI_ACTIVITY_TYPE, A2UI_APPROVE_ACTION, A2UI_BASIC_CATALOG_ID, A2UI_BASIC_COMPONENTS, A2UI_BUILTIN_MAPPERS, A2UI_OPERATIONS_KEY, A2UI_REJECT_ACTION, A2UI_VERSION, A2uiProjector, a2uiActivityEvent, a2uiApprovalComponents, a2uiCatalog, a2uiSurfaceId, a2uiSurfaceMessages, readA2uiAction, toA2uiComponents, } from './core.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2ui/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAA2B,WAAW,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EAKZ,aAAa,EAGb,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { A2uiOptions } from '../a2ui/core.js';
1
2
  import type { ProtocolAdapter } from '../spi/protocol-adapter.js';
2
3
  export interface AgUiAdapterOptions {
3
4
  /** Where the route mounts, under the agent's path. Default `'ag-ui'` → `POST <path>/ag-ui`. */
@@ -7,6 +8,14 @@ export interface AgUiAdapterOptions {
7
8
  * before it is reported interrupted. Default 750 ms.
8
9
  */
9
10
  quietMs?: number;
11
+ /**
12
+ * A2UI over AG-UI: every generative-UI frame is also sent as an `ACTIVITY_SNAPSHOT` of type
13
+ * `a2ui-surface` (the A2UI messages under `a2ui_operations`), so CopilotKit's A2UI renderer — or
14
+ * any client of AG-UI's A2UI binding — draws it. `true` maps the library builtins onto A2UI's
15
+ * basic catalog; pass {@link A2uiOptions} for the app's own mappings or catalog. Inbound,
16
+ * `forwardedProps.a2uiAction.userAction` is always read: the action becomes the user's turn.
17
+ */
18
+ a2ui?: boolean | A2uiOptions;
10
19
  }
11
20
  /**
12
21
  * Serve the agent over AG-UI 1.0 (https://docs.ag-ui.com/spec/1.0): the body of `POST <path>/ag-ui`
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/ag-ui/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAC;AAiBvF,MAAM,WAAW,kBAAkB;IACjC,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,eAAe,CAkN7E"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/ag-ui/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAC;AAiBvF,MAAM,WAAW,kBAAkB;IACjC,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC9B;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,eAAe,CAyO7E"}