@datalayer/agent-runtimes 1.0.2 → 1.0.4

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 (608) hide show
  1. package/README.md +14 -132
  2. package/lib/Agent.js +2 -2
  3. package/lib/AgentLexical.d.ts +1 -12
  4. package/lib/AgentLexical.js +3 -14
  5. package/lib/AgentNotebook.js +3 -3
  6. package/lib/App.js +2 -2
  7. package/lib/{components/chat/components → agents}/AgentDetails.d.ts +13 -2
  8. package/lib/{components/chat/components → agents}/AgentDetails.js +6 -12
  9. package/lib/api/agents.d.ts +47 -0
  10. package/lib/api/agents.js +106 -0
  11. package/lib/api/context.d.ts +17 -0
  12. package/lib/api/context.js +45 -0
  13. package/lib/api/evals.d.ts +27 -0
  14. package/lib/api/evals.js +63 -0
  15. package/lib/api/events.d.ts +17 -0
  16. package/lib/api/events.js +93 -0
  17. package/lib/{components/chat → api}/handler.js +1 -1
  18. package/lib/api/index.d.ts +15 -0
  19. package/lib/api/index.js +20 -0
  20. package/lib/api/notifications.d.ts +39 -0
  21. package/lib/api/notifications.js +103 -0
  22. package/lib/api/output.d.ts +28 -0
  23. package/lib/api/output.js +64 -0
  24. package/lib/api/tool-approvals.d.ts +62 -0
  25. package/lib/api/tool-approvals.js +145 -0
  26. package/lib/{components/chat/components → chat}/Chat.d.ts +26 -15
  27. package/lib/{components/chat/components → chat}/Chat.js +16 -16
  28. package/lib/{components/chat/components → chat}/ChatFloating.d.ts +17 -9
  29. package/lib/{components/chat/components → chat}/ChatFloating.js +17 -9
  30. package/lib/{components/chat/components → chat}/ChatInline.d.ts +2 -2
  31. package/lib/{components/chat/components → chat}/ChatInline.js +8 -6
  32. package/lib/{components/chat/components → chat}/ChatPopupStandalone.d.ts +3 -4
  33. package/lib/{components/chat/components → chat}/ChatPopupStandalone.js +6 -6
  34. package/lib/{components/chat/components → chat}/ChatSidebar.d.ts +14 -5
  35. package/lib/{components/chat/components → chat}/ChatSidebar.js +48 -26
  36. package/lib/{components/chat/components → chat}/ChatStandalone.d.ts +3 -4
  37. package/lib/{components/chat/components → chat}/ChatStandalone.js +5 -5
  38. package/lib/chat/base/ChatBase.d.ts +6 -0
  39. package/lib/chat/base/ChatBase.js +1338 -0
  40. package/lib/chat/display/EmptyState.d.ts +27 -0
  41. package/lib/chat/display/EmptyState.js +41 -0
  42. package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.d.ts +1 -1
  43. package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.js +1 -1
  44. package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.d.ts +1 -1
  45. package/lib/{components/chat/components/elements → chat/header}/ChatHeader.d.ts +1 -4
  46. package/lib/{components/chat/components/elements → chat/header}/ChatHeader.js +1 -1
  47. package/lib/chat/header/ChatHeaderBase.d.ts +38 -0
  48. package/lib/chat/header/ChatHeaderBase.js +83 -0
  49. package/lib/chat/index.d.ts +66 -0
  50. package/lib/chat/index.js +74 -0
  51. package/lib/chat/indicators/McpStatusIndicator.d.ts +9 -0
  52. package/lib/chat/indicators/McpStatusIndicator.js +128 -0
  53. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +10 -0
  54. package/lib/chat/indicators/SandboxStatusIndicator.js +175 -0
  55. package/lib/chat/indicators/index.d.ts +17 -0
  56. package/lib/chat/indicators/index.js +19 -0
  57. package/lib/chat/messages/ChatMessageList.d.ts +49 -0
  58. package/lib/chat/messages/ChatMessageList.js +332 -0
  59. package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.d.ts +2 -2
  60. package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.js +6 -4
  61. package/lib/{components/chat/components → chat}/parts/DynamicToolPart.d.ts +1 -1
  62. package/lib/{components/chat/components/elements → chat/parts}/MessagePart.d.ts +1 -1
  63. package/lib/{components/chat/components/elements → chat/parts}/MessagePart.js +4 -4
  64. package/lib/{components/chat/components → chat}/parts/ReasoningPart.js +1 -1
  65. package/lib/{components/chat/components → chat}/parts/TextPart.d.ts +1 -1
  66. package/lib/{components/chat/components → chat}/parts/ToolPart.js +1 -1
  67. package/lib/{components/chat/components → chat}/parts/index.d.ts +2 -1
  68. package/lib/{components/chat/components → chat}/parts/index.js +2 -1
  69. package/lib/chat/prompt/InputFooter.d.ts +43 -0
  70. package/lib/chat/prompt/InputFooter.js +135 -0
  71. package/lib/chat/prompt/InputPrompt.d.ts +60 -0
  72. package/lib/chat/prompt/InputPrompt.js +83 -0
  73. package/lib/chat/prompt/InputPromptFooter.d.ts +25 -0
  74. package/lib/chat/prompt/InputPromptFooter.js +15 -0
  75. package/lib/chat/prompt/InputPromptHeader.d.ts +15 -0
  76. package/lib/chat/prompt/InputPromptHeader.js +15 -0
  77. package/lib/chat/prompt/InputPromptLexical.d.ts +16 -0
  78. package/lib/chat/prompt/InputPromptLexical.js +122 -0
  79. package/lib/chat/prompt/InputPromptText.d.ts +24 -0
  80. package/lib/chat/prompt/InputPromptText.js +66 -0
  81. package/lib/chat/prompt/index.d.ts +11 -0
  82. package/lib/chat/prompt/index.js +15 -0
  83. package/lib/{components/chat/components → chat}/styles/streamdownStyles.d.ts +1 -1
  84. package/lib/chat/tools/ToolApprovalBanner.d.ts +31 -0
  85. package/lib/chat/tools/ToolApprovalBanner.js +62 -0
  86. package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.js +1 -1
  87. package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.d.ts +13 -4
  88. package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.js +18 -8
  89. package/lib/chat/tools/index.d.ts +8 -0
  90. package/lib/{components/chat/components/display → chat/tools}/index.js +3 -1
  91. package/lib/chat/usage/TokenUsageBar.d.ts +8 -0
  92. package/lib/chat/usage/TokenUsageBar.js +213 -0
  93. package/lib/client/AgentsMixin.d.ts +216 -0
  94. package/lib/client/AgentsMixin.js +388 -0
  95. package/lib/client/index.d.ts +6 -0
  96. package/lib/client/index.js +10 -0
  97. package/lib/components/NotificationEventCard.d.ts +8 -0
  98. package/lib/components/NotificationEventCard.js +177 -0
  99. package/lib/components/OutputCard.d.ts +8 -0
  100. package/lib/components/OutputCard.js +94 -0
  101. package/lib/components/ToolApprovalCard.d.ts +33 -0
  102. package/lib/components/ToolApprovalCard.js +78 -0
  103. package/lib/components/index.d.ts +3 -7
  104. package/lib/components/index.js +3 -4
  105. package/lib/{components → config}/AgentConfiguration.d.ts +43 -21
  106. package/lib/{components → config}/AgentConfiguration.js +48 -28
  107. package/lib/config/index.d.ts +2 -0
  108. package/lib/config/index.js +1 -0
  109. package/lib/{components/chat/components → context}/ContextInspector.js +38 -8
  110. package/lib/{components/chat/components → context}/ContextPanel.js +27 -6
  111. package/lib/context/CostTracker.d.ts +37 -0
  112. package/lib/context/CostTracker.js +124 -0
  113. package/lib/context/TokenUsageChart.d.ts +10 -0
  114. package/lib/context/TokenUsageChart.js +288 -0
  115. package/lib/examples/A2UiComponentGalleryExample.d.ts +20 -0
  116. package/lib/examples/A2UiComponentGalleryExample.js +568 -0
  117. package/lib/examples/A2UiContactCardExample.d.ts +21 -0
  118. package/lib/examples/A2UiContactCardExample.js +432 -0
  119. package/lib/examples/A2UiRestaurantExample.d.ts +11 -3
  120. package/lib/examples/A2UiRestaurantExample.js +63 -98
  121. package/lib/examples/A2UiViewerExample.d.ts +21 -0
  122. package/lib/examples/A2UiViewerExample.js +563 -0
  123. package/lib/examples/AgUiAgenticExample.js +3 -3
  124. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -3
  125. package/lib/examples/{AgUiHaikuGenUIExample.d.ts → AgUiHaikuGenUiExample.d.ts} +4 -4
  126. package/lib/examples/{AgUiHaikuGenUIExample.js → AgUiHaikuGenUiExample.js} +7 -7
  127. package/lib/examples/AgUiHumanInTheLoopExample.js +3 -3
  128. package/lib/examples/AgUiSharedStateExample.js +3 -3
  129. package/lib/examples/{AgUiToolsBasedGenUIExample.d.ts → AgUiToolsBasedGenUiExample.d.ts} +4 -4
  130. package/lib/examples/{AgUiToolsBasedGenUIExample.js → AgUiToolsBasedGenUiExample.js} +7 -7
  131. package/lib/examples/AgentCheckpointsExample.d.ts +19 -0
  132. package/lib/examples/AgentCheckpointsExample.js +500 -0
  133. package/lib/examples/AgentCodemodeExample.d.ts +14 -0
  134. package/lib/examples/AgentCodemodeExample.js +256 -0
  135. package/lib/examples/AgentEvalsExample.d.ts +14 -0
  136. package/lib/examples/AgentEvalsExample.js +210 -0
  137. package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
  138. package/lib/examples/AgentGuardrailsExample.js +212 -0
  139. package/lib/examples/AgentMemoryExample.d.ts +14 -0
  140. package/lib/examples/AgentMemoryExample.js +228 -0
  141. package/lib/examples/AgentMonitoringExample.d.ts +13 -0
  142. package/lib/examples/AgentMonitoringExample.js +305 -0
  143. package/lib/examples/AgentNotificationsExample.d.ts +14 -0
  144. package/lib/examples/AgentNotificationsExample.js +267 -0
  145. package/lib/examples/AgentOtelExample.d.ts +25 -0
  146. package/lib/examples/AgentOtelExample.js +281 -0
  147. package/lib/examples/AgentOutputsExample.d.ts +14 -0
  148. package/lib/examples/AgentOutputsExample.js +205 -0
  149. package/lib/examples/AgentSandboxExample.d.ts +17 -0
  150. package/lib/examples/AgentSandboxExample.js +490 -0
  151. package/lib/examples/AgentSkillsExample.d.ts +3 -0
  152. package/lib/examples/AgentSkillsExample.js +284 -0
  153. package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
  154. package/lib/examples/AgentToolApprovalsExample.js +737 -0
  155. package/lib/examples/AgentTriggersExample.d.ts +14 -0
  156. package/lib/examples/AgentTriggersExample.js +1090 -0
  157. package/lib/examples/{AgentRuntimeFormExample.d.ts → AgentspecExample.d.ts} +3 -4
  158. package/lib/examples/{AgentRuntimeFormExample.js → AgentspecExample.js} +92 -34
  159. package/lib/examples/{JupyterCellExample.js → CellSimpleExample.js} +1 -1
  160. package/lib/examples/{AgentRuntimeCustomExample.js → ChatCustomExample.js} +3 -3
  161. package/lib/examples/{AgentRuntimeChatExample.js → ChatExample.js} +6 -14
  162. package/lib/examples/{AgentRuntimeStandaloneExample.js → ChatStandaloneExample.js} +2 -2
  163. package/lib/examples/CopilotKitLexicalExample.d.ts +3 -14
  164. package/lib/examples/CopilotKitLexicalExample.js +4 -15
  165. package/lib/examples/CopilotKitNotebookExample.js +4 -6
  166. package/lib/examples/DatalayerNotebookExample.js +2 -2
  167. package/lib/examples/{AgentRuntimeLexical2Example.d.ts → Lexical2Example.d.ts} +2 -13
  168. package/lib/examples/{AgentRuntimeLexical2Example.js → Lexical2Example.js} +8 -17
  169. package/lib/examples/{AgentRuntimeLexicalExample.d.ts → LexicalExample.d.ts} +1 -12
  170. package/lib/examples/{AgentRuntimeLexicalExample.js → LexicalExample.js} +28 -27
  171. package/lib/examples/{AgentRuntimeLexicalSidebarExample.d.ts → LexicalSidebarExample.d.ts} +2 -13
  172. package/lib/examples/{AgentRuntimeLexicalSidebarExample.js → LexicalSidebarExample.js} +6 -18
  173. package/lib/examples/{AgentRuntimeNotebookExample.js → NotebookExample.js} +14 -10
  174. package/lib/examples/{AgentRuntimeNotebookSidebarExample.js → NotebookSidebarExample.js} +5 -8
  175. package/lib/examples/{JupyterNotebookExample.js → NotebookSimpleExample.js} +2 -2
  176. package/lib/examples/ag-ui/weather/InlineWeatherCard.js +1 -1
  177. package/lib/examples/components/ErrorView.d.ts +14 -0
  178. package/lib/examples/components/ErrorView.js +20 -0
  179. package/lib/examples/components/ExampleWrapper.d.ts +12 -0
  180. package/lib/examples/components/ExampleWrapper.js +16 -0
  181. package/lib/examples/components/Header.d.ts +2 -2
  182. package/lib/examples/components/HeaderControls.js +1 -1
  183. package/lib/examples/components/LexicalEditor.d.ts +1 -12
  184. package/lib/examples/components/LexicalEditor.js +1 -12
  185. package/lib/examples/components/MainContent.d.ts +4 -11
  186. package/lib/examples/components/MainContent.js +6 -60
  187. package/lib/examples/components/index.d.ts +3 -0
  188. package/lib/examples/components/index.js +2 -0
  189. package/lib/examples/example-selector.d.ts +1 -1
  190. package/lib/examples/example-selector.js +35 -22
  191. package/lib/examples/index.d.ts +26 -13
  192. package/lib/examples/index.js +26 -12
  193. package/lib/examples/main.d.ts +7 -0
  194. package/lib/examples/main.js +21 -43
  195. package/lib/examples/utils/examplesStore.d.ts +4 -0
  196. package/lib/examples/{stores → utils}/examplesStore.js +1 -1
  197. package/lib/examples/utils/notebooks/Empty.ipynb.json +33 -0
  198. package/lib/examples/utils/notebooks/NotebookExample2.ipynb.json +48 -0
  199. package/lib/examples/utils/themeStore.d.ts +8 -0
  200. package/lib/examples/utils/themeStore.js +14 -0
  201. package/lib/extensions/A2UIExtension.d.ts +65 -0
  202. package/lib/extensions/A2UIExtension.js +202 -0
  203. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.d.ts +2 -3
  204. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.js +0 -2
  205. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.d.ts +2 -2
  206. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.js +1 -1
  207. package/lib/extensions/index.d.ts +9 -0
  208. package/lib/{components/chat/extensions → extensions}/index.js +2 -2
  209. package/lib/hooks/index.d.ts +33 -16
  210. package/lib/hooks/index.js +33 -16
  211. package/lib/hooks/useAIAgentsWebSocket.d.ts +29 -0
  212. package/lib/hooks/useAIAgentsWebSocket.js +136 -0
  213. package/lib/hooks/{useAGUI.d.ts → useAgUi.d.ts} +2 -2
  214. package/lib/hooks/{useAGUI.js → useAgUi.js} +2 -2
  215. package/lib/hooks/useAgents.d.ts +150 -11
  216. package/lib/hooks/useAgents.js +623 -61
  217. package/lib/hooks/{useAgentStore.d.ts → useAgentsCatalog.d.ts} +3 -8
  218. package/lib/hooks/{useAgentStore.js → useAgentsCatalog.js} +9 -3
  219. package/lib/hooks/useAgentsRegistry.d.ts +10 -0
  220. package/lib/hooks/useAgentsRegistry.js +20 -0
  221. package/lib/hooks/useAgentsService.d.ts +22 -0
  222. package/lib/hooks/useAgentsService.js +146 -0
  223. package/lib/hooks/useChat.d.ts +2 -2
  224. package/lib/hooks/useChat.js +14 -8
  225. package/lib/hooks/useCheckpoints.d.ts +176 -0
  226. package/lib/hooks/useCheckpoints.js +466 -0
  227. package/lib/hooks/useConfig.d.ts +11 -0
  228. package/lib/hooks/useConfig.js +46 -0
  229. package/lib/hooks/useContextSnapshot.d.ts +11 -0
  230. package/lib/hooks/useContextSnapshot.js +44 -0
  231. package/lib/hooks/useMonitoring.d.ts +24 -0
  232. package/lib/hooks/useMonitoring.js +111 -0
  233. package/lib/hooks/useNotifications.d.ts +67 -0
  234. package/lib/hooks/useNotifications.js +208 -0
  235. package/lib/hooks/useSandbox.d.ts +12 -0
  236. package/lib/hooks/useSandbox.js +49 -0
  237. package/lib/hooks/useSkills.d.ts +13 -0
  238. package/lib/hooks/useSkills.js +46 -0
  239. package/lib/hooks/useToolApprovals.d.ts +45 -0
  240. package/lib/hooks/useToolApprovals.js +126 -0
  241. package/lib/hooks/useTools.d.ts +4 -4
  242. package/lib/hooks/useTools.js +2 -2
  243. package/lib/hooks/{useVercelChat.d.ts → useVercelAI.d.ts} +3 -3
  244. package/lib/hooks/{useVercelChat.js → useVercelAI.js} +2 -2
  245. package/lib/{components/chat/components → identity}/AgentIdentity.d.ts +1 -1
  246. package/lib/{components/chat/components → identity}/AgentIdentity.js +4 -3
  247. package/lib/identity/index.d.ts +1 -0
  248. package/lib/identity/index.js +2 -0
  249. package/lib/index.d.ts +4 -3
  250. package/lib/index.js +3 -2
  251. package/lib/{components/chat/inference → inference}/BaseInferenceProvider.d.ts +3 -3
  252. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.d.ts +3 -3
  253. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.js +1 -1
  254. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.d.ts +2 -2
  255. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.js +1 -1
  256. package/lib/{components/chat/inference → inference}/index.d.ts +1 -1
  257. package/lib/{components/chat/inference → inference}/index.js +1 -1
  258. package/lib/lexical/ChatInlinePlugin.d.ts +1 -1
  259. package/lib/lexical/ChatInlinePlugin.js +1 -1
  260. package/lib/{components → mcp}/McpServerManager.d.ts +1 -2
  261. package/lib/mcp/index.d.ts +1 -0
  262. package/lib/{specs/agents/codeai → mcp}/index.js +1 -1
  263. package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.d.ts +3 -3
  264. package/lib/{components/chat/middleware → middleware}/index.d.ts +1 -1
  265. package/lib/{components/chat/middleware → middleware}/index.js +1 -1
  266. package/lib/{components/chat/protocols → protocols}/A2AAdapter.d.ts +6 -6
  267. package/lib/{components/chat/protocols → protocols}/A2AAdapter.js +3 -3
  268. package/lib/{components/chat/protocols → protocols}/ACPAdapter.d.ts +6 -6
  269. package/lib/{components/chat/protocols → protocols}/ACPAdapter.js +4 -4
  270. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.d.ts +14 -6
  271. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.js +72 -10
  272. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.d.ts +6 -6
  273. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.js +1 -1
  274. package/lib/{components/chat/protocols → protocols}/VercelAIAdapter.d.ts +33 -7
  275. package/lib/protocols/VercelAIAdapter.js +748 -0
  276. package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
  277. package/lib/{components/chat/protocols → protocols}/index.js +1 -1
  278. package/lib/shims/json5.d.ts +4 -0
  279. package/lib/shims/json5.js +8 -0
  280. package/lib/specs/agents/agents.d.ts +54 -0
  281. package/lib/specs/agents/agents.js +1489 -0
  282. package/lib/specs/agents/index.js +15 -12
  283. package/lib/specs/envvars.d.ts +11 -19
  284. package/lib/specs/envvars.js +52 -38
  285. package/lib/specs/evals.d.ts +20 -0
  286. package/lib/specs/evals.js +133 -0
  287. package/lib/specs/events.d.ts +26 -0
  288. package/lib/specs/events.js +140 -0
  289. package/lib/specs/frontendTools.d.ts +14 -0
  290. package/lib/specs/frontendTools.js +53 -0
  291. package/lib/specs/guardrails.d.ts +29 -0
  292. package/lib/specs/guardrails.js +310 -0
  293. package/lib/specs/index.d.ts +15 -2
  294. package/lib/specs/index.js +15 -2
  295. package/lib/specs/mcpServers.d.ts +13 -11
  296. package/lib/specs/mcpServers.js +75 -50
  297. package/lib/specs/memory.d.ts +36 -0
  298. package/lib/specs/memory.js +112 -0
  299. package/lib/specs/models.d.ts +21 -34
  300. package/lib/specs/models.js +66 -66
  301. package/lib/specs/notifications.d.ts +17 -0
  302. package/lib/specs/notifications.js +103 -0
  303. package/lib/specs/outputs.d.ts +19 -0
  304. package/lib/specs/outputs.js +106 -0
  305. package/lib/specs/skills.d.ts +7 -16
  306. package/lib/specs/skills.js +95 -18
  307. package/lib/specs/teams/index.d.ts +17 -0
  308. package/lib/specs/teams/index.js +35 -0
  309. package/lib/specs/teams/teams.d.ts +27 -0
  310. package/lib/specs/teams/teams.js +1000 -0
  311. package/lib/specs/tools.d.ts +15 -0
  312. package/lib/specs/tools.js +86 -0
  313. package/lib/specs/triggers.d.ts +15 -0
  314. package/lib/specs/triggers.js +67 -0
  315. package/lib/stores/agentsStore.d.ts +123 -0
  316. package/lib/stores/agentsStore.js +270 -0
  317. package/lib/{components/chat/store → stores}/chatStore.d.ts +3 -2
  318. package/lib/{components/chat/store → stores}/chatStore.js +2 -2
  319. package/lib/{components/chat/store → stores}/conversationStore.d.ts +1 -1
  320. package/lib/{components/chat/store → stores}/conversationStore.js +1 -1
  321. package/lib/{components/chat/store → stores}/index.d.ts +3 -2
  322. package/lib/{components/chat/store → stores}/index.js +3 -2
  323. package/lib/{components/chat/tools → tools}/ToolExecutor.d.ts +2 -2
  324. package/lib/{components/chat/tools → tools}/ToolExecutor.js +1 -1
  325. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +1 -1
  326. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +14 -10
  327. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +31 -21
  328. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +1 -1
  329. package/lib/tools/index.d.ts +3 -0
  330. package/lib/tools/index.js +3 -7
  331. package/lib/types/a2a.d.ts +39 -0
  332. package/lib/types/acp.d.ts +21 -0
  333. package/lib/types/ag-ui.d.ts +25 -0
  334. package/lib/types/agents-lifecycle.d.ts +36 -0
  335. package/lib/types/agents.d.ts +80 -0
  336. package/lib/types/agents.js +22 -0
  337. package/lib/types/agentspecs.d.ts +90 -0
  338. package/lib/{components/chat/components/base/ChatBase.d.ts → types/chat.d.ts} +59 -99
  339. package/lib/types/checkpoints.d.ts +32 -0
  340. package/lib/types/checkpoints.js +5 -0
  341. package/lib/types/config.d.ts +67 -0
  342. package/lib/{runtime/types.js → types/config.js} +2 -2
  343. package/lib/types/connection.d.ts +31 -0
  344. package/lib/types/connection.js +5 -0
  345. package/lib/types/context.d.ts +67 -0
  346. package/lib/types/context.js +5 -0
  347. package/lib/types/cost.d.ts +42 -0
  348. package/lib/types/cost.js +5 -0
  349. package/lib/types/envvars.d.ts +21 -0
  350. package/lib/types/envvars.js +5 -0
  351. package/lib/types/evals.d.ts +66 -0
  352. package/lib/types/evals.js +5 -0
  353. package/lib/types/events.d.ts +49 -0
  354. package/lib/types/events.js +5 -0
  355. package/lib/types/eventspecs.d.ts +39 -0
  356. package/lib/types/eventspecs.js +5 -0
  357. package/lib/types/examples.d.ts +31 -0
  358. package/lib/types/examples.js +5 -0
  359. package/lib/{components/chat/types → types}/execution.d.ts +10 -1
  360. package/lib/{components/chat/types/extension.d.ts → types/extensions.d.ts} +3 -3
  361. package/lib/types/guardrails.d.ts +106 -0
  362. package/lib/types/guardrails.js +5 -0
  363. package/lib/types/index.d.ts +36 -2
  364. package/lib/types/index.js +35 -2
  365. package/lib/{components/chat/types → types}/inference.d.ts +3 -3
  366. package/lib/types/inference.js +5 -0
  367. package/lib/types/mcp.d.ts +117 -0
  368. package/lib/types/mcp.js +27 -0
  369. package/lib/types/memory.d.ts +23 -0
  370. package/lib/types/memory.js +5 -0
  371. package/lib/{components/chat/types/message.d.ts → types/messages.d.ts} +20 -1
  372. package/lib/{components/chat/types → types}/middleware.d.ts +3 -3
  373. package/lib/types/models.d.ts +63 -0
  374. package/lib/types/models.js +5 -0
  375. package/lib/types/notifications.d.ts +85 -0
  376. package/lib/types/notifications.js +5 -0
  377. package/lib/types/outputs.d.ts +51 -0
  378. package/lib/types/outputs.js +5 -0
  379. package/lib/{components/chat/types → types}/protocol.d.ts +37 -99
  380. package/lib/types/protocol.js +5 -0
  381. package/lib/types/sandbox.d.ts +27 -0
  382. package/lib/types/sandbox.js +24 -0
  383. package/lib/types/skills.d.ts +74 -0
  384. package/lib/types/skills.js +5 -0
  385. package/lib/types/teams.d.ts +133 -0
  386. package/lib/types/teams.js +5 -0
  387. package/lib/types/tool-approvals.d.ts +39 -0
  388. package/lib/types/tool-approvals.js +5 -0
  389. package/lib/{components/chat/types/tool.d.ts → types/tools.d.ts} +61 -4
  390. package/lib/types/triggers.d.ts +48 -0
  391. package/lib/types/triggers.js +5 -0
  392. package/lib/types/usage.d.ts +36 -0
  393. package/lib/types/usage.js +5 -0
  394. package/lib/utils/index.d.ts +1 -0
  395. package/lib/utils/index.js +5 -0
  396. package/lib/utils/utils.d.ts +60 -0
  397. package/lib/utils/utils.js +205 -0
  398. package/package.json +13 -14
  399. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  400. package/scripts/codegen/generate_agents.py +377 -61
  401. package/scripts/codegen/generate_envvars.py +36 -35
  402. package/scripts/codegen/generate_evals.py +279 -0
  403. package/scripts/codegen/generate_events.py +320 -0
  404. package/scripts/codegen/generate_frontend_tools.py +266 -0
  405. package/scripts/codegen/generate_guardrails.py +475 -0
  406. package/scripts/codegen/generate_mcp_servers.py +36 -9
  407. package/scripts/codegen/generate_memory.py +468 -0
  408. package/scripts/codegen/generate_models.py +22 -46
  409. package/scripts/codegen/generate_notifications.py +309 -0
  410. package/scripts/codegen/generate_outputs.py +267 -0
  411. package/scripts/codegen/generate_skills.py +108 -51
  412. package/scripts/codegen/generate_teams.py +922 -0
  413. package/scripts/codegen/generate_tools.py +346 -0
  414. package/scripts/codegen/generate_triggers.py +295 -0
  415. package/scripts/codegen/versioning.py +53 -0
  416. package/style/primer-primitives.css +1 -6
  417. package/lib/components/chat/components/base/ChatBase.js +0 -2242
  418. package/lib/components/chat/components/base/InputPrompt.d.ts +0 -42
  419. package/lib/components/chat/components/base/InputPrompt.js +0 -131
  420. package/lib/components/chat/components/display/index.d.ts +0 -6
  421. package/lib/components/chat/components/index.d.ts +0 -26
  422. package/lib/components/chat/components/index.js +0 -39
  423. package/lib/components/chat/extensions/A2UIExtension.d.ts +0 -87
  424. package/lib/components/chat/extensions/A2UIExtension.js +0 -312
  425. package/lib/components/chat/extensions/index.d.ts +0 -10
  426. package/lib/components/chat/index.d.ts +0 -61
  427. package/lib/components/chat/index.js +0 -76
  428. package/lib/components/chat/protocols/VercelAIAdapter.js +0 -315
  429. package/lib/components/chat/tools/index.d.ts +0 -8
  430. package/lib/components/chat/tools/index.js +0 -11
  431. package/lib/components/chat/types/index.d.ts +0 -12
  432. package/lib/components/chat/types/index.js +0 -17
  433. package/lib/components/sparklines/Sparklines.d.ts +0 -16
  434. package/lib/components/sparklines/Sparklines.js +0 -65
  435. package/lib/components/sparklines/SparklinesLine.d.ts +0 -8
  436. package/lib/components/sparklines/SparklinesLine.js +0 -37
  437. package/lib/components/sparklines/dataProcessing.d.ts +0 -25
  438. package/lib/components/sparklines/dataProcessing.js +0 -35
  439. package/lib/components/sparklines/index.d.ts +0 -4
  440. package/lib/components/sparklines/index.js +0 -7
  441. package/lib/components/sparklines/types.d.ts +0 -36
  442. package/lib/examples/stores/examplesStore.d.ts +0 -5
  443. package/lib/examples/stores/notebooks/Empty.ipynb.json +0 -33
  444. package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +0 -48
  445. package/lib/examples/stores/themeStore.d.ts +0 -33
  446. package/lib/examples/stores/themeStore.js +0 -38
  447. package/lib/hooks/useAgentRuntimes.d.ts +0 -350
  448. package/lib/hooks/useAgentRuntimes.js +0 -78
  449. package/lib/hooks/useKeyboardShortcuts.d.ts +0 -47
  450. package/lib/hooks/useKeyboardShortcuts.js +0 -153
  451. package/lib/hooks/useMobile.d.ts +0 -1
  452. package/lib/hooks/useMobile.js +0 -19
  453. package/lib/hooks/useNotebookAIAgent.d.ts +0 -8
  454. package/lib/hooks/useNotebookAIAgent.js +0 -73
  455. package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +0 -7
  456. package/lib/renderers/a2ui/components/A2UIRenderer.js +0 -102
  457. package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +0 -7
  458. package/lib/renderers/a2ui/components/SurfaceRenderer.js +0 -101
  459. package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +0 -9
  460. package/lib/renderers/a2ui/components/content/AudioPlayer.js +0 -38
  461. package/lib/renderers/a2ui/components/content/Divider.d.ts +0 -9
  462. package/lib/renderers/a2ui/components/content/Divider.js +0 -35
  463. package/lib/renderers/a2ui/components/content/Icon.d.ts +0 -9
  464. package/lib/renderers/a2ui/components/content/Icon.js +0 -110
  465. package/lib/renderers/a2ui/components/content/Image.d.ts +0 -9
  466. package/lib/renderers/a2ui/components/content/Image.js +0 -61
  467. package/lib/renderers/a2ui/components/content/Text.d.ts +0 -9
  468. package/lib/renderers/a2ui/components/content/Text.js +0 -64
  469. package/lib/renderers/a2ui/components/content/Video.d.ts +0 -9
  470. package/lib/renderers/a2ui/components/content/Video.js +0 -37
  471. package/lib/renderers/a2ui/components/content/index.d.ts +0 -6
  472. package/lib/renderers/a2ui/components/content/index.js +0 -25
  473. package/lib/renderers/a2ui/components/index.d.ts +0 -5
  474. package/lib/renderers/a2ui/components/index.js +0 -24
  475. package/lib/renderers/a2ui/components/interactive/Button.d.ts +0 -11
  476. package/lib/renderers/a2ui/components/interactive/Button.js +0 -71
  477. package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +0 -9
  478. package/lib/renderers/a2ui/components/interactive/CheckBox.js +0 -48
  479. package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +0 -9
  480. package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +0 -62
  481. package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +0 -9
  482. package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +0 -73
  483. package/lib/renderers/a2ui/components/interactive/Slider.d.ts +0 -9
  484. package/lib/renderers/a2ui/components/interactive/Slider.js +0 -53
  485. package/lib/renderers/a2ui/components/interactive/TextField.d.ts +0 -9
  486. package/lib/renderers/a2ui/components/interactive/TextField.js +0 -72
  487. package/lib/renderers/a2ui/components/interactive/index.d.ts +0 -6
  488. package/lib/renderers/a2ui/components/interactive/index.js +0 -25
  489. package/lib/renderers/a2ui/components/layout/Card.d.ts +0 -11
  490. package/lib/renderers/a2ui/components/layout/Card.js +0 -30
  491. package/lib/renderers/a2ui/components/layout/Column.d.ts +0 -11
  492. package/lib/renderers/a2ui/components/layout/Column.js +0 -65
  493. package/lib/renderers/a2ui/components/layout/List.d.ts +0 -11
  494. package/lib/renderers/a2ui/components/layout/List.js +0 -55
  495. package/lib/renderers/a2ui/components/layout/Modal.d.ts +0 -11
  496. package/lib/renderers/a2ui/components/layout/Modal.js +0 -58
  497. package/lib/renderers/a2ui/components/layout/Row.d.ts +0 -11
  498. package/lib/renderers/a2ui/components/layout/Row.js +0 -65
  499. package/lib/renderers/a2ui/components/layout/Tabs.d.ts +0 -11
  500. package/lib/renderers/a2ui/components/layout/Tabs.js +0 -48
  501. package/lib/renderers/a2ui/components/layout/index.d.ts +0 -6
  502. package/lib/renderers/a2ui/components/layout/index.js +0 -25
  503. package/lib/renderers/a2ui/context/A2UIContext.d.ts +0 -17
  504. package/lib/renderers/a2ui/context/A2UIContext.js +0 -54
  505. package/lib/renderers/a2ui/context/ThemeContext.d.ts +0 -20
  506. package/lib/renderers/a2ui/context/ThemeContext.js +0 -333
  507. package/lib/renderers/a2ui/hooks/useA2UI.d.ts +0 -36
  508. package/lib/renderers/a2ui/hooks/useA2UI.js +0 -62
  509. package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +0 -8
  510. package/lib/renderers/a2ui/hooks/useDataBinding.js +0 -83
  511. package/lib/renderers/a2ui/index.d.ts +0 -9
  512. package/lib/renderers/a2ui/index.js +0 -28
  513. package/lib/renderers/a2ui/lib/utils.d.ts +0 -11
  514. package/lib/renderers/a2ui/lib/utils.js +0 -38
  515. package/lib/renderers/a2ui/types/index.d.ts +0 -17
  516. package/lib/runtime/index.d.ts +0 -38
  517. package/lib/runtime/index.js +0 -40
  518. package/lib/runtime/runtimeStore.d.ts +0 -76
  519. package/lib/runtime/runtimeStore.js +0 -184
  520. package/lib/runtime/types.d.ts +0 -84
  521. package/lib/runtime/useAgentConnection.d.ts +0 -45
  522. package/lib/runtime/useAgentConnection.js +0 -112
  523. package/lib/runtime/useAgentRuntime.d.ts +0 -93
  524. package/lib/runtime/useAgentRuntime.js +0 -125
  525. package/lib/specs/agents/codeai/agents.d.ts +0 -28
  526. package/lib/specs/agents/codeai/agents.js +0 -179
  527. package/lib/specs/agents/codeai/index.d.ts +0 -1
  528. package/lib/specs/agents/codemode-paper/agents.d.ts +0 -31
  529. package/lib/specs/agents/codemode-paper/agents.js +0 -378
  530. package/lib/specs/agents/codemode-paper/index.d.ts +0 -1
  531. package/lib/specs/agents/codemode-paper/index.js +0 -5
  532. package/lib/specs/agents/datalayer-ai/agents.d.ts +0 -31
  533. package/lib/specs/agents/datalayer-ai/agents.js +0 -352
  534. package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
  535. package/lib/specs/agents/datalayer-ai/index.js +0 -5
  536. package/lib/specs/agents/mocks/agents.d.ts +0 -43
  537. package/lib/specs/agents/mocks/agents.js +0 -2293
  538. package/lib/specs/agents/mocks/index.d.ts +0 -1
  539. package/lib/specs/agents/mocks/index.js +0 -5
  540. package/lib/state/index.d.ts +0 -1
  541. package/lib/state/index.js +0 -5
  542. package/lib/state/substates/AIAgentState.d.ts +0 -80
  543. package/lib/state/substates/AIAgentState.js +0 -108
  544. package/lib/state/substates/index.d.ts +0 -1
  545. package/lib/state/substates/index.js +0 -5
  546. package/lib/types/AIAgent.d.ts +0 -17
  547. package/lib/types/Types.d.ts +0 -217
  548. /package/lib/{components/chat → api}/handler.d.ts +0 -0
  549. /package/lib/{renderers/index.d.ts → api/utils.d.ts} +0 -0
  550. /package/lib/{renderers/index.js → api/utils.js} +0 -0
  551. /package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.js +0 -0
  552. /package/lib/{components/chat/components → chat}/parts/DynamicToolPart.js +0 -0
  553. /package/lib/{components/chat/components → chat}/parts/ReasoningPart.d.ts +0 -0
  554. /package/lib/{components/chat/components → chat}/parts/TextPart.js +0 -0
  555. /package/lib/{components/chat/components → chat}/parts/ToolPart.d.ts +0 -0
  556. /package/lib/{components/chat/components → chat}/styles/streamdownStyles.js +0 -0
  557. /package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.d.ts +0 -0
  558. /package/lib/{components/chat/components → context}/ContextDistribution.d.ts +0 -0
  559. /package/lib/{components/chat/components → context}/ContextDistribution.js +0 -0
  560. /package/lib/{components/chat/components → context}/ContextInspector.d.ts +0 -0
  561. /package/lib/{components/chat/components → context}/ContextPanel.d.ts +0 -0
  562. /package/lib/{components/chat/components → context}/ContextUsage.d.ts +0 -0
  563. /package/lib/{components/chat/components → context}/ContextUsage.js +0 -0
  564. /package/lib/examples/{JupyterCellExample.d.ts → CellSimpleExample.d.ts} +0 -0
  565. /package/lib/examples/{AgentRuntimeCustomExample.d.ts → ChatCustomExample.d.ts} +0 -0
  566. /package/lib/examples/{AgentRuntimeChatExample.d.ts → ChatExample.d.ts} +0 -0
  567. /package/lib/examples/{AgentRuntimeStandaloneExample.d.ts → ChatStandaloneExample.d.ts} +0 -0
  568. /package/lib/examples/{AgentRuntimeNotebookExample.d.ts → NotebookExample.d.ts} +0 -0
  569. /package/lib/examples/{AgentRuntimeNotebookSidebarExample.d.ts → NotebookSidebarExample.d.ts} +0 -0
  570. /package/lib/examples/{JupyterNotebookExample.d.ts → NotebookSimpleExample.d.ts} +0 -0
  571. /package/lib/examples/{stores → utils}/agents/earthquake-detector.ipynb.json +0 -0
  572. /package/lib/examples/{stores → utils}/agents/earthquake-detector.json +0 -0
  573. /package/lib/examples/{stores → utils}/agents/earthquake-detector.lexical.json +0 -0
  574. /package/lib/examples/{stores → utils}/agents/sales-forecaster.ipynb.json +0 -0
  575. /package/lib/examples/{stores → utils}/agents/sales-forecaster.json +0 -0
  576. /package/lib/examples/{stores → utils}/agents/sales-forecaster.lexical.json +0 -0
  577. /package/lib/examples/{stores → utils}/agents/social-post-generator.ipynb.json +0 -0
  578. /package/lib/examples/{stores → utils}/agents/social-post-generator.json +0 -0
  579. /package/lib/examples/{stores → utils}/agents/social-post-generator.lexical.json +0 -0
  580. /package/lib/examples/{stores → utils}/agents/stock-market.ipynb.json +0 -0
  581. /package/lib/examples/{stores → utils}/agents/stock-market.json +0 -0
  582. /package/lib/examples/{stores → utils}/agents/stock-market.lexical.json +0 -0
  583. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExample.ipynb.json +0 -0
  584. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -0
  585. /package/lib/examples/{stores → utils}/notebooks/Lite.ipynb.json +0 -0
  586. /package/lib/examples/{stores → utils}/notebooks/Matplotlib.ipynb.json +0 -0
  587. /package/lib/examples/{stores → utils}/notebooks/NotebookExample1.ipynb.json +0 -0
  588. /package/lib/examples/{stores → utils}/notebooks/NotebookOutputs.ipynb.json +0 -0
  589. /package/lib/examples/{stores → utils}/notebooks/NotebookToCExample.ipynb.json +0 -0
  590. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.d.ts +0 -0
  591. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.js +0 -0
  592. /package/lib/examples/{stores → utils}/notebooks/PyGWalker.ipynb.json +0 -0
  593. /package/lib/examples/{stores → utils}/themedProvider.d.ts +0 -0
  594. /package/lib/examples/{stores → utils}/themedProvider.js +0 -0
  595. /package/lib/{components/chat/inference → inference}/BaseInferenceProvider.js +0 -0
  596. /package/lib/{components → mcp}/McpServerManager.js +0 -0
  597. /package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.js +0 -0
  598. /package/lib/{components/chat/types/inference.js → types/a2a.js} +0 -0
  599. /package/lib/{components/chat/types/protocol.js → types/acp.js} +0 -0
  600. /package/lib/{components/sparklines/types.js → types/ag-ui.js} +0 -0
  601. /package/lib/{renderers/a2ui/types/index.js → types/agents-lifecycle.js} +0 -0
  602. /package/lib/types/{AIAgent.js → agentspecs.js} +0 -0
  603. /package/lib/types/{Types.js → chat.js} +0 -0
  604. /package/lib/{components/chat/types → types}/execution.js +0 -0
  605. /package/lib/{components/chat/types/extension.js → types/extensions.js} +0 -0
  606. /package/lib/{components/chat/types/message.js → types/messages.js} +0 -0
  607. /package/lib/{components/chat/types → types}/middleware.js +0 -0
  608. /package/lib/{components/chat/types/tool.js → types/tools.js} +0 -0
