@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
@@ -5,25 +5,626 @@
5
5
  /**
6
6
  * Computing environments API functions for the Datalayer platform.
7
7
  *
8
- * Provides functions for managing computing environment configurations.
8
+ * `GET /environments` lists the platform's environments and the user
9
+ * environments the caller may use. The registry beside it (PLAN_ENV.md,
10
+ * section 9, served by Runtimes since E1-01) creates environments, their
11
+ * versions, builds and artifacts, and serves build logs. The specification a
12
+ * version carries is typed from the JSON Schema `code-sandboxes` exports
13
+ * (D-14), in `models/environments.generated.ts`.
14
+ *
15
+ * A conditional write names the record it replaces with `If-Match`, the
16
+ * `etag` every record carries. A keyed create is replayed with the same
17
+ * `Idempotency-Key`. Every call may carry the caller's `X-Correlation-Id`,
18
+ * which a refusal answers in its section 10 body: `asEnvironmentsError` reads
19
+ * that body from the error a call rejects with.
9
20
  *
10
21
  * @module api/runtimes/environments
11
22
  */
12
23
  import { requestDatalayerAPI } from '@datalayer/core/lib/api/DatalayerApi';
13
24
  import { API_BASE_PATHS, DEFAULT_SERVICE_URLS, } from '@datalayer/core/lib/api/constants';
