@datalayer/agent-runtimes 1.0.28 → 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 (776) 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 +18 -5
  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 +76 -0
  163. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +81 -0
  164. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +12 -0
  165. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +132 -25
  166. package/lib/components/code-sandboxes/CodeSandboxNames.js +75 -29
  167. package/lib/components/code-sandboxes/CodeSandboxPicker.d.ts +14 -1
  168. package/lib/components/code-sandboxes/CodeSandboxPicker.js +226 -45
  169. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  170. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  171. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  172. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  173. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  174. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +16 -1
  175. package/lib/components/code-sandboxes/CodeSandboxUtils.js +69 -12
  176. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  177. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  178. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  179. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  180. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
  181. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
  182. package/lib/components/code-sandboxes/codeSandboxProviders.d.ts +29 -0
  183. package/lib/components/code-sandboxes/codeSandboxProviders.js +90 -0
  184. package/lib/components/code-sandboxes/index.d.ts +3 -0
  185. package/lib/components/code-sandboxes/index.js +3 -0
  186. package/lib/components/context/SpaceSelect.d.ts +1 -1
  187. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  188. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  189. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  190. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  191. package/lib/components/progress/CreditsIndicator.js +0 -4
  192. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  193. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  194. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  195. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  196. package/lib/components/snippets/SnippetDialog.js +0 -4
  197. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  198. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  199. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  200. package/lib/context/ContextDistribution.d.ts +1 -1
  201. package/lib/context/ContextInspector.d.ts +2 -1
  202. package/lib/context/ContextPanel.d.ts +1 -1
  203. package/lib/context/ContextUsage.d.ts +1 -1
  204. package/lib/context/CostTracker.d.ts +1 -1
  205. package/lib/context/CostUsageChart.d.ts +1 -1
  206. package/lib/context/CostUsageChart.js +4 -4
  207. package/lib/context/MessageHistory.d.ts +3 -2
  208. package/lib/context/TokenUsageChart.d.ts +1 -1
  209. package/lib/context/TokenUsageChart.js +4 -4
  210. package/lib/examples/A2UiAgentExample.js +15 -6
  211. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  212. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  213. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  214. package/lib/examples/A2UiContactCardExample.js +23 -170
  215. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  216. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  217. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  218. package/lib/examples/A2UiRestaurantExample.js +24 -179
  219. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  220. package/lib/examples/A2UiViewerExample.js +24 -378
  221. package/lib/examples/AgUiAgenticExample.js +2 -4
  222. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  223. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  224. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  225. package/lib/examples/AgUiSharedStateExample.js +2 -4
  226. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  227. package/lib/examples/AgentA2AExample.d.ts +17 -0
  228. package/lib/examples/AgentA2AExample.js +56 -0
  229. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  230. package/lib/examples/AgentCheckpointsExample.js +72 -54
  231. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  232. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  233. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  234. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  235. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  236. package/lib/examples/AgentCodemodeExample.js +60 -125
  237. package/lib/examples/AgentCompactionExample.js +19 -135
  238. package/lib/examples/AgentEvalsExample.js +34 -66
  239. package/lib/examples/AgentGuardrailsExample.js +64 -112
  240. package/lib/examples/AgentHooksExample.d.ts +11 -0
  241. package/lib/examples/AgentHooksExample.js +30 -67
  242. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  243. package/lib/examples/AgentLoopExample.d.ts +4 -2
  244. package/lib/examples/AgentLoopExample.js +45 -93
  245. package/lib/examples/AgentMCPExample.js +30 -79
  246. package/lib/examples/AgentMemoryExample.js +21 -64
  247. package/lib/examples/AgentMonitoringExample.js +33 -94
  248. package/lib/examples/AgentNotificationsExample.js +56 -95
  249. package/lib/examples/AgentOtelExample.js +35 -88
  250. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  251. package/lib/examples/AgentOutputsExample.js +16 -137
  252. package/lib/examples/AgentParametersExample.js +7 -17
  253. package/lib/examples/AgentSkillsExample.js +40 -154
  254. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  255. package/lib/examples/AgentSubagentsExample.js +80 -191
  256. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  257. package/lib/examples/AgentTriggersExample.js +43 -59
  258. package/lib/examples/AgentspecsExample.js +7 -7
  259. package/lib/examples/CellExample.d.ts +1 -1
  260. package/lib/examples/ChatExample.d.ts +12 -5
  261. package/lib/examples/ChatExample.js +38 -13
  262. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  263. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  264. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  265. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  266. package/lib/examples/DecksAgent.d.ts +21 -0
  267. package/lib/examples/DecksAgent.js +23 -0
  268. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  269. package/lib/examples/DocumentPageAgent.js +15 -0
  270. package/lib/examples/Lexical2Example.d.ts +2 -2
  271. package/lib/examples/Lexical2Example.js +17 -38
  272. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  273. package/lib/examples/LexicalAgentExample.js +29 -102
  274. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  275. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  276. package/lib/examples/LoopShellExample.d.ts +38 -0
  277. package/lib/examples/LoopShellExample.js +68 -0
  278. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  279. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  280. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  281. package/lib/examples/LoopWorkspaceExample.js +151 -0
  282. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  283. package/lib/examples/NotebookAgentExample.js +36 -86
  284. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  285. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  286. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  287. package/lib/examples/NotebookCollaborationExample.js +108 -20
  288. package/lib/examples/NotebookExample.d.ts +1 -1
  289. package/lib/examples/NotebookExample.js +20 -10
  290. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  291. package/lib/examples/NotebookPageAgent.js +17 -0
  292. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  293. package/lib/examples/components/ExampleWrapper.js +36 -28
  294. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  295. package/lib/examples/components/LexicalEditor.js +4 -24
  296. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  297. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  298. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  299. package/lib/examples/example-selector.js +26 -6
  300. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  301. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  302. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  303. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  304. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  305. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  306. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  307. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  308. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  309. package/lib/examples/index.d.ts +4 -0
  310. package/lib/examples/index.js +6 -0
  311. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  312. package/lib/examples/lexical/editorConfig.js +26 -48
  313. package/lib/examples/lexical/lexical-theme.css +65 -47
  314. package/lib/examples/main.js +450 -322
  315. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  316. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  317. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  318. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  319. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  320. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  321. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  322. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  323. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  324. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  325. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  326. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  327. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  328. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  329. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  330. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  331. package/lib/examples/utils/exampleSurfaces.js +38 -0
  332. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  333. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  334. package/lib/examples/utils/localUrl.d.ts +2 -0
  335. package/lib/examples/utils/localUrl.js +49 -0
  336. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  337. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  338. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  339. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  340. package/lib/examples/utils/themedProvider.d.ts +7 -0
  341. package/lib/examples/utils/themedProvider.js +57 -4
  342. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  343. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  344. package/lib/examples/utils/waitForAgent.js +24 -0
  345. package/lib/examples2/CellExample.d.ts +1 -1
  346. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  347. package/lib/examples2/NotebookExample.d.ts +1 -1
  348. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  349. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  350. package/lib/examples2/main.js +24 -4
  351. package/lib/extensions/A2UIExtension.d.ts +1 -1
  352. package/lib/hooks/index.d.ts +8 -5
  353. package/lib/hooks/index.js +20 -5
  354. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  355. package/lib/hooks/useAgentRuntimes.js +214 -90
  356. package/lib/hooks/useAgentsCatalog.js +32 -4
  357. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  358. package/lib/hooks/useBrowserAgent.js +75 -0
  359. package/lib/hooks/useBrowserInference.d.ts +27 -0
  360. package/lib/hooks/useBrowserInference.js +67 -0
  361. package/lib/hooks/useCheckpoints.d.ts +8 -17
  362. package/lib/hooks/useCheckpoints.js +25 -59
  363. package/lib/hooks/useConfig.d.ts +1 -1
  364. package/lib/hooks/useConfig.js +5 -1
  365. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  366. package/lib/hooks/useContextSnapshot.js +14 -10
  367. package/lib/hooks/useNotifications.d.ts +11 -11
  368. package/lib/hooks/useNotifications.js +1 -1
  369. package/lib/hooks/useProjects.d.ts +7 -19
  370. package/lib/hooks/useProjects.js +5 -5
  371. package/lib/hooks/useSkills.d.ts +0 -1
  372. package/lib/hooks/useSkills.js +6 -2
  373. package/lib/hooks/useToolApprovals.d.ts +8 -8
  374. package/lib/hooks/useToolApprovals.js +3 -3
  375. package/lib/identity/AgentIdentity.d.ts +9 -2
  376. package/lib/identity/index.d.ts +1 -1
  377. package/lib/identity/index.js +1 -1
  378. package/lib/identity/types.d.ts +1 -1
  379. package/lib/identity/types.js +1 -1
  380. package/lib/index.d.ts +1 -0
  381. package/lib/index.js +4 -0
  382. package/lib/jupyter/index.d.ts +2 -1
  383. package/lib/jupyter/index.js +2 -1
  384. package/lib/jupyter/serverExecution.d.ts +78 -0
  385. package/lib/jupyter/serverExecution.js +258 -0
  386. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  387. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  388. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  389. package/lib/lexical/ChatInlinePlugin.js +0 -36
  390. package/lib/loop/core/focusRequests.d.ts +10 -0
  391. package/lib/loop/core/focusRequests.js +46 -0
  392. package/lib/loop/core/index.d.ts +894 -0
  393. package/lib/loop/core/index.js +264 -0
  394. package/lib/loop/core/promptStore.d.ts +44 -0
  395. package/lib/loop/core/promptStore.js +63 -0
  396. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  397. package/lib/loop/core/surfaceRequests.js +29 -0
  398. package/lib/loop/core/toolbar.d.ts +28 -0
  399. package/lib/loop/core/toolbar.js +59 -0
  400. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  401. package/lib/loop/embed/LoopEmbed.js +118 -0
  402. package/lib/loop/extensions.d.ts +10 -0
  403. package/lib/loop/extensions.js +49 -0
  404. package/lib/loop/index.d.ts +68 -0
  405. package/lib/loop/index.js +87 -0
  406. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  407. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  408. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  409. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  410. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  411. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  412. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  413. package/lib/loop/plugins/a2ui/index.js +50 -0
  414. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  415. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  416. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  417. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  418. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  419. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  420. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  421. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  422. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  423. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  424. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  425. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  426. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  427. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  428. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  429. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  430. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  431. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  432. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  433. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  434. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  435. package/lib/loop/plugins/agent-evals/index.js +25 -0
  436. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  437. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  438. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  439. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  440. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  441. package/lib/loop/plugins/agent-inference/index.js +29 -0
  442. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  443. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  444. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  445. package/lib/loop/plugins/agent-memory/index.js +25 -0
  446. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  447. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  448. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  449. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  450. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  451. package/lib/loop/plugins/agent-otel/index.js +25 -0
  452. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  453. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  454. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  455. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  456. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  457. package/lib/loop/plugins/agent-skills/index.js +25 -0
  458. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  459. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  460. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  461. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  462. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  463. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  464. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  465. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  466. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  467. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  468. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  469. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  470. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  471. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  472. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  473. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  474. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  475. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  476. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  477. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  478. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  479. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  480. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  481. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  482. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  483. package/lib/loop/plugins/agents/browserService.js +233 -0
  484. package/lib/loop/plugins/agents/index.d.ts +13 -0
  485. package/lib/loop/plugins/agents/index.js +17 -0
  486. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  487. package/lib/loop/plugins/agents/plugin.js +201 -0
  488. package/lib/loop/plugins/agents/service.d.ts +99 -0
  489. package/lib/loop/plugins/agents/service.js +167 -0
  490. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  491. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  492. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  493. package/lib/loop/plugins/agents/switchable.js +405 -0
  494. package/lib/loop/plugins/agents/team.d.ts +87 -0
  495. package/lib/loop/plugins/agents/team.js +143 -0
  496. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  497. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  498. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  499. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  500. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  501. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  502. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  503. package/lib/loop/plugins/agentspecs/index.js +63 -0
  504. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  505. package/lib/loop/plugins/chat/ChatView.js +1670 -0
  506. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  507. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  508. package/lib/loop/plugins/chat/index.d.ts +111 -0
  509. package/lib/loop/plugins/chat/index.js +143 -0
  510. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  511. package/lib/loop/plugins/chat/turnState.js +90 -0
  512. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  513. package/lib/loop/plugins/chat-extras/index.js +51 -0
  514. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  515. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  516. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  517. package/lib/loop/plugins/chat-header/index.js +21 -0
  518. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  519. package/lib/loop/plugins/chat-view/index.js +29 -0
  520. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  521. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  522. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  523. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  524. package/lib/loop/plugins/commands/index.d.ts +20 -0
  525. package/lib/loop/plugins/commands/index.js +148 -0
  526. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  527. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  528. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  529. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  530. package/lib/loop/plugins/decks/index.d.ts +19 -0
  531. package/lib/loop/plugins/decks/index.js +133 -0
  532. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  533. package/lib/loop/plugins/decks/surface.js +11 -0
  534. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  535. package/lib/loop/plugins/document/DocumentView.js +68 -0
  536. package/lib/loop/plugins/document/index.d.ts +3 -0
  537. package/lib/loop/plugins/document/index.js +86 -0
  538. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  539. package/lib/loop/plugins/document/openingDocument.js +122 -0
  540. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  541. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  542. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  543. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  544. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  545. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  546. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  547. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  548. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  549. package/lib/loop/plugins/document-view/index.js +28 -0
  550. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  551. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  552. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  553. package/lib/loop/plugins/graph/GraphView.js +6 -0
  554. package/lib/loop/plugins/graph/index.d.ts +5 -0
  555. package/lib/loop/plugins/graph/index.js +80 -0
  556. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  557. package/lib/loop/plugins/graph/viewType.js +14 -0
  558. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  559. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  560. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  561. package/lib/loop/plugins/input-prompt/index.js +26 -0
  562. package/lib/loop/plugins/models/index.d.ts +3 -0
  563. package/lib/loop/plugins/models/index.js +49 -0
  564. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  565. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  566. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  567. package/lib/loop/plugins/notebook/index.js +91 -0
  568. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  569. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  570. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  571. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  572. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  573. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  574. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  575. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  576. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  577. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  578. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  579. package/lib/loop/plugins/notebook-view/index.js +30 -0
  580. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  581. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  582. package/lib/loop/plugins/page-layout/index.d.ts +35 -0
  583. package/lib/loop/plugins/page-layout/index.js +80 -0
  584. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  585. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  586. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  587. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  588. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  589. package/lib/loop/plugins/prompt/index.js +73 -0
  590. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  591. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  592. package/lib/loop/plugins/shell/index.d.ts +47 -0
  593. package/lib/loop/plugins/shell/index.js +142 -0
  594. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  595. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  596. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  597. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  598. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  599. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  600. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  601. package/lib/loop/plugins/view-switch/index.js +68 -0
  602. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  603. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  604. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  605. package/lib/loop/plugins/window-frame/index.js +79 -0
  606. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  607. package/lib/loop/plugins/window-frame/slots.js +30 -0
  608. package/lib/loop/presets.d.ts +167 -0
  609. package/lib/loop/presets.js +139 -0
  610. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  611. package/lib/loop/shell/LoopWorkspace.js +231 -0
  612. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  613. package/lib/loop/shell/PluginToggles.js +41 -0
  614. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  615. package/lib/loop/shell/ViewSwitcher.js +43 -0
  616. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  617. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  618. package/lib/loop/shell/index.d.ts +10 -0
  619. package/lib/loop/shell/index.js +14 -0
  620. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  621. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  622. package/lib/loop-example-main.d.ts +1 -0
  623. package/lib/loop-example-main.js +42 -0
  624. package/lib/loop-main.d.ts +1 -0
  625. package/lib/loop-main.js +138 -0
  626. package/lib/mcp/McpServerManager.d.ts +1 -1
  627. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  628. package/lib/models/CodeSandboxVariant.d.ts +53 -0
  629. package/lib/models/CodeSandboxVariant.js +77 -0
  630. package/lib/models/Content.d.ts +26 -0
  631. package/lib/models/Environment.d.ts +561 -5
  632. package/lib/models/Environment.js +12 -1
  633. package/lib/models/EnvironmentDTO.d.ts +24 -6
  634. package/lib/models/EnvironmentDTO.js +13 -2
  635. package/lib/models/Exercise.d.ts +0 -2
  636. package/lib/models/Library.d.ts +0 -2
  637. package/lib/models/Notebook.d.ts +0 -2
  638. package/lib/models/ProjectDTO.d.ts +2 -2
  639. package/lib/models/ProjectDTO.js +4 -4
  640. package/lib/models/Runtime.d.ts +11 -11
  641. package/lib/models/RuntimeDTO.d.ts +16 -7
  642. package/lib/models/RuntimeDTO.js +9 -9
  643. package/lib/models/Space.d.ts +10 -0
  644. package/lib/models/Space.js +1 -1
  645. package/lib/models/SpaceDTO.d.ts +1 -1
  646. package/lib/models/SpaceItem.d.ts +1 -2
  647. package/lib/models/environments.generated.d.ts +113 -0
  648. package/lib/models/environments.generated.js +13 -0
  649. package/lib/models/index.d.ts +1 -1
  650. package/lib/models/index.js +1 -1
  651. package/lib/protocols/A2AAdapter.d.ts +39 -6
  652. package/lib/protocols/A2AAdapter.js +180 -11
  653. package/lib/protocols/ACPAdapter.js +40 -37
  654. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  655. package/lib/protocols/AGUIAdapter.js +34 -9
  656. package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
  657. package/lib/protocols/BrowserAgentAdapter.js +310 -0
  658. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  659. package/lib/protocols/VercelAIAdapter.js +27 -7
  660. package/lib/protocols/index.d.ts +1 -0
  661. package/lib/protocols/index.js +1 -0
  662. package/lib/runtimes/actions.d.ts +3 -3
  663. package/lib/runtimes/actions.js +41 -16
  664. package/lib/runtimes/apis.d.ts +13 -4
  665. package/lib/runtimes/browser/agent.d.ts +54 -0
  666. package/lib/runtimes/browser/agent.js +63 -0
  667. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  668. package/lib/runtimes/browser/anonymousToken.js +300 -0
  669. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  670. package/lib/runtimes/browser/frontendTools.js +152 -0
  671. package/lib/runtimes/browser/index.d.ts +11 -0
  672. package/lib/runtimes/browser/index.js +20 -0
  673. package/lib/runtimes/browser/model.d.ts +52 -0
  674. package/lib/runtimes/browser/model.js +110 -0
  675. package/lib/runtimes/browser/protocol.d.ts +54 -0
  676. package/lib/runtimes/browser/protocol.js +35 -0
  677. package/lib/runtimes/browser/subagents.d.ts +131 -0
  678. package/lib/runtimes/browser/subagents.js +241 -0
  679. package/lib/runtimes/index.d.ts +3 -0
  680. package/lib/runtimes/index.js +3 -0
  681. package/lib/runtimes/lifecycle.d.ts +76 -0
  682. package/lib/runtimes/lifecycle.js +99 -0
  683. package/lib/runtimes/variants.d.ts +172 -0
  684. package/lib/runtimes/variants.js +187 -0
  685. package/lib/services/reconnectToRuntime.d.ts +2 -2
  686. package/lib/services/reconnectToRuntime.js +3 -3
  687. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  688. package/lib/services/sandboxServiceManagers.js +11 -11
  689. package/lib/specs/agents/agents.d.ts +128 -112
  690. package/lib/specs/agents/agents.js +8024 -5052
  691. package/lib/specs/envvars.d.ts +1 -1
  692. package/lib/specs/envvars.js +3 -3
  693. package/lib/specs/evals.js +9 -0
  694. package/lib/specs/frontendTools.d.ts +3 -0
  695. package/lib/specs/frontendTools.js +46 -3
  696. package/lib/specs/mcpServers.d.ts +1 -0
  697. package/lib/specs/mcpServers.js +27 -4
  698. package/lib/specs/models.d.ts +18 -0
  699. package/lib/specs/models.js +154 -0
  700. package/lib/specs/outputs.d.ts +2 -0
  701. package/lib/specs/outputs.js +22 -0
  702. package/lib/specs/personas.js +1 -1
  703. package/lib/specs/teams/teams.d.ts +2 -0
  704. package/lib/specs/teams/teams.js +628 -111
  705. package/lib/state/index.d.ts +1 -1
  706. package/lib/state/index.js +1 -1
  707. package/lib/state/substates/RuntimesState.d.ts +5 -5
  708. package/lib/state/substates/RuntimesState.js +17 -14
  709. package/lib/state/substates/index.d.ts +1 -1
  710. package/lib/state/substates/index.js +1 -1
  711. package/lib/stores/agentRuntimeStore.d.ts +43 -1
  712. package/lib/stores/agentRuntimeStore.js +100 -11
  713. package/lib/stores/index.d.ts +1 -1
  714. package/lib/stores/index.js +1 -1
  715. package/lib/stories/Button.d.ts +1 -1
  716. package/lib/stories/Button.stories.d.ts +1 -1
  717. package/lib/stories/Header.d.ts +1 -1
  718. package/lib/stories/Header.stories.d.ts +1 -1
  719. package/lib/test-setup.js +66 -0
  720. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
  721. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
  722. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
  723. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
  724. package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
  725. package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
  726. package/lib/tools/adapters/commands/index.d.ts +1 -0
  727. package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
  728. package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
  729. package/lib/tools/index.d.ts +1 -0
  730. package/lib/tools/index.js +1 -0
  731. package/lib/types/a2a.d.ts +15 -1
  732. package/lib/types/agents-lifecycle.d.ts +11 -6
  733. package/lib/types/agents.d.ts +31 -6
  734. package/lib/types/agentspecs.d.ts +120 -4
  735. package/lib/types/chat.d.ts +251 -3
  736. package/lib/types/checkpoints.d.ts +20 -0
  737. package/lib/types/config.d.ts +13 -1
  738. package/lib/types/connection.d.ts +1 -1
  739. package/lib/types/evals.d.ts +2 -0
  740. package/lib/types/messages.d.ts +60 -0
  741. package/lib/types/models.d.ts +26 -0
  742. package/lib/types/notifications.d.ts +15 -6
  743. package/lib/types/protocol.d.ts +7 -2
  744. package/lib/types/stream.d.ts +48 -3
  745. package/lib/types/stream.js +5 -0
  746. package/lib/types/teams.d.ts +102 -4
  747. package/lib/types/tool-approvals.d.ts +1 -1
  748. package/lib/types/tools.d.ts +8 -2
  749. package/lib/utils/utils.js +7 -1
  750. package/package.json +376 -361
  751. package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
  752. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  753. package/scripts/codegen/compose.py +208 -0
  754. package/scripts/codegen/generate_agents.py +202 -31
  755. package/scripts/codegen/generate_evals.py +2 -0
  756. package/scripts/codegen/generate_frontend_tools.py +35 -6
  757. package/scripts/codegen/generate_models.py +40 -15
  758. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  759. package/scripts/codegen/generate_teams.py +178 -4
  760. package/scripts/codegen/generate_tools.py +6 -4
  761. package/scripts/gen_workers.py +279 -111
  762. package/scripts/generate-environments-types.py +404 -0
  763. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  764. package/lib/chat/prompt/InputFooter.js +0 -194
  765. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  766. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  767. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  768. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  769. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  770. package/lib/hooks/useRuntimes.d.ts +0 -5
  771. package/lib/hooks/useRuntimes.js +0 -34
  772. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  773. package/lib/jupyter/kernelsHandler.js +0 -39
  774. package/lib/models/Dataset.d.ts +0 -16
  775. package/lib/utils/Cells.d.ts +0 -2
  776. package/lib/utils/Cells.js +0 -28