@@ -1,22 +1,12 @@
1
- import { type Suggestion } from './base/ChatBase';
2
- import type { ModelConfig, ChatViewMode } from './base/ChatBase';
3
- import type { FrontendToolDefinition } from '../types/tool';
4
- import type { McpServerSelection } from '../types';
5
- import type { OAuthProvider, OAuthProviderConfig, Identity } from '../../../identity';
6
- /**
7
- * Supported transports (communication transports)
8
- */
9
- export type Transport = 'ag-ui' | 'a2a' | 'acp' | 'vercel-ai' | 'vercel-ai-jupyter';
10
- /**
11
- * Extension type for chat features
12
- */
13
- export type Extension = 'mcp-ui' | 'a2ui';
1
+ import type { ReactNode } from 'react';
2
+ import type { OAuthProvider, OAuthProviderConfig, Identity } from '../identity';
3
+ import type { Extension, FrontendToolDefinition, McpServerSelection, Protocol, ChatViewMode, ModelConfig, RenderToolResult, Suggestion } from '../types';
14
4
  /**
15
5
  * Chat props
16
6
  */
17
7
  export interface ChatProps {
18
8
  /** Transport to use */
19
- transport: Transport;
9
+ protocol: Protocol;
20
10
  /** Extensions for chat features */
21
11
  extensions?: Extension[];
22
12
  /** Base URL of the server (for HTTP-based protocols) */
@@ -25,10 +15,14 @@ export interface ChatProps {
25
15
  wsUrl?: string;
26
16
  /** Agent ID */
27
17
  agentId?: string;
18
+ /** Authentication token (JWT) to send as Authorization Bearer header */
19
+ authToken?: string;
28
20
  /** Custom placeholder text */
29
21
  placeholder?: string;
30
22
  /** Custom title */
31
23
  title?: string;
24
+ /** Brand icon shown in chat header/empty state and details title */
25
+ brandIcon?: ReactNode;
32
26
  /** Whether to auto-connect on mount */
33
27
  autoConnect?: boolean;
34
28
  /** Whether to use streaming (for protocols that support it) */
@@ -49,10 +43,16 @@ export interface ChatProps {
49
43
  height?: string | number;
50
44
  /** Show header with connection status */
51
45
  showHeader?: boolean;
46
+ /** Show the new chat (+) button in the header */
47
+ showNewChatButton?: boolean;
48
+ /** Show the clear chat button in the header */
49
+ showClearButton?: boolean;
52
50
  /** Show model selector (fetched from /configure endpoint) */
53
51
  showModelSelector?: boolean;
54
52
  /** Show tools menu (fetched from /configure endpoint) */
55
53
  showToolsMenu?: boolean;
54
+ /** Show input area */
55
+ showInput?: boolean;
56
56
  /** Show skills menu (fetched from /skills endpoint) */
57
57
  showSkillsMenu?: boolean;
58
58
  /** Indicate tools are accessed via Codemode meta-tools */
@@ -82,6 +82,10 @@ export interface ChatProps {
82
82
  submitOnSuggestionClick?: boolean;
83
83
  /** Description shown in empty state */
84
84
  description?: string;
85
+ /** Custom content to render in the chat header title row (left side). */
86
+ headerContent?: ReactNode;
87
+ /** Custom actions to render in the chat header title row (right side). */
88
+ headerActions?: ReactNode;
85
89
  /** Auto-focus the input on mount */
86
90
  autoFocus?: boolean;
87
91
  /** Identity providers configuration for OAuth */
@@ -142,6 +146,13 @@ export interface ChatProps {
142
146
  * Pass an empty array to explicitly disable all frontend tools.
143
147
  */
144
148
  frontendTools?: FrontendToolDefinition[];
149
+ /** Optional custom renderer for tool-call message cards. */
150
+ renderToolResult?: RenderToolResult;
151
+ /**
152
+ * Hide assistant messages that follow a rendered tool call UI.
153
+ * Useful to suppress raw tool-call/continuation text and show only tool cards.
154
+ */
155
+ hideMessagesAfterToolUI?: boolean;
145
156
  }
146
157
  /**
147
158
  * Chat Component
@@ -184,5 +195,5 @@ export interface ChatProps {
184
195
  * />
185
196
  * ```
186
197
  */
187
- export declare function Chat({ transport, extensions: _extensions, baseUrl, wsUrl, agentId, placeholder, title, autoConnect: _autoConnect, streaming: _streaming, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height, showHeader, showModelSelector, showToolsMenu, showSkillsMenu, codemodeEnabled, showTokenUsage, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount, suggestions, submitOnSuggestionClick, description, autoFocus, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation, chatViewMode, onChatViewModeChange, frontendTools, }: ChatProps): import("react/jsx-runtime").JSX.Element;
198
+ export declare function Chat({ protocol: transport, extensions: _extensions, baseUrl, wsUrl, agentId, authToken: authTokenProp, placeholder, title, brandIcon, autoConnect: _autoConnect, streaming: _streaming, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height, showHeader, showNewChatButton, showClearButton, showModelSelector, showToolsMenu, showInput, showSkillsMenu, codemodeEnabled, showTokenUsage, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount, suggestions, submitOnSuggestionClick, description, headerContent, headerActions, autoFocus, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation, chatViewMode, onChatViewModeChange, frontendTools, renderToolResult, hideMessagesAfterToolUI, }: ChatProps): import("react/jsx-runtime").JSX.Element;
188
199
  export default Chat;
@@ -16,16 +16,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
16
  * - Vercel AI - HTTP/SSE streaming (via SelfHostedInferenceProvider)
17
17
  * - Vercel AI Jupyter - Same as Vercel AI but served by Jupyter server
18
18
  *
19
- * @module components/chat/components/Chat
19
+ * @module chat/Chat
20
20
  */
21
21
  import { useEffect, useMemo, useState } from 'react';
22
22
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
23
23
  import { Text, Button, Spinner } from '@primer/react';
24
24
  import { AlertIcon, SyncIcon } from '@primer/octicons-react';
25
25
  import { Box } from '@datalayer/primer-addons';
26
+ import { useConnectedIdentities } from '../identity';
26
27
  import { ChatBase } from './base/ChatBase';
27
- import { AgentDetails } from './AgentDetails';
28
- import { useConnectedIdentities } from '../../../identity';
28
+ import { AgentDetails } from '../agents/AgentDetails';
29
29
  // Try to get Jupyter settings if available
30
30
  let getJupyterSettings;
31
31
  try {
@@ -62,8 +62,8 @@ const queryClient = new QueryClient();
62
62
  /**
63
63
  * Get transport endpoint path
64
64
  */
65
- function getEndpointPath(transport, agentId) {
66
- switch (transport) {
65
+ function getEndpointPath(protocol, agentId) {
66
+ switch (protocol) {
67
67
  case 'vercel-ai':
68
68
  return `/api/v1/vercel-ai/${agentId}`;
69
69
  case 'vercel-ai-jupyter':
@@ -84,12 +84,12 @@ function getEndpointPath(transport, agentId) {
84
84
  /**
85
85
  * Map transport type to protocol type
86
86
  */
87
- function getProtocolType(transport) {
88
- switch (transport) {
87
+ function getProtocolType(protocol) {
88
+ switch (protocol) {
89
89
  case 'vercel-ai-jupyter':
90
90
  return 'vercel-ai';
91
91
  default:
92
- return transport;
92
+ return protocol;
93
93
  }
94
94
  }
95
95
  /**
@@ -133,7 +133,7 @@ function getProtocolType(transport) {
133
133
  * />
134
134
  * ```
135
135
  */
136
- export function Chat({ transport, extensions: _extensions, baseUrl = 'http://localhost:8765', wsUrl, agentId, placeholder = 'Type your message...', title, autoConnect: _autoConnect = true, streaming: _streaming = true, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height = '600px', showHeader = true, showModelSelector = true, showToolsMenu = true, showSkillsMenu = false, codemodeEnabled = false, showTokenUsage = true, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount = true, suggestions, submitOnSuggestionClick = true, description, autoFocus = false, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation = true, chatViewMode, onChatViewModeChange, frontendTools, }) {
136
+ export function Chat({ protocol: transport, extensions: _extensions, baseUrl = 'http://localhost:8765', wsUrl, agentId, authToken: authTokenProp, placeholder = 'Type your message...', title, brandIcon, autoConnect: _autoConnect = true, streaming: _streaming = true, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height = '600px', showHeader = true, showNewChatButton = true, showClearButton = true, showModelSelector = true, showToolsMenu = true, showInput = true, showSkillsMenu = false, codemodeEnabled = false, showTokenUsage = true, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount = true, suggestions, submitOnSuggestionClick = true, description, headerContent, headerActions, autoFocus = false, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation = true, chatViewMode, onChatViewModeChange, frontendTools, renderToolResult, hideMessagesAfterToolUI = false, }) {
137
137
  const [error, setError] = useState(null);
138
138
  const [isInitializing, setIsInitializing] = useState(true);
139
139
  const [showDetails, setShowDetails] = useState(false);
@@ -165,7 +165,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
165
165
  const protocolConfig = useMemo(() => {
166
166
  try {
167
167
  let endpoint;
168
- let authToken;
168
+ let authToken = authTokenProp;
169
169
  let options;
170
170
  switch (transport) {
171
171
  case 'vercel-ai-jupyter': {
@@ -232,7 +232,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
232
232
  setError(err instanceof Error ? err.message : 'Failed to configure');
233
233
  return undefined;
234
234
  }
235
- }, [transport, baseUrl, wsUrl, agentId]);
235
+ }, [transport, baseUrl, wsUrl, agentId, authTokenProp]);
236
236
  // Set initialized once protocol config is built
237
237
  useEffect(() => {
238
238
  if (protocolConfig) {
@@ -285,7 +285,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
285
285
  display: showDetails ? 'flex' : 'none',
286
286
  flexDirection: 'column',
287
287
  height: '100%',
288
- }, children: _jsx(AgentDetails, { name: title || 'AI Agent', protocol: transport, url: protocolConfig?.endpoint || baseUrl, messageCount: messageCount, agentId: agentId, apiBase: baseUrl, identityProviders: identityProviders, onIdentityConnect: onIdentityConnect, onIdentityDisconnect: onIdentityDisconnect, onBack: () => setShowDetails(false) }) }), _jsxs(Box, { sx: {
288
+ }, children: _jsx(AgentDetails, { name: title || 'AI Agent', icon: brandIcon, protocol: transport, url: protocolConfig?.endpoint || baseUrl, messageCount: messageCount, agentId: agentId, apiBase: baseUrl, identityProviders: identityProviders, onIdentityConnect: onIdentityConnect, onIdentityDisconnect: onIdentityDisconnect, onBack: () => setShowDetails(false) }) }), _jsxs(Box, { sx: {
289
289
  display: showDetails ? 'none' : 'flex',
290
290
  flexDirection: 'column',
291
291
  height: '100%',
@@ -310,12 +310,12 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
310
310
  ? 'attention.fg'
311
311
  : 'danger.fg',
312
312
  flex: 1,
313
- }, children: errorBanner.message })] })), _jsx(ChatBase, { title: title, showHeader: showHeader, protocol: protocolConfig, placeholder: placeholder, description: description, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, autoFocus: autoFocus, runtimeId: runtimeId, historyEndpoint: historyEndpoint, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: () => setShowDetails(true), showModelSelector: showModelSelector, showToolsMenu: showToolsMenu, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, codemodeEnabled: codemodeEnabled, initialModel: initialModel, availableModels: availableModels, mcpServers: mcpServers, initialSkills: initialSkills, connectedIdentities: identitiesForChat, onNewChat: handleNewChat, onMessagesChange: messages => setMessageCount(messages.length), headerButtons: {
314
- showNewChat: true,
315
- showClear: true,
313
+ }, children: errorBanner.message })] })), _jsx(ChatBase, { title: title, brandIcon: brandIcon, showHeader: showHeader, protocol: protocolConfig, placeholder: placeholder, description: description, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, autoFocus: autoFocus, runtimeId: runtimeId, historyEndpoint: historyEndpoint, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: () => setShowDetails(true), headerContent: headerContent, headerActions: headerActions, showModelSelector: showModelSelector, showToolsMenu: showToolsMenu, showInput: showInput, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, codemodeEnabled: codemodeEnabled, initialModel: initialModel, availableModels: availableModels, mcpServers: mcpServers, initialSkills: initialSkills, connectedIdentities: identitiesForChat, onNewChat: handleNewChat, onMessagesChange: messages => setMessageCount(messages.length), headerButtons: {
314
+ showNewChat: showNewChatButton,
315
+ showClear: showClearButton,
316
316
  onNewChat: handleNewChat,
317
317
  }, avatarConfig: {
318
318
  showAvatars: true,
319
- }, backgroundColor: "canvas.default", focusTrigger: focusTrigger, chatViewMode: chatViewMode, onChatViewModeChange: onChatViewModeChange, frontendTools: frontendTools })] })] }) }));
319
+ }, backgroundColor: "canvas.default", focusTrigger: focusTrigger, chatViewMode: chatViewMode, onChatViewModeChange: onChatViewModeChange, frontendTools: frontendTools, renderToolResult: renderToolResult, hideMessagesAfterToolUI: hideMessagesAfterToolUI })] })] }) }));
320
320
  }
