@datalayer/agent-runtimes 1.0.29 → 1.3.11

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 (779) 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 +406 -4
  23. package/lib/api/runtimes/environments.js +641 -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 +20 -2
  30. package/lib/chat/ChatFloating.js +196 -118
  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/ButtonGlow.d.ts +9 -0
  44. package/lib/chat/display/ButtonGlow.js +60 -0
  45. package/lib/chat/display/EmptyState.d.ts +15 -1
  46. package/lib/chat/display/EmptyState.js +81 -12
  47. package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
  48. package/lib/chat/display/PoweredByTag.d.ts +1 -1
  49. package/lib/chat/display/groupSuggestions.d.ts +21 -0
  50. package/lib/chat/display/groupSuggestions.js +18 -0
  51. package/lib/chat/document/EphemeralDocument.d.ts +70 -6
  52. package/lib/chat/document/EphemeralDocument.js +154 -52
  53. package/lib/chat/header/ChatHeader.d.ts +1 -1
  54. package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
  55. package/lib/chat/header/ChatHeaderBase.js +21 -102
  56. package/lib/chat/header/ChatViewModeToggle.d.ts +29 -0
  57. package/lib/chat/header/ChatViewModeToggle.js +55 -0
  58. package/lib/chat/index.d.ts +5 -1
  59. package/lib/chat/index.js +9 -1
  60. package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
  61. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
  62. package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
  63. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
  64. package/lib/chat/messages/ChatMessageList.d.ts +22 -1
  65. package/lib/chat/messages/ChatMessageList.js +370 -166
  66. package/lib/chat/messages/ChatMessages.d.ts +1 -1
  67. package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
  68. package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
  69. package/lib/chat/messages/TurnFooter.d.ts +42 -0
  70. package/lib/chat/messages/TurnFooter.js +75 -0
  71. package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
  72. package/lib/chat/messages/assistantMarkdown.js +56 -0
  73. package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
  74. package/lib/chat/notebook/EphemeralNotebook.js +194 -61
  75. package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
  76. package/lib/chat/parts/MessagePart.d.ts +1 -1
  77. package/lib/chat/parts/ReasoningPart.d.ts +8 -1
  78. package/lib/chat/parts/TextPart.d.ts +1 -1
  79. package/lib/chat/parts/ToolPart.d.ts +8 -1
  80. package/lib/chat/prompt/FloatingCard.d.ts +26 -0
  81. package/lib/chat/prompt/FloatingCard.js +80 -0
  82. package/lib/chat/prompt/InputPrompt.d.ts +206 -53
  83. package/lib/chat/prompt/InputPrompt.js +161 -80
  84. package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
  85. package/lib/chat/prompt/InputPromptBase.js +225 -0
  86. package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
  87. package/lib/chat/prompt/InputPromptLexical.js +227 -30
  88. package/lib/chat/prompt/InputPromptText.d.ts +10 -2
  89. package/lib/chat/prompt/InputPromptText.js +35 -3
  90. package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
  91. package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
  92. package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
  93. package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
  94. package/lib/chat/prompt/footer/index.d.ts +7 -0
  95. package/lib/chat/prompt/footer/index.js +11 -0
  96. package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
  97. package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
  98. package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
  99. package/lib/chat/prompt/header/InPromptHeader.js +14 -0
  100. package/lib/chat/prompt/header/index.d.ts +7 -0
  101. package/lib/chat/prompt/header/index.js +11 -0
  102. package/lib/chat/prompt/index.d.ts +8 -4
  103. package/lib/chat/prompt/index.js +15 -3
  104. package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
  105. package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
  106. package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
  107. package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
  108. package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
  109. package/lib/chat/prompt/menus/ModelSelector.js +27 -0
  110. package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
  111. package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
  112. package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
  113. package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
  114. package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
  115. package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
  116. package/lib/chat/prompt/menus/index.d.ts +15 -0
  117. package/lib/chat/prompt/menus/index.js +19 -0
  118. package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
  119. package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
  120. package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
  121. package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
  122. package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
  123. package/lib/chat/prompt/plugins/MentionChip.js +24 -0
  124. package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
  125. package/lib/chat/prompt/plugins/MentionNode.js +77 -0
  126. package/lib/chat/prompt/promptHistory.d.ts +52 -0
  127. package/lib/chat/prompt/promptHistory.js +123 -0
  128. package/lib/chat/prompt/stack.d.ts +81 -0
  129. package/lib/chat/prompt/stack.js +41 -0
  130. package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
  131. package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
  132. package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
  133. package/lib/chat/tools/A2AAgentDialog.js +265 -0
  134. package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
  135. package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
  136. package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
  137. package/lib/chat/tools/index.d.ts +1 -0
  138. package/lib/chat/tools/index.js +1 -0
  139. package/lib/chat/usage/ContextPie.d.ts +17 -0
  140. package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
  141. package/lib/chat/useViewportDrag.d.ts +11 -0
  142. package/lib/chat/useViewportDrag.js +61 -0
  143. package/lib/chat/viewModes.d.ts +51 -0
  144. package/lib/chat/viewModes.js +57 -0
  145. package/lib/client/AgentRuntimesClient.d.ts +10 -9
  146. package/lib/client/AgentRuntimesClient.js +1 -1
  147. package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
  148. package/lib/client/AgentsMixin.d.ts +12 -12
  149. package/lib/client/AgentsMixin.js +31 -31
  150. package/lib/client/IAgentRuntimesClient.d.ts +10 -10
  151. package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
  152. package/lib/client/SdkAgentRuntimesClient.js +10 -10
  153. package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
  154. package/lib/client/mixins/RuntimesMixin.js +54 -21
  155. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
  156. package/lib/components/agents/AgentSummary.d.ts +13 -0
  157. package/lib/components/agents/AgentSummary.js +21 -4
  158. package/lib/components/cards/NotificationEventCard.d.ts +1 -1
  159. package/lib/components/cards/OutputCard.d.ts +1 -1
  160. package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
  161. package/lib/components/cards/ToolApprovalCard.js +1 -0
  162. package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
  163. package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
  164. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
  165. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
  166. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
  167. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
  168. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +9 -0
  169. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +95 -23
  170. package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
  171. package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
  172. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  173. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  174. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  175. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  176. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  177. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
  178. package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
  179. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  180. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  181. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  182. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  183. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +97 -0
  184. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +184 -0
  185. package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
  186. package/lib/components/code-sandboxes/index.d.ts +1 -0
  187. package/lib/components/code-sandboxes/index.js +1 -0
  188. package/lib/components/context/SpaceSelect.d.ts +1 -1
  189. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  190. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  191. package/lib/components/icons/ArtifactIcon.js +2 -1
  192. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  193. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  194. package/lib/components/progress/CreditsIndicator.js +0 -4
  195. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  196. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  197. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  198. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  199. package/lib/components/snippets/SnippetDialog.js +0 -4
  200. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  201. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  202. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  203. package/lib/context/ContextDistribution.d.ts +1 -1
  204. package/lib/context/ContextInspector.d.ts +2 -1
  205. package/lib/context/ContextPanel.d.ts +1 -1
  206. package/lib/context/ContextUsage.d.ts +1 -1
  207. package/lib/context/CostTracker.d.ts +1 -1
  208. package/lib/context/CostUsageChart.d.ts +1 -1
  209. package/lib/context/CostUsageChart.js +4 -4
  210. package/lib/context/MessageHistory.d.ts +3 -2
  211. package/lib/context/TokenUsageChart.d.ts +1 -1
  212. package/lib/context/TokenUsageChart.js +4 -4
  213. package/lib/examples/A2UiAgentExample.js +15 -6
  214. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  215. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  216. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  217. package/lib/examples/A2UiContactCardExample.js +23 -170
  218. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  219. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  220. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  221. package/lib/examples/A2UiRestaurantExample.js +24 -179
  222. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  223. package/lib/examples/A2UiViewerExample.js +24 -378
  224. package/lib/examples/AgUiAgenticExample.js +2 -4
  225. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  226. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  227. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  228. package/lib/examples/AgUiSharedStateExample.js +2 -4
  229. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  230. package/lib/examples/AgentA2AExample.d.ts +17 -0
  231. package/lib/examples/AgentA2AExample.js +56 -0
  232. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  233. package/lib/examples/AgentCheckpointsExample.js +72 -54
  234. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  235. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  236. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  237. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  238. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  239. package/lib/examples/AgentCodemodeExample.js +60 -125
  240. package/lib/examples/AgentCompactionExample.js +19 -135
  241. package/lib/examples/AgentEvalsExample.js +34 -66
  242. package/lib/examples/AgentGuardrailsExample.js +64 -112
  243. package/lib/examples/AgentHooksExample.d.ts +11 -0
  244. package/lib/examples/AgentHooksExample.js +30 -67
  245. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  246. package/lib/examples/AgentLoopExample.d.ts +4 -2
  247. package/lib/examples/AgentLoopExample.js +45 -93
  248. package/lib/examples/AgentMCPExample.js +30 -79
  249. package/lib/examples/AgentMemoryExample.js +21 -64
  250. package/lib/examples/AgentMonitoringExample.js +33 -94
  251. package/lib/examples/AgentNotificationsExample.js +56 -95
  252. package/lib/examples/AgentOtelExample.js +35 -88
  253. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  254. package/lib/examples/AgentOutputsExample.js +16 -137
  255. package/lib/examples/AgentParametersExample.js +7 -17
  256. package/lib/examples/AgentSkillsExample.js +40 -154
  257. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  258. package/lib/examples/AgentSubagentsExample.js +80 -191
  259. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  260. package/lib/examples/AgentTriggersExample.js +43 -59
  261. package/lib/examples/AgentspecsExample.js +4 -4
  262. package/lib/examples/CellExample.d.ts +1 -1
  263. package/lib/examples/ChatExample.d.ts +12 -5
  264. package/lib/examples/ChatExample.js +38 -13
  265. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  266. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  267. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  268. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  269. package/lib/examples/DecksAgent.d.ts +21 -0
  270. package/lib/examples/DecksAgent.js +23 -0
  271. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  272. package/lib/examples/DocumentPageAgent.js +15 -0
  273. package/lib/examples/Lexical2Example.d.ts +2 -2
  274. package/lib/examples/Lexical2Example.js +17 -38
  275. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  276. package/lib/examples/LexicalAgentExample.js +29 -102
  277. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  278. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  279. package/lib/examples/LoopShellExample.d.ts +38 -0
  280. package/lib/examples/LoopShellExample.js +68 -0
  281. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  282. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  283. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  284. package/lib/examples/LoopWorkspaceExample.js +151 -0
  285. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  286. package/lib/examples/NotebookAgentExample.js +36 -86
  287. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  288. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  289. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  290. package/lib/examples/NotebookCollaborationExample.js +108 -20
  291. package/lib/examples/NotebookExample.d.ts +1 -1
  292. package/lib/examples/NotebookExample.js +20 -10
  293. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  294. package/lib/examples/NotebookPageAgent.js +17 -0
  295. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  296. package/lib/examples/components/ExampleWrapper.js +36 -28
  297. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  298. package/lib/examples/components/LexicalEditor.js +4 -24
  299. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  300. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  301. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  302. package/lib/examples/example-selector.js +26 -6
  303. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  304. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  305. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  306. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  307. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  308. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  309. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  310. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  311. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  312. package/lib/examples/index.d.ts +4 -0
  313. package/lib/examples/index.js +6 -0
  314. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  315. package/lib/examples/lexical/editorConfig.js +26 -48
  316. package/lib/examples/lexical/lexical-theme.css +65 -47
  317. package/lib/examples/main.js +450 -322
  318. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  319. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  320. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  321. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  322. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  323. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  324. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  325. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  326. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  327. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  328. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  329. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  330. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  331. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  332. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  333. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  334. package/lib/examples/utils/exampleSurfaces.js +38 -0
  335. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  336. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  337. package/lib/examples/utils/localUrl.d.ts +2 -0
  338. package/lib/examples/utils/localUrl.js +49 -0
  339. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  340. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  341. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  342. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  343. package/lib/examples/utils/themedProvider.d.ts +7 -0
  344. package/lib/examples/utils/themedProvider.js +57 -4
  345. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  346. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  347. package/lib/examples/utils/waitForAgent.js +24 -0
  348. package/lib/examples2/CellExample.d.ts +1 -1
  349. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  350. package/lib/examples2/NotebookExample.d.ts +1 -1
  351. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  352. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  353. package/lib/examples2/main.js +24 -4
  354. package/lib/extensions/A2UIExtension.d.ts +1 -1
  355. package/lib/hooks/index.d.ts +8 -5
  356. package/lib/hooks/index.js +20 -5
  357. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  358. package/lib/hooks/useAgentRuntimes.js +214 -90
  359. package/lib/hooks/useAgentsCatalog.js +32 -4
  360. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  361. package/lib/hooks/useBrowserAgent.js +75 -0
  362. package/lib/hooks/useBrowserInference.d.ts +27 -0
  363. package/lib/hooks/useBrowserInference.js +67 -0
  364. package/lib/hooks/useCheckpoints.d.ts +8 -17
  365. package/lib/hooks/useCheckpoints.js +25 -59
  366. package/lib/hooks/useConfig.d.ts +1 -1
  367. package/lib/hooks/useConfig.js +5 -1
  368. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  369. package/lib/hooks/useContextSnapshot.js +14 -10
  370. package/lib/hooks/useNotifications.d.ts +11 -11
  371. package/lib/hooks/useNotifications.js +1 -1
  372. package/lib/hooks/useProjects.d.ts +7 -19
  373. package/lib/hooks/useProjects.js +5 -5
  374. package/lib/hooks/useSkills.d.ts +0 -1
  375. package/lib/hooks/useSkills.js +6 -2
  376. package/lib/hooks/useToolApprovals.d.ts +8 -8
  377. package/lib/hooks/useToolApprovals.js +3 -3
  378. package/lib/identity/AgentIdentity.d.ts +9 -2
  379. package/lib/index.d.ts +1 -0
  380. package/lib/index.js +4 -0
  381. package/lib/jupyter/index.d.ts +2 -1
  382. package/lib/jupyter/index.js +2 -1
  383. package/lib/jupyter/serverExecution.d.ts +78 -0
  384. package/lib/jupyter/serverExecution.js +258 -0
  385. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  386. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  387. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  388. package/lib/lexical/ChatInlinePlugin.js +0 -36
  389. package/lib/loop/core/focusRequests.d.ts +10 -0
  390. package/lib/loop/core/focusRequests.js +46 -0
  391. package/lib/loop/core/index.d.ts +903 -0
  392. package/lib/loop/core/index.js +264 -0
  393. package/lib/loop/core/promptStore.d.ts +44 -0
  394. package/lib/loop/core/promptStore.js +63 -0
  395. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  396. package/lib/loop/core/surfaceRequests.js +29 -0
  397. package/lib/loop/core/toolbar.d.ts +28 -0
  398. package/lib/loop/core/toolbar.js +59 -0
  399. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  400. package/lib/loop/embed/LoopEmbed.js +124 -0
  401. package/lib/loop/extensions.d.ts +10 -0
  402. package/lib/loop/extensions.js +49 -0
  403. package/lib/loop/index.d.ts +68 -0
  404. package/lib/loop/index.js +87 -0
  405. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  406. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  407. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  408. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  409. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  410. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  411. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  412. package/lib/loop/plugins/a2ui/index.js +50 -0
  413. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  414. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  415. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  416. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  417. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  418. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  419. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  420. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  421. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  422. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  423. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  424. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  425. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  426. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  427. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  428. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  429. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  430. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  431. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  432. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  433. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  434. package/lib/loop/plugins/agent-evals/index.js +25 -0
  435. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  436. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  437. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  438. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  439. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  440. package/lib/loop/plugins/agent-inference/index.js +29 -0
  441. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  442. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  443. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  444. package/lib/loop/plugins/agent-memory/index.js +25 -0
  445. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  446. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  447. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  448. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  449. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  450. package/lib/loop/plugins/agent-otel/index.js +25 -0
  451. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  452. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  453. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  454. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  455. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  456. package/lib/loop/plugins/agent-skills/index.js +25 -0
  457. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  458. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  459. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  460. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  461. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  462. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  463. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  464. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  465. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  466. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  467. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  468. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  469. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  470. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  471. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  472. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  473. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  474. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  475. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  476. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  477. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  478. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  479. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  480. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  481. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  482. package/lib/loop/plugins/agents/browserService.js +233 -0
  483. package/lib/loop/plugins/agents/index.d.ts +13 -0
  484. package/lib/loop/plugins/agents/index.js +17 -0
  485. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  486. package/lib/loop/plugins/agents/plugin.js +201 -0
  487. package/lib/loop/plugins/agents/service.d.ts +99 -0
  488. package/lib/loop/plugins/agents/service.js +167 -0
  489. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  490. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  491. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  492. package/lib/loop/plugins/agents/switchable.js +405 -0
  493. package/lib/loop/plugins/agents/team.d.ts +87 -0
  494. package/lib/loop/plugins/agents/team.js +143 -0
  495. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  496. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  497. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  498. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  499. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  500. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  501. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  502. package/lib/loop/plugins/agentspecs/index.js +63 -0
  503. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  504. package/lib/loop/plugins/chat/ChatView.js +1679 -0
  505. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  506. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  507. package/lib/loop/plugins/chat/index.d.ts +111 -0
  508. package/lib/loop/plugins/chat/index.js +143 -0
  509. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  510. package/lib/loop/plugins/chat/turnState.js +90 -0
  511. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  512. package/lib/loop/plugins/chat-extras/index.js +51 -0
  513. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  514. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  515. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  516. package/lib/loop/plugins/chat-header/index.js +21 -0
  517. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  518. package/lib/loop/plugins/chat-view/index.js +29 -0
  519. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  520. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  521. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  522. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  523. package/lib/loop/plugins/commands/index.d.ts +20 -0
  524. package/lib/loop/plugins/commands/index.js +148 -0
  525. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  526. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  527. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  528. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  529. package/lib/loop/plugins/decks/index.d.ts +19 -0
  530. package/lib/loop/plugins/decks/index.js +133 -0
  531. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  532. package/lib/loop/plugins/decks/surface.js +11 -0
  533. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  534. package/lib/loop/plugins/document/DocumentView.js +68 -0
  535. package/lib/loop/plugins/document/index.d.ts +3 -0
  536. package/lib/loop/plugins/document/index.js +86 -0
  537. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  538. package/lib/loop/plugins/document/openingDocument.js +122 -0
  539. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  540. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  541. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  542. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  543. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  544. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  545. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  546. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  547. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  548. package/lib/loop/plugins/document-view/index.js +28 -0
  549. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  550. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  551. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  552. package/lib/loop/plugins/graph/GraphView.js +6 -0
  553. package/lib/loop/plugins/graph/index.d.ts +5 -0
  554. package/lib/loop/plugins/graph/index.js +80 -0
  555. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  556. package/lib/loop/plugins/graph/viewType.js +14 -0
  557. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  558. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  559. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  560. package/lib/loop/plugins/input-prompt/index.js +26 -0
  561. package/lib/loop/plugins/models/index.d.ts +3 -0
  562. package/lib/loop/plugins/models/index.js +49 -0
  563. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  564. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  565. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  566. package/lib/loop/plugins/notebook/index.js +91 -0
  567. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  568. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  569. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  570. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  571. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  572. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  573. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  574. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  575. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  576. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  577. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  578. package/lib/loop/plugins/notebook-view/index.js +30 -0
  579. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  580. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  581. package/lib/loop/plugins/page-layout/index.d.ts +71 -0
  582. package/lib/loop/plugins/page-layout/index.js +160 -0
  583. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  584. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  585. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  586. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  587. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  588. package/lib/loop/plugins/prompt/index.js +73 -0
  589. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  590. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  591. package/lib/loop/plugins/shell/index.d.ts +47 -0
  592. package/lib/loop/plugins/shell/index.js +142 -0
  593. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  594. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  595. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  596. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  597. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  598. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  599. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  600. package/lib/loop/plugins/view-switch/index.js +68 -0
  601. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  602. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  603. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  604. package/lib/loop/plugins/window-frame/index.js +79 -0
  605. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  606. package/lib/loop/plugins/window-frame/slots.js +30 -0
  607. package/lib/loop/presets.d.ts +181 -0
  608. package/lib/loop/presets.js +141 -0
  609. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  610. package/lib/loop/shell/LoopWorkspace.js +231 -0
  611. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  612. package/lib/loop/shell/PluginToggles.js +41 -0
  613. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  614. package/lib/loop/shell/ViewSwitcher.js +43 -0
  615. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  616. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  617. package/lib/loop/shell/index.d.ts +10 -0
  618. package/lib/loop/shell/index.js +14 -0
  619. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  620. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  621. package/lib/loop-example-main.d.ts +1 -0
  622. package/lib/loop-example-main.js +42 -0
  623. package/lib/loop-main.d.ts +1 -0
  624. package/lib/loop-main.js +138 -0
  625. package/lib/mcp/McpServerManager.d.ts +1 -1
  626. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  627. package/lib/models/CodeSandboxVariant.d.ts +13 -5
  628. package/lib/models/CodeSandboxVariant.js +17 -5
  629. package/lib/models/Content.d.ts +26 -0
  630. package/lib/models/Deck.d.ts +14 -0
  631. package/lib/models/Environment.d.ts +678 -5
  632. package/lib/models/Environment.js +12 -1
  633. package/lib/models/EnvironmentDTO.d.ts +24 -6
  634. package/lib/models/EnvironmentDTO.js +13 -2
  635. package/lib/models/Exercise.d.ts +0 -2
  636. package/lib/models/ItemType.d.ts +1 -1
  637. package/lib/models/Library.d.ts +0 -2
  638. package/lib/models/Notebook.d.ts +0 -2
  639. package/lib/models/ProjectDTO.d.ts +2 -2
  640. package/lib/models/ProjectDTO.js +4 -4
  641. package/lib/models/Runtime.d.ts +17 -11
  642. package/lib/models/RuntimeDTO.d.ts +16 -7
  643. package/lib/models/RuntimeDTO.js +9 -9
  644. package/lib/models/Space.d.ts +10 -0
  645. package/lib/models/Space.js +1 -1
  646. package/lib/models/SpaceDTO.d.ts +1 -1
  647. package/lib/models/SpaceItem.d.ts +2 -2
  648. package/lib/models/environments.generated.d.ts +141 -0
  649. package/lib/models/environments.generated.js +13 -0
  650. package/lib/models/index.d.ts +1 -1
  651. package/lib/models/index.js +1 -1
  652. package/lib/protocols/A2AAdapter.d.ts +39 -6
  653. package/lib/protocols/A2AAdapter.js +180 -11
  654. package/lib/protocols/ACPAdapter.js +40 -37
  655. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  656. package/lib/protocols/AGUIAdapter.js +34 -9
  657. package/lib/protocols/BrowserAgentAdapter.d.ts +125 -0
  658. package/lib/protocols/BrowserAgentAdapter.js +317 -0
  659. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  660. package/lib/protocols/VercelAIAdapter.js +27 -7
  661. package/lib/protocols/index.d.ts +1 -0
  662. package/lib/protocols/index.js +1 -0
  663. package/lib/runtimes/actions.d.ts +8 -3
  664. package/lib/runtimes/actions.js +46 -14
  665. package/lib/runtimes/apis.d.ts +13 -4
  666. package/lib/runtimes/browser/agent.d.ts +54 -0
  667. package/lib/runtimes/browser/agent.js +63 -0
  668. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  669. package/lib/runtimes/browser/anonymousToken.js +300 -0
  670. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  671. package/lib/runtimes/browser/frontendTools.js +152 -0
  672. package/lib/runtimes/browser/index.d.ts +11 -0
  673. package/lib/runtimes/browser/index.js +20 -0
  674. package/lib/runtimes/browser/model.d.ts +52 -0
  675. package/lib/runtimes/browser/model.js +110 -0
  676. package/lib/runtimes/browser/protocol.d.ts +54 -0
  677. package/lib/runtimes/browser/protocol.js +35 -0
  678. package/lib/runtimes/browser/subagents.d.ts +131 -0
  679. package/lib/runtimes/browser/subagents.js +241 -0
  680. package/lib/runtimes/index.d.ts +3 -0
  681. package/lib/runtimes/index.js +3 -0
  682. package/lib/runtimes/lifecycle.d.ts +76 -0
  683. package/lib/runtimes/lifecycle.js +99 -0
  684. package/lib/runtimes/variants.d.ts +172 -0
  685. package/lib/runtimes/variants.js +187 -0
  686. package/lib/services/reconnectToRuntime.d.ts +2 -2
  687. package/lib/services/reconnectToRuntime.js +3 -3
  688. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  689. package/lib/services/sandboxServiceManagers.js +11 -11
  690. package/lib/specs/agents/agents.d.ts +129 -112
  691. package/lib/specs/agents/agents.js +8200 -5044
  692. package/lib/specs/evals.js +9 -0
  693. package/lib/specs/frontendTools.d.ts +4 -0
  694. package/lib/specs/frontendTools.js +77 -3
  695. package/lib/specs/mcpServers.d.ts +1 -0
  696. package/lib/specs/mcpServers.js +38 -15
  697. package/lib/specs/models.d.ts +18 -0
  698. package/lib/specs/models.js +154 -0
  699. package/lib/specs/outputs.d.ts +2 -0
  700. package/lib/specs/outputs.js +31 -0
  701. package/lib/specs/personas.js +1 -1
  702. package/lib/specs/skills.js +7 -7
  703. package/lib/specs/teams/teams.d.ts +2 -0
  704. package/lib/specs/teams/teams.js +628 -111
  705. package/lib/state/index.d.ts +1 -1
  706. package/lib/state/index.js +1 -1
  707. package/lib/state/substates/RuntimesState.d.ts +5 -5
  708. package/lib/state/substates/RuntimesState.js +14 -14
  709. package/lib/state/substates/index.d.ts +1 -1
  710. package/lib/state/substates/index.js +1 -1
  711. package/lib/stores/agentRuntimeStore.d.ts +43 -1
  712. package/lib/stores/agentRuntimeStore.js +100 -11
  713. package/lib/stores/index.d.ts +1 -1
  714. package/lib/stores/index.js +1 -1
  715. package/lib/stories/Button.d.ts +1 -1
  716. package/lib/stories/Button.stories.d.ts +1 -1
  717. package/lib/stories/Header.d.ts +1 -1
  718. package/lib/stories/Header.stories.d.ts +1 -1
  719. package/lib/test-setup.js +66 -0
  720. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
  721. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
  722. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
  723. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
  724. package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
  725. package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
  726. package/lib/tools/adapters/commands/index.d.ts +1 -0
  727. package/lib/tools/adapters/commands/index.js +5 -0
  728. package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
  729. package/lib/tools/index.d.ts +1 -0
  730. package/lib/tools/index.js +1 -0
  731. package/lib/types/a2a.d.ts +15 -1
  732. package/lib/types/agents-lifecycle.d.ts +11 -6
  733. package/lib/types/agents.d.ts +31 -6
  734. package/lib/types/agentspecs.d.ts +120 -4
  735. package/lib/types/chat.d.ts +251 -3
  736. package/lib/types/checkpoints.d.ts +20 -0
  737. package/lib/types/config.d.ts +13 -1
  738. package/lib/types/connection.d.ts +1 -1
  739. package/lib/types/evals.d.ts +2 -0
  740. package/lib/types/messages.d.ts +60 -0
  741. package/lib/types/models.d.ts +26 -0
  742. package/lib/types/notifications.d.ts +15 -6
  743. package/lib/types/outputs.d.ts +2 -0
  744. package/lib/types/protocol.d.ts +7 -2
  745. package/lib/types/stream.d.ts +48 -3
  746. package/lib/types/stream.js +5 -0
  747. package/lib/types/teams.d.ts +102 -4
  748. package/lib/types/tool-approvals.d.ts +1 -1
  749. package/lib/types/tools.d.ts +8 -2
  750. package/lib/utils/utils.js +7 -1
  751. package/package.json +376 -361
  752. package/scripts/codegen/compose.py +208 -0
  753. package/scripts/codegen/generate_agents.py +202 -31
  754. package/scripts/codegen/generate_evals.py +2 -0
  755. package/scripts/codegen/generate_frontend_tools.py +35 -6
  756. package/scripts/codegen/generate_mcp_servers.py +2 -2
  757. package/scripts/codegen/generate_models.py +40 -15
  758. package/scripts/codegen/generate_outputs.py +2 -0
  759. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  760. package/scripts/codegen/generate_skills.py +2 -2
  761. package/scripts/codegen/generate_teams.py +178 -4
  762. package/scripts/codegen/generate_tools.py +6 -4
  763. package/scripts/gen_workers.py +278 -110
  764. package/scripts/generate-environments-types.py +404 -0
  765. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  766. package/lib/chat/prompt/InputFooter.js +0 -194
  767. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  768. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  769. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  770. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  771. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  772. package/lib/hooks/useRuntimes.d.ts +0 -5
  773. package/lib/hooks/useRuntimes.js +0 -34
  774. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  775. package/lib/jupyter/kernelsHandler.js +0 -39
  776. package/lib/models/Dataset.d.ts +0 -16
  777. package/lib/utils/Cells.d.ts +0 -2
  778. package/lib/utils/Cells.js +0 -28
  779. /package/lib/models/{Dataset.js → Deck.js} +0 -0