@@ -1,4 +1,22 @@
1
+ /**
2
+ * EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
3
+ *
4
+ * The notebook model lives purely in memory (the `nbformat` content below is
5
+ * never persisted to a file) and is backed by a sandbox kernel obtained via
6
+ * `useJupyter`. This mirrors the pattern used by the notebook editor and the
7
+ * `NotebookNbformat` example, so the agent can drive the notebook through the
8
+ * registered notebook frontend tools while nothing is written to disk.
9
+ *
10
+ * The container structure (relative wrapper + absolutely positioned inner box
11
+ * + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
12
+ * (`NotebookEditorPanel`) so the cells get a resolved height and actually
13
+ * render — a plain `height: 100%` collapses to zero inside a flex parent.
14
+ *
15
+ * @module chat/notebook/EphemeralNotebook
16
+ */
17
+ import type { JSX } from 'react';
1
18
  import type { INotebookContent } from '@jupyterlab/nbformat';
19
+ import { ServiceManager } from '@jupyterlab/services';
2
20
  import { type ToolbarItem } from '@datalayer/primer-addons';
3
21
  import type { ICollaborationProvider } from '@datalayer/jupyter-react';
4
22
  import type { EphemeralNotebookToolbarComponent } from '../../types/chat';
@@ -18,7 +36,7 @@ export interface EphemeralRuntimeOverride {
18
36
  /** Bearer/JWT token appended to requests (`appendToken`). */
19
37
  token?: string;
20
38
  /** Stable identifier used for the sandbox service-manager registry. */
21
- podName?: string;
39
+ runtimeName?: string;
22
40
  }
