@datalayer/agent-runtimes 1.0.1 → 1.0.3

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 (610) hide show
  1. package/README.md +1 -1
  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 +25 -16
  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 +1287 -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 +319 -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 +169 -0
  94. package/lib/client/AgentsMixin.js +279 -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 +152 -0
  99. package/lib/components/OutputCard.d.ts +8 -0
  100. package/lib/components/OutputCard.js +80 -0
  101. package/lib/components/ToolApprovalCard.d.ts +33 -0
  102. package/lib/components/ToolApprovalCard.js +60 -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 +506 -0
  133. package/lib/examples/AgentCodemodeExample.d.ts +14 -0
  134. package/lib/examples/AgentCodemodeExample.js +262 -0
  135. package/lib/examples/AgentEvalsExample.d.ts +14 -0
  136. package/lib/examples/AgentEvalsExample.js +216 -0
  137. package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
  138. package/lib/examples/AgentGuardrailsExample.js +218 -0
  139. package/lib/examples/AgentMemoryExample.d.ts +14 -0
  140. package/lib/examples/AgentMemoryExample.js +234 -0
  141. package/lib/examples/AgentMonitoringExample.d.ts +13 -0
  142. package/lib/examples/AgentMonitoringExample.js +311 -0
  143. package/lib/examples/AgentNotificationsExample.d.ts +14 -0
  144. package/lib/examples/AgentNotificationsExample.js +273 -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 +211 -0
  149. package/lib/examples/AgentSandboxExample.d.ts +17 -0
  150. package/lib/examples/AgentSandboxExample.js +496 -0
  151. package/lib/examples/AgentSkillsExample.d.ts +3 -0
  152. package/lib/examples/AgentSkillsExample.js +290 -0
  153. package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
  154. package/lib/examples/AgentToolApprovalsExample.js +672 -0
  155. package/lib/examples/AgentTriggersExample.d.ts +14 -0
  156. package/lib/examples/AgentTriggersExample.js +523 -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} +4 -4
  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/ExampleWrapper.d.ts +12 -0
  178. package/lib/examples/components/ExampleWrapper.js +16 -0
  179. package/lib/examples/components/Header.d.ts +2 -2
  180. package/lib/examples/components/HeaderControls.js +1 -1
  181. package/lib/examples/components/LexicalEditor.d.ts +1 -12
  182. package/lib/examples/components/LexicalEditor.js +1 -12
  183. package/lib/examples/components/MainContent.d.ts +4 -11
  184. package/lib/examples/components/MainContent.js +6 -60
  185. package/lib/examples/components/index.d.ts +1 -0
  186. package/lib/examples/components/index.js +1 -0
  187. package/lib/examples/example-selector.d.ts +1 -1
  188. package/lib/examples/example-selector.js +35 -22
  189. package/lib/examples/index.d.ts +26 -13
  190. package/lib/examples/index.js +26 -12
  191. package/lib/examples/main.d.ts +6 -0
  192. package/lib/examples/main.js +20 -43
  193. package/lib/examples/utils/examplesStore.d.ts +4 -0
  194. package/lib/examples/{stores → utils}/examplesStore.js +1 -1
  195. package/lib/examples/utils/notebooks/Empty.ipynb.json +33 -0
  196. package/lib/examples/utils/notebooks/NotebookExample2.ipynb.json +48 -0
  197. package/lib/examples/utils/themeStore.d.ts +8 -0
  198. package/lib/examples/utils/themeStore.js +14 -0
  199. package/lib/extensions/A2UIExtension.d.ts +65 -0
  200. package/lib/extensions/A2UIExtension.js +202 -0
  201. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.d.ts +2 -3
  202. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.js +0 -2
  203. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.d.ts +2 -2
  204. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.js +1 -1
  205. package/lib/extensions/index.d.ts +9 -0
  206. package/lib/{components/chat/extensions → extensions}/index.js +2 -2
  207. package/lib/hooks/index.d.ts +37 -12
  208. package/lib/hooks/index.js +37 -12
  209. package/lib/hooks/useAIAgentsWebSocket.d.ts +29 -0
  210. package/lib/hooks/useAIAgentsWebSocket.js +136 -0
  211. package/lib/hooks/{useAGUI.d.ts → useAgUi.d.ts} +2 -2
  212. package/lib/hooks/{useAGUI.js → useAgUi.js} +2 -2
  213. package/lib/hooks/useAgents.d.ts +150 -11
  214. package/lib/hooks/useAgents.js +623 -61
  215. package/lib/hooks/useAgentsCatalog.d.ts +25 -0
  216. package/lib/hooks/useAgentsCatalog.js +28 -0
  217. package/lib/hooks/useAgentsRegistry.d.ts +10 -0
  218. package/lib/hooks/useAgentsRegistry.js +20 -0
  219. package/lib/hooks/useAgentsService.d.ts +22 -0
  220. package/lib/hooks/useAgentsService.js +146 -0
  221. package/lib/hooks/useChat.d.ts +2 -2
  222. package/lib/hooks/useChat.js +14 -8
  223. package/lib/hooks/useCheckpoints.d.ts +176 -0
  224. package/lib/hooks/useCheckpoints.js +466 -0
  225. package/lib/hooks/useConfig.d.ts +11 -0
  226. package/lib/hooks/useConfig.js +46 -0
  227. package/lib/hooks/useContextSnapshot.d.ts +11 -0
  228. package/lib/hooks/useContextSnapshot.js +44 -0
  229. package/lib/hooks/useMonitoring.d.ts +24 -0
  230. package/lib/hooks/useMonitoring.js +111 -0
  231. package/lib/hooks/useNotifications.d.ts +67 -0
  232. package/lib/hooks/useNotifications.js +208 -0
  233. package/lib/hooks/useSandbox.d.ts +12 -0
  234. package/lib/hooks/useSandbox.js +49 -0
  235. package/lib/hooks/useSkills.d.ts +13 -0
  236. package/lib/hooks/useSkills.js +46 -0
  237. package/lib/hooks/useToolApprovals.d.ts +45 -0
  238. package/lib/hooks/useToolApprovals.js +126 -0
  239. package/lib/hooks/useTools.d.ts +4 -4
  240. package/lib/hooks/useTools.js +2 -2
  241. package/lib/hooks/{useVercelChat.d.ts → useVercelAI.d.ts} +3 -3
  242. package/lib/hooks/{useVercelChat.js → useVercelAI.js} +2 -2
  243. package/lib/{components/chat/components → identity}/AgentIdentity.d.ts +1 -1
  244. package/lib/{components/chat/components → identity}/AgentIdentity.js +4 -3
  245. package/lib/identity/index.d.ts +1 -0
  246. package/lib/identity/index.js +2 -0
  247. package/lib/index.d.ts +4 -3
  248. package/lib/index.js +3 -2
  249. package/lib/{components/chat/inference → inference}/BaseInferenceProvider.d.ts +3 -3
  250. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.d.ts +3 -3
  251. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.js +1 -1
  252. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.d.ts +2 -2
  253. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.js +1 -1
  254. package/lib/{components/chat/inference → inference}/index.d.ts +1 -1
  255. package/lib/{components/chat/inference → inference}/index.js +1 -1
  256. package/lib/lexical/ChatInlinePlugin.d.ts +1 -1
  257. package/lib/lexical/ChatInlinePlugin.js +1 -1
  258. package/lib/{components → mcp}/McpServerManager.d.ts +2 -3
  259. package/lib/{components → mcp}/McpServerManager.js +1 -1
  260. package/lib/mcp/index.d.ts +1 -0
  261. package/lib/{specs/agents/codeai → mcp}/index.js +1 -1
  262. package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.d.ts +3 -3
  263. package/lib/{components/chat/middleware → middleware}/index.d.ts +1 -1
  264. package/lib/{components/chat/middleware → middleware}/index.js +1 -1
  265. package/lib/{components/chat/protocols → protocols}/A2AAdapter.d.ts +6 -6
  266. package/lib/{components/chat/protocols → protocols}/A2AAdapter.js +3 -3
  267. package/lib/{components/chat/protocols → protocols}/ACPAdapter.d.ts +6 -6
  268. package/lib/{components/chat/protocols → protocols}/ACPAdapter.js +4 -4
  269. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.d.ts +14 -6
  270. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.js +72 -10
  271. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.d.ts +6 -6
  272. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.js +1 -1
  273. package/lib/{components/chat/protocols → protocols}/VercelAIAdapter.d.ts +31 -7
  274. package/lib/protocols/VercelAIAdapter.js +682 -0
  275. package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
  276. package/lib/{components/chat/protocols → protocols}/index.js +1 -1
  277. package/lib/specs/agents/agents.d.ts +54 -0
  278. package/lib/specs/agents/agents.js +2638 -0
  279. package/lib/specs/agents/index.js +14 -7
  280. package/lib/specs/envvars.d.ts +11 -19
  281. package/lib/specs/envvars.js +42 -21
  282. package/lib/specs/evals.d.ts +20 -0
  283. package/lib/specs/evals.js +133 -0
  284. package/lib/specs/events.d.ts +18 -0
  285. package/lib/specs/events.js +182 -0
  286. package/lib/specs/frontendTools.d.ts +14 -0
  287. package/lib/specs/frontendTools.js +53 -0
  288. package/lib/specs/guardrails.d.ts +22 -0
  289. package/lib/specs/guardrails.js +391 -0
  290. package/lib/specs/index.d.ts +15 -2
  291. package/lib/specs/index.js +15 -2
  292. package/lib/specs/mcpServers.d.ts +13 -10
  293. package/lib/specs/mcpServers.js +95 -25
  294. package/lib/specs/memory.d.ts +34 -0
  295. package/lib/specs/memory.js +99 -0
  296. package/lib/specs/models.d.ts +22 -35
  297. package/lib/specs/models.js +64 -44
  298. package/lib/specs/notifications.d.ts +17 -0
  299. package/lib/specs/notifications.js +187 -0
  300. package/lib/specs/outputs.d.ts +19 -0
  301. package/lib/specs/outputs.js +112 -0
  302. package/lib/specs/skills.d.ts +7 -16
  303. package/lib/specs/skills.js +89 -12
  304. package/lib/specs/teams/index.d.ts +17 -0
  305. package/lib/specs/teams/index.js +37 -0
  306. package/lib/specs/teams/teams.d.ts +27 -0
  307. package/lib/specs/teams/teams.js +1120 -0
  308. package/lib/specs/tools.d.ts +15 -0
  309. package/lib/specs/tools.js +83 -0
  310. package/lib/specs/triggers.d.ts +15 -0
  311. package/lib/specs/triggers.js +117 -0
  312. package/lib/stores/agentsStore.d.ts +123 -0
  313. package/lib/stores/agentsStore.js +270 -0
  314. package/lib/{components/chat/store → stores}/chatStore.d.ts +3 -2
  315. package/lib/{components/chat/store → stores}/chatStore.js +2 -2
  316. package/lib/{components/chat/store → stores}/conversationStore.d.ts +2 -2
  317. package/lib/{components/chat/store → stores}/conversationStore.js +3 -3
  318. package/lib/{components/chat/store → stores}/index.d.ts +3 -2
  319. package/lib/{components/chat/store → stores}/index.js +3 -2
  320. package/lib/{components/chat/tools → tools}/ToolExecutor.d.ts +2 -2
  321. package/lib/{components/chat/tools → tools}/ToolExecutor.js +1 -1
  322. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +1 -1
  323. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +14 -10
  324. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +31 -21
  325. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +1 -1
  326. package/lib/tools/index.d.ts +3 -0
  327. package/lib/tools/index.js +3 -7
  328. package/lib/types/a2a.d.ts +39 -0
  329. package/lib/types/acp.d.ts +21 -0
  330. package/lib/types/ag-ui.d.ts +25 -0
  331. package/lib/types/agents-lifecycle.d.ts +36 -0
  332. package/lib/types/agents.d.ts +80 -0
  333. package/lib/types/agents.js +22 -0
  334. package/lib/types/agentspecs.d.ts +90 -0
  335. package/lib/{components/chat/components/base/ChatBase.d.ts → types/chat.d.ts} +60 -100
  336. package/lib/types/checkpoints.d.ts +32 -0
  337. package/lib/types/checkpoints.js +5 -0
  338. package/lib/types/config.d.ts +67 -0
  339. package/lib/{runtime/types.js → types/config.js} +2 -2
  340. package/lib/types/connection.d.ts +31 -0
  341. package/lib/types/connection.js +5 -0
  342. package/lib/types/context.d.ts +67 -0
  343. package/lib/types/context.js +5 -0
  344. package/lib/types/cost.d.ts +42 -0
  345. package/lib/types/cost.js +5 -0
  346. package/lib/types/envvars.d.ts +21 -0
  347. package/lib/types/envvars.js +5 -0
  348. package/lib/types/evals.d.ts +66 -0
  349. package/lib/types/evals.js +5 -0
  350. package/lib/types/events.d.ts +49 -0
  351. package/lib/types/events.js +5 -0
  352. package/lib/types/eventspecs.d.ts +39 -0
  353. package/lib/types/eventspecs.js +5 -0
  354. package/lib/types/examples.d.ts +31 -0
  355. package/lib/types/examples.js +5 -0
  356. package/lib/{components/chat/types → types}/execution.d.ts +10 -1
  357. package/lib/{components/chat/types/extension.d.ts → types/extensions.d.ts} +3 -3
  358. package/lib/types/guardrails.d.ts +106 -0
  359. package/lib/types/guardrails.js +5 -0
  360. package/lib/types/index.d.ts +36 -2
  361. package/lib/types/index.js +35 -2
  362. package/lib/{components/chat/types → types}/inference.d.ts +3 -3
  363. package/lib/types/inference.js +5 -0
  364. package/lib/types/mcp.d.ts +117 -0
  365. package/lib/types/mcp.js +27 -0
  366. package/lib/types/memory.d.ts +23 -0
  367. package/lib/types/memory.js +5 -0
  368. package/lib/{components/chat/types/message.d.ts → types/messages.d.ts} +20 -1
  369. package/lib/{components/chat/types → types}/middleware.d.ts +3 -3
  370. package/lib/types/models.d.ts +63 -0
  371. package/lib/types/models.js +5 -0
  372. package/lib/types/notifications.d.ts +85 -0
  373. package/lib/types/notifications.js +5 -0
  374. package/lib/types/outputs.d.ts +51 -0
  375. package/lib/types/outputs.js +5 -0
  376. package/lib/{components/chat/types → types}/protocol.d.ts +37 -99
  377. package/lib/types/protocol.js +5 -0
  378. package/lib/types/sandbox.d.ts +27 -0
  379. package/lib/types/sandbox.js +24 -0
  380. package/lib/types/skills.d.ts +74 -0
  381. package/lib/types/skills.js +5 -0
  382. package/lib/types/teams.d.ts +133 -0
  383. package/lib/types/teams.js +5 -0
  384. package/lib/types/tool-approvals.d.ts +39 -0
  385. package/lib/types/tool-approvals.js +5 -0
  386. package/lib/{components/chat/types/tool.d.ts → types/tools.d.ts} +59 -4
  387. package/lib/types/triggers.d.ts +48 -0
  388. package/lib/types/triggers.js +5 -0
  389. package/lib/types/usage.d.ts +36 -0
  390. package/lib/types/usage.js +5 -0
  391. package/lib/utils/index.d.ts +1 -0
  392. package/lib/utils/index.js +5 -0
  393. package/lib/utils/utils.d.ts +60 -0
  394. package/lib/utils/utils.js +205 -0
  395. package/package.json +13 -14
  396. package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
  397. package/scripts/codegen/__pycache__/generate_envvars.cpython-313.pyc +0 -0
  398. package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
  399. package/scripts/codegen/__pycache__/generate_guardrails.cpython-313.pyc +0 -0
  400. package/scripts/codegen/__pycache__/generate_mcp_servers.cpython-313.pyc +0 -0
  401. package/scripts/codegen/__pycache__/generate_memory.cpython-313.pyc +0 -0
  402. package/scripts/codegen/__pycache__/generate_models.cpython-313.pyc +0 -0
  403. package/scripts/codegen/__pycache__/generate_notifications.cpython-313.pyc +0 -0
  404. package/scripts/codegen/__pycache__/generate_outputs.cpython-313.pyc +0 -0
  405. package/scripts/codegen/__pycache__/generate_skills.cpython-313.pyc +0 -0
  406. package/scripts/codegen/__pycache__/generate_teams.cpython-313.pyc +0 -0
  407. package/scripts/codegen/__pycache__/generate_tools.cpython-313.pyc +0 -0
  408. package/scripts/codegen/__pycache__/generate_triggers.cpython-313.pyc +0 -0
  409. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  410. package/scripts/codegen/generate_agents.py +464 -58
  411. package/scripts/codegen/generate_envvars.py +36 -35
  412. package/scripts/codegen/generate_evals.py +279 -0
  413. package/scripts/codegen/generate_events.py +312 -0
  414. package/scripts/codegen/generate_frontend_tools.py +266 -0
  415. package/scripts/codegen/generate_guardrails.py +475 -0
  416. package/scripts/codegen/generate_mcp_servers.py +36 -9
  417. package/scripts/codegen/generate_memory.py +468 -0
  418. package/scripts/codegen/generate_models.py +22 -46
  419. package/scripts/codegen/generate_notifications.py +309 -0
  420. package/scripts/codegen/generate_outputs.py +267 -0
  421. package/scripts/codegen/generate_skills.py +108 -51
  422. package/scripts/codegen/generate_teams.py +922 -0
  423. package/scripts/codegen/generate_tools.py +326 -0
  424. package/scripts/codegen/generate_triggers.py +295 -0
  425. package/scripts/codegen/versioning.py +53 -0
  426. package/lib/components/chat/components/base/ChatBase.js +0 -2240
  427. package/lib/components/chat/components/base/InputPrompt.d.ts +0 -42
  428. package/lib/components/chat/components/base/InputPrompt.js +0 -131
  429. package/lib/components/chat/components/display/index.d.ts +0 -6
  430. package/lib/components/chat/components/index.d.ts +0 -26
  431. package/lib/components/chat/components/index.js +0 -39
  432. package/lib/components/chat/extensions/A2UIExtension.d.ts +0 -87
  433. package/lib/components/chat/extensions/A2UIExtension.js +0 -312
  434. package/lib/components/chat/extensions/index.d.ts +0 -10
  435. package/lib/components/chat/index.d.ts +0 -61
  436. package/lib/components/chat/index.js +0 -76
  437. package/lib/components/chat/protocols/VercelAIAdapter.js +0 -315
  438. package/lib/components/chat/tools/index.d.ts +0 -8
  439. package/lib/components/chat/tools/index.js +0 -11
  440. package/lib/components/chat/types/index.d.ts +0 -12
  441. package/lib/components/chat/types/index.js +0 -17
  442. package/lib/components/sparklines/Sparklines.d.ts +0 -16
  443. package/lib/components/sparklines/Sparklines.js +0 -65
  444. package/lib/components/sparklines/SparklinesLine.d.ts +0 -8
  445. package/lib/components/sparklines/SparklinesLine.js +0 -37
  446. package/lib/components/sparklines/dataProcessing.d.ts +0 -25
  447. package/lib/components/sparklines/dataProcessing.js +0 -35
  448. package/lib/components/sparklines/index.d.ts +0 -4
  449. package/lib/components/sparklines/index.js +0 -7
  450. package/lib/components/sparklines/types.d.ts +0 -36
  451. package/lib/examples/stores/examplesStore.d.ts +0 -5
  452. package/lib/examples/stores/notebooks/Empty.ipynb.json +0 -33
  453. package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +0 -48
  454. package/lib/examples/stores/themeStore.d.ts +0 -33
  455. package/lib/examples/stores/themeStore.js +0 -38
  456. package/lib/hooks/useKeyboardShortcuts.d.ts +0 -47
  457. package/lib/hooks/useKeyboardShortcuts.js +0 -153
  458. package/lib/hooks/useMobile.d.ts +0 -1
  459. package/lib/hooks/useMobile.js +0 -19
  460. package/lib/hooks/useNotebookAIAgent.d.ts +0 -8
  461. package/lib/hooks/useNotebookAIAgent.js +0 -73
  462. package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +0 -7
  463. package/lib/renderers/a2ui/components/A2UIRenderer.js +0 -102
  464. package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +0 -7
  465. package/lib/renderers/a2ui/components/SurfaceRenderer.js +0 -101
  466. package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +0 -9
  467. package/lib/renderers/a2ui/components/content/AudioPlayer.js +0 -38
  468. package/lib/renderers/a2ui/components/content/Divider.d.ts +0 -9
  469. package/lib/renderers/a2ui/components/content/Divider.js +0 -35
  470. package/lib/renderers/a2ui/components/content/Icon.d.ts +0 -9
  471. package/lib/renderers/a2ui/components/content/Icon.js +0 -110
  472. package/lib/renderers/a2ui/components/content/Image.d.ts +0 -9
  473. package/lib/renderers/a2ui/components/content/Image.js +0 -61
  474. package/lib/renderers/a2ui/components/content/Text.d.ts +0 -9
  475. package/lib/renderers/a2ui/components/content/Text.js +0 -64
  476. package/lib/renderers/a2ui/components/content/Video.d.ts +0 -9
  477. package/lib/renderers/a2ui/components/content/Video.js +0 -37
  478. package/lib/renderers/a2ui/components/content/index.d.ts +0 -6
  479. package/lib/renderers/a2ui/components/content/index.js +0 -25
  480. package/lib/renderers/a2ui/components/index.d.ts +0 -5
  481. package/lib/renderers/a2ui/components/index.js +0 -24
  482. package/lib/renderers/a2ui/components/interactive/Button.d.ts +0 -11
  483. package/lib/renderers/a2ui/components/interactive/Button.js +0 -71
  484. package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +0 -9
  485. package/lib/renderers/a2ui/components/interactive/CheckBox.js +0 -48
  486. package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +0 -9
  487. package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +0 -62
  488. package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +0 -9
  489. package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +0 -73
  490. package/lib/renderers/a2ui/components/interactive/Slider.d.ts +0 -9
  491. package/lib/renderers/a2ui/components/interactive/Slider.js +0 -53
  492. package/lib/renderers/a2ui/components/interactive/TextField.d.ts +0 -9
  493. package/lib/renderers/a2ui/components/interactive/TextField.js +0 -72
  494. package/lib/renderers/a2ui/components/interactive/index.d.ts +0 -6
  495. package/lib/renderers/a2ui/components/interactive/index.js +0 -25
  496. package/lib/renderers/a2ui/components/layout/Card.d.ts +0 -11
  497. package/lib/renderers/a2ui/components/layout/Card.js +0 -30
  498. package/lib/renderers/a2ui/components/layout/Column.d.ts +0 -11
  499. package/lib/renderers/a2ui/components/layout/Column.js +0 -65
  500. package/lib/renderers/a2ui/components/layout/List.d.ts +0 -11
  501. package/lib/renderers/a2ui/components/layout/List.js +0 -55
  502. package/lib/renderers/a2ui/components/layout/Modal.d.ts +0 -11
  503. package/lib/renderers/a2ui/components/layout/Modal.js +0 -58
  504. package/lib/renderers/a2ui/components/layout/Row.d.ts +0 -11
  505. package/lib/renderers/a2ui/components/layout/Row.js +0 -65
  506. package/lib/renderers/a2ui/components/layout/Tabs.d.ts +0 -11
  507. package/lib/renderers/a2ui/components/layout/Tabs.js +0 -48
  508. package/lib/renderers/a2ui/components/layout/index.d.ts +0 -6
  509. package/lib/renderers/a2ui/components/layout/index.js +0 -25
  510. package/lib/renderers/a2ui/context/A2UIContext.d.ts +0 -17
  511. package/lib/renderers/a2ui/context/A2UIContext.js +0 -54
  512. package/lib/renderers/a2ui/context/ThemeContext.d.ts +0 -20
  513. package/lib/renderers/a2ui/context/ThemeContext.js +0 -333
  514. package/lib/renderers/a2ui/hooks/useA2UI.d.ts +0 -36
  515. package/lib/renderers/a2ui/hooks/useA2UI.js +0 -62
  516. package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +0 -8
  517. package/lib/renderers/a2ui/hooks/useDataBinding.js +0 -83
  518. package/lib/renderers/a2ui/index.d.ts +0 -9
  519. package/lib/renderers/a2ui/index.js +0 -28
  520. package/lib/renderers/a2ui/lib/utils.d.ts +0 -11
  521. package/lib/renderers/a2ui/lib/utils.js +0 -38
  522. package/lib/renderers/a2ui/types/index.d.ts +0 -17
  523. package/lib/runtime/index.d.ts +0 -38
  524. package/lib/runtime/index.js +0 -40
  525. package/lib/runtime/runtimeStore.d.ts +0 -76
  526. package/lib/runtime/runtimeStore.js +0 -184
  527. package/lib/runtime/types.d.ts +0 -84
  528. package/lib/runtime/useAgentConnection.d.ts +0 -45
  529. package/lib/runtime/useAgentConnection.js +0 -112
  530. package/lib/runtime/useAgentRuntime.d.ts +0 -93
  531. package/lib/runtime/useAgentRuntime.js +0 -125
  532. package/lib/specs/agents/codeai/agents.d.ts +0 -28
  533. package/lib/specs/agents/codeai/agents.js +0 -151
  534. package/lib/specs/agents/codeai/index.d.ts +0 -1
  535. package/lib/specs/agents/codemode-paper/agents.d.ts +0 -31
  536. package/lib/specs/agents/codemode-paper/agents.js +0 -308
  537. package/lib/specs/agents/codemode-paper/index.d.ts +0 -1
  538. package/lib/specs/agents/codemode-paper/index.js +0 -5
  539. package/lib/specs/agents/datalayer-ai/agents.d.ts +0 -31
  540. package/lib/specs/agents/datalayer-ai/agents.js +0 -282
  541. package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
  542. package/lib/specs/agents/datalayer-ai/index.js +0 -5
  543. package/lib/state/index.d.ts +0 -1
  544. package/lib/state/index.js +0 -5
  545. package/lib/state/substates/AIAgentState.d.ts +0 -80
  546. package/lib/state/substates/AIAgentState.js +0 -108
  547. package/lib/state/substates/index.d.ts +0 -1
  548. package/lib/state/substates/index.js +0 -5
  549. package/lib/types/AIAgent.d.ts +0 -17
  550. package/lib/types/Types.d.ts +0 -189
  551. /package/lib/{components/chat → api}/handler.d.ts +0 -0
  552. /package/lib/{renderers/index.d.ts → api/utils.d.ts} +0 -0
  553. /package/lib/{renderers/index.js → api/utils.js} +0 -0
  554. /package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.js +0 -0
  555. /package/lib/{components/chat/components → chat}/parts/DynamicToolPart.js +0 -0
  556. /package/lib/{components/chat/components → chat}/parts/ReasoningPart.d.ts +0 -0
  557. /package/lib/{components/chat/components → chat}/parts/TextPart.js +0 -0
  558. /package/lib/{components/chat/components → chat}/parts/ToolPart.d.ts +0 -0
  559. /package/lib/{components/chat/components → chat}/styles/streamdownStyles.js +0 -0
  560. /package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.d.ts +0 -0
  561. /package/lib/{components/chat/components → context}/ContextDistribution.d.ts +0 -0
  562. /package/lib/{components/chat/components → context}/ContextDistribution.js +0 -0
  563. /package/lib/{components/chat/components → context}/ContextInspector.d.ts +0 -0
  564. /package/lib/{components/chat/components → context}/ContextPanel.d.ts +0 -0
  565. /package/lib/{components/chat/components → context}/ContextUsage.d.ts +0 -0
  566. /package/lib/{components/chat/components → context}/ContextUsage.js +0 -0
  567. /package/lib/examples/{JupyterCellExample.d.ts → CellSimpleExample.d.ts} +0 -0
  568. /package/lib/examples/{AgentRuntimeCustomExample.d.ts → ChatCustomExample.d.ts} +0 -0
  569. /package/lib/examples/{AgentRuntimeChatExample.d.ts → ChatExample.d.ts} +0 -0
  570. /package/lib/examples/{AgentRuntimeStandaloneExample.d.ts → ChatStandaloneExample.d.ts} +0 -0
  571. /package/lib/examples/{AgentRuntimeNotebookExample.d.ts → NotebookExample.d.ts} +0 -0
  572. /package/lib/examples/{AgentRuntimeNotebookSidebarExample.d.ts → NotebookSidebarExample.d.ts} +0 -0
  573. /package/lib/examples/{JupyterNotebookExample.d.ts → NotebookSimpleExample.d.ts} +0 -0
  574. /package/lib/examples/{stores → utils}/agents/earthquake-detector.ipynb.json +0 -0
  575. /package/lib/examples/{stores → utils}/agents/earthquake-detector.json +0 -0
  576. /package/lib/examples/{stores → utils}/agents/earthquake-detector.lexical.json +0 -0
  577. /package/lib/examples/{stores → utils}/agents/sales-forecaster.ipynb.json +0 -0
  578. /package/lib/examples/{stores → utils}/agents/sales-forecaster.json +0 -0
  579. /package/lib/examples/{stores → utils}/agents/sales-forecaster.lexical.json +0 -0
  580. /package/lib/examples/{stores → utils}/agents/social-post-generator.ipynb.json +0 -0
  581. /package/lib/examples/{stores → utils}/agents/social-post-generator.json +0 -0
  582. /package/lib/examples/{stores → utils}/agents/social-post-generator.lexical.json +0 -0
  583. /package/lib/examples/{stores → utils}/agents/stock-market.ipynb.json +0 -0
  584. /package/lib/examples/{stores → utils}/agents/stock-market.json +0 -0
  585. /package/lib/examples/{stores → utils}/agents/stock-market.lexical.json +0 -0
  586. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExample.ipynb.json +0 -0
  587. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -0
  588. /package/lib/examples/{stores → utils}/notebooks/Lite.ipynb.json +0 -0
  589. /package/lib/examples/{stores → utils}/notebooks/Matplotlib.ipynb.json +0 -0
  590. /package/lib/examples/{stores → utils}/notebooks/NotebookExample1.ipynb.json +0 -0
  591. /package/lib/examples/{stores → utils}/notebooks/NotebookOutputs.ipynb.json +0 -0
  592. /package/lib/examples/{stores → utils}/notebooks/NotebookToCExample.ipynb.json +0 -0
  593. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.d.ts +0 -0
  594. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.js +0 -0
  595. /package/lib/examples/{stores → utils}/notebooks/PyGWalker.ipynb.json +0 -0
  596. /package/lib/examples/{stores → utils}/themedProvider.d.ts +0 -0
  597. /package/lib/examples/{stores → utils}/themedProvider.js +0 -0
  598. /package/lib/{components/chat/inference → inference}/BaseInferenceProvider.js +0 -0
  599. /package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.js +0 -0
  600. /package/lib/{components/chat/types/inference.js → types/a2a.js} +0 -0
  601. /package/lib/{components/chat/types/protocol.js → types/acp.js} +0 -0
  602. /package/lib/{components/sparklines/types.js → types/ag-ui.js} +0 -0
  603. /package/lib/{renderers/a2ui/types/index.js → types/agents-lifecycle.js} +0 -0
  604. /package/lib/types/{AIAgent.js → agentspecs.js} +0 -0
  605. /package/lib/types/{Types.js → chat.js} +0 -0
  606. /package/lib/{components/chat/types → types}/execution.js +0 -0
  607. /package/lib/{components/chat/types/extension.js → types/extensions.js} +0 -0
  608. /package/lib/{components/chat/types/message.js → types/messages.js} +0 -0
  609. /package/lib/{components/chat/types → types}/middleware.js +0 -0
  610. /package/lib/{components/chat/types/tool.js → types/tools.js} +0 -0
