@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,51 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * React hooks for agent-runtimes notebook tool registration.
7
+ * Provides: useNotebookTools hook for ChatFloating integration.
8
+ *
9
+ * @module tools/adapters/agent-runtimes/notebookHooks
10
+ */
11
+ import { useMemo } from 'react';
12
+ import { notebookStore, DefaultExecutor, notebookToolDefinitions, notebookToolOperations, } from '@datalayer/jupyter-react';
13
+ import { createAllAgentRuntimesTools, } from './AgentRuntimesToolAdapter';
14
+ // Hook wrapper to get notebook store state
15
+ const useNotebookStore = () => notebookStore.getState();
16
+ /**
17
+ * Hook that creates agent-runtimes tools for notebook operations.
18
+ * Returns stable tools array that won't cause re-renders.
19
+ *
20
+ * @param documentId - Document ID (notebook identifier)
21
+ * @param contextOverrides - Optional context overrides (format, extras, etc.)
22
+ * @returns Agent-runtimes tools array for ChatFloating
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Default context (toon format for AI)
27
+ * const tools = useNotebookTools("my-notebook-id");
28
+ *
29
+ * // Use with ChatFloating
30
+ * <ChatFloating
31
+ * endpoint="http://localhost:8765/api/v1/ag-ui/agent/"
32
+ * tools={tools}
33
+ * />
34
+ * ```
35
+ */
36
+ export function useNotebookTools(documentId, contextOverrides) {
37
+ const notebookStoreState = useNotebookStore();
38
+ // Create DefaultExecutor (stable reference)
39
+ // Only recreate when documentId changes, not on every state update
40
+ const executor = useMemo(() => new DefaultExecutor(documentId, notebookStoreState), [documentId]);
41
+ // Create stable context object with useMemo
42
+ // Defaults: format='toon' for conversational AI responses
43
+ const context = useMemo(() => ({
44
+ documentId,
45
+ executor,
46
+ format: 'toon',
47
+ ...contextOverrides,
48
+ }), [documentId, executor, contextOverrides]);
49
+ // Create and return tools (stable reference)
50
+ return useMemo(() => createAllAgentRuntimesTools(notebookToolDefinitions, notebookToolOperations, context), [context]);
51
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Converts unified tool definitions to CopilotKit's useCopilotAction format.
3
+ *
4
+ * @see https://docs.copilotkit.ai/langgraph/frontend-actions
5
+ * @module tools/adapters/copilotkit/CopilotKitToolAdapter
6
+ */
7
+ import type { ToolDefinition, ToolOperation, ToolExecutionContext } from '@datalayer/jupyter-react';
8
+ /**
9
+ * Type signature for CopilotKit's useFrontendTool hook
10
+ * This is shared across both notebook and lexical adapters
11
+ */
12
+ export type UseFrontendToolFn = (tool: {
13
+ name: string;
14
+ description: string;
15
+ parameters: any;
16
+ handler: (params: any) => Promise<string>;
17
+ render?: (props: any) => any;
18
+ }, dependencies?: any[]) => void;
19
+ /**
20
+ * Component to register a single action with CopilotKit
21
+ * Must be used inside CopilotKit context
22
+ */
23
+ export declare function ActionRegistrar({ action, useFrontendTool, }: {
24
+ action: any;
25
+ useFrontendTool: UseFrontendToolFn;
26
+ }): null;
27
+ /**
28
+ * CopilotKit parameter definition (array format, not JSON Schema)
29
+ */
30
+ export interface CopilotKitParameter {
31
+ name: string;
32
+ type?: 'string' | 'number' | 'boolean' | 'object' | 'object[]';
33
+ description?: string;
34
+ required?: boolean;
35
+ attributes?: CopilotKitParameter[];
36
+ }
37
+ /**
38
+ * CopilotKit action definition (matches useCopilotAction interface)
39
+ */
40
+ export interface CopilotKitAction {
41
+ /** Action name */
42
+ name: string;
43
+ /** Description for AI model */
44
+ description: string;
45
+ /** Parameters array (NOT JSON Schema) */
46
+ parameters: CopilotKitParameter[];
47
+ /** Handler function */
48
+ handler: (params: unknown) => Promise<string>;
49
+ /** Optional custom UI renderer */
50
+ render?: (props: {
51
+ status: string;
52
+ args: unknown;
53
+ result: unknown;
54
+ }) => React.ReactNode;
55
+ }
56
+ /**
57
+ * Converts unified tool definition to CopilotKit action format
58
+ *
59
+ * @param definition - Tool definition
60
+ * @param operation - Core operation
61
+ * @param context - Execution context (documentId + executor)
62
+ * @returns CopilotKit action
63
+ */
64
+ export declare function createCopilotKitAction(definition: ToolDefinition, operation: ToolOperation<unknown, unknown>, context: ToolExecutionContext): CopilotKitAction;
65
+ /**
66
+ * Creates CopilotKit actions from all tool definitions
67
+ *
68
+ * @param definitions - Tool definitions
69
+ * @param operations - Core operations registry
70
+ * @param context - Execution context (documentId + executor)
71
+ * @returns CopilotKit actions
72
+ */
73
+ export declare function createAllCopilotKitActions(definitions: ToolDefinition[], operations: Record<string, ToolOperation<unknown, unknown>>, context: ToolExecutionContext): CopilotKitAction[];
@@ -0,0 +1,244 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { OperationRunner } from '@datalayer/jupyter-react';
6
+ /**
7
+ * Component to register a single action with CopilotKit
8
+ * Must be used inside CopilotKit context
9
+ */
10
+ export function ActionRegistrar({ action, useFrontendTool, }) {
11
+ useFrontendTool(action, [action]);
12
+ return null;
13
+ }
14
+ /**
15
+ * Deduplication cache to prevent executing the same operation multiple times
16
+ * Maps operation signature (hash of tool + params) to timestamp
17
+ */
18
+ const executionCache = new Map();
19
+ const CACHE_TTL_MS = 2000; // 2 seconds - operations within this window are considered duplicates
20
+ /**
21
+ * Generate a unique signature for an operation call
22
+ */
23
+ function getOperationSignature(toolName, params) {
24
+ return `${toolName}:${JSON.stringify(params)}`;
25
+ }
26
+ /**
27
+ * Check if this operation was recently executed
28
+ */
29
+ function isRecentDuplicate(toolName, params) {
30
+ const signature = getOperationSignature(toolName, params);
31
+ const lastExecution = executionCache.get(signature);
32
+ if (lastExecution) {
33
+ const timeSinceExecution = Date.now() - lastExecution;
34
+ if (timeSinceExecution < CACHE_TTL_MS) {
35
+ console.log(`[copilotkit] 🚫 DUPLICATE DETECTED - Skipping execution (${timeSinceExecution}ms since last call)`);
36
+ return true;
37
+ }
38
+ }
39
+ // Clean up old entries while we're here
40
+ for (const [key, timestamp] of executionCache.entries()) {
41
+ if (Date.now() - timestamp > CACHE_TTL_MS * 2) {
42
+ executionCache.delete(key);
43
+ }
44
+ }
45
+ // Mark this execution
46
+ executionCache.set(signature, Date.now());
47
+ return false;
48
+ }
49
+ /**
50
+ * Parses array parameters from CopilotKit's string format to actual arrays.
51
+ *
52
+ * CopilotKit doesn't have native support for primitive arrays, so it sends them
53
+ * as JSON strings (e.g., "[1, 2, 3]"). This function parses those strings back
54
+ * into actual arrays based on the schema definition.
55
+ *
56
+ * @param params - Raw parameters from CopilotKit
57
+ * @param jsonSchema - JSON Schema definition to identify array parameters
58
+ * @returns Parsed parameters with arrays converted from strings
59
+ */
60
+ function parseArrayParameters(params, jsonSchema) {
61
+ if (typeof params !== 'object' || params === null) {
62
+ return params;
63
+ }
64
+ const parsedParams = { ...params };
65
+ // Iterate through schema properties to find array types
66
+ for (const [name, schema] of Object.entries(jsonSchema.properties || {})) {
67
+ const propSchema = schema;
68
+ // If this property is an array type and the value is a string, parse it
69
+ if (propSchema.type === 'array' && typeof parsedParams[name] === 'string') {
70
+ try {
71
+ const parsed = JSON.parse(parsedParams[name]);
72
+ // Validate it's actually an array after parsing
73
+ if (Array.isArray(parsed)) {
74
+ parsedParams[name] = parsed;
75
+ }
76
+ }
77
+ catch (error) {
78
+ // If parsing fails, log warning but keep original value
79
+ console.warn(`[copilotkit] Failed to parse array parameter "${name}":`, error);
80
+ }
81
+ }
82
+ }
83
+ return parsedParams;
84
+ }
85
+ /**
86
+ * Converts JSON Schema to CopilotKit parameter array format
87
+ *
88
+ * @param jsonSchema - JSON Schema parameters object
89
+ * @returns CopilotKit parameters array
90
+ */
91
+ function jsonSchemaToParameters(jsonSchema) {
92
+ const parameters = [];
93
+ const required = jsonSchema.required || [];
94
+ for (const [name, schema] of Object.entries(jsonSchema.properties || {})) {
95
+ const propSchema = schema;
96
+ // Map JSON Schema type to CopilotKit type
97
+ let copilotType = 'string';
98
+ if (propSchema.type === 'array') {
99
+ // Handle array types based on items type
100
+ const itemsType = propSchema.items?.type;
101
+ if (itemsType === 'object') {
102
+ copilotType = 'object[]';
103
+ }
104
+ else {
105
+ // For primitive arrays (number[], string[], etc.)
106
+ // CopilotKit doesn't have explicit support, but we can use the description
107
+ // to clarify and handle parsing in the handler
108
+ copilotType = 'string'; // Will be parsed as JSON array string
109
+ // Enhance description to clarify it's an array
110
+ propSchema.description =
111
+ `${propSchema.description || ''} (JSON array of ${itemsType || 'values'})`.trim();
112
+ }
113
+ }
114
+ else {
115
+ // Original logic for non-array types
116
+ copilotType =
117
+ propSchema.type || 'string';
118
+ }
119
+ const param = {
120
+ name,
121
+ type: copilotType,
122
+ description: propSchema.description,
123
+ required: required.includes(name),
124
+ };
125
+ // Handle nested object properties (for object types)
126
+ if (propSchema.type === 'object' && propSchema.properties) {
127
+ // Cast to proper type for recursive call
128
+ param.attributes = jsonSchemaToParameters({
129
+ type: 'object',
130
+ properties: propSchema.properties, // eslint-disable-line @typescript-eslint/no-explicit-any
131
+ required: propSchema.required || [],
132
+ });
133
+ }
134
+ parameters.push(param);
135
+ }
136
+ console.log('[copilotkit] Converted parameters:', JSON.stringify(parameters, null, 2));
137
+ return parameters;
138
+ }
139
+ /**
140
+ * Converts unified tool definition to CopilotKit action format
141
+ *
142
+ * @param definition - Tool definition
143
+ * @param operation - Core operation
144
+ * @param context - Execution context (documentId + executor)
145
+ * @returns CopilotKit action
146
+ */
147
+ export function createCopilotKitAction(definition, operation, context) {
148
+ // Create runner instance for this action
149
+ const runner = new OperationRunner();
150
+ const action = {
151
+ name: definition.toolReferenceName || definition.name,
152
+ description: definition.description,
153
+ parameters: jsonSchemaToParameters(definition.parameters),
154
+ // CRITICAL FIX: Set to true to enable CopilotKit's deduplication mechanism
155
+ // See https://github.com/CopilotKit/CopilotKit/issues/2310
156
+ // Without this, actions get re-executed cumulatively (A → A,B → A,B,C)
157
+ _isRenderAndWait: true,
158
+ handler: async (params) => {
159
+ console.log(`[copilotkit] ========== HANDLER CALLED ==========`);
160
+ console.log(`[copilotkit] Tool: ${definition.name}`);
161
+ console.log(`[copilotkit] Operation: ${definition.operation}`);
162
+ console.log(`[copilotkit] Params:`, params);
163
+ console.log(`[copilotkit] Context:`, context);
164
+ // Check for duplicate execution
165
+ const signature = `${definition.name}:${JSON.stringify(params)}`;
166
+ console.log(`[copilotkit] 🔍 Signature:`, signature.substring(0, 150));
167
+ if (isRecentDuplicate(definition.name, params)) {
168
+ console.log(`[copilotkit] 🚫 DUPLICATE DETECTED - Returning early`);
169
+ return 'Operation already executed recently (duplicate detected and skipped)';
170
+ }
171
+ console.log(`[copilotkit] ✅ NOT a duplicate - Proceeding with execution`);
172
+ try {
173
+ // Parse array parameters that CopilotKit sends as JSON strings
174
+ // CopilotKit doesn't have native support for primitive arrays, so they're sent as strings
175
+ const parsedParams = parseArrayParameters(params, definition.parameters);
176
+ console.log(`[copilotkit] Calling runner.execute with TOON format...`);
177
+ console.log(`[copilotkit] Operation name:`, operation);
178
+ console.log(`[copilotkit] Parsed params being passed:`, JSON.stringify(parsedParams, null, 2));
179
+ console.log(`[copilotkit] Context being passed:`, JSON.stringify(context, null, 2));
180
+ // Use OperationRunner to execute operation with TOON format
181
+ // TOON format returns human/LLM-readable string (default)
182
+ const result = await runner.execute(operation, parsedParams, {
183
+ ...context,
184
+ format: 'toon', // CopilotKit expects string responses
185
+ });
186
+ console.log(`[copilotkit] Operation result:`, result);
187
+ // Result is already a string (TOON format)
188
+ if (typeof result === 'string') {
189
+ return result;
190
+ }
191
+ // Fallback: if somehow we got an object (shouldn't happen with format='toon')
192
+ if (typeof result === 'object' && result !== null) {
193
+ const resultObj = result;
194
+ // Return success message if available
195
+ if (resultObj.message) {
196
+ return resultObj.message;
197
+ }
198
+ // Return error if failed
199
+ if (resultObj.success === false && resultObj.error) {
200
+ return `❌ Error: ${resultObj.error}`;
201
+ }
202
+ // Otherwise format as JSON
203
+ return JSON.stringify(result, null, 2);
204
+ }
205
+ return String(result);
206
+ }
207
+ catch (error) {
208
+ console.error(`[copilotkit] ❌ ERROR in handler:`, error);
209
+ console.error(`[copilotkit] Error stack:`, error instanceof Error ? error.stack : 'N/A');
210
+ const errorMessage = error instanceof Error ? error.message : String(error);
211
+ return `❌ Error: ${errorMessage}`;
212
+ }
213
+ },
214
+ // Optional: Custom render function for copilotkit
215
+ // Note: config supports platform-specific extensions, cast to any for flexibility
216
+ render: definition.config?.copilotkit?.renderingHints?.customRender
217
+ ? definition.config.copilotkit.renderingHints
218
+ .customRender
219
+ : undefined,
220
+ };
221
+ return action;
222
+ }
223
+ /**
224
+ * Creates CopilotKit actions from all tool definitions
225
+ *
226
+ * @param definitions - Tool definitions
227
+ * @param operations - Core operations registry
228
+ * @param context - Execution context (documentId + executor)
229
+ * @returns CopilotKit actions
230
+ */
231
+ export function createAllCopilotKitActions(definitions, operations, context) {
232
+ const actions = [];
233
+ for (const definition of definitions) {
234
+ const operation = operations[definition.operation];
235
+ if (!operation) {
236
+ console.warn(`[copilotkit Tools] No operation found for ${definition.name} (operation: ${definition.operation})`);
237
+ continue;
238
+ }
239
+ const action = createCopilotKitAction(definition, operation, context);
240
+ actions.push(action);
241
+ }
242
+ console.log(`[copilotkit Tools] Created ${actions.length} CopilotKit actions`);
243
+ return actions;
244
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * copilotkit CopilotKit adapter module.
3
+ * Exports: CopilotKit adapters, hooks (useNotebookToolActions, useLexicalToolActions).
4
+ * Note: DefaultExecutor is imported from datalayer-react/tools/core/executor
5
+ *
6
+ * @module tools/adapters/copilotkit
7
+ */
8
+ export * from './CopilotKitToolAdapter';
9
+ export * from './notebookHooks';
10
+ export * from './lexicalHooks';
@@ -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
+ * copilotkit CopilotKit adapter module.
7
+ * Exports: CopilotKit adapters, hooks (useNotebookToolActions, useLexicalToolActions).
8
+ * Note: DefaultExecutor is imported from datalayer-react/tools/core/executor
9
+ *
10
+ * @module tools/adapters/copilotkit
11
+ */
12
+ export * from './CopilotKitToolAdapter';
13
+ export * from './notebookHooks';
14
+ export * from './lexicalHooks';
@@ -0,0 +1,27 @@
1
+ import type { ToolExecutionContext } from '@datalayer/jupyter-react';
2
+ import { createAllCopilotKitActions, ActionRegistrar, type UseFrontendToolFn } from './CopilotKitToolAdapter';
3
+ /**
4
+ * Hook that creates CopilotKit actions for lexical tools.
5
+ * Returns stable actions array that won't cause re-renders.
6
+ *
7
+ * @param documentId - Document ID (lexical document identifier)
8
+ * @param contextOverrides - Optional context overrides (format, extras, etc.)
9
+ * @returns CopilotKit actions
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Default context (toon format for AI)
14
+ * const actions = useLexicalToolActions("doc-123");
15
+ *
16
+ * // Custom format
17
+ * const actions = useLexicalToolActions("doc-123", { format: 'json' });
18
+ *
19
+ * // With extras
20
+ * const actions = useLexicalToolActions("doc-123", {
21
+ * format: 'toon',
22
+ * extras: { userId: '123', theme: 'dark' }
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function useLexicalToolActions(documentId: string, contextOverrides?: Partial<Omit<ToolExecutionContext, 'executor' | 'documentId'>>): ReturnType<typeof createAllCopilotKitActions>;
27
+ export { ActionRegistrar, type UseFrontendToolFn };
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * React hooks and components for copilotkit (CopilotKit) lexical tool registration.
7
+ * Provides: useLexicalToolActions, ActionRegistrar, UseFrontendToolFn.
8
+ *
9
+ * @module tools/adapters/copilotkit/lexicalHooks
10
+ */
11
+ import { useMemo } from 'react';
12
+ import { useLexicalStore, DefaultExecutor as LexicalDefaultExecutor, lexicalToolDefinitions, lexicalToolOperations, } from '@datalayer/jupyter-lexical';
13
+ import { createAllCopilotKitActions, ActionRegistrar, } from './CopilotKitToolAdapter';
14
+ /**
15
+ * Hook that creates CopilotKit actions for lexical tools.
16
+ * Returns stable actions array that won't cause re-renders.
17
+ *
18
+ * @param documentId - Document ID (lexical document identifier)
19
+ * @param contextOverrides - Optional context overrides (format, extras, etc.)
20
+ * @returns CopilotKit actions
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Default context (toon format for AI)
25
+ * const actions = useLexicalToolActions("doc-123");
26
+ *
27
+ * // Custom format
28
+ * const actions = useLexicalToolActions("doc-123", { format: 'json' });
29
+ *
30
+ * // With extras
31
+ * const actions = useLexicalToolActions("doc-123", {
32
+ * format: 'toon',
33
+ * extras: { userId: '123', theme: 'dark' }
34
+ * });
35
+ * ```
36
+ */
37
+ export function useLexicalToolActions(documentId, contextOverrides) {
38
+ // Call useLexicalStore() with no selector to get state object (matches notebook pattern)
39
+ const lexicalStoreState = useLexicalStore();
40
+ // Create LexicalDefaultExecutor (stable reference)
41
+ // Only recreate when documentId changes, not on every state update
42
+ // The executor holds a reference to the store which is always current
43
+ const executor = useMemo(() => new LexicalDefaultExecutor(documentId, lexicalStoreState), [documentId]);
44
+ // Create stable context object with useMemo
45
+ // Defaults: format='toon' for conversational AI responses
46
+ // Can be overridden with contextOverrides parameter
47
+ const context = useMemo(() => ({
48
+ documentId,
49
+ executor,
50
+ format: 'toon', // Default format
51
+ ...contextOverrides, // Override with user-provided values
52
+ }), [documentId, executor, contextOverrides]);
53
+ // Create and return CopilotKit actions (stable reference)
54
+ // Only re-create when context changes (i.e., when documentId or contextOverrides change)
55
+ const actions = useMemo(() => createAllCopilotKitActions(lexicalToolDefinitions, lexicalToolOperations, context), [context]);
56
+ return actions;
57
+ }
58
+ // Re-export shared types and components for convenience
59
+ export { ActionRegistrar };
@@ -0,0 +1,27 @@
1
+ import type { ToolExecutionContext } from '@datalayer/jupyter-react';
2
+ import { createAllCopilotKitActions, ActionRegistrar, type UseFrontendToolFn } from './CopilotKitToolAdapter';
3
+ /**
4
+ * Hook that creates CopilotKit actions for notebook tools.
5
+ * Returns stable actions array that won't cause re-renders.
6
+ *
7
+ * @param documentId - Document ID (notebook identifier)
8
+ * @param contextOverrides - Optional context overrides (format, extras, etc.)
9
+ * @returns CopilotKit actions
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Default context (toon format for AI)
14
+ * const actions = useNotebookToolActions("my-notebook-id");
15
+ *
16
+ * // Custom format
17
+ * const actions = useNotebookToolActions("my-notebook-id", { format: 'json' });
18
+ *
19
+ * // With extras
20
+ * const actions = useNotebookToolActions("my-notebook-id", {
21
+ * format: 'toon',
22
+ * extras: { userId: '123', theme: 'dark' }
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function useNotebookToolActions(documentId: string, contextOverrides?: Partial<Omit<ToolExecutionContext, 'executor' | 'documentId'>>): ReturnType<typeof createAllCopilotKitActions>;
27
+ export { ActionRegistrar, type UseFrontendToolFn };
@@ -0,0 +1,58 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * React hooks and components for copilotkit (CopilotKit) notebook tool registration.
7
+ * Provides: useNotebookToolActions, ActionRegistrar, UseFrontendToolFn.
8
+ *
9
+ * @module tools/adapters/copilotkit/notebookHooks
10
+ */
11
+ import { useMemo } from 'react';
12
+ import { notebookStore, DefaultExecutor, notebookToolDefinitions, notebookToolOperations, } from '@datalayer/jupyter-react';
13
+ import { createAllCopilotKitActions, ActionRegistrar, } from './CopilotKitToolAdapter';
14
+ // Hook wrapper to get notebook store state
15
+ const useNotebookStore = () => notebookStore.getState();
16
+ /**
17
+ * Hook that creates CopilotKit actions for notebook tools.
18
+ * Returns stable actions array that won't cause re-renders.
19
+ *
20
+ * @param documentId - Document ID (notebook identifier)
21
+ * @param contextOverrides - Optional context overrides (format, extras, etc.)
22
+ * @returns CopilotKit actions
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Default context (toon format for AI)
27
+ * const actions = useNotebookToolActions("my-notebook-id");
28
+ *
29
+ * // Custom format
30
+ * const actions = useNotebookToolActions("my-notebook-id", { format: 'json' });
31
+ *
32
+ * // With extras
33
+ * const actions = useNotebookToolActions("my-notebook-id", {
34
+ * format: 'toon',
35
+ * extras: { userId: '123', theme: 'dark' }
36
+ * });
37
+ * ```
38
+ */
39
+ export function useNotebookToolActions(documentId, contextOverrides) {
40
+ const notebookStore = useNotebookStore();
41
+ // Create DefaultExecutor (stable reference)
42
+ // Only recreate when documentId changes, not on every state update
43
+ // The executor holds a reference to the store which is always current
44
+ const executor = useMemo(() => new DefaultExecutor(documentId, notebookStore), [documentId]);
45
+ // Create stable context object with useMemo
46
+ // Defaults: format='toon' for conversational AI responses
47
+ // Can be overridden with contextOverrides parameter
48
+ const context = useMemo(() => ({
49
+ documentId,
50
+ executor,
51
+ format: 'toon', // Default format
52
+ ...contextOverrides, // Override with user-provided values
53
+ }), [documentId, executor, contextOverrides]);
54
+ // Create and return CopilotKit actions (stable reference)
55
+ return useMemo(() => createAllCopilotKitActions(notebookToolDefinitions, notebookToolOperations, context), [context]);
56
+ }
57
+ // Re-export shared types and components for convenience
58
+ export { ActionRegistrar };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export {};
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Platform-agnostic tools for notebook and lexical integration with AI frameworks
3
+ *
4
+ * @module tools
5
+ */
6
+ export * from './adapters/copilotkit';
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Platform-agnostic tools for notebook and lexical integration with AI frameworks
7
+ *
8
+ * @module tools
9
+ */
10
+ // Export adapters
11
+ export * from './adapters/copilotkit';
12
+ // TODO: Re-export tool types from jupyter-react when available
13
+ // export type {
14
+ // ToolDefinition,
15
+ // ToolConfig,
16
+ // ToolOperation,
17
+ // ToolExecutionContext,
18
+ // } from '@datalayer/jupyter-react';
package/lib/types.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export interface ConversationEntry {
2
+ id: string;
3
+ firstMessage?: string;
4
+ timestamp: number;
5
+ }
package/lib/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export {};