@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
@@ -0,0 +1,310 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The browser harness, behind the protocol interface every chat surface uses.
7
+ *
8
+ * The other adapters carry messages to somewhere else — AG-UI over SSE, Vercel
9
+ * AI over SSE, ACP over a socket. This one carries them nowhere: the loop turns
10
+ * in this page with the Vercel AI SDK, and the adapter exists so that fact
11
+ * stays invisible to `<Chat>`, `<ChatFloating>` and everything downstream of
12
+ * them. Suggestions, tool rendering, the panel, the history: all unchanged.
13
+ *
14
+ * That is the point of putting it here rather than writing a bespoke chat for
15
+ * in-browser agents. There is nothing chat-shaped about the browser harness —
16
+ * only a different answer to "where does the loop turn" — so it belongs at the
17
+ * one seam the package already has for that question.
18
+ *
19
+ * **Who executes the tools.** In every other adapter the runtime asks and the
20
+ * client answers: a `tool-call` arrives, `ChatBase` runs the frontend tool's
21
+ * handler and posts the result back with {@link sendToolResult}. Here the SDK
22
+ * owns the loop and calls the handler itself, so a host must NOT also pass
23
+ * `frontendTools` to the chat component — the tools go to this adapter, and the
24
+ * chat is left to render what happened. {@link sendToolResult} is therefore a
25
+ * no-op: by the time anyone could call it, the tool has already run.
26
+ *
27
+ * @module protocols/BrowserAgentAdapter
28
+ */
29
+ import { streamText, stepCountIs } from 'ai';
30
+ import { createAssistantMessage, generateMessageId } from '../types/messages';
31
+ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
32
+ import { createBrowserModel, frontendToolsToVercelAI, subagentTools, DEFAULT_BROWSER_MAX_STEPS, } from '../runtimes/browser';
33
+ /** The text of a chat message, whatever shape it arrived in. */
34
+ function messageText(message) {
35
+ if (typeof message.content === 'string') {
36
+ return message.content;
37
+ }
38
+ return message.content
39
+ .map(part => typeof part === 'string'
40
+ ? part
41
+ : (part.text ?? ''))
42
+ .join('');
43
+ }
44
+ /** The roles a model can be sent. Everything else is presentation. */
45
+ function isModelRole(role) {
46
+ return role === 'user' || role === 'assistant' || role === 'system';
47
+ }
48
+ /**
49
+ * An agent loop running in the page, speaking the protocol adapter interface.
50
+ */
51
+ export class BrowserAgentAdapter extends BaseProtocolAdapter {
52
+ protocol = 'browser-vercel-ai';
53
+ protocolTransport = 'http';
54
+ browserConfig;
55
+ abortController = null;
56
+ tools;
57
+ constructor(config) {
58
+ super(config);
59
+ this.browserConfig = config;
60
+ const page = frontendToolsToVercelAI(config.frontendTools ?? [], {
61
+ onHitlRequired: config.onHitlRequired,
62
+ onStatusChange: config.onStatusChange,
63
+ });
64
+ // One set: to the model there is no difference between reaching into the
65
+ // page and reaching another agent — both are tools it may call, and the
66
+ // names are what it chooses between.
67
+ this.tools = {
68
+ ...page,
69
+ ...(config.subagents?.length && config.inference
70
+ ? subagentTools({
71
+ subagents: config.subagents,
72
+ inference: config.inference,
73
+ model: config.model,
74
+ sharing: config.sharing,
75
+ // A member reached by delegation works in this page too, with
76
+ // the same tools as the one that delegated.
77
+ tools: page,
78
+ onEvent: config.onSubagentEvent,
79
+ // The run being stopped stops its delegations too.
80
+ signal: () => this.abortController?.signal,
81
+ })
82
+ : {}),
83
+ };
84
+ }
85
+ /**
86
+ * Nothing to dial.
87
+ *
88
+ * The interface asks for a connection because the other adapters have one.
89
+ * This reports connected because the loop is already here.
90
+ */
91
+ async connect() {
92
+ this.setConnectionState('connected');
93
+ }
94
+ disconnect() {
95
+ this.abortController?.abort();
96
+ this.abortController = null;
97
+ this.setConnectionState('disconnected');
98
+ }
99
+ /**
100
+ * Stop the run in flight, and stay connected.
101
+ *
102
+ * What the chat's stop button calls on an adapter that has it. The other
103
+ * adapters cut a network stream; this one cuts the model call turning in
104
+ * the page — and, through the signal every delegation reads, the
105
+ * subagents that call started. Without this the button stopped the
106
+ * chat's *display* of the run and nothing else: the parent kept calling
107
+ * the model and the children kept working.
108
+ */
109
+ stopGeneration() {
110
+ this.abortController?.abort();
111
+ }
112
+ supportsFeature(feature) {
113
+ // Tools, yes — they are the whole point. Not the rest: there is no server
114
+ // to hold a thread, resume a run, or approve anything out of band.
115
+ return feature === 'tools';
116
+ }
117
+ /**
118
+ * Already done.
119
+ *
120
+ * The SDK executed the tool before this adapter reported it, so there is no
121
+ * result to carry back and nothing to resume. Kept because the interface has
122
+ * it and a host should not have to know which adapter it is holding.
123
+ */
124
+ async sendToolResult() { }
125
+ /** The model this agent asks, resolved once per request. */
126
+ resolveModel() {
127
+ const { languageModel, inference, model } = this.browserConfig;
128
+ if (languageModel) {
129
+ return languageModel;
130
+ }
131
+ if (!inference) {
132
+ throw new Error('A browser agent needs either a `languageModel` or an `inference` endpoint to reach one.');
133
+ }
134
+ return createBrowserModel({ ...inference, model });
135
+ }
136
+ /**
137
+ * Run one turn of the loop and report it as it happens.
138
+ *
139
+ * The SDK's `fullStream` is already the event stream this interface wants —
140
+ * text deltas, tool calls, tool results, a finish — so the body of this is a
141
+ * translation rather than a protocol implementation.
142
+ */
143
+ async sendMessage(message, options) {
144
+ this.abortController?.abort();
145
+ const abortController = new AbortController();
146
+ this.abortController = abortController;
147
+ // The history the chat is showing, minus anything the model has no role
148
+ // for — tool-call entries and activity items are presentation.
149
+ const history = (options?.messages ?? [])
150
+ .filter(entry => isModelRole(entry.role))
151
+ .map(entry => ({
152
+ role: entry.role,
153
+ content: messageText(entry),
154
+ }))
155
+ .filter(entry => entry.content.length > 0);
156
+ const latest = messageText(message);
157
+ if (latest && history[history.length - 1]?.content !== latest) {
158
+ history.push({ role: 'user', content: latest });
159
+ }
160
+ /*
161
+ * One message per text block, and an id of our own for each.
162
+ *
163
+ * A tool-using turn is several blocks: the model says what it is about to
164
+ * do, calls a tool, then says what it found. The SDK marks each with
165
+ * `text-start`, and the chat keys on the message id — same id replaces in
166
+ * place, a new id appends. Accumulating a whole turn under one id folded
167
+ * everything said after a tool call back into the sentence before it.
168
+ *
169
+ * The id must not be the provider's, either. `text-start` carries a block
170
+ * id that is unique only *within* a response — commonly "0" — so reusing
171
+ * it across turns made the second turn's text replace the first turn's
172
+ * message, which the chat then showed above the question that prompted it.
173
+ * Ours are unique for the life of the page, which is the scope the chat's
174
+ * message list actually has.
175
+ */
176
+ let messageId = null;
177
+ let text = '';
178
+ /** Begin a new assistant message. */
179
+ const startBlock = () => {
180
+ messageId = generateMessageId();
181
+ text = '';
182
+ };
183
+ /** Emit the assistant message as it stands, so the chat can stream it. */
184
+ const emitText = () => {
185
+ const assistant = createAssistantMessage(text);
186
+ assistant.id = messageId;
187
+ this.emit({ type: 'message', message: assistant, timestamp: new Date() });
188
+ };
189
+ try {
190
+ const result = streamText({
191
+ model: this.resolveModel(),
192
+ system: this.browserConfig.instructions,
193
+ messages: history,
194
+ tools: this.tools,
195
+ stopWhen: stepCountIs(this.browserConfig.maxSteps ?? DEFAULT_BROWSER_MAX_STEPS),
196
+ abortSignal: abortController.signal,
197
+ });
198
+ for await (const part of result.fullStream) {
199
+ if (abortController.signal.aborted) {
200
+ break;
201
+ }
202
+ switch (part.type) {
203
+ case 'text-start':
204
+ // A new block: whatever follows belongs to a message of its own,
205
+ // after any tool the previous block called.
206
+ startBlock();
207
+ break;
208
+ case 'text-delta':
209
+ // Defensively: a provider that streams text without announcing a
210
+ // block still gets a message rather than losing its words.
211
+ if (messageId === null) {
212
+ startBlock();
213
+ }
214
+ text += part.text;
215
+ emitText();
216
+ break;
217
+ case 'tool-call':
218
+ this.emit({
219
+ type: 'tool-call',
220
+ toolCall: {
221
+ toolCallId: part.toolCallId,
222
+ toolName: part.toolName,
223
+ args: (part.input ?? {}),
224
+ // The SDK hands over a whole argument set in one part; unlike
225
+ // AG-UI, nothing more is coming.
226
+ argsComplete: true,
227
+ },
228
+ timestamp: new Date(),
229
+ });
230
+ break;
231
+ case 'tool-result':
232
+ this.emit({
233
+ type: 'tool-result',
234
+ toolResult: {
235
+ toolCallId: part.toolCallId,
236
+ success: true,
237
+ result: part.output,
238
+ },
239
+ timestamp: new Date(),
240
+ });
241
+ break;
242
+ case 'tool-error':
243
+ this.emit({
244
+ type: 'tool-result',
245
+ toolResult: {
246
+ toolCallId: part.toolCallId,
247
+ success: false,
248
+ error: part.error instanceof Error
249
+ ? part.error.message
250
+ : String(part.error),
251
+ },
252
+ timestamp: new Date(),
253
+ });
254
+ break;
255
+ case 'error':
256
+ this.emit({
257
+ type: 'error',
258
+ error: part.error instanceof Error
259
+ ? part.error
260
+ : new Error(String(part.error)),
261
+ timestamp: new Date(),
262
+ });
263
+ break;
264
+ case 'finish': {
265
+ /*
266
+ * Whatever the provider counted, summed when it did not total.
267
+ *
268
+ * The SDK's `totalUsage` fields are all optional, and a
269
+ * provider that reports the parts but not the sum used to leave
270
+ * `totalTokens` undefined — which is the one field the chat's
271
+ * local accounting keys on, so the usage bar read 0 for turns
272
+ * that were counted perfectly well.
273
+ */
274
+ const counted = part.totalUsage;
275
+ const promptTokens = counted?.inputTokens ?? 0;
276
+ const completionTokens = counted?.outputTokens ?? 0;
277
+ const totalTokens = counted?.totalTokens ??
278
+ (promptTokens + completionTokens > 0
279
+ ? promptTokens + completionTokens
280
+ : undefined);
281
+ this.emit({
282
+ type: 'done',
283
+ usage: { promptTokens, completionTokens, totalTokens },
284
+ timestamp: new Date(),
285
+ });
286
+ break;
287
+ }
288
+ default:
289
+ break;
290
+ }
291
+ }
292
+ }
293
+ catch (error) {
294
+ if (abortController.signal.aborted) {
295
+ return;
296
+ }
297
+ this.emit({
298
+ type: 'error',
299
+ error: error instanceof Error ? error : new Error(String(error)),
300
+ timestamp: new Date(),
301
+ });
302
+ this.emit({ type: 'done', timestamp: new Date() });
303
+ }
304
+ finally {
305
+ if (this.abortController === abortController) {
306
+ this.abortController = null;
307
+ }
308
+ }
309
+ }
310
+ }
@@ -36,6 +36,16 @@ export declare class VercelAIAdapter extends BaseProtocolAdapter {
36
36
  readonly protocolTransport: "sse";
37
37
  private vercelConfig;
38
38
  private abortController;
39
+ /**
40
+ * Every in-flight request's abort controller, not just the newest.
41
+ *
42
+ * `abortController` is a single field that each request overwrites, and each
43
+ * request's `finally` used to clear it unconditionally — so a request that
44
+ * finished just after a newer one started would null the newer one's handle,
45
+ * and a subsequent stop had nothing left to abort. The stream carried on and
46
+ * the transcript went on typing itself after the reader had asked it not to.
47
+ */
48
+ private inFlight;
39
49
  private currentRequestId;
40
50
  private pendingToolCalls;
41
51
  private collectedToolResults;
@@ -14,6 +14,16 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
14
14
  protocolTransport = 'sse';
15
15
  vercelConfig;
16
16
  abortController = null;
17
+ /**
18
+ * Every in-flight request's abort controller, not just the newest.
19
+ *
20
+ * `abortController` is a single field that each request overwrites, and each
21
+ * request's `finally` used to clear it unconditionally — so a request that
22
+ * finished just after a newer one started would null the newer one's handle,
23
+ * and a subsequent stop had nothing left to abort. The stream carried on and
24
+ * the transcript went on typing itself after the reader had asked it not to.
25
+ */
26
+ inFlight = new Set();
17
27
  currentRequestId = null;
18
28
  // Frontend tool continuation state (modelled after AGUIAdapter)
19
29
  pendingToolCalls = new Map();
@@ -113,10 +123,14 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
113
123
  * Send a message using Vercel AI Data Stream Protocol
114
124
  */
115
125
  async sendMessage(message, options) {
116
- if (this.abortController) {
117
- this.abortController.abort();
118
- }
119
- this.abortController = new AbortController();
126
+ // A new send supersedes what came before it — all of it. Aborting only
127
+ // the field left any stream it had already lost track of still running.
128
+ this.stopGeneration();
129
+ // Held in a local too: by the time the `finally` runs, a later request may
130
+ // own the field, and this one must only retire its own controller.
131
+ const controller = new AbortController();
132
+ this.abortController = controller;
133
+ this.inFlight.add(controller);
120
134
  // Generate request ID for tracking
121
135
  const requestId = options?.threadId || generateMessageId();
122
136
  this.currentRequestId = requestId;
@@ -238,7 +252,7 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
238
252
  method: 'POST',
239
253
  headers,
240
254
  body: JSON.stringify(requestBody),
241
- signal: this.abortController.signal,
255
+ signal: controller.signal,
242
256
  mode: this.vercelConfig.fetchOptions?.mode,
243
257
  credentials: this.vercelConfig.fetchOptions?.credentials,
244
258
  });