321
321
  export default Chat;
@@ -9,13 +9,11 @@
9
9
  * 2. Store mode: When `useStore` is true
10
10
  * 3. Any protocol supported by ChatBase (AG-UI, A2A, ACP, Vercel AI)
11
11
  *
12
- * @module components/chat/components/ChatFloating
12
+ * @module chat/ChatFloating
13
13
  */
14
14
  import React from 'react';
15
- import { type ChatBaseProps, type RenderToolResult, type ToolCallRenderContext, type ToolCallStatus, type ProtocolConfig, type RespondCallback, type Suggestion, type RemoteConfig, type ModelConfig, type BuiltinTool, type MCPServerConfig, type MCPServerTool, type ChatViewMode } from './base/ChatBase';
16
- import type { PoweredByTagProps } from './elements/PoweredByTag';
17
- import type { FrontendToolDefinition } from '../types/tool';
18
- export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult, RespondCallback, Suggestion, RemoteConfig, ModelConfig, BuiltinTool, MCPServerConfig, MCPServerTool, ChatViewMode, };
15
+ import type { PoweredByTagProps } from './display/PoweredByTag';
16
+ import type { ChatBaseProps, ChatViewMode, FrontendToolDefinition, ModelConfig, Protocol, ProtocolConfig, RenderToolResult, Suggestion } from '../types';
19
17
  /**
20
18
  * ChatFloating props
21
19
  */