23
41
  export interface EphemeralNotebookProps {
24
42
  /**
@@ -27,7 +45,7 @@ export interface EphemeralNotebookProps {
27
45
  */
28
46
  notebookId: string;
29
47
  /** Preferred runtime pod name to bind the notebook kernel to. */
30
- runtimePodName?: string;
48
+ runtimeName?: string;
31
49
  /**
32
50
  * Explicit runtime endpoint override. When supplied, the notebook binds its
33
51
  * kernel to this endpoint directly instead of resolving a pod from the user's
@@ -44,6 +62,24 @@ export interface EphemeralNotebookProps {
44
62
  onNbformatChange?: (content: INotebookContent) => void;
45
63
  /** Optional toolbar component override. */
46
64
  toolbarComponent?: EphemeralNotebookToolbarComponent;
65
+ /**
66
+ * Whether to draw a toolbar at all. Defaults to true.
67
+ *
68
+ * For a host where the toolbar is somebody's to provide — the LOOP
69
+ * workspace, where a plugin owns it and can be switched off. `false` draws
70
+ * no bar rather than an empty one: an empty bar still costs a row and a
71
+ * border, and reads as broken rather than as absent.
72
+ */
73
+ showToolbar?: boolean;
74
+ /**
75
+ * Whether the toolbar offers Save.
76
+ *
77
+ * False by default. This notebook is held in memory and written back by
78
+ * whoever mounted it, so the button commits nothing a reader can point at —
79
+ * and in a browser sandbox there is no file behind it at all. A host that
80
+ * does persist the notebook, and wants an explicit save, sets this.
81
+ */
82
+ showSaveItem?: boolean;
47
83
  /**
48
84
  * Items added to the toolbar of the notebook.
49
85
  *
@@ -65,9 +101,34 @@ export interface EphemeralNotebookProps {
65
101
  * tunnel.
66
102
  */
67
103
  collaborationProvider?: ICollaborationProvider;
104
+ /**
105
+ * A `ServiceManager` to bind to instead of resolving one from a runtime.
106
+ *
107
+ * For hosts that already own the connection — a browser (Pyodide) sandbox,
108
+ * where the kernel runs in the page and there is no pod to look up. Binding
109
+ * to the host's manager is what puts the agent's executions and the reader's
110
+ * cells in the same kernel.
111
+ */
112
+ /**
113
+ * Render without wrapping the content in a theme provider.
114
+ *
115
+ * For a host that already owns one — the LOOP workspace, where the entry
116
+ * point provides the theme and the views inherit it. Nested providers fight
117
+ * over `BaseStyles` and font tokens, and the inner one wins for the wrong
118
+ * reasons.
119
+ */
120
+ inheritTheme?: boolean;
121
+ serviceManager?: ServiceManager.IManager;
122
+ /**
123
+ * A kernel already running on that manager to bind to.
124
+ *
125
+ * Supplied with `serviceManager` when the host has a kernel of its own — a
126
+ * browser sandbox, say. Without it the notebook starts a second kernel on the
127
+ * same manager, which for Pyodide dies on arrival and, more importantly,
128
+ * would put the reader's cells and the agent's executions in different
129
+ * kernels.
130
+ */
131
+ kernelId?: string;
68
132
  }