@@ -0,0 +1,110 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /*
6
+ * Copyright (c) 2023-2026 Datalayer, Inc.
7
+ *
8
+ * MIT License
9
+ */
10
+ /**
11
+ * The model a browser agent talks to.
12
+ *
13
+ * A page cannot hold an AWS credential, so an in-browser agent does not reach
14
+ * Bedrock directly — it reaches the Datalayer inference service, which is
15
+ * OpenAI-compatible, holds the AWS credentials on the other side, and routes
16
+ * to Bedrock through LiteLLM. The SDK's OpenAI provider pointed at that base
17
+ * URL is the whole of it.
18
+ *
19
+ * **The service authenticates.** Every route on it requires a platform member,
20
+ * so a browser agent needs the signed-in person's Datalayer token and is
21
+ * refused with a 401 without one. This is the one thing an in-browser agent
22
+ * cannot do without a server: no runtime, no sandbox, but still an account.
23
+ * {@link createBrowserModel} sends the token as the bearer credential, so the
24
+ * request is attributed to the person making it and their usage is metered
25
+ * like any other.
26
+ *
27
+ * The model *name* needs no translation. A spec writes
28
+ * `bedrock:us.anthropic.claude-sonnet-4-6`, and the inference service already
29
+ * normalises that prefix for LiteLLM — the same string the server-side harness
30
+ * sends. Both harnesses name a model identically, which is what keeps one spec
31
+ * runnable in either.
32
+ *
33
+ * @module runtimes/browser/model
34
+ */
35
+ import { createOpenAI } from '@ai-sdk/openai';
36
+ /** Where the inference service's OpenAI-compatible API lives under its host. */
37
+ export const INFERENCE_API_PATH = '/api/ai-inference/v1';
38
+ /**
39
+ * The model a spec asks for when it says nothing.
40
+ *
41
+ * Matches the specs written for this harness rather than being a general
42
+ * default, so a caller that forgets to pass one still gets a working agent
43
+ * instead of a 404 from a model nobody provisioned.
44
+ */
45
+ export const DEFAULT_BROWSER_MODEL = 'bedrock:us.anthropic.claude-sonnet-4-6';
46
+ /**
47
+ * Whether this agent would be refused for want of a sign-in.
48
+ *
49
+ * Worth asking before showing a chat: an agent that answers every message with
50
+ * a 401 is worse than one a host had the sense not to offer.
51
+ */
52
+ export function browserModelRequiresSignIn(options) {
53
+ return !options.token?.trim();
54
+ }
55
+ /** The API root for an inference host, given either form of the URL. */
56
+ export function inferenceApiUrl(inferenceUrl) {
57
+ const trimmed = inferenceUrl.replace(/\/+$/, '');
58
+ return trimmed.endsWith(INFERENCE_API_PATH)
59
+ ? trimmed
60
+ : `${trimmed}${INFERENCE_API_PATH}`;
61
+ }
62
+ /**
63
+ * A fetch that says which host it could not reach.
64
+ *
65
+ * A browser agent's most likely failure is that it is pointed at the wrong
66
+ * host — the inference service sits with the control plane, not on the
67
+ * runtimes plane, and a URL for the latter fails CORS preflight because it
68
+ * does not serve the route at all. What the SDK surfaces for that is
69
+ * `TypeError: Failed to fetch`, from a stack several libraries deep, naming
70
+ * nothing. This says what was being called.
71
+ */
72
+ function describingFetch(base, apiUrl) {
73
+ return async (input, init) => {
74
+ try {
75
+ return await base(input, init);
76
+ }
77
+ catch (error) {
78
+ throw new Error(`Could not reach the inference service at ${apiUrl}. ` +
79
+ 'Check that this is the right host — the service runs with the ' +
80
+ 'control plane, not the runtimes plane — and that it allows this ' +
81
+ `origin. (${error instanceof Error ? error.message : String(error)})`, { cause: error });
82
+ }
83
+ };
84
+ }
85
+ /**
86
+ * A language model that answers from the inference service.
87
+ *
88
+ * `.chat()` rather than the provider's default: that is the
89
+ * `/chat/completions` endpoint, which is the one the inference service
90
+ * normalises tools and model names for.
91
+ */
92
+ export function createBrowserModel(options) {
93
+ const apiUrl = inferenceApiUrl(options.inferenceUrl);
94
+ const provider = createOpenAI({
95
+ name: 'datalayer-ai-inference',
96
+ baseURL: apiUrl,
97
+ // Sent as `Authorization: Bearer <token>`, which is what the service's
98
+ // bearer scheme reads — so the completion is made as the signed-in person
99
+ // and attributed to them.
100
+ //
101
+ // The placeholder is for the signed-out case, where the provider would
102
+ // otherwise go looking for a key in an environment a browser does not
103
+ // have: the refusal then comes from the service, as a 401 a host can
104
+ // report, rather than from the SDK as a missing-configuration throw.
105
+ apiKey: options.token?.trim() || 'anonymous',
106
+ headers: options.headers,
107
+ fetch: describingFetch(options.fetch ?? globalThis.fetch, apiUrl),
108
+ });
109
+ return provider.chat(options.model || DEFAULT_BROWSER_MODEL);
110
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * How a chat is told to talk to an in-page agent.
3
+ *
4
+ * The shape belongs with the harness rather than with whoever renders a chat.
5
+ * It started in the examples, and then the LOOP workspace needed the identical
6
+ * thing — same fields, same reasons — which is the usual sign that a shape was
7
+ * living in the wrong place.
8
+ *
9
+ * @module runtimes/browser/protocol
10
+ */
11
+ import type { ProtocolConfig } from '../../types/protocol';
12
+ import type { AgentStreamSubagentPayload } from '../../types/stream';
13
+ import type { FrontendToolDefinition } from '../../types/tools';
14
+ import type { TeamContextSharing } from '../../types/teams';
15
+ import type { BrowserModelOptions } from './model';
16
+ import type { BrowserSubagent } from './subagents';
17
+ export type BrowserProtocolOptions = {
18
+ /** The agent's id, for the chat to name it by. */
19
+ agentId: string;
20
+ /** The agent's instructions. */
21
+ instructions?: string;
22
+ /** The model id, as a spec spells it. */
23
+ model?: string;
24
+ /** The tools the agent may call in this page, if any. */
25
+ frontendTools?: FrontendToolDefinition[];
26
+ /** Where to reach a model. */
27
+ inference: Omit<BrowserModelOptions, 'model'>;
28
+ /**
29
+ * Agents this one may hand work to.
30
+ *
31
+ * Each becomes a tool named after it, so the model reaches for `Compactor`
32
+ * rather than `delegate_task('Compactor', …)`. What the child is told about
33
+ * the conversation is {@link sharing}.
34
+ */
35
+ subagents?: BrowserSubagent[];
36
+ /** What a subagent is told about the conversation so far. */
37
+ sharing?: TeamContextSharing;
38
+ /** Told what a delegated run does, as it does it — see `subagentTools`. */
39
+ onSubagentEvent?: (event: AgentStreamSubagentPayload) => void;
40
+ };
41
+ /**
42
+ * The protocol config for an agent whose loop runs in this page.
43
+ *
44
+ * Two fields carry the weight:
45
+ *
46
+ * - `endpoint` is empty and stays empty. There is nothing to address, and the
47
+ * live objects travel in `options` — the seam `createProtocolAdapter` leaves
48
+ * for an adapter whose configuration is not a URL.
49
+ * - `enableConfigQuery: false`, because models, tools and skills all come from
50
+ * a runtime this agent does not have. Said explicitly rather than left
51
+ * undefined: the composer waits on that query before it will accept a
52
+ * keystroke, so an omitted flag reads as a chat that silently ignores typing.
53
+ */
54
+ export declare function browserProtocolConfig(options: BrowserProtocolOptions): ProtocolConfig;
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The protocol config for an agent whose loop runs in this page.
7
+ *
8
+ * Two fields carry the weight:
9
+ *
10
+ * - `endpoint` is empty and stays empty. There is nothing to address, and the
11
+ * live objects travel in `options` — the seam `createProtocolAdapter` leaves
12
+ * for an adapter whose configuration is not a URL.
13
+ * - `enableConfigQuery: false`, because models, tools and skills all come from
14
+ * a runtime this agent does not have. Said explicitly rather than left
15
+ * undefined: the composer waits on that query before it will accept a
16
+ * keystroke, so an omitted flag reads as a chat that silently ignores typing.
17
+ */
18
+ export function browserProtocolConfig(options) {
19
+ const { agentId, instructions, model, frontendTools, inference, subagents, sharing, onSubagentEvent, } = options;
20
+ return {
21
+ type: 'browser-vercel-ai',
22
+ endpoint: '',
23
+ agentId,
24
+ enableConfigQuery: false,
25
+ options: {
26
+ instructions,
27
+ model,
28
+ frontendTools,
29
+ inference,
30
+ subagents,
31
+ sharing,
32
+ onSubagentEvent,
33
+ },
34
+ };
35
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Delegation, for an agent whose loop runs in the page.
3
+ *
4
+ * The server-side harness already has this: `subagents/capability.py`
5
+ * contributes a `delegate_task` tool to a pydantic-ai agent, runs the named
6
+ * subagent in a child run, and hands its final output back to the parent. This
7
+ * is the same idea in the browser, and deliberately built the way the Vercel AI
8
+ * SDK documents rather than reinvented:
9
+ *
10
+ * - a subagent is a {@link ToolLoopAgent}, the same class the parent is;
11
+ * - the parent reaches it through an ordinary `tool()` whose `execute` calls
12
+ * `generate()` and returns the text;
13
+ * - what the parent's model sees is trimmed with `toModelOutput`.
14
+ *
15
+ * The one thing that is ours is *which conversation the child is given*. The
16
+ * SDK isolates by default and shows you how to pass `messages` instead; a
17
+ * teamspec says which of those a team wants, so the choice is read from the
18
+ * spec rather than decided here.
19
+ *
20
+ * One SDK constraint worth knowing: a subagent tool cannot take part in
21
+ * approval flows. A subagent that must be approved has to be a plain tool.
22
+ *
23
+ * @module runtimes/browser/subagents
24
+ */
25
+ import { type ToolSet } from 'ai';
26
+ import { type AgentStreamSubagentPayload } from '../../types/stream';
27
+ import type { TeamContextSharing } from '../../types/teams';
28
+ import { type BrowserModelOptions } from './model';
29
+ /** How many turns a delegated task may take before it is stopped. */
30
+ export declare const DEFAULT_SUBAGENT_MAX_STEPS = 12;
31
+ /** One agent a parent may hand work to. */
32
+ export type BrowserSubagent = {
33
+ /** The name the parent addresses it by. Becomes the tool name. */
34
+ name: string;
35
+ /** What it is for, and when to reach for it. Read by the parent's model. */
36
+ description: string;
37
+ /** Its instructions. */
38
+ instructions?: string;
39
+ /** Its model, as a spec spells it. Falls back to the parent's. */
40
+ model?: string;
41
+ /** Tools it may call in this page. Usually a narrower set than the parent's. */
42
+ tools?: ToolSet;
43
+ /**
44
+ * The octicon name its spec asked for.
45
+ *
46
+ * Carried, not used: the harness has no interface. It is here so a menu
47
+ * offering this subagent can draw it the same way it draws a team member,
48
+ * rather than the two disagreeing about what the same agent looks like.
49
+ */
50
+ icon?: string;
51
+ };
52
+ export type SubagentToolsOptions = {
53
+ subagents: BrowserSubagent[];
54
+ /** Where to reach a model. */
55
+ inference: Omit<BrowserModelOptions, 'model'>;
56
+ /** The parent's model, for a subagent that names none. */
57
+ model?: string;
58
+ /**
59
+ * What the child is told about the conversation so far.
60
+ *
61
+ * From the team's `context.sharing`. `shared` hands over the parent's
62
+ * messages and appends the task; anything else starts the child on the task
63
+ * alone — which is what the SDK does by default, and what a delegation model
64
+ * wants.
65
+ *
66
+ * `own-turns` collapses to isolated here on purpose: a subagent has no turns
67
+ * of its own to be given, so the honest reading of "only its own history" is
68
+ * "no history".
69
+ */
70
+ sharing?: TeamContextSharing;
71
+ /** Turn ceiling for one delegated task. */
72
+ maxSteps?: number;
73
+ /**
74
+ * Told what a delegated run does, as it does it.
75
+ *
76
+ * The same events the server-side harness puts on its monitoring stream —
77
+ * `start`, `text`, `tool_call`, `tool_result`, `end`, `error`, keyed by the
78
+ * parent's tool call — so whatever draws a delegation's progress (the
79
+ * side panel, the pulse in the composer) draws it the same whether the
80
+ * loop turns on a server or in this page.
81
+ */
82
+ onEvent?: (event: AgentStreamSubagentPayload) => void;
83
+ /**
84
+ * The page's tools, for a member that declares none of its own.
85
+ *
86
+ * A team's members all work in the page the person has open — the Reviewer
87
+ * re-runs the cells, Decks writes the deck — and a member reached by
88
+ * delegation is still that member. Without this a delegated task ran with
89
+ * no tools at all, and "ask the Reviewer to check this" came back as an
90
+ * opinion about cells it could not run. A subagent that names a narrower
91
+ * set of its own keeps it.
92
+ */
93
+ tools?: ToolSet;
94
+ /**
95
+ * The run's abort signal, read when a delegation starts.
96
+ *
97
+ * The SDK hands a tool the run's signal too, and the child listens to
98
+ * both: a person pressing stop must stop the child as surely as the
99
+ * parent, and a signal reached one way is as good as the other.
100
+ */
101
+ signal?: () => AbortSignal | undefined;
102
+ };
103
+ /**
104
+ * The tools a parent needs in order to delegate.
105
+ *
106
+ * One per subagent, named after it, so the model reaches for `Compactor`
107
+ * rather than for `delegate_task('Compactor', …)`. A name the model can read
108
+ * is a name it picks correctly more often, and the description is what it
109
+ * chooses on.
110
+ */
111
+ export declare function subagentTools(options: SubagentToolsOptions): ToolSet;
112
+ /** What a delegation says when the person stopped it. */
113
+ export declare const STOPPED = "Stopped.";
114
+ /** The parts of a streamed run this relays; the SDK's stream has more, which pass. */
115
+ export type SubagentStreamPart = {
116
+ type: string;
117
+ text?: string;
118
+ toolName?: string;
119
+ input?: unknown;
120
+ output?: unknown;
121
+ error?: unknown;
122
+ };
123
+ /**
124
+ * Turn a delegated run's stream into subagent events, and return its text.
125
+ *
126
+ * Text and reasoning deltas, tool calls and their results, and errors — the
127
+ * phases the server-side harness reports — each emitted as the part arrives.
128
+ * Everything else the SDK streams (step and finish markers, sources, files)
129
+ * is not a phase and passes in silence.
130
+ */
131
+ export declare function relaySubagentRun(stream: AsyncIterable<SubagentStreamPart>, emit: (event: Omit<AgentStreamSubagentPayload, 'subagentName' | 'toolCallId'>) => void, signal?: AbortSignal): Promise<string>;
@@ -0,0 +1,241 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /*
6
+ * Copyright (c) 2023-2026 Datalayer, Inc.
7
+ *
8
+ * MIT License
9
+ */
10
+ /**
11
+ * Delegation, for an agent whose loop runs in the page.
12
+ *
13
+ * The server-side harness already has this: `subagents/capability.py`
14
+ * contributes a `delegate_task` tool to a pydantic-ai agent, runs the named
15
+ * subagent in a child run, and hands its final output back to the parent. This
16
+ * is the same idea in the browser, and deliberately built the way the Vercel AI
17
+ * SDK documents rather than reinvented:
18
+ *
19
+ * - a subagent is a {@link ToolLoopAgent}, the same class the parent is;
20
+ * - the parent reaches it through an ordinary `tool()` whose `execute` calls
21
+ * `generate()` and returns the text;
22
+ * - what the parent's model sees is trimmed with `toModelOutput`.
23
+ *
24
+ * The one thing that is ours is *which conversation the child is given*. The
25
+ * SDK isolates by default and shows you how to pass `messages` instead; a
26
+ * teamspec says which of those a team wants, so the choice is read from the
27
+ * spec rather than decided here.
28
+ *
29
+ * One SDK constraint worth knowing: a subagent tool cannot take part in
30
+ * approval flows. A subagent that must be approved has to be a plain tool.
31
+ *
32
+ * @module runtimes/browser/subagents
33
+ */
34
+ import { ToolLoopAgent, stepCountIs, tool, jsonSchema, } from 'ai';
35
+ import { SUBAGENT_STOPPED, } from '../../types/stream';
36
+ import { createBrowserModel } from './model';
37
+ /** How many turns a delegated task may take before it is stopped. */
38
+ export const DEFAULT_SUBAGENT_MAX_STEPS = 12;
39
+ /** The input every delegation tool takes. */
40
+ const TASK_SCHEMA = {
41
+ type: 'object',
42
+ properties: {
43
+ task: {
44
+ type: 'string',
45
+ description: 'What to do, stated so that it can be carried out without the rest of this conversation.',
46
+ },
47
+ },
48
+ required: ['task'],
49
+ };
50
+ /**
51
+ * The tools a parent needs in order to delegate.
52
+ *
53
+ * One per subagent, named after it, so the model reaches for `Compactor`
54
+ * rather than for `delegate_task('Compactor', …)`. A name the model can read
55
+ * is a name it picks correctly more often, and the description is what it
56
+ * chooses on.
57
+ */
58
+ export function subagentTools(options) {
59
+ const { subagents, inference, model, sharing = 'shared', maxSteps = DEFAULT_SUBAGENT_MAX_STEPS, tools: shared, onEvent, signal: runSignal, } = options;
60
+ const tools = {};
61
+ for (const subagent of subagents) {
62
+ tools[subagent.name] = tool({
63
+ description: subagent.description,
64
+ inputSchema: jsonSchema(TASK_SCHEMA),
65
+ execute: async (input, executionOptions) => {
66
+ const { task } = (input ?? {});
67
+ if (!task?.trim()) {
68
+ return { error: 'A delegated task needs to say what to do.' };
69
+ }
70
+ // Keyed by the parent's tool call, as the server keys its events:
71
+ // one delegation, one timeline, whichever side ran it. A run ends
72
+ // once: a stream that reports an error and then rejects would
73
+ // otherwise say so twice.
74
+ const toolCallId = executionOptions?.toolCallId ?? null;
75
+ let ended = false;
76
+ const emit = (event) => {
77
+ if (event.phase === 'end' || event.phase === 'error') {
78
+ if (ended) {
79
+ return;
80
+ }
81
+ ended = true;
82
+ }
83
+ onEvent?.({ subagentName: subagent.name, toolCallId, ...event });
84
+ };
85
+ const child = new ToolLoopAgent({
86
+ id: subagent.name,
87
+ model: createBrowserModel({
88
+ ...inference,
89
+ model: subagent.model ?? model,
90
+ }),
91
+ instructions: subagent.instructions,
92
+ tools: subagent.tools ?? shared ?? {},
93
+ stopWhen: stepCountIs(maxSteps),
94
+ });
95
+ // Stopped when either the run or this tool call is: the two signals
96
+ // are one to the child.
97
+ const signal = anySignal([
98
+ executionOptions?.abortSignal,
99
+ runSignal?.(),
100
+ ]);
101
+ emit({ phase: 'start', task });
102
+ try {
103
+ // `messages` for a shared conversation, `prompt` for an isolated
104
+ // one — the same two shapes the SDK documents, chosen by the team.
105
+ const history = sharing === 'shared'
106
+ ? (executionOptions?.messages ?? [])
107
+ : [];
108
+ // Streamed rather than generated, so the run can be watched: each
109
+ // part becomes an event as it arrives, and the text is what the
110
+ // parent is handed at the end.
111
+ const result = await child.stream({
112
+ messages: [...history, { role: 'user', content: task }],
113
+ abortSignal: signal,
114
+ });
115
+ const streamed = await relaySubagentRun(result.fullStream, emit, signal);
116
+ if (signal?.aborted) {
117
+ emit({ phase: 'error', error: STOPPED });
118
+ return { agent: subagent.name, error: STOPPED };
119
+ }
120
+ const output = streamed || (await result.text);
121
+ emit({ phase: 'end', output });
122
+ return { agent: subagent.name, result: output };
123
+ }
124
+ catch (reason) {
125
+ // Returned rather than thrown: a failed delegation is a step the
126
+ // parent can recover from — try another member, or tell the person
127
+ // — and a throw would abort the whole run instead.
128
+ // A stop is said as a stop, not as whatever the aborted fetch threw.
129
+ const error = signal?.aborted
130
+ ? STOPPED
131
+ : reason instanceof Error
132
+ ? reason.message
133
+ : String(reason);
134
+ emit({ phase: 'error', error });
135
+ return { agent: subagent.name, error };
136
+ }
137
+ },
138
+ // What the parent's model reads. The person can see the whole delegated
139
+ // run in the transcript; the parent only needs its conclusion, and
140
+ // paying for the rest in context is how a delegation model runs out of
141
+ // room three hand-offs in.
142
+ toModelOutput: ({ output }) => {
143
+ const value = output;
144
+ return {
145
+ type: 'text',
146
+ value: value?.error
147
+ ? `${subagent.name} could not finish: ${value.error}`
148
+ : (value?.result ?? 'Done.'),
149
+ };
150
+ },
151
+ });
152
+ }
153
+ return tools;
154
+ }
155
+ /** What a delegation says when the person stopped it. */
156
+ export const STOPPED = SUBAGENT_STOPPED;
157
+ /** One signal for several, or the one there is. */
158
+ function anySignal(signals) {
159
+ const present = signals.filter((entry) => Boolean(entry));
160
+ if (present.length <= 1) {
161
+ return present[0];
162
+ }
163
+ if (typeof AbortSignal.any === 'function') {
164
+ return AbortSignal.any(present);
165
+ }
166
+ // Older runtimes: a controller that follows whichever fires first.
167
+ const controller = new AbortController();
168
+ for (const entry of present) {
169
+ if (entry.aborted) {
170
+ controller.abort(entry.reason);
171
+ break;
172
+ }
173
+ entry.addEventListener('abort', () => controller.abort(entry.reason), {
174
+ once: true,
175
+ });
176
+ }
177
+ return controller.signal;
178
+ }
179
+ /** A tool's result as a line the timeline can show. */
180
+ function preview(value) {
181
+ const text = typeof value === 'string' ? value : JSON.stringify(value);
182
+ return text.length > 400 ? `${text.slice(0, 400)}…` : text;
183
+ }
184
+ /**
185
+ * Turn a delegated run's stream into subagent events, and return its text.
186
+ *
187
+ * Text and reasoning deltas, tool calls and their results, and errors — the
188
+ * phases the server-side harness reports — each emitted as the part arrives.
189
+ * Everything else the SDK streams (step and finish markers, sources, files)
190
+ * is not a phase and passes in silence.
191
+ */
192
+ export async function relaySubagentRun(stream, emit, signal) {
193
+ let text = '';
194
+ for await (const part of stream) {
195
+ // Stopped: whatever is still in the pipe is not worth relaying.
196
+ if (signal?.aborted) {
197
+ break;
198
+ }
199
+ switch (part.type) {
200
+ case 'text-delta':
201
+ text += part.text ?? '';
202
+ emit({ phase: 'text', text: part.text ?? '' });
203
+ break;
204
+ case 'reasoning-delta':
205
+ emit({ phase: 'thinking', text: part.text ?? '' });
206
+ break;
207
+ case 'tool-call':
208
+ emit({
209
+ phase: 'tool_call',
210
+ toolName: part.toolName,
211
+ toolArgs: (part.input ?? {}),
212
+ });
213
+ break;
214
+ case 'tool-result':
215
+ emit({
216
+ phase: 'tool_result',
217
+ toolName: part.toolName,
218
+ result: preview(part.output),
219
+ });
220
+ break;
221
+ case 'tool-error':
222
+ emit({
223
+ phase: 'tool_result',
224
+ toolName: part.toolName,
225
+ result: preview(part.error),
226
+ });
227
+ break;
228
+ case 'error':
229
+ emit({
230
+ phase: 'error',
231
+ error: part.error instanceof Error
232
+ ? part.error.message
233
+ : String(part.error),
234
+ });
235
+ break;
236
+ default:
237
+ break;
238
+ }
239
+ }
240
+ return text;
241
+ }
@@ -1,5 +1,8 @@
1
1
  export * from './actions';
2
+ export * from './lifecycle';
2
3
  export * from './apis';
3
4
  export * from './settings';
4
5
  export * from './snapshots';
5
6
  export * from './utils';
7
+ export * from './variants';
8
+ export * from './browser';
@@ -3,7 +3,10 @@
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
5
  export * from './actions';
6
+ export * from './lifecycle';
6
7
  export * from './apis';
7
8
  export * from './settings';
8
9
  export * from './snapshots';
9
10
  export * from './utils';
11
+ export * from './variants';
12
+ export * from './browser';
@@ -0,0 +1,76 @@
1
+ /**
2
+ * The converged sandbox lifecycle, in TypeScript.
3
+ *
4
+ * The Python side states this vocabulary in `code_sandboxes.lifecycle` and the
5
+ * Runtimes client is written to it. This is the same statement for callers that
6
+ * reach the API from a browser: one place that knows how a runtime URL is
7
+ * spelled, so a hook, a mixin and a page cannot drift from each other the way
8
+ * they did when each built its own string.
9
+ *
10
+ * Transport stays with the caller — `requestDatalayerAPI`, `requestDatalayer`
11
+ * and a bare `fetch` all have their reasons. Only the URLs and the verbs are
12
+ * shared, because those are what has to agree.
13
+ */
14
+ /**
15
+ * A verb a caller may use, and the REST spelling it corresponds to.
16
+ *
17
+ * Mirrors `LIFECYCLE_OPERATIONS` in `code_sandboxes.lifecycle` — if one of them
18
+ * changes, so does the other, and the tests on both sides say so.
19
+ */
20
+ export declare const LIFECYCLE_OPERATIONS: {
21
+ readonly create: "POST /runtimes";
22
+ readonly start: "POST /runtimes (implied) — begin a created sandbox";
23
+ readonly stop: "DELETE /runtimes/{runtime_name}";
24
+ readonly pause: "POST /runtimes/{runtime_name}/pause";
25
+ readonly resume: "POST /runtimes/{runtime_name}/resume";
26
+ readonly list: "GET /runtimes";
27
+ readonly get: "GET /runtimes/{runtime_name}";
28
+ readonly update: "PUT /runtimes/{runtime_name}";
29
+ readonly snapshot: "POST /sandbox-snapshots";
30
+ readonly execute: "run code in the sandbox";
31
+ };
32
+ /**
33
+ * The name of a lifecycle verb.
34
+ */
35
+ export type LifecycleOperation = keyof typeof LIFECYCLE_OPERATIONS;
36
+ /**
37
+ * The Runtimes API prefix, below whichever host serves it.
38
+ */
39
+ export declare const RUNTIMES_API_PREFIX = "api/runtimes/v1";
40
+ /**
41
+ * Every runtime — the collection.
42
+ *
43
+ * `create` posts here and `list` gets here.
44
+ */
45
+ export declare function runtimesUrl(baseUrl: string): string;
46
+ /**
47
+ * One runtime, by pod name.
48
+ *
49
+ * `get` reads it, `update` puts to it, and `stop` deletes it — whether the
50
+ * runtime is running or paused, which is why there is no second path for the
51
+ * paused case.
52
+ */
53
+ export declare function runtimeUrl(baseUrl: string, runtimeName: string): string;
54
+ /**
55
+ * Suspend one runtime, keeping its state.
56
+ */
57
+ export declare function runtimePauseUrl(baseUrl: string, runtimeName: string): string;
58
+ /**
59
+ * Bring one paused runtime back.
60
+ */
61
+ export declare function runtimeResumeUrl(baseUrl: string, runtimeName: string): string;
62
+ /**
63
+ * The snapshots collection.
64
+ *
65
+ * A snapshot outlives the runtime it came from, which is why it is its own
66
+ * resource rather than a sub-path of the pod.
67
+ */
68
+ export declare function sandboxSnapshotsUrl(baseUrl: string): string;
69
+ /**
70
+ * One snapshot, by UID.
71
+ */
72
+ export declare function sandboxSnapshotUrl(baseUrl: string, id: string): string;
73
+ /**
74
+ * The checkpoint records behind pause and resume.
75
+ */
76
+ export declare function runtimeCheckpointsUrl(baseUrl: string): string;