@@ -0,0 +1,682 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { generateMessageId, createAssistantMessage } from '../types/messages';
6
+ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
7
+ /**
8
+ * Vercel AI protocol adapter
9
+ * Uses HTTP POST with SSE streaming for responses
10
+ * Compatible with Pydantic AI's Vercel AI Data Stream Protocol
11
+ */
12
+ export class VercelAIAdapter extends BaseProtocolAdapter {
13
+ protocol = 'vercel-ai';
14
+ protocolTransport = 'sse';
15
+ vercelConfig;
16
+ abortController = null;
17
+ currentRequestId = null;
18
+ // Frontend tool continuation state (modelled after AGUIAdapter)
19
+ pendingToolCalls = new Map();
20
+ collectedToolResults = new Map();
21
+ // Store conversation history for continuation
22
+ messageHistory = [];
23
+ lastAssistantText = '';
24
+ lastTools = [];
25
+ isContinuation = false;
26
+ // Stream parsing depth — prevents premature continuations
27
+ _streamParsingDepth = 0;
28
+ _streamDonePromise = null;
29
+ _streamDoneResolve = null;
30
+ constructor(config) {
31
+ super(config);
32
+ this.vercelConfig = config;
33
+ }
34
+ /**
35
+ * Connect to Vercel AI endpoint (SSE doesn't require persistent connection)
36
+ */
37
+ async connect() {
38
+ this.setConnectionState('connecting');
39
+ // Vercel AI uses SSE, no persistent connection needed
40
+ // Just mark as connected
41
+ this.setConnectionState('connected');
42
+ }
43
+ /**
44
+ * Disconnect and terminate any ongoing request
45
+ */
46
+ disconnect() {
47
+ this.abortController?.abort();
48
+ this.abortController = null;
49
+ // Send terminate request to backend if we have a request ID
50
+ if (this.currentRequestId) {
51
+ this.terminateRequest(this.currentRequestId).catch(err => {
52
+ console.warn('[VercelAIAdapter] Failed to terminate request:', err);
53
+ });
54
+ }
55
+ this.setConnectionState('disconnected');
56
+ }
57
+ /**
58
+ * Terminate a running request on the backend
59
+ */
60
+ async terminateRequest(requestId) {
61
+ try {
62
+ // Derive the terminate endpoint from the base URL
63
+ const baseUrl = new URL(this.vercelConfig.baseUrl);
64
+ const terminateUrl = `${baseUrl.origin}/api/v1/vercel-ai/terminate`;
65
+ const response = await fetch(terminateUrl, {
66
+ method: 'POST',
67
+ headers: {
68
+ 'Content-Type': 'application/json',
69
+ },
70
+ body: JSON.stringify({
71
+ request_id: requestId || this.currentRequestId,
72
+ }),
73
+ });
74
+ if (!response.ok) {
75
+ console.warn(`[VercelAIAdapter] Terminate request failed: ${response.status}`);
76
+ }
77
+ else {
78
+ // Consume the response (terminate result)
79
+ await response.json();
80
+ }
81
+ }
82
+ catch {
83
+ // Ignore errors - request may have already completed
84
+ }
85
+ }
86
+ /**
87
+ * Send a message using Vercel AI Data Stream Protocol
88
+ */
89
+ async sendMessage(message, options) {
90
+ if (this.abortController) {
91
+ this.abortController.abort();
92
+ }
93
+ this.abortController = new AbortController();
94
+ // Generate request ID for tracking
95
+ const requestId = options?.threadId || generateMessageId();
96
+ this.currentRequestId = requestId;
97
+ // Store tools for potential continuation
98
+ if (options?.tools) {
99
+ this.lastTools = options.tools;
100
+ }
101
+ // Reset assistant content tracking for fresh (non-continuation) messages
102
+ if (!this.isContinuation) {
103
+ this.lastAssistantText = '';
104
+ }
105
+ try {
106
+ let vercelMessages;
107
+ if (options?._vercelMessages) {
108
+ // Continuation: use pre-built messages
109
+ vercelMessages = options._vercelMessages;
110
+ }
111
+ else {
112
+ // Use full message history if provided, otherwise just the new message
113
+ const allMessages = options?.messages || [message];
114
+ vercelMessages = allMessages.map(msg => {
115
+ const messageContent = typeof msg.content === 'string'
116
+ ? msg.content
117
+ : String(msg.content ?? '');
118
+ const parts = [
119
+ {
120
+ type: 'text',
121
+ text: messageContent,
122
+ },
123
+ ];
124
+ // For assistant messages with tool calls, add tool-invocation parts
125
+ if (msg.role === 'assistant' &&
126
+ msg.toolCalls &&
127
+ msg.toolCalls.length > 0) {
128
+ for (const tc of msg.toolCalls) {
129
+ parts.push({
130
+ type: 'tool-invocation',
131
+ toolInvocationId: tc.toolCallId,
132
+ toolName: tc.toolName,
133
+ args: tc.args,
134
+ state: 'result',
135
+ result: tc.result,
136
+ });
137
+ }
138
+ }
139
+ return {
140
+ id: msg.id,
141
+ role: msg.role,
142
+ parts,
143
+ };
144
+ });
145
+ // For tool-result messages, add them as separate tool parts
146
+ // (handled inline above via toolCalls on assistant messages)
147
+ }
148
+ // Store message history for continuation
149
+ if (!this.isContinuation) {
150
+ this.messageHistory = [...vercelMessages];
151
+ }
152
+ else {
153
+ this.messageHistory = [...vercelMessages];
154
+ }
155
+ // Build Vercel AI request
156
+ const requestBody = {
157
+ id: requestId,
158
+ messages: vercelMessages,
159
+ trigger: 'submit-message',
160
+ ...(options?.tools && { tools: options.tools }),
161
+ ...(options?.model && { model: options.model }),
162
+ ...(options?.builtinTools &&
163
+ options.builtinTools.length > 0 && {
164
+ builtinTools: options.builtinTools,
165
+ }),
166
+ ...(options?.skills &&
167
+ options.skills.length > 0 && {
168
+ skills: options.skills,
169
+ }),
170
+ ...(options?.identities &&
171
+ options.identities.length > 0 && {
172
+ identities: options.identities,
173
+ }),
174
+ };
175
+ if (options?.tools && options.tools.length > 0) {
176
+ console.log('[VercelAIAdapter] Sending with frontend tools:', options.tools.map((t) => t.name));
177
+ }
178
+ else {
179
+ console.log('[VercelAIAdapter] No frontend tools in request');
180
+ }
181
+ if (options?.model) {
182
+ console.log('[VercelAIAdapter] Sending with model:', options.model);
183
+ }
184
+ if (options?.builtinTools && options.builtinTools.length > 0) {
185
+ console.log('[VercelAIAdapter] Sending with builtinTools:', options.builtinTools);
186
+ }
187
+ if (options?.skills && options.skills.length > 0) {
188
+ console.log('[VercelAIAdapter] Sending with skills:', options.skills);
189
+ }
190
+ if (options?.identities && options.identities.length > 0) {
191
+ console.log('[VercelAIAdapter] Sending with identities:', options.identities.map(i => i.provider));
192
+ }
193
+ // Merge custom headers with defaults
194
+ const headers = {
195
+ 'Content-Type': 'application/json',
196
+ Accept: 'text/event-stream',
197
+ ...this.vercelConfig.headers,
198
+ };
199
+ // Add auth token if provided
200
+ if (this.vercelConfig.authToken) {
201
+ headers['Authorization'] = `token ${this.vercelConfig.authToken}`;
202
+ }
203
+ const response = await fetch(this.vercelConfig.baseUrl, {
204
+ method: 'POST',
205
+ headers,
206
+ body: JSON.stringify(requestBody),
207
+ signal: this.abortController.signal,
208
+ mode: this.vercelConfig.fetchOptions?.mode,
209
+ credentials: this.vercelConfig.fetchOptions?.credentials,
210
+ });
211
+ if (!response.ok) {
212
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
213
+ }
214
+ if (!response.body) {
215
+ throw new Error('Response body is null');
216
+ }
217
+ // Parse SSE stream
218
+ await this.parseSSEStream(response.body);
219
+ }
220
+ catch (error) {
221
+ if (error.name !== 'AbortError') {
222
+ console.error('[VercelAIAdapter] Send error:', error);
223
+ throw error;
224
+ }
225
+ }
226
+ finally {
227
+ this.abortController = null;
228
+ }
229
+ }
230
+ /**
231
+ * Parse SSE stream from Vercel AI
232
+ */
233
+ async parseSSEStream(stream) {
234
+ const reader = stream.getReader();
235
+ const decoder = new TextDecoder();
236
+ let buffer = '';
237
+ let currentMessageId = generateMessageId();
238
+ let accumulatedText = '';
239
+ const pendingToolInputs = new Map();
240
+ let doneEmitted = false;
241
+ // Consume the continuation flag — set by sendToolResult for this call only
242
+ this.isContinuation = false;
243
+ // Track stream parsing depth for sendToolResult synchronisation
244
+ if (this._streamParsingDepth === 0) {
245
+ this._streamDonePromise = new Promise(resolve => {
246
+ this._streamDoneResolve = resolve;
247
+ });
248
+ }
249
+ this._streamParsingDepth++;
250
+ const emitDoneOnce = () => {
251
+ if (doneEmitted)
252
+ return;
253
+ // Don't emit 'done' if there are pending frontend tool calls
254
+ // — the continuation triggered by sendToolResult will do it later
255
+ if (this.pendingToolCalls.size > 0)
256
+ return;
257
+ doneEmitted = true;
258
+ this.emit({
259
+ type: 'done',
260
+ timestamp: new Date(),
261
+ });
262
+ };
263
+ const normalizeToolArgs = (rawArgs, fallbackText = '') => {
264
+ if (rawArgs && typeof rawArgs === 'object' && !Array.isArray(rawArgs)) {
265
+ return rawArgs;
266
+ }
267
+ const asText = typeof rawArgs === 'string' && rawArgs.trim().length > 0
268
+ ? rawArgs
269
+ : fallbackText;
270
+ if (!asText.trim()) {
271
+ return {};
272
+ }
273
+ try {
274
+ const parsed = JSON.parse(asText);
275
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
276
+ return parsed;
277
+ }
278
+ }
279
+ catch {
280
+ // Keep empty args if we can't parse structured input.
281
+ }
282
+ return {};
283
+ };
284
+ try {
285
+ while (true) {
286
+ const { done, value } = await reader.read();
287
+ if (done) {
288
+ // Stream ended - emit final message if we have accumulated text
289
+ if (accumulatedText) {
290
+ this.lastAssistantText = accumulatedText;
291
+ const message = createAssistantMessage(accumulatedText);
292
+ message.id = currentMessageId;
293
+ this.emit({
294
+ type: 'message',
295
+ message,
296
+ timestamp: new Date(),
297
+ });
298
+ }
299
+ emitDoneOnce();
300
+ break;
301
+ }
302
+ buffer += decoder.decode(value, { stream: true });
303
+ const lines = buffer.split('\n');
304
+ buffer = lines.pop() || '';
305
+ for (const line of lines) {
306
+ if (!line.trim() || line.startsWith(':')) {
307
+ continue;
308
+ }
309
+ // Log raw line for debugging
310
+ console.debug('[VercelAIAdapter] SSE line:', line);
311
+ if (line.startsWith('data: ')) {
312
+ const data = line.slice(6);
313
+ if (data === '[DONE]') {
314
+ // Stream complete
315
+ if (accumulatedText) {
316
+ this.lastAssistantText = accumulatedText;
317
+ const message = createAssistantMessage(accumulatedText);
318
+ message.id = currentMessageId;
319
+ this.emit({
320
+ type: 'message',
321
+ message,
322
+ timestamp: new Date(),
323
+ });
324
+ }
325
+ emitDoneOnce();
326
+ break;
327
+ }
328
+ try {
329
+ const event = JSON.parse(data);
330
+ console.debug('[VercelAIAdapter] Parsed event:', event);
331
+ // Handle Vercel AI event types
332
+ // Server sends: {"type":"text-delta","delta":"Hello","id":"..."}
333
+ if (event.type === 'text-delta' && event.delta) {
334
+ accumulatedText += event.delta;
335
+ // Emit 'message' event with accumulated content for useChat
336
+ const message = createAssistantMessage(accumulatedText);
337
+ message.id = currentMessageId;
338
+ this.emit({
339
+ type: 'message',
340
+ message,
341
+ timestamp: new Date(),
342
+ });
343
+ }
344
+ else if (event.type === 'text-start') {
345
+ // New text block starting
346
+ currentMessageId = event.id || generateMessageId();
347
+ accumulatedText = '';
348
+ }
349
+ else if (event.type === 'finish' ||
350
+ event.type === 'end-step' ||
351
+ event.type === 'finish-step') {
352
+ if (accumulatedText) {
353
+ const message = createAssistantMessage(accumulatedText);
354
+ message.id = currentMessageId;
355
+ this.emit({
356
+ type: 'message',
357
+ message,
358
+ timestamp: new Date(),
359
+ });
360
+ }
361
+ // Extract and emit usage data from finish events
362
+ if (event.usage) {
363
+ const usage = event.usage;
364
+ this.emit({
365
+ type: 'message',
366
+ usage: {
367
+ promptTokens: usage.promptTokens ?? 0,
368
+ completionTokens: usage.completionTokens ?? 0,
369
+ totalTokens: usage.totalTokens ??
370
+ (usage.promptTokens ?? 0) +
371
+ (usage.completionTokens ?? 0),
372
+ },
373
+ timestamp: new Date(),
374
+ });
375
+ }
376
+ const finishReason = String(event.finishReason || event.finish_reason || '').toLowerCase();
377
+ if (event.type === 'finish' &&
378
+ (finishReason === 'tool-calls' ||
379
+ finishReason === 'tool_calls') &&
380
+ pendingToolInputs.size > 0) {
381
+ // Only emit pending_approval for tool calls that are NOT in
382
+ // pendingToolCalls (i.e., server-side tools waiting for approval,
383
+ // not frontend tools that will be handled by sendToolResult)
384
+ for (const [toolCallId] of pendingToolInputs.entries()) {
385
+ if (!this.pendingToolCalls.has(toolCallId)) {
386
+ this.emit({
387
+ type: 'tool-result',
388
+ toolResult: {
389
+ toolCallId,
390
+ success: true,
391
+ result: {
392
+ pending_approval: true,
393
+ message: 'Awaiting user approval',
394
+ },
395
+ },
396
+ timestamp: new Date(),
397
+ });
398
+ }
399
+ }
400
+ }
401
+ if (event.type === 'finish') {
402
+ emitDoneOnce();
403
+ }
404
+ }
405
+ else if (event.type === 'tool-input-start') {
406
+ const toolCallId = event.toolCallId ||
407
+ event.tool_call_id ||
408
+ event.id ||
409
+ generateMessageId();
410
+ const toolName = event.toolName ||
411
+ event.tool_name ||
412
+ event.name ||
413
+ event.tool?.name;
414
+ pendingToolInputs.set(toolCallId, {
415
+ toolName,
416
+ inputText: '',
417
+ });
418
+ }
419
+ else if (event.type === 'tool-input-delta') {
420
+ const toolCallId = event.toolCallId || event.tool_call_id || event.id;
421
+ if (toolCallId && pendingToolInputs.has(toolCallId)) {
422
+ const existing = pendingToolInputs.get(toolCallId);
423
+ if (existing) {
424
+ existing.inputText += event.inputTextDelta || '';
425
+ pendingToolInputs.set(toolCallId, existing);
426
+ }
427
+ }
428
+ }
429
+ else if (event.type === 'tool-input-available') {
430
+ const toolCallId = event.toolCallId ||
431
+ event.tool_call_id ||
432
+ event.id ||
433
+ generateMessageId();
434
+ const pending = pendingToolInputs.get(toolCallId);
435
+ const toolName = event.toolName ||
436
+ event.tool_name ||
437
+ event.name ||
438
+ pending?.toolName ||
439
+ event.tool?.name;
440
+ const args = normalizeToolArgs(event.input || event.args || event.arguments, pending?.inputText || '');
441
+ if (toolName) {
442
+ // Track as a pending frontend tool call for continuation
443
+ this.pendingToolCalls.set(toolCallId, {
444
+ toolCallId,
445
+ toolName,
446
+ args,
447
+ });
448
+ this.emit({
449
+ type: 'tool-call',
450
+ toolCall: {
451
+ toolCallId,
452
+ toolName,
453
+ args,
454
+ },
455
+ timestamp: new Date(),
456
+ });
457
+ }
458
+ }
459
+ else if (event.type === 'tool-output-available') {
460
+ const toolCallId = event.toolCallId ||
461
+ event.tool_call_id ||
462
+ event.id ||
463
+ generateMessageId();
464
+ const output = event.output ?? event.result ?? event.data ?? event.content;
465
+ this.emit({
466
+ type: 'tool-result',
467
+ toolResult: {
468
+ toolCallId,
469
+ success: true,
470
+ result: output,
471
+ },
472
+ timestamp: new Date(),
473
+ });
474
+ pendingToolInputs.delete(toolCallId);
475
+ // Server already executed this tool — remove from pending
476
+ // frontend tool calls so emitDoneOnce is not blocked.
477
+ this.pendingToolCalls.delete(toolCallId);
478
+ }
479
+ else if (event.type === 'tool-output-error' ||
480
+ event.type === 'tool-error') {
481
+ const toolCallId = event.toolCallId ||
482
+ event.tool_call_id ||
483
+ event.id ||
484
+ generateMessageId();
485
+ const errorMessage = event.error ||
486
+ event.errorText ||
487
+ event.message ||
488
+ 'Tool error';
489
+ // Server handled the error — clear from pending frontend
490
+ // tool calls so emitDoneOnce is not blocked.
491
+ this.pendingToolCalls.delete(toolCallId);
492
+ this.emit({
493
+ type: 'tool-result',
494
+ toolResult: {
495
+ toolCallId,
496
+ success: false,
497
+ error: errorMessage,
498
+ result: event.output ?? event.result,
499
+ },
500
+ timestamp: new Date(),
501
+ });
502
+ pendingToolInputs.delete(toolCallId);
503
+ }
504
+ else if (event.type === 'error') {
505
+ const errorMessage = event.error ||
506
+ event.errorText ||
507
+ event.message ||
508
+ event.detail ||
509
+ 'Unknown server error';
510
+ console.error('[VercelAIAdapter] Server error event:', event);
511
+ this.emit({
512
+ type: 'error',
513
+ error: new Error(errorMessage),
514
+ timestamp: new Date(),
515
+ });
516
+ }
517
+ else if (event.type === 'tool-call' ||
518
+ event.type === 'tool-call-start' ||
519
+ event.type === 'tool-approval-request') {
520
+ const toolName = event.toolName ||
521
+ event.tool_name ||
522
+ event.name ||
523
+ event.tool?.name;
524
+ const args = normalizeToolArgs(event.args ||
525
+ event.arguments ||
526
+ event.input ||
527
+ event.tool?.arguments) || {};
528
+ const toolCallId = event.toolCallId ||
529
+ event.tool_call_id ||
530
+ event.id ||
531
+ generateMessageId();
532
+ if (toolName) {
533
+ this.emit({
534
+ type: 'tool-call',
535
+ toolCall: {
536
+ toolCallId,
537
+ toolName,
538
+ args,
539
+ },
540
+ timestamp: new Date(),
541
+ });
542
+ }
543
+ }
544
+ }
545
+ catch (parseError) {
546
+ console.error('[VercelAIAdapter] Failed to parse SSE data:', parseError);
547
+ }
548
+ }
549
+ }
550
+ }
551
+ }
552
+ finally {
553
+ reader.releaseLock();
554
+ this._streamParsingDepth--;
555
+ if (this._streamParsingDepth === 0) {
556
+ const resolve = this._streamDoneResolve;
557
+ this._streamDonePromise = null;
558
+ this._streamDoneResolve = null;
559
+ resolve?.();
560
+ }
561
+ }
562
+ }
563
+ /**
564
+ * Send tool result back and continue the conversation.
565
+ *
566
+ * When the agent makes multiple frontend tool calls in a single run, each
567
+ * call triggers an independent async execution in ChatBase. This method
568
+ * batches the results: it stores each result as it arrives and only sends
569
+ * ONE continuation request once ALL pending tool calls have been resolved.
570
+ */
571
+ async sendToolResult(toolCallId, result) {
572
+ // 1. Emit local event for UI updates
573
+ this.emit({
574
+ type: 'tool-result',
575
+ toolResult: result,
576
+ timestamp: new Date(),
577
+ });
578
+ // 2. Retrieve tool metadata from pending map
579
+ const pendingToolCall = this.pendingToolCalls.get(toolCallId);
580
+ if (!pendingToolCall) {
581
+ console.warn('[VercelAIAdapter] No pending tool call found for ID:', toolCallId);
582
+ }
583
+ const toolName = pendingToolCall?.toolName ?? 'unknown';
584
+ const toolArgs = pendingToolCall?.args ?? {};
585
+ // 3. Collect this result (batching)
586
+ this.collectedToolResults.set(toolCallId, {
587
+ toolCallId,
588
+ toolName,
589
+ args: toolArgs,
590
+ result,
591
+ });
592
+ // 4. Check whether ALL pending tool calls now have results
593
+ let allResolved = Array.from(this.pendingToolCalls.keys()).every(id => this.collectedToolResults.has(id));
594
+ if (!allResolved) {
595
+ return;
596
+ }
597
+ // 4b. Guard against premature continuations while stream is still parsing
598
+ if (this._streamParsingDepth > 0 && this._streamDonePromise) {
599
+ await this._streamDonePromise;
600
+ allResolved = Array.from(this.pendingToolCalls.keys()).every(id => this.collectedToolResults.has(id));
601
+ if (!allResolved) {
602
+ return;
603
+ }
604
+ }
605
+ // ── All tool results collected — build ONE continuation request ──
606
+ // 5. Build an assistant message with DynamicToolUIParts (output-available)
607
+ const assistantParts = [];
608
+ // Include the assistant text if any was produced before tool calls
609
+ if (this.lastAssistantText) {
610
+ assistantParts.push({
611
+ type: 'text',
612
+ text: this.lastAssistantText,
613
+ state: 'done',
614
+ });
615
+ }
616
+ // Add each tool call with its result as a DynamicToolUIPart
617
+ for (const tr of this.collectedToolResults.values()) {
618
+ assistantParts.push({
619
+ type: 'dynamic-tool',
620
+ toolName: tr.toolName,
621
+ toolCallId: tr.toolCallId,
622
+ state: 'output-available',
623
+ input: tr.args,
624
+ output: tr.result.success
625
+ ? tr.result.result
626
+ : { error: tr.result.error ?? 'Tool execution failed' },
627
+ });
628
+ }
629
+ const assistantMessage = {
630
+ id: generateMessageId(),
631
+ role: 'assistant',
632
+ parts: assistantParts,
633
+ };
634
+ // 6. Build full continuation messages
635
+ const continuationMessages = [...this.messageHistory, assistantMessage];
636
+ // 7. Clear batching state BEFORE the async sendMessage call
637
+ this.pendingToolCalls.clear();
638
+ this.collectedToolResults.clear();
639
+ // 8. Update stored message history
640
+ this.messageHistory = continuationMessages;
641
+ console.log('[VercelAIAdapter] === CONTINUATION MESSAGES ===', continuationMessages.map((m, i) => `[${i}] role=${m.role} parts=${m.parts.length}`));
642
+ // 9. Mark as continuation
643
+ this.isContinuation = true;
644
+ // 10. Send ONE continuation request with all tool results
645
+ const dummyMessage = {
646
+ id: generateMessageId(),
647
+ role: 'user',
648
+ content: '',
649
+ createdAt: new Date(),
650
+ };
651
+ await this.sendMessage(dummyMessage, {
652
+ _vercelMessages: continuationMessages,
653
+ tools: this.lastTools,
654
+ threadId: this.currentRequestId ?? undefined,
655
+ });
656
+ }
657
+ /**
658
+ * Request permission (not supported in Vercel AI)
659
+ */
660
+ async requestPermission(_permission) {
661
+ return true;
662
+ }
663
+ /**
664
+ * Check feature support
665
+ */
666
+ supportsFeature(feature) {
667
+ const supportedFeatures = [
668
+ 'streaming',
669
+ 'tools',
670
+ 'frontend-tools',
671
+ 'backend-tools',
672
+ ];
673
+ return supportedFeatures.includes(feature);
674
+ }
675
+ /**
676
+ * Stop generation
677
+ */
678
+ stopGeneration() {
679
+ this.abortController?.abort();
680
+ this.abortController = null;
681
+ }
682
+ }