@@ -26,10 +24,15 @@ export interface ChatFloatingProps {
26
24
  */
27
25
  endpoint?: string;
28
26
  /**
29
- * Protocol configuration for other protocols (A2A, ACP, Vercel AI).
30
- * Takes precedence over endpoint when provided.
27
+ * Protocol type or full configuration.
28
+ *
29
+ * When a `Protocol` string is provided (e.g. `'vercel-ai'`), it overrides the
30
+ * auto-detected protocol from the endpoint URL. When a full `ProtocolConfig`
31
+ * object is provided, it is used directly and takes precedence over endpoint.
32
+ *
33
+ * @default 'vercel-ai'
31
34
  */
32
- protocol?: ProtocolConfig;
35
+ protocol?: Protocol | ProtocolConfig;
33
36
  /**
34
37
  * Use Zustand store for state management instead of protocol endpoint.
35
38
  * @default false
@@ -182,6 +185,11 @@ export interface ChatFloatingProps {
182
185
  * Defaults to `{protocol.endpoint}/api/v1/history` when runtimeId is set.
183
186
  */
184
187
  historyEndpoint?: string;
188
+ /**
189
+ * Auth token for authenticating with the agent runtime.
190
+ * Used for indicator API calls (MCP status, sandbox status) and history.
191
+ */
192
+ authToken?: string;
185
193
  /**
186
194
  * Auth token for the history endpoint.
187
195
  */
@@ -206,5 +214,5 @@ export interface ChatFloatingProps {
206
214
  * ChatFloating component
207
215
  * A floating chat window built on ChatBase
208
216
  */
209
- export declare function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick, hideMessagesAfterToolUI, defaultViewMode, onViewModeChange, showPanelBackdrop, availableModels, showModelSelector, showToolsMenu, showSkillsMenu, showTokenUsage, runtimeId, historyEndpoint, historyAuthToken, pendingPrompt, showInformation, onInformationClick, panelProps, }: ChatFloatingProps): import("react/jsx-runtime").JSX.Element;
217
+ export declare function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick, hideMessagesAfterToolUI, defaultViewMode, onViewModeChange, showPanelBackdrop, availableModels, showModelSelector, showToolsMenu, showSkillsMenu, showTokenUsage, runtimeId, historyEndpoint, authToken, historyAuthToken, pendingPrompt, showInformation, onInformationClick, panelProps, }: ChatFloatingProps): import("react/jsx-runtime").JSX.Element;
210
218
  export default ChatFloating;