69
- /**
70
- * Renders an in-memory notebook backed by a sandbox kernel.
71
- */
72
- export declare function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride, cellSidebarMargin, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, themeVariant, colorMode, collaborationProvider, }: EphemeralNotebookProps): import("react/jsx-runtime").JSX.Element;
133
+ export declare function EphemeralNotebook({ notebookId, runtimeName, runtimeOverride, serviceManager: externalServiceManager, inheritTheme, kernelId: externalKernelId, cellSidebarMargin, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, showToolbar, showSaveItem, themeVariant, colorMode, collaborationProvider, }: EphemeralNotebookProps): JSX.Element;
73
134
  export default EphemeralNotebook;
@@ -1,30 +1,11 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2025-2026 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- /**
7
- * EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
8
- *
9
- * The notebook model lives purely in memory (the `nbformat` content below is
10
- * never persisted to a file) and is backed by a sandbox kernel obtained via
11
- * `useJupyter`. This mirrors the pattern used by the notebook editor and the
12
- * `NotebookNbformat` example, so the agent can drive the notebook through the
13
- * registered notebook frontend tools while nothing is written to disk.
14
- *
15
- * The container structure (relative wrapper + absolutely positioned inner box
16
- * + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
17
- * (`NotebookEditorPanel`) so the cells get a resolved height and actually
18
- * render — a plain `height: 100%` collapses to zero inside a flex parent.
19
- *
20
- * @module chat/notebook/EphemeralNotebook
21
- */
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
22
2
  import { useEffect, useMemo, useRef, useState } from 'react';