@@ -258,7 +272,10 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
258
272
  }
259
273
  }
260
274
  finally {
261
- this.abortController = null;
275
+ this.inFlight.delete(controller);
276
+ if (this.abortController === controller) {
277
+ this.abortController = null;
278
+ }
262
279
  }
263
280
  }
264
281
  /**
@@ -797,7 +814,10 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
797
814
  * Stop generation
798
815
  */
799
816
  stopGeneration() {
800
- this.abortController?.abort();
817
+ for (const controller of this.inFlight) {
818
+ controller.abort();
819
+ }
820
+ this.inFlight.clear();
801
821
  this.abortController = null;
802
822
  }
803
823
  }
@@ -7,4 +7,5 @@ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
7
7
  export { AGUIAdapter, type AGUIAdapterConfig } from './AGUIAdapter';
8
8
  export { A2AAdapter, type A2AAdapterConfig } from './A2AAdapter';
9
9
  export { VercelAIAdapter, type VercelAIAdapterConfig } from './VercelAIAdapter';
10
+ export { BrowserAgentAdapter, type BrowserAgentAdapterConfig, } from './BrowserAgentAdapter';
10
11
  export { ACPAdapter, type ACPAdapterConfig, type ACPSession, type ACPAgent, type ACPPendingPermission, } from './ACPAdapter';
