@datalayer/agent-runtimes 0.0.2

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 (571) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +56 -0
  3. package/lib/App.css +47 -0
  4. package/lib/App.d.ts +3 -0
  5. package/lib/App.js +18 -0
  6. package/lib/components/chat/components/AgentDetails.d.ts +19 -0
  7. package/lib/components/chat/components/AgentDetails.js +170 -0
  8. package/lib/components/chat/components/Chat.d.ts +105 -0
  9. package/lib/components/chat/components/Chat.js +275 -0
  10. package/lib/components/chat/components/ChatFloating.d.ts +146 -0
  11. package/lib/components/chat/components/ChatFloating.js +381 -0
  12. package/lib/components/chat/components/ChatInline.d.ts +42 -0
  13. package/lib/components/chat/components/ChatInline.js +327 -0
  14. package/lib/components/chat/components/ChatPopupStandalone.d.ts +110 -0
  15. package/lib/components/chat/components/ChatPopupStandalone.js +422 -0
  16. package/lib/components/chat/components/ChatSidebar.d.ts +78 -0
  17. package/lib/components/chat/components/ChatSidebar.js +224 -0
  18. package/lib/components/chat/components/ChatStandalone.d.ts +105 -0
  19. package/lib/components/chat/components/ChatStandalone.js +320 -0
  20. package/lib/components/chat/components/base/ChatBase.d.ts +285 -0
  21. package/lib/components/chat/components/base/ChatBase.js +1192 -0
  22. package/lib/components/chat/components/display/ToolCallDisplay.d.ts +26 -0
  23. package/lib/components/chat/components/display/ToolCallDisplay.js +225 -0
  24. package/lib/components/chat/components/display/index.d.ts +6 -0
  25. package/lib/components/chat/components/display/index.js +10 -0
  26. package/lib/components/chat/components/elements/ChatHeader.d.ts +43 -0
  27. package/lib/components/chat/components/elements/ChatHeader.js +67 -0
  28. package/lib/components/chat/components/elements/ChatInputPrompt.d.ts +26 -0
  29. package/lib/components/chat/components/elements/ChatInputPrompt.js +145 -0
  30. package/lib/components/chat/components/elements/ChatMessages.d.ts +36 -0
  31. package/lib/components/chat/components/elements/ChatMessages.js +195 -0
  32. package/lib/components/chat/components/elements/FloatingBrandButton.d.ts +34 -0
  33. package/lib/components/chat/components/elements/FloatingBrandButton.js +88 -0
  34. package/lib/components/chat/components/elements/MessagePart.d.ts +50 -0
  35. package/lib/components/chat/components/elements/MessagePart.js +48 -0
  36. package/lib/components/chat/components/elements/PoweredByTag.d.ts +26 -0
  37. package/lib/components/chat/components/elements/PoweredByTag.js +33 -0
  38. package/lib/components/chat/components/elements/ToolApprovalDialog.d.ts +42 -0
  39. package/lib/components/chat/components/elements/ToolApprovalDialog.js +96 -0
  40. package/lib/components/chat/components/index.d.ts +21 -0
  41. package/lib/components/chat/components/index.js +34 -0
  42. package/lib/components/chat/components/parts/DynamicToolPart.d.ts +20 -0
  43. package/lib/components/chat/components/parts/DynamicToolPart.js +13 -0
  44. package/lib/components/chat/components/parts/ReasoningPart.d.ts +17 -0
  45. package/lib/components/chat/components/parts/ReasoningPart.js +69 -0
  46. package/lib/components/chat/components/parts/TextPart.d.ts +28 -0
  47. package/lib/components/chat/components/parts/TextPart.js +103 -0
  48. package/lib/components/chat/components/parts/ToolPart.d.ts +17 -0
  49. package/lib/components/chat/components/parts/ToolPart.js +163 -0
  50. package/lib/components/chat/components/parts/index.d.ts +9 -0
  51. package/lib/components/chat/components/parts/index.js +13 -0
  52. package/lib/components/chat/extensions/A2UIExtension.d.ts +87 -0
  53. package/lib/components/chat/extensions/A2UIExtension.js +312 -0
  54. package/lib/components/chat/extensions/ExtensionRegistry.d.ts +66 -0
  55. package/lib/components/chat/extensions/ExtensionRegistry.js +128 -0
  56. package/lib/components/chat/extensions/MCPUIExtension.d.ts +77 -0
  57. package/lib/components/chat/extensions/MCPUIExtension.js +212 -0
  58. package/lib/components/chat/extensions/index.d.ts +9 -0
  59. package/lib/components/chat/extensions/index.js +12 -0
  60. package/lib/components/chat/handler.d.ts +20 -0
  61. package/lib/components/chat/handler.js +56 -0
  62. package/lib/components/chat/index.d.ts +61 -0
  63. package/lib/components/chat/index.js +76 -0
  64. package/lib/components/chat/inference/BaseInferenceProvider.d.ts +57 -0
  65. package/lib/components/chat/inference/BaseInferenceProvider.js +69 -0
  66. package/lib/components/chat/inference/DatalayerInferenceProvider.d.ts +83 -0
  67. package/lib/components/chat/inference/DatalayerInferenceProvider.js +305 -0
  68. package/lib/components/chat/inference/SelfHostedInferenceProvider.d.ts +54 -0
  69. package/lib/components/chat/inference/SelfHostedInferenceProvider.js +246 -0
  70. package/lib/components/chat/inference/index.d.ts +9 -0
  71. package/lib/components/chat/inference/index.js +12 -0
  72. package/lib/components/chat/middleware/MiddlewarePipeline.d.ts +118 -0
  73. package/lib/components/chat/middleware/MiddlewarePipeline.js +255 -0
  74. package/lib/components/chat/middleware/index.d.ts +7 -0
  75. package/lib/components/chat/middleware/index.js +10 -0
  76. package/lib/components/chat/protocols/A2AAdapter.d.ts +79 -0
  77. package/lib/components/chat/protocols/A2AAdapter.js +388 -0
  78. package/lib/components/chat/protocols/ACPAdapter.d.ts +161 -0
  79. package/lib/components/chat/protocols/ACPAdapter.js +504 -0
  80. package/lib/components/chat/protocols/AGUIAdapter.d.ts +82 -0
  81. package/lib/components/chat/protocols/AGUIAdapter.js +518 -0
  82. package/lib/components/chat/protocols/BaseProtocolAdapter.d.ts +75 -0
  83. package/lib/components/chat/protocols/BaseProtocolAdapter.js +119 -0
  84. package/lib/components/chat/protocols/VercelAIAdapter.d.ts +77 -0
  85. package/lib/components/chat/protocols/VercelAIAdapter.js +252 -0
  86. package/lib/components/chat/protocols/index.d.ts +11 -0
  87. package/lib/components/chat/protocols/index.js +14 -0
  88. package/lib/components/chat/store/chatStore.d.ts +158 -0
  89. package/lib/components/chat/store/chatStore.js +313 -0
  90. package/lib/components/chat/store/index.d.ts +6 -0
  91. package/lib/components/chat/store/index.js +10 -0
  92. package/lib/components/chat/tools/ToolExecutor.d.ts +49 -0
  93. package/lib/components/chat/tools/ToolExecutor.js +151 -0
  94. package/lib/components/chat/tools/index.d.ts +8 -0
  95. package/lib/components/chat/tools/index.js +11 -0
  96. package/lib/components/chat/types/extension.d.ts +181 -0
  97. package/lib/components/chat/types/extension.js +46 -0
  98. package/lib/components/chat/types/index.d.ts +11 -0
  99. package/lib/components/chat/types/index.js +16 -0
  100. package/lib/components/chat/types/inference.d.ts +117 -0
  101. package/lib/components/chat/types/inference.js +5 -0
  102. package/lib/components/chat/types/message.d.ts +117 -0
  103. package/lib/components/chat/types/message.js +50 -0
  104. package/lib/components/chat/types/middleware.d.ts +153 -0
  105. package/lib/components/chat/types/middleware.js +32 -0
  106. package/lib/components/chat/types/protocol.d.ts +209 -0
  107. package/lib/components/chat/types/protocol.js +5 -0
  108. package/lib/components/chat/types/tool.d.ts +140 -0
  109. package/lib/components/chat/types/tool.js +23 -0
  110. package/lib/components/index.d.ts +1 -0
  111. package/lib/components/index.js +6 -0
  112. package/lib/components/sparklines/Sparklines.d.ts +16 -0
  113. package/lib/components/sparklines/Sparklines.js +65 -0
  114. package/lib/components/sparklines/SparklinesLine.d.ts +8 -0
  115. package/lib/components/sparklines/SparklinesLine.js +37 -0
  116. package/lib/components/sparklines/dataProcessing.d.ts +25 -0
  117. package/lib/components/sparklines/dataProcessing.js +35 -0
  118. package/lib/components/sparklines/index.d.ts +4 -0
  119. package/lib/components/sparklines/index.js +7 -0
  120. package/lib/components/sparklines/types.d.ts +36 -0
  121. package/lib/components/sparklines/types.js +5 -0
  122. package/lib/components/ui/accordion.d.ts +7 -0
  123. package/lib/components/ui/accordion.js +22 -0
  124. package/lib/components/ui/alert-dialog.d.ts +14 -0
  125. package/lib/components/ui/alert-dialog.js +43 -0
  126. package/lib/components/ui/alert.d.ts +9 -0
  127. package/lib/components/ui/alert.js +24 -0
  128. package/lib/components/ui/aspect-ratio.d.ts +3 -0
  129. package/lib/components/ui/aspect-ratio.js +11 -0
  130. package/lib/components/ui/avatar.d.ts +6 -0
  131. package/lib/components/ui/avatar.js +18 -0
  132. package/lib/components/ui/badge.d.ts +9 -0
  133. package/lib/components/ui/badge.js +22 -0
  134. package/lib/components/ui/breadcrumb.d.ts +11 -0
  135. package/lib/components/ui/breadcrumb.js +27 -0
  136. package/lib/components/ui/button-group.d.ts +11 -0
  137. package/lib/components/ui/button-group.js +31 -0
  138. package/lib/components/ui/button.d.ts +13 -0
  139. package/lib/components/ui/button.js +39 -0
  140. package/lib/components/ui/calendar.d.ts +8 -0
  141. package/lib/components/ui/calendar.js +80 -0
  142. package/lib/components/ui/card.d.ts +9 -0
  143. package/lib/components/ui/card.js +24 -0
  144. package/lib/components/ui/carousel.d.ts +19 -0
  145. package/lib/components/ui/carousel.js +95 -0
  146. package/lib/components/ui/chart.d.ts +53 -0
  147. package/lib/components/ui/chart.js +136 -0
  148. package/lib/components/ui/checkbox.d.ts +4 -0
  149. package/lib/components/ui/checkbox.js +13 -0
  150. package/lib/components/ui/collapsible.d.ts +5 -0
  151. package/lib/components/ui/collapsible.js +17 -0
  152. package/lib/components/ui/command.d.ts +18 -0
  153. package/lib/components/ui/command.js +38 -0
  154. package/lib/components/ui/context-menu.d.ts +25 -0
  155. package/lib/components/ui/context-menu.js +55 -0
  156. package/lib/components/ui/dialog.d.ts +15 -0
  157. package/lib/components/ui/dialog.js +40 -0
  158. package/lib/components/ui/drawer.d.ts +13 -0
  159. package/lib/components/ui/drawer.js +39 -0
  160. package/lib/components/ui/dropdown-menu.d.ts +25 -0
  161. package/lib/components/ui/dropdown-menu.js +55 -0
  162. package/lib/components/ui/empty.d.ts +11 -0
  163. package/lib/components/ui/empty.js +37 -0
  164. package/lib/components/ui/field.d.ts +24 -0
  165. package/lib/components/ui/field.js +80 -0
  166. package/lib/components/ui/form.d.ts +24 -0
  167. package/lib/components/ui/form.js +63 -0
  168. package/lib/components/ui/hover-card.d.ts +6 -0
  169. package/lib/components/ui/hover-card.js +18 -0
  170. package/lib/components/ui/input-group.d.ts +19 -0
  171. package/lib/components/ui/input-group.js +69 -0
  172. package/lib/components/ui/input-otp.d.ts +11 -0
  173. package/lib/components/ui/input-otp.js +25 -0
  174. package/lib/components/ui/input.d.ts +3 -0
  175. package/lib/components/ui/input.js +6 -0
  176. package/lib/components/ui/item.d.ts +23 -0
  177. package/lib/components/ui/item.js +66 -0
  178. package/lib/components/ui/kbd.d.ts +3 -0
  179. package/lib/components/ui/kbd.js +13 -0
  180. package/lib/components/ui/label.d.ts +4 -0
  181. package/lib/components/ui/label.js +12 -0
  182. package/lib/components/ui/menubar.d.ts +26 -0
  183. package/lib/components/ui/menubar.js +58 -0
  184. package/lib/components/ui/navigation-menu.d.ts +14 -0
  185. package/lib/components/ui/navigation-menu.js +31 -0
  186. package/lib/components/ui/pagination.d.ts +13 -0
  187. package/lib/components/ui/pagination.js +29 -0
  188. package/lib/components/ui/popover.d.ts +7 -0
  189. package/lib/components/ui/popover.js +21 -0
  190. package/lib/components/ui/progress.d.ts +4 -0
  191. package/lib/components/ui/progress.js +12 -0
  192. package/lib/components/ui/radio-group.d.ts +5 -0
  193. package/lib/components/ui/radio-group.js +16 -0
  194. package/lib/components/ui/resizable.d.ts +8 -0
  195. package/lib/components/ui/resizable.js +19 -0
  196. package/lib/components/ui/scroll-area.d.ts +5 -0
  197. package/lib/components/ui/scroll-area.js +17 -0
  198. package/lib/components/ui/select.d.ts +15 -0
  199. package/lib/components/ui/select.js +42 -0
  200. package/lib/components/ui/separator.d.ts +4 -0
  201. package/lib/components/ui/separator.js +12 -0
  202. package/lib/components/ui/sheet.d.ts +13 -0
  203. package/lib/components/ui/sheet.js +44 -0
  204. package/lib/components/ui/sidebar.d.ts +69 -0
  205. package/lib/components/ui/sidebar.js +216 -0
  206. package/lib/components/ui/skeleton.d.ts +2 -0
  207. package/lib/components/ui/skeleton.js +10 -0
  208. package/lib/components/ui/slider.d.ts +4 -0
  209. package/lib/components/ui/slider.js +18 -0
  210. package/lib/components/ui/sonner.d.ts +3 -0
  211. package/lib/components/ui/sonner.js +25 -0
  212. package/lib/components/ui/spinner.d.ts +2 -0
  213. package/lib/components/ui/spinner.js +11 -0
  214. package/lib/components/ui/switch.d.ts +4 -0
  215. package/lib/components/ui/switch.js +12 -0
  216. package/lib/components/ui/table.d.ts +10 -0
  217. package/lib/components/ui/table.js +32 -0
  218. package/lib/components/ui/tabs.d.ts +7 -0
  219. package/lib/components/ui/tabs.js +21 -0
  220. package/lib/components/ui/textarea.d.ts +3 -0
  221. package/lib/components/ui/textarea.js +6 -0
  222. package/lib/components/ui/toast.d.ts +15 -0
  223. package/lib/components/ui/toast.js +38 -0
  224. package/lib/components/ui/toaster.d.ts +1 -0
  225. package/lib/components/ui/toaster.js +14 -0
  226. package/lib/components/ui/toggle-group.d.ts +9 -0
  227. package/lib/components/ui/toggle-group.js +26 -0
  228. package/lib/components/ui/toggle.d.ts +9 -0
  229. package/lib/components/ui/toggle.js +30 -0
  230. package/lib/components/ui/tooltip.d.ts +7 -0
  231. package/lib/components/ui/tooltip.js +21 -0
  232. package/lib/components/vercel-ai-elements/artifact.d.ts +23 -0
  233. package/lib/components/vercel-ai-elements/artifact.js +24 -0
  234. package/lib/components/vercel-ai-elements/code-block.d.ts +17 -0
  235. package/lib/components/vercel-ai-elements/code-block.js +94 -0
  236. package/lib/components/vercel-ai-elements/conversation.d.ts +15 -0
  237. package/lib/components/vercel-ai-elements/conversation.js +21 -0
  238. package/lib/components/vercel-ai-elements/loader.d.ts +5 -0
  239. package/lib/components/vercel-ai-elements/loader.js +8 -0
  240. package/lib/components/vercel-ai-elements/message.d.ts +46 -0
  241. package/lib/components/vercel-ai-elements/message.js +109 -0
  242. package/lib/components/vercel-ai-elements/model-selector.d.ts +35 -0
  243. package/lib/components/vercel-ai-elements/model-selector.js +22 -0
  244. package/lib/components/vercel-ai-elements/prompt-input.d.ts +195 -0
  245. package/lib/components/vercel-ai-elements/prompt-input.js +589 -0
  246. package/lib/components/vercel-ai-elements/reasoning.d.ts +26 -0
  247. package/lib/components/vercel-ai-elements/reasoning.js +80 -0
  248. package/lib/components/vercel-ai-elements/shimmer.d.ts +9 -0
  249. package/lib/components/vercel-ai-elements/shimmer.js +22 -0
  250. package/lib/components/vercel-ai-elements/sources.d.ts +12 -0
  251. package/lib/components/vercel-ai-elements/sources.js +13 -0
  252. package/lib/components/vercel-ai-elements/suggestion.d.ts +10 -0
  253. package/lib/components/vercel-ai-elements/suggestion.js +16 -0
  254. package/lib/components/vercel-ai-elements/tool.d.ts +23 -0
  255. package/lib/components/vercel-ai-elements/tool.js +52 -0
  256. package/lib/examples/A2UiRestaurantExample.d.ts +25 -0
  257. package/lib/examples/A2UiRestaurantExample.js +305 -0
  258. package/lib/examples/AgUiAgenticExample.d.ts +25 -0
  259. package/lib/examples/AgUiAgenticExample.js +63 -0
  260. package/lib/examples/AgUiBackendToolRenderingExample.d.ts +30 -0
  261. package/lib/examples/AgUiBackendToolRenderingExample.js +103 -0
  262. package/lib/examples/AgUiHaikuGenUIExample.d.ts +44 -0
  263. package/lib/examples/AgUiHaikuGenUIExample.js +151 -0
  264. package/lib/examples/AgUiHumanInTheLoopExample.d.ts +26 -0
  265. package/lib/examples/AgUiHumanInTheLoopExample.js +220 -0
  266. package/lib/examples/AgUiSharedStateExample.d.ts +25 -0
  267. package/lib/examples/AgUiSharedStateExample.js +181 -0
  268. package/lib/examples/AgUiToolsBasedGenUIExample.d.ts +25 -0
  269. package/lib/examples/AgUiToolsBasedGenUIExample.js +257 -0
  270. package/lib/examples/AgentRuntimeCustomExample.d.ts +9 -0
  271. package/lib/examples/AgentRuntimeCustomExample.js +68 -0
  272. package/lib/examples/AgentRuntimeLexical2Example.d.ts +42 -0
  273. package/lib/examples/AgentRuntimeLexical2Example.js +236 -0
  274. package/lib/examples/AgentRuntimeLexicalExample.d.ts +36 -0
  275. package/lib/examples/AgentRuntimeLexicalExample.js +260 -0
  276. package/lib/examples/AgentRuntimeLexicalSidebarExample.d.ts +41 -0
  277. package/lib/examples/AgentRuntimeLexicalSidebarExample.js +166 -0
  278. package/lib/examples/AgentRuntimeNotebookExample.d.ts +9 -0
  279. package/lib/examples/AgentRuntimeNotebookExample.js +148 -0
  280. package/lib/examples/AgentRuntimeNotebookSidebarExample.d.ts +13 -0
  281. package/lib/examples/AgentRuntimeNotebookSidebarExample.js +121 -0
  282. package/lib/examples/AgentRuntimeStandaloneExample.d.ts +21 -0
  283. package/lib/examples/AgentRuntimeStandaloneExample.js +158 -0
  284. package/lib/examples/AgentSpaceFormExample.d.ts +22 -0
  285. package/lib/examples/AgentSpaceFormExample.js +296 -0
  286. package/lib/examples/AgentSpaceHomeExample.d.ts +8 -0
  287. package/lib/examples/AgentSpaceHomeExample.js +171 -0
  288. package/lib/examples/CopilotKitLexicalExample.d.ts +38 -0
  289. package/lib/examples/CopilotKitLexicalExample.js +161 -0
  290. package/lib/examples/CopilotKitNotebookExample.d.ts +11 -0
  291. package/lib/examples/CopilotKitNotebookExample.js +70 -0
  292. package/lib/examples/DatalayerNotebookExample.d.ts +16 -0
  293. package/lib/examples/DatalayerNotebookExample.js +99 -0
  294. package/lib/examples/JupyterCellExample.d.ts +6 -0
  295. package/lib/examples/JupyterCellExample.js +19 -0
  296. package/lib/examples/JupyterNotebookExample.d.ts +6 -0
  297. package/lib/examples/JupyterNotebookExample.js +21 -0
  298. package/lib/examples/ag-ui/haiku/HaikuDisplay.d.ts +18 -0
  299. package/lib/examples/ag-ui/haiku/HaikuDisplay.js +110 -0
  300. package/lib/examples/ag-ui/haiku/InlineHaikuCard.d.ts +39 -0
  301. package/lib/examples/ag-ui/haiku/InlineHaikuCard.js +117 -0
  302. package/lib/examples/ag-ui/haiku/index.d.ts +11 -0
  303. package/lib/examples/ag-ui/haiku/index.js +15 -0
  304. package/lib/examples/ag-ui/index.d.ts +10 -0
  305. package/lib/examples/ag-ui/index.js +16 -0
  306. package/lib/examples/ag-ui/weather/InlineWeatherCard.d.ts +43 -0
  307. package/lib/examples/ag-ui/weather/InlineWeatherCard.js +180 -0
  308. package/lib/examples/ag-ui/weather/index.d.ts +9 -0
  309. package/lib/examples/ag-ui/weather/index.js +13 -0
  310. package/lib/examples/components/AgentConfiguration.d.ts +50 -0
  311. package/lib/examples/components/AgentConfiguration.js +115 -0
  312. package/lib/examples/components/AgentsDataTable.d.ts +13 -0
  313. package/lib/examples/components/AgentsDataTable.js +74 -0
  314. package/lib/examples/components/FooterMetrics.d.ts +12 -0
  315. package/lib/examples/components/FooterMetrics.js +17 -0
  316. package/lib/examples/components/Header.d.ts +27 -0
  317. package/lib/examples/components/Header.js +294 -0
  318. package/lib/examples/components/HeaderControls.d.ts +11 -0
  319. package/lib/examples/components/HeaderControls.js +24 -0
  320. package/lib/examples/components/LexicalEditor.d.ts +27 -0
  321. package/lib/examples/components/LexicalEditor.js +118 -0
  322. package/lib/examples/components/MainContent.d.ts +19 -0
  323. package/lib/examples/components/MainContent.js +68 -0
  324. package/lib/examples/components/MockFileBrowser.d.ts +12 -0
  325. package/lib/examples/components/MockFileBrowser.js +131 -0
  326. package/lib/examples/components/Rating.d.ts +14 -0
  327. package/lib/examples/components/Rating.js +12 -0
  328. package/lib/examples/components/SessionTabs.d.ts +21 -0
  329. package/lib/examples/components/SessionTabs.js +11 -0
  330. package/lib/examples/components/TimeTravel.d.ts +15 -0
  331. package/lib/examples/components/TimeTravel.js +23 -0
  332. package/lib/examples/components/index.d.ts +11 -0
  333. package/lib/examples/components/index.js +14 -0
  334. package/lib/examples/example-selector.d.ts +22 -0
  335. package/lib/examples/example-selector.js +62 -0
  336. package/lib/examples/index.d.ts +21 -0
  337. package/lib/examples/index.js +25 -0
  338. package/lib/examples/lexical/editorConfig.d.ts +76 -0
  339. package/lib/examples/lexical/editorConfig.js +55 -0
  340. package/lib/examples/lexical/lexical-theme.css +436 -0
  341. package/lib/examples/lexical/theme.d.ts +61 -0
  342. package/lib/examples/lexical/theme.js +72 -0
  343. package/lib/examples/main.d.ts +2 -0
  344. package/lib/examples/main.js +334 -0
  345. package/lib/examples/stores/agents/earthquake-detector.ipynb.json +111 -0
  346. package/lib/examples/stores/agents/earthquake-detector.json +13 -0
  347. package/lib/examples/stores/agents/earthquake-detector.lexical.json +2988 -0
  348. package/lib/examples/stores/agents/sales-forecaster.ipynb.json +111 -0
  349. package/lib/examples/stores/agents/sales-forecaster.json +13 -0
  350. package/lib/examples/stores/agents/sales-forecaster.lexical.json +2988 -0
  351. package/lib/examples/stores/agents/social-post-generator.ipynb.json +111 -0
  352. package/lib/examples/stores/agents/social-post-generator.json +13 -0
  353. package/lib/examples/stores/agents/social-post-generator.lexical.json +2988 -0
  354. package/lib/examples/stores/agents/stock-market.ipynb.json +56 -0
  355. package/lib/examples/stores/agents/stock-market.json +13 -0
  356. package/lib/examples/stores/agents/stock-market.lexical.json +1026 -0
  357. package/lib/examples/stores/examplesStore.d.ts +26 -0
  358. package/lib/examples/stores/examplesStore.js +60 -0
  359. package/lib/examples/stores/notebooks/Empty.ipynb.json +33 -0
  360. package/lib/examples/stores/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  361. package/lib/examples/stores/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  362. package/lib/examples/stores/notebooks/Lite.ipynb.json +128 -0
  363. package/lib/examples/stores/notebooks/Matplotlib.ipynb.json +137 -0
  364. package/lib/examples/stores/notebooks/NotebookExample1.ipynb.json +126 -0
  365. package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +48 -0
  366. package/lib/examples/stores/notebooks/NotebookOutputs.ipynb.json +49 -0
  367. package/lib/examples/stores/notebooks/NotebookToCExample.ipynb.json +102 -0
  368. package/lib/examples/stores/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  369. package/lib/examples/stores/notebooks/OutputIPyWidgetsExample.js +153 -0
  370. package/lib/examples/stores/notebooks/PyGWalker.ipynb.json +55 -0
  371. package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.d.ts +12 -0
  372. package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.js +69 -0
  373. package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.d.ts +1 -0
  374. package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.js +85 -0
  375. package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.d.ts +1 -0
  376. package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.js +62 -0
  377. package/lib/examples/vercel-ai-elements/components/ConversationShowcase.d.ts +1 -0
  378. package/lib/examples/vercel-ai-elements/components/ConversationShowcase.js +51 -0
  379. package/lib/examples/vercel-ai-elements/components/LoaderShowcase.d.ts +1 -0
  380. package/lib/examples/vercel-ai-elements/components/LoaderShowcase.js +9 -0
  381. package/lib/examples/vercel-ai-elements/components/MessageShowcase.d.ts +1 -0
  382. package/lib/examples/vercel-ai-elements/components/MessageShowcase.js +56 -0
  383. package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.d.ts +1 -0
  384. package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.js +50 -0
  385. package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.d.ts +1 -0
  386. package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.js +16 -0
  387. package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.d.ts +1 -0
  388. package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.js +72 -0
  389. package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.d.ts +1 -0
  390. package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.js +9 -0
  391. package/lib/examples/vercel-ai-elements/components/SourcesShowcase.d.ts +1 -0
  392. package/lib/examples/vercel-ai-elements/components/SourcesShowcase.js +43 -0
  393. package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.d.ts +1 -0
  394. package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.js +31 -0
  395. package/lib/examples/vercel-ai-elements/components/ToolShowcase.d.ts +1 -0
  396. package/lib/examples/vercel-ai-elements/components/ToolShowcase.js +54 -0
  397. package/lib/examples/vercel-ai-elements/index.d.ts +13 -0
  398. package/lib/examples/vercel-ai-elements/index.js +17 -0
  399. package/lib/examples/vercel-ai-elements/main.d.ts +1 -0
  400. package/lib/examples/vercel-ai-elements/main.js +9 -0
  401. package/lib/examples/vercel-ai-elements/showcase.css +128 -0
  402. package/lib/hooks/index.d.ts +68 -0
  403. package/lib/hooks/index.js +81 -0
  404. package/lib/hooks/useA2A.d.ts +75 -0
  405. package/lib/hooks/useA2A.js +368 -0
  406. package/lib/hooks/useAGUI.d.ts +63 -0
  407. package/lib/hooks/useAGUI.js +162 -0
  408. package/lib/hooks/useAcp.d.ts +121 -0
  409. package/lib/hooks/useAcp.js +459 -0
  410. package/lib/hooks/useAgents.d.ts +13 -0
  411. package/lib/hooks/useAgents.js +71 -0
  412. package/lib/hooks/useChat.d.ts +62 -0
  413. package/lib/hooks/useChat.js +363 -0
  414. package/lib/hooks/useKeyboardShortcuts.d.ts +47 -0
  415. package/lib/hooks/useKeyboardShortcuts.js +153 -0
  416. package/lib/hooks/useMobile.d.ts +1 -0
  417. package/lib/hooks/useMobile.js +19 -0
  418. package/lib/hooks/useNotebookAIAgent.d.ts +8 -0
  419. package/lib/hooks/useNotebookAIAgent.js +56 -0
  420. package/lib/hooks/useToast.d.ts +44 -0
  421. package/lib/hooks/useToast.js +128 -0
  422. package/lib/hooks/useTools.d.ts +107 -0
  423. package/lib/hooks/useTools.js +130 -0
  424. package/lib/hooks/useVercelChat.d.ts +45 -0
  425. package/lib/hooks/useVercelChat.js +62 -0
  426. package/lib/index.css +73 -0
  427. package/lib/index.d.ts +1 -0
  428. package/lib/index.js +5 -0
  429. package/lib/lexical/ChatInlinePlugin.d.ts +21 -0
  430. package/lib/lexical/ChatInlinePlugin.js +379 -0
  431. package/lib/lexical/index.d.ts +6 -0
  432. package/lib/lexical/index.js +10 -0
  433. package/lib/lib/utils.d.ts +2 -0
  434. package/lib/lib/utils.js +9 -0
  435. package/lib/main.d.ts +1 -0
  436. package/lib/main.js +12 -0
  437. package/lib/models/AIAgent.d.ts +17 -0
  438. package/lib/models/AIAgent.js +5 -0
  439. package/lib/models/index.d.ts +1 -0
  440. package/lib/models/index.js +5 -0
  441. package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +7 -0
  442. package/lib/renderers/a2ui/components/A2UIRenderer.js +102 -0
  443. package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +7 -0
  444. package/lib/renderers/a2ui/components/SurfaceRenderer.js +101 -0
  445. package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +9 -0
  446. package/lib/renderers/a2ui/components/content/AudioPlayer.js +38 -0
  447. package/lib/renderers/a2ui/components/content/Divider.d.ts +9 -0
  448. package/lib/renderers/a2ui/components/content/Divider.js +35 -0
  449. package/lib/renderers/a2ui/components/content/Icon.d.ts +9 -0
  450. package/lib/renderers/a2ui/components/content/Icon.js +110 -0
  451. package/lib/renderers/a2ui/components/content/Image.d.ts +9 -0
  452. package/lib/renderers/a2ui/components/content/Image.js +61 -0
  453. package/lib/renderers/a2ui/components/content/Text.d.ts +9 -0
  454. package/lib/renderers/a2ui/components/content/Text.js +64 -0
  455. package/lib/renderers/a2ui/components/content/Video.d.ts +9 -0
  456. package/lib/renderers/a2ui/components/content/Video.js +37 -0
  457. package/lib/renderers/a2ui/components/content/index.d.ts +6 -0
  458. package/lib/renderers/a2ui/components/content/index.js +25 -0
  459. package/lib/renderers/a2ui/components/index.d.ts +5 -0
  460. package/lib/renderers/a2ui/components/index.js +24 -0
  461. package/lib/renderers/a2ui/components/interactive/Button.d.ts +11 -0
  462. package/lib/renderers/a2ui/components/interactive/Button.js +71 -0
  463. package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +9 -0
  464. package/lib/renderers/a2ui/components/interactive/CheckBox.js +48 -0
  465. package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +9 -0
  466. package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +62 -0
  467. package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +9 -0
  468. package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +73 -0
  469. package/lib/renderers/a2ui/components/interactive/Slider.d.ts +9 -0
  470. package/lib/renderers/a2ui/components/interactive/Slider.js +53 -0
  471. package/lib/renderers/a2ui/components/interactive/TextField.d.ts +9 -0
  472. package/lib/renderers/a2ui/components/interactive/TextField.js +72 -0
  473. package/lib/renderers/a2ui/components/interactive/index.d.ts +6 -0
  474. package/lib/renderers/a2ui/components/interactive/index.js +25 -0
  475. package/lib/renderers/a2ui/components/layout/Card.d.ts +11 -0
  476. package/lib/renderers/a2ui/components/layout/Card.js +30 -0
  477. package/lib/renderers/a2ui/components/layout/Column.d.ts +11 -0
  478. package/lib/renderers/a2ui/components/layout/Column.js +65 -0
  479. package/lib/renderers/a2ui/components/layout/List.d.ts +11 -0
  480. package/lib/renderers/a2ui/components/layout/List.js +55 -0
  481. package/lib/renderers/a2ui/components/layout/Modal.d.ts +11 -0
  482. package/lib/renderers/a2ui/components/layout/Modal.js +58 -0
  483. package/lib/renderers/a2ui/components/layout/Row.d.ts +11 -0
  484. package/lib/renderers/a2ui/components/layout/Row.js +65 -0
  485. package/lib/renderers/a2ui/components/layout/Tabs.d.ts +11 -0
  486. package/lib/renderers/a2ui/components/layout/Tabs.js +48 -0
  487. package/lib/renderers/a2ui/components/layout/index.d.ts +6 -0
  488. package/lib/renderers/a2ui/components/layout/index.js +25 -0
  489. package/lib/renderers/a2ui/context/A2UIContext.d.ts +17 -0
  490. package/lib/renderers/a2ui/context/A2UIContext.js +54 -0
  491. package/lib/renderers/a2ui/context/ThemeContext.d.ts +20 -0
  492. package/lib/renderers/a2ui/context/ThemeContext.js +333 -0
  493. package/lib/renderers/a2ui/hooks/useA2UI.d.ts +36 -0
  494. package/lib/renderers/a2ui/hooks/useA2UI.js +62 -0
  495. package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +8 -0
  496. package/lib/renderers/a2ui/hooks/useDataBinding.js +83 -0
  497. package/lib/renderers/a2ui/index.d.ts +9 -0
  498. package/lib/renderers/a2ui/index.js +28 -0
  499. package/lib/renderers/a2ui/lib/utils.d.ts +11 -0
  500. package/lib/renderers/a2ui/lib/utils.js +38 -0
  501. package/lib/renderers/a2ui/types/index.d.ts +17 -0
  502. package/lib/renderers/a2ui/types/index.js +5 -0
  503. package/lib/renderers/index.d.ts +1 -0
  504. package/lib/renderers/index.js +5 -0
  505. package/lib/state/index.d.ts +1 -0
  506. package/lib/state/index.js +5 -0
  507. package/lib/state/substates/AIAgentState.d.ts +11 -0
  508. package/lib/state/substates/AIAgentState.js +42 -0
  509. package/lib/state/substates/index.d.ts +1 -0
  510. package/lib/state/substates/index.js +5 -0
  511. package/lib/stories/Button.d.ts +15 -0
  512. package/lib/stories/Button.js +13 -0
  513. package/lib/stories/Button.stories.d.ts +23 -0
  514. package/lib/stories/Button.stories.js +48 -0
  515. package/lib/stories/Cell.stories.d.ts +12 -0
  516. package/lib/stories/Cell.stories.js +123 -0
  517. package/lib/stories/Header.d.ts +12 -0
  518. package/lib/stories/Header.js +8 -0
  519. package/lib/stories/Header.stories.d.ts +18 -0
  520. package/lib/stories/Header.stories.js +30 -0
  521. package/lib/stories/Page.d.ts +3 -0
  522. package/lib/stories/Page.js +12 -0
  523. package/lib/stories/Page.stories.d.ts +12 -0
  524. package/lib/stories/Page.stories.js +28 -0
  525. package/lib/stories/assets/accessibility.png +0 -0
  526. package/lib/stories/assets/accessibility.svg +1 -0
  527. package/lib/stories/assets/addon-library.png +0 -0
  528. package/lib/stories/assets/assets.png +0 -0
  529. package/lib/stories/assets/context.png +0 -0
  530. package/lib/stories/assets/discord.svg +1 -0
  531. package/lib/stories/assets/docs.png +0 -0
  532. package/lib/stories/assets/figma-plugin.png +0 -0
  533. package/lib/stories/assets/github.svg +1 -0
  534. package/lib/stories/assets/share.png +0 -0
  535. package/lib/stories/assets/styling.png +0 -0
  536. package/lib/stories/assets/testing.png +0 -0
  537. package/lib/stories/assets/theming.png +0 -0
  538. package/lib/stories/assets/tutorials.svg +1 -0
  539. package/lib/stories/assets/youtube.svg +1 -0
  540. package/lib/stories/button.css +35 -0
  541. package/lib/stories/header.css +37 -0
  542. package/lib/stories/page.css +73 -0
  543. package/lib/test-setup.d.ts +1 -0
  544. package/lib/test-setup.js +80 -0
  545. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +40 -0
  546. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.js +110 -0
  547. package/lib/tools/adapters/agent-runtimes/index.d.ts +9 -0
  548. package/lib/tools/adapters/agent-runtimes/index.js +13 -0
  549. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +24 -0
  550. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +50 -0
  551. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +24 -0
  552. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +51 -0
  553. package/lib/tools/adapters/copilotkit/CopilotKitToolAdapter.d.ts +73 -0
  554. package/lib/tools/adapters/copilotkit/CopilotKitToolAdapter.js +244 -0
  555. package/lib/tools/adapters/copilotkit/index.d.ts +10 -0
  556. package/lib/tools/adapters/copilotkit/index.js +14 -0
  557. package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +27 -0
  558. package/lib/tools/adapters/copilotkit/lexicalHooks.js +59 -0
  559. package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +27 -0
  560. package/lib/tools/adapters/copilotkit/notebookHooks.js +58 -0
  561. package/lib/tools/adapters/index.d.ts +1 -0
  562. package/lib/tools/adapters/index.js +5 -0
  563. package/lib/tools/index.d.ts +6 -0
  564. package/lib/tools/index.js +18 -0
  565. package/lib/types.d.ts +5 -0
  566. package/lib/types.js +5 -0
  567. package/package.json +327 -0
  568. package/style/animation/Animation.module.css +174 -0
  569. package/style/base.css +204 -0
  570. package/style/index.css +6 -0
  571. package/style/showcase-vercel-ai.css +137 -0
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
8
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible';
9
+ import { cn } from '@/lib/utils';
10
+ import { BrainIcon, ChevronDownIcon } from 'lucide-react';
11
+ import { createContext, memo, useContext, useEffect, useState } from 'react';
12
+ import { Streamdown } from 'streamdown';
13
+ import { Shimmer } from './shimmer';
14
+ const ReasoningContext = createContext(null);
15
+ export const useReasoning = () => {
16
+ const context = useContext(ReasoningContext);
17
+ if (!context) {
18
+ throw new Error('Reasoning components must be used within Reasoning');
19
+ }
20
+ return context;
21
+ };
22
+ const AUTO_CLOSE_DELAY = 1000;
23
+ const MS_IN_S = 1000;
24
+ export const Reasoning = memo(({ className, isStreaming = false, open, defaultOpen = true, onOpenChange, duration: durationProp, children, ...props }) => {
25
+ const [isOpen, setIsOpen] = useControllableState({
26
+ prop: open,
27
+ defaultProp: defaultOpen,
28
+ onChange: onOpenChange,
29
+ });
30
+ const [duration, setDuration] = useControllableState({
31
+ prop: durationProp,
32
+ defaultProp: undefined,
33
+ });
34
+ const [hasAutoClosed, setHasAutoClosed] = useState(false);
35
+ const [startTime, setStartTime] = useState(null);
36
+ // Track duration when streaming starts and ends
37
+ useEffect(() => {
38
+ if (isStreaming) {
39
+ if (startTime === null) {
40
+ setStartTime(Date.now());
41
+ }
42
+ }
43
+ else if (startTime !== null) {
44
+ setDuration(Math.ceil((Date.now() - startTime) / MS_IN_S));
45
+ setStartTime(null);
46
+ }
47
+ }, [isStreaming, startTime, setDuration]);
48
+ // Auto-open when streaming starts, auto-close when streaming ends (once only)
49
+ useEffect(() => {
50
+ if (defaultOpen && !isStreaming && isOpen && !hasAutoClosed) {
51
+ // Add a small delay before closing to allow user to see the content
52
+ const timer = setTimeout(() => {
53
+ setIsOpen(false);
54
+ setHasAutoClosed(true);
55
+ }, AUTO_CLOSE_DELAY);
56
+ return () => clearTimeout(timer);
57
+ }
58
+ }, [isStreaming, isOpen, defaultOpen, setIsOpen, hasAutoClosed]);
59
+ const handleOpenChange = (newOpen) => {
60
+ setIsOpen(newOpen);
61
+ };
62
+ return (_jsx(ReasoningContext.Provider, { value: { isStreaming, isOpen, setIsOpen, duration }, children: _jsx(Collapsible, { className: cn('not-prose mb-4', className), onOpenChange: handleOpenChange, open: isOpen, ...props, children: children }) }));
63
+ });
64
+ const defaultGetThinkingMessage = (isStreaming, duration) => {
65
+ if (isStreaming || duration === 0) {
66
+ return _jsx(Shimmer, { duration: 1, children: "Thinking..." });
67
+ }
68
+ if (duration === undefined) {
69
+ return _jsx("p", { children: "Thought for a few seconds" });
70
+ }
71
+ return _jsxs("p", { children: ["Thought for ", duration, " seconds"] });
72
+ };
73
+ export const ReasoningTrigger = memo(({ className, children, getThinkingMessage = defaultGetThinkingMessage, ...props }) => {
74
+ const { isStreaming, isOpen, duration } = useReasoning();
75
+ return (_jsx(CollapsibleTrigger, { className: cn('flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground', className), ...props, children: children ?? (_jsxs(_Fragment, { children: [_jsx(BrainIcon, { className: "size-4" }), getThinkingMessage(isStreaming, duration), _jsx(ChevronDownIcon, { className: cn('size-4 transition-transform', isOpen ? 'rotate-180' : 'rotate-0') })] })) }));
76
+ });
77
+ export const ReasoningContent = memo(({ className, children, ...props }) => (_jsx(CollapsibleContent, { className: cn('mt-4 text-sm', 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-muted-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in', className), ...props, children: _jsx(Streamdown, { ...props, children: children }) })));
78
+ Reasoning.displayName = 'Reasoning';
79
+ ReasoningTrigger.displayName = 'ReasoningTrigger';
80
+ ReasoningContent.displayName = 'ReasoningContent';
@@ -0,0 +1,9 @@
1
+ import { type ElementType } from 'react';
2
+ export type TextShimmerProps = {
3
+ children: string;
4
+ as?: ElementType;
5
+ className?: string;
6
+ duration?: number;
7
+ spread?: number;
8
+ };
9
+ export declare const Shimmer: import("react").MemoExoticComponent<({ children, as: Component, className, duration, spread, }: TextShimmerProps) => import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { cn } from '@/lib/utils';
8
+ import { motion } from 'motion/react';
9
+ import { memo, useMemo, } from 'react';
10
+ const ShimmerComponent = ({ children, as: Component = 'p', className, duration = 2, spread = 2, }) => {
11
+ const MotionComponent = motion.create(Component);
12
+ const dynamicSpread = useMemo(() => (children?.length ?? 0) * spread, [children, spread]);
13
+ return (_jsx(MotionComponent, { animate: { backgroundPosition: '0% center' }, className: cn('relative inline-block bg-[length:250%_100%,auto] bg-clip-text text-transparent', '[--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--color-background),#0000_calc(50%+var(--spread)))] [background-repeat:no-repeat,padding-box]', className), initial: { backgroundPosition: '100% center' }, style: {
14
+ '--spread': `${dynamicSpread}px`,
15
+ backgroundImage: 'var(--bg), linear-gradient(var(--color-muted-foreground), var(--color-muted-foreground))',
16
+ }, transition: {
17
+ repeat: Number.POSITIVE_INFINITY,
18
+ duration,
19
+ ease: 'linear',
20
+ }, children: children }));
21
+ };
22
+ export const Shimmer = memo(ShimmerComponent);
@@ -0,0 +1,12 @@
1
+ import { CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';
2
+ import type { ComponentProps } from 'react';
3
+ export type SourcesProps = ComponentProps<'div'>;
4
+ export declare const Sources: ({ className, ...props }: SourcesProps) => import("react/jsx-runtime").JSX.Element;
5
+ export type SourcesTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {
6
+ count: number;
7
+ };
8
+ export declare const SourcesTrigger: ({ className, count, children, ...props }: SourcesTriggerProps) => import("react/jsx-runtime").JSX.Element;
9
+ export type SourcesContentProps = ComponentProps<typeof CollapsibleContent>;
10
+ export declare const SourcesContent: ({ className, ...props }: SourcesContentProps) => import("react/jsx-runtime").JSX.Element;
11
+ export type SourceProps = ComponentProps<'a'>;
12
+ export declare const Source: ({ href, title, children, ...props }: SourceProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible';
8
+ import { cn } from '@/lib/utils';
9
+ import { BookIcon, ChevronDownIcon } from 'lucide-react';
10
+ export const Sources = ({ className, ...props }) => (_jsx(Collapsible, { className: cn('not-prose mb-4 text-primary text-xs', className), ...props }));
11
+ export const SourcesTrigger = ({ className, count, children, ...props }) => (_jsx(CollapsibleTrigger, { className: cn('flex items-center gap-2', className), ...props, children: children ?? (_jsxs(_Fragment, { children: [_jsxs("p", { className: "font-medium", children: ["Used ", count, " sources"] }), _jsx(ChevronDownIcon, { className: "h-4 w-4" })] })) }));
12
+ export const SourcesContent = ({ className, ...props }) => (_jsx(CollapsibleContent, { className: cn('mt-3 flex w-fit flex-col gap-2', 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in', className), ...props }));
13
+ export const Source = ({ href, title, children, ...props }) => (_jsx("a", { className: "flex items-center gap-2", href: href, rel: "noreferrer", target: "_blank", ...props, children: children ?? (_jsxs(_Fragment, { children: [_jsx(BookIcon, { className: "h-4 w-4" }), _jsx("span", { className: "block font-medium", children: title })] })) }));
@@ -0,0 +1,10 @@
1
+ import { Button } from '@/components/ui/button';
2
+ import { ScrollArea } from '@/components/ui/scroll-area';
3
+ import type { ComponentProps } from 'react';
4
+ export type SuggestionsProps = ComponentProps<typeof ScrollArea>;
5
+ export declare const Suggestions: ({ className, children, ...props }: SuggestionsProps) => import("react/jsx-runtime").JSX.Element;
6
+ export type SuggestionProps = Omit<ComponentProps<typeof Button>, 'onClick'> & {
7
+ suggestion: string;
8
+ onClick?: (suggestion: string) => void;
9
+ };
10
+ export declare const Suggestion: ({ suggestion, onClick, className, variant, size, children, ...props }: SuggestionProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { Button } from '@/components/ui/button';
8
+ import { ScrollArea, ScrollBar } from '@/components/ui/scroll-area';
9
+ import { cn } from '@/lib/utils';
10
+ export const Suggestions = ({ className, children, ...props }) => (_jsxs(ScrollArea, { className: "w-full overflow-x-auto whitespace-nowrap", ...props, children: [_jsx("div", { className: cn('flex w-max flex-nowrap items-center gap-2', className), children: children }), _jsx(ScrollBar, { className: "hidden", orientation: "horizontal" })] }));
11
+ export const Suggestion = ({ suggestion, onClick, className, variant = 'outline', size = 'sm', children, ...props }) => {
12
+ const handleClick = () => {
13
+ onClick?.(suggestion);
14
+ };
15
+ return (_jsx(Button, { className: cn('cursor-pointer rounded-full px-4', className), onClick: handleClick, size: size, type: "button", variant: variant, ...props, children: children || suggestion }));
16
+ };
@@ -0,0 +1,23 @@
1
+ import { Collapsible, CollapsibleContent } from '@/components/ui/collapsible';
2
+ import type { ToolUIPart } from 'ai';
3
+ import type { ComponentProps } from 'react';
4
+ export type ToolProps = ComponentProps<typeof Collapsible>;
5
+ export declare const Tool: ({ className, ...props }: ToolProps) => import("react/jsx-runtime").JSX.Element;
6
+ export type ToolHeaderProps = {
7
+ title?: string;
8
+ type: ToolUIPart['type'];
9
+ state: ToolUIPart['state'];
10
+ className?: string;
11
+ };
12
+ export declare const ToolHeader: ({ className, title, type, state, ...props }: ToolHeaderProps) => import("react/jsx-runtime").JSX.Element;
13
+ export type ToolContentProps = ComponentProps<typeof CollapsibleContent>;
14
+ export declare const ToolContent: ({ className, ...props }: ToolContentProps) => import("react/jsx-runtime").JSX.Element;
15
+ export type ToolInputProps = ComponentProps<'div'> & {
16
+ input: ToolUIPart['input'];
17
+ };
18
+ export declare const ToolInput: ({ className, input, ...props }: ToolInputProps) => import("react/jsx-runtime").JSX.Element;
19
+ export type ToolOutputProps = ComponentProps<'div'> & {
20
+ output: ToolUIPart['output'];
21
+ errorText: ToolUIPart['errorText'];
22
+ };
23
+ export declare const ToolOutput: ({ className, output, errorText, ...props }: ToolOutputProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { Badge } from '@/components/ui/badge';
8
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible';
9
+ import { cn } from '@/lib/utils';
10
+ import { CheckCircleIcon, ChevronDownIcon, CircleIcon, ClockIcon, WrenchIcon, XCircleIcon, } from 'lucide-react';
11
+ import { isValidElement } from 'react';
12
+ import { CodeBlock } from './code-block';
13
+ export const Tool = ({ className, ...props }) => (_jsx(Collapsible, { className: cn('not-prose mb-4 w-full rounded-md border', className), ...props }));
14
+ const getStatusBadge = (status) => {
15
+ const labels = {
16
+ 'input-streaming': 'Pending',
17
+ 'input-available': 'Running',
18
+ 'approval-requested': 'Awaiting Approval',
19
+ 'approval-responded': 'Responded',
20
+ 'output-available': 'Completed',
21
+ 'output-error': 'Error',
22
+ 'output-denied': 'Denied',
23
+ };
24
+ const icons = {
25
+ 'input-streaming': _jsx(CircleIcon, { className: "size-4" }),
26
+ 'input-available': _jsx(ClockIcon, { className: "size-4 animate-pulse" }),
27
+ 'approval-requested': _jsx(ClockIcon, { className: "size-4 text-yellow-600" }),
28
+ 'approval-responded': _jsx(CheckCircleIcon, { className: "size-4 text-blue-600" }),
29
+ 'output-available': _jsx(CheckCircleIcon, { className: "size-4 text-green-600" }),
30
+ 'output-error': _jsx(XCircleIcon, { className: "size-4 text-red-600" }),
31
+ 'output-denied': _jsx(XCircleIcon, { className: "size-4 text-orange-600" }),
32
+ };
33
+ return (_jsxs(Badge, { className: "gap-1.5 rounded-full text-xs", variant: "secondary", children: [icons[status], labels[status]] }));
34
+ };
35
+ export const ToolHeader = ({ className, title, type, state, ...props }) => (_jsxs(CollapsibleTrigger, { className: cn('flex w-full items-center justify-between gap-4 p-3', className), ...props, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(WrenchIcon, { className: "size-4 text-muted-foreground" }), _jsx("span", { className: "font-medium text-sm", children: title ?? type.split('-').slice(1).join('-') }), getStatusBadge(state)] }), _jsx(ChevronDownIcon, { className: "size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" })] }));
36
+ export const ToolContent = ({ className, ...props }) => (_jsx(CollapsibleContent, { className: cn('data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in', className), ...props }));
37
+ export const ToolInput = ({ className, input, ...props }) => (_jsxs("div", { className: cn('space-y-2 overflow-hidden p-4', className), ...props, children: [_jsx("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: "Parameters" }), _jsx("div", { className: "rounded-md bg-muted/50", children: _jsx(CodeBlock, { code: JSON.stringify(input, null, 2), language: "json" }) })] }));
38
+ export const ToolOutput = ({ className, output, errorText, ...props }) => {
39
+ if (!(output || errorText)) {
40
+ return null;
41
+ }
42
+ let Output = _jsx("div", { children: output });
43
+ if (typeof output === 'object' && !isValidElement(output)) {
44
+ Output = (_jsx(CodeBlock, { code: JSON.stringify(output, null, 2), language: "json" }));
45
+ }
46
+ else if (typeof output === 'string') {
47
+ Output = _jsx(CodeBlock, { code: output, language: "json" });
48
+ }
49
+ return (_jsxs("div", { className: cn('space-y-2 p-4', className), ...props, children: [_jsx("h4", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: errorText ? 'Error' : 'Result' }), _jsxs("div", { className: cn('overflow-x-auto rounded-md text-xs [&_table]:w-full', errorText
50
+ ? 'bg-destructive/10 text-destructive'
51
+ : 'bg-muted/50 text-foreground'), children: [errorText && _jsx("div", { children: errorText }), Output] })] }));
52
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A2UiRestaurantExample
3
+ *
4
+ * Demonstrates A2UI (Agent-to-UI) protocol integration with a pydantic-ai
5
+ * restaurant finder agent. The agent generates A2UI JSON messages that are
6
+ * rendered into React components.
7
+ *
8
+ * Features:
9
+ * - A2UI protocol message processing
10
+ * - Dynamic UI generation from agent responses
11
+ * - Restaurant search and booking interface
12
+ * - Dark/light theme support
13
+ *
14
+ * Backend: /api/v1/a2ui/restaurant/
15
+ */
16
+ import React from 'react';
17
+ /**
18
+ * A2UiRestaurantExample - Main example component
19
+ *
20
+ * Demonstrates A2UI protocol integration with pydantic-ai.
21
+ * The agent generates A2UI JSON messages for restaurant search,
22
+ * display, and booking functionality.
23
+ */
24
+ declare const A2UiRestaurantExample: React.FC;
25
+ export default A2UiRestaurantExample;
@@ -0,0 +1,305 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * A2UiRestaurantExample
8
+ *
9
+ * Demonstrates A2UI (Agent-to-UI) protocol integration with a pydantic-ai
10
+ * restaurant finder agent. The agent generates A2UI JSON messages that are
11
+ * rendered into React components.
12
+ *
13
+ * Features:
14
+ * - A2UI protocol message processing
15
+ * - Dynamic UI generation from agent responses
16
+ * - Restaurant search and booking interface
17
+ * - Dark/light theme support
18
+ *
19
+ * Backend: /api/v1/a2ui/restaurant/
20
+ */
21
+ import { useState, useCallback, useEffect, useRef } from 'react';
22
+ import { Box } from '@datalayer/primer-addons';
23
+ import { datalayerTheme, DatalayerThemeProvider } from '@datalayer/core';
24
+ import { Text, Spinner, TextInput, Button } from '@primer/react';
25
+ import { A2UIProvider, A2UIRenderer, useA2UI } from '../renderers/a2ui';
26
+ // A2UI endpoint for pydantic-ai restaurant agent
27
+ const A2UI_RESTAURANT_ENDPOINT = 'http://localhost:8765/api/v1/a2ui/restaurant/';
28
+ const LOADING_TEXT_LINES = [
29
+ 'Finding the best spots for you...',
30
+ 'Checking reviews...',
31
+ 'Looking for open tables...',
32
+ 'Almost there...',
33
+ ];
34
+ /**
35
+ * Custom hook for A2UI restaurant client communication.
36
+ */
37
+ function useA2UIRestaurantClient() {
38
+ const { surfaces, processMessages, clearSurfaces, sendAction } = useA2UI();
39
+ const [isLoading, setIsLoading] = useState(false);
40
+ const [error, setError] = useState(null);
41
+ /**
42
+ * Send a message to the A2UI backend and process the response.
43
+ */
44
+ const makeRequest = useCallback(async (message) => {
45
+ let messages;
46
+ try {
47
+ setIsLoading(true);
48
+ setError(null);
49
+ const response = await fetch(A2UI_RESTAURANT_ENDPOINT, {
50
+ method: 'POST',
51
+ headers: {
52
+ 'Content-Type': 'application/json',
53
+ },
54
+ body: JSON.stringify({ query: message }),
55
+ });
56
+ if (!response.ok) {
57
+ const errorData = await response.json();
58
+ throw new Error(errorData.error || 'Request failed');
59
+ }
60
+ const data = (await response.json());
61
+ if ('error' in data) {
62
+ throw new Error(data.error);
63
+ }
64
+ messages = [];
65
+ for (const item of data) {
66
+ // Handle both Python SDK (with root wrapper) and JS SDK (direct) formats
67
+ const part = item.root || item;
68
+ if (part.kind === 'text')
69
+ continue;
70
+ if (part.data) {
71
+ messages.push(part.data);
72
+ }
73
+ }
74
+ clearSurfaces();
75
+ processMessages(messages);
76
+ return messages;
77
+ }
78
+ catch (err) {
79
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
80
+ setError(errorMessage);
81
+ console.error('A2UI request error:', err);
82
+ throw err;
83
+ }
84
+ finally {
85
+ setIsLoading(false);
86
+ }
87
+ }, [processMessages, clearSurfaces]);
88
+ /**
89
+ * Handle A2UI actions (button clicks, form submissions, etc.)
90
+ */
91
+ const handleAction = useCallback(async (action) => {
92
+ try {
93
+ setIsLoading(true);
94
+ setError(null);
95
+ const response = await fetch(A2UI_RESTAURANT_ENDPOINT, {
96
+ method: 'POST',
97
+ headers: {
98
+ 'Content-Type': 'application/json',
99
+ },
100
+ body: JSON.stringify({
101
+ action: action.actionId,
102
+ context: action.context,
103
+ }),
104
+ });
105
+ if (!response.ok) {
106
+ const errorData = await response.json();
107
+ throw new Error(errorData.error || 'Action failed');
108
+ }
109
+ const data = (await response.json());
110
+ if ('error' in data) {
111
+ throw new Error(data.error);
112
+ }
113
+ const messages = [];
114
+ for (const item of data) {
115
+ const part = item.root || item;
116
+ if (part.kind === 'text')
117
+ continue;
118
+ if (part.data) {
119
+ messages.push(part.data);
120
+ }
121
+ }
122
+ clearSurfaces();
123
+ processMessages(messages);
124
+ }
125
+ catch (err) {
126
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
127
+ setError(errorMessage);
128
+ console.error('A2UI action error:', err);
129
+ }
130
+ finally {
131
+ setIsLoading(false);
132
+ }
133
+ }, [processMessages, clearSurfaces]);
134
+ return {
135
+ surfaces,
136
+ isLoading,
137
+ error,
138
+ makeRequest,
139
+ handleAction,
140
+ sendAction,
141
+ };
142
+ }
143
+ /**
144
+ * Restaurant search interface component
145
+ */
146
+ function RestaurantSearch({ onSearch, isLoading, defaultValue = 'Top 5 Chinese restaurants in New York', }) {
147
+ const [inputValue, setInputValue] = useState(defaultValue);
148
+ const handleSubmit = useCallback((event) => {
149
+ event.preventDefault();
150
+ if (inputValue.trim() && !isLoading) {
151
+ onSearch(inputValue.trim());
152
+ }
153
+ }, [inputValue, isLoading, onSearch]);
154
+ return (_jsxs(Box, { sx: {
155
+ display: 'flex',
156
+ flexDirection: 'column',
157
+ alignItems: 'center',
158
+ gap: 4,
159
+ padding: 4,
160
+ maxWidth: '600px',
161
+ margin: '0 auto',
162
+ }, children: [_jsx(Box, { sx: {
163
+ width: '100%',
164
+ height: '200px',
165
+ borderRadius: '12px',
166
+ background: 'linear-gradient(135deg, #117A65 0%, #1ABC9C 100%)',
167
+ display: 'flex',
168
+ alignItems: 'center',
169
+ justifyContent: 'center',
170
+ marginBottom: 2,
171
+ }, children: _jsx(Text, { sx: {
172
+ fontSize: '4rem',
173
+ }, children: "\uD83C\uDF7D\uFE0F" }) }), _jsx(Text, { as: "h1", sx: {
174
+ fontSize: '2rem',
175
+ fontWeight: 'bold',
176
+ textAlign: 'center',
177
+ marginBottom: 2,
178
+ }, children: "Restaurant Finder" }), _jsx(Text, { sx: {
179
+ color: 'fg.muted',
180
+ textAlign: 'center',
181
+ marginBottom: 3,
182
+ }, children: "Powered by A2UI protocol and pydantic-ai" }), _jsx("form", { onSubmit: handleSubmit, style: { width: '100%' }, children: _jsxs(Box, { sx: { display: 'flex', gap: 2 }, children: [_jsx(TextInput, { value: inputValue, onChange: e => setInputValue(e.target.value), placeholder: "Search for restaurants...", disabled: isLoading, sx: { flex: 1 }, block: true }), _jsx(Button, { type: "submit", disabled: isLoading || !inputValue.trim(), children: isLoading ? _jsx(Spinner, { size: "small" }) : 'Search' })] }) })] }));
183
+ }
184
+ /**
185
+ * Loading state component with animated text
186
+ */
187
+ function LoadingState() {
188
+ const [loadingTextIndex, setLoadingTextIndex] = useState(0);
189
+ const loadingIntervalRef = useRef(null);
190
+ useEffect(() => {
191
+ loadingIntervalRef.current = window.setInterval(() => {
192
+ setLoadingTextIndex(prev => (prev + 1) % LOADING_TEXT_LINES.length);
193
+ }, 2000);
194
+ return () => {
195
+ if (loadingIntervalRef.current) {
196
+ clearInterval(loadingIntervalRef.current);
197
+ }
198
+ };
199
+ }, []);
200
+ return (_jsxs(Box, { sx: {
201
+ display: 'flex',
202
+ flexDirection: 'column',
203
+ alignItems: 'center',
204
+ justifyContent: 'center',
205
+ height: '300px',
206
+ gap: 3,
207
+ }, children: [_jsx(Spinner, { size: "large" }), _jsx(Text, { sx: { color: 'fg.muted', fontSize: '1.1rem' }, children: LOADING_TEXT_LINES[loadingTextIndex] })] }));
208
+ }
209
+ /**
210
+ * Results display component with A2UI renderer
211
+ */
212
+ function ResultsDisplay({ surfaces, onBack, }) {
213
+ return (_jsxs(Box, { sx: { padding: 3 }, children: [_jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-start', marginBottom: 3 }, children: _jsx(Button, { variant: "invisible", onClick: onBack, children: "\u2190 New Search" }) }), _jsx(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 3 }, children: Array.from(surfaces.entries()).map(([surfaceId]) => (_jsx(A2UIRenderer, { surfaceId: surfaceId, className: "a2ui-surface" }, surfaceId))) })] }));
214
+ }
215
+ /**
216
+ * Error display component
217
+ */
218
+ function ErrorDisplay({ error, onRetry, }) {
219
+ return (_jsxs(Box, { sx: {
220
+ display: 'flex',
221
+ flexDirection: 'column',
222
+ alignItems: 'center',
223
+ justifyContent: 'center',
224
+ padding: 4,
225
+ gap: 3,
226
+ }, children: [_jsxs(Text, { sx: { color: 'danger.fg', fontSize: '1.2rem' }, children: ["\u26A0\uFE0F ", error] }), _jsx(Button, { onClick: onRetry, children: "Try Again" })] }));
227
+ }
228
+ /**
229
+ * Main A2UI Restaurant content component
230
+ * (needs to be inside A2UIProvider to use hooks)
231
+ */
232
+ function A2UIRestaurantContent() {
233
+ const { surfaces, isLoading, error, makeRequest } = useA2UIRestaurantClient();
234
+ const [hasData, setHasData] = useState(false);
235
+ const [lastQuery, setLastQuery] = useState('');
236
+ const handleSearch = useCallback(async (query) => {
237
+ setLastQuery(query);
238
+ try {
239
+ await makeRequest(query);
240
+ setHasData(true);
241
+ }
242
+ catch {
243
+ // Error is already set in the hook
244
+ }
245
+ }, [makeRequest]);
246
+ const handleBack = useCallback(() => {
247
+ setHasData(false);
248
+ }, []);
249
+ const handleRetry = useCallback(() => {
250
+ if (lastQuery) {
251
+ handleSearch(lastQuery);
252
+ }
253
+ }, [lastQuery, handleSearch]);
254
+ // Show error state
255
+ if (error && !isLoading) {
256
+ return _jsx(ErrorDisplay, { error: error, onRetry: handleRetry });
257
+ }
258
+ // Show loading state
259
+ if (isLoading) {
260
+ return _jsx(LoadingState, {});
261
+ }
262
+ // Show search or results
263
+ if (!hasData) {
264
+ return _jsx(RestaurantSearch, { onSearch: handleSearch, isLoading: isLoading });
265
+ }
266
+ return _jsx(ResultsDisplay, { surfaces: surfaces, onBack: handleBack });
267
+ }
268
+ /**
269
+ * A2UiRestaurantExample - Main example component
270
+ *
271
+ * Demonstrates A2UI protocol integration with pydantic-ai.
272
+ * The agent generates A2UI JSON messages for restaurant search,
273
+ * display, and booking functionality.
274
+ */
275
+ const A2UiRestaurantExample = () => {
276
+ // Handle A2UI actions globally
277
+ const handleAction = useCallback((action) => {
278
+ console.log('A2UI Action:', action);
279
+ // Actions are handled in the content component
280
+ }, []);
281
+ return (_jsx(DatalayerThemeProvider, { theme: datalayerTheme, colorMode: "day", children: _jsx(A2UIProvider, { onAction: handleAction, children: _jsxs(Box, { sx: {
282
+ display: 'flex',
283
+ flexDirection: 'column',
284
+ minHeight: '100vh',
285
+ backgroundColor: 'canvas.default',
286
+ }, children: [_jsxs(Box, { sx: {
287
+ padding: 3,
288
+ borderBottom: '1px solid',
289
+ borderColor: 'border.default',
290
+ backgroundColor: 'canvas.subtle',
291
+ }, children: [_jsx(Text, { as: "h1", sx: {
292
+ fontSize: '1.25rem',
293
+ fontWeight: 'bold',
294
+ display: 'flex',
295
+ alignItems: 'center',
296
+ gap: 2,
297
+ }, children: "\uD83E\uDD16 A2UI Restaurant Example" }), _jsx(Text, { sx: { fontSize: '0.875rem', color: 'fg.muted' }, children: "pydantic-ai agent with A2UI protocol rendering" })] }), _jsx(Box, { sx: { flex: 1, padding: 3 }, children: _jsx(A2UIRestaurantContent, {}) }), _jsx(Box, { sx: {
298
+ padding: 2,
299
+ borderTop: '1px solid',
300
+ borderColor: 'border.default',
301
+ backgroundColor: 'canvas.subtle',
302
+ textAlign: 'center',
303
+ }, children: _jsxs(Text, { sx: { fontSize: '0.75rem', color: 'fg.muted' }, children: ["Backend: ", A2UI_RESTAURANT_ENDPOINT] }) })] }) }) }));
304
+ };
305
+ export default A2UiRestaurantExample;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * AgUiAgenticExample
3
+ *
4
+ * Demonstrates a floating chat popup that connects to the AG-UI
5
+ * Agentic Chat example backend. The agent has access to tools like
6
+ * getting the current time.
7
+ *
8
+ * This is the simplest AG-UI example showing basic chat with tool use.
9
+ *
10
+ * Backend: /api/v1/examples/agentic_chat/
11
+ */
12
+ import React from 'react';
13
+ /**
14
+ * AgUiAgenticExample Component
15
+ *
16
+ * Shows a floating chat button that opens a chat popup connected to
17
+ * the Agentic Chat AG-UI example.
18
+ *
19
+ * Features demonstrated:
20
+ * - Basic AG-UI SSE streaming
21
+ * - Tool calling (current_time tool)
22
+ * - Floating popup interface
23
+ */
24
+ declare const AgUiAgenticExample: React.FC;
25
+ export default AgUiAgenticExample;