23
3
  import { ServerConnection, ServiceManager } from '@jupyterlab/services';
24
4
  import { DatalayerThemeProvider, getThemeConfig, useSystemColorMode, useThemeStore, } from '@datalayer/primer-addons';
25
5
  import { Box } from '@primer/react';
26
- import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, } from '@datalayer/jupyter-react';
6
+ import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, useJupyterLabCssLoaded, } from '@datalayer/jupyter-react';
27
7
  import { useAgentsRuntimes } from '../../hooks/useAgentRuntimes';
8
+ import { useResumeServerExecutions } from '../../jupyter/useResumeServerExecutions';
28
9
  import { registerSandboxServiceManager } from '../../services/sandboxServiceManagers';
29
10
  import { useProgressTask } from '../../hooks/useProgressTask';
30
11
  /**
@@ -55,7 +36,20 @@ const EPHEMERAL_NOTEBOOK_CONTENT = {
55
36
  /**
56
37
  * Renders an in-memory notebook backed by a sandbox kernel.
57
38
  */
58
- export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride, cellSidebarMargin = 120, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, themeVariant, colorMode, collaborationProvider, }) {
39
+ /**
40
+ * The theme provider, or nothing.
41
+ *
42
+ * A host that already owns a theme root passes `inherit`; nested providers
43
+ * fight over `BaseStyles` and font tokens, and the inner one wins for the wrong
44
+ * reasons.
45
+ */
46
+ function ThemeRoot({ inherit, colorMode, themeConfig, children, }) {
47
+ if (inherit) {
48
+ return _jsx(_Fragment, { children: children });
49
+ }
50
+ return (_jsx(DatalayerThemeProvider, { colorMode: colorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: children }));
51
+ }
52
+ export function EphemeralNotebook({ notebookId, runtimeName, runtimeOverride, serviceManager: externalServiceManager, inheritTheme = false, kernelId: externalKernelId, cellSidebarMargin = 120, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, showToolbar = true, showSaveItem = false, themeVariant, colorMode, collaborationProvider, }) {
59
53
  // The `nbformat` passed to the `Notebook` component MUST stay a stable
60
54
  // reference for the lifetime of a given `notebookId`: the underlying
61
55
  // `useNotebookModel` hook rebuilds the notebook model (and its context /
@@ -78,13 +72,13 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
78
72
  // notebook must bind to exactly the runtime assigned to this agent, or to
79
73
  // none at all (straight path).
80
74
  const { runtimes, refetchRuntimes } = useAgentsRuntimes();
81
- const podResolvedRuntime = useMemo(() => {
82
- const preferredPod = String(runtimePodName || '').trim();
83
- if (!preferredPod) {
75
+ const resolvedRuntime = useMemo(() => {
76
+ const preferredRuntime = String(runtimeName || '').trim();
77
+ if (!preferredRuntime) {
84
78
  return undefined;
85
79
  }
86
- return runtimes.find(rt => String(rt?.pod_name || '') === preferredPod);
87
- }, [runtimePodName, runtimes]);
80
+ return runtimes.find(rt => String(rt?.runtime_name || '') === preferredRuntime);
81
+ }, [runtimeName, runtimes]);
88
82
  // An explicit endpoint override wins over the pod lookup: it lets a SaaS
89
83
  // browser bind the kernel through the runtimes tunnel proxy (the node's
90
84
  // Jupyter server is not directly reachable, so no pod exists in the list).
@@ -95,18 +89,19 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
95
89
  url: overrideBaseUrl,
96
90
  wsUrl: String(runtimeOverride?.wsUrl || '').trim() || undefined,
97
91
  token: String(runtimeOverride?.token || '').trim(),
98
- pod_name: String(runtimeOverride?.podName || '').trim() || 'agent-node-proxy',
92
+ runtime_name: String(runtimeOverride?.runtimeName || '').trim() ||
93
+ 'agent-node-proxy',
99
94
  };
100
95
  }
101
- return podResolvedRuntime;
102
- }, [runtimeOverride, podResolvedRuntime]);
96
+ return resolvedRuntime;
97
+ }, [runtimeOverride, resolvedRuntime]);
103
98
  // While the assigned pod has not yet appeared in the runtimes list, poll the
104
99
  // list quickly instead of waiting for the default (10s) refresh interval.
105
100
  // This is what makes the "Starting notebook…" state clear promptly once the
106
101
  // agent runtime is ready, rather than lingering for several seconds. The
107
102
  // override path binds immediately, so no polling is needed there.
108
103
  const needsRuntimeLookup = Boolean(!runtimeOverride?.baseUrl &&
109
- String(runtimePodName || '').trim() &&
104
+ String(runtimeName || '').trim() &&
110
105
  !selectedRuntime);