14
- import { validateToken } from '@datalayer/core/lib/api/utils/validation';
25
+ import { validateRequiredString, validateToken, } from '@datalayer/core/lib/api/utils/validation';
26
+ const registryUrl = (baseUrl, path, query = {}) => {
27
+ const params = new URLSearchParams();
28
+ for (const [name, value] of Object.entries(query)) {
29
+ if (value !== undefined && value !== '') {
30
+ params.set(name, String(value));
31
+ }
32
+ }
33
+ const search = params.toString();
34
+ return `${baseUrl}${API_BASE_PATHS.RUNTIMES}${path}${search ? `?${search}` : ''}`;
35
+ };
36
+ const segment = (value, label) => {
37
+ validateRequiredString(value, label);
38
+ return encodeURIComponent(value);
39
+ };
40
+ const send = (token, method, url, options, body) => {
41
+ const headers = {};
42
+ if (options.ifMatch) {
43
+ headers['If-Match'] = options.ifMatch;
44
+ }
45
+ if (options.idempotencyKey) {
46
+ headers['Idempotency-Key'] = options.idempotencyKey;
47
+ }
48
+ if (options.correlationId) {
49
+ headers['X-Correlation-Id'] = options.correlationId;
50
+ }
51
+ return requestDatalayerAPI({
52
+ url,
53
+ method,
54
+ token,
55
+ headers,
56
+ signal: options.signal,
57
+ ...(body === undefined ? {} : { body }),
58
+ });
59
+ };
60
+ /**
61
+ * The section 10 body of a refusal, from the error a call rejected with.
62
+ *
63
+ * @param error - What an environments call rejected with
64
+ * @returns The body, with its `code` and `correlationId`; `undefined` when the
65
+ * error is not a refusal that carries one
66
+ */
67
+ export const asEnvironmentsError = async (error) => {
68
+ const response = error
69
+ ?.response;
70
+ if (typeof response?.json !== 'function') {
71
+ return undefined;
72
+ }
73
+ try {
74
+ const body = await response.json();
75
+ return body &&
76
+ typeof body === 'object' &&
77
+ typeof body.code === 'string'
78
+ ? body
79
+ : undefined;
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ };
15
85
  /**
16
- * List all available computing environments.
86
+ * List the environments the caller may use: the platform's, then its own and
87
+ * its organizations'.
17
88
  * @param token - Authentication token
18
89
  * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
19
- * @returns Promise resolving to list of available environments
90
+ * @param query - Filters, and the cursor of the page to read
91
+ * @param options - Correlation id and abort signal
92
+ * @returns Promise resolving to one page of environments
20
93
  * @throws {Error} If authentication token is missing or invalid
21
94
  */
22
- export const listEnvironments = async (token, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
95
+ export const listEnvironments = async (token, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES, query = {}, options = {}) => {
23
96
  validateToken(token);
24
- return requestDatalayerAPI({
25
- url: `${baseUrl}${API_BASE_PATHS.RUNTIMES}/environments`,
26
- method: 'GET',
27
- token,
97
+ return send(token, 'GET', registryUrl(baseUrl, '/environments', { ...query }), options);
98
+ };
99
+ /**
100
+ * Create a user environment, for the caller's account or an organization it owns.
101
+ * @param token - Authentication token
102
+ * @param request - Its name, and optionally title, description, visibility and owner
103
+ * @param options - Idempotency key, correlation id and abort signal
104
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
105
+ * @returns Promise resolving to the environment created, or the one a replayed key created
106
+ */
107
+ export const createEnvironment = async (token, request, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
108
+ validateToken(token);
109
+ return send(token, 'POST', registryUrl(baseUrl, '/environments'), options, request);
110
+ };
111
+ /**
112
+ * Get a user environment.
113
+ * @param token - Authentication token
114
+ * @param environmentUid - The environment's uid
115
+ * @param options - Correlation id and abort signal
116
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
117
+ * @returns Promise resolving to the environment
118
+ */
119
+ export const getEnvironment = async (token, environmentUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
120
+ validateToken(token);
121
+ return send(token, 'GET', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}`), options);
122
+ };
123
+ /**
124
+ * Change an environment's title, description or visibility.
125
+ * @param token - Authentication token
126
+ * @param environmentUid - The environment's uid
127
+ * @param changes - The fields to change
128
+ * @param ifMatch - The `etag` of the environment read; a stale one is refused with 412
129
+ * @param options - Correlation id and abort signal
130
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
131
+ * @returns Promise resolving to the environment changed
132
+ */
133
+ export const updateEnvironment = async (token, environmentUid, changes, ifMatch, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
134
+ validateToken(token);
135
+ validateRequiredString(ifMatch, 'If-Match');
136
+ return send(token, 'PATCH', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}`), { ...options, ifMatch }, changes);
137
+ };
138
+ /**
139
+ * Delete an environment, softly. Refused with 409 `DL_ENV_CONFLICT` while a
140
+ * version is promoted, an artifact is referenced, or a runtime still runs one
141
+ * of its artifacts, whoever launched it: the refusal's `detail` is an
142
+ * `IEnvironmentDeletionConflict`, whose `runtimes` name each one (E1-15).
143
+ * Refused with 503 `DL_ENV_UNAVAILABLE` when the service cannot read which
144
+ * runtimes run it; nothing is deleted then either.
145
+ * @param token - Authentication token
146
+ * @param environmentUid - The environment's uid
147
+ * @param options - If-Match, correlation id and abort signal
148
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
149
+ * @returns Promise resolving once the environment is deleted
150
+ */
151
+ export const deleteEnvironment = async (token, environmentUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
152
+ validateToken(token);
153
+ await send(token, 'DELETE', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}`), options);
154
+ };
155
+ /**
156
+ * Archive an environment: kept and readable, no longer offered for launches.
157
+ * @param token - Authentication token
158
+ * @param environmentUid - The environment's uid
159
+ * @param options - If-Match, correlation id and abort signal
160
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
161
+ * @returns Promise resolving to the environment archived
162
+ */
163
+ export const archiveEnvironment = async (token, environmentUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
164
+ validateToken(token);
165
+ return send(token, 'POST', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}/archive`), options);
166
+ };
167
+ /**
168
+ * Promote a version, or none with `versionUid: null`; a rollback is the same
169
+ * call with an older version, and builds nothing (E1-15).
170
+ *
171
+ * A partially ready version is promoted only when
172
+ * `acknowledgeUnavailableVariants` names exactly its unavailable variants:
173
+ * otherwise 409 `DL_ENV_CONFLICT`, whose `detail` is an
174
+ * `IEnvironmentPromotionConflict` naming them. The promotion is recorded on
175
+ * the version, as its `promotion`. Asking again for the version already
176
+ * promoted writes nothing and answers the environment, even with a stale
177
+ * `If-Match`; asking for another with a stale one is refused with 412.
178
+ * @param token - Authentication token
179
+ * @param environmentUid - The environment's uid
180
+ * @param request - `{versionUid, acknowledgeUnavailableVariants}`
181
+ * @param ifMatch - The `etag` of the environment read; a stale one is refused with 412
182
+ * @param options - Correlation id and abort signal
183
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
184
+ * @returns Promise resolving to the environment, naming its promoted version
185
+ */
186
+ export const promoteEnvironmentVersion = async (token, environmentUid, request, ifMatch, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
187
+ validateToken(token);
188
+ validateRequiredString(ifMatch, 'If-Match');
189
+ return send(token, 'PUT', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}/promoted-version`), { ...options, ifMatch }, request);
190
+ };
191
+ /**
192
+ * Create a draft version of an environment from a specification.
193
+ * @param token - Authentication token
194
+ * @param environmentUid - The environment's uid
195
+ * @param request - `{spec, label}`
196
+ * @param options - Idempotency key, correlation id and abort signal
197
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
198
+ * @returns Promise resolving to the draft, or the one a replayed key created
199
+ */
200
+ export const createEnvironmentVersion = async (token, environmentUid, request, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
201
+ validateToken(token);
202
+ return send(token, 'POST', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}/versions`), options, request);
203
+ };
204
+ /**
205
+ * List an environment's versions, newest first.
206
+ * @param token - Authentication token
207
+ * @param environmentUid - The environment's uid
208
+ * @param page - The cursor of the page to read, and its size
209
+ * @param options - Correlation id and abort signal
210
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
211
+ * @returns Promise resolving to one page of versions
212
+ */
213
+ export const listEnvironmentVersions = async (token, environmentUid, page = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
214
+ validateToken(token);
215
+ return send(token, 'GET', registryUrl(baseUrl, `/environments/${segment(environmentUid, 'Environment UID')}/versions`, { ...page }), options);
216
+ };
217
+ /**
218
+ * Get a version, with its specification and its status.
219
+ * @param token - Authentication token
220
+ * @param versionUid - The version's uid
221
+ * @param options - Correlation id and abort signal
222
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
223
+ * @returns Promise resolving to the version
224
+ */
225
+ export const getEnvironmentVersion = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
226
+ validateToken(token);
227
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}`), options);
228
+ };
229
+ /**
230
+ * Edit a draft's specification or label.
231
+ * @param token - Authentication token
232
+ * @param versionUid - The version's uid
233
+ * @param changes - `{spec, label}`, either or both
234
+ * @param ifMatch - The `etag` of the version read; a stale one is refused with 412
235
+ * @param options - Correlation id and abort signal
236
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
237
+ * @returns Promise resolving to the draft changed
238
+ */
239
+ export const updateEnvironmentVersion = async (token, versionUid, changes, ifMatch, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
240
+ validateToken(token);
241
+ validateRequiredString(ifMatch, 'If-Match');
242
+ return send(token, 'PATCH', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}`), { ...options, ifMatch }, changes);
243
+ };
244
+ /**
245
+ * Validate a version: a dry run answering a capability report per variant.
246
+ * @param token - Authentication token
247
+ * @param versionUid - The version's uid
248
+ * @param request - `{variants}`: the version's own variants when absent
249
+ * @param options - Correlation id and abort signal
250
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
251
+ * @returns Promise resolving to the report
252
+ */
253
+ export const validateEnvironmentVersion = async (token, versionUid, request = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
254
+ validateToken(token);
255
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/validate`), options, request);
256
+ };
257
+ /**
258
+ * Resolve a version into its lock. The service answers 501 until PLAN_ENV.md
259
+ * E1-04 builds the resolver, whose answer this resolves to.
260
+ * @param token - Authentication token
261
+ * @param versionUid - The version's uid
262
+ * @param options - Correlation id and abort signal
263
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
264
+ * @returns Promise resolving to the service's answer
265
+ */
266
+ export const resolveEnvironmentVersion = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
267
+ validateToken(token);
268
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/resolve`), options);
269
+ };
270
+ /**
271
+ * Queue a build per variant and region.
272
+ * @param token - Authentication token
273
+ * @param versionUid - The version's uid
274
+ * @param request - `{variants, requiredVariants, regions, force}`
275
+ * @param options - Idempotency key, correlation id and abort signal
276
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
277
+ * @returns Promise resolving to the builds queued, or those a replayed key queued
278
+ */
279
+ export const createEnvironmentBuilds = async (token, versionUid, request = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
280
+ validateToken(token);
281
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/builds`), options, request);
282
+ };
283
+ /**
284
+ * List a version's builds, newest first.
285
+ * @param token - Authentication token
286
+ * @param versionUid - The version's uid
287
+ * @param page - The cursor of the page to read, and its size
288
+ * @param options - Correlation id and abort signal
289
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
290
+ * @returns Promise resolving to one page of builds
291
+ */
292
+ export const listEnvironmentBuilds = async (token, versionUid, page = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
293
+ validateToken(token);
294
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/builds`, { ...page }), options);
295
+ };
296
+ /**
297
+ * List a version's artifacts, one per variant and region.
298
+ * @param token - Authentication token
299
+ * @param versionUid - The version's uid
300
+ * @param page - The cursor of the page to read, and its size
301
+ * @param options - Correlation id and abort signal
302
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
303
+ * @returns Promise resolving to one page of artifacts
304
+ */
305
+ export const listEnvironmentArtifacts = async (token, versionUid, page = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
306
+ validateToken(token);
307
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/artifacts`, { ...page }), options);
308
+ };
309
+ /**
310
+ * Launch a trial sandbox of a ready or partially ready version, before it is
311
+ * promoted (E1-14).
312
+ *
313
+ * Only an owner tries a version. The runtime is launched as `POST /runtimes`
314
+ * launches one, with the version pinned, a given name saying which version it
315
+ * tries, and a credits limit no higher than the service's cap. A draft, a
316
+ * failed or a deprecated version is refused with 409 `DL_ENV_CONFLICT`, and a
317
+ * version with no artifact on the plane with 422 `DL_ENV_ARTIFACT_MISSING`.
318
+ * @param token - Authentication token
319
+ * @param versionUid - The version's uid
320
+ * @param request - `{creditsLimit}`, lowered to the service's cap when higher
321
+ * @param options - Correlation id and abort signal
322
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
323
+ * @returns Promise resolving to the runtime launched, its environment naming the version and artifact
324
+ */
325
+ export const trialEnvironmentVersion = async (token, versionUid, request = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
326
+ validateToken(token);
327
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/trial`), options, request);
328
+ };
329
+ /**
330
+ * Publish a promoted version to the public Library (D-12, E2-15).
331
+ *
332
+ * Only an owner publishes (D-19), and only a version whose every input is
333
+ * public — no build secret, only public indexes — and whose Datalayer
334
+ * artifact passed its scan: otherwise the refusal is `DL_ENV_PUBLICATION_BLOCKED`.
335
+ * The snapshot frozen is immutable, so publishing the same version again reads
336
+ * it back and a withdrawal followed by a re-publish restores exactly what was
337
+ * public.
338
+ * @param token - Authentication token
339
+ * @param versionUid - The version's uid
340
+ * @param options - Optional If-Match, correlation id and abort signal
341
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
342
+ * @returns Promise resolving to the publication, with its immutable snapshot
343
+ */
344
+ export const publishEnvironmentVersion = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
345
+ validateToken(token);
346
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/publish`), options);
347
+ };
348
+ /**
349
+ * Withdraw a version from the public Library; running sandboxes keep it (D-12,
350
+ * E2-15). The snapshot is kept, so a later publish restores exactly what was
351
+ * public.
352
+ * @param token - Authentication token
353
+ * @param versionUid - The version's uid
354
+ * @param options - Correlation id and abort signal
355
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
356
+ * @returns Promise resolving to the withdrawn publication
357
+ */
358
+ export const unpublishEnvironmentVersion = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
359
+ validateToken(token);
360
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/unpublish`), options);
361
+ };
362
+ /**
363
+ * A version's public publication and its immutable snapshot (D-12, E2-15), or
364
+ * a 404 when it is not public. The publication is world-visible, so any
365
+ * signed-in caller reads it; a version never published, or one withdrawn,
366
+ * reads 404.
367
+ * @param token - Authentication token
368
+ * @param versionUid - The version's uid
369
+ * @param options - Correlation id and abort signal
370
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
371
+ * @returns Promise resolving to the publication, with its immutable snapshot
372
+ */
373
+ export const getEnvironmentPublication = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
374
+ validateToken(token);
375
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/publication`), options);
376
+ };
377
+ /**
378
+ * Fork a published version into the caller's own private environment (D-12,
379
+ * E2-15).
380
+ *
381
+ * Any signed-in caller forks. The fork is made from the published version's
382
+ * exact spec and reuses the published Datalayer artifact — the same immutable
383
+ * reference — when its inputs are unchanged, so it launches without a rebuild;
384
+ * a fork under a new `name` re-specialises the spec and builds fresh.
385
+ * @param token - Authentication token
386
+ * @param versionUid - The published version's uid
387
+ * @param request - `{name}`: the source environment's name by default
388
+ * @param options - Correlation id and abort signal
389
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
390
+ * @returns Promise resolving to the fork: its environment, version and reused artifacts
391
+ */
392
+ export const forkEnvironmentVersion = async (token, versionUid, request = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
393
+ validateToken(token);
394
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/fork`), options, request);
395
+ };
396
+ /**
397
+ * Deprecate a version: no new launches, and running sandboxes keep it.
398
+ * @param token - Authentication token
399
+ * @param versionUid - The version's uid
400
+ * @param options - If-Match, correlation id and abort signal
401
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
402
+ * @returns Promise resolving to the version deprecated
403
+ */
404
+ export const deprecateEnvironmentVersion = async (token, versionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
405
+ validateToken(token);
406
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-versions/${segment(versionUid, 'Version UID')}/deprecate`), options);
407
+ };
408
+ /**
409
+ * Get a build.
410
+ * @param token - Authentication token
411
+ * @param buildUid - The build's uid
412
+ * @param options - Correlation id and abort signal
413
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
414
+ * @returns Promise resolving to the build
415
+ */
416
+ export const getEnvironmentBuild = async (token, buildUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
417
+ validateToken(token);
418
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-builds/${segment(buildUid, 'Build UID')}`), options);
419
+ };
420
+ /**
421
+ * Read a build's stored log chunks after a cursor: the polling side of D-15.
422
+ * @param token - Authentication token
423
+ * @param buildUid - The build's uid
424
+ * @param page - `cursor`, the sequence of the last chunk read, and the page size
425
+ * @param options - Correlation id and abort signal
426
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
427
+ * @returns Promise resolving to the chunks, the next cursor, and whether the log is complete
428
+ */
429
+ export const getEnvironmentBuildLogs = async (token, buildUid, page = {}, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
430
+ validateToken(token);
431
+ return send(token, 'GET', registryUrl(baseUrl, `/environment-builds/${segment(buildUid, 'Build UID')}/logs`, { ...page }), options);
432
+ };
433
+ /**
434
+ * Cancel a build that has not ended.
435
+ * @param token - Authentication token
436
+ * @param buildUid - The build's uid
437
+ * @param options - If-Match, correlation id and abort signal
438
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
439
+ * @returns Promise resolving to the build cancelled
440
+ */
441
+ export const cancelEnvironmentBuild = async (token, buildUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
442
+ validateToken(token);
443
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-builds/${segment(buildUid, 'Build UID')}/cancel`), options);
444
+ };
445
+ /**
446
+ * Queue the next attempt of a cancelled build, or of one that failed under a
447
+ * retryable code, once however often it is asked for.
448
+ *
449
+ * A retryable failure — a timeout, a quota, a missing artifact, an unmapped
450
+ * provider failure — reopens its version, `failed` back to `building`. Any
451
+ * other failure is refused with `DL_ENV_CONFLICT` naming the code: a new
452
+ * version is what changes it, not another attempt.
453
+ * @param token - Authentication token
454
+ * @param buildUid - The build's uid
455
+ * @param options - Correlation id and abort signal
456
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
457
+ * @returns Promise resolving to the attempt queued
458
+ */
459
+ export const retryEnvironmentBuild = async (token, buildUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
460
+ validateToken(token);
461
+ return send(token, 'POST', registryUrl(baseUrl, `/environment-builds/${segment(buildUid, 'Build UID')}/retry`), options);
462
+ };
463
+ // -- Following a build's log (D-15) --------------------------------------------
464
+ /** The event the log stream ends with, once the build is terminal and every chunk is sent. */
465
+ export const BUILD_LOG_END_EVENT = 'end';
466
+ /** The service refused to stream the log; asking again would be refused again. */
467
+ export class BuildLogSubscriptionRefused extends Error {
468
+ status;
469
+ detail;
470
+ constructor(status, detail) {
471
+ super(`Following the build log was refused with ${status}: ${detail}`);
472
+ this.status = status;
473
+ this.detail = detail;
474
+ this.name = 'BuildLogSubscriptionRefused';
475
+ }
476
+ }
477
+ /** The complete events of what has arrived, and the start of one still arriving. */
478
+ const readServerSentEvents = (buffer) => {
479
+ const blocks = buffer.replace(/\r\n/g, '\n').split('\n\n');
480
+ const rest = blocks.pop() ?? '';
481
+ const events = blocks
482
+ .filter(block => block.trim() !== '')
483
+ .map(block => {
484
+ const framed = { event: 'message', data: '' };
485
+ const data = [];
486
+ for (const line of block.split('\n')) {
487
+ if (line.startsWith(':')) {
488
+ continue;
489
+ }
490
+ const colon = line.indexOf(':');
491
+ const field = colon === -1 ? line : line.slice(0, colon);
492
+ const value = colon === -1 ? '' : line.slice(colon + 1).replace(/^ /, '');
493
+ if (field === 'id') {
494
+ framed.id = value;
495
+ }
496
+ else if (field === 'event') {
497
+ framed.event = value;
498
+ }
499
+ else if (field === 'data') {
500
+ data.push(value);
501
+ }
502
+ }
503
+ framed.data = data.join('\n');
504
+ return framed;
28
505
  });
506
+ return { events, rest };
507
+ };
508
+ const pause = (milliseconds, signal) => new Promise(resolve => {
509
+ if (milliseconds <= 0 || signal?.aborted) {
510
+ resolve();
511
+ return;
512
+ }
513
+ const timer = setTimeout(resolve, milliseconds);
514
+ signal?.addEventListener('abort', () => {
515
+ clearTimeout(timer);
516
+ resolve();
517
+ }, { once: true });
518
+ });
519
+ /**
520
+ * Follow a build's log until the build is terminal (D-15).
521
+ *
522
+ * Modelled on core's `subscribeToExecution`: the stream is Server-Sent Events
523
+ * read with `fetch`, which unlike `EventSource` carries the bearer token. Each
524
+ * event's id is the sequence of its chunk. A connection that drops, before the
525
+ * service answered or in the middle of the stream, is resumed with the last id
526
+ * received as `Last-Event-ID`, so no chunk is repeated; after `maxReconnects`
527
+ * drops in a row with no chunk between them, `done` rejects. The stream ends
528
+ * with `end` once the build is terminal and every chunk is sent (E1-16). A
529
+ * refusal is not retried: `done` rejects with `BuildLogSubscriptionRefused`,
530
+ * such as the 404 a caller who may not read the build is answered before the
531
+ * stream opens. An abort ends the subscription quietly.
532
+ *
533
+ * @param token - Authentication token
534
+ * @param buildUid - The build's uid
535
+ * @param subscribe - The callbacks, the resume point and the reconnect bounds
536
+ * @param baseUrl - Base URL for the API (defaults to production Runtimes URL)
537
+ * @returns The subscription
538
+ */
539
+ export const subscribeToBuildLogs = (token, buildUid, subscribe, baseUrl = DEFAULT_SERVICE_URLS.RUNTIMES) => {
540
+ validateToken(token);
541
+ const url = registryUrl(baseUrl, `/environment-builds/${segment(buildUid, 'Build UID')}/logs`, { follow: true });
542
+ let lastEventId = subscribe.lastEventId;
543
+ const fetcher = subscribe.fetch ??
544
+ ((address, init) => fetch(address, init));
545
+ const maxReconnects = subscribe.maxReconnects ?? 5;
546
+ const run = async () => {
547
+ let dropsInARow = 0;
548
+ for (;;) {
549
+ const headers = {
550
+ Accept: 'text/event-stream',
551
+ Authorization: `Bearer ${token}`,
552
+ };
553
+ if (lastEventId) {
554
+ headers['Last-Event-ID'] = lastEventId;
555
+ }
556
+ let response;
557
+ try {
558
+ response = await fetcher(url, {
559
+ headers,
560
+ signal: subscribe.signal,
561
+ credentials: 'include',
562
+ });
563
+ }
564
+ catch {
565
+ if (subscribe.signal?.aborted) {
566
+ return;
567
+ }
568
+ }
569
+ if (response && !response.ok) {
570
+ throw new BuildLogSubscriptionRefused(response.status, await response.text());
571
+ }
572
+ let ended = false;
573
+ if (response?.body) {
574
+ const reader = response.body.getReader();
575
+ const decoder = new TextDecoder();
576
+ let buffer = '';
577
+ while (!ended) {
578
+ let read;
579
+ try {
580
+ read = await reader.read();
581
+ }
582
+ catch {
583
+ if (subscribe.signal?.aborted) {
584
+ return;
585
+ }
586
+ break;
587
+ }
588
+ if (read.done) {
589
+ break;
590
+ }
591
+ buffer += decoder.decode(read.value, { stream: true });
592
+ const { events, rest } = readServerSentEvents(buffer);
593
+ buffer = rest;
594
+ for (const framed of events) {
595
+ if (framed.event === BUILD_LOG_END_EVENT) {
596
+ ended = true;
597
+ break;
598
+ }
599
+ if (framed.data === '') {
600
+ continue;
601
+ }
602
+ const chunk = JSON.parse(framed.data);
603
+ if (typeof chunk?.sequence !== 'number') {
604
+ continue;
605
+ }
606
+ lastEventId = framed.id ? framed.id : String(chunk.sequence);
607
+ subscribe.onChunk(chunk, lastEventId);
608
+ dropsInARow = 0;
609
+ }
610
+ }
611
+ if (ended) {
612
+ await reader.cancel().catch(() => undefined);
613
+ }
614
+ }
615
+ if (ended) {
616
+ subscribe.onEnd?.();
617
+ return;
618
+ }
619
+ if (subscribe.signal?.aborted) {
620
+ return;
621
+ }
622
+ dropsInARow += 1;
623
+ if (dropsInARow > maxReconnects) {
624
+ throw new Error(`The log of build '${buildUid}' dropped ${dropsInARow} times with no chunk in between.`);
625
+ }
626
+ await pause(subscribe.reconnectDelayMs ?? 1000, subscribe.signal);
627
+ }
628
+ };
629
+ return { done: run(), lastEventId: () => lastEventId };
29
630
  };