@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
@@ -24,11 +24,31 @@ import { parseAgentStreamMessage, } from '../types/stream';
24
24
  import { DEFAULT_AGENT_CONFIG } from '../types/config';
25
25
  import { ServiceManager } from '@jupyterlab/services/lib/manager';
26
26
  import { disposeSandboxServiceManagers } from '../services/sandboxServiceManagers';
27
+ import { runtimeUrl, runtimesUrl } from '../runtimes/lifecycle';
28
+ import { legacyTargetOf, locationOf, runsInBrowser, toAgentRuntimeVariant, } from '../runtimes/variants';
27
29
  // ═══════════════════════════════════════════════════════════════════════════
28
30
  // Constants
29
31
  // ═══════════════════════════════════════════════════════════════════════════
30
32
  /** Stable fallback to avoid new-reference on every render. */
31
33
  const EMPTY_RUNTIMES = [];
34
+ /**
35
+ * What a browser agent has instead of a runtime.
36
+ *
37
+ * Every field that names a host is empty because there is no host: the loop
38
+ * runs in this page, so there is no pod, no Jupyter server and no agent
39
+ * service to address. It is ready because nothing has to happen first.
40
+ *
41
+ * Frozen and shared rather than built per call, so a host comparing the value
42
+ * it got back sees the same object each time.
43
+ */
44
+ const BROWSER_AGENT_CONNECTION = Object.freeze({
45
+ runtimeName: '',
46
+ environmentName: '',
47
+ jupyterBaseUrl: '',
48
+ agentBaseUrl: '',
49
+ status: 'ready',
50
+ isReady: true,
51
+ });
32
52
  /** Default query options for all agent runtime queries. */