@@ -11,4 +11,5 @@ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
11
11
  export { AGUIAdapter } from './AGUIAdapter';
12
12
  export { A2AAdapter } from './A2AAdapter';
13
13
  export { VercelAIAdapter } from './VercelAIAdapter';
14
+ export { BrowserAgentAdapter, } from './BrowserAgentAdapter';
14
15
  export { ACPAdapter, } from './ACPAdapter';
@@ -1,5 +1,5 @@
1
1
  import type { IRuntimeOptions } from './apis';
2
- import type { ICodeSandboxSnapshot, IDatalayerEnvironment, IRuntimePod } from '../models';
2
+ import type { ICodeSandboxSnapshot, IDatalayerEnvironment, IRuntimeRecord } from '../models';
3
3
  /**
4
4
  * Get available Environments.
5
5
  */
@@ -7,11 +7,11 @@ export declare function getEnvironments(): Promise<IDatalayerEnvironment[]>;
7
7
  /**
8
8
  * Create a Runtime.
9
9
  */
10
- export declare function createRuntime(options: IRuntimeOptions): Promise<IRuntimePod>;
10
+ export declare function createRuntime(options: IRuntimeOptions): Promise<IRuntimeRecord>;
11
11
  /**
12
12
  * Get the Runtimes.
13
13
  */
