@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,379 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * ChatInlinePlugin - Lexical plugin for inline AI chat.
8
+ *
9
+ * This plugin displays a floating AI chat interface when text is selected
10
+ * in the Lexical editor. It provides AI-powered text manipulation features
11
+ * like improve, summarize, translate, etc.
12
+ *
13
+ * Features:
14
+ * - Detects text selection in the editor
15
+ * - Shows floating ChatInline component near the selection
16
+ * - Supports custom prompts and pre-defined AI actions
17
+ * - Can replace selection, insert inline, or insert below
18
+ * - Uses floating-ui for positioning
19
+ *
20
+ * @module lexical/ChatInlinePlugin
21
+ */
22
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from 'react';
23
+ import { createPortal } from 'react-dom';
24
+ import { $getSelection, $isRangeSelection, $createParagraphNode, $createTextNode, TextNode, COMMAND_PRIORITY_LOW, createCommand, FORMAT_TEXT_COMMAND, } from 'lexical';
25
+ import { $isLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
26
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
27
+ import { autoUpdate, hide, limitShift, offset, shift, size, useFloating, } from '@floating-ui/react-dom';
28
+ import { Box, IconButton } from '@primer/react';
29
+ import { BoldIcon, ItalicIcon, StrikethroughIcon, CodeIcon, LinkIcon, SparkleFillIcon, } from '@primer/octicons-react';
30
+ import { ChatInline, } from '../components/chat/components/ChatInline';
31
+ // Margin from editor edges
32
+ const MARGIN_X = 32;
33
+ /**
34
+ * Lexical commands for selection preservation
35
+ */
36
+ export const SAVE_SELECTION_COMMAND = createCommand('SAVE_SELECTION_COMMAND');
37
+ export const RESTORE_SELECTION_COMMAND = createCommand('RESTORE_SELECTION_COMMAND');
38
+ /**
39
+ * Hook to preserve selection when interacting with the floating toolbar
40
+ */
41
+ function usePreserveSelection(editor) {
42
+ const savedSelectionRef = useRef(null);
43
+ useEffect(() => {
44
+ const unregisterSave = editor.registerCommand(SAVE_SELECTION_COMMAND, () => {
45
+ const selection = $getSelection();
46
+ if ($isRangeSelection(selection)) {
47
+ savedSelectionRef.current = selection.clone();
48
+ }
49
+ return true;
50
+ }, COMMAND_PRIORITY_LOW);
51
+ const unregisterRestore = editor.registerCommand(RESTORE_SELECTION_COMMAND, () => {
52
+ if (savedSelectionRef.current) {
53
+ editor.update(() => {
54
+ const selection = savedSelectionRef.current;
55
+ if (selection) {
56
+ // Note: We create a new reference to avoid stale selection issues
57
+ try {
58
+ const anchor = selection.anchor;
59
+ const focus = selection.focus;
60
+ const newSelection = $getSelection();
61
+ if ($isRangeSelection(newSelection)) {
62
+ newSelection.anchor.set(anchor.key, anchor.offset, anchor.type);
63
+ newSelection.focus.set(focus.key, focus.offset, focus.type);
64
+ }
65
+ }
66
+ catch {
67
+ // Selection nodes may have been removed
68
+ }
69
+ }
70
+ });
71
+ }
72
+ return true;
73
+ }, COMMAND_PRIORITY_LOW);
74
+ return () => {
75
+ unregisterSave();
76
+ unregisterRestore();
77
+ };
78
+ }, [editor]);
79
+ return {
80
+ saveSelection: () => editor.dispatchCommand(SAVE_SELECTION_COMMAND, null),
81
+ restoreSelection: () => editor.dispatchCommand(RESTORE_SELECTION_COMMAND, null),
82
+ };
83
+ }
84
+ /**
85
+ * Hook to get current text selection range
86
+ * Uses native DOM selection for immediate response during drag operations
87
+ */
88
+ function useRange() {
89
+ const [editor] = useLexicalComposerContext();
90
+ const [range, setRange] = useState(null);
91
+ useEffect(() => {
92
+ // Function to update range from DOM selection
93
+ const updateRange = () => {
94
+ const domSelection = window.getSelection();
95
+ // Check if selection exists and is within the editor
96
+ if (!domSelection ||
97
+ domSelection.rangeCount === 0 ||
98
+ !editor._rootElement) {
99
+ setRange(null);
100
+ return;
101
+ }
102
+ const domRange = domSelection.getRangeAt(0);
103
+ // Check if selection is within the editor
104
+ if (!editor._rootElement.contains(domRange.commonAncestorContainer)) {
105
+ setRange(null);
106
+ return;
107
+ }
108
+ // Check if selection is collapsed (just a cursor, no text selected)
109
+ if (domRange.collapsed) {
110
+ setRange(null);
111
+ return;
112
+ }
113
+ setRange(domRange.cloneRange());
114
+ };
115
+ // Listen for Lexical editor updates
116
+ const unregister = editor.registerUpdateListener(({ tags }) => {
117
+ // Ignore collaboration updates
118
+ if (tags.has('collaboration'))
119
+ return;
120
+ updateRange();
121
+ });
122
+ // Listen for DOM selection changes to catch drag selections
123
+ document.addEventListener('selectionchange', updateRange);
124
+ return () => {
125
+ unregister();
126
+ document.removeEventListener('selectionchange', updateRange);
127
+ };
128
+ }, [editor]);
129
+ return { range };
130
+ }
131
+ /**
132
+ * Hook to get selection text content
133
+ */
134
+ function useSelectionText() {
135
+ const [editor] = useLexicalComposerContext();
136
+ const [textContent, setTextContent] = useState('');
137
+ useEffect(() => {
138
+ return editor.registerUpdateListener(({ editorState }) => {
139
+ editorState.read(() => {
140
+ const selection = $getSelection();
141
+ setTextContent(selection?.getTextContent() || '');
142
+ });
143
+ });
144
+ }, [editor]);
145
+ return textContent;
146
+ }
147
+ /**
148
+ * Hook to detect if mouse is pressed outside a specific element (for drag selection detection)
149
+ * Returns true only when mouse is down AND the click started outside the provided element
150
+ */
151
+ function useIsMouseDownOutside(getElement) {
152
+ const [isMouseDownOutside, setIsMouseDownOutside] = useState(false);
153
+ // Force update counter to trigger re-render on mouseup
154
+ const [, forceUpdate] = useState(0);
155
+ useEffect(() => {
156
+ const handleMouseDown = (e) => {
157
+ const element = getElement();
158
+ // Check if the click is outside the toolbar element
159
+ if (element && element.contains(e.target)) {
160
+ // Click is inside toolbar, don't set mouse down state
161
+ setIsMouseDownOutside(false);
162
+ }
163
+ else {
164
+ // Click is outside toolbar (in editor), set mouse down state
165
+ setIsMouseDownOutside(true);
166
+ }
167
+ };
168
+ const handleMouseUp = () => {
169
+ setIsMouseDownOutside(false);
170
+ // Force a re-render to show toolbar after selection completes
171
+ forceUpdate(n => n + 1);
172
+ };
173
+ document.addEventListener('mousedown', handleMouseDown);
174
+ document.addEventListener('mouseup', handleMouseUp);
175
+ return () => {
176
+ document.removeEventListener('mousedown', handleMouseDown);
177
+ document.removeEventListener('mouseup', handleMouseUp);
178
+ };
179
+ }, [getElement]);
180
+ return isMouseDownOutside;
181
+ }
182
+ /**
183
+ * ChatInlinePlugin - Floating AI toolbar for Lexical text selection.
184
+ */
185
+ export function ChatInlinePlugin({ protocol, portalContainer, }) {
186
+ const [editor] = useLexicalComposerContext();
187
+ const [toolbarState, setToolbarState] = useState('closed');
188
+ const [fullWidth, setFullWidth] = useState(false);
189
+ const padding = 20;
190
+ // Text format state
191
+ const [isBold, setIsBold] = useState(false);
192
+ const [isItalic, setIsItalic] = useState(false);
193
+ const [isStrikethrough, setIsStrikethrough] = useState(false);
194
+ const [isCode, setIsCode] = useState(false);
195
+ const [isLink, setIsLink] = useState(false);
196
+ // Update text format state based on selection
197
+ const updateFormatState = useCallback(() => {
198
+ editor.getEditorState().read(() => {
199
+ const selection = $getSelection();
200
+ if ($isRangeSelection(selection)) {
201
+ setIsBold(selection.hasFormat('bold'));
202
+ setIsItalic(selection.hasFormat('italic'));
203
+ setIsStrikethrough(selection.hasFormat('strikethrough'));
204
+ setIsCode(selection.hasFormat('code'));
205
+ // Check if selection contains a link
206
+ const nodes = selection.getNodes();
207
+ const isLinkNode = nodes.some(node => {
208
+ const parent = node.getParent();
209
+ return $isLinkNode(parent) || $isLinkNode(node);
210
+ });
211
+ setIsLink(isLinkNode);
212
+ }
213
+ });
214
+ }, [editor]);
215
+ // Listen for selection changes to update format state
216
+ useEffect(() => {
217
+ return editor.registerUpdateListener(({ editorState }) => {
218
+ editorState.read(() => {
219
+ updateFormatState();
220
+ });
221
+ });
222
+ }, [editor, updateFormatState]);
223
+ // Selection preservation
224
+ const { saveSelection, restoreSelection } = usePreserveSelection(editor);
225
+ // Ref for the toolbar container to detect clicks inside vs outside
226
+ const toolbarRef = useRef(null);
227
+ // Stable getter function for the toolbar element
228
+ const getToolbarElement = useCallback(() => toolbarRef.current, []);
229
+ // Track mouse state for detecting ongoing drag selections (only outside toolbar)
230
+ const isMouseDownOutside = useIsMouseDownOutside(getToolbarElement);
231
+ // Floating UI setup
232
+ const { refs: { setReference, setFloating }, strategy, x, y, } = useFloating({
233
+ strategy: 'fixed',
234
+ placement: 'bottom',
235
+ middleware: [
236
+ offset(10),
237
+ hide({ padding }),
238
+ shift({ padding, limiter: limitShift() }),
239
+ size({ padding }),
240
+ ],
241
+ whileElementsMounted: (...args) => {
242
+ return autoUpdate(...args, {
243
+ animationFrame: true,
244
+ });
245
+ },
246
+ });
247
+ // Selection tracking
248
+ const { range } = useRange();
249
+ const selectedText = useSelectionText();
250
+ // Update floating reference position based on selection
251
+ useLayoutEffect(() => {
252
+ setReference({
253
+ getBoundingClientRect: () => range?.getBoundingClientRect() || new DOMRect(),
254
+ });
255
+ }, [setReference, range]);
256
+ // Reset width when selection is removed, show button when selection appears
257
+ useEffect(() => {
258
+ if (range === null) {
259
+ setFullWidth(false);
260
+ setToolbarState('closed');
261
+ }
262
+ else {
263
+ // Only transition from closed to button, not from ai to button
264
+ setToolbarState(prev => (prev === 'closed' ? 'button' : prev));
265
+ }
266
+ }, [range]);
267
+ // Handle replace selection
268
+ const handleReplaceSelection = useCallback((text) => {
269
+ editor.update(() => {
270
+ const selection = $getSelection();
271
+ selection?.insertRawText(text);
272
+ });
273
+ }, [editor]);
274
+ // Handle insert inline
275
+ const handleInsertInline = useCallback((text) => {
276
+ editor.update(() => {
277
+ const selection = $getSelection();
278
+ if ($isRangeSelection(selection)) {
279
+ const node = selection.focus.getNode();
280
+ const nodeOffset = selection.focus.offset;
281
+ if (node instanceof TextNode) {
282
+ const textContent = node.getTextContent();
283
+ const newText = `${textContent.slice(0, nodeOffset)} ${text} ${textContent.slice(nodeOffset)}`;
284
+ node.replace($createTextNode(newText));
285
+ }
286
+ }
287
+ });
288
+ }, [editor]);
289
+ // Handle insert below
290
+ const handleInsertBelow = useCallback((text) => {
291
+ editor.update(() => {
292
+ const selection = $getSelection();
293
+ if ($isRangeSelection(selection)) {
294
+ const anchorNode = selection.anchor.getNode();
295
+ const paragraphNode = $createParagraphNode();
296
+ paragraphNode.append($createTextNode(text));
297
+ anchorNode.getTopLevelElementOrThrow().insertAfter(paragraphNode);
298
+ }
299
+ });
300
+ }, [editor]);
301
+ // Handle close
302
+ const handleClose = useCallback(() => {
303
+ setToolbarState('button');
304
+ setFullWidth(false);
305
+ }, []);
306
+ // Handle open AI
307
+ const handleOpenAI = useCallback(() => {
308
+ setToolbarState('ai');
309
+ setFullWidth(true);
310
+ }, []);
311
+ // Text formatting handlers
312
+ const handleFormat = useCallback((format) => {
313
+ editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);
314
+ }, [editor]);
315
+ const handleToggleLink = useCallback(() => {
316
+ if (isLink) {
317
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
318
+ }
319
+ else {
320
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, 'https://');
321
+ }
322
+ }, [editor, isLink]);
323
+ // Don't render if no selection, mouse is still down outside toolbar (dragging), or toolbar closed
324
+ if (range === null || isMouseDownOutside || toolbarState === 'closed') {
325
+ return null;
326
+ }
327
+ const portalTarget = portalContainer || document.body;
328
+ return createPortal(_jsxs(Box, { ref: (el) => {
329
+ setFloating(el);
330
+ toolbarRef.current =
331
+ el;
332
+ }, sx: {
333
+ pointerEvents: 'auto',
334
+ zIndex: 50,
335
+ position: strategy,
336
+ top: 0,
337
+ left: fullWidth && editor._rootElement
338
+ ? editor._rootElement.getBoundingClientRect().left + MARGIN_X
339
+ : 0,
340
+ transform: fullWidth
341
+ ? `translate3d(0, ${Math.round(y)}px, 0)`
342
+ : `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`,
343
+ width: fullWidth && editor._rootElement
344
+ ? editor._rootElement.getBoundingClientRect().width - MARGIN_X * 2
345
+ : 'auto',
346
+ minWidth: fullWidth ? undefined : 'max-content',
347
+ }, children: [toolbarState === 'button' && (_jsxs(Box, { sx: {
348
+ display: 'flex',
349
+ alignItems: 'center',
350
+ gap: 0,
351
+ p: 1,
352
+ borderRadius: '12px',
353
+ border: '1px solid',
354
+ borderColor: 'border.default',
355
+ boxShadow: 'shadow.large',
356
+ bg: 'canvas.default',
357
+ }, children: [_jsx(IconButton, { icon: BoldIcon, "aria-label": "Bold", variant: "invisible", onClick: () => handleFormat('bold'), sx: {
358
+ color: isBold ? 'accent.fg' : 'fg.muted',
359
+ bg: isBold ? 'accent.subtle' : 'transparent',
360
+ } }), _jsx(IconButton, { icon: ItalicIcon, "aria-label": "Italic", variant: "invisible", onClick: () => handleFormat('italic'), sx: {
361
+ color: isItalic ? 'accent.fg' : 'fg.muted',
362
+ bg: isItalic ? 'accent.subtle' : 'transparent',
363
+ } }), _jsx(IconButton, { icon: StrikethroughIcon, "aria-label": "Strikethrough", variant: "invisible", onClick: () => handleFormat('strikethrough'), sx: {
364
+ color: isStrikethrough ? 'accent.fg' : 'fg.muted',
365
+ bg: isStrikethrough ? 'accent.subtle' : 'transparent',
366
+ } }), _jsx(IconButton, { icon: CodeIcon, "aria-label": "Code", variant: "invisible", onClick: () => handleFormat('code'), sx: {
367
+ color: isCode ? 'accent.fg' : 'fg.muted',
368
+ bg: isCode ? 'accent.subtle' : 'transparent',
369
+ } }), _jsx(IconButton, { icon: LinkIcon, "aria-label": "Link", variant: "invisible", onClick: handleToggleLink, sx: {
370
+ color: isLink ? 'accent.fg' : 'fg.muted',
371
+ bg: isLink ? 'accent.subtle' : 'transparent',
372
+ } }), _jsx(Box, { sx: {
373
+ width: '1px',
374
+ height: '16px',
375
+ bg: 'border.default',
376
+ mx: 1,
377
+ } }), _jsx(IconButton, { icon: SparkleFillIcon, "aria-label": "AI Assistant", variant: "invisible", onClick: handleOpenAI, sx: { color: 'fg.muted' } })] })), toolbarState === 'ai' && (_jsx(ChatInline, { selectedText: selectedText, protocol: protocol, onReplaceSelection: handleReplaceSelection, onInsertInline: handleInsertInline, onInsertBelow: handleInsertBelow, onClose: handleClose, onSaveSelection: saveSelection, onRestoreSelection: restoreSelection }))] }), portalTarget);
378
+ }
379
+ export default ChatInlinePlugin;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Lexical plugin exports.
3
+ *
4
+ * @module lexical
5
+ */
6
+ export { ChatInlinePlugin, type ChatInlinePluginProps, SAVE_SELECTION_COMMAND, RESTORE_SELECTION_COMMAND, } from './ChatInlinePlugin';
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Lexical plugin exports.
7
+ *
8
+ * @module lexical
9
+ */
10
+ export { ChatInlinePlugin, SAVE_SELECTION_COMMAND, RESTORE_SELECTION_COMMAND, } from './ChatInlinePlugin';
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { clsx } from "clsx";
6
+ import { twMerge } from "tailwind-merge";
7
+ export function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
package/lib/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ import './index.css';
package/lib/main.js ADDED
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { createRoot } from 'react-dom/client';
7
+ import App from './App';
8
+ import './index.css';
9
+ const rootElement = document.getElementById('root');
10
+ if (rootElement) {
11
+ createRoot(rootElement).render(_jsx(App, {}));
12
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * AI Agent model
3
+ */
4
+ export type IAIAgent = {
5
+ /**
6
+ * ID of the document monitored by the agent.
7
+ */
8
+ documentId: string;
9
+ /**
10
+ * ID of the runtime connected to the agent.
11
+ *
12
+ * This is not the name of the remote pod but
13
+ * the Simple Kernel ID of the process within it.
14
+ */
15
+ runtimeId?: string;
16
+ };
17
+ export default IAIAgent;
@@ -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 {};
@@ -0,0 +1 @@
1
+ export * from './AIAgent';
@@ -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 * from './AIAgent';
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface A2UIRendererProps {
3
+ surfaceId: string;
4
+ className?: string;
5
+ fallback?: ReactNode;
6
+ }
7
+ export declare function A2UIRenderer({ surfaceId, className, fallback, }: A2UIRendererProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,102 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /*
7
+ Copyright 2025 Google LLC
8
+
9
+ Licensed under the Apache License, Version 2.0 (the "License");
10
+ you may not use this file except in compliance with the License.
11
+ You may obtain a copy of the License at
12
+
13
+ https://www.apache.org/licenses/LICENSE-2.0
14
+
15
+ Unless required by applicable law or agreed to in writing, software
16
+ distributed under the License is distributed on an "AS IS" BASIS,
17
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ See the License for the specific language governing permissions and
19
+ limitations under the License.
20
+ */
21
+ import { useMemo } from 'react';
22
+ import { useA2UI } from '../hooks/useA2UI.js';
23
+ import { cn } from '../lib/utils.js';
24
+ import { Text, Image, Icon, Video, AudioPlayer, Divider, } from './content/index.js';
25
+ import { Row, Column, List, Card, Tabs, Modal } from './layout/index.js';
26
+ import { Button, CheckBox, TextField, DateTimeInput, MultipleChoice, Slider, } from './interactive/index.js';
27
+ export function A2UIRenderer({ surfaceId, className, fallback = null, }) {
28
+ const { getSurface } = useA2UI();
29
+ const surface = getSurface(surfaceId);
30
+ const componentTree = surface?.componentTree;
31
+ if (!componentTree) {
32
+ return _jsx(_Fragment, { children: fallback });
33
+ }
34
+ return (_jsx("div", { className: cn('a2ui-surface', className), children: _jsx(ComponentRenderer, { node: componentTree, surfaceId: surfaceId }) }));
35
+ }
36
+ function ComponentRenderer({ node, surfaceId }) {
37
+ const renderChild = useMemo(() => (childNode) => (_jsx(ComponentRenderer, { node: childNode, surfaceId: surfaceId }, childNode.id)), [surfaceId]);
38
+ const children = useMemo(() => {
39
+ const props = node.properties;
40
+ if (props.children && Array.isArray(props.children)) {
41
+ return props.children.map(child => child ? (_jsx(ComponentWrapper, { node: child, children: _jsx(ComponentRenderer, { node: child, surfaceId: surfaceId }) }, child.id)) : null);
42
+ }
43
+ if (props.child) {
44
+ return (_jsx(ComponentWrapper, { node: props.child, children: _jsx(ComponentRenderer, { node: props.child, surfaceId: surfaceId }) }, props.child.id));
45
+ }
46
+ return null;
47
+ }, [node.properties, surfaceId]);
48
+ switch (node.type) {
49
+ case 'Text':
50
+ return (_jsx(Text, { node: node, surfaceId: surfaceId }));
51
+ case 'Image':
52
+ return (_jsx(Image, { node: node, surfaceId: surfaceId }));
53
+ case 'Icon':
54
+ return (_jsx(Icon, { node: node, surfaceId: surfaceId }));
55
+ case 'Video':
56
+ return (_jsx(Video, { node: node, surfaceId: surfaceId }));
57
+ case 'AudioPlayer':
58
+ return (_jsx(AudioPlayer, { node: node, surfaceId: surfaceId }));
59
+ case 'Divider':
60
+ return (_jsx(Divider, { node: node, surfaceId: surfaceId }));
61
+ case 'Row':
62
+ return (_jsx(Row, { node: node, surfaceId: surfaceId, children: children }));
63
+ case 'Column':
64
+ return (_jsx(Column, { node: node, surfaceId: surfaceId, children: children }));
65
+ case 'List':
66
+ return (_jsx(List, { node: node, surfaceId: surfaceId, children: children }));
67
+ case 'Card':
68
+ return (_jsx(Card, { node: node, surfaceId: surfaceId, children: children }));
69
+ case 'Tabs':
70
+ return (_jsx(Tabs, { node: node, surfaceId: surfaceId, renderChild: renderChild }));
71
+ case 'Modal':
72
+ return (_jsx(Modal, { node: node, surfaceId: surfaceId, renderChild: renderChild }));
73
+ case 'Button':
74
+ return (_jsx(Button, { node: node, surfaceId: surfaceId, children: children }));
75
+ case 'CheckBox':
76
+ return (_jsx(CheckBox, { node: node, surfaceId: surfaceId }));
77
+ case 'TextField':
78
+ return (_jsx(TextField, { node: node, surfaceId: surfaceId }));
79
+ case 'DateTimeInput':
80
+ return (_jsx(DateTimeInput, { node: node, surfaceId: surfaceId }));
81
+ case 'MultipleChoice':
82
+ return (_jsx(MultipleChoice, { node: node, surfaceId: surfaceId }));
83
+ case 'Slider':
84
+ return (_jsx(Slider, { node: node, surfaceId: surfaceId }));
85
+ default:
86
+ console.warn(`Unknown component type: ${node.type}`);
87
+ return null;
88
+ }
89
+ }
90
+ function ComponentWrapper({ node, children, }) {
91
+ const style = useMemo(() => {
92
+ const weight = node.weight;
93
+ if (typeof weight !== 'number') {
94
+ return undefined;
95
+ }
96
+ return { flex: weight };
97
+ }, [node.weight]);
98
+ if (!style) {
99
+ return _jsx(_Fragment, { children: children });
100
+ }
101
+ return _jsx("div", { style: style, children: children });
102
+ }
@@ -0,0 +1,7 @@
1
+ import { Types } from '@a2ui/lit/0.8';
2
+ export interface SurfaceRendererProps {
3
+ surfaceId: string;
4
+ surface: Types.Surface;
5
+ className?: string;
6
+ }
7
+ export declare function SurfaceRenderer({ surfaceId, surface, className, }: SurfaceRendererProps): import("react/jsx-runtime").JSX.Element | null;