@datalayer/agent-runtimes 1.0.29 → 1.3.10

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 (768) hide show
  1. package/lib/AgentDocument.js +5 -22
  2. package/lib/AgentNode.d.ts +1 -1
  3. package/lib/AgentNode.js +193 -23
  4. package/lib/AgentNotebook.js +1 -1
  5. package/lib/App.d.ts +1 -1
  6. package/lib/AppExamples2.d.ts +1 -1
  7. package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
  8. package/lib/agent-node/AgentNodeGallery.js +19 -15
  9. package/lib/agent-node/themeStore.js +7 -6
  10. package/lib/agents/AgentDetails.d.ts +8 -2
  11. package/lib/agents/AgentDetails.js +41 -11
  12. package/lib/agents/AgentRuntimeChat.d.ts +3 -3
  13. package/lib/agents/AgentRuntimeChat.js +15 -15
  14. package/lib/api/agents.d.ts +10 -10
  15. package/lib/api/agents.js +15 -15
  16. package/lib/api/checkpoints.d.ts +40 -0
  17. package/lib/api/checkpoints.js +75 -0
  18. package/lib/api/index.d.ts +1 -0
  19. package/lib/api/index.js +2 -1
  20. package/lib/api/notifications.d.ts +21 -6
  21. package/lib/api/notifications.js +32 -14
  22. package/lib/api/runtimes/environments.d.ts +385 -4
  23. package/lib/api/runtimes/environments.js +610 -9
  24. package/lib/api/runtimes/runtimes.d.ts +19 -19
  25. package/lib/api/runtimes/runtimes.js +47 -46
  26. package/lib/api/spacer/notebooks.js +1 -1
  27. package/lib/chat/Chat.d.ts +16 -4
  28. package/lib/chat/Chat.js +18 -5
  29. package/lib/chat/ChatFloating.d.ts +13 -2
  30. package/lib/chat/ChatFloating.js +192 -117
  31. package/lib/chat/ChatInline.d.ts +15 -0
  32. package/lib/chat/ChatInline.js +0 -18
  33. package/lib/chat/ChatPopupStandalone.d.ts +1 -1
  34. package/lib/chat/ChatSidebar.d.ts +14 -2
  35. package/lib/chat/ChatSidebar.js +1 -1
  36. package/lib/chat/ChatStandalone.d.ts +1 -1
  37. package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
  38. package/lib/chat/EphemeralSurfaceControl.js +55 -0
  39. package/lib/chat/base/ChatAvailability.d.ts +34 -0
  40. package/lib/chat/base/ChatAvailability.js +18 -0
  41. package/lib/chat/base/ChatBase.d.ts +2 -1
  42. package/lib/chat/base/ChatBase.js +657 -28
  43. package/lib/chat/display/EmptyState.d.ts +15 -1
  44. package/lib/chat/display/EmptyState.js +78 -12
  45. package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
  46. package/lib/chat/display/PoweredByTag.d.ts +1 -1
  47. package/lib/chat/display/groupSuggestions.d.ts +21 -0
  48. package/lib/chat/display/groupSuggestions.js +18 -0
  49. package/lib/chat/document/EphemeralDocument.d.ts +70 -6
  50. package/lib/chat/document/EphemeralDocument.js +154 -52
  51. package/lib/chat/header/ChatHeader.d.ts +1 -1
  52. package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
  53. package/lib/chat/header/ChatHeaderBase.js +67 -96
  54. package/lib/chat/index.d.ts +4 -1
  55. package/lib/chat/index.js +8 -1
  56. package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
  57. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
  58. package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
  59. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
  60. package/lib/chat/messages/ChatMessageList.d.ts +22 -1
  61. package/lib/chat/messages/ChatMessageList.js +370 -166
  62. package/lib/chat/messages/ChatMessages.d.ts +1 -1
  63. package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
  64. package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
  65. package/lib/chat/messages/TurnFooter.d.ts +42 -0
  66. package/lib/chat/messages/TurnFooter.js +75 -0
  67. package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
  68. package/lib/chat/messages/assistantMarkdown.js +56 -0
  69. package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
  70. package/lib/chat/notebook/EphemeralNotebook.js +194 -61
  71. package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
  72. package/lib/chat/parts/MessagePart.d.ts +1 -1
  73. package/lib/chat/parts/ReasoningPart.d.ts +8 -1
  74. package/lib/chat/parts/TextPart.d.ts +1 -1
  75. package/lib/chat/parts/ToolPart.d.ts +8 -1
  76. package/lib/chat/prompt/FloatingCard.d.ts +26 -0
  77. package/lib/chat/prompt/FloatingCard.js +80 -0
  78. package/lib/chat/prompt/InputPrompt.d.ts +206 -53
  79. package/lib/chat/prompt/InputPrompt.js +161 -80
  80. package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
  81. package/lib/chat/prompt/InputPromptBase.js +225 -0
  82. package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
  83. package/lib/chat/prompt/InputPromptLexical.js +227 -30
  84. package/lib/chat/prompt/InputPromptText.d.ts +10 -2
  85. package/lib/chat/prompt/InputPromptText.js +35 -3
  86. package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
  87. package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
  88. package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
  89. package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
  90. package/lib/chat/prompt/footer/index.d.ts +7 -0
  91. package/lib/chat/prompt/footer/index.js +11 -0
  92. package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
  93. package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
  94. package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
  95. package/lib/chat/prompt/header/InPromptHeader.js +14 -0
  96. package/lib/chat/prompt/header/index.d.ts +7 -0
  97. package/lib/chat/prompt/header/index.js +11 -0
  98. package/lib/chat/prompt/index.d.ts +8 -4
  99. package/lib/chat/prompt/index.js +15 -3
  100. package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
  101. package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
  102. package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
  103. package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
  104. package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
  105. package/lib/chat/prompt/menus/ModelSelector.js +27 -0
  106. package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
  107. package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
  108. package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
  109. package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
  110. package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
  111. package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
  112. package/lib/chat/prompt/menus/index.d.ts +15 -0
  113. package/lib/chat/prompt/menus/index.js +19 -0
  114. package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
  115. package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
  116. package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
  117. package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
  118. package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
  119. package/lib/chat/prompt/plugins/MentionChip.js +24 -0
  120. package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
  121. package/lib/chat/prompt/plugins/MentionNode.js +77 -0
  122. package/lib/chat/prompt/promptHistory.d.ts +52 -0
  123. package/lib/chat/prompt/promptHistory.js +123 -0
  124. package/lib/chat/prompt/stack.d.ts +81 -0
  125. package/lib/chat/prompt/stack.js +41 -0
  126. package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
  127. package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
  128. package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
  129. package/lib/chat/tools/A2AAgentDialog.js +265 -0
  130. package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
  131. package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
  132. package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
  133. package/lib/chat/tools/index.d.ts +1 -0
  134. package/lib/chat/tools/index.js +1 -0
  135. package/lib/chat/usage/ContextPie.d.ts +17 -0
  136. package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
  137. package/lib/chat/useViewportDrag.d.ts +11 -0
  138. package/lib/chat/useViewportDrag.js +61 -0
  139. package/lib/chat/viewModes.d.ts +51 -0
  140. package/lib/chat/viewModes.js +57 -0
  141. package/lib/client/AgentRuntimesClient.d.ts +10 -9
  142. package/lib/client/AgentRuntimesClient.js +1 -1
  143. package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
  144. package/lib/client/AgentsMixin.d.ts +12 -12
  145. package/lib/client/AgentsMixin.js +31 -31
  146. package/lib/client/IAgentRuntimesClient.d.ts +10 -10
  147. package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
  148. package/lib/client/SdkAgentRuntimesClient.js +10 -10
  149. package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
  150. package/lib/client/mixins/RuntimesMixin.js +54 -21
  151. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
  152. package/lib/components/agents/AgentSummary.d.ts +13 -0
  153. package/lib/components/agents/AgentSummary.js +21 -4
  154. package/lib/components/cards/NotificationEventCard.d.ts +1 -1
  155. package/lib/components/cards/OutputCard.d.ts +1 -1
  156. package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
  157. package/lib/components/cards/ToolApprovalCard.js +1 -0
  158. package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
  159. package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
  160. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
  161. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
  162. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
  163. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
  164. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
  165. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
  166. package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
  167. package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
  168. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  169. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  170. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  171. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  172. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  173. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
  174. package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
  175. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  176. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  177. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  178. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  179. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
  180. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
  181. package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
  182. package/lib/components/code-sandboxes/index.d.ts +1 -0
  183. package/lib/components/code-sandboxes/index.js +1 -0
  184. package/lib/components/context/SpaceSelect.d.ts +1 -1
  185. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  186. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  187. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  188. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  189. package/lib/components/progress/CreditsIndicator.js +0 -4
  190. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  191. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  192. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  193. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  194. package/lib/components/snippets/SnippetDialog.js +0 -4
  195. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  196. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  197. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  198. package/lib/context/ContextDistribution.d.ts +1 -1
  199. package/lib/context/ContextInspector.d.ts +2 -1
  200. package/lib/context/ContextPanel.d.ts +1 -1
  201. package/lib/context/ContextUsage.d.ts +1 -1
  202. package/lib/context/CostTracker.d.ts +1 -1
  203. package/lib/context/CostUsageChart.d.ts +1 -1
  204. package/lib/context/CostUsageChart.js +4 -4
  205. package/lib/context/MessageHistory.d.ts +3 -2
  206. package/lib/context/TokenUsageChart.d.ts +1 -1
  207. package/lib/context/TokenUsageChart.js +4 -4
  208. package/lib/examples/A2UiAgentExample.js +15 -6
  209. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  210. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  211. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  212. package/lib/examples/A2UiContactCardExample.js +23 -170
  213. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  214. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  215. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  216. package/lib/examples/A2UiRestaurantExample.js +24 -179
  217. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  218. package/lib/examples/A2UiViewerExample.js +24 -378
  219. package/lib/examples/AgUiAgenticExample.js +2 -4
  220. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  221. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  222. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  223. package/lib/examples/AgUiSharedStateExample.js +2 -4
  224. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  225. package/lib/examples/AgentA2AExample.d.ts +17 -0
  226. package/lib/examples/AgentA2AExample.js +56 -0
  227. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  228. package/lib/examples/AgentCheckpointsExample.js +72 -54
  229. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  230. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  231. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  232. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  233. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  234. package/lib/examples/AgentCodemodeExample.js +60 -125
  235. package/lib/examples/AgentCompactionExample.js +19 -135
  236. package/lib/examples/AgentEvalsExample.js +34 -66
  237. package/lib/examples/AgentGuardrailsExample.js +64 -112
  238. package/lib/examples/AgentHooksExample.d.ts +11 -0
  239. package/lib/examples/AgentHooksExample.js +30 -67
  240. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  241. package/lib/examples/AgentLoopExample.d.ts +4 -2
  242. package/lib/examples/AgentLoopExample.js +45 -93
  243. package/lib/examples/AgentMCPExample.js +30 -79
  244. package/lib/examples/AgentMemoryExample.js +21 -64
  245. package/lib/examples/AgentMonitoringExample.js +33 -94
  246. package/lib/examples/AgentNotificationsExample.js +56 -95
  247. package/lib/examples/AgentOtelExample.js +35 -88
  248. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  249. package/lib/examples/AgentOutputsExample.js +16 -137
  250. package/lib/examples/AgentParametersExample.js +7 -17
  251. package/lib/examples/AgentSkillsExample.js +40 -154
  252. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  253. package/lib/examples/AgentSubagentsExample.js +80 -191
  254. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  255. package/lib/examples/AgentTriggersExample.js +43 -59
  256. package/lib/examples/AgentspecsExample.js +4 -4
  257. package/lib/examples/CellExample.d.ts +1 -1
  258. package/lib/examples/ChatExample.d.ts +12 -5
  259. package/lib/examples/ChatExample.js +38 -13
  260. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  261. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  262. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  263. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  264. package/lib/examples/DecksAgent.d.ts +21 -0
  265. package/lib/examples/DecksAgent.js +23 -0
  266. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  267. package/lib/examples/DocumentPageAgent.js +15 -0
  268. package/lib/examples/Lexical2Example.d.ts +2 -2
  269. package/lib/examples/Lexical2Example.js +17 -38
  270. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  271. package/lib/examples/LexicalAgentExample.js +29 -102
  272. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  273. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  274. package/lib/examples/LoopShellExample.d.ts +38 -0
  275. package/lib/examples/LoopShellExample.js +68 -0
  276. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  277. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  278. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  279. package/lib/examples/LoopWorkspaceExample.js +151 -0
  280. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  281. package/lib/examples/NotebookAgentExample.js +36 -86
  282. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  283. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  284. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  285. package/lib/examples/NotebookCollaborationExample.js +108 -20
  286. package/lib/examples/NotebookExample.d.ts +1 -1
  287. package/lib/examples/NotebookExample.js +20 -10
  288. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  289. package/lib/examples/NotebookPageAgent.js +17 -0
  290. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  291. package/lib/examples/components/ExampleWrapper.js +36 -28
  292. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  293. package/lib/examples/components/LexicalEditor.js +4 -24
  294. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  295. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  296. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  297. package/lib/examples/example-selector.js +26 -6
  298. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  299. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  300. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  301. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  302. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  303. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  304. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  305. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  306. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  307. package/lib/examples/index.d.ts +4 -0
  308. package/lib/examples/index.js +6 -0
  309. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  310. package/lib/examples/lexical/editorConfig.js +26 -48
  311. package/lib/examples/lexical/lexical-theme.css +65 -47
  312. package/lib/examples/main.js +450 -322
  313. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  314. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  315. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  316. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  317. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  318. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  319. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  320. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  321. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  322. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  323. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  324. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  325. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  326. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  327. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  328. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  329. package/lib/examples/utils/exampleSurfaces.js +38 -0
  330. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  331. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  332. package/lib/examples/utils/localUrl.d.ts +2 -0
  333. package/lib/examples/utils/localUrl.js +49 -0
  334. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  335. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  336. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  337. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  338. package/lib/examples/utils/themedProvider.d.ts +7 -0
  339. package/lib/examples/utils/themedProvider.js +57 -4
  340. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  341. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  342. package/lib/examples/utils/waitForAgent.js +24 -0
  343. package/lib/examples2/CellExample.d.ts +1 -1
  344. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  345. package/lib/examples2/NotebookExample.d.ts +1 -1
  346. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  347. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  348. package/lib/examples2/main.js +24 -4
  349. package/lib/extensions/A2UIExtension.d.ts +1 -1
  350. package/lib/hooks/index.d.ts +8 -5
  351. package/lib/hooks/index.js +20 -5
  352. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  353. package/lib/hooks/useAgentRuntimes.js +214 -90
  354. package/lib/hooks/useAgentsCatalog.js +32 -4
  355. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  356. package/lib/hooks/useBrowserAgent.js +75 -0
  357. package/lib/hooks/useBrowserInference.d.ts +27 -0
  358. package/lib/hooks/useBrowserInference.js +67 -0
  359. package/lib/hooks/useCheckpoints.d.ts +8 -17
  360. package/lib/hooks/useCheckpoints.js +25 -59
  361. package/lib/hooks/useConfig.d.ts +1 -1
  362. package/lib/hooks/useConfig.js +5 -1
  363. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  364. package/lib/hooks/useContextSnapshot.js +14 -10
  365. package/lib/hooks/useNotifications.d.ts +11 -11
  366. package/lib/hooks/useNotifications.js +1 -1
  367. package/lib/hooks/useProjects.d.ts +7 -19
  368. package/lib/hooks/useProjects.js +5 -5
  369. package/lib/hooks/useSkills.d.ts +0 -1
  370. package/lib/hooks/useSkills.js +6 -2
  371. package/lib/hooks/useToolApprovals.d.ts +8 -8
  372. package/lib/hooks/useToolApprovals.js +3 -3
  373. package/lib/identity/AgentIdentity.d.ts +9 -2
  374. package/lib/index.d.ts +1 -0
  375. package/lib/index.js +4 -0
  376. package/lib/jupyter/index.d.ts +2 -1
  377. package/lib/jupyter/index.js +2 -1
  378. package/lib/jupyter/serverExecution.d.ts +78 -0
  379. package/lib/jupyter/serverExecution.js +258 -0
  380. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  381. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  382. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  383. package/lib/lexical/ChatInlinePlugin.js +0 -36
  384. package/lib/loop/core/focusRequests.d.ts +10 -0
  385. package/lib/loop/core/focusRequests.js +46 -0
  386. package/lib/loop/core/index.d.ts +894 -0
  387. package/lib/loop/core/index.js +264 -0
  388. package/lib/loop/core/promptStore.d.ts +44 -0
  389. package/lib/loop/core/promptStore.js +63 -0
  390. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  391. package/lib/loop/core/surfaceRequests.js +29 -0
  392. package/lib/loop/core/toolbar.d.ts +28 -0
  393. package/lib/loop/core/toolbar.js +59 -0
  394. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  395. package/lib/loop/embed/LoopEmbed.js +118 -0
  396. package/lib/loop/extensions.d.ts +10 -0
  397. package/lib/loop/extensions.js +49 -0
  398. package/lib/loop/index.d.ts +68 -0
  399. package/lib/loop/index.js +87 -0
  400. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  401. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  402. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  403. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  404. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  405. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  406. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  407. package/lib/loop/plugins/a2ui/index.js +50 -0
  408. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  409. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  410. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  411. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  412. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  413. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  414. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  415. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  416. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  417. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  418. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  419. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  420. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  421. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  422. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  423. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  424. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  425. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  426. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  427. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  428. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  429. package/lib/loop/plugins/agent-evals/index.js +25 -0
  430. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  431. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  432. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  433. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  434. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  435. package/lib/loop/plugins/agent-inference/index.js +29 -0
  436. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  437. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  438. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  439. package/lib/loop/plugins/agent-memory/index.js +25 -0
  440. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  441. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  442. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  443. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  444. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  445. package/lib/loop/plugins/agent-otel/index.js +25 -0
  446. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  447. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  448. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  449. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  450. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  451. package/lib/loop/plugins/agent-skills/index.js +25 -0
  452. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  453. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  454. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  455. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  456. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  457. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  458. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  459. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  460. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  461. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  462. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  463. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  464. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  465. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  466. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  467. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  468. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  469. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  470. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  471. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  472. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  473. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  474. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  475. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  476. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  477. package/lib/loop/plugins/agents/browserService.js +233 -0
  478. package/lib/loop/plugins/agents/index.d.ts +13 -0
  479. package/lib/loop/plugins/agents/index.js +17 -0
  480. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  481. package/lib/loop/plugins/agents/plugin.js +201 -0
  482. package/lib/loop/plugins/agents/service.d.ts +99 -0
  483. package/lib/loop/plugins/agents/service.js +167 -0
  484. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  485. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  486. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  487. package/lib/loop/plugins/agents/switchable.js +405 -0
  488. package/lib/loop/plugins/agents/team.d.ts +87 -0
  489. package/lib/loop/plugins/agents/team.js +143 -0
  490. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  491. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  492. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  493. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  494. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  495. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  496. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  497. package/lib/loop/plugins/agentspecs/index.js +63 -0
  498. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  499. package/lib/loop/plugins/chat/ChatView.js +1670 -0
  500. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  501. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  502. package/lib/loop/plugins/chat/index.d.ts +111 -0
  503. package/lib/loop/plugins/chat/index.js +143 -0
  504. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  505. package/lib/loop/plugins/chat/turnState.js +90 -0
  506. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  507. package/lib/loop/plugins/chat-extras/index.js +51 -0
  508. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  509. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  510. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  511. package/lib/loop/plugins/chat-header/index.js +21 -0
  512. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  513. package/lib/loop/plugins/chat-view/index.js +29 -0
  514. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  515. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  516. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  517. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  518. package/lib/loop/plugins/commands/index.d.ts +20 -0
  519. package/lib/loop/plugins/commands/index.js +148 -0
  520. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  521. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  522. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  523. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  524. package/lib/loop/plugins/decks/index.d.ts +19 -0
  525. package/lib/loop/plugins/decks/index.js +133 -0
  526. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  527. package/lib/loop/plugins/decks/surface.js +11 -0
  528. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  529. package/lib/loop/plugins/document/DocumentView.js +68 -0
  530. package/lib/loop/plugins/document/index.d.ts +3 -0
  531. package/lib/loop/plugins/document/index.js +86 -0
  532. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  533. package/lib/loop/plugins/document/openingDocument.js +122 -0
  534. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  535. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  536. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  537. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  538. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  539. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  540. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  541. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  542. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  543. package/lib/loop/plugins/document-view/index.js +28 -0
  544. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  545. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  546. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  547. package/lib/loop/plugins/graph/GraphView.js +6 -0
  548. package/lib/loop/plugins/graph/index.d.ts +5 -0
  549. package/lib/loop/plugins/graph/index.js +80 -0
  550. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  551. package/lib/loop/plugins/graph/viewType.js +14 -0
  552. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  553. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  554. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  555. package/lib/loop/plugins/input-prompt/index.js +26 -0
  556. package/lib/loop/plugins/models/index.d.ts +3 -0
  557. package/lib/loop/plugins/models/index.js +49 -0
  558. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  559. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  560. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  561. package/lib/loop/plugins/notebook/index.js +91 -0
  562. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  563. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  564. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  565. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  566. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  567. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  568. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  569. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  570. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  571. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  572. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  573. package/lib/loop/plugins/notebook-view/index.js +30 -0
  574. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  575. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  576. package/lib/loop/plugins/page-layout/index.d.ts +35 -0
  577. package/lib/loop/plugins/page-layout/index.js +80 -0
  578. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  579. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  580. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  581. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  582. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  583. package/lib/loop/plugins/prompt/index.js +73 -0
  584. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  585. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  586. package/lib/loop/plugins/shell/index.d.ts +47 -0
  587. package/lib/loop/plugins/shell/index.js +142 -0
  588. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  589. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  590. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  591. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  592. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  593. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  594. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  595. package/lib/loop/plugins/view-switch/index.js +68 -0
  596. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  597. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  598. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  599. package/lib/loop/plugins/window-frame/index.js +79 -0
  600. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  601. package/lib/loop/plugins/window-frame/slots.js +30 -0
  602. package/lib/loop/presets.d.ts +167 -0
  603. package/lib/loop/presets.js +139 -0
  604. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  605. package/lib/loop/shell/LoopWorkspace.js +231 -0
  606. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  607. package/lib/loop/shell/PluginToggles.js +41 -0
  608. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  609. package/lib/loop/shell/ViewSwitcher.js +43 -0
  610. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  611. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  612. package/lib/loop/shell/index.d.ts +10 -0
  613. package/lib/loop/shell/index.js +14 -0
  614. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  615. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  616. package/lib/loop-example-main.d.ts +1 -0
  617. package/lib/loop-example-main.js +42 -0
  618. package/lib/loop-main.d.ts +1 -0
  619. package/lib/loop-main.js +138 -0
  620. package/lib/mcp/McpServerManager.d.ts +1 -1
  621. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  622. package/lib/models/CodeSandboxVariant.d.ts +13 -5
  623. package/lib/models/CodeSandboxVariant.js +17 -5
  624. package/lib/models/Content.d.ts +26 -0
  625. package/lib/models/Environment.d.ts +561 -5
  626. package/lib/models/Environment.js +12 -1
  627. package/lib/models/EnvironmentDTO.d.ts +24 -6
  628. package/lib/models/EnvironmentDTO.js +13 -2
  629. package/lib/models/Exercise.d.ts +0 -2
  630. package/lib/models/Library.d.ts +0 -2
  631. package/lib/models/Notebook.d.ts +0 -2
  632. package/lib/models/ProjectDTO.d.ts +2 -2
  633. package/lib/models/ProjectDTO.js +4 -4
  634. package/lib/models/Runtime.d.ts +11 -11
  635. package/lib/models/RuntimeDTO.d.ts +16 -7
  636. package/lib/models/RuntimeDTO.js +9 -9
  637. package/lib/models/Space.d.ts +10 -0
  638. package/lib/models/Space.js +1 -1
  639. package/lib/models/SpaceDTO.d.ts +1 -1
  640. package/lib/models/SpaceItem.d.ts +1 -2
  641. package/lib/models/environments.generated.d.ts +113 -0
  642. package/lib/models/environments.generated.js +13 -0
  643. package/lib/models/index.d.ts +0 -1
  644. package/lib/models/index.js +0 -1
  645. package/lib/protocols/A2AAdapter.d.ts +39 -6
  646. package/lib/protocols/A2AAdapter.js +180 -11
  647. package/lib/protocols/ACPAdapter.js +40 -37
  648. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  649. package/lib/protocols/AGUIAdapter.js +34 -9
  650. package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
  651. package/lib/protocols/BrowserAgentAdapter.js +310 -0
  652. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  653. package/lib/protocols/VercelAIAdapter.js +27 -7
  654. package/lib/protocols/index.d.ts +1 -0
  655. package/lib/protocols/index.js +1 -0
  656. package/lib/runtimes/actions.d.ts +3 -3
  657. package/lib/runtimes/actions.js +27 -14
  658. package/lib/runtimes/apis.d.ts +13 -4
  659. package/lib/runtimes/browser/agent.d.ts +54 -0
  660. package/lib/runtimes/browser/agent.js +63 -0
  661. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  662. package/lib/runtimes/browser/anonymousToken.js +300 -0
  663. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  664. package/lib/runtimes/browser/frontendTools.js +152 -0
  665. package/lib/runtimes/browser/index.d.ts +11 -0
  666. package/lib/runtimes/browser/index.js +20 -0
  667. package/lib/runtimes/browser/model.d.ts +52 -0
  668. package/lib/runtimes/browser/model.js +110 -0
  669. package/lib/runtimes/browser/protocol.d.ts +54 -0
  670. package/lib/runtimes/browser/protocol.js +35 -0
  671. package/lib/runtimes/browser/subagents.d.ts +131 -0
  672. package/lib/runtimes/browser/subagents.js +241 -0
  673. package/lib/runtimes/index.d.ts +3 -0
  674. package/lib/runtimes/index.js +3 -0
  675. package/lib/runtimes/lifecycle.d.ts +76 -0
  676. package/lib/runtimes/lifecycle.js +99 -0
  677. package/lib/runtimes/variants.d.ts +172 -0
  678. package/lib/runtimes/variants.js +187 -0
  679. package/lib/services/reconnectToRuntime.d.ts +2 -2
  680. package/lib/services/reconnectToRuntime.js +3 -3
  681. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  682. package/lib/services/sandboxServiceManagers.js +11 -11
  683. package/lib/specs/agents/agents.d.ts +128 -112
  684. package/lib/specs/agents/agents.js +8024 -5052
  685. package/lib/specs/evals.js +9 -0
  686. package/lib/specs/frontendTools.d.ts +3 -0
  687. package/lib/specs/frontendTools.js +46 -3
  688. package/lib/specs/mcpServers.d.ts +1 -0
  689. package/lib/specs/mcpServers.js +25 -2
  690. package/lib/specs/models.d.ts +18 -0
  691. package/lib/specs/models.js +154 -0
  692. package/lib/specs/outputs.d.ts +2 -0
  693. package/lib/specs/outputs.js +22 -0
  694. package/lib/specs/personas.js +1 -1
  695. package/lib/specs/teams/teams.d.ts +2 -0
  696. package/lib/specs/teams/teams.js +628 -111
  697. package/lib/state/index.d.ts +1 -1
  698. package/lib/state/index.js +1 -1
  699. package/lib/state/substates/RuntimesState.d.ts +5 -5
  700. package/lib/state/substates/RuntimesState.js +14 -14
  701. package/lib/state/substates/index.d.ts +1 -1
  702. package/lib/state/substates/index.js +1 -1
  703. package/lib/stores/agentRuntimeStore.d.ts +43 -1
  704. package/lib/stores/agentRuntimeStore.js +100 -11
  705. package/lib/stores/index.d.ts +1 -1
  706. package/lib/stores/index.js +1 -1
  707. package/lib/stories/Button.d.ts +1 -1
  708. package/lib/stories/Button.stories.d.ts +1 -1
  709. package/lib/stories/Header.d.ts +1 -1
  710. package/lib/stories/Header.stories.d.ts +1 -1
  711. package/lib/test-setup.js +66 -0
  712. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
  713. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
  714. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
  715. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
  716. package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
  717. package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
  718. package/lib/tools/adapters/commands/index.d.ts +1 -0
  719. package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
  720. package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
  721. package/lib/tools/index.d.ts +1 -0
  722. package/lib/tools/index.js +1 -0
  723. package/lib/types/a2a.d.ts +15 -1
  724. package/lib/types/agents-lifecycle.d.ts +11 -6
  725. package/lib/types/agents.d.ts +31 -6
  726. package/lib/types/agentspecs.d.ts +120 -4
  727. package/lib/types/chat.d.ts +251 -3
  728. package/lib/types/checkpoints.d.ts +20 -0
  729. package/lib/types/config.d.ts +13 -1
  730. package/lib/types/connection.d.ts +1 -1
  731. package/lib/types/evals.d.ts +2 -0
  732. package/lib/types/messages.d.ts +60 -0
  733. package/lib/types/models.d.ts +26 -0
  734. package/lib/types/notifications.d.ts +15 -6
  735. package/lib/types/protocol.d.ts +7 -2
  736. package/lib/types/stream.d.ts +48 -3
  737. package/lib/types/stream.js +5 -0
  738. package/lib/types/teams.d.ts +102 -4
  739. package/lib/types/tool-approvals.d.ts +1 -1
  740. package/lib/types/tools.d.ts +8 -2
  741. package/lib/utils/utils.js +7 -1
  742. package/package.json +376 -361
  743. package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
  744. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  745. package/scripts/codegen/compose.py +208 -0
  746. package/scripts/codegen/generate_agents.py +202 -31
  747. package/scripts/codegen/generate_evals.py +2 -0
  748. package/scripts/codegen/generate_frontend_tools.py +35 -6
  749. package/scripts/codegen/generate_models.py +40 -15
  750. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  751. package/scripts/codegen/generate_teams.py +178 -4
  752. package/scripts/codegen/generate_tools.py +6 -4
  753. package/scripts/gen_workers.py +278 -110
  754. package/scripts/generate-environments-types.py +404 -0
  755. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  756. package/lib/chat/prompt/InputFooter.js +0 -194
  757. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  758. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  759. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  760. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  761. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  762. package/lib/hooks/useRuntimes.d.ts +0 -5
  763. package/lib/hooks/useRuntimes.js +0 -34
  764. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  765. package/lib/jupyter/kernelsHandler.js +0 -39
  766. package/lib/models/Dataset.d.ts +0 -16
  767. package/lib/utils/Cells.d.ts +0 -2
  768. package/lib/utils/Cells.js +0 -28