111
106
  useEffect(() => {
112
107
  if (!needsRuntimeLookup) {
@@ -147,37 +142,72 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
147
142
  token,
148
143
  appendToken: true,
149
144
  });
150
- manager = new ServiceManager({ serverSettings });
145
+ const pending = new ServiceManager({ serverSettings });
146
+ manager = pending;
151
147
  // Central sandbox registry: runtime terminate/pause disposes this
152
148
  // manager immediately so its pollers cannot hit the dead pod ingress.
153
- unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.pod_name || ''), manager);
154
- await manager.ready;
155
- await manager.kernels.refreshRunning();
156
- const runningKernel = [...manager.kernels.running()][0];
157
- if (!cancelled) {
158
- setRuntimeServiceManager(manager);
159
- setRuntimeKernelId(runningKernel?.id);
160
- setRuntimeStartDefaultKernel(!runningKernel);
149
+ unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.runtime_name || ''), manager);
150
+ // The cleanup below may already have run: it captured `manager` while
151
+ // it was still null, because this function is async and assigns it
152
+ // after the first await the caller does not wait for. Switching
153
+ // sandboxes quickly is exactly that race, and the manager it orphans
154
+ // polls the abandoned server for the life of the page.
155
+ if (cancelled) {
156
+ release(pending);
157
+ return;
158
+ }
159
+ await pending.ready;
160
+ await pending.kernels.refreshRunning();
161
+ const runningKernel = [...pending.kernels.running()][0];
162
+ if (cancelled) {
163
+ release(pending);
164
+ return;
161
165
  }
166
+ setRuntimeServiceManager(pending);
167
+ setRuntimeKernelId(runningKernel?.id);
168
+ setRuntimeStartDefaultKernel(!runningKernel);
162
169
  }
163
- catch {
170
+ catch (reason) {
171
+ // Give up the manager, do not merely stop looking at it.
172
+ //
173
+ // A `ServiceManager` starts polling `/api/kernels` and `/api/sessions`
174
+ // the moment it is constructed, on its own schedule. Abandoning one
175
+ // whose `ready` rejected left those polls running against a server
176
+ // that had gone — a switch away from a restarted sandbox produced an
177
+ // endless run of ERR_CONNECTION_REFUSED, one every few seconds,
178
+ // forever.
179
+ if (manager) {
180
+ release(manager);
181
+ manager = null;
182
+ }
164
183
  if (!cancelled) {
184
+ console.warn(`[agent-runtimes] Could not reach the sandbox at ${baseUrl}.`, reason);
165
185
  setRuntimeServiceManager(null);
166
186
  setRuntimeKernelId(undefined);
167
187
  setRuntimeStartDefaultKernel(false);
168
188
  }
169
189
  }
170
190
  };
191
+ /** Unregister and dispose one manager, once. */
192
+ const release = (target) => {
193
+ unregisterManager?.();
194
+ unregisterManager = null;
195
+ disposeServiceManager(target);
196
+ };
171
197
  connectRuntime();
172
198
  return () => {
173
199
  cancelled = true;
174
- unregisterManager?.();
175
200
  if (manager) {
176
- disposeServiceManager(manager);
201
+ release(manager);
202
+ manager = null;
203
+ }
204
+ else {
205
+ unregisterManager?.();
206
+ unregisterManager = null;
177
207
  }
178
208
  };
