@adia-ai/web-components 0.0.28 → 0.0.33

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 (349) hide show
  1. package/README.md +4 -8
  2. package/a2ui/index.js +1 -1
  3. package/components/accordion/accordion.a2ui.json +1 -1
  4. package/components/accordion/accordion.js +6 -6
  5. package/components/accordion/accordion.yaml +1 -1
  6. package/components/action-list/action-list.a2ui.json +1 -1
  7. package/components/action-list/action-list.js +6 -6
  8. package/components/action-list/action-list.yaml +1 -1
  9. package/components/agent-artifact/agent-artifact.a2ui.json +1 -1
  10. package/components/agent-artifact/agent-artifact.js +4 -4
  11. package/components/agent-artifact/agent-artifact.yaml +1 -1
  12. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +1 -1
  13. package/components/agent-feedback-bar/agent-feedback-bar.js +4 -4
  14. package/components/agent-feedback-bar/agent-feedback-bar.yaml +1 -1
  15. package/components/agent-questions/agent-questions.a2ui.json +1 -1
  16. package/components/agent-questions/agent-questions.js +4 -4
  17. package/components/agent-questions/agent-questions.yaml +1 -1
  18. package/components/agent-reasoning/agent-reasoning.a2ui.json +3 -3
  19. package/components/agent-reasoning/agent-reasoning.js +4 -4
  20. package/components/agent-reasoning/agent-reasoning.yaml +3 -3
  21. package/components/agent-suggestions/agent-suggestions.a2ui.json +1 -1
  22. package/components/agent-suggestions/agent-suggestions.js +4 -4
  23. package/components/agent-suggestions/agent-suggestions.yaml +1 -1
  24. package/components/agent-trace/agent-trace.a2ui.json +1 -1
  25. package/components/agent-trace/agent-trace.js +4 -4
  26. package/components/agent-trace/agent-trace.yaml +1 -1
  27. package/components/alert/alert.a2ui.json +1 -1
  28. package/components/alert/alert.js +4 -4
  29. package/components/alert/alert.yaml +1 -1
  30. package/components/aside/aside.a2ui.json +1 -1
  31. package/components/aside/aside.yaml +1 -1
  32. package/components/avatar/avatar.a2ui.json +1 -1
  33. package/components/avatar/avatar.js +8 -8
  34. package/components/avatar/avatar.yaml +1 -1
  35. package/components/badge/badge.a2ui.json +1 -1
  36. package/components/badge/badge.js +4 -4
  37. package/components/badge/badge.yaml +1 -1
  38. package/components/block/block.a2ui.json +1 -1
  39. package/components/block/block.js +4 -4
  40. package/components/block/block.yaml +1 -1
  41. package/components/breadcrumb/breadcrumb.a2ui.json +1 -1
  42. package/components/breadcrumb/breadcrumb.js +4 -4
  43. package/components/breadcrumb/breadcrumb.yaml +1 -1
  44. package/components/button/button.a2ui.json +1 -1
  45. package/components/button/button.js +4 -4
  46. package/components/button/button.yaml +1 -1
  47. package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
  48. package/components/calendar-picker/calendar-picker.js +6 -6
  49. package/components/calendar-picker/calendar-picker.yaml +1 -1
  50. package/components/canvas/canvas.a2ui.json +1 -1
  51. package/components/canvas/canvas.js +5 -5
  52. package/components/canvas/canvas.yaml +1 -1
  53. package/components/card/card.a2ui.json +1 -1
  54. package/components/card/card.js +4 -4
  55. package/components/card/card.yaml +1 -1
  56. package/components/chart/chart.a2ui.json +1 -1
  57. package/components/chart/chart.js +5 -5
  58. package/components/chart/chart.yaml +1 -1
  59. package/components/chart-legend/chart-legend.a2ui.json +1 -1
  60. package/components/chart-legend/chart-legend.js +7 -7
  61. package/components/chart-legend/chart-legend.yaml +1 -1
  62. package/components/{chat → chat-thread}/chat-input.js +5 -5
  63. package/components/{chat/chat.a2ui.json → chat-thread/chat-thread.a2ui.json} +6 -6
  64. package/components/{chat/chat.css → chat-thread/chat-thread.css} +2 -2
  65. package/components/{chat/chat.js → chat-thread/chat-thread.js} +7 -7
  66. package/components/{chat/chat.yaml → chat-thread/chat-thread.yaml} +4 -4
  67. package/components/check/check.a2ui.json +1 -1
  68. package/components/check/check.js +5 -5
  69. package/components/check/check.yaml +1 -1
  70. package/components/code/code.a2ui.json +1 -1
  71. package/components/code/code.js +4 -4
  72. package/components/code/code.yaml +1 -1
  73. package/components/col/col.a2ui.json +1 -1
  74. package/components/col/col.js +4 -4
  75. package/components/col/col.yaml +1 -1
  76. package/components/color-picker/color-picker.a2ui.json +1 -1
  77. package/components/color-picker/color-picker.js +6 -6
  78. package/components/color-picker/color-picker.yaml +1 -1
  79. package/components/command/command.a2ui.json +1 -1
  80. package/components/command/command.js +5 -5
  81. package/components/command/command.yaml +1 -1
  82. package/components/description-list/description-list.a2ui.json +1 -1
  83. package/components/description-list/description-list.js +4 -4
  84. package/components/description-list/description-list.yaml +1 -1
  85. package/components/divider/divider.a2ui.json +1 -1
  86. package/components/divider/divider.js +4 -4
  87. package/components/divider/divider.yaml +1 -1
  88. package/components/drawer/drawer.a2ui.json +1 -1
  89. package/components/drawer/drawer.js +4 -4
  90. package/components/drawer/drawer.yaml +1 -1
  91. package/components/embed/embed.a2ui.json +1 -1
  92. package/components/embed/embed.js +4 -4
  93. package/components/embed/embed.yaml +1 -1
  94. package/components/empty-state/empty-state.a2ui.json +1 -1
  95. package/components/empty-state/empty-state.js +4 -4
  96. package/components/empty-state/empty-state.yaml +1 -1
  97. package/components/feed/feed-item.yaml +2 -2
  98. package/components/feed/feed.a2ui.json +2 -2
  99. package/components/feed/feed.css +21 -3
  100. package/components/feed/feed.js +140 -31
  101. package/components/feed/feed.yaml +2 -2
  102. package/components/field/field.a2ui.json +1 -1
  103. package/components/field/field.js +10 -10
  104. package/components/field/field.yaml +2 -2
  105. package/components/footer/footer.a2ui.json +1 -1
  106. package/components/footer/footer.yaml +1 -1
  107. package/components/grid/grid.a2ui.json +1 -1
  108. package/components/grid/grid.js +4 -4
  109. package/components/grid/grid.yaml +1 -1
  110. package/components/header/header.a2ui.json +1 -1
  111. package/components/header/header.yaml +1 -1
  112. package/components/heatmap/heatmap.a2ui.json +1 -1
  113. package/components/heatmap/heatmap.js +4 -4
  114. package/components/heatmap/heatmap.yaml +1 -1
  115. package/components/icon/icon.a2ui.json +1 -1
  116. package/components/icon/icon.js +4 -4
  117. package/components/icon/icon.yaml +1 -1
  118. package/components/image/image.a2ui.json +1 -1
  119. package/components/image/image.js +4 -4
  120. package/components/image/image.yaml +1 -1
  121. package/components/index.js +88 -85
  122. package/components/input/input.a2ui.json +1 -1
  123. package/components/input/input.js +7 -7
  124. package/components/input/input.yaml +1 -1
  125. package/components/inspector/inspector.a2ui.json +1 -1
  126. package/components/inspector/inspector.js +4 -4
  127. package/components/inspector/inspector.yaml +1 -1
  128. package/components/kbd/kbd.a2ui.json +1 -1
  129. package/components/kbd/kbd.js +4 -4
  130. package/components/kbd/kbd.yaml +1 -1
  131. package/components/list/list.a2ui.json +1 -1
  132. package/components/list/list.js +6 -6
  133. package/components/list/list.yaml +1 -1
  134. package/components/menu/menu.a2ui.json +1 -1
  135. package/components/menu/menu.js +8 -8
  136. package/components/menu/menu.yaml +1 -1
  137. package/components/modal/modal.a2ui.json +1 -1
  138. package/components/modal/modal.js +4 -4
  139. package/components/modal/modal.yaml +1 -1
  140. package/components/nav/nav.a2ui.json +98 -0
  141. package/components/nav/nav.css +133 -0
  142. package/components/nav/nav.js +140 -0
  143. package/components/nav/nav.test.js +428 -0
  144. package/components/nav/nav.yaml +114 -0
  145. package/components/nav-group/nav-group.a2ui.json +100 -0
  146. package/{patterns/app-nav-group/app-nav-group.css → components/nav-group/nav-group.css} +71 -18
  147. package/{patterns/app-nav-group/app-nav-group.js → components/nav-group/nav-group.js} +51 -25
  148. package/components/nav-group/nav-group.yaml +69 -0
  149. package/components/nav-item/nav-item.a2ui.json +106 -0
  150. package/{patterns/app-nav-item/app-nav-item.css → components/nav-item/nav-item.css} +42 -10
  151. package/components/nav-item/nav-item.js +76 -0
  152. package/components/nav-item/nav-item.yaml +73 -0
  153. package/components/noodles/noodles.a2ui.json +1 -1
  154. package/components/noodles/noodles.js +4 -4
  155. package/components/noodles/noodles.yaml +1 -1
  156. package/components/option-card/option-card.a2ui.json +1 -1
  157. package/components/option-card/option-card.js +6 -6
  158. package/components/option-card/option-card.yaml +1 -1
  159. package/components/otp-input/otp-input.a2ui.json +1 -1
  160. package/components/otp-input/otp-input.js +5 -5
  161. package/components/otp-input/otp-input.yaml +1 -1
  162. package/components/page/page.a2ui.json +3 -3
  163. package/components/page/page.js +4 -4
  164. package/components/page/page.yaml +3 -3
  165. package/components/pagination/pagination.a2ui.json +1 -1
  166. package/components/pagination/pagination.js +4 -4
  167. package/components/pagination/pagination.yaml +1 -1
  168. package/components/pane/pane.a2ui.json +1 -1
  169. package/components/pane/pane.js +4 -4
  170. package/components/pane/pane.yaml +1 -1
  171. package/components/pipeline-status/pipeline-status.a2ui.json +1 -1
  172. package/components/pipeline-status/pipeline-status.js +4 -4
  173. package/components/pipeline-status/pipeline-status.yaml +1 -1
  174. package/components/popover/popover.a2ui.json +1 -1
  175. package/components/popover/popover.js +4 -4
  176. package/components/popover/popover.yaml +1 -1
  177. package/components/progress/progress.a2ui.json +1 -1
  178. package/components/progress/progress.js +4 -4
  179. package/components/progress/progress.yaml +1 -1
  180. package/components/progress-row/progress-row.a2ui.json +1 -1
  181. package/components/progress-row/progress-row.js +4 -4
  182. package/components/progress-row/progress-row.yaml +1 -1
  183. package/components/radio/radio.a2ui.json +1 -1
  184. package/components/radio/radio.js +5 -5
  185. package/components/radio/radio.yaml +1 -1
  186. package/components/range/range.a2ui.json +1 -1
  187. package/components/range/range.js +7 -7
  188. package/components/range/range.yaml +1 -1
  189. package/components/rating/rating.a2ui.json +1 -1
  190. package/components/rating/rating.js +6 -6
  191. package/components/rating/rating.yaml +1 -1
  192. package/components/richtext/richtext.a2ui.json +1 -1
  193. package/components/richtext/richtext.js +4 -4
  194. package/components/richtext/richtext.yaml +1 -1
  195. package/components/row/row.a2ui.json +1 -1
  196. package/components/row/row.js +4 -4
  197. package/components/row/row.yaml +1 -1
  198. package/components/search/search.a2ui.json +1 -1
  199. package/components/search/search.js +5 -5
  200. package/components/search/search.yaml +1 -1
  201. package/components/section/section.a2ui.json +1 -1
  202. package/components/section/section.yaml +1 -1
  203. package/components/segment/segment.a2ui.json +1 -1
  204. package/components/segment/segment.js +4 -4
  205. package/components/segment/segment.yaml +1 -1
  206. package/components/segmented/segmented.a2ui.json +1 -1
  207. package/components/segmented/segmented.css +6 -0
  208. package/components/segmented/segmented.js +7 -7
  209. package/components/segmented/segmented.yaml +1 -1
  210. package/components/select/select.a2ui.json +1 -1
  211. package/components/select/select.js +5 -5
  212. package/components/select/select.yaml +1 -1
  213. package/components/skeleton/skeleton.a2ui.json +1 -1
  214. package/components/skeleton/skeleton.js +4 -4
  215. package/components/skeleton/skeleton.yaml +1 -1
  216. package/components/slider/slider.a2ui.json +1 -1
  217. package/components/slider/slider.js +7 -7
  218. package/components/slider/slider.yaml +1 -1
  219. package/components/stack/stack.a2ui.json +1 -1
  220. package/components/stack/stack.js +4 -4
  221. package/components/stack/stack.yaml +1 -1
  222. package/components/stat/stat.a2ui.json +1 -1
  223. package/components/stat/stat.js +4 -4
  224. package/components/stat/stat.yaml +1 -1
  225. package/components/stepper/stepper.a2ui.json +1 -1
  226. package/components/stepper/stepper.js +6 -6
  227. package/components/stepper/stepper.yaml +1 -1
  228. package/components/stream/stream.a2ui.json +1 -1
  229. package/components/stream/stream.js +4 -4
  230. package/components/stream/stream.yaml +1 -1
  231. package/components/swatch/swatch.a2ui.json +1 -1
  232. package/components/swatch/swatch.js +4 -4
  233. package/components/swatch/swatch.yaml +1 -1
  234. package/components/swiper/swiper.a2ui.json +1 -1
  235. package/components/swiper/swiper.js +4 -4
  236. package/components/swiper/swiper.yaml +1 -1
  237. package/components/switch/switch.a2ui.json +1 -1
  238. package/components/switch/switch.js +5 -5
  239. package/components/switch/switch.yaml +1 -1
  240. package/components/table/table.a2ui.json +1 -1
  241. package/components/table/table.js +4 -4
  242. package/components/table/table.yaml +1 -1
  243. package/components/table-toolbar/table-toolbar.a2ui.json +1 -1
  244. package/components/table-toolbar/table-toolbar.js +4 -4
  245. package/components/table-toolbar/table-toolbar.yaml +1 -1
  246. package/components/tabs/tab.js +4 -4
  247. package/components/tabs/tabs.a2ui.json +1 -1
  248. package/components/tabs/tabs.js +5 -5
  249. package/components/tabs/tabs.yaml +1 -1
  250. package/components/tag/tag.a2ui.json +1 -1
  251. package/components/tag/tag.js +4 -4
  252. package/components/tag/tag.yaml +1 -1
  253. package/components/text/text.a2ui.json +1 -1
  254. package/components/text/text.js +4 -4
  255. package/components/text/text.yaml +1 -1
  256. package/components/textarea/textarea.a2ui.json +1 -1
  257. package/components/textarea/textarea.js +5 -5
  258. package/components/textarea/textarea.yaml +1 -1
  259. package/components/timeline/timeline.a2ui.json +1 -1
  260. package/components/timeline/timeline.js +6 -6
  261. package/components/timeline/timeline.yaml +1 -1
  262. package/components/toast/toast.a2ui.json +1 -1
  263. package/components/toast/toast.js +54 -184
  264. package/components/toast/toast.yaml +1 -1
  265. package/components/toggle-group/toggle-group.a2ui.json +1 -1
  266. package/components/toggle-group/toggle-group.js +6 -6
  267. package/components/toggle-group/toggle-group.yaml +1 -1
  268. package/components/toolbar/toolbar.a2ui.json +1 -1
  269. package/components/toolbar/toolbar.js +6 -6
  270. package/components/toolbar/toolbar.yaml +1 -1
  271. package/components/tooltip/tooltip.a2ui.json +1 -1
  272. package/components/tooltip/tooltip.js +7 -7
  273. package/components/tooltip/tooltip.yaml +1 -1
  274. package/components/tree/tree.a2ui.json +1 -1
  275. package/components/tree/tree.js +6 -6
  276. package/components/tree/tree.yaml +1 -1
  277. package/components/upload/upload.a2ui.json +1 -1
  278. package/components/upload/upload.js +6 -6
  279. package/components/upload/upload.yaml +1 -1
  280. package/core/element.js +4 -4
  281. package/core/element.test.js +18 -18
  282. package/core/form.js +9 -9
  283. package/core/index.js +2 -2
  284. package/core/provider.js +7 -7
  285. package/core/template.js +1 -1
  286. package/index.css +3 -2
  287. package/index.js +17 -7
  288. package/package.json +1 -5
  289. package/styles/components.css +10 -6
  290. package/styles/resets.css +1 -1
  291. package/traits/define.js +2 -2
  292. package/patterns/a2ui-root/a2ui-root.a2ui.json +0 -125
  293. package/patterns/a2ui-root/a2ui-root.js +0 -191
  294. package/patterns/a2ui-root/a2ui-root.yaml +0 -87
  295. package/patterns/adia-chat/adia-chat.a2ui.json +0 -149
  296. package/patterns/adia-chat/adia-chat.css +0 -10
  297. package/patterns/adia-chat/adia-chat.js +0 -297
  298. package/patterns/adia-chat/adia-chat.yaml +0 -118
  299. package/patterns/adia-chat/css/adia-chat.empty.css +0 -12
  300. package/patterns/adia-chat/css/adia-chat.layout.css +0 -60
  301. package/patterns/adia-chat/css/adia-chat.markdown.css +0 -74
  302. package/patterns/adia-chat/css/adia-chat.messages.css +0 -87
  303. package/patterns/adia-chat/css/adia-chat.streaming.css +0 -30
  304. package/patterns/adia-chat/css/adia-chat.tokens.css +0 -95
  305. package/patterns/adia-editor/adia-editor.a2ui.json +0 -73
  306. package/patterns/adia-editor/adia-editor.css +0 -6
  307. package/patterns/adia-editor/adia-editor.js +0 -56
  308. package/patterns/adia-editor/adia-editor.yaml +0 -59
  309. package/patterns/adia-editor/css/adia-editor.layout.css +0 -171
  310. package/patterns/adia-editor/css/adia-editor.tokens.css +0 -28
  311. package/patterns/app-nav/app-nav.a2ui.json +0 -89
  312. package/patterns/app-nav/app-nav.css +0 -92
  313. package/patterns/app-nav/app-nav.js +0 -112
  314. package/patterns/app-nav/app-nav.yaml +0 -54
  315. package/patterns/app-nav-group/app-nav-group.a2ui.json +0 -82
  316. package/patterns/app-nav-group/app-nav-group.yaml +0 -59
  317. package/patterns/app-nav-item/app-nav-item.a2ui.json +0 -83
  318. package/patterns/app-nav-item/app-nav-item.js +0 -42
  319. package/patterns/app-nav-item/app-nav-item.yaml +0 -62
  320. package/patterns/app-shell/app-shell.a2ui.json +0 -129
  321. package/patterns/app-shell/app-shell.css +0 -14
  322. package/patterns/app-shell/app-shell.js +0 -251
  323. package/patterns/app-shell/app-shell.yaml +0 -89
  324. package/patterns/app-shell/css/app-shell.collapsed.css +0 -86
  325. package/patterns/app-shell/css/app-shell.helpers.css +0 -42
  326. package/patterns/app-shell/css/app-shell.main.css +0 -172
  327. package/patterns/app-shell/css/app-shell.shell.css +0 -44
  328. package/patterns/app-shell/css/app-shell.sidebar.css +0 -161
  329. package/patterns/app-shell/css/app-shell.templates.css +0 -214
  330. package/patterns/app-shell/css/app-shell.tokens.css +0 -119
  331. package/patterns/gen-ui/gen-ui.a2ui.json +0 -72
  332. package/patterns/gen-ui/gen-ui.css +0 -83
  333. package/patterns/gen-ui/gen-ui.js +0 -136
  334. package/patterns/gen-ui/gen-ui.yaml +0 -43
  335. package/patterns/index.js +0 -11
  336. package/patterns/section-nav/section-nav.a2ui.json +0 -91
  337. package/patterns/section-nav/section-nav.css +0 -60
  338. package/patterns/section-nav/section-nav.js +0 -42
  339. package/patterns/section-nav/section-nav.yaml +0 -58
  340. package/patterns/section-nav-group/section-nav-group.a2ui.json +0 -95
  341. package/patterns/section-nav-group/section-nav-group.css +0 -74
  342. package/patterns/section-nav-group/section-nav-group.js +0 -84
  343. package/patterns/section-nav-group/section-nav-group.yaml +0 -66
  344. package/patterns/section-nav-item/section-nav-item.a2ui.json +0 -97
  345. package/patterns/section-nav-item/section-nav-item.css +0 -106
  346. package/patterns/section-nav-item/section-nav-item.js +0 -66
  347. package/patterns/section-nav-item/section-nav-item.yaml +0 -70
  348. package/styles/layouts/admin.css +0 -7
  349. /package/components/{chat → chat-thread}/chat-input.css +0 -0
@@ -1,191 +0,0 @@
1
- /**
2
- * <a2ui-root> — A2UI protocol surface.
3
- * Connects to a stream source and renders A2UI messages as AdiaUI components.
4
- *
5
- * <a2ui-root src="/api/agent" transport="sse"></a2ui-root>
6
- * <a2ui-root src="ws://localhost:8080" transport="ws"></a2ui-root>
7
- *
8
- * Static / author-driven mode — set the `doc` property (array of A2UI messages)
9
- * and the renderer resets + replays them. Editors and previews can drive the
10
- * surface without opening a transport. Setting `doc` to a new array re-renders
11
- * from scratch (reset() + processAll()).
12
- *
13
- * const root = document.querySelector('a2ui-root');
14
- * root.doc = [
15
- * { type: 'createSurface', surfaceId: 'root', root: 'c-1' },
16
- * { type: 'updateComponents', components: [{ id: 'c-1', component: 'Heading', text: 'Hi' }] },
17
- * ];
18
- *
19
- * Events:
20
- * a2ui-connected — stream connected
21
- * a2ui-message — each message received (detail: { message })
22
- * a2ui-error — stream error (detail: { error })
23
- * a2ui-closed — stream ended
24
- * a2ui-action — user interaction (detail: { name, sourceComponentId, context })
25
- * doc-replaced — fired after a full doc reset + replay (author-driven mode)
26
- */
27
-
28
- import { AdiaElement } from '../../core/element.js';
29
- import {
30
- A2UIRenderer,
31
- registry,
32
- sseStream,
33
- wsStream,
34
- jsonlStream,
35
- mcpStream,
36
- } from '@adia-ai/a2ui-utils';
37
-
38
- class AdiaA2UIRoot extends AdiaElement {
39
- static properties = {
40
- src: { type: String, default: '', reflect: true },
41
- transport: { type: String, default: 'sse', reflect: true },
42
- loading: { type: Boolean, default: false, reflect: true },
43
- active: { type: Boolean, default: false, reflect: true },
44
- batch: { type: Boolean, default: false, reflect: true },
45
- };
46
-
47
- static template = () => null;
48
-
49
- #renderer = null;
50
- #abortCtrl = null;
51
- #doc = null;
52
- #bound = false;
53
-
54
- #onClick = (e) => {
55
- const actionEl = e.target.closest('[data-action]');
56
- if (!actionEl) return;
57
- this.dispatchEvent(new CustomEvent('a2ui-action', {
58
- bubbles: true,
59
- detail: {
60
- name: actionEl.getAttribute('data-action'),
61
- sourceComponentId: actionEl.getAttribute('data-a2ui-id') || '',
62
- timestamp: Date.now(),
63
- context: {},
64
- },
65
- }));
66
- };
67
-
68
- connected() {
69
- this.#renderer = new A2UIRenderer(this, registry, { batch: this.batch });
70
-
71
- if (!this.#bound) {
72
- this.#bound = true;
73
- this.addEventListener('click', this.#onClick);
74
- }
75
- }
76
-
77
- render() {
78
- if (this.src && !this.active) this.#connect();
79
- }
80
-
81
- async #connect() {
82
- this.#abortCtrl?.abort();
83
- this.#abortCtrl = new AbortController();
84
- const signal = this.#abortCtrl.signal;
85
-
86
- this.loading = true;
87
- this.active = false;
88
-
89
- let stream;
90
- try {
91
- switch (this.transport) {
92
- case 'sse':
93
- stream = sseStream(this.src, { signal, catalog: registry });
94
- break;
95
- case 'ws':
96
- case 'websocket':
97
- stream = wsStream(this.src, { signal, catalog: registry });
98
- break;
99
- case 'jsonl':
100
- stream = jsonlStream(this.src, { signal, catalog: registry });
101
- break;
102
- case 'mcp':
103
- stream = mcpStream(this.src, {
104
- signal,
105
- catalog: registry,
106
- onAction: (name, params) => {
107
- this.dispatchEvent(new CustomEvent('a2ui-action', {
108
- bubbles: true,
109
- detail: { name, params, timestamp: Date.now() },
110
- }));
111
- return Promise.resolve({ status: 'dispatched' });
112
- },
113
- });
114
- break;
115
- default:
116
- console.warn(`a2ui-root: unknown transport "${this.transport}"`);
117
- return;
118
- }
119
-
120
- this.active = true;
121
- this.loading = false;
122
- this.dispatchEvent(new Event('a2ui-connected', { bubbles: true }));
123
-
124
- for await (const message of stream) {
125
- if (signal.aborted) break;
126
- this.#renderer.process(message);
127
- this.dispatchEvent(new CustomEvent('a2ui-message', {
128
- bubbles: true,
129
- detail: { message },
130
- }));
131
- }
132
- } catch (err) {
133
- if (!signal.aborted) {
134
- this.dispatchEvent(new CustomEvent('a2ui-error', {
135
- bubbles: true,
136
- detail: { error: err },
137
- }));
138
- }
139
- }
140
-
141
- this.active = false;
142
- this.loading = false;
143
- this.dispatchEvent(new Event('a2ui-closed', { bubbles: true }));
144
- }
145
-
146
- process(message) {
147
- if (!this.#renderer) {
148
- this.#renderer = new A2UIRenderer(this, registry);
149
- }
150
- this.#renderer.process(message);
151
- }
152
-
153
- processAll(messages) {
154
- for (const msg of messages) this.process(msg);
155
- }
156
-
157
- get doc() { return this.#doc; }
158
- set doc(messages) {
159
- this.#doc = Array.isArray(messages) ? messages : [];
160
- if (!this.#renderer) {
161
- this.#renderer = new A2UIRenderer(this, registry);
162
- }
163
- this.#renderer.reset();
164
- for (const msg of this.#doc) this.#renderer.process(msg);
165
- this.dispatchEvent(new CustomEvent('doc-replaced', {
166
- bubbles: true,
167
- detail: { count: this.#doc.length },
168
- }));
169
- }
170
-
171
- reset() {
172
- this.#renderer?.reset();
173
- }
174
-
175
- disconnect() {
176
- this.#abortCtrl?.abort();
177
- this.active = false;
178
- }
179
-
180
- disconnected() {
181
- this.#abortCtrl?.abort();
182
- this.removeEventListener('click', this.#onClick);
183
- this.#bound = false;
184
- this.active = false;
185
- }
186
-
187
- get renderer() { return this.#renderer; }
188
- }
189
- customElements.define('a2ui-root', AdiaA2UIRoot);
190
-
191
- export { AdiaA2UIRoot };
@@ -1,87 +0,0 @@
1
- # Edit this file; run `npm run build:components` to regenerate a2ui.json.
2
- $schema: ../../../../scripts/schemas/component.yaml.schema.json
3
- name: AdiaA2UIRoot
4
- tag: a2ui-root
5
- component: A2UIRoot
6
- category: container
7
- version: 1
8
- description: A2UI protocol surface. Connects to a stream source (SSE, WebSocket, JSONL, MCP) and renders A2UI messages as AdiaUI components via the `@adia-ai/a2ui-utils` renderer.
9
- props:
10
- src:
11
- description: Stream source URL (endpoint for SSE/WebSocket, file path for JSONL, tool-call target for MCP).
12
- type: string
13
- default: ""
14
- transport:
15
- description: Stream transport to use.
16
- type: string
17
- default: sse
18
- enum:
19
- - sse
20
- - ws
21
- - websocket
22
- - jsonl
23
- - mcp
24
- loading:
25
- description: True while the stream is connecting.
26
- type: boolean
27
- default: false
28
- reflect: true
29
- active:
30
- description: True while the stream is connected and receiving messages.
31
- type: boolean
32
- default: false
33
- reflect: true
34
- batch:
35
- description: Batch renderer updates via requestAnimationFrame for large fan-in.
36
- type: boolean
37
- default: false
38
- doc:
39
- description: >-
40
- Author-driven mode — set to an array of A2UI messages and the renderer
41
- resets + replays them. No network/transport involvement. Setting to a
42
- new array triggers a full re-render. Use this for editors, previews,
43
- tests, and any static-doc authoring loop. When both `src` and `doc` are
44
- set, `doc` wins (the stream is not opened). Pass as a JS property; not
45
- reflected to an attribute.
46
- type: array
47
- events:
48
- a2ui-connected:
49
- description: Fired when the stream is established.
50
- a2ui-message:
51
- description: "Fired for each A2UI message received. detail: { message }"
52
- a2ui-action:
53
- description: "Fired when a child element with [data-action] is clicked. detail: { name, sourceComponentId, context }"
54
- a2ui-error:
55
- description: "Fired when the stream errors. detail: { error }"
56
- a2ui-closed:
57
- description: Fired when the stream ends.
58
- doc-replaced:
59
- description: "Fired after a full doc reset + replay in author-driven mode. detail: { count }"
60
- slots:
61
- default:
62
- description: The rendered surface. Children are stamped by the A2UI renderer.
63
- states:
64
- - name: idle
65
- description: Default, ready to connect.
66
- - name: loading
67
- description: Stream is connecting.
68
- - name: active
69
- description: Stream is connected and receiving messages.
70
- traits: []
71
- tokens: {}
72
- a2ui:
73
- rules: []
74
- anti_patterns: []
75
- keywords:
76
- - a2ui
77
- - protocol
78
- - renderer
79
- - stream
80
- - surface
81
- - sse
82
- - websocket
83
- - jsonl
84
- - mcp
85
- related:
86
- - canvas
87
- - inspector
@@ -1,149 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://adiaui.dev/a2ui/v0_9/components/Chat.json",
4
- "title": "Chat",
5
- "description": "Behavior-only chat orchestrator. Author supplies the DOM structure via\n[data-chat-messages], [data-chat-input], [data-chat-empty], [data-chat-status]\nelements; adia-chat wires message streaming, markdown rendering, code-block\nupgrades, and an LLM integration path via proxy-url (or via external submit).\n",
6
- "type": "object",
7
- "allOf": [
8
- {
9
- "$ref": "common_types.json#/$defs/ComponentCommon"
10
- },
11
- {
12
- "$ref": "common_types.json#/$defs/CatalogComponentCommon"
13
- }
14
- ],
15
- "properties": {
16
- "component": {
17
- "const": "Chat"
18
- },
19
- "model": {
20
- "description": "Model identifier.",
21
- "type": "string",
22
- "default": ""
23
- },
24
- "provider": {
25
- "description": "LLM provider name (anthropic | openai | google | stub).",
26
- "type": "string",
27
- "default": ""
28
- },
29
- "proxyUrl": {
30
- "description": "API proxy endpoint for LLM calls; enables self-contained chat without external wiring.",
31
- "type": "string",
32
- "default": ""
33
- },
34
- "streaming": {
35
- "description": "Active streaming indicator; toggled while a response is being received.",
36
- "type": "boolean",
37
- "default": false
38
- },
39
- "system": {
40
- "description": "System prompt prepended to conversations.",
41
- "type": "string",
42
- "default": ""
43
- },
44
- "thinking": {
45
- "description": "Enable Anthropic extended-thinking mode.",
46
- "type": "boolean",
47
- "default": false
48
- }
49
- },
50
- "required": [
51
- "component"
52
- ],
53
- "unevaluatedProperties": false,
54
- "x-adiaui": {
55
- "anti_patterns": [],
56
- "category": "container",
57
- "events": {
58
- "abort": {
59
- "description": "Fired when the user aborts an in-flight request."
60
- },
61
- "chunk": {
62
- "description": "Fired for each streaming chunk.",
63
- "detail": {
64
- "snapshot": "string",
65
- "text": "string"
66
- }
67
- },
68
- "clear": {
69
- "description": "Fired when the conversation is cleared."
70
- },
71
- "done": {
72
- "description": "Fired when a response completes.",
73
- "detail": {
74
- "stopReason": "string",
75
- "text": "string",
76
- "usage": "object"
77
- }
78
- },
79
- "error": {
80
- "description": "Fired on any LLM / network error.",
81
- "detail": {
82
- "error": "Error"
83
- }
84
- },
85
- "message": {
86
- "description": "Fired after each message (user or assistant) is appended.",
87
- "detail": {
88
- "content": "string",
89
- "id": "string",
90
- "role": "string"
91
- }
92
- },
93
- "submit": {
94
- "description": "Fired on user message submit (before LLM call begins).",
95
- "detail": {
96
- "model": "string",
97
- "text": "string"
98
- }
99
- },
100
- "thinking": {
101
- "description": "Fired when the model emits extended-thinking content.",
102
- "detail": {
103
- "text": "string"
104
- }
105
- }
106
- },
107
- "examples": [],
108
- "keywords": [
109
- "adia-chat",
110
- "chat",
111
- "llm",
112
- "streaming",
113
- "conversation",
114
- "agent"
115
- ],
116
- "name": "AdiaChatElement",
117
- "related": [
118
- "ChatInput",
119
- "Code"
120
- ],
121
- "slots": {
122
- "default": {
123
- "description": "Author provides the structural DOM. Expected markers — [data-chat-messages] (message list), [data-chat-input] (input surface), [data-chat-empty] (empty state), [data-chat-status] (streaming indicator)."
124
- }
125
- },
126
- "states": [
127
- {
128
- "description": "No active request.",
129
- "name": "idle"
130
- },
131
- {
132
- "description": "An LLM request is in-flight; [data-chat-status] visible.",
133
- "attribute": "streaming",
134
- "name": "streaming"
135
- }
136
- ],
137
- "synonyms": {
138
- "chat": [
139
- "conversation",
140
- "messages",
141
- "thread"
142
- ]
143
- },
144
- "tag": "adia-chat-ui",
145
- "tokens": {},
146
- "traits": [],
147
- "version": 1
148
- }
149
- }
@@ -1,10 +0,0 @@
1
- /* ═══════════════════════════════════════════════════════════════
2
- adia-chat — Pattern component CSS
3
- ═══════════════════════════════════════════════════════════════ */
4
-
5
- @import "./css/adia-chat.tokens.css";
6
- @import "./css/adia-chat.layout.css";
7
- @import "./css/adia-chat.messages.css";
8
- @import "./css/adia-chat.streaming.css";
9
- @import "./css/adia-chat.markdown.css";
10
- @import "./css/adia-chat.empty.css";