@@ -2,8 +2,78 @@
2
2
  * Copyright (c) 2025-2026 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
+ /**
6
+ * A2A (Agent-to-Agent) protocol adapter using SSE transport.
7
+ *
8
+ * @module protocols/A2AAdapter
9
+ */
10
+ import { ORCHESTRATION_EXTENSION_URI, ENVELOPE_KEY as DATALAYER_META_KEY, readUsageMeta, } from '@datalayer/agent-teams';
5
11
  import { generateMessageId, createAssistantMessage } from '../types/messages';
6
12
  import { BaseProtocolAdapter } from './BaseProtocolAdapter';
13
+ /**
14
+ * The header fasta2a-based workers (`agent-runtimes`'s own, and any other
15
+ * built on it) actually read to activate an extension for one request —
16
+ * confirmed from `fasta2a.extensions`, not assumed: comma-separated URIs,
17
+ * answered on the same header naming which of them the agent knows.
18
+ * Neither this codebase's own `configuration.requestedExtensions` (read by
19
+ * nothing server-side) nor the A2A SDK's `Message.extensions` field is what
20
+ * a `fasta2a` worker's `activated_extensions()` looks at — this header is.
21
+ */
22
+ const A2A_EXTENSIONS_HEADER = 'A2A-Extensions';
23
+ const TERMINAL_TASK_STATES = new Set([
24
+ 'completed',
25
+ 'failed',
26
+ 'canceled',
27
+ 'rejected',
28
+ ]);
29
+ /**
30
+ * `fasta2a` wraps every `message/send` result and every `message/stream`
31
+ * event in a named key — `{ task: Task }`, `{ statusUpdate: ... }`,
32
+ * `{ artifactUpdate: ... }`, `{ message: Message }` — instead of the bare,
33
+ * `kind`-discriminated object
34
+ * (`Task.kind: 'task'`, `TaskStatusUpdateEvent.kind: 'status-update'`, ...)
35
+ * the current A2A specification requires and this file was written
36
+ * against. Confirmed directly, not assumed: `fasta2a.schema.SendMessageResult`
37
+ * and `StreamResponse` are TypedDicts with those named optional fields, and
38
+ * neither `Task` nor `TaskStatusUpdateEvent` in that schema carries a
39
+ * `kind` field at all. `agent_runtimes`' own A2A route is the same
40
+ * `FastA2A`, so every production Datalayer A2A worker serves this shape —
41
+ * a spec-conformant client (this file, or a genuine `a2a-sdk`-based one)
42
+ * could not render a single reply without this normalizer.
43
+ *
44
+ * A worker built to the current spec (its `result` already carries
45
+ * `kind`) passes through unchanged — this only steps in for the shape
46
+ * `fasta2a` actually sends.
47
+ *
48
+ * `fasta2a`'s `TaskStatusUpdateEvent` also has no `final` field, which the
49
+ * spec has and this file's status-update handling gates on; inferred here
50
+ * from the status being one of the terminal states, since nothing else in
51
+ * the payload says so.
52
+ */
53
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
+ function normalizeA2AResult(result) {
55
+ if (!result || typeof result !== 'object' || result.kind) {
56
+ return result;
57
+ }
58
+ if (result.task) {
59
+ return { ...result.task, kind: 'task' };
60
+ }
61
+ if (result.statusUpdate) {
62
+ const update = result.statusUpdate;
63
+ return {
64
+ ...update,
65
+ kind: 'status-update',
66
+ final: update.final ?? TERMINAL_TASK_STATES.has(update.status?.state),
67
+ };
68
+ }
69
+ if (result.artifactUpdate) {
70
+ return { ...result.artifactUpdate, kind: 'artifact-update' };
71
+ }
72
+ if (result.message) {
73
+ return { ...result.message, kind: 'message' };
74
+ }
75
+ return result;
76
+ }
7
77
  /**
8
78
  * A2A protocol adapter
9
79
  * Uses JSON-RPC 2.0 with SSE streaming for responses
@@ -13,8 +83,29 @@ export class A2AAdapter extends BaseProtocolAdapter {
13
83
  protocolTransport = 'sse';
14
84
  a2aConfig;
15
85
  abortController = null;
86
+ /**
87
+ * Every in-flight request's abort controller, not just the newest.
88
+ *
89
+ * `abortController` is a single field that each request overwrites, and each
90
+ * request's `finally` used to clear it unconditionally — so a request that
91
+ * finished just after a newer one started would null the newer one's handle,
92
+ * and a subsequent stop had nothing left to abort. The stream carried on and
93
+ * the transcript went on typing itself after the reader had asked it not to.
94
+ */
95
+ inFlight = new Set();
16
96
  agentCard = null;