179
209
  }, [
180
- selectedRuntime?.pod_name,
210
+ selectedRuntime?.runtime_name,
181
211
  selectedRuntime?.url,
182
212
  selectedRuntime?.token,
183
213
  selectedRuntime?.wsUrl,
@@ -185,25 +215,94 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
185
215
  // Bind strictly to the agent runtime sandbox; there is NO local fallback
186
216
  // kernel. The notebook executes on the agent's runtime or shows a waiting
187
217
  // state until the runtime is ready.
188
- const activeServiceManager = runtimeServiceManager;
189
- const activeKernelId = runtimeKernelId;
190
- const activeStartDefaultKernel = runtimeStartDefaultKernel;
218
+ // A host that already owns a `ServiceManager` — a browser (Pyodide) sandbox,
219
+ // where the kernel runs in the page and there is no pod to resolve — passes
220
+ // it in. Binding to *that* manager is what puts the agent's executions and
221
+ // the reader's cells in the same kernel.
222
+ const activeServiceManager = externalServiceManager ?? runtimeServiceManager;
223
+ /*
224
+ * Wait for the JupyterLab stylesheets before the first paint.
225
+ *
226
+ * They arrive as their own webpack chunks, fetched when the first notebook
227
+ * on the page asks for them, and a notebook drawn before they land has no
228
+ * rules at all — the cells stack, the toolbar unwraps, and the panel looks
229
+ * broken until something makes it render again. On a reload the chunks come
230
+ * from cache fast enough that nobody sees it, which is why this only ever
231
+ * showed up on the first visit to an agent page.
232
+ *
233
+ * Holding here rather than in `JupyterReactTheme` because the theme wraps
234
+ * the whole page: blanking the conversation while a notebook's stylesheet
235
+ * loads would trade a small ugly moment for a large empty one. This is the
236
+ * one component that cannot be read without them.
237
+ *
238
+ * The hook resolves even if a chunk fails, so a missing stylesheet still
239
+ * gets a notebook — the old, ugly one — and never an empty box forever.
240
+ *
241
+ * It waits for as long as that takes — measured at about 3s warm and 6.5s
242
+ * cold — rather than drawing after a grace period, and the reason is in the
243
+ * bug report: a refresh was needed. Stylesheets that arrive late apply
244
+ * themselves, so a notebook that were merely racing them would repair itself
245
+ * the moment they landed and nobody would ever reach for reload. It does not
246
+ * repair, because Lumino measures this panel when it attaches and never
247
+ * measures again — attach it against no rules and it keeps those numbers for
248
+ * as long as it lives. Drawing early on a timer would reproduce exactly the
249
+ * state being fixed, on precisely the slow connections that hit it most.
250
+ */
251
+ const notebookReady = useJupyterLabCssLoaded();
252
+ const activeKernelId = externalKernelId ?? runtimeKernelId;
253
+ // Join the host's kernel when there is one; only start a kernel of our own
254
+ // when the host handed us a manager without one. Starting a second kernel
255
+ // beside the host's would split the reader's cells from the agent's
256
+ // executions — and for Pyodide the second one dies on arrival.
257
+ const activeStartDefaultKernel = externalServiceManager
258
+ ? !externalKernelId
259
+ : runtimeStartDefaultKernel;
191
260
  // The toolbar of the notebook, with the items of the host merged in. A host
192
261
  // replacing the toolbar altogether receives them as well, as every toolbar
193
262
  // built on the notebook one takes `extraItems`.
194
263
  const ToolbarComponent = useMemo(() => {
264
+ if (!showToolbar) {
265
+ // Undefined, not a component that renders null. `Notebook` guards with
266
+ // `{Toolbar && <Toolbar/>}`, so this removes it from the tree entirely —
267
+ // which matters for the sibling selectors below.
268
+ return undefined;
269
+ }
195
270
  const Base = toolbarComponent || NotebookToolbar;
196
- if (!toolbarExtraItems?.length) {
271
+ /*
272
+ * No save button, unless a host asks for one.
273
+ *
274
+ * This notebook is ephemeral — that is its name. It is held in memory,
275
+ * written back by the host that mounted it, and in a browser sandbox there
276
+ * is no file on the other side of the button at all. A control that looks
277
+ * like it commits work and does not is worse than no control, and it is
278
+ * the first thing in the toolbar, where it reads as the primary action.
279
+ *
280
+ * The divider goes with it. Hiding the item alone leaves the toolbar
281
+ * opening on a rule with nothing before it.
282
+ */
283
+ const hiddenItems = showSaveItem
284
+ ? undefined
285
+ : ['notebook-save', 'notebook-divider-file'];
286
+ if (!toolbarExtraItems?.length && !hiddenItems) {
197
287
  return Base;
198
288
  }
199
289
  return function EphemeralNotebookToolbar(props) {
200
- return _jsx(Base, { ...props, extraItems: toolbarExtraItems });
290
+ return (_jsx(Base, { ...props, extraItems: toolbarExtraItems, hiddenItems: hiddenItems }));
201
291
  };
202
- }, [toolbarComponent, toolbarExtraItems]);
203
- const isRuntimeStarting = Boolean((String(runtimePodName || '').trim() ||
292
+ }, [showToolbar, showSaveItem, toolbarComponent, toolbarExtraItems]);
293
+ const isRuntimeStarting = Boolean((String(runtimeName || '').trim() ||
204
294
  String(runtimeOverride?.baseUrl || '').trim()) &&
205
295
  !activeServiceManager);
206
296
  useProgressTask(`ephemeral-notebook-start-${notebookId}`, isRuntimeStarting);
297
+ /*
298
+ * What a previous page left running on the sandbox.
299
+ *
300
+ * The cells come back from the persisted model, each carrying the request
301
+ * the server accepted for it; once the sandbox is bound again, those
302
+ * requests are polled back into the cells, so a refresh mid-run finds the
303
+ * outputs that kept arriving while it was away.
304
+ */
305
+ useResumeServerExecutions(notebookId, activeServiceManager ?? undefined);
207
306
  useEffect(() => {
208
307
  // When a collaboration provider is active the shared ydoc is the single
209
308
  // source of truth and is synced remotely; the local in-memory persistence
@@ -259,6 +358,20 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
259
358
  : themeConfig.themeStyles.light;
260
359
  const themeBackground = modeStyles.backgroundColor ?? '';
261
360
  const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
361
+ /*
362
+ * A session path under `.datalayer/`, so the server executor recovers outputs.
363
+ *
364
+ * `jupyter-server-nbmodel` streams a cell's outputs into the shared document
365
+ * of the server when the session names a file of it, and turns on HTTP
366
+ * output recovery when it does not — the case for every editor of Datalayer.
367
+ * Left to default, Jupyter React names the session `kernel-<id>`, which the
368
+ * executor reads as a real server document, so it keeps recovery OFF and an
369
+ * ephemeral notebook (which has no shared document on the pod at all) shows
370
+ * no outputs and loses a running cell on refresh. A `.datalayer/` path is
371
+ * how the executor is told there is no file here; the notebook id keeps two
372
+ * ephemeral notebooks on one sandbox from sharing a session.
373
+ */
374
+ const sessionPath = useMemo(() => `.datalayer/${notebookId}.ipynb`, [notebookId]);
262
375
  return (_jsx(Box, { sx: {
263
376
  flex: 1,
264
377
  minHeight: 0,
@@ -266,7 +379,7 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
266
379
  position: 'relative',
267
380
  overflow: 'hidden',
268
381
  bg: 'canvas.default',
269
- }, children: activeServiceManager ? (_jsx(DatalayerThemeProvider, { colorMode: effectiveColorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
382
+ }, children: activeServiceManager && notebookReady ? (_jsx(ThemeRoot, { inherit: inheritTheme, colorMode: effectiveColorMode, themeConfig: themeConfig, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
270
383
  position: 'absolute',
271
384
  inset: 0,
272
385
  display: 'flex',
@@ -275,6 +388,7 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
275
388
  overscrollBehaviorY: 'contain',
276
389
  overflowAnchor: 'none',
277
390
  padding: 2,
391
+ backgroundColor: themeBackground,
278
392
  // Give the notebook a resolved height so cells render. The
279
393
  // Jupyter Notebook component renders its outer container with
280
394
  // id "dla-Jupyter-Notebook"; pin its toolbar and let the cell
@@ -283,17 +397,36 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
283
397
  display: 'flex',
284
398
  flexDirection: 'column',
285
399
  },
286
- '& #dla-Jupyter-Notebook > :first-of-type': {
287
- position: 'sticky',
288
- top: 0,
289
- zIndex: 2,
290
- flex: '0 0 auto',
291
- background: 'var(--jp-layout-color0, transparent)',
292
- },
400
+ // Pin the toolbar — but only while there is one. This targets
401
+ // the first child, and with the toolbar gone that is the
402
+ // notebook body: it would be made sticky and painted with the
403
+ // toolbar's own background.
404
+ ...(showToolbar
405
+ ? {
406
+ '& #dla-Jupyter-Notebook > :first-of-type': {
407
+ position: 'sticky',
408
+ top: 0,
409
+ zIndex: 2,
410
+ flex: '0 0 auto',
411
+ backgroundColor: themeBackground,
412
+ },
413
+ }
414
+ : {
415
+ // `Notebook` gives the panel header `min-height: 50px` to
416
+ // reserve room for a toolbar. With no toolbar that room
417
+ // is a white band under nothing.
418
+ '& .datalayer-NotebookPanel-header': {
419
+ display: 'none',
420
+ minHeight: 0,
421
+ },
422
+ }),
293
423
  '& #dla-Jupyter-Notebook > .dla-Box-Notebook': {
294
424
  flex: '1 1 auto',
295
425
  minHeight: 0,
296
426
  },
297
- }, children: _jsx(Notebook, { nbformat: initialNbformat, id: notebookId, serviceManager: activeServiceManager, startDefaultKernel: activeStartDefaultKernel, kernelId: activeKernelId, height: "100%", cellSidebarMargin: cellSidebarMargin, extensions: extensions, Toolbar: ToolbarComponent, collaborationProvider: collaborationProvider }) }) }) })) : null }));
427
+ '& [role="toolbar"][aria-label="Notebook toolbar"]': {
428
+ backgroundColor: themeBackground,
429
+ },
430
+ }, children: _jsx(Notebook, { nbformat: initialNbformat, id: notebookId, path: sessionPath, serviceManager: activeServiceManager, startDefaultKernel: activeStartDefaultKernel, kernelId: activeKernelId, height: "100%", cellSidebarMargin: cellSidebarMargin, extensions: extensions, Toolbar: ToolbarComponent, collaborationProvider: collaborationProvider }) }) }) })) : null }));
298
431
  }
299
432
  export default EphemeralNotebook;
@@ -16,5 +16,5 @@ export interface DynamicToolPartProps {
16
16
  * for dynamic tool parts. In a production application, this would
17
17
  * render custom UI based on the tool's specification.
18
18
  */
19
- export declare function DynamicToolPart({ part }: DynamicToolPartProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function DynamicToolPart({ part }: DynamicToolPartProps): import("react").JSX.Element;
20
20
  export default DynamicToolPart;
@@ -46,5 +46,5 @@ export interface MessagePartProps {
46
46
  * ))}
