@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,119 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Abstract base class for protocol adapters
7
+ */
8
+ export class BaseProtocolAdapter {
9
+ config;
10
+ _connectionState = 'disconnected';
11
+ eventHandlers = new Set();
12
+ reconnectAttempts = 0;
13
+ constructor(config) {
14
+ this.config = {
15
+ autoReconnect: true,
16
+ reconnectDelay: 1000,
17
+ maxReconnectAttempts: 5,
18
+ timeout: 30000,
19
+ ...config,
20
+ };
21
+ }
22
+ get connectionState() {
23
+ return this._connectionState;
24
+ }
25
+ /**
26
+ * Subscribe to protocol events
27
+ */
28
+ subscribe(handler) {
29
+ this.eventHandlers.add(handler);
30
+ return () => {
31
+ this.eventHandlers.delete(handler);
32
+ };
33
+ }
34
+ /**
35
+ * Get agent card (optional, mainly for A2A)
36
+ */
37
+ async getAgentCard() {
38
+ return null;
39
+ }
40
+ /**
41
+ * Check if protocol supports a specific feature
42
+ */
43
+ supportsFeature(feature) {
44
+ // Override in subclasses
45
+ return false;
46
+ }
47
+ /**
48
+ * Emit an event to all subscribers
49
+ */
50
+ emit(event) {
51
+ for (const handler of this.eventHandlers) {
52
+ try {
53
+ handler(event);
54
+ }
55
+ catch (error) {
56
+ console.error(`[${this.type}] Error in event handler:`, error);
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Update connection state and emit event
62
+ */
63
+ setConnectionState(state) {
64
+ const previousState = this._connectionState;
65
+ this._connectionState = state;
66
+ if (previousState !== state) {
67
+ this.emit({
68
+ type: state === 'connected' ? 'connected' : 'disconnected',
69
+ timestamp: new Date(),
70
+ });
71
+ }
72
+ }
73
+ /**
74
+ * Handle reconnection logic
75
+ */
76
+ async handleReconnect() {
77
+ if (!this.config.autoReconnect) {
78
+ return;
79
+ }
80
+ if (this.reconnectAttempts >= (this.config.maxReconnectAttempts || 5)) {
81
+ this.setConnectionState('error');
82
+ this.emit({
83
+ type: 'error',
84
+ error: new Error('Max reconnection attempts reached'),
85
+ timestamp: new Date(),
86
+ });
87
+ return;
88
+ }
89
+ this.setConnectionState('reconnecting');
90
+ this.reconnectAttempts++;
91
+ const delay = this.config.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
92
+ await new Promise(resolve => setTimeout(resolve, delay));
93
+ try {
94
+ await this.connect();
95
+ this.reconnectAttempts = 0;
96
+ }
97
+ catch (error) {
98
+ await this.handleReconnect();
99
+ }
100
+ }
101
+ /**
102
+ * Build headers for HTTP requests
103
+ */
104
+ buildHeaders(additionalHeaders) {
105
+ const headers = {
106
+ 'Content-Type': 'application/json',
107
+ };
108
+ if (this.config.authToken) {
109
+ headers['Authorization'] = `Bearer ${this.config.authToken}`;
110
+ }
111
+ return { ...headers, ...additionalHeaders };
112
+ }
113
+ /**
114
+ * Create abort signal with timeout
115
+ */
116
+ createTimeoutSignal() {
117
+ return AbortSignal.timeout(this.config.timeout || 30000);
118
+ }
119
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Vercel AI protocol adapter using SSE transport.
3
+ * Implements Pydantic AI's Vercel AI Data Stream Protocol.
4
+ *
5
+ * @see https://ai.pydantic.dev/ui/vercel-ai/
6
+ *
7
+ * @module components/chat/protocols/VercelAIAdapter
8
+ */
9
+ import type { ProtocolAdapterConfig } from '../types/protocol';
10
+ import type { ChatMessage } from '../types/message';
11
+ import type { ToolDefinition, ToolExecutionResult } from '../types/tool';
12
+ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
13
+ /**
14
+ * Vercel AI specific configuration
15
+ */
16
+ export interface VercelAIAdapterConfig extends ProtocolAdapterConfig {
17
+ /** Agent ID */
18
+ agentId?: string;
19
+ /** Custom headers for requests (e.g., for Jupyter authentication) */
20
+ headers?: Record<string, string>;
21
+ /** Custom fetch options */
22
+ fetchOptions?: {
23
+ /** Request mode */
24
+ mode?: RequestMode;
25
+ /** Credentials mode */
26
+ credentials?: RequestCredentials;
27
+ };
28
+ }
29
+ /**
30
+ * Vercel AI protocol adapter
31
+ * Uses HTTP POST with SSE streaming for responses
32
+ * Compatible with Pydantic AI's Vercel AI Data Stream Protocol
33
+ */
34
+ export declare class VercelAIAdapter extends BaseProtocolAdapter {
35
+ readonly type: "vercel-ai";
36
+ readonly transport: "sse";
37
+ private vercelConfig;
38
+ private abortController;
39
+ private currentRequestId;
40
+ constructor(config: VercelAIAdapterConfig);
41
+ /**
42
+ * Connect to Vercel AI endpoint (SSE doesn't require persistent connection)
43
+ */
44
+ connect(): Promise<void>;
45
+ /**
46
+ * Disconnect and terminate any ongoing request
47
+ */
48
+ disconnect(): void;
49
+ /**
50
+ * Terminate a running request on the backend
51
+ */
52
+ terminateRequest(requestId?: string): Promise<void>;
53
+ /**
54
+ * Send a message using Vercel AI Data Stream Protocol
55
+ */
56
+ sendMessage(message: ChatMessage, options?: {
57
+ tools?: ToolDefinition[];
58
+ threadId?: string;
59
+ metadata?: Record<string, unknown>;
60
+ }): Promise<void>;
61
+ /**
62
+ * Parse SSE stream from Vercel AI
63
+ */
64
+ private parseSSEStream;
65
+ /**
66
+ * Send tool result (not supported in Vercel AI adapter)
67
+ */
68
+ sendToolResult(_toolCallId: string, _result: ToolExecutionResult): Promise<void>;
69
+ /**
70
+ * Request permission (not supported in Vercel AI)
71
+ */
72
+ requestPermission(_permission: string): Promise<boolean>;
73
+ /**
74
+ * Stop generation
75
+ */
76
+ stopGeneration(): void;
77
+ }
@@ -0,0 +1,252 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { generateMessageId, createAssistantMessage } from '../types/message';
6
+ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
7
+ /**
8
+ * Vercel AI protocol adapter
9
+ * Uses HTTP POST with SSE streaming for responses
10
+ * Compatible with Pydantic AI's Vercel AI Data Stream Protocol
11
+ */
12
+ export class VercelAIAdapter extends BaseProtocolAdapter {
13
+ type = 'vercel-ai';
14
+ transport = 'sse';
15
+ vercelConfig;
16
+ abortController = null;
17
+ currentRequestId = null;
18
+ constructor(config) {
19
+ super(config);
20
+ this.vercelConfig = config;
21
+ }
22
+ /**
23
+ * Connect to Vercel AI endpoint (SSE doesn't require persistent connection)
24
+ */
25
+ async connect() {
26
+ this.setConnectionState('connecting');
27
+ // Vercel AI uses SSE, no persistent connection needed
28
+ // Just mark as connected
29
+ this.setConnectionState('connected');
30
+ }
31
+ /**
32
+ * Disconnect and terminate any ongoing request
33
+ */
34
+ disconnect() {
35
+ this.abortController?.abort();
36
+ this.abortController = null;
37
+ // Send terminate request to backend if we have a request ID
38
+ if (this.currentRequestId) {
39
+ this.terminateRequest(this.currentRequestId).catch(err => {
40
+ console.warn('[VercelAIAdapter] Failed to terminate request:', err);
41
+ });
42
+ }
43
+ this.setConnectionState('disconnected');
44
+ }
45
+ /**
46
+ * Terminate a running request on the backend
47
+ */
48
+ async terminateRequest(requestId) {
49
+ try {
50
+ // Derive the terminate endpoint from the base URL
51
+ const baseUrl = new URL(this.vercelConfig.baseUrl);
52
+ const terminateUrl = `${baseUrl.origin}/api/v1/vercel-ai/terminate`;
53
+ const response = await fetch(terminateUrl, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ },
58
+ body: JSON.stringify({
59
+ request_id: requestId || this.currentRequestId,
60
+ }),
61
+ });
62
+ if (!response.ok) {
63
+ console.warn(`[VercelAIAdapter] Terminate request failed: ${response.status}`);
64
+ }
65
+ else {
66
+ // Consume the response (terminate result)
67
+ await response.json();
68
+ }
69
+ }
70
+ catch {
71
+ // Ignore errors - request may have already completed
72
+ }
73
+ }
74
+ /**
75
+ * Send a message using Vercel AI Data Stream Protocol
76
+ */
77
+ async sendMessage(message, options) {
78
+ if (this.abortController) {
79
+ this.abortController.abort();
80
+ }
81
+ this.abortController = new AbortController();
82
+ // Generate request ID for tracking
83
+ const requestId = options?.threadId || generateMessageId();
84
+ this.currentRequestId = requestId;
85
+ try {
86
+ // Extract the message content as a string
87
+ const messageContent = typeof message.content === 'string'
88
+ ? message.content
89
+ : String(message.content);
90
+ // Build single message in Vercel AI SDK format
91
+ const vercelMessage = {
92
+ id: message.id,
93
+ role: message.role,
94
+ parts: [
95
+ {
96
+ type: 'text',
97
+ text: messageContent,
98
+ },
99
+ ],
100
+ };
101
+ // Build Vercel AI request
102
+ const requestBody = {
103
+ id: requestId, // Run ID for tracking
104
+ messages: [vercelMessage],
105
+ trigger: 'submit-message',
106
+ // Optional fields based on Pydantic AI's Vercel adapter
107
+ ...(options?.tools && { tools: options.tools }),
108
+ };
109
+ // Merge custom headers with defaults
110
+ const headers = {
111
+ 'Content-Type': 'application/json',
112
+ Accept: 'text/event-stream',
113
+ ...this.vercelConfig.headers,
114
+ };
115
+ // Add auth token if provided
116
+ if (this.vercelConfig.authToken) {
117
+ headers['Authorization'] = `token ${this.vercelConfig.authToken}`;
118
+ }
119
+ const response = await fetch(this.vercelConfig.baseUrl, {
120
+ method: 'POST',
121
+ headers,
122
+ body: JSON.stringify(requestBody),
123
+ signal: this.abortController.signal,
124
+ mode: this.vercelConfig.fetchOptions?.mode,
125
+ credentials: this.vercelConfig.fetchOptions?.credentials,
126
+ });
127
+ if (!response.ok) {
128
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
129
+ }
130
+ if (!response.body) {
131
+ throw new Error('Response body is null');
132
+ }
133
+ // Parse SSE stream
134
+ await this.parseSSEStream(response.body);
135
+ }
136
+ catch (error) {
137
+ if (error.name !== 'AbortError') {
138
+ console.error('[VercelAIAdapter] Send error:', error);
139
+ throw error;
140
+ }
141
+ }
142
+ finally {
143
+ this.abortController = null;
144
+ }
145
+ }
146
+ /**
147
+ * Parse SSE stream from Vercel AI
148
+ */
149
+ async parseSSEStream(stream) {
150
+ const reader = stream.getReader();
151
+ const decoder = new TextDecoder();
152
+ let buffer = '';
153
+ let currentMessageId = generateMessageId();
154
+ let accumulatedText = '';
155
+ try {
156
+ while (true) {
157
+ const { done, value } = await reader.read();
158
+ if (done) {
159
+ break;
160
+ }
161
+ buffer += decoder.decode(value, { stream: true });
162
+ const lines = buffer.split('\n');
163
+ buffer = lines.pop() || '';
164
+ for (const line of lines) {
165
+ if (!line.trim() || line.startsWith(':')) {
166
+ continue;
167
+ }
168
+ if (line.startsWith('data: ')) {
169
+ const data = line.slice(6);
170
+ if (data === '[DONE]') {
171
+ // Stream complete
172
+ if (accumulatedText) {
173
+ const message = createAssistantMessage(accumulatedText);
174
+ message.id = currentMessageId;
175
+ this.emit({
176
+ type: 'message',
177
+ message,
178
+ timestamp: new Date(),
179
+ });
180
+ }
181
+ break;
182
+ }
183
+ try {
184
+ const event = JSON.parse(data);
185
+ // Handle Vercel AI event types
186
+ // Server sends: {"type":"text-delta","delta":"Hello","id":"..."}
187
+ if (event.type === 'text-delta' && event.delta) {
188
+ accumulatedText += event.delta;
189
+ // Emit 'message' event with accumulated content for useChat
190
+ const message = createAssistantMessage(accumulatedText);
191
+ message.id = currentMessageId;
192
+ this.emit({
193
+ type: 'message',
194
+ message,
195
+ timestamp: new Date(),
196
+ });
197
+ }
198
+ else if (event.type === 'text-start') {
199
+ // New text block starting
200
+ currentMessageId = event.id || generateMessageId();
201
+ accumulatedText = '';
202
+ }
203
+ else if (event.type === 'finish' || event.type === 'end-step') {
204
+ if (accumulatedText) {
205
+ const message = createAssistantMessage(accumulatedText);
206
+ message.id = currentMessageId;
207
+ this.emit({
208
+ type: 'message',
209
+ message,
210
+ timestamp: new Date(),
211
+ });
212
+ }
213
+ }
214
+ else if (event.type === 'error') {
215
+ this.emit({
216
+ type: 'error',
217
+ error: new Error(event.error || 'Unknown error'),
218
+ timestamp: new Date(),
219
+ });
220
+ }
221
+ }
222
+ catch (parseError) {
223
+ console.error('[VercelAIAdapter] Failed to parse SSE data:', parseError);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ finally {
230
+ reader.releaseLock();
231
+ }
232
+ }
233
+ /**
234
+ * Send tool result (not supported in Vercel AI adapter)
235
+ */
236
+ async sendToolResult(_toolCallId, _result) {
237
+ throw new Error('Tool result not supported in Vercel AI adapter');
238
+ }
239
+ /**
240
+ * Request permission (not supported in Vercel AI)
241
+ */
242
+ async requestPermission(_permission) {
243
+ return true;
244
+ }
245
+ /**
246
+ * Stop generation
247
+ */
248
+ stopGeneration() {
249
+ this.abortController?.abort();
250
+ this.abortController = null;
251
+ }
252
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Protocol adapter exports for chat component.
3
+ *
4
+ * @module components/chat/protocols
5
+ */
6
+ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
7
+ export { AGUIAdapter, type AGUIAdapterConfig } from './AGUIAdapter';
8
+ export { A2AAdapter, type A2AAdapterConfig } from './A2AAdapter';
9
+ export { VercelAIAdapter, type VercelAIAdapterConfig } from './VercelAIAdapter';
10
+ export { ACPAdapter, type ACPAdapterConfig, type ACPSession, type ACPAgent, type ACPPendingPermission, } from './ACPAdapter';
11
+ export type { ProtocolAdapter, ProtocolAdapterConfig, ProtocolAdapterFactory, TransportType, ProtocolTransport, ProtocolConnectionState, ProtocolEvent, ProtocolEventType, ProtocolEventHandler, ProtocolMessageConverter, AgentCard, AGUI, A2A, ACP, } from '../types/protocol';
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Protocol adapter exports for chat component.
7
+ *
8
+ * @module components/chat/protocols
9
+ */
10
+ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
11
+ export { AGUIAdapter } from './AGUIAdapter';
12
+ export { A2AAdapter } from './A2AAdapter';
13
+ export { VercelAIAdapter } from './VercelAIAdapter';
14
+ export { ACPAdapter, } from './ACPAdapter';
@@ -0,0 +1,158 @@
1
+ import type { ChatMessage, ChatThread, ToolRegistryEntry, ToolDefinition, ChatExtension, ExtensionRegistryEntry, ChatMiddleware, ToolCallStatus } from '../types';
2
+ import type { InferenceProvider } from '../types/inference';
3
+ import type { ProtocolAdapter } from '../types/protocol';
4
+ import type { ToolExecutor } from '../tools/ToolExecutor';
5
+ import type { MiddlewarePipeline } from '../middleware/MiddlewarePipeline';
6
+ import type { ExtensionRegistry } from '../extensions/ExtensionRegistry';
7
+ /**
8
+ * Chat configuration options
9
+ */
10
+ export interface ChatConfig {
11
+ /** Default inference provider type */
12
+ defaultProvider?: 'datalayer' | 'openai' | 'anthropic' | 'self-hosted';
13
+ /** Default protocol type */
14
+ defaultProtocol?: 'ag-ui' | 'a2a' | 'acp' | 'mcp-ui';
15
+ /** API base URL for inference */
16
+ apiBaseUrl?: string;
17
+ /** API key for inference */
18
+ apiKey?: string;
19
+ /** Default model to use */
20
+ defaultModel?: string;
21
+ /** Enable tool approval by default */
22
+ requireToolApproval?: boolean;
23
+ /** Enable streaming by default */
24
+ enableStreaming?: boolean;
25
+ /** Enable debug logging */
26
+ debug?: boolean;
27
+ /** Session ID for persistence */
28
+ sessionId?: string;
29
+ /** Enable local storage persistence */
30
+ persistToLocalStorage?: boolean;
31
+ /** Custom headers for API requests */
32
+ customHeaders?: Record<string, string>;
33
+ }
34
+ /**
35
+ * Default configuration
36
+ */
37
+ export declare const defaultChatConfig: ChatConfig;
38
+ /**
39
+ * Tool call tracking state
40
+ */
41
+ export interface ToolCallState {
42
+ toolCallId: string;
43
+ toolName: string;
44
+ args: Record<string, unknown>;
45
+ status: ToolCallStatus;
46
+ result?: unknown;
47
+ error?: string;
48
+ startedAt: Date;
49
+ completedAt?: Date;
50
+ }
51
+ /**
52
+ * Chat store state
53
+ */
54
+ interface ChatState {
55
+ config: ChatConfig;
56
+ ready: boolean;
57
+ inferenceProvider: InferenceProvider | null;
58
+ protocolAdapter: ProtocolAdapter | null;
59
+ toolExecutor: ToolExecutor | null;
60
+ middlewarePipeline: MiddlewarePipeline | null;
61
+ extensionRegistry: ExtensionRegistry | null;
62
+ messages: ChatMessage[];
63
+ isLoading: boolean;
64
+ isStreaming: boolean;
65
+ streamingMessageId: string | null;
66
+ currentThreadId: string | null;
67
+ threads: Map<string, ChatThread>;
68
+ tools: Map<string, ToolRegistryEntry>;
69
+ pendingToolCalls: Map<string, ToolCallState>;
70
+ extensions: Map<string, ExtensionRegistryEntry>;
71
+ middlewares: ChatMiddleware[];
72
+ isOpen: boolean;
73
+ error: Error | null;
74
+ suggestions: string[];
75
+ }
76
+ /**
77
+ * Chat store actions
78
+ */
79
+ interface ChatActions {
80
+ setConfig: (config: Partial<ChatConfig>) => void;
81
+ setReady: (ready: boolean) => void;
82
+ setInferenceProvider: (provider: InferenceProvider | null) => void;
83
+ setProtocolAdapter: (adapter: ProtocolAdapter | null) => void;
84
+ setToolExecutor: (executor: ToolExecutor | null) => void;
85
+ setMiddlewarePipeline: (pipeline: MiddlewarePipeline | null) => void;
86
+ setExtensionRegistry: (registry: ExtensionRegistry | null) => void;
87
+ addMessage: (message: ChatMessage) => void;
88
+ updateMessage: (messageId: string, updates: Partial<ChatMessage>) => void;
89
+ deleteMessage: (messageId: string) => void;
90
+ setMessages: (messages: ChatMessage[]) => void;
91
+ clearMessages: () => void;
92
+ startStreaming: (messageId: string) => void;
93
+ appendToStream: (messageId: string, content: string) => void;
94
+ stopStreaming: () => void;
95
+ setLoading: (loading: boolean) => void;
96
+ setError: (error: Error | null) => void;
97
+ setCurrentThread: (threadId: string | null) => void;
98
+ createThread: (title?: string) => string;
99
+ deleteThread: (threadId: string) => void;
100
+ registerTool: (definition: ToolDefinition) => void;
101
+ unregisterTool: (name: string) => void;
102
+ getTool: (name: string) => ToolRegistryEntry | undefined;
103
+ getTools: () => ToolDefinition[];
104
+ startToolCall: (toolCallId: string, toolName: string, args: Record<string, unknown>) => void;
105
+ updateToolCallStatus: (toolCallId: string, status: ToolCallStatus, result?: unknown, error?: string) => void;
106
+ getPendingToolCalls: () => ToolCallState[];
107
+ registerExtension: (extension: ChatExtension, options?: {
108
+ enabled?: boolean;
109
+ }) => void;
110
+ unregisterExtension: (name: string) => void;
111
+ enableExtension: (name: string) => void;
112
+ disableExtension: (name: string) => void;
113
+ getExtensions: <T extends ChatExtension>(type?: T['type']) => T[];
114
+ addMiddleware: (middleware: ChatMiddleware) => void;
115
+ removeMiddleware: (name: string) => void;
116
+ getMiddlewares: () => ChatMiddleware[];
117
+ setOpen: (open: boolean) => void;
118
+ toggleOpen: () => void;
119
+ setSuggestions: (suggestions: string[]) => void;
120
+ reset: () => void;
121
+ }
122
+ /**
123
+ * Combined store type
124
+ */
125
+ export type ChatStore = ChatState & ChatActions;
126
+ /**
127
+ * Create the chat store
128
+ */
129
+ export declare const useChatStore: import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<ChatStore>, "setState"> & {
130
+ setState<A extends string | {
131
+ type: string;
132
+ }>(partial: ChatStore | Partial<ChatStore> | ((state: ChatStore) => ChatStore | Partial<ChatStore>), replace?: boolean | undefined, action?: A | undefined): void;
133
+ }, "subscribe"> & {
134
+ subscribe: {
135
+ (listener: (selectedState: ChatStore, previousSelectedState: ChatStore) => void): () => void;
136
+ <U>(selector: (state: ChatStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
137
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
138
+ fireImmediately?: boolean;
139
+ } | undefined): () => void;
140
+ };
141
+ }>;
142
+ /**
143
+ * Selector hooks for specific state slices
144
+ */
145
+ export declare const useChatMessages: () => ChatMessage[];
146
+ export declare const useChatLoading: () => boolean;
147
+ export declare const useChatStreaming: () => {
148
+ isStreaming: boolean;
149
+ streamingMessageId: string | null;
150
+ };
151
+ export declare const useChatError: () => Error | null;
152
+ export declare const useChatTools: () => ToolDefinition[];
153
+ export declare const useChatOpen: () => boolean;
154
+ export declare const useChatConfig: () => ChatConfig;
155
+ export declare const useChatReady: () => boolean;
156
+ export declare const useChatInferenceProvider: () => InferenceProvider | null;
157
+ export declare const useChatExtensionRegistry: () => ExtensionRegistry | null;
158
+ export {};