17
97
  currentTaskId = null;
98
+ /**
99
+ * Whether the connected agent's card advertised the Datalayer
100
+ * orchestration extension (ORCHESTRATOR.md, O3-03). Set once, from
101
+ * `connect()`'s card fetch: neither side infers support from a
102
+ * successful message (the extension's own negotiation rule), so this is
103
+ * the one place that decides it, and every request either activates the
104
+ * extension by this or sends nothing extension-related at all — a worker
105
+ * that never advertised it sees a plain A2A client, unchanged from
106
+ * before this existed.
107
+ */
108
+ orchestrationExtensionSupported = false;
18
109
  constructor(config) {
19
110
  super(config);
20
111
  this.a2aConfig = {
@@ -28,9 +119,18 @@ export class A2AAdapter extends BaseProtocolAdapter {
28
119
  async connect() {
29
120
  this.setConnectionState('connecting');
30
121
  try {
31
- // Fetch agent card from .well-known endpoint
122
+ // Fetch agent card from .well-known endpoint. The current A2A
123
+ // specification's path is `agent-card.json` — `fasta2a`'s FastA2A
124
+ // (and a2a-sdk's own A2ACardResolver default) serves only that,
125
+ // confirmed by reading FastA2A's own route registration; the plain
126
+ // `agent.json` this fetched before was an earlier draft's path, and
127
+ // fetching it here 404s against every real worker, silently, since
128
+ // a missing card is caught below and connect() still "succeeds" —
129
+ // found live, against agent_teams.a2a.reference_worker
130
+ // (ORCHESTRATOR.md O3-04), not assumed: `supportsOrchestrationExtension`
131
+ // stayed false against a worker whose card plainly advertised it.
32
132
  const agentUrl = this.a2aConfig.agentUrl || this.a2aConfig.baseUrl;
33
- const wellKnownUrl = new URL('/.well-known/agent.json', agentUrl).toString();
133
+ const wellKnownUrl = new URL('/.well-known/agent-card.json', agentUrl).toString();
34
134
  const response = await fetch(wellKnownUrl, {
35
135
  method: 'GET',
36
136
  headers: this.buildHeaders(),
@@ -38,6 +138,8 @@ export class A2AAdapter extends BaseProtocolAdapter {
38
138
  });
39
139
  if (response.ok) {
40
140
  this.agentCard = await response.json();
141
+ this.orchestrationExtensionSupported =
142
+ this.agentCard?.capabilities?.extensions?.some(extension => extension.uri === ORCHESTRATION_EXTENSION_URI) ?? false;
41
143
  }
42
144
  this.setConnectionState('connected');
43
145
  }
@@ -51,10 +153,8 @@ export class A2AAdapter extends BaseProtocolAdapter {
51
153
  * Disconnect and terminate any ongoing agent execution
52
154
  */
53
155
  disconnect() {
54
- if (this.abortController) {
55
- this.abortController.abort();
56
- this.abortController = null;
57
- }
156
+ // Every open stream, not merely the newest.
157
+ this.stopGeneration();
58
158
  // Send terminate request to backend if we have a task ID
59
159
  if (this.currentTaskId) {
60
160
  this.terminateTask(this.currentTaskId).catch(err => {
@@ -99,11 +199,23 @@ export class A2AAdapter extends BaseProtocolAdapter {
99
199
  async getAgentCard() {
100
200
  return this.agentCard;
101
201
  }
202
+ /**
203
+ * Whether the connected agent advertised the Datalayer orchestration
204
+ * extension. `false` until `connect()` has fetched a card, and `false`
205
+ * for any card that does not list it — including one that could not be
206
+ * fetched at all, so a worker with no card behaves exactly as it did
207
+ * before this existed.
208
+ */
209
+ get supportsOrchestrationExtension() {
210
+ return this.orchestrationExtensionSupported;
211
+ }
102
212
  /**
103
213
  * Send a message through A2A protocol
104
214
  */
105
215
  async sendMessage(message, options) {
106
- this.abortController = new AbortController();
216
+ const controller = new AbortController();
217
+ this.abortController = controller;
218
+ this.inFlight.add(controller);
107
219
  const taskId = options?.threadId || this.currentTaskId || generateMessageId();
108
220
  this.currentTaskId = taskId;
109
221
  // Build A2A message parts (A2A uses 'kind' discriminator, not 'type')
@@ -166,9 +278,15 @@ export class A2AAdapter extends BaseProtocolAdapter {
166
278
  method: 'POST',
167
279
  headers: this.buildHeaders({
168
280
  Accept: 'text/event-stream, application/json',
281
+ // Activates the extension for this one request, only once the
282
+ // worker's own card advertised it — degrading to a plain A2A
283
+ // request (no header at all) otherwise.
284
+ ...(this.orchestrationExtensionSupported && {
285
+ [A2A_EXTENSIONS_HEADER]: ORCHESTRATION_EXTENSION_URI,
286
+ }),
169
287
  }),
170
288
  body: JSON.stringify(jsonRpcRequest),
171
- signal: this.abortController.signal,
289
+ signal: controller.signal,
172
290
  });
173
291
  if (!response.ok) {
174
292
  throw new Error(`A2A request failed: ${response.status} ${response.statusText}`);
@@ -198,8 +316,26 @@ export class A2AAdapter extends BaseProtocolAdapter {
198
316
  throw error;
199
317
  }
200
318
  finally {
201
- this.abortController = null;
319
+ this.inFlight.delete(controller);
320
+ if (this.abortController === controller) {
321
+ this.abortController = null;
322
+ }
323
+ }
324
+ }
325
+ /**
326
+ * Abort every in-flight stream without tearing the adapter down.
327
+ *
328
+ * This adapter had no such method, so pressing Stop reached only
329
+ * `terminateTask` — a request to the backend to cancel — and never closed
330
+ * the client's own stream. Whatever was already on the wire kept arriving
331
+ * and kept being rendered. `ChatBase` looks for this by name.
332
+ */
333
+ stopGeneration() {
334
+ for (const controller of this.inFlight) {
335
+ controller.abort();
202
336
  }
337
+ this.inFlight.clear();
338
+ this.abortController = null;
203
339
  }
204
340
  /**
205
341
  * Send tool result back
@@ -269,7 +405,7 @@ export class A2AAdapter extends BaseProtocolAdapter {
269
405
  console.log('[A2AAdapter] Received event:', JSON.stringify(event, null, 2));
270
406
  // Handle JSON-RPC response
271
407
  if (event.result) {
272
- this.handleTaskUpdate(event.result);
408
+ this.handleTaskUpdate(normalizeA2AResult(event.result));
273
409
  }
274
410
  else if (event.error) {
275
411
  this.emit({
@@ -298,9 +434,42 @@ export class A2AAdapter extends BaseProtocolAdapter {
298
434
  console.log('[A2AAdapter] Status update:', state, 'final:', task.final);
299
435
  if (task.final &&
300
436
  (state === 'completed' || state === 'failed' || state === 'canceled')) {
437
+ // Only read the envelope once the worker actually named the
438
+ // extension active — a plain worker's status carries no
439
+ // `datalayer` key, and this stays `undefined` for it exactly as
440
+ // it did before the extension existed.
441
+ const datalayerMeta = this.orchestrationExtensionSupported
442
+ ? task.status?.message?.metadata?.[DATALAYER_META_KEY]
443
+ : undefined;
444
+ const datalayerUsage = datalayerMeta
445
+ ? readUsageMeta(task.status.message.metadata)
446
+ : undefined;
301
447
  this.emit({
302
448
  type: 'state-update',
303
- data: { state, final: true },
449
+ data: {
450
+ state,
451
+ final: true,
452
+ ...(datalayerMeta?.paused && {
453
+ datalayerPaused: datalayerMeta.paused,
454
+ }),
455
+ ...(datalayerMeta?.error && {
456
+ datalayerError: datalayerMeta.error,
457
+ }),
458
+ ...(datalayerUsage && { datalayerUsage }),
459
+ },
460
+ // Best-effort mapping onto the cross-protocol shape; a worker
461
+ // that priced the run also sets `datalayerUsage.cost`, which
462
+ // has no field here and is not dropped — it is still on `data`.
463
+ ...(datalayerUsage && {
464
+ usage: {
465
+ promptTokens: datalayerUsage.inputTokens ?? 0,
466
+ completionTokens: datalayerUsage.outputTokens ?? 0,
467
+ ...(datalayerUsage.inputTokens !== undefined &&
468
+ datalayerUsage.outputTokens !== undefined && {
469
+ totalTokens: datalayerUsage.inputTokens + datalayerUsage.outputTokens,
470
+ }),
471
+ },
472
+ }),
304
473
  timestamp: new Date(),
305
474
  });
306
475
  }
@@ -183,17 +183,16 @@ export class ACPAdapter extends BaseProtocolAdapter {
183
183
  console.warn('[ACPAdapter] Cannot terminate: No session ID');
184
184
  return;
185
185
  }
186
- // Send session/cancel JSON-RPC request
187
- const requestId = `cancel-${Date.now()}`;
188
- const cancelRequest = {
186
+ // A notification, as the ACP schema makes session/cancel: no id and no
187
+ // answer. The running prompt answers with stopReason "cancelled".
188
+ const cancelNotification = {
189
189
  jsonrpc: '2.0',
190
190
  method: 'session/cancel',
191
191
  params: {
192
192
  sessionId: targetSessionId,
193
193
  },
194
- id: requestId,
195
194
  };
196
- this.ws.send(JSON.stringify(cancelRequest));
195
+ this.ws.send(JSON.stringify(cancelNotification));
197
196
  console.debug('[ACPAdapter] Sent session/cancel for:', targetSessionId);
198
197
  }
199
198
  catch (err) {
@@ -237,7 +236,7 @@ export class ACPAdapter extends BaseProtocolAdapter {
237
236
  }
238
237
  await this.sendRequest(AGENT_METHODS.session_prompt, {
239
238
  sessionId: this.session.sessionId,
240
- content: [{ type: 'text', text: content }],
239
+ prompt: [{ type: 'text', text: content }],
241
240
  // Include metadata with model and identities
242
241
  ...(Object.keys(metadata).length > 0 && { metadata }),
243
242
  });
@@ -413,12 +412,22 @@ export class ACPAdapter extends BaseProtocolAdapter {
413
412
  * Handle session update notifications
414
413
  */
415
414
  handleSessionUpdate(params) {
416
- const updateType = params.sessionUpdate;
417
- // Handle streaming text chunks
418
- if (updateType === 'agent_message_chunk' && params.chunk) {
419
- const chunk = params.chunk;
420
- // Filter out debug StreamEvent strings
421
- if (!chunk.startsWith('StreamEvent(')) {
415
+ // As the ACP schema spells it: the update nested under `update`, its text
416
+ // in a content block. A failed turn is the prompt's JSON-RPC error, not an
417
+ // update.
418
+ const update = params.update;
419
+ if (!update) {
420
+ return;
421
+ }
422
+ const updateType = update.sessionUpdate;
423
+ const textOf = (content) => content &&
424
+ typeof content === 'object' &&
425
+ content.type === 'text'
426
+ ? String(content.text ?? '')
427
+ : '';
428
+ if (updateType === 'agent_message_chunk') {
429
+ const chunk = textOf(update.content);
430
+ if (chunk) {
422
431
  this.streamingContent += chunk;
423
432
  // Use stable message ID for streaming updates
424
433
  const streamingMessage = createAssistantMessage(this.streamingContent);
@@ -432,47 +441,41 @@ export class ACPAdapter extends BaseProtocolAdapter {
432
441
  });
433
442
  }
434
443
  }
435
- // Handle tool calls
436
444
  if (updateType === 'tool_call') {
445
+ const call = update;
437
446
  this.emit({
438
447
  type: 'tool-call',
439
448
  toolCall: {
440
- toolCallId: params.toolCallId || generateMessageId(),
441
- toolName: params.title || '',
442
- args: params.rawInput || {},
449
+ toolCallId: call.toolCallId || generateMessageId(),
450
+ toolName: call.title || '',
451
+ args: call.rawInput || {},
443
452
  },
444
453
  timestamp: new Date(),
445
454
  });
446
455
  }
447
- // Handle tool results
448
456
  if (updateType === 'tool_call_update') {
457
+ const progress = update;
449
458
  this.emit({
450
459
  type: 'tool-result',
451
460
  toolResult: {
452
- success: true,
453
- result: params.rawOutput,
454
- },
455
- timestamp: new Date(),
456
- });
457
- }
458
- // Handle thought chunks (could be displayed differently)
459
- if (updateType === 'agent_thought_chunk' && params.chunk) {
460
- this.emit({
461
- type: 'activity',
462
- activity: {
463
- type: 'thought',
464
- data: params.chunk,
461
+ success: progress.status !== 'failed',
462
+ result: progress.rawOutput,
465
463
  },
466
464
  timestamp: new Date(),
467
465
  });
468
466
  }
469
- // Handle error events - emit as error, not as message
470
- if (params.error) {
471
- this.emit({
472
- type: 'error',
473
- error: new Error(params.error),
474
- timestamp: new Date(),
475
- });
467
+ if (updateType === 'agent_thought_chunk') {
468
+ const thought = textOf(update.content);
469
+ if (thought) {
470
+ this.emit({
471
+ type: 'activity',
472
+ activity: {
473
+ type: 'thought',
474
+ data: thought,
475
+ },
476
+ timestamp: new Date(),
477
+ });
478
+ }
476
479
  }
477
480
  }
478
481
  /**
@@ -23,6 +23,20 @@ export declare class AGUIAdapter extends BaseProtocolAdapter {
23
23
  readonly protocolTransport: "sse";
24
24
  private aguiConfig;
25
25
  private abortController;
26
+ /**
27
+ * Every in-flight request's abort controller, not just the newest.
28
+ *
29
+ * A turn is rarely one request. Each tool result starts a continuation
30
+ * through `sendMessage`, and that overwrites `abortController` — so the
31
+ * moment two streams overlap, the earlier one's controller is no longer
32
+ * reachable and `stopGeneration` cannot abort it. It aborted whichever
33
+ * request happened to be last and left the others pouring tokens into a
34
+ * transcript the reader had already asked to stop, which is worst in
35
+ * exactly the tool-heavy sessions where stopping matters most.
36
+ *
37
+ * A set, because the fix has to hold however many are open.
38
+ */
39
+ private inFlight;
26
40
  private currentThreadId;
27
41
  private pendingToolCalls;
28
42
  private collectedToolResults;
@@ -13,6 +13,20 @@ export class AGUIAdapter extends BaseProtocolAdapter {
13
13
  protocolTransport = 'sse';
14
14
  aguiConfig;
15
15
  abortController = null;
16
+ /**
17
+ * Every in-flight request's abort controller, not just the newest.
18
+ *
19
+ * A turn is rarely one request. Each tool result starts a continuation
20
+ * through `sendMessage`, and that overwrites `abortController` — so the
21
+ * moment two streams overlap, the earlier one's controller is no longer
22
+ * reachable and `stopGeneration` cannot abort it. It aborted whichever
23
+ * request happened to be last and left the others pouring tokens into a
24
+ * transcript the reader had already asked to stop, which is worst in
25
+ * exactly the tool-heavy sessions where stopping matters most.
26
+ *
27
+ * A set, because the fix has to hold however many are open.
28
+ */
29
+ inFlight = new Set();
16
30
  currentThreadId = null;
17
31
  // Track in-progress tool calls to accumulate args and emit results
18
32
  pendingToolCalls = new Map();
@@ -66,11 +80,8 @@ export class AGUIAdapter extends BaseProtocolAdapter {
66
80
  * Disconnect and terminate any ongoing agent execution
67
81
  */
68
82
  disconnect() {
69
- // Abort any ongoing fetch request
70
- if (this.abortController) {
71
- this.abortController.abort();
72
- this.abortController = null;
73
- }
83
+ // Abort every ongoing fetch request, not merely the newest.
84
+ this.stopGeneration();
74
85
  // Send terminate request to backend if we have a thread ID
75
86
  if (this.currentThreadId) {
76
87
  this.terminateAgent(this.currentThreadId).catch(err => {
@@ -112,7 +123,12 @@ export class AGUIAdapter extends BaseProtocolAdapter {
112
123
  * @param options - Options including full message history
113
124
  */
114
125
  async sendMessage(message, options) {
115
- this.abortController = new AbortController();
126
+ // Held in a local as well as the field: by the time the `finally` below
127
+ // runs, a continuation may already have replaced the field, and this
128
+ // request must only ever retire its own controller.
129
+ const controller = new AbortController();
130
+ this.abortController = controller;
131
+ this.inFlight.add(controller);
116
132
  const threadId = options?.threadId || this.currentThreadId || generateMessageId();
117
133
  this.currentThreadId = threadId;
118
134
  // Use full message history if provided, otherwise just the new message
@@ -195,7 +211,7 @@ export class AGUIAdapter extends BaseProtocolAdapter {
195
211
  Accept: 'text/event-stream',
196
212
  }),
197
213
  body: JSON.stringify(runAgentInput),
198
- signal: this.abortController.signal,
214
+ signal: controller.signal,
199
215
  });
200
216
  if (!response.ok) {
201
217
  throw new Error(`AG-UI request failed: ${response.status} ${response.statusText}`);
@@ -215,7 +231,13 @@ export class AGUIAdapter extends BaseProtocolAdapter {
215
231
  throw error;
216
232
  }
217
233
  finally {
218
- this.abortController = null;
234
+ // This request's own controller, captured before any continuation could
235
+ // have replaced the field — clearing the field itself would drop a
236
+ // newer, still-running request's handle on the floor.
237
+ this.inFlight.delete(controller);
238
+ if (this.abortController === controller) {
239
+ this.abortController = null;
240
+ }
219
241
  }
220
242
  }
221
243
  /**
@@ -352,7 +374,10 @@ export class AGUIAdapter extends BaseProtocolAdapter {
352
374
  * the adapter connection.
353
375
  */
354
376
  stopGeneration() {
355
- this.abortController?.abort();
377
+ for (const controller of this.inFlight) {
378
+ controller.abort();
379
+ }
380
+ this.inFlight.clear();
356
381
  this.abortController = null;
357
382
  }
358
383
  /**
@@ -0,0 +1,117 @@
1
+ /**
2
+ * The browser harness, behind the protocol interface every chat surface uses.
3
+ *
4
+ * The other adapters carry messages to somewhere else — AG-UI over SSE, Vercel
5
+ * AI over SSE, ACP over a socket. This one carries them nowhere: the loop turns
6
+ * in this page with the Vercel AI SDK, and the adapter exists so that fact
7
+ * stays invisible to `<Chat>`, `<ChatFloating>` and everything downstream of
8
+ * them. Suggestions, tool rendering, the panel, the history: all unchanged.
9
+ *
10
+ * That is the point of putting it here rather than writing a bespoke chat for
11
+ * in-browser agents. There is nothing chat-shaped about the browser harness —
12
+ * only a different answer to "where does the loop turn" — so it belongs at the
13
+ * one seam the package already has for that question.
14
+ *
15
+ * **Who executes the tools.** In every other adapter the runtime asks and the
16
+ * client answers: a `tool-call` arrives, `ChatBase` runs the frontend tool's
17
+ * handler and posts the result back with {@link sendToolResult}. Here the SDK
18
+ * owns the loop and calls the handler itself, so a host must NOT also pass
19
+ * `frontendTools` to the chat component — the tools go to this adapter, and the
20
+ * chat is left to render what happened. {@link sendToolResult} is therefore a
21
+ * no-op: by the time anyone could call it, the tool has already run.
22
+ *
23
+ * @module protocols/BrowserAgentAdapter
24
+ */
25
+ import { type LanguageModel } from 'ai';
26
+ import type { ProtocolAdapterConfig } from '../types/protocol';
27
+ import type { ChatMessage } from '../types/messages';
28
+ import type { FrontendToolDefinition } from '../types/tools';
29
+ import type { AgentStreamSubagentPayload } from '../types/stream';
30
+ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
31
+ import type { TeamContextSharing } from '../types/teams';
32
+ import { type BrowserSubagent, type BrowserModelOptions, type FrontendToolsToVercelAIOptions } from '../runtimes/browser';
33
+ /**
34
+ * What a browser agent needs that a remote one does not.
35
+ *
36
+ * These arrive through `ProtocolConfig.options`, which `createProtocolAdapter`
37
+ * spreads onto the adapter config. They are live objects — a tool set bound to
38
+ * this page's notebook — rather than the URLs and tokens the other adapters
39
+ * take, which is exactly the difference between running a loop and calling one.
40
+ */
41
+ export interface BrowserAgentAdapterConfig extends ProtocolAdapterConfig, FrontendToolsToVercelAIOptions {
42
+ /** The agent's instructions. From the spec's `systemPrompt`. */
43
+ instructions?: string;
44
+ /** The tools the agent can call in this page. */
45
+ frontendTools?: FrontendToolDefinition[];
46
+ /** Where to reach a model, unless one is supplied outright. */
47
+ inference?: Omit<BrowserModelOptions, 'model'>;
48
+ /** The model id, as a spec spells it. */
49
+ model?: string;
50
+ /** A ready-made model, for a host that resolves models its own way. */
51
+ languageModel?: LanguageModel;
52
+ /** Turn ceiling for one request. */
53
+ maxSteps?: number;
54
+ /**
55
+ * Agents this one may hand work to.
56
+ *
57
+ * They join the frontend tools as tools of their own, which is how the SDK
58
+ * models delegation: a subagent is another agent the parent reaches by
59
+ * calling it.
60
+ */
61
+ subagents?: BrowserSubagent[];
62
+ /** What a subagent is told about the conversation so far. */
63
+ sharing?: TeamContextSharing;
64
+ /** Told what a delegated run does, as it does it — see `subagentTools`. */
65
+ onSubagentEvent?: (event: AgentStreamSubagentPayload) => void;
66
+ }
67
+ /**
68
+ * An agent loop running in the page, speaking the protocol adapter interface.
69
+ */
70
+ export declare class BrowserAgentAdapter extends BaseProtocolAdapter {
71
+ readonly protocol: "browser-vercel-ai";
72
+ readonly protocolTransport: "http";
73
+ private browserConfig;
74
+ private abortController;
75
+ private tools;
76
+ constructor(config: BrowserAgentAdapterConfig);
77
+ /**
78
+ * Nothing to dial.
79
+ *
80
+ * The interface asks for a connection because the other adapters have one.
81
+ * This reports connected because the loop is already here.
82
+ */
83
+ connect(): Promise<void>;
84
+ disconnect(): void;
85
+ /**
86
+ * Stop the run in flight, and stay connected.
87
+ *
88
+ * What the chat's stop button calls on an adapter that has it. The other
89
+ * adapters cut a network stream; this one cuts the model call turning in
90
+ * the page — and, through the signal every delegation reads, the
91
+ * subagents that call started. Without this the button stopped the
92
+ * chat's *display* of the run and nothing else: the parent kept calling
93
+ * the model and the children kept working.
94
+ */
95
+ stopGeneration(): void;
96
+ supportsFeature(feature: string): boolean;
97
+ /**
98
+ * Already done.
99
+ *
100
+ * The SDK executed the tool before this adapter reported it, so there is no
101
+ * result to carry back and nothing to resume. Kept because the interface has
102
+ * it and a host should not have to know which adapter it is holding.
103
+ */
104
+ sendToolResult(): Promise<void>;
105
+ /** The model this agent asks, resolved once per request. */
106
+ private resolveModel;
107
+ /**
108
+ * Run one turn of the loop and report it as it happens.
109
+ *
110
+ * The SDK's `fullStream` is already the event stream this interface wants —
111
+ * text deltas, tool calls, tool results, a finish — so the body of this is a
112
+ * translation rather than a protocol implementation.
113
+ */
114
+ sendMessage(message: ChatMessage, options?: {
115
+ messages?: ChatMessage[];
116
+ }): Promise<void>;
117
+ }