33
53
  export const AGENT_QUERY_OPTIONS = {
34
54
  staleTime: 5 * 60 * 1000, // 5 minutes
@@ -40,7 +60,7 @@ export const agentQueryKeys = {
40
60
  all: () => ['agentRuntimes'],
41
61
  lists: () => [...agentQueryKeys.agentRuntimes.all(), 'list'],
42
62
  details: () => [...agentQueryKeys.agentRuntimes.all(), 'detail'],
43
- detail: (podName) => [...agentQueryKeys.agentRuntimes.details(), podName],
63
+ detail: (runtimeName) => [...agentQueryKeys.agentRuntimes.details(), runtimeName],
44
64
  },
45
65
  checkpoints: {
46
66
  all: () => ['checkpoints'],
@@ -64,12 +84,12 @@ export const agentQueryKeys = {
64
84
  * forever; resume/create mutations also clear the tombstone eagerly.
65
85
  */
66
86
  const DELETED_POD_TOMBSTONE_TTL_MS = 5 * 60 * 1000;
67
- const deletedRuntimePodTombstones = new Map();
87
+ const deletedRuntimeTombstones = new Map();
68
88
  /** Mark a runtime pod as deleted by this client (tombstone). */
69
- export function markRuntimePodDeleted(podName) {
70
- const normalized = String(podName || '').trim();
89
+ export function markRuntimeDeleted(runtimeName) {
90
+ const normalized = String(runtimeName || '').trim();
71
91
  if (normalized) {
72
- deletedRuntimePodTombstones.set(normalized, Date.now());
92
+ deletedRuntimeTombstones.set(normalized, Date.now());
73
93
  // Centralized teardown: dispose every ServiceManager any surface opened
74
94
  // against this pod's sandbox so their kernelspecs/sessions/users pollers
75
95
  // stop immediately instead of waiting for query-cache propagation.
@@ -77,8 +97,8 @@ export function markRuntimePodDeleted(podName) {
77
97
  }
78
98
  }
79
99
  /** Clear a deleted-pod tombstone (pod legitimately exists again). */
80
- export function clearRuntimePodDeleted(podName) {
81
- deletedRuntimePodTombstones.delete(String(podName || '').trim());
100
+ export function clearRuntimeDeleted(runtimeName) {
101
+ deletedRuntimeTombstones.delete(String(runtimeName || '').trim());
82
102
  }
83
103
  /** Statuses that imply a live pod the client would connect to. */
84
104
  const LIVE_RUNTIME_STATUSES = new Set([
@@ -93,13 +113,13 @@ const LIVE_RUNTIME_STATUSES = new Set([
93
113
  * Checkpoint-synthesised `paused` records pass through (no live pod to poll).
94
114
  */
95
115
  function isStaleDeletedRuntime(runtime) {
96
- const podName = String(runtime?.pod_name || '').trim();
97
- const deletedAt = deletedRuntimePodTombstones.get(podName);
116
+ const runtimeName = String(runtime?.runtime_name || '').trim();
117
+ const deletedAt = deletedRuntimeTombstones.get(runtimeName);
98
118
  if (deletedAt === undefined) {
99
119
  return false;
100
120
  }
101
121
  if (Date.now() - deletedAt > DELETED_POD_TOMBSTONE_TTL_MS) {
102
- deletedRuntimePodTombstones.delete(podName);
122
+ deletedRuntimeTombstones.delete(runtimeName);
103
123
  return false;
104
124
  }
105
125
  return LIVE_RUNTIME_STATUSES.has(runtime.status);
@@ -290,14 +310,6 @@ export async function createServiceManagerFromAgentSandbox(info, authToken) {
290
310
  function toAgentRuntimeData(raw) {
291
311
  const status = typeof raw.status === 'string' ? raw.status.toLowerCase() : '';
292
312
  const normalizedStatus = RUNTIME_STATUS_MAP[status] ?? 'running';
293
- const rawVolumeUids = Array.isArray(raw.volume_uids)
294
- ? raw.volume_uids
295
- : raw.volume_uid
296
- ? [raw.volume_uid]
297
- : [];
298
- const volume_uids = rawVolumeUids
299
- .map((uid) => String(uid || '').trim())
300
- .filter(Boolean);
301
313
  const environment = raw.environment;
302
314
  return {
303
315
  ...raw,
@@ -310,13 +322,14 @@ function toAgentRuntimeData(raw) {
310
322
  resources: environment?.resources,
311
323
  },
312
324
  status: normalizedStatus,
313
- name: raw.given_name || raw.pod_name,
314
- id: raw.pod_name,
325
+ name: raw.given_name || raw.runtime_name,
326
+ id: raw.runtime_name,
315
327
  url: raw.ingress,
316
328
  messageCount: 0,
317
329
  agent_spec_id: raw.agent_spec_id || undefined,
318
- volume_uids,
319
- volume_uid: raw.volume_uid || volume_uids[0] || undefined,
330
+ content_attachments: Array.isArray(raw.content_attachments)
331
+ ? raw.content_attachments
332
+ : [],
320
333
  };
321
334
  }
322
335
  // ═══════════════════════════════════════════════════════════════════════════
@@ -349,7 +362,10 @@ function toAgentRuntimeData(raw) {
349
362
  * ```
350
363
  */
351
364
  export function useAgentRuntimes(options = {}) {
352
- const { agentSpecId, agentConfig, autoCreateAgent = true, autoStart = false, agentSpec, runtimeCreationTarget = 'backend-services', runtimeCreationBaseUrl, } = options;
365
+ const { agentSpecId, agentConfig, autoCreateAgent = true, autoStart = false, agentSpec, variant: variantOption, runtimeCreationTarget, runtimeCreationBaseUrl, runtimeConnection, } = options;
366
+ // Both vocabularies funnel into one value here, so no branch below has to
367
+ // remember that the old names exist.
368
+ const variant = toAgentRuntimeVariant(variantOption ?? runtimeCreationTarget);
353
369
  const { configuration } = useCoreStore();
354
370
  // Base store state
355
371
  const runtime = useAgentRuntimeConnection();
@@ -366,29 +382,50 @@ export function useAgentRuntimes(options = {}) {
366
382
  const [lifecycleError, setLifecycleError] = useState(null);
367
383
  const [isCreating, setIsCreating] = useState(false);
368
384
  const hasAutoStarted = useRef(false);
385
+ /*
386
+ * Whether the "is one already running?" question has been answered.
387
+ *
388
+ * State rather than a ref: the auto-start effect has to re-run when it
389
+ * flips, and a ref changing does not re-run anything.
390
+ */
391
+ const [lookedForExisting, setLookedForExisting] = useState(false);
369
392
  const hasCreatedAgentRef = useRef(false);
370
- const lastRuntimePodRef = useRef(null);
393
+ const lastRuntimeRef = useRef(null);
371
394
  const creatingRef = useRef(false);
372
395
  const agentConfigRef = useRef(agentConfig);
373
396
  agentConfigRef.current = agentConfig;
374
- // Whether we're managing a full agent lifecycle (agentSpecId provided)
375
- const hasSpec = !!agentSpecId;
397
+ // Specs use the backend lifecycle only when this hook owns a cloud runtime.
398
+ // A local agent-runtimes server is already running, so it remains connect
399
+ // mode even when agent creation references a spec — and a browser agent has
400
+ // no runtime to own at all.
401
+ const hasSpec = !!agentSpecId && locationOf(variant) === 'cloud';
402
+ const runtimeConnectionKey = runtimeConnection
403
+ ? [
404
+ runtimeConnection.runtimeName,
405
+ runtimeConnection.environmentName,
406
+ runtimeConnection.jupyterBaseUrl ||
407
+ runtimeConnection.serviceManager?.serverSettings.baseUrl ||
408
+ '',
409
+ runtimeConnection.kernelId || '',
410
+ ].join(':')
411
+ : null;
376
412
  const resolvedRuntimeCreationBaseUrl = useMemo(() => {
377
413
  if (runtimeCreationBaseUrl) {
378
414
  return runtimeCreationBaseUrl;
379
415
  }
380
- if (runtimeCreationTarget === 'local-agent-runtimes') {
416
+ // A browser agent reaches no runtime service; the empty string keeps the
417
+ // return shape without naming a host nothing will call.
418
+ if (runsInBrowser(variant)) {
419
+ return '';
420
+ }
421
+ if (locationOf(variant) === 'local') {
381
422
  return (import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL ||
382
423
  'http://localhost:8765');
383
424
  }
384
425
  return (configuration?.runtimesUrl ||
385
426
  import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL ||
386
427
  'https://r1.datalayer.run');
387
- }, [
388
- configuration?.runtimesUrl,
389
- runtimeCreationBaseUrl,
390
- runtimeCreationTarget,
391
- ]);
428
+ }, [configuration?.runtimesUrl, runtimeCreationBaseUrl, variant]);
392
429
  // ─── Auth helpers ─────────────────────────────────────────────────
393
430
  const getAuthHeaders = useCallback(async () => {
394
431
  try {
@@ -403,8 +440,34 @@ export function useAgentRuntimes(options = {}) {
403
440
  return { token: '', aiAgentsUrl: '', runtimesUrl: '' };
404
441
  }
405
442
  }, [resolvedRuntimeCreationBaseUrl]);
443
+ // ─── Connect to a supplied runtime ─────────────────────────────────
444
+ useEffect(() => {
445
+ if (!runtimeConnection || !runtimeConnectionKey) {
446
+ return;
447
+ }
448
+ const currentConnectionKey = runtime
449
+ ? [
450
+ runtime.runtimeName,
451
+ runtime.environmentName,
452
+ runtime.jupyterBaseUrl || '',
453
+ runtime.kernelId || '',
454
+ ].join(':')
455
+ : null;
456
+ if (currentConnectionKey === runtimeConnectionKey) {
457
+ return;
458
+ }
459
+ hasCreatedAgentRef.current = false;
460
+ storeConnectAgent(runtimeConnection);
461
+ }, [runtimeConnection, runtimeConnectionKey, runtime, storeConnectAgent]);
406
462
  // ─── Launch Runtime ─────────────────────────────────────────────────
407
463
  const launchRuntime = useCallback(async (runtimeOptions) => {
464
+ if (runsInBrowser(variant)) {
465
+ // Nothing to launch: the loop runs in this page. Resolving rather than
466
+ // throwing keeps one launch button correct for every variant — a host
467
+ // that calls this because a person pressed the button gets a runtime
468
+ // that is already, truthfully, ready.
469
+ return BROWSER_AGENT_CONNECTION;
470
+ }
408
471
  if (hasSpec) {
409
472
  setLifecycleStatus('launching');
410
473
  setLifecycleError(null);
@@ -455,6 +518,7 @@ export function useAgentRuntimes(options = {}) {
455
518
  hasSpec,
456
519
  resolvedRuntimeCreationBaseUrl,
457
520
  storeLaunchAgent,
521
+ variant,
458
522
  ]);
459
523
  // ─── Create Agent ───────────────────────────────────────────────────
460
524
  const createAgent = useCallback(async (config) => {
@@ -487,7 +551,7 @@ export function useAgentRuntimes(options = {}) {
487
551
  ...config,
488
552
  name: config?.name ||
489
553
  agentConfig?.name ||
490
- (hasSpec && agentSpecId ? agentSpecId : runtime?.podName),
554
+ (hasSpec && agentSpecId ? agentSpecId : runtime?.runtimeName),
491
555
  };
492
556
  return await storeCreateAgent(mergedConfig);
493
557
  }
@@ -562,19 +626,32 @@ export function useAgentRuntimes(options = {}) {
562
626
  }, [hasSpec, autoCreateAgent, runtime, lifecycleStatus, createAgent]);
563
627
  // If runtime pod changes (e.g. after restore), force re-creation on new pod.
564
628
  useEffect(() => {
565
- const currentPod = runtime?.podName || null;
566
- if (!currentPod) {
567
- lastRuntimePodRef.current = null;
629
+ const currentRuntime = runtime?.runtimeName || null;
630
+ if (!currentRuntime) {
631
+ lastRuntimeRef.current = null;
568
632
  return;
569
633
  }
570
- if (lastRuntimePodRef.current && lastRuntimePodRef.current !== currentPod) {
634
+ if (lastRuntimeRef.current && lastRuntimeRef.current !== currentRuntime) {
571
635
  hasCreatedAgentRef.current = false;
572
636
  }
573
- lastRuntimePodRef.current = currentPod;
574
- }, [runtime?.podName]);
637
+ lastRuntimeRef.current = currentRuntime;
638
+ }, [runtime?.runtimeName]);
575
639
  // ─── Bootstrap: connect to existing runtime on initial load ─────────
576
640
  useEffect(() => {
577
- if (!hasSpec || runtime || autoStart || lifecycleStatus !== 'idle') {
641
+ /*
642
+ * Runs whether or not this host asked for an auto-start.
643
+ *
644
+ * `autoStart` used to short-circuit it, which made looking and launching
645
+ * mutually exclusive when they are meant to be sequential: a host that
646
+ * wanted a runtime always got a *new* one, and an agent for the same spec
647
+ * already running in the cloud was ignored and paid for twice. Switching
648
+ * examples showed it as an error — the launch had not landed yet, and
649
+ * nothing had thought to reuse the runtime that was right there.
650
+ *
651
+ * The auto-start below waits for this to finish, so the order is: look,
652
+ * then launch if there was nothing to find.
653
+ */
654
+ if (!hasSpec || runtime || lifecycleStatus !== 'idle') {
578
655
  return;
579
656
  }
580
657
  let cancelled = false;
@@ -603,11 +680,13 @@ export function useAgentRuntimes(options = {}) {
603
680
  const bTs = Number(b.started_at || 0);
604
681
  return bTs - aTs;
605
682
  })[0];
606
- if (cancelled || !latestRuntime?.pod_name || !latestRuntime?.ingress) {
683
+ if (cancelled ||
684
+ !latestRuntime?.runtime_name ||
685
+ !latestRuntime?.ingress) {
607
686
  return;
608
687
  }
609
688
  storeConnectAgent({
610
- podName: latestRuntime.pod_name,
689
+ runtimeName: latestRuntime.runtime_name,
611
690
  environmentName: latestRuntime.environment.name,
612
691
  jupyterBaseUrl: latestRuntime.ingress,
613
692
  });
@@ -637,6 +716,14 @@ export function useAgentRuntimes(options = {}) {
637
716
  catch (err) {
638
717
  console.warn('[useAgents] Failed to find existing runtime:', err);
639
718
  }
719
+ finally {
720
+ // Either way. A lookup that failed must not hold the launch back for
721
+ // ever — the point of looking is to avoid a second runtime, not to
722
+ // make the first one conditional on the listing endpoint.
723
+ if (!cancelled) {
724
+ setLookedForExisting(true);
725
+ }
726
+ }
640
727
  };
641
728
  bootstrap();
642
729
  return () => {
@@ -661,12 +748,23 @@ export function useAgentRuntimes(options = {}) {
661
748
  useEffect(() => {
662
749
  if (hasSpec &&
663
750
  autoStart &&
751
+ // Only once the lookup above has reported. Launching in parallel would
752
+ // race it: two runtimes for one spec, and whichever answered last wins.
753
+ lookedForExisting &&
754
+ !runtime &&
664
755
  !hasAutoStarted.current &&
665
756
  lifecycleStatus === 'idle') {
666
757
  hasAutoStarted.current = true;
667
758
  launchRuntime();
668
759
  }
669
- }, [hasSpec, autoStart, lifecycleStatus, launchRuntime]);
760
+ }, [
761
+ hasSpec,
762
+ autoStart,
763
+ lookedForExisting,
764
+ runtime,
765
+ lifecycleStatus,
766
+ launchRuntime,
767
+ ]);
670
768
  // ─── Sync store errors ─────────────────────────────────────────────
671
769
  useEffect(() => {
672
770
  if (storeError && hasSpec && lifecycleStatus !== 'error') {
@@ -675,14 +773,26 @@ export function useAgentRuntimes(options = {}) {
675
773
  }
676
774
  }, [storeError, hasSpec, lifecycleStatus]);
677
775
  // ─── Derived state ─────────────────────────────────────────────────
678
- const status = hasSpec
679
- ? lifecycleStatus
680
- : baseStatus;
681
- const error = hasSpec ? lifecycleError || storeError : storeError;
682
- const isReady = hasSpec
683
- ? (lifecycleStatus === 'ready' || lifecycleStatus === 'resumed') &&
684
- !!runtime?.isReady
685
- : baseStatus === 'ready' && !!runtime?.isReady;
776
+ // A browser agent is ready the moment the page is: there is no runtime to
777
+ // start, so a host that waits on `isReady` before showing its chat would
778
+ // otherwise wait forever for something that is never going to happen.
779
+ const inBrowser = runsInBrowser(variant);
780
+ const status = inBrowser
781
+ ? 'ready'
782
+ : hasSpec
783
+ ? lifecycleStatus
784
+ : baseStatus;
785
+ const error = inBrowser
786
+ ? null
787
+ : hasSpec
788
+ ? lifecycleError || storeError
789
+ : storeError;
790
+ const isReady = inBrowser
791
+ ? true
792
+ : hasSpec
793
+ ? (lifecycleStatus === 'ready' || lifecycleStatus === 'resumed') &&
794
+ !!runtime?.isReady
795
+ : baseStatus === 'ready' && !!runtime?.isReady;
686
796
  const endpoint = runtime?.endpoint || null;
687
797
  const serviceManager = runtime?.serviceManager || null;
688
798
  return {
@@ -702,7 +812,11 @@ export function useAgentRuntimes(options = {}) {
702
812
  // Status
703
813
  isReady,
704
814
  error,
705
- runtimeCreationTarget,
815
+ variant,
816
+ // Derived rather than passed through: a caller that gave neither option
817
+ // still gets a truthful legacy value, and one that gave a variant gets its
818
+ // nearest old name instead of `undefined`.
819
+ runtimeCreationTarget: legacyTargetOf(variant),
706
820
  runtimeCreationBaseUrl: resolvedRuntimeCreationBaseUrl,
707
821
  };
708
822
  }
@@ -744,7 +858,7 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
744
858
  }
745
859
  const query = params.toString();
746
860
  const resp = await requestDatalayer({
747
- url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes${query ? `?${query}` : ''}`,
861
+ url: `${runtimesUrl(configuration.runtimesUrl)}${query ? `?${query}` : ''}`,
748
862
  method: 'GET',
749
863
  });
750
864
  if (resp.success && resp.runtimes) {
@@ -755,7 +869,7 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
755
869
  // never reconnect a ServiceManager to a dead ingress (CORS spam).
756
870
  .filter(runtime => !isStaleDeletedRuntime(runtime));
757
871
  agentRuntimes.forEach((runtime) => {
758
- queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(runtime.pod_name), runtime);
872
+ queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(runtime.runtime_name), runtime);
759
873
  });
760
874
  return agentRuntimes;
761
875
  }
@@ -769,16 +883,19 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
769
883
  });
770
884
  }
771
885
  /**
772
- * Hook to fetch a single agent runtime by pod name.
886
+ * Hook to fetch a single agent runtime by name.
773
887
  */
774
- export function useAgentRuntimeByPodName(podName) {
888
+ export function useAgentRuntimeByName(runtimeName) {
775
889
  const { configuration } = useCoreStore();
776
890
  const { requestDatalayer } = useDatalayer({ notifyOnError: false });
891
+ // The query is disabled without a name, but the URL is built before the
892
+ // guard runs, so it needs one either way.
893
+ const name = runtimeName ?? '';
777
894
  return useQuery({
778
- queryKey: agentQueryKeys.agentRuntimes.detail(podName ?? ''),
895
+ queryKey: agentQueryKeys.agentRuntimes.detail(name),
779
896
  queryFn: async () => {
780
897
  const resp = await requestDatalayer({
781
- url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
898
+ url: runtimeUrl(configuration.runtimesUrl, name),
782
899
  method: 'GET',
783
900
  });
784
901
  if (resp.runtime) {
@@ -799,7 +916,7 @@ export function useAgentRuntimeByPodName(podName) {
799
916
  return 5000;
800
917
  },
801
918
  retry: false,
802
- enabled: !!podName,
919
+ enabled: !!runtimeName,
803
920
  });
804
921
  }
805
922
  /**
@@ -811,13 +928,11 @@ export function useCreateAgentRuntime() {
811
928
  const queryClient = useQueryClient();
812
929
  return useMutation({
813
930
  mutationFn: async (data) => {
814
- const normalizedVolumeUids = Array.isArray(data.volumeUids)
815
- ? data.volumeUids.map(uid => String(uid || '').trim()).filter(Boolean)
816
- : data.volumeUid
817
- ? [String(data.volumeUid).trim()]
818
- : [];
931
+ const contentAttachmentUids = (data.contentAttachmentUids ?? [])
932
+ .map(uid => String(uid || '').trim())
933
+ .filter(Boolean);
819
934
  return requestDatalayer({
820
- url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes`,
935
+ url: runtimesUrl(configuration.runtimesUrl),
821
936
  method: 'POST',
822
937
  body: {
823
938
  environment: {
@@ -836,9 +951,10 @@ export function useCreateAgentRuntime() {
836
951
  billing_entity_handle: data.billingEntityHandle || undefined,
837
952
  billing_source_organization_uid: data.billingSourceOrganizationUid || undefined,
838
953
  billing_source_organization_handle: data.billingSourceOrganizationHandle || undefined,
839
- mount_home_folder: data.mountHomeFolder ?? false,
840
- volume_uids: normalizedVolumeUids.length > 0 ? normalizedVolumeUids : undefined,
841
- volume_uid: normalizedVolumeUids[0] || data.volumeUid || undefined,
954
+ runtime_name: data.runtimeName || undefined,
955
+ content_attachment_uids: contentAttachmentUids.length
956
+ ? contentAttachmentUids
957
+ : undefined,
842
958
  },
843
959
  });
844
960
  },
@@ -846,8 +962,8 @@ export function useCreateAgentRuntime() {
846
962
  if (resp.success && resp.runtime) {
847
963
  const mapped = toAgentRuntimeData(resp.runtime);
848
964
  // A fresh runtime legitimately exists — drop any stale tombstone.
849
- clearRuntimePodDeleted(mapped.pod_name);
850
- queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(mapped.pod_name), mapped);
965
+ clearRuntimeDeleted(mapped.runtime_name);
966
+ queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(mapped.runtime_name), mapped);
851
967
  queryClient.invalidateQueries({
852
968
  queryKey: agentQueryKeys.agentRuntimes.all(),
853
969
  });
@@ -856,7 +972,11 @@ export function useCreateAgentRuntime() {
856
972
  });
857
973
  }
858
974
  /**
859
- * Hook to delete an agent runtime.
975
+ * Hook to stop an agent runtime — running or paused.
976
+ *
977
+ * One hook, because there is one endpoint: `DELETE /runtimes/{runtimeName}` reaps
978
+ * the pod when there is one and the checkpoint records when there is not, so a
979
+ * caller that wants the runtime gone does not have to know which it is.
860
980
  */
861
981
  export function useDeleteAgentRuntime() {
862
982
  const { configuration } = useCoreStore();
@@ -880,10 +1000,10 @@ export function useDeleteAgentRuntime() {
880
1000
  '').toLowerCase();
881
1001
  };
882
1002
  return useMutation({
883
- mutationFn: async (podName) => {
1003
+ mutationFn: async (runtimeName) => {
884
1004
  try {
885
1005
  return await requestDatalayer({
886
- url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
1006
+ url: runtimeUrl(configuration.runtimesUrl, runtimeName),
887
1007
  method: 'DELETE',
888
1008
  });
889
1009
  }
@@ -902,7 +1022,7 @@ export function useDeleteAgentRuntime() {
902
1022
  // the runtime detail endpoint still exists.
903
1023
  try {
904
1024
  await requestDatalayer({
905
- url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
1025
+ url: runtimeUrl(configuration.runtimesUrl, runtimeName),
906
1026
  method: 'GET',
907
1027
  });
908
1028
  // Runtime still exists: propagate original DELETE failure.
@@ -917,26 +1037,26 @@ export function useDeleteAgentRuntime() {
917
1037
  }
918
1038
  }
919
1039
  },
920
- onSuccess: (_data, podName) => {
1040
+ onSuccess: (_data, runtimeName) => {
921
1041
  // Tombstone the pod so refetches that still echo it from the control
922
1042
  // plane (deletion lag) do not re-add it to the caches below.
923
- markRuntimePodDeleted(podName);
1043
+ markRuntimeDeleted(runtimeName);
924
1044
  // Prune the pod from the runtimes store immediately so the remote service
925
1045
  // managers dispose right away and stop polling the now-dead pod ingress
926
1046
  // (otherwise `/api/kernels` requests keep firing until the next
927
- // `refreshRuntimePods()` poll tick, producing CORS errors).
928
- runtimesStore.getState().removeRuntimePod(podName);
1047
+ // `refreshRuntimes()` poll tick, producing CORS errors).
1048
+ runtimesStore.getState().removeRuntime(runtimeName);
929
1049
  queryClient.setQueriesData({ queryKey: agentQueryKeys.agentRuntimes.lists() }, (current) => {
930
1050
  if (!Array.isArray(current)) {
931
1051
  return current;
932
1052
  }
933
- return current.filter(runtime => runtime.pod_name !== podName);
1053
+ return current.filter(runtime => runtime.runtime_name !== runtimeName);
934
1054
  });
935
1055
  queryClient.cancelQueries({
936
- queryKey: agentQueryKeys.agentRuntimes.detail(podName),
1056
+ queryKey: agentQueryKeys.agentRuntimes.detail(runtimeName),
937
1057
  });
938
1058
  queryClient.removeQueries({
939
- queryKey: agentQueryKeys.agentRuntimes.detail(podName),
1059
+ queryKey: agentQueryKeys.agentRuntimes.detail(runtimeName),
940
1060
  });
941
1061
  queryClient.invalidateQueries({
942
1062
  queryKey: agentQueryKeys.agentRuntimes.lists(),
@@ -945,6 +1065,11 @@ export function useDeleteAgentRuntime() {
945
1065
  queryKey: agentQueryKeys.agentRuntimes.lists(),
946
1066
  type: 'active',
947
1067
  });
1068
+ // Stopping also removes any checkpoint records, so a paused agent does
1069
+ // not linger in the checkpoint views after it is gone.
1070
+ queryClient.invalidateQueries({
1071
+ queryKey: agentQueryKeys.checkpoints.all(),
1072
+ });
948
1073
  },
949
1074
  });
950
1075
  }
@@ -1033,15 +1158,15 @@ export function useAgentsRuntimes(scope, queryOptions) {
1033
1158
  const createRuntimeMutation = useCreateAgentRuntime();
1034
1159
  const deleteRuntimeMutation = useDeleteAgentRuntime();
1035
1160
  const refreshRuntimes = useRefreshAgentRuntimes();
1036
- const terminateRuntimeByPod = useCallback(async (podName, options) => {
1037
- const normalizedPodName = String(podName || '').trim();
1038
- if (!normalizedPodName) {
1161
+ const stopRuntimeByName = useCallback(async (runtimeName, options) => {
1162
+ const normalizedRuntimeName = String(runtimeName || '').trim();
1163
+ if (!normalizedRuntimeName) {
1039
1164
  return;
1040
1165
  }
1041
- if (options?.beforeTerminate) {
1042
- await options.beforeTerminate();
1166
+ if (options?.beforeStop) {
1167
+ await options.beforeStop();
1043
1168
  }
1044
- return deleteRuntimeMutation.mutateAsync(normalizedPodName);
1169
+ return deleteRuntimeMutation.mutateAsync(normalizedRuntimeName);
1045
1170
  }, [deleteRuntimeMutation]);
1046
1171
  return useMemo(() => ({
1047
1172
  runtimes: runtimesQuery.data ?? EMPTY_RUNTIMES,
@@ -1050,8 +1175,7 @@ export function useAgentsRuntimes(scope, queryOptions) {
1050
1175
  runtimesError: runtimesQuery.error,
1051
1176
  refetchRuntimes: () => runtimesQuery.refetch(),
1052
1177
  refreshRuntimes,
1053
- terminateRuntimeByPod,
1054
- deleteRuntimeByPod: async (podName) => terminateRuntimeByPod(podName),
1178
+ stopRuntimeByName,
1055
1179
  createRuntime: async (data) => createRuntimeMutation.mutateAsync(data),
1056
1180
  }), [
1057
1181
  runtimesQuery.data,
@@ -1060,7 +1184,7 @@ export function useAgentsRuntimes(scope, queryOptions) {
1060
1184
  runtimesQuery.error,
1061
1185
  runtimesQuery.refetch,
1062
1186
  refreshRuntimes,
1063
- terminateRuntimeByPod,
1187
+ stopRuntimeByName,
1064
1188
  createRuntimeMutation,
1065
1189
  deleteRuntimeMutation,
1066
1190
  ]);
@@ -11,18 +11,46 @@
11
11
  */
12
12
  import { create } from 'zustand';
13
13
  import { listAgentspecs } from '../specs';
14
+ /** Whether two agent lists name the same agents, in the same state. */
15
+ const sameAgents = (before, after) => before.length === after.length &&
16
+ before.every((agent, index) => {
17
+ const other = after[index];
18
+ return (agent === other ||
19
+ (agent.id === other.id &&
20
+ agent.runtime_name === other.runtime_name &&
21
+ agent.status === other.status &&
22
+ agent.agentSpec === other.agentSpec));
23
+ });
14
24
  export const useAgentCatalogStore = create()(set => ({
15
25
  agentspecs: listAgentspecs(),
16
26
  runningAgents: [],
17
27
  refreshSpecs: () => set({ agentspecs: listAgentspecs() }),
18
- setRunningAgents: agents => set(state => ({
19
- runningAgents: agents.map(agent => {
28
+ /*
29
+ * The same agents twice is not a change.
30
+ *
31
+ * This is a global store, and the caller is a layout that recomputes its
32
+ * list whenever the runtimes poll — so `agents` is a fresh array many times
33
+ * a minute even when nothing about the agents differs. Storing it
34
+ * unconditionally gave every consumer a new identity each time, which is a
35
+ * re-render each time for a list that has not moved; and a consumer whose
36
+ * own effect writes back closes the circle into a render loop.
37
+ *
38
+ * So the previous array is kept when the same agents are still there, in
39
+ * the same order, with the same status. Comparing by that triple rather
40
+ * than deeply because it is what a reader of this list acts on, and what
41
+ * the poll actually changes.
42
+ */
43
+ setRunningAgents: agents => set(state => {
44
+ const resolved = agents.map(agent => {
20
45
  if (agent.agentSpec)
21
46
  return agent;
22
47
  if (!agent.agent_spec_id)
23
48
  return agent;
24
49
  const spec = state.agentspecs.find(s => s.id === agent.agent_spec_id);
25
50
  return spec ? { ...agent, agentSpec: spec } : agent;
26
- }),
27
- })),
51
+ });
52
+ return sameAgents(state.runningAgents, resolved)
53
+ ? {}
54
+ : { runningAgents: resolved };
55
+ }),
28
56
  }));