47
47
  * ```
48
48
  */
49
- export declare function MessagePart({ part, message, status, regen, index, lastMessage, }: MessagePartProps): import("react/jsx-runtime").JSX.Element | null;
49
+ export declare function MessagePart({ part, message, status, regen, index, lastMessage, }: MessagePartProps): import("react").JSX.Element | null;
50
50
  export default MessagePart;
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Reasoning message part display component.
3
+ * Renders AI reasoning/thinking content with collapsible section.
4
+ *
5
+ * @module chat/display/ReasoningPart
6
+ */
7
+ import React from 'react';
1
8
  export interface ReasoningPartProps {
2
9
  /** Reasoning text content */
3
10
  text: string;
@@ -13,5 +20,5 @@ export interface ReasoningPartProps {
13
20
  * - Visual indicator for streaming state
14
21
  * - Markdown support for reasoning content
15
22
  */
16
- export declare function ReasoningPart({ text, isStreaming }: ReasoningPartProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function ReasoningPart({ text, isStreaming }: ReasoningPartProps): React.JSX.Element;
17
24
  export default ReasoningPart;
@@ -24,5 +24,5 @@ export interface TextPartProps {
24
24
  * - Regenerate button for assistant messages
25
25
  * - Syntax highlighting for code blocks
26
26
  */
27
- export declare function TextPart({ text, message, isLastPart, onRegenerate, }: TextPartProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function TextPart({ text, message, isLastPart, onRegenerate, }: TextPartProps): import("react").JSX.Element;
28
28
  export default TextPart;
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Tool call display component.
3
+ * Renders tool execution with input, output, and status.
4
+ *
5
+ * @module chat/display/ToolPart
6
+ */
7
+ import React from 'react';
1
8
  import type { ToolUIPart } from 'ai';
2
9
  export interface ToolPartProps {
3
10
  /** Tool UI part data */
@@ -13,5 +20,5 @@ export interface ToolPartProps {
13
20
  * - JSON display for output/result
14
21
  * - Rich error display with execution vs code error distinction
15
22
  */
16
- export declare function ToolPart({ part }: ToolPartProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function ToolPart({ part }: ToolPartProps): React.JSX.Element;
17
24
  export default ToolPart;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A card that floats over its host and can be dragged by its handle.
3
+ *
4
+ * The mechanics behind `InputPrompt`'s `draggable` prop, kept apart from the
5
+ * prompt so the prompt module stays about composing messages. The card is
6
+ * absolutely positioned against the nearest positioned ancestor — whoever
7
+ * mounts a floating prompt owns giving it one — and sits bottom-centre until
8
+ * somebody picks it up.
9
+ *
10
+ * @module chat/prompt/FloatingCard
11
+ */
12
+ import type { JSX, ReactNode } from 'react';
13
+ export type FloatingCardProps = {
14
+ children: ReactNode;
15
+ /**
16
+ * Which edge the card starts on, until somebody moves it.
17
+ *
18
+ * `bottom` (the default): over the work but under the eye, where a
19
+ * composer waits without being in the way. `top`: the command line of a
20
+ * page — the page layout puts the prompt where a document's title bar
21
+ * would be, so the sheet below it reads as the thing being worked on.
22
+ */
23
+ anchor?: 'bottom' | 'top';
24
+ };
25
+ export declare function FloatingCard({ children, anchor, }: FloatingCardProps): JSX.Element;
26
+ export default FloatingCard;
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useRef, useState } from 'react';
3
+ import { Box } from '@datalayer/primer-addons';
4
+ import { GrabberIcon } from '@primer/octicons-react';
5
+ /** Keep the card reachable: at least this much of it stays inside. */
6
+ const MARGIN = 8;
7
+ export function FloatingCard({ children, anchor = 'bottom', }) {
8
+ const [position, setPosition] = useState(null);
9
+ const cardRef = useRef(null);
10
+ /* Where the pointer took hold of the card, so dragging moves the card by
11
+ the pointer's delta rather than snapping its corner to the cursor. */
12
+ const grip = useRef(null);
13
+ const onHandlePointerDown = useCallback((event) => {
14
+ const card = cardRef.current;
15
+ const parent = card?.offsetParent;
16
+ if (!card || !parent) {
17
+ return;
18
+ }
19
+ const cardBox = card.getBoundingClientRect();
20
+ const parentBox = parent.getBoundingClientRect();
21
+ grip.current = {
22
+ dx: event.clientX - cardBox.left,
23
+ dy: event.clientY - cardBox.top,
24
+ };
25
+ const handle = event.currentTarget;
26
+ // Absent in test DOMs; the move listeners below still work there.
27
+ handle.setPointerCapture?.(event.pointerId);
28
+ const move = (moved) => {
29
+ if (!grip.current) {
30
+ return;
31
+ }
32
+ // Clamped so the card cannot be dropped where its handle is
33
+ // unreachable — a prompt dragged off the edge is a prompt lost.
34
+ const left = Math.min(Math.max(moved.clientX - parentBox.left - grip.current.dx, MARGIN - cardBox.width / 2), parentBox.width - cardBox.width / 2 - MARGIN);
35
+ const top = Math.min(Math.max(moved.clientY - parentBox.top - grip.current.dy, MARGIN), parentBox.height - MARGIN * 4);
36
+ setPosition({ left, top });
37
+ };
38
+ const up = () => {
39
+ grip.current = null;
40
+ handle.removeEventListener('pointermove', move);
41
+ handle.removeEventListener('pointerup', up);
42
+ handle.removeEventListener('pointercancel', up);
43
+ };
44
+ handle.addEventListener('pointermove', move);
45
+ handle.addEventListener('pointerup', up);
46
+ handle.addEventListener('pointercancel', up);
47
+ event.preventDefault();
48
+ }, []);
49
+ return (_jsxs(Box, { ref: cardRef, "data-floating-prompt": "", sx: {
50
+ position: 'absolute',
51
+ // Bottom-centre until somebody moves it: over the work but under the
52
+ // eye, which is where a composer waits without being in the way.
53
+ ...(position
54
+ ? { left: position.left, top: position.top }
55
+ : anchor === 'top'
56
+ ? { left: '50%', top: 16, transform: 'translateX(-50%)' }
57
+ : { left: '50%', bottom: 16, transform: 'translateX(-50%)' }),
58
+ width: 'min(640px, calc(100% - 32px))',
59
+ zIndex: 20,
60
+ bg: 'canvas.default',
61
+ border: '1px solid',
62
+ borderColor: 'border.default',
63
+ borderRadius: 2,
64
+ boxShadow: 'shadow.large',
65
+ overflow: 'hidden',
66
+ }, children: [_jsx(Box, { onPointerDown: onHandlePointerDown, "aria-label": "Move the prompt", sx: {
67
+ display: 'flex',
68
+ alignItems: 'center',
69
+ justifyContent: 'center',
70
+ height: 18,
71
+ cursor: 'grab',
72
+ color: 'fg.subtle',
73
+ bg: 'canvas.subtle',
74
+ borderBottom: '1px solid',
75
+ borderColor: 'border.muted',
76
+ touchAction: 'none',
77
+ '&:active': { cursor: 'grabbing' },
78
+ }, children: _jsx(GrabberIcon, { size: 16 }) }), children] }));
79
+ }
80
+ export default FloatingCard;