14
- export declare function getRuntimes(): Promise<IRuntimePod[]>;
14
+ export declare function getRuntimes(): Promise<IRuntimeRecord[]>;
15
15
  /**
16
16
  * Delete a Runtime
17
17
  */
@@ -9,6 +9,7 @@ import { URLExt } from '@jupyterlab/coreutils';
9
9
  import { PromiseDelegate } from '@lumino/coreutils';
10
10
  import { Upload } from 'tus-js-client';
11
11
  import { requestDatalayerAPI } from '@datalayer/core/lib/api';
12
+ import { runtimeUrl, runtimesUrl, sandboxSnapshotUrl, sandboxSnapshotsUrl, } from './lifecycle';
12
13
  import { asCodeSandboxSnapshot } from '../models';
13
14
  import { iamStore, runtimesStore } from '../state/substates';
14
15
  /**
@@ -48,10 +49,22 @@ export async function createRuntime(options) {
48
49
  throw new Error(`Invalid runtime creditsLimit for environment ${options.environmentName}. ` +
49
50
  'A number of zero or more is required.');
50
51
  }
52
+ /*
53
+ * `environment: {name, version}` — and the version is ADDITIVE.
54
+ *
55
+ * Without one this is, byte for byte, the request every runtime has been
56
+ * launched with since before user environments existed, and the platform
57
+ * resolves the promoted version itself (PLAN_ENV.md, §7.6, D-2, E1-11).
58
+ */
59
+ const environment = {
60
+ name: options.environmentName,
61
+ };
62
+ if (options.environmentVersion !== undefined &&
63
+ options.environmentVersion !== '') {
64
+ environment['version'] = options.environmentVersion;
65
+ }
51
66
  const body = {
52
- environment: {
53
- name: options.environmentName,
54
- },
67
+ environment,
55
68
  type: options.type ?? 'notebook',
56
69
  given_name: options.givenName,
57
70
  credits_limit: options.creditsLimit,
@@ -63,7 +76,7 @@ export async function createRuntime(options) {
63
76
  body['from'] = options.snapshot;
64
77
  }
65
78
  const data = await requestDatalayerAPI({
66
- url: URLExt.join(runtimesStore.getState().runtimesUrl, `api/runtimes/v1/runtimes`),
79
+ url: runtimesUrl(runtimesStore.getState().runtimesUrl),
67
80
  method: 'POST',
68
81
  body,
69
82
  token: token,
@@ -86,7 +99,7 @@ export async function createRuntime(options) {
86
99
  */
87
100
  export async function getRuntimes() {
88
101
  const data = await requestDatalayerAPI({
89
- url: URLExt.join(runtimesStore.getState().runtimesUrl, 'api/runtimes/v1/runtimes'),
102
+ url: runtimesUrl(runtimesStore.getState().runtimesUrl),
90
103
  token: iamStore.getState().token,
91
104
  });
92
105
  if (!data.success) {
@@ -102,7 +115,7 @@ export async function getRuntimes() {
102
115
  export async function deleteRuntime(options) {
103
116
  const externalToken = iamStore.getState().externalToken;
104
117
  await requestDatalayerAPI({
105
- url: URLExt.join(runtimesStore.getState().runtimesUrl, `api/runtimes/v1/runtimes/${options.id}`) +
118
+ url: runtimeUrl(runtimesStore.getState().runtimesUrl, options.id) +
106
119
  URLExt.objectToQueryString(options.reason ? { reason: options.reason } : {}),
107
120
  method: 'DELETE',
108
121
  token: iamStore.getState().token,
@@ -119,10 +132,10 @@ export async function deleteRuntime(options) {
119
132
  */
120
133
  export async function snapshotRuntime(options) {
121
134
  const data = await requestDatalayerAPI({
122
- url: URLExt.join(runtimesStore.getState().runtimesUrl, 'api/runtimes/v1/sandbox-snapshots'),
135
+ url: sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl),
123
136
  method: 'POST',
124
137
  body: {
125
- pod_name: options.id,
138
+ runtime_name: options.id,
126
139
  name: options.name,
127
140
  description: options.description,
128
141
  stop: options.stop,
@@ -144,7 +157,7 @@ export async function snapshotRuntime(options) {
144
157
  */
145
158
  export async function getSandboxSnapshots() {
146
159
  const data = await requestDatalayerAPI({
147
- url: URLExt.join(runtimesStore.getState().runtimesUrl, 'api/runtimes/v1/sandbox-snapshots'),
160
+ url: sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl),
148
161
  token: iamStore.getState().token,
149
162
  });
150
163
  if (!data.success) {
@@ -158,7 +171,7 @@ export async function getSandboxSnapshots() {
158
171
  */
159
172
  export async function loadSandboxSnapshot(options) {
160
173
  const data = await requestDatalayerAPI({
161
- url: URLExt.join(runtimesStore.getState().runtimesUrl, 'api/runtimes/v1/runtimes', options.id),
174
+ url: runtimeUrl(runtimesStore.getState().runtimesUrl, options.id),
162
175
  method: 'PUT',
163
176
  body: {
164
177
  from: options.from,
@@ -176,7 +189,7 @@ export async function loadSandboxSnapshot(options) {
176
189
  * @returns The download URL
177
190
  */
178
191
  export function createSandboxSnapshotDownloadURL(id) {
179
- return (URLExt.join(runtimesStore.getState().runtimesUrl, `api/runtimes/v1/sandbox-snapshots/${id}`) +
192
+ return (sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id) +
180
193
  URLExt.objectToQueryString({
181
194
  download: '1',
182
195
  token: iamStore.getState().token ?? '',
@@ -201,7 +214,7 @@ export function exportCodeSandboxSnapshot(id) {
201
214
  */
202
215
  export async function deleteCodeSandboxSnapshot(id) {
203
216
  await requestDatalayerAPI({
204
- url: URLExt.join(runtimesStore.getState().runtimesUrl, `api/runtimes/v1/sandbox-snapshots/${id}`),
217
+ url: sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id),
205
218
  method: 'DELETE',
206
219
  token: iamStore.getState().token,
207
220
  });
@@ -212,7 +225,7 @@ export async function deleteCodeSandboxSnapshot(id) {
212
225
  export async function updateCodeSandboxSnapshot(id, metadata) {
213
226
  if (metadata.name || metadata.description) {
214
227
  await requestDatalayerAPI({
215
- url: URLExt.join(runtimesStore.getState().runtimesUrl, `api/runtimes/v1/sandbox-snapshots/${id}`),
228
+ url: sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id),
216
229
  method: 'PATCH',
217
230
  body: { ...metadata },
218
231
  token: iamStore.getState().token,
@@ -232,7 +245,7 @@ export async function uploadCodeSandboxSnapshot(options) {
232
245
  // Create a new tus upload.
233
246
  const upload = new Upload(options.file, {
234
247
  // Endpoint is the upload creation URL from your tus server.
235
- endpoint: `${runtimesStore.getState().runtimesUrl}/api/runtimes/v1/sandbox-snapshots/upload`,
248
+ endpoint: `${sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl)}/upload`,
236
249
  headers: { Authorization: `Bearer ${iamStore.getState().token}` },
237
250
  // Retry delays will enable tus-js-client to automatically retry on errors.
238
251
  // retryDelays: [0, 3000, 5000, 10000, 20000],
@@ -20,8 +20,17 @@ export interface IDatalayerSessionContext extends ISessionContext {
20
20
  export interface IRuntimeOptions {
21
21
  /**
22
22
  * Environment name
23
+ *
24
+ * A platform environment by its name, or an environment somebody built,
25
+ * named `<account-handle>/<name>` or by its uid (PLAN_ENV.md, D-2).
23
26
  */
24
27
  environmentName: string;
28
+ /**
29
+ * Which version of a user environment to launch: its number, or a version
30
+ * uid. Absent means the version its owner promoted, which is what a platform
31
+ * environment always runs (E1-19).
32
+ */
33
+ environmentVersion?: number | string;
25
34
  /**
26
35
  * Credits limit to be consumed by the kernel
27
36
  */
@@ -169,7 +178,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
169
178
  /**
170
179
  * Snapshot a runtime
171
180
  *
172
- * The runtime may be given by its `id` or `podName`.
181
+ * The runtime may be given by its `id` or `runtimeName`.
173
182
  * A custom description for the snapshot can be provided.
174
183
  *
175
184
  * @returns The snapshot description
@@ -182,7 +191,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
182
191
  /**
183
192
  * The kernel pod name to snapshot
184
193
  */
185
- podName?: string;
194
+ runtimeName?: string;
186
195
  /**
187
196
  * The snapshot name
188
197
  */
@@ -199,7 +208,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
199
208
  /**
200
209
  * Load a snapshot within a runtim
201
210
  *
202
- * The runtime may be given by its `id` or `podName`.
211
+ * The runtime may be given by its `id` or `runtimeName`.
203
212
  */
204
213
  loadSandboxSnapshot(options: {
205
214
  /**
@@ -209,7 +218,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
209
218
  /**
210
219
  * The kernel pod name
211
220
  */
212
- podName?: string;
221
+ runtimeName?: string;
213
222
  /**
214
223
  * The snapshot UID
215
224
  */
@@ -0,0 +1,54 @@
1
+ /**
2
+ * An agent loop that turns in the page.
3
+ *
4
+ * The server-side harness reads a spec and builds a pydantic-ai agent from it.
5
+ * This reads the same spec and builds a Vercel AI SDK agent from it — same
6
+ * prompt, same model name, same tools, different thing turning the loop.
7
+ *
8
+ * What a browser agent does *not* get comes from the spec too, and it is not a
9
+ * limitation this module has to enforce: a spec written for this harness
10
+ * declares no MCP servers, no sandbox and no codemode, because none of them
11
+ * exist without a server. All that is left is the frontend tools, and those
12
+ * were always the ones that ran here anyway.
13
+ *
14
+ * @module runtimes/browser/agent
15
+ */
16
+ import { ToolLoopAgent, type LanguageModel } from 'ai';
17
+ import type { Agentspec } from '../../types/agentspecs';
18
+ import type { FrontendToolDefinition } from '../../types/tools';
19
+ import { type FrontendToolsToVercelAIOptions } from './frontendTools';
20
+ import { type BrowserModelOptions } from './model';
21
+ /**
22
+ * How many model turns one request may take.
23
+ *
24
+ * A compaction reads a notebook cell by cell and then edits it, so the loop
25
+ * needs room — but it is running against a person's own page with nothing
26
+ * between it and a bill, so it needs a ceiling too.
27
+ */
28
+ export declare const DEFAULT_BROWSER_MAX_STEPS = 24;
29
+ export type CreateBrowserAgentOptions = FrontendToolsToVercelAIOptions & {
30
+ /** The spec to run. Its prompt, model and identity are used as written. */
31
+ spec: Pick<Agentspec, 'id' | 'model' | 'systemPrompt'>;
32
+ /**
33
+ * The tools the agent can call, in this page.
34
+ *
35
+ * The same array a host passes to `<Chat frontendTools={...}>` — from
36
+ * `useNotebookTools`, `useLexicalTools`, or hand-written.
37
+ */
38
+ frontendTools: FrontendToolDefinition[];
39
+ /** Where to reach the model, unless one is supplied outright. */
40
+ inference?: Omit<BrowserModelOptions, 'model'>;
41
+ /** A ready-made model, for a host that resolves models its own way. */
42
+ model?: LanguageModel;
43
+ /** Turn ceiling for one request. @see DEFAULT_BROWSER_MAX_STEPS */
44
+ maxSteps?: number;
45
+ };
46
+ /**
47
+ * Build the agent a browser variant runs.
48
+ *
49
+ * The result is an SDK agent, so it drops straight into `DirectChatTransport`
50
+ * and from there into the same `useChat` the rest of the chat UI is built on
51
+ * — which is why nothing downstream of the transport has to know which
52
+ * harness produced its messages.
53
+ */
54
+ export declare function createBrowserAgent(options: CreateBrowserAgentOptions): ToolLoopAgent;