@@ -14,16 +14,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
14
14
  * 2. Store mode: When `useStore` is true
15
15
  * 3. Any protocol supported by ChatBase (AG-UI, A2A, ACP, Vercel AI)
16
16
  *
17
- * @module components/chat/components/ChatFloating
17
+ * @module chat/ChatFloating
18
18
  */
19
19
  import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
20
20
  import { IconButton, Text, Tooltip } from '@primer/react';
21
21
  import { Box } from '@datalayer/primer-addons';
22
22
  import { XIcon, CommentDiscussionIcon } from '@primer/octicons-react';
23
23
  import { AiAgentIcon } from '@datalayer/icons-react';
24
- import { ChatBase, } from './base/ChatBase';
25
- import { useChatOpen, useChatMessages, useChatStore } from '../store/chatStore';
26
- import { useChatKeyboardShortcuts, getShortcutDisplay, } from '../../../hooks/useKeyboardShortcuts';
24
+ import { ChatBase } from './base/ChatBase';
25
+ import { useChatOpen, useChatMessages, useChatStore, } from '../stores/chatStore';
26
+ import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
27
27
  /**
28
28
  * Hook to detect mobile viewport
29
29
  */
@@ -43,7 +43,7 @@ function useIsMobile(breakpoint = 640) {
43
43
  * ChatFloating component
44
44
  * A floating chat window built on ChatBase
45
45
  */
46
- export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode = true, title = 'Chat', description = 'Start a conversation with the AI agent.', position = 'bottom-right', defaultOpen = false, width = 400, height = 550, showHeader = true, showButton = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = '/', showPoweredBy = true, poweredByProps, clickOutsideToClose = false, escapeToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip = 'Chat with AI', brandColor, offset = 20, animationDuration = 200, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, defaultViewMode = 'floating', onViewModeChange, showPanelBackdrop = false, availableModels, showModelSelector = false, showToolsMenu = false, showSkillsMenu = false, showTokenUsage = true, runtimeId, historyEndpoint, historyAuthToken, pendingPrompt, showInformation = false, onInformationClick, panelProps, }) {
46
+ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode = true, title = 'Chat', description = 'Start a conversation with the AI agent.', position = 'bottom-right', defaultOpen = false, width = 400, height = 550, showHeader = true, showButton = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = '/', showPoweredBy = true, poweredByProps, clickOutsideToClose = false, escapeToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip = 'Chat with AI', brandColor, offset = 20, animationDuration = 200, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, defaultViewMode = 'floating', onViewModeChange, showPanelBackdrop = false, availableModels, showModelSelector = false, showToolsMenu = false, showSkillsMenu = false, showTokenUsage = true, runtimeId, historyEndpoint, authToken, historyAuthToken, pendingPrompt, showInformation = false, onInformationClick, panelProps, }) {
47
47
  // Store-based state
48
48
  const storeIsOpen = useChatOpen();
49
49
  const storeMessages = useChatMessages();
@@ -80,23 +80,30 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
80
80
  // Build protocol config from endpoint if not provided directly
81
81
  // Memoize to avoid creating new object on every render (which would trigger useEffect re-runs)
82
82
  const protocol = useMemo(() => {
83
- if (protocolProp)
83
+ // Full ProtocolConfig object takes precedence
84
+ if (protocolProp && typeof protocolProp === 'object')
84
85
  return protocolProp;
85
86
  if (!endpoint)
86
87
  return undefined;
88
+ // If protocolProp is a Protocol string, use it as explicit type override
89
+ const explicitType = typeof protocolProp === 'string' ? protocolProp : undefined;
87
90
  // Extract base URL from endpoint - everything before /api/v1/
88
91
  // e.g., https://prod1.datalayer.run/agent-runtimes/pool1/rt123/api/v1/ag-ui/default/
89
92
  // -> https://prod1.datalayer.run/agent-runtimes/pool1/rt123
90
93
  const baseUrl = endpoint.match(/^(.*?)\/api\/v1\//)?.[1] ||
91
94
  endpoint.match(/^(https?:\/\/[^/]+)/)?.[1] ||
92
95
  '';
93
- // Extract agentId from endpoint path (e.g., .../ag-ui/default/ -> default)
94
- const agentIdMatch = endpoint.match(/\/ag-ui\/([^/]+)/);
96
+ // Detect protocol type from endpoint path (fallback when no explicit type)
97
+ const protocolMatch = endpoint.match(/\/api\/v1\/(ag-ui|vercel-ai|a2a|acp)\//);
98
+ const detectedType = (explicitType ?? protocolMatch?.[1] ?? 'vercel-ai');
99
+ // Extract agentId from endpoint path
100
+ const agentIdMatch = endpoint.match(/\/api\/v1\/(?:ag-ui|vercel-ai|a2a\/agents|acp\/ws)\/([^/]+)/);
95
101
  const extractedAgentId = agentIdMatch ? agentIdMatch[1] : undefined;
96
102
  return {
97
- type: 'ag-ui',
103
+ type: detectedType,
98
104
  endpoint,
99
105
  agentId: extractedAgentId,
106
+ authToken,
100
107
  // Enable config query for model/tools/skills selector or token usage
101
108
  enableConfigQuery: showModelSelector || showToolsMenu || showSkillsMenu || showTokenUsage,
102
109
  // Config endpoint is at /api/v1/configure (global, not per-agent)
@@ -107,6 +114,7 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
107
114
  }, [
108
115
  protocolProp,
109
116
  endpoint,
117
+ authToken,
110
118
  showModelSelector,
111
119
  showToolsMenu,
112
120
  showSkillsMenu,
@@ -1,10 +1,10 @@
1
- import type { TransportType } from '../types/protocol';
1
+ import type { Protocol } from '../types/protocol';
2
2
  /**
3
3
  * Protocol configuration for ChatInline
4
4
  */
5
5
  export interface ChatInlineProtocolConfig {
6
6
  /** Protocol type (ag-ui, vercel-ai, etc.) */
7
- type: TransportType;
7
+ type: Protocol;
8
8
  /** Endpoint URL */
9
9
  endpoint: string;
10
10
  /** Authentication token */
@@ -15,7 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
15
15
  *
16
16
  * Uses Primer UI components instead of Tailwind CSS.
17
17
  *
18
- * @module components/chat/components/ChatInline
18
+ * @module chat/ChatInline
19
19
  */
20
20
  import { useState, useCallback, useMemo, useRef, useEffect, Fragment, } from 'react';
21
21
  import { Text, TextInput, IconButton, ActionList, Spinner, } from '@primer/react';
@@ -23,7 +23,8 @@ import { Box } from '@datalayer/primer-addons';
23
23
  import { CopyIcon, ArrowLeftIcon, SyncIcon, TrashIcon, CheckIcon, PlusIcon, PencilIcon, XIcon, } from '@primer/octicons-react';
24
24
  import { SparklesIcon } from '@datalayer/icons-react';
25
25
  import { AGUIAdapter } from '../protocols';
26
- import { generateMessageId } from '../types/message';
26
+ import { generateMessageId } from '../types/messages';
27
+ import { sanitizeAssistantContent } from '../utils';
27
28
  /**
28
29
  * Pre-defined AI action groups
29
30
  */
@@ -120,7 +121,7 @@ export function ChatInline({ selectedText, protocol, onReplaceSelection, onInser
120
121
  if (!protocol)
121
122
  return;
122
123
  const adapter = new AGUIAdapter({
123
- type: protocol.type,
124
+ protocol: protocol.type,
124
125
  baseUrl: protocol.endpoint,
125
126
  authToken: protocol.authToken,
126
127
  agentId: protocol.agentId,
@@ -132,9 +133,10 @@ export function ChatInline({ selectedText, protocol, onReplaceSelection, onInser
132
133
  switch (event.type) {
133
134
  case 'message':
134
135
  if (event.message?.content) {
135
- setAiResponse(typeof event.message.content === 'string'
136
- ? event.message.content
137
- : '');
136
+ const content = typeof event.message.content === 'string'
137
+ ? sanitizeAssistantContent(event.message.content)
138
+ : '';
139
+ setAiResponse(content);
138
140
  }
139
141
  break;
140
142
  case 'error':
@@ -6,12 +6,11 @@
6
6
  * This component uses ChatBase for all chat functionality and provides
7
7
  * a floating popup wrapper with animation, positioning, and FAB button.
8
8
  *
9
- * @module components/chat/components/ChatPopupStandalone
9
+ * @module chat/ChatPopupStandalone
10
10
  */
11
11
  import React from 'react';
12
- import { type ChatBaseProps, type RenderToolResult, type ToolCallRenderContext, type ToolCallStatus } from './base/ChatBase';
13
- import { type PoweredByTagProps } from './elements/PoweredByTag';
14
- export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult };
12
+ import { type PoweredByTagProps } from './display/PoweredByTag';
13
+ import { ChatBaseProps, RenderToolResult } from '../types';
15
14
  /**
16
15
  * Simple message handler type for standalone usage
17
16
  */
@@ -11,18 +11,18 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
11
11
  * This component uses ChatBase for all chat functionality and provides
12
12
  * a floating popup wrapper with animation, positioning, and FAB button.
13
13
  *
14
- * @module components/chat/components/ChatPopupStandalone
14
+ * @module chat/ChatPopupStandalone
15
15
  */
16
16
  import { useCallback, useEffect, useRef, useState, } from 'react';
17
17
  import { IconButton, Text, Tooltip, Textarea, Button } from '@primer/react';
18
18
  import { Box } from '@datalayer/primer-addons';
19
19
  import { XIcon, CommentDiscussionIcon, PaperAirplaneIcon, SquareCircleIcon, } from '@primer/octicons-react';
20
20
  import { AiAgentIcon } from '@datalayer/icons-react';
21
- import { ChatBase, } from './base/ChatBase';
22
- import { PoweredByTag } from './elements/PoweredByTag';
23
- import { useChatOpen, useChatMessages, useChatStore, useChatLoading, useChatStreaming, } from '../store/chatStore';
24
- import { generateMessageId, createUserMessage, createAssistantMessage, } from '../types/message';
25
- import { useChatKeyboardShortcuts, getShortcutDisplay, } from '../../../hooks/useKeyboardShortcuts';
21
+ import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
22
+ import { ChatBase } from './base/ChatBase';
23
+ import { PoweredByTag } from './display/PoweredByTag';
24
+ import { useChatOpen, useChatMessages, useChatStore, useChatLoading, useChatStreaming, } from '../stores/chatStore';
25
+ import { generateMessageId, createUserMessage, createAssistantMessage, } from '../types/messages';
26
26
  /**
27
27
  * Hook to detect mobile viewport
28
28
  */
@@ -4,18 +4,27 @@
4
4
  * Features: keyboard shortcuts, mobile responsive, powered by tag.
5
5
  * Built on top of ChatBase for core chat functionality.
6
6
  *
7
- * @module components/chat/components/ChatSidebar
7
+ * @module chat/ChatSidebar
8
8
  */
9
9
  import React from 'react';
10
- import { type ChatBaseProps, type MessageHandler } from './base/ChatBase';
11
- import type { PoweredByTagProps } from './elements/PoweredByTag';
12
- export type { MessageHandler };
10
+ import type { PoweredByTagProps } from './display/PoweredByTag';
11
+ import type { ChatBaseProps, MessageHandler, Protocol, ProtocolConfig } from '../types';
13
12
  /**
14
13
  * ChatSidebar props
15
14
  */
16
15
  export interface ChatSidebarProps {
17
16
  /** Sidebar title */
18
17
  title?: string;
18
+ /**
19
+ * Protocol type or full configuration.
20
+ *
21
+ * When a `Protocol` string is provided (e.g. `'vercel-ai'`), it is forwarded
22
+ * to ChatBase. When a full `ProtocolConfig` object is provided, it is passed
23
+ * directly via `panelProps`.
24
+ *
25
+ * @default 'vercel-ai'
26
+ */
27
+ protocol?: Protocol | ProtocolConfig;
19
28
  /** Initial open state */
20
29
  defaultOpen?: boolean;
21
30
  /** Sidebar position */
@@ -79,5 +88,5 @@ export interface ChatSidebarProps {
79
88
  /**
80
89
  * Chat Sidebar component
81
90
  */
82
- export declare function ChatSidebar({ title, defaultOpen, position, width, showHeader, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming, placeholder, description, pendingPrompt, panelProps, }: ChatSidebarProps): import("react/jsx-runtime").JSX.Element;
91
+ export declare function ChatSidebar({ title, protocol: protocolProp, defaultOpen, position, width, showHeader, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming, placeholder, description, pendingPrompt, panelProps, }: ChatSidebarProps): import("react/jsx-runtime").JSX.Element;
83
92
  export default ChatSidebar;
@@ -9,16 +9,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
9
9
  * Features: keyboard shortcuts, mobile responsive, powered by tag.
10
10
  * Built on top of ChatBase for core chat functionality.
11
11
  *
12
- * @module components/chat/components/ChatSidebar
12
+ * @module chat/ChatSidebar
13
13
  */
14
14
  import { useCallback, useEffect, useRef, useState } from 'react';
15
15
  import { IconButton, Text } from '@primer/react';
16
16
  import { Box } from '@datalayer/primer-addons';
17
17
  import { SidebarCollapseIcon, SidebarExpandIcon, XIcon, } from '@primer/octicons-react';
18
18
  import { AiAgentIcon } from '@datalayer/icons-react';
19
- import { ChatBase, } from './base/ChatBase';
20
- import { useChatStore, useChatOpen, useChatMessages } from '../store/chatStore';
21
- import { useChatKeyboardShortcuts, getShortcutDisplay, } from '../../../hooks/useKeyboardShortcuts';
19
+ import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
20
+ import { ChatBase } from './base/ChatBase';
21
+ import { useChatStore, useChatOpen, useChatMessages, } from '../stores/chatStore';
22
22
  /**
23
23
  * Hook to detect mobile viewport
24
24
  */
@@ -37,7 +37,7 @@ function useIsMobile(breakpoint = 640) {
37
37
  /**
38
38
  * Chat Sidebar component
39
39
  */
40
- export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'right', width = 400, showHeader = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = 'k', showPoweredBy = true, poweredByProps, clickOutsideToClose = true, escapeToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming = true, placeholder = 'Ask a question...', description, pendingPrompt, panelProps, }) {
40
+ export function ChatSidebar({ title = 'Chat', protocol: protocolProp, defaultOpen = true, position = 'right', width = 400, showHeader = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = 'k', showPoweredBy = true, poweredByProps, clickOutsideToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming = true, placeholder = 'Ask a question...', description, pendingPrompt, panelProps, }) {
41
41
  const isOpen = useChatOpen();
42
42
  const messages = useChatMessages();
43
43
  const setOpen = useChatStore(state => state.setOpen);
@@ -138,34 +138,56 @@ export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'ri
138
138
  // Collapsed state
139
139
  if (!isOpen) {
140
140
  return (_jsxs(Box, { ref: sidebarRef, className: className, sx: {
141
- position: 'relative',
141
+ position: 'fixed',
142
+ top: 12,
143
+ ...(position === 'right' ? { right: 12 } : { left: 12 }),
144
+ zIndex: 1001,
142
145
  display: 'flex',
143
146
  flexDirection: 'column',
144
147
  alignItems: 'center',
145
- p: 2,
146
- bg: 'canvas.subtle',
147
- borderLeft: position === 'right' ? '1px solid' : 'none',
148
- borderRight: position === 'left' ? '1px solid' : 'none',
149
- borderColor: 'border.default',
150
- width: 48,
151
- }, children: [_jsx(IconButton, { icon: position === 'right' ? SidebarExpandIcon : SidebarCollapseIcon, "aria-label": `Open chat${shortcutHint ? ` (${shortcutHint})` : ''}`, onClick: handleToggle, variant: "invisible" }), _jsx(Box, { sx: { mt: 2 }, children: brandIcon || _jsx(AiAgentIcon, { colored: true, size: 24 }) }), messages.length > 0 && (_jsx(Box, { sx: {
152
- mt: 2,
153
- px: 2,
154
- py: 1,
155
- bg: 'accent.emphasis',
156
- color: 'fg.onEmphasis',
157
- borderRadius: '50%',
158
- fontSize: 0,
159
- fontWeight: 'bold',
160
- }, children: messages.length })), shortcutHint && (_jsx(Box, { sx: {
161
- mt: 'auto',
162
- mb: 1,
148
+ gap: 2,
149
+ }, children: [_jsxs(Box, { sx: { position: 'relative' }, children: [_jsx(IconButton, { icon: position === 'right' ? SidebarExpandIcon : SidebarCollapseIcon, "aria-label": `Open chat${shortcutHint ? ` (${shortcutHint})` : ''}`, onClick: handleToggle, variant: "default", size: "small", sx: {
150
+ bg: 'canvas.default',
151
+ border: '1px solid',
152
+ borderColor: 'border.default',
153
+ boxShadow: 'shadow.small',
154
+ } }), messages.length > 0 && (_jsx(Box, { sx: {
155
+ position: 'absolute',
156
+ top: -6,
157
+ right: -6,
158
+ minWidth: 16,
159
+ height: 16,
160
+ px: 1,
161
+ display: 'flex',
162
+ alignItems: 'center',
163
+ justifyContent: 'center',
164
+ bg: 'accent.emphasis',
165
+ color: 'fg.onEmphasis',
166
+ borderRadius: '50%',
167
+ fontSize: '10px',
168
+ fontWeight: 'bold',
169
+ boxShadow: 'shadow.small',
170
+ }, children: messages.length > 99 ? '99+' : messages.length }))] }), _jsx(Box, { sx: {
171
+ width: 32,
172
+ height: 32,
173
+ display: 'flex',
174
+ alignItems: 'center',
175
+ justifyContent: 'center',
176
+ bg: 'canvas.default',
177
+ border: '1px solid',
178
+ borderColor: 'border.default',
179
+ borderRadius: 2,
180
+ boxShadow: 'shadow.small',
181
+ }, children: brandIcon || _jsx(AiAgentIcon, { colored: true, size: 20 }) }), shortcutHint && (_jsx(Box, { sx: {
163
182
  px: 1,
164
183
  py: '2px',
165
- bg: 'neutral.muted',
184
+ bg: 'canvas.default',
185
+ border: '1px solid',
186
+ borderColor: 'border.default',
166
187
  color: 'fg.muted',
167
188
  borderRadius: 1,
168
189
  fontSize: 0,
190
+ boxShadow: 'shadow.small',
169
191
  }, children: _jsx(Text, { sx: { fontSize: '10px', fontFamily: 'mono' }, children: shortcutHint }) }))] }));
170
192
  }
171
193
  // Mobile full-screen overlay
@@ -206,7 +228,7 @@ export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'ri
206
228
  borderRight: !isMobile && position === 'left' ? '1px solid' : 'none',
207
229
  borderColor: 'border.default',
208
230
  ...mobileStyles,
209
- }, children: _jsx(ChatBase, { title: title, showHeader: showHeader, brandIcon: brandIcon, headerButtons: {
231
+ }, children: _jsx(ChatBase, { title: title, showHeader: showHeader, brandIcon: brandIcon, protocol: protocolProp, headerButtons: {
210
232
  showNewChat: showNewChatButton,
211
233
  showClear: showClearButton && messages.length > 0,
212
234
  showSettings: showSettingsButton,
@@ -6,12 +6,11 @@
6
6
  * This component uses ChatBase for all chat functionality and provides
7
7
  * a floating popup wrapper with animation, positioning, and FAB button.
8
8
  *
9
- * @module components/chat/components/ChatStandalone
9
+ * @module chat/ChatStandalone
10
10
  */
11
11
  import React from 'react';
12
- import { type ChatBaseProps, type RenderToolResult, type ToolCallRenderContext, type ToolCallStatus, type StreamingMessageOptions, type MessageHandler } from './base/ChatBase';
13
- import { type PoweredByTagProps } from './elements/PoweredByTag';
14
- export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult, StreamingMessageOptions, MessageHandler, };
12
+ import { type PoweredByTagProps } from './display/PoweredByTag';
13
+ import { type ChatBaseProps, type RenderToolResult, type MessageHandler } from '../types';
15
14
  /**
16
15
  * ChatStandalone props
17
16
  */
@@ -11,17 +11,17 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
11
11
  * This component uses ChatBase for all chat functionality and provides
12
12
  * a floating popup wrapper with animation, positioning, and FAB button.
13
13
  *
14
- * @module components/chat/components/ChatStandalone
14
+ * @module chat/ChatStandalone
15
15
  */
16
16
  import { useCallback, useEffect, useRef, useState } from 'react';
17
17
  import { IconButton, Text, Tooltip } from '@primer/react';
18
18
  import { Box } from '@datalayer/primer-addons';
19
19
  import { XIcon, CommentDiscussionIcon } from '@primer/octicons-react';
20
20
  import { AiAgentIcon } from '@datalayer/icons-react';
21
- import { ChatBase, } from './base/ChatBase';
22
- import { PoweredByTag } from './elements/PoweredByTag';
23
- import { useChatOpen, useChatMessages, useChatStore } from '../store/chatStore';
24
- import { useChatKeyboardShortcuts, getShortcutDisplay, } from '../../../hooks/useKeyboardShortcuts';
21
+ import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
22
+ import { ChatBase } from './base/ChatBase';
23
+ import { PoweredByTag } from './display/PoweredByTag';
24
+ import { useChatOpen, useChatMessages, useChatStore, } from '../stores/chatStore';
25
25
  /**
26
26
  * Hook to detect mobile viewport
27
27
  */