cortena-ui 1.3.1 → 1.4.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 (277) hide show
  1. package/README.md +74 -3
  2. package/dist/a2ui/catalogue-doc.d.ts +44 -0
  3. package/dist/a2ui/catalogue-doc.js +169 -0
  4. package/dist/a2ui/catalogue-doc.js.map +1 -0
  5. package/dist/a2ui/catalogue.d.ts +44 -0
  6. package/dist/a2ui/catalogue.js +942 -0
  7. package/dist/a2ui/catalogue.js.map +1 -0
  8. package/dist/a2ui/index.d.ts +7 -0
  9. package/dist/a2ui/message.d.ts +232 -0
  10. package/dist/a2ui/message.js +365 -0
  11. package/dist/a2ui/message.js.map +1 -0
  12. package/dist/a2ui/renderer.d.ts +46 -0
  13. package/dist/a2ui/renderer.js +252 -0
  14. package/dist/a2ui/renderer.js.map +1 -0
  15. package/dist/a2ui/views.d.ts +80 -0
  16. package/dist/a2ui/views.js +596 -0
  17. package/dist/a2ui/views.js.map +1 -0
  18. package/dist/a2ui.d.ts +8 -0
  19. package/dist/a2ui.js +7 -0
  20. package/dist/chart.d.ts +9 -0
  21. package/dist/chart.js +9 -0
  22. package/dist/components/accordion.d.ts +22 -0
  23. package/dist/components/accordion.js +63 -0
  24. package/dist/components/accordion.js.map +1 -0
  25. package/dist/components/alert.d.ts +15 -0
  26. package/dist/components/alert.js +64 -0
  27. package/dist/components/alert.js.map +1 -0
  28. package/dist/components/avatar.d.ts +18 -0
  29. package/dist/components/avatar.js +40 -0
  30. package/dist/components/avatar.js.map +1 -0
  31. package/dist/components/badge.d.ts +12 -0
  32. package/dist/components/badge.js +47 -0
  33. package/dist/components/badge.js.map +1 -0
  34. package/dist/components/breadcrumb.d.ts +71 -0
  35. package/dist/components/breadcrumb.js +123 -0
  36. package/dist/components/breadcrumb.js.map +1 -0
  37. package/dist/components/button-link.d.ts +28 -0
  38. package/dist/components/button-link.js +24 -0
  39. package/dist/components/button-link.js.map +1 -0
  40. package/dist/components/button.d.ts +24 -0
  41. package/dist/components/button.js +65 -0
  42. package/dist/components/button.js.map +1 -0
  43. package/dist/components/calendar.d.ts +28 -0
  44. package/dist/components/calendar.js +123 -0
  45. package/dist/components/calendar.js.map +1 -0
  46. package/dist/components/card.d.ts +32 -0
  47. package/dist/components/card.js +57 -0
  48. package/dist/components/card.js.map +1 -0
  49. package/dist/components/chart/chart.d.ts +71 -0
  50. package/dist/components/chart/chart.js +167 -0
  51. package/dist/components/chart/chart.js.map +1 -0
  52. package/dist/components/chart/container.d.ts +88 -0
  53. package/dist/components/chart/container.js +189 -0
  54. package/dist/components/chart/container.js.map +1 -0
  55. package/dist/components/chart/data.js +128 -0
  56. package/dist/components/chart/data.js.map +1 -0
  57. package/dist/components/chart/index.d.ts +9 -0
  58. package/dist/components/chart/index.js +10 -0
  59. package/dist/components/chart/nivo-charts.js +225 -0
  60. package/dist/components/chart/nivo-charts.js.map +1 -0
  61. package/dist/components/chart/nivo-lazy.js +50 -0
  62. package/dist/components/chart/nivo-lazy.js.map +1 -0
  63. package/dist/components/chart/nivo-theme.d.ts +156 -0
  64. package/dist/components/chart/nivo-theme.js +161 -0
  65. package/dist/components/chart/nivo-theme.js.map +1 -0
  66. package/dist/components/chart/recharts-charts.js +276 -0
  67. package/dist/components/chart/recharts-charts.js.map +1 -0
  68. package/dist/components/chart/recharts-lazy.js +58 -0
  69. package/dist/components/chart/recharts-lazy.js.map +1 -0
  70. package/dist/components/chart/recharts-parts.d.ts +10 -0
  71. package/dist/components/chart/recharts-parts.js +25 -0
  72. package/dist/components/chart/recharts-parts.js.map +1 -0
  73. package/dist/components/chart/tokens.d.ts +62 -0
  74. package/dist/components/chart/tokens.js +192 -0
  75. package/dist/components/chart/tokens.js.map +1 -0
  76. package/dist/components/chart/types.d.ts +114 -0
  77. package/dist/components/chart/types.js +27 -0
  78. package/dist/components/chart/types.js.map +1 -0
  79. package/dist/components/checkbox.d.ts +20 -0
  80. package/dist/components/checkbox.js +24 -0
  81. package/dist/components/checkbox.js.map +1 -0
  82. package/dist/components/chip.d.ts +17 -0
  83. package/dist/components/chip.js +47 -0
  84. package/dist/components/chip.js.map +1 -0
  85. package/dist/components/combobox.d.ts +76 -0
  86. package/dist/components/combobox.js +201 -0
  87. package/dist/components/combobox.js.map +1 -0
  88. package/dist/components/command.d.ts +50 -0
  89. package/dist/components/command.js +117 -0
  90. package/dist/components/command.js.map +1 -0
  91. package/dist/components/data-table/data-table.d.ts +65 -0
  92. package/dist/components/data-table/data-table.js +588 -0
  93. package/dist/components/data-table/data-table.js.map +1 -0
  94. package/dist/components/data-table/export.d.ts +23 -0
  95. package/dist/components/data-table/export.js +95 -0
  96. package/dist/components/data-table/export.js.map +1 -0
  97. package/dist/components/data-table/features.d.ts +66 -0
  98. package/dist/components/data-table/features.js +103 -0
  99. package/dist/components/data-table/features.js.map +1 -0
  100. package/dist/components/data-table/index.d.ts +8 -0
  101. package/dist/components/data-table/parts.d.ts +79 -0
  102. package/dist/components/data-table/parts.js +400 -0
  103. package/dist/components/data-table/parts.js.map +1 -0
  104. package/dist/components/data-table/system-columns.js +84 -0
  105. package/dist/components/data-table/system-columns.js.map +1 -0
  106. package/dist/components/data-table/types.d.ts +172 -0
  107. package/dist/components/data-table/use-data-table.d.ts +19 -0
  108. package/dist/components/data-table/use-data-table.js +171 -0
  109. package/dist/components/data-table/use-data-table.js.map +1 -0
  110. package/dist/components/data-table/use-server-source.js +200 -0
  111. package/dist/components/data-table/use-server-source.js.map +1 -0
  112. package/dist/components/date-field.d.ts +54 -0
  113. package/dist/components/date-field.js +235 -0
  114. package/dist/components/date-field.js.map +1 -0
  115. package/dist/components/date-picker.d.ts +42 -0
  116. package/dist/components/date-picker.js +125 -0
  117. package/dist/components/date-picker.js.map +1 -0
  118. package/dist/components/dialog.d.ts +36 -0
  119. package/dist/components/dialog.js +97 -0
  120. package/dist/components/dialog.js.map +1 -0
  121. package/dist/components/dropdown-menu.d.ts +54 -0
  122. package/dist/components/dropdown-menu.js +191 -0
  123. package/dist/components/dropdown-menu.js.map +1 -0
  124. package/dist/components/dropzone.d.ts +48 -0
  125. package/dist/components/dropzone.js +185 -0
  126. package/dist/components/dropzone.js.map +1 -0
  127. package/dist/components/empty-state.d.ts +22 -0
  128. package/dist/components/empty-state.js +46 -0
  129. package/dist/components/empty-state.js.map +1 -0
  130. package/dist/components/error-banner.d.ts +17 -0
  131. package/dist/components/error-banner.js +52 -0
  132. package/dist/components/error-banner.js.map +1 -0
  133. package/dist/components/field.d.ts +64 -0
  134. package/dist/components/field.js +133 -0
  135. package/dist/components/field.js.map +1 -0
  136. package/dist/components/form.d.ts +37 -0
  137. package/dist/components/form.js +103 -0
  138. package/dist/components/form.js.map +1 -0
  139. package/dist/components/input.d.ts +17 -0
  140. package/dist/components/input.js +26 -0
  141. package/dist/components/input.js.map +1 -0
  142. package/dist/components/kbd.d.ts +11 -0
  143. package/dist/components/kbd.js +20 -0
  144. package/dist/components/kbd.js.map +1 -0
  145. package/dist/components/label.d.ts +14 -0
  146. package/dist/components/label.js +28 -0
  147. package/dist/components/label.js.map +1 -0
  148. package/dist/components/loading-skeleton.d.ts +22 -0
  149. package/dist/components/loading-skeleton.js +123 -0
  150. package/dist/components/loading-skeleton.js.map +1 -0
  151. package/dist/components/markdown.d.ts +44 -0
  152. package/dist/components/markdown.js +231 -0
  153. package/dist/components/markdown.js.map +1 -0
  154. package/dist/components/page-header.d.ts +26 -0
  155. package/dist/components/page-header.js +53 -0
  156. package/dist/components/page-header.js.map +1 -0
  157. package/dist/components/popover.d.ts +29 -0
  158. package/dist/components/popover.js +74 -0
  159. package/dist/components/popover.js.map +1 -0
  160. package/dist/components/progress.d.ts +22 -0
  161. package/dist/components/progress.js +49 -0
  162. package/dist/components/progress.js.map +1 -0
  163. package/dist/components/radio-group.d.ts +20 -0
  164. package/dist/components/radio-group.js +29 -0
  165. package/dist/components/radio-group.js.map +1 -0
  166. package/dist/components/scroll-area.d.ts +25 -0
  167. package/dist/components/scroll-area.js +39 -0
  168. package/dist/components/scroll-area.js.map +1 -0
  169. package/dist/components/section-card.d.ts +29 -0
  170. package/dist/components/section-card.js +55 -0
  171. package/dist/components/section-card.js.map +1 -0
  172. package/dist/components/segmented.d.ts +27 -0
  173. package/dist/components/segmented.js +32 -0
  174. package/dist/components/segmented.js.map +1 -0
  175. package/dist/components/select.d.ts +62 -0
  176. package/dist/components/select.js +97 -0
  177. package/dist/components/select.js.map +1 -0
  178. package/dist/components/separator.d.ts +19 -0
  179. package/dist/components/separator.js +23 -0
  180. package/dist/components/separator.js.map +1 -0
  181. package/dist/components/sheet.d.ts +35 -0
  182. package/dist/components/sheet.js +131 -0
  183. package/dist/components/sheet.js.map +1 -0
  184. package/dist/components/skeleton.d.ts +12 -0
  185. package/dist/components/skeleton.js +22 -0
  186. package/dist/components/skeleton.js.map +1 -0
  187. package/dist/components/sortable-list.d.ts +67 -0
  188. package/dist/components/sortable-list.js +206 -0
  189. package/dist/components/sortable-list.js.map +1 -0
  190. package/dist/components/spinner.d.ts +29 -0
  191. package/dist/components/spinner.js +34 -0
  192. package/dist/components/spinner.js.map +1 -0
  193. package/dist/components/status-dot.d.ts +26 -0
  194. package/dist/components/status-dot.js +47 -0
  195. package/dist/components/status-dot.js.map +1 -0
  196. package/dist/components/switch.d.ts +21 -0
  197. package/dist/components/switch.js +21 -0
  198. package/dist/components/switch.js.map +1 -0
  199. package/dist/components/tabs.d.ts +24 -0
  200. package/dist/components/tabs.js +60 -0
  201. package/dist/components/tabs.js.map +1 -0
  202. package/dist/components/textarea.d.ts +19 -0
  203. package/dist/components/textarea.js +47 -0
  204. package/dist/components/textarea.js.map +1 -0
  205. package/dist/components/toast.d.ts +47 -0
  206. package/dist/components/toast.js +106 -0
  207. package/dist/components/toast.js.map +1 -0
  208. package/dist/components/toolbar.d.ts +19 -0
  209. package/dist/components/toolbar.js +45 -0
  210. package/dist/components/toolbar.js.map +1 -0
  211. package/dist/components/tooltip.d.ts +28 -0
  212. package/dist/components/tooltip.js +59 -0
  213. package/dist/components/tooltip.js.map +1 -0
  214. package/dist/core.d.ts +44 -0
  215. package/dist/core.js +44 -0
  216. package/dist/data-table.d.ts +9 -0
  217. package/dist/data-table.js +7 -0
  218. package/dist/form.d.ts +7 -0
  219. package/dist/form.js +7 -0
  220. package/dist/hooks/use-cortena-theme.d.ts +98 -0
  221. package/dist/hooks/use-cortena-theme.js +145 -0
  222. package/dist/hooks/use-cortena-theme.js.map +1 -0
  223. package/dist/index.d.ts +75 -2681
  224. package/dist/index.js +66 -8670
  225. package/dist/lib/cn.d.ts +10 -0
  226. package/dist/lib/cn.js +15 -0
  227. package/dist/lib/cn.js.map +1 -0
  228. package/dist/lib/render.d.ts +23 -0
  229. package/dist/lib/render.js +20 -0
  230. package/dist/lib/render.js.map +1 -0
  231. package/dist/lib/shakeable.js +39 -0
  232. package/dist/lib/shakeable.js.map +1 -0
  233. package/dist/markdown.d.ts +3 -0
  234. package/dist/markdown.js +3 -0
  235. package/dist/sortable-list.d.ts +3 -0
  236. package/dist/sortable-list.js +3 -0
  237. package/package.json +34 -4
  238. package/src/a2ui/catalogue.ts +131 -103
  239. package/src/a2ui/views.tsx +5 -2
  240. package/src/components/alert.tsx +1 -1
  241. package/src/components/badge.tsx +1 -1
  242. package/src/components/button.tsx +1 -1
  243. package/src/components/chart/chart.tsx +48 -34
  244. package/src/components/chart/container.tsx +24 -39
  245. package/src/components/chart/index.tsx +4 -2
  246. package/src/components/chart/nivo-lazy.tsx +52 -0
  247. package/src/components/chart/recharts-charts.tsx +98 -3
  248. package/src/components/chart/recharts-lazy.tsx +72 -0
  249. package/src/components/chart/recharts-parts.tsx +34 -0
  250. package/src/components/chart/tokens.ts +1 -1
  251. package/src/components/chart/types.ts +14 -0
  252. package/src/components/chip.tsx +1 -1
  253. package/src/components/combobox.tsx +2 -2
  254. package/src/components/data-table/features.ts +77 -45
  255. package/src/components/data-table/parts.tsx +15 -0
  256. package/src/components/data-table/use-data-table.ts +7 -2
  257. package/src/components/date-field.tsx +1 -1
  258. package/src/components/error-banner.tsx +1 -1
  259. package/src/components/field.tsx +2 -2
  260. package/src/components/form.tsx +2 -2
  261. package/src/components/input.tsx +1 -1
  262. package/src/components/label.tsx +1 -1
  263. package/src/components/markdown.tsx +5 -4
  264. package/src/components/sheet.tsx +2 -2
  265. package/src/components/sortable-list.tsx +2 -2
  266. package/src/components/textarea.tsx +1 -1
  267. package/src/components/toast.tsx +1 -1
  268. package/src/entries/a2ui.ts +11 -0
  269. package/src/entries/chart.ts +10 -0
  270. package/src/entries/core.ts +91 -0
  271. package/src/entries/data-table.ts +9 -0
  272. package/src/entries/form.ts +24 -0
  273. package/src/entries/markdown.ts +9 -0
  274. package/src/entries/sortable-list.ts +13 -0
  275. package/src/index.ts +32 -98
  276. package/src/lib/shakeable.ts +33 -0
  277. package/dist/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue.js","names":["views.ColumnView","views.RowView","views.CardView","views.SectionCardView","views.DividerView","views.SpacerView","views.TextView","views.MarkdownView","views.TextFieldView","views.TextAreaView","views.SelectView","views.CheckboxView","views.SwitchView","views.RadioGroupView","views.DateFieldView","views.ButtonView","views.ButtonLinkView","views.BadgeView","views.AlertView","views.ProgressViewComponent","views.StatusDotView","views.EmptyStateView","views.DataTableView","views.ChartView","views.TabsView","views.ImageView","views.LinkView"],"sources":["../../src/a2ui/catalogue.ts"],"sourcesContent":["/**\n * The A2UI catalogue, bound to cortena-ui.\n *\n * A2UI's safety property is that an agent may only choose from a catalogue the\n * host controls: it cannot emit markup, styles or script, only a component name\n * and properties the host validates. This file is that catalogue. Each entry\n * declares\n *\n * - the A2UI component name an agent writes,\n * - a zod schema for its **resolved** properties (bindings already read),\n * - the event names it can raise,\n * - whether it takes children,\n * - a self-contained example, which is both the doc's sample and a fixture,\n * - the cortena-ui view that draws it.\n *\n * The vocabulary therefore grows with the package rather than with a parser:\n * adding a component here adds it to what every agent can draw, and\n * `catalogue-doc.ts` regenerates the prompt section from the same object, so\n * prompt and renderer cannot drift (DESIGN-34).\n *\n * Schemas describe resolved values because the renderer resolves `{ path }`\n * bindings, unwraps literals and normalises actions before validating. A view\n * therefore never receives an unchecked value, and a property an agent got\n * wrong produces an error card naming the property rather than a blank area.\n */\n\nimport { z } from \"zod\";\nimport { shakeable } from \"@/lib/shakeable\";\nimport type { A2UIComponentSpec } from \"./message\";\nimport * as views from \"./views\";\nimport type { A2UIView } from \"./views\";\n\n/** The five families the doc and the prompt group components by. */\nexport type A2UIGroup = \"layout\" | \"text\" | \"input\" | \"feedback\" | \"data\";\n\n/** A ready-to-render example: the components, plus any data model they bind to. */\nexport interface A2UIExample {\n /** Components for this entry. The first is the one being demonstrated. */\n components: A2UIComponentSpec[];\n /** Seed data for `{ path }` bindings used by the example. */\n data?: Record<string, unknown>;\n}\n\nexport interface A2UICatalogueEntry<P = unknown> {\n /** The name an agent writes in `component`. */\n name: string;\n group: A2UIGroup;\n /** One sentence, used verbatim in the generated prompt section. */\n summary: string;\n /** Schema of the resolved properties. */\n props: z.ZodType<P>;\n /** Event names this component can raise through `onAction`. */\n events: readonly string[];\n /** `many` takes a `children` list; `none` ignores one. */\n children: \"none\" | \"many\";\n example: A2UIExample;\n view: A2UIView<P>;\n}\n\nexport type A2UICatalogue = Readonly<Record<string, A2UICatalogueEntry<never>>>;\n\n/** Keeps each entry's props type tied to its view without widening the record. */\nfunction entry<P>(definition: A2UICatalogueEntry<P>): A2UICatalogueEntry<never> {\n return definition as unknown as A2UICatalogueEntry<never>;\n}\n\n/* ------------------------------------------------------------------ */\n/* Shared property fragments */\n/* ------------------------------------------------------------------ */\n\n/**\n * A resolved action.\n *\n * On the wire an agent writes A2UI v0.9's `{ event: { name, context } }`, the\n * bare `{ name, context }`, or just the name as a string; the renderer\n * normalises all three to this before validation.\n */\nconst Action = /* @__PURE__ */ shakeable(() =>\n z\n .object({\n name: z.string().describe(\"Event name sent back to the agent.\"),\n context: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"Extra values merged into the action payload.\"),\n })\n .describe(\"An action reported to the agent when the user interacts.\")\n);\n\nconst Option = /* @__PURE__ */ shakeable(() =>\n z.object({\n value: z.string().describe(\"Value written to the data model.\"),\n label: z.string().optional().describe(\"Text shown to the user; defaults to the value.\"),\n disabled: z.boolean().optional(),\n })\n);\n\nconst gap = /* @__PURE__ */ shakeable(() =>\n z\n .union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(6), z.literal(8)])\n .describe(\"Spacing step between children.\")\n);\n\nconst padding = /* @__PURE__ */ shakeable(() =>\n z\n .union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(6), z.literal(8)])\n .describe(\"Inner padding step.\")\n);\n\nconst alignment = /* @__PURE__ */ shakeable(() =>\n z\n .enum([\"start\", \"center\", \"end\", \"stretch\", \"baseline\"])\n .describe(\"Cross-axis alignment.\")\n);\n\nconst justification = /* @__PURE__ */ shakeable(() =>\n z\n .enum([\"start\", \"center\", \"end\", \"between\"])\n .describe(\"Main-axis distribution.\")\n);\n\nconst fieldChrome = /* @__PURE__ */ shakeable(() => ({\n label: z.string().optional().describe(\"Field label.\"),\n description: z.string().optional().describe(\"Helper text under the control.\"),\n error: z.string().optional().describe(\"Validation message; also marks the field invalid.\"),\n disabled: z.boolean().optional(),\n}));\n\nconst buttonVariant = /* @__PURE__ */ shakeable(() =>\n z\n .enum([\"primary\", \"secondary\", \"outline\", \"ghost\", \"soft\", \"destructive\", \"link\"])\n .describe(\"Visual weight.\")\n);\n\nconst buttonSize = /* @__PURE__ */ shakeable(() =>\n z.enum([\"sm\", \"md\", \"lg\"]).describe(\"Control size.\")\n);\n\n/**\n * Root-relative means one slash and then a path. `//evil.example/x` is\n * protocol-relative — the browser resolves it against the page's scheme and\n * goes off-origin — and `/\\evil.example` is the same trick, because browsers\n * treat a backslash after the leading slash as a second slash.\n */\nconst rootRelative = (value: string) =>\n value.startsWith(\"/\") && value[1] !== \"/\" && value[1] !== \"\\\\\";\n\n/**\n * A URL an agent may point at.\n *\n * Restricted by scheme rather than sanitised after the fact: `javascript:` and\n * friends never reach the DOM because they never pass validation, so the\n * component gets an error card instead.\n */\nconst httpUrl = /* @__PURE__ */ shakeable(() =>\n z\n .string()\n .refine(\n (value) => /^https?:\\/\\//i.test(value) || rootRelative(value) || value.startsWith(\"#\"),\n \"Must be an http(s), root-relative or fragment URL.\",\n )\n .describe(\"Destination URL (http, https, root-relative or fragment).\")\n);\n\nconst imageUrl = /* @__PURE__ */ shakeable(() =>\n z\n .string()\n .refine(\n (value) => /^https?:\\/\\//i.test(value) || /^data:image\\//i.test(value) || rootRelative(value),\n \"Must be an http(s), root-relative or data:image URL.\",\n )\n .describe(\"Image URL (http, https, root-relative or data:image).\")\n);\n\n/** Every chart type the Chart composite draws, Recharts and Nivo alike. */\nconst chartType = /* @__PURE__ */ shakeable(() =>\n z\n .enum([\n \"bar\",\n \"line\",\n \"area\",\n \"pie\",\n \"donut\",\n \"scatter\",\n \"scatterplot\",\n \"radar\",\n \"funnel\",\n \"heatmap\",\n \"calendar\",\n \"treemap\",\n \"sunburst\",\n ])\n .describe(\"Chart type; the package picks Recharts or Nivo for it.\")\n);\n\n/**\n * A table's rows, or a handle to them.\n *\n * The server form is the point of `04-data-tables.md` in an agent context: the\n * agent calls a tool, gets back a `sourceId`, and passes that. The host resolves\n * it through `resolveDataSource`, so search, sort and paging stay on the backend\n * and a large result never travels through the model.\n */\nconst tableSource = /* @__PURE__ */ shakeable(() =>\n z\n .union([\n z.object({\n kind: z.literal(\"client\"),\n rows: z.array(z.record(z.string(), z.unknown())).describe(\"The rows, inline.\"),\n }),\n z.object({\n kind: z.literal(\"server\"),\n sourceId: z\n .string()\n .describe(\"Handle obtained from a tool; the host resolves it to a server source.\"),\n }),\n ])\n .describe(\"Where the table's rows come from.\")\n);\n\n\n/* ------------------------------------------------------------------ */\n/* The catalogue */\n/* ------------------------------------------------------------------ */\n\nconst layout = /* @__PURE__ */ shakeable(() => ({\n Column: entry<views.ColumnProps>({\n name: \"Column\",\n group: \"layout\",\n summary: \"Stacks its children vertically.\",\n props: z.object({ gap: gap.optional(), padding: padding.optional(), align: alignment.optional(), justify: justification.optional() }),\n events: [],\n children: \"many\",\n example: {\n components: [\n { id: \"col\", component: \"Column\", gap: 3, children: [\"col-a\", \"col-b\"] },\n { id: \"col-a\", component: \"Text\", text: \"First\", role: \"body\" },\n { id: \"col-b\", component: \"Text\", text: \"Second\", role: \"body\" },\n ],\n },\n view: views.ColumnView,\n }),\n\n Row: entry<views.RowProps>({\n name: \"Row\",\n group: \"layout\",\n summary: \"Lays its children out horizontally, wrapping by default.\",\n props: z.object({\n gap: gap.optional(),\n padding: padding.optional(),\n align: alignment.optional(),\n justify: justification.optional(),\n wrap: z.boolean().optional().describe(\"Set false to keep one line.\"),\n }),\n events: [],\n children: \"many\",\n example: {\n components: [\n { id: \"row\", component: \"Row\", gap: 2, children: [\"row-a\", \"row-b\"] },\n { id: \"row-a\", component: \"Badge\", label: \"Open\", variant: \"info\" },\n { id: \"row-b\", component: \"Badge\", label: \"3 days\", variant: \"neutral\" },\n ],\n },\n view: views.RowView,\n }),\n\n Card: entry<views.CardViewProps>({\n name: \"Card\",\n group: \"layout\",\n summary: \"A bordered surface grouping related content.\",\n props: z.object({\n accent: z.boolean().optional().describe(\"Draw the border in the ring colour.\"),\n flush: z.boolean().optional().describe(\"Remove the body padding.\"),\n }),\n events: [],\n children: \"many\",\n example: {\n components: [\n { id: \"card\", component: \"Card\", children: [\"card-text\"] },\n { id: \"card-text\", component: \"Text\", text: \"Inside a card.\", role: \"body\" },\n ],\n },\n view: views.CardView,\n }),\n\n SectionCard: entry<views.SectionCardViewProps>({\n name: \"SectionCard\",\n group: \"layout\",\n summary: \"A card with a title and description header above its children.\",\n props: z.object({\n title: z.string().describe(\"Header title.\"),\n description: z.string().optional().describe(\"Header description.\"),\n flush: z.boolean().optional(),\n }),\n events: [],\n children: \"many\",\n example: {\n components: [\n {\n id: \"section\",\n component: \"SectionCard\",\n title: \"Pipeline\",\n description: \"Deals closing this quarter.\",\n children: [\"section-text\"],\n },\n { id: \"section-text\", component: \"Text\", text: \"Twelve open deals.\", role: \"body\" },\n ],\n },\n view: views.SectionCardView,\n }),\n\n Divider: entry<views.DividerProps>({\n name: \"Divider\",\n group: \"layout\",\n summary: \"A hairline rule between sections.\",\n props: z.object({ orientation: z.enum([\"horizontal\", \"vertical\"]).optional() }),\n events: [],\n children: \"none\",\n example: { components: [{ id: \"divider\", component: \"Divider\" }] },\n view: views.DividerView,\n }),\n\n Spacer: entry<views.SpacerProps>({\n name: \"Spacer\",\n group: \"layout\",\n summary: \"Blank vertical space where a gap is not enough.\",\n props: z.object({ size: gap.optional().describe(\"Height step; default 4.\") }),\n events: [],\n children: \"none\",\n example: { components: [{ id: \"spacer\", component: \"Spacer\", size: 4 }] },\n view: views.SpacerView,\n }),\n}));\n\nconst text = /* @__PURE__ */ shakeable(() => ({\n Text: entry<views.TextProps>({\n name: \"Text\",\n group: \"text\",\n summary: \"A run of plain text at one of the type-scale roles.\",\n props: z.object({\n text: z.string().describe(\"The text to show.\"),\n role: z\n .enum([\"heading\", \"subheading\", \"body\", \"caption\", \"eyebrow\"])\n .optional()\n .describe(\"Type-scale role; default body.\"),\n tone: z\n .enum([\"default\", \"muted\", \"success\", \"warning\", \"danger\", \"info\"])\n .optional()\n .describe(\"Semantic colour; default foreground.\"),\n align: z.enum([\"start\", \"center\", \"end\"]).optional(),\n mono: z.boolean().optional().describe(\"Render in the mono face, for ids and numbers.\"),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n { id: \"heading\", component: \"Text\", text: \"Quarterly review\", role: \"heading\" },\n ],\n },\n view: views.TextView,\n }),\n\n Markdown: entry<views.MarkdownViewProps>({\n name: \"Markdown\",\n group: \"text\",\n summary: \"Rich text as markdown; sanitised, with GFM tables and code blocks.\",\n props: z.object({\n text: z.string().describe(\"Markdown source.\"),\n compact: z.boolean().optional().describe(\"Tighter rhythm, for chat bubbles.\"),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"md\",\n component: \"Markdown\",\n text: \"**Summary**\\n\\n- Revenue up 12%\\n- Churn flat\\n\",\n compact: true,\n },\n ],\n },\n view: views.MarkdownView,\n }),\n}));\n\nconst input = /* @__PURE__ */ shakeable(() => ({\n TextField: entry<views.TextFieldProps>({\n name: \"TextField\",\n group: \"input\",\n summary: \"A single-line text input.\",\n props: z.object({\n ...fieldChrome,\n value: z.string().optional().describe(\"Current value; bind it to the data model.\"),\n placeholder: z.string().optional(),\n type: z\n .enum([\"text\", \"email\", \"url\", \"tel\", \"number\", \"password\", \"search\"])\n .optional()\n .describe(\"Input type; default text.\"),\n required: z.boolean().optional(),\n onChange: Action.optional().describe(\"Raised after the user stops typing.\"),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { name: \"\" } },\n components: [\n {\n id: \"name\",\n component: \"TextField\",\n label: \"Full name\",\n value: { path: \"/form/name\" },\n placeholder: \"Ada Lovelace\",\n onChange: { event: { name: \"nameChanged\" } },\n },\n ],\n },\n view: views.TextFieldView,\n }),\n\n TextArea: entry<views.TextAreaProps>({\n name: \"TextArea\",\n group: \"input\",\n summary: \"A multi-line text input.\",\n props: z.object({\n ...fieldChrome,\n value: z.string().optional(),\n placeholder: z.string().optional(),\n rows: z.number().int().min(2).max(20).optional().describe(\"Visible rows; default 4.\"),\n autoGrow: z.boolean().optional().describe(\"Grow with the content.\"),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { notes: \"\" } },\n components: [\n {\n id: \"notes\",\n component: \"TextArea\",\n label: \"Notes\",\n value: { path: \"/form/notes\" },\n rows: 3,\n onChange: { event: { name: \"notesChanged\" } },\n },\n ],\n },\n view: views.TextAreaView,\n }),\n\n Select: entry<views.SelectViewProps>({\n name: \"Select\",\n group: \"input\",\n summary: \"A dropdown offering one of a fixed list of options.\",\n props: z.object({\n ...fieldChrome,\n value: z.string().optional(),\n placeholder: z.string().optional(),\n options: z.array(Option).min(1).describe(\"The options to choose from.\"),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { region: \"ap-south-1\" } },\n components: [\n {\n id: \"region\",\n component: \"Select\",\n label: \"Region\",\n value: { path: \"/form/region\" },\n options: [\n { value: \"ap-south-1\", label: \"Mumbai\" },\n { value: \"eu-west-1\", label: \"Ireland\" },\n ],\n onChange: { event: { name: \"regionChanged\" } },\n },\n ],\n },\n view: views.SelectView,\n }),\n\n Checkbox: entry<views.CheckboxViewProps>({\n name: \"Checkbox\",\n group: \"input\",\n summary: \"A single on/off box with a label.\",\n props: z.object({\n label: z.string().optional().describe(\"Text beside the box.\"),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n checked: z.boolean().optional(),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { terms: false } },\n components: [\n {\n id: \"terms\",\n component: \"Checkbox\",\n label: \"I accept the terms\",\n checked: { path: \"/form/terms\" },\n onChange: { event: { name: \"termsChanged\" } },\n },\n ],\n },\n view: views.CheckboxView,\n }),\n\n Switch: entry<views.SwitchViewProps>({\n name: \"Switch\",\n group: \"input\",\n summary: \"A toggle for a setting that takes effect immediately.\",\n props: z.object({\n label: z.string().optional(),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n checked: z.boolean().optional(),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { alerts: true } },\n components: [\n {\n id: \"alerts\",\n component: \"Switch\",\n label: \"Email alerts\",\n checked: { path: \"/form/alerts\" },\n onChange: { event: { name: \"alertsChanged\" } },\n },\n ],\n },\n view: views.SwitchView,\n }),\n\n RadioGroup: entry<views.RadioGroupViewProps>({\n name: \"RadioGroup\",\n group: \"input\",\n summary: \"One choice from a short visible list.\",\n props: z.object({\n label: z.string().optional(),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n value: z.string().optional(),\n options: z.array(Option).min(2).describe(\"Two or more choices.\"),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { plan: \"pro\" } },\n components: [\n {\n id: \"plan\",\n component: \"RadioGroup\",\n label: \"Plan\",\n value: { path: \"/form/plan\" },\n options: [\n { value: \"free\", label: \"Free\" },\n { value: \"pro\", label: \"Pro\" },\n ],\n onChange: { event: { name: \"planChanged\" } },\n },\n ],\n },\n view: views.RadioGroupView,\n }),\n\n DateField: entry<views.DateFieldViewProps>({\n name: \"DateField\",\n group: \"input\",\n summary: \"A date, typed or picked from a calendar. ISO yyyy-mm-dd on the wire.\",\n props: z.object({\n ...fieldChrome,\n value: z.string().optional().describe(\"ISO date, yyyy-mm-dd.\"),\n min: z.string().optional().describe(\"Earliest selectable ISO date.\"),\n max: z.string().optional().describe(\"Latest selectable ISO date.\"),\n onChange: Action.optional(),\n }),\n events: [\"change\"],\n children: \"none\",\n example: {\n data: { form: { start: \"2026-09-01\" } },\n components: [\n {\n id: \"start\",\n component: \"DateField\",\n label: \"Start date\",\n value: { path: \"/form/start\" },\n onChange: { event: { name: \"startChanged\" } },\n },\n ],\n },\n view: views.DateFieldView,\n }),\n\n Button: entry<views.ButtonViewProps>({\n name: \"Button\",\n group: \"input\",\n summary: \"A button. Set submit to report the whole data model with the action.\",\n props: z.object({\n label: z.string().describe(\"Button text.\"),\n variant: buttonVariant.optional().describe(\"Visual weight; default primary.\"),\n size: buttonSize.optional(),\n disabled: z.boolean().optional(),\n submit: z\n .boolean()\n .optional()\n .describe(\"Send the surface data model as the action payload; use for form submits.\"),\n onPress: Action.optional().describe(\"Raised when the user presses the button.\"),\n }),\n events: [\"press\", \"submit\"],\n children: \"none\",\n example: {\n components: [\n {\n id: \"save\",\n component: \"Button\",\n label: \"Save\",\n variant: \"primary\",\n submit: true,\n onPress: { event: { name: \"saveProfile\" } },\n },\n ],\n },\n view: views.ButtonView,\n }),\n\n ButtonLink: entry<views.ButtonLinkViewProps>({\n name: \"ButtonLink\",\n group: \"input\",\n summary: \"A link that looks like a button. Navigates; raises no action.\",\n props: z.object({\n label: z.string(),\n href: httpUrl,\n variant: buttonVariant.optional().describe(\"Visual weight; default secondary.\"),\n size: buttonSize.optional(),\n target: z.enum([\"_self\", \"_blank\"]).optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"docs\",\n component: \"ButtonLink\",\n label: \"Open runbook\",\n href: \"https://example.com/runbook\",\n target: \"_blank\",\n },\n ],\n },\n view: views.ButtonLinkView,\n }),\n}));\n\nconst feedback = /* @__PURE__ */ shakeable(() => ({\n Badge: entry<views.BadgeViewProps>({\n name: \"Badge\",\n group: \"feedback\",\n summary: \"A small status label.\",\n props: z.object({\n label: z.string(),\n variant: z\n .enum([\"default\", \"success\", \"warning\", \"danger\", \"info\", \"neutral\", \"outline\"])\n .optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [{ id: \"badge\", component: \"Badge\", label: \"Active\", variant: \"success\" }],\n },\n view: views.BadgeView,\n }),\n\n Alert: entry<views.AlertViewProps>({\n name: \"Alert\",\n group: \"feedback\",\n summary: \"A callout carrying a short message the user should notice.\",\n props: z.object({\n title: z.string().optional(),\n description: z.string().optional(),\n variant: z.enum([\"default\", \"success\", \"warn\", \"danger\", \"info\"]).optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"alert\",\n component: \"Alert\",\n variant: \"warn\",\n title: \"Quota at 90%\",\n description: \"Upgrade before the end of the month.\",\n },\n ],\n },\n view: views.AlertView,\n }),\n\n Progress: entry<views.ProgressViewProps>({\n name: \"Progress\",\n group: \"feedback\",\n summary: \"A determinate or indeterminate progress bar.\",\n props: z.object({\n value: z.number().nullable().optional().describe(\"Null renders the indeterminate bar.\"),\n max: z.number().optional().describe(\"Maximum; default 100.\"),\n label: z.string().optional(),\n showValue: z.boolean().optional().describe(\"Set false to hide the numeric readout.\"),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n { id: \"progress\", component: \"Progress\", label: \"Indexing\", value: 64 },\n ],\n },\n view: views.ProgressViewComponent,\n }),\n\n StatusDot: entry<views.StatusDotViewProps>({\n name: \"StatusDot\",\n group: \"feedback\",\n summary: \"A coloured dot with a caption, for live status.\",\n props: z.object({\n label: z.string().optional(),\n tone: z.enum([\"accent\", \"success\", \"warning\", \"danger\", \"info\", \"neutral\"]).optional(),\n live: z.boolean().optional().describe(\"Add a pulsing halo for an active state.\"),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n { id: \"status\", component: \"StatusDot\", label: \"Running\", tone: \"success\", live: true },\n ],\n },\n view: views.StatusDotView,\n }),\n\n EmptyState: entry<views.EmptyStateViewProps>({\n name: \"EmptyState\",\n group: \"feedback\",\n summary: \"The 'nothing here' surface; children become its actions.\",\n props: z.object({\n title: z.string(),\n description: z.string().optional(),\n size: z.enum([\"default\", \"compact\"]).optional(),\n }),\n events: [],\n children: \"many\",\n example: {\n components: [\n {\n id: \"empty\",\n component: \"EmptyState\",\n title: \"No results\",\n description: \"Try a wider date range.\",\n children: [\"empty-action\"],\n },\n {\n id: \"empty-action\",\n component: \"Button\",\n label: \"Reset filters\",\n variant: \"secondary\",\n onPress: { event: { name: \"resetFilters\" } },\n },\n ],\n },\n view: views.EmptyStateView,\n }),\n}));\n\nconst data = /* @__PURE__ */ shakeable(() => ({\n DataTable: entry<views.DataTableViewProps>({\n name: \"DataTable\",\n group: \"data\",\n summary:\n \"A sortable, searchable table. Pass rows inline, or a server sourceId obtained from a tool.\",\n props: z.object({\n columns: z\n .array(\n z.object({\n id: z.string().describe(\"Row property this column reads.\"),\n label: z.string().optional().describe(\"Header text; defaults to the id.\"),\n align: z.enum([\"start\", \"center\", \"end\"]).optional(),\n filter: z\n .enum([\"faceted\", \"text\"])\n .optional()\n .describe(\"Add a toolbar filter for this column.\"),\n width: z.number().optional(),\n }),\n )\n .min(1),\n dataSource: tableSource,\n pageSize: z.number().int().min(1).max(200).optional().describe(\"Rows per page; default 10.\"),\n density: z.enum([\"default\", \"compact\"]).optional(),\n searchPlaceholder: z.string().optional(),\n emptyMessage: z.string().optional(),\n maxHeight: z.number().optional().describe(\"Scrolling body height in px.\"),\n onRowClick: Action.optional().describe(\"Raised with the clicked row.\"),\n }),\n events: [\"rowClick\"],\n children: \"none\",\n example: {\n components: [\n {\n id: \"table\",\n component: \"DataTable\",\n columns: [\n { id: \"name\", label: \"Name\" },\n { id: \"status\", label: \"Status\", filter: \"faceted\" },\n { id: \"deals\", label: \"Deals\", align: \"end\" },\n ],\n dataSource: {\n kind: \"client\",\n rows: [\n { name: \"Ada Lovelace\", status: \"active\", deals: 12 },\n { name: \"Grace Hopper\", status: \"invited\", deals: 4 },\n ],\n },\n onRowClick: { event: { name: \"openContact\" } },\n },\n ],\n },\n view: views.DataTableView,\n }),\n\n Chart: entry<views.ChartViewProps>({\n name: \"Chart\",\n group: \"data\",\n summary:\n \"Any chart the package draws: bar, line, area, pie, donut, scatter, radar, funnel, heatmap, calendar, treemap, sunburst.\",\n props: z.object({\n type: chartType,\n data: z\n .unknown()\n .describe(\n \"Rows [{category, series…}] for bar/radar; series [{id, data:[{x,y}]}] for line/area/scatter/heatmap; slices [{id,value}] for pie/donut/funnel; days [{day,value}] for calendar; a tree {id, children} for treemap/sunburst.\",\n ),\n title: z.string().optional().describe(\"Caption above the chart.\"),\n height: z.number().int().min(120).max(800).optional().describe(\"Drawing height in px.\"),\n stacked: z.boolean().optional(),\n legend: z.boolean().optional(),\n grid: z.boolean().optional(),\n scale: z.enum([\"sequential\", \"diverging\"]).optional().describe(\"Heatmap and calendar scale.\"),\n indexBy: z.string().optional().describe(\"Category key for row data.\"),\n keys: z.array(z.string()).optional().describe(\"Series keys for row data.\"),\n from: z.string().optional().describe(\"Calendar range start, ISO date.\"),\n to: z.string().optional().describe(\"Calendar range end, ISO date.\"),\n emptyMessage: z.string().optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"chart\",\n component: \"Chart\",\n type: \"bar\",\n title: \"Revenue by month\",\n data: [\n { month: \"Jan\", revenue: 42, cost: 18 },\n { month: \"Feb\", revenue: 51, cost: 22 },\n ],\n },\n ],\n },\n view: views.ChartView,\n }),\n}));\n\nconst other = /* @__PURE__ */ shakeable(() => ({\n Tabs: entry<views.TabsViewProps>({\n name: \"Tabs\",\n group: \"layout\",\n summary: \"Tabbed panels; the nth child is the nth tab's panel.\",\n props: z.object({\n tabs: z\n .array(z.object({ value: z.string(), label: z.string() }))\n .min(2)\n .describe(\"Tab bar, in order.\"),\n value: z.string().optional().describe(\"Selected tab; defaults to the first.\"),\n onChange: Action.optional(),\n }),\n events: [\"tabChange\"],\n children: \"many\",\n example: {\n components: [\n {\n id: \"tabs\",\n component: \"Tabs\",\n tabs: [\n { value: \"summary\", label: \"Summary\" },\n { value: \"detail\", label: \"Detail\" },\n ],\n children: [\"tab-summary\", \"tab-detail\"],\n onChange: { event: { name: \"tabChanged\" } },\n },\n { id: \"tab-summary\", component: \"Text\", text: \"Two open incidents.\", role: \"body\" },\n { id: \"tab-detail\", component: \"Text\", text: \"INC-42, INC-51.\", role: \"body\" },\n ],\n },\n view: views.TabsView,\n }),\n\n Image: entry<views.ImageViewProps>({\n name: \"Image\",\n group: \"text\",\n summary: \"An image. Alt text is required.\",\n props: z.object({\n src: imageUrl,\n alt: z.string().describe(\"Alternative text; required.\"),\n width: z.number().optional(),\n height: z.number().optional(),\n rounded: z.boolean().optional().describe(\"Set false for square corners.\"),\n fit: z.enum([\"cover\", \"contain\"]).optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"image\",\n component: \"Image\",\n src: \"https://example.com/chart.png\",\n alt: \"Revenue by month\",\n height: 160,\n },\n ],\n },\n view: views.ImageView,\n }),\n\n Link: entry<views.LinkViewProps>({\n name: \"Link\",\n group: \"text\",\n summary: \"An inline text link.\",\n props: z.object({\n label: z.string(),\n href: httpUrl,\n target: z.enum([\"_self\", \"_blank\"]).optional(),\n }),\n events: [],\n children: \"none\",\n example: {\n components: [\n {\n id: \"link\",\n component: \"Link\",\n label: \"View the incident\",\n href: \"https://example.com/inc-42\",\n target: \"_blank\",\n },\n ],\n },\n view: views.LinkView,\n }),\n}));\n\n/**\n * The catalogue an agent draws from, and the renderer's default.\n *\n * A host may narrow it (hand the renderer a subset) but should not widen it\n * with components the prompt does not describe: an agent can only usefully\n * emit what `catalogue-doc.ts` told it about.\n */\nexport const defaultCatalogue: A2UICatalogue = /* @__PURE__ */ shakeable(() =>\n Object.freeze({\n ...layout,\n ...text,\n ...input,\n ...feedback,\n ...data,\n ...other,\n }),\n);\n\n/** Catalogue id an agent may echo in `createSurface.catalogId`. */\nexport const A2UI_CATALOGUE_ID = \"https://cortena.ai/a2ui/catalogues/cortena-ui/v1.json\";\n\n/** Every component name in the catalogue, sorted. */\nexport function catalogueNames(catalogue: A2UICatalogue = defaultCatalogue): string[] {\n return Object.keys(catalogue).sort();\n}\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { A2UIAction, A2UIActionSpec, A2UIBeginRendering, A2UIChildList, A2UIChildren, A2UIComponentSpec, A2UICreateSurface, A2UIDataBinding, A2UIDeleteSurface, A2UIFoldResult, A2UIMessage, A2UIMessageInput, A2UIPropertyValue, A2UISurface, A2UIUpdateComponents, A2UIUpdateDataModel, A2UI_DEFAULT_SURFACE_ID, A2UI_VERSION, foldMessages, getAtPointer, isDataBinding, parseA2UIMessages, pointerSegments, readAction, readChildren, readComponent, resolvePointer, resolveValue, setAtPointer } from "./message.js";
3
+ import { A2UIColumn, A2UIErrorCard, A2UINodeInfo, A2UIResolvedAction, A2UIRow, A2UITableSource, A2UIView, A2UIViewProps } from "./views.js";
4
+ import { A2UICatalogue, A2UICatalogueEntry, A2UIExample, A2UIGroup, A2UI_CATALOGUE_ID, catalogueNames, defaultCatalogue } from "./catalogue.js";
5
+ import { A2UICatalogueDoc, A2UIComponentDoc, JsonSchema, buildCatalogueDoc, catalogueMarkdown, exampleMessages } from "./catalogue-doc.js";
6
+ import { A2UIRenderer, A2UIRendererProps } from "./renderer.js";
7
+ export { type A2UIAction, type A2UIActionSpec, type A2UIBeginRendering, type A2UICatalogue, type A2UICatalogueDoc, type A2UICatalogueEntry, type A2UIChildList, type A2UIChildren, type A2UIColumn, type A2UIComponentDoc, type A2UIComponentSpec, type A2UICreateSurface, type A2UIDataBinding, type A2UIDeleteSurface, A2UIErrorCard, type A2UIExample, type A2UIFoldResult, type A2UIGroup, type A2UIMessage, type A2UIMessageInput, type A2UINodeInfo, type A2UIPropertyValue, A2UIRenderer, type A2UIRendererProps, type A2UIResolvedAction, type A2UIRow, type A2UISurface, type A2UITableSource, type A2UIUpdateComponents, type A2UIUpdateDataModel, type A2UIView, type A2UIViewProps, A2UI_CATALOGUE_ID, A2UI_DEFAULT_SURFACE_ID, A2UI_VERSION, type JsonSchema, buildCatalogueDoc, catalogueMarkdown, catalogueNames, defaultCatalogue, exampleMessages, foldMessages, getAtPointer, isDataBinding, parseA2UIMessages, pointerSegments, readAction, readChildren, readComponent, resolvePointer, resolveValue, setAtPointer };
@@ -0,0 +1,232 @@
1
+ "use client";
2
+ //#region src/a2ui/message.d.ts
3
+ /**
4
+ * A2UI message layer.
5
+ *
6
+ * The wire format cortena-ui accepts, and the fold from a stream of messages
7
+ * onto a set of surfaces. Deliberately free of React so it can be reused by a
8
+ * canvas host, a test fixture, or the catalogue doc generator.
9
+ *
10
+ * ## Two dialects, one fold
11
+ *
12
+ * **v0.9** is the current A2UI protocol (`createSurface`, `updateComponents`,
13
+ * `updateDataModel`, `deleteSurface`) and is what an agent should emit.
14
+ *
15
+ * **v0.8** is what Cortena already speaks: core bundles Google's A2UI Lit
16
+ * renderer at `src/canvas-host/a2ui/` and its `A2uiMessageProcessor` handles
17
+ * `beginRendering`, `surfaceUpdate`, `dataModelUpdate` and `deleteSurface`.
18
+ * The `canvas` agent tool pushes exactly those, as JSON lines, through
19
+ * `canvas.a2ui.pushJSONL`. Accepting both means one renderer serves the chat,
20
+ * the web canvas panel and every payload already written against the native
21
+ * nodes.
22
+ *
23
+ * ## Transport
24
+ *
25
+ * Per `05-agent-ui.md`, an A2UI block travels as an AG-UI `CUSTOM` event. The
26
+ * event value is a message, an array of messages, or the JSONL text the canvas
27
+ * tool sends; {@link parseA2UIMessages} takes all three.
28
+ */
29
+ /** Surface id used when a message omits one, matching core's Lit processor. */
30
+ export declare const A2UI_DEFAULT_SURFACE_ID = "@default";
31
+ /** Protocol version this package speaks. */
32
+ export declare const A2UI_VERSION = "v0.9";
33
+ /** A reference to a value in the surface's data model, as a JSON pointer. */
34
+ export interface A2UIDataBinding {
35
+ path: string;
36
+ }
37
+ /**
38
+ * A property value as an agent writes it: a literal, a data binding, or one of
39
+ * the v0.8 literal wrappers the Lit renderer accepts.
40
+ */
41
+ export type A2UIPropertyValue = string | number | boolean | null | A2UIDataBinding | {
42
+ literal: unknown;
43
+ } | {
44
+ literalString: string;
45
+ } | readonly A2UIPropertyValue[] | {
46
+ readonly [key: string]: unknown;
47
+ };
48
+ /**
49
+ * A component's children. v0.9 uses a plain id array or a `{ componentId, path }`
50
+ * template; v0.8 wraps the same two in `explicitList` / `template`.
51
+ */
52
+ export type A2UIChildList = readonly string[] | {
53
+ componentId: string;
54
+ path: string;
55
+ } | {
56
+ explicitList: readonly string[];
57
+ } | {
58
+ template: {
59
+ componentId: string;
60
+ dataBinding: string;
61
+ };
62
+ };
63
+ /** An action an agent attaches to an interactive property. */
64
+ export type A2UIActionSpec = string | {
65
+ event: {
66
+ name: string;
67
+ context?: Record<string, unknown>;
68
+ };
69
+ } | {
70
+ name: string;
71
+ context?: Record<string, unknown>;
72
+ };
73
+ /**
74
+ * One component in a surface.
75
+ *
76
+ * v0.9 is flat — `{ id, component: "Text", text: "hi" }` — and v0.8 wraps the
77
+ * properties under the type name — `{ id, component: { Text: { text: "hi" } } }`.
78
+ */
79
+ export interface A2UIComponentSpec {
80
+ id: string;
81
+ component: string | Record<string, Record<string, unknown>>;
82
+ children?: A2UIChildList;
83
+ /** v0.8 flex weight; carried through but not used for layout here. */
84
+ weight?: number | string;
85
+ [property: string]: unknown;
86
+ }
87
+ export interface A2UICreateSurface {
88
+ surfaceId?: string;
89
+ catalogId?: string;
90
+ /** Not in the v0.9 schema; accepted so a single message can seed a surface. */
91
+ root?: string;
92
+ sendDataModel?: boolean;
93
+ }
94
+ export interface A2UIUpdateComponents {
95
+ surfaceId?: string;
96
+ components: A2UIComponentSpec[];
97
+ root?: string;
98
+ }
99
+ export interface A2UIUpdateDataModel {
100
+ surfaceId?: string;
101
+ path?: string;
102
+ value?: unknown;
103
+ /** v0.8 spelling of `value`. */
104
+ contents?: unknown;
105
+ }
106
+ export interface A2UIBeginRendering {
107
+ surfaceId?: string;
108
+ root?: string;
109
+ styles?: Record<string, unknown>;
110
+ }
111
+ export interface A2UIDeleteSurface {
112
+ surfaceId?: string;
113
+ }
114
+ /** One message on the wire. Exactly one operation key is read per message. */
115
+ export interface A2UIMessage {
116
+ version?: string;
117
+ createSurface?: A2UICreateSurface;
118
+ updateComponents?: A2UIUpdateComponents;
119
+ updateDataModel?: A2UIUpdateDataModel;
120
+ deleteSurface?: A2UIDeleteSurface;
121
+ /** v0.8 */
122
+ beginRendering?: A2UIBeginRendering;
123
+ /** v0.8 */
124
+ surfaceUpdate?: A2UIUpdateComponents;
125
+ /** v0.8 */
126
+ dataModelUpdate?: A2UIUpdateDataModel;
127
+ }
128
+ /**
129
+ * Everything the renderer's `message` prop takes: one message, a list of them
130
+ * (the AG-UI `CUSTOM` payload), or JSONL / a JSON array as text (the canvas
131
+ * tool's `a2ui_push`).
132
+ */
133
+ export type A2UIMessageInput = A2UIMessage | readonly A2UIMessage[] | string | null | undefined;
134
+ /** A folded surface: what the renderer draws. */
135
+ export interface A2UISurface {
136
+ id: string;
137
+ /** Id of the root component; `undefined` until a message names one. */
138
+ root: string | undefined;
139
+ components: ReadonlyMap<string, A2UIComponentSpec>;
140
+ dataModel: Record<string, unknown>;
141
+ styles: Record<string, unknown>;
142
+ }
143
+ export interface A2UIFoldResult {
144
+ surfaces: A2UISurface[];
145
+ /** One line per malformed message; the renderer shows these in an error card. */
146
+ errors: string[];
147
+ }
148
+ /** True when a value is a `{ path }` data binding rather than a literal object. */
149
+ export declare function isDataBinding(value: unknown): value is A2UIDataBinding;
150
+ /**
151
+ * Parse whatever arrived into a message list.
152
+ *
153
+ * A string is tried as JSON first (an array or a single message) and then as
154
+ * JSONL, which is the form `canvas.a2ui.pushJSONL` sends. A line that does not
155
+ * parse is reported rather than dropped: silently rendering three of four
156
+ * pushed messages is the failure mode this returns errors for.
157
+ */
158
+ export declare function parseA2UIMessages(input: A2UIMessageInput): {
159
+ messages: A2UIMessage[];
160
+ errors: string[];
161
+ };
162
+ /**
163
+ * Fold a message stream onto surfaces.
164
+ *
165
+ * Updates accumulate: a later `updateComponents` replaces the components it
166
+ * names and leaves the rest, and a later `updateDataModel` writes at its path
167
+ * only. That is what makes the JSONL push form work — the agent sends the
168
+ * shell, then the rows, then a correction, and each one folds onto the same
169
+ * surface.
170
+ */
171
+ export declare function foldMessages(input: A2UIMessageInput): A2UIFoldResult;
172
+ /** Split a JSON pointer into its unescaped segments. */
173
+ export declare function pointerSegments(pointer: string): string[];
174
+ /** Resolve a possibly relative pointer against a data context. */
175
+ export declare function resolvePointer(path: string, contextPath: string): string;
176
+ /** Read a JSON pointer out of the data model. */
177
+ export declare function getAtPointer(model: unknown, pointer: string): unknown;
178
+ /**
179
+ * Write a JSON pointer into the data model, returning a new model.
180
+ *
181
+ * Immutable because the renderer keeps the model in React state: a mutation in
182
+ * place would not re-render, which is the kind of silent nothing-happens bug
183
+ * that is hard to see in a browser test.
184
+ */
185
+ export declare function setAtPointer(model: Record<string, unknown>, pointer: string, value: unknown): Record<string, unknown>;
186
+ /** Normalise the children of a component spec into a single description. */
187
+ export type A2UIChildren = {
188
+ kind: "list";
189
+ ids: readonly string[];
190
+ } | {
191
+ kind: "template";
192
+ componentId: string;
193
+ path: string;
194
+ } | {
195
+ kind: "none";
196
+ };
197
+ export declare function readChildren(spec: A2UIComponentSpec, properties: Record<string, unknown>): A2UIChildren;
198
+ /**
199
+ * Split a component spec into its type name and its raw (unresolved) properties,
200
+ * across both dialects. Returns `undefined` when the spec names no type.
201
+ */
202
+ export declare function readComponent(spec: A2UIComponentSpec): {
203
+ name: string;
204
+ properties: Record<string, unknown>;
205
+ } | undefined;
206
+ /**
207
+ * Resolve one property value against the data model.
208
+ *
209
+ * `{ path }` reads the model, `{ literal }` / `{ literalString }` unwrap, and
210
+ * everything else is returned as written, recursing through arrays and objects
211
+ * so a binding nested inside a prop object still resolves.
212
+ */
213
+ export declare function resolveValue(value: unknown, model: Record<string, unknown>, contextPath: string): unknown;
214
+ /** A user action leaving the renderer, shaped like A2UI's client-to-server action. */
215
+ export interface A2UIAction {
216
+ surfaceId: string;
217
+ componentId: string;
218
+ name: string;
219
+ payload: Record<string, unknown>;
220
+ }
221
+ /**
222
+ * Normalise an action property into `{ name, context }`.
223
+ *
224
+ * Accepts v0.9's `{ event: { name, context } }`, the bare `{ name, context }`
225
+ * shape, and a plain string, which is what an agent writes most often.
226
+ */
227
+ export declare function readAction(value: unknown): {
228
+ name: string;
229
+ context: Record<string, unknown>;
230
+ } | undefined;
231
+ //#endregion
232
+ //# sourceMappingURL=message.d.ts.map