@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
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
4
4
  * Distributed under the terms of the Modified BSD License.
5
5
  */
6
6
  /**
7
- * Agent Runtime Notebook Example - Chat with Jupyter Notebook.
7
+ * Notebook Agent Sidebar Example - Chat with Jupyter Notebook.
8
8
  *
9
9
  * This example demonstrates using the chat component with:
10
10
  * - Jupyter Notebook integration
@@ -19,41 +19,20 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
19
19
  *
20
20
  * @module examples/NotebookAgentSidebarExample
21
21
  */
22
- import { useEffect, useMemo, useState } from 'react';
23
22
  import { Box } from '@datalayer/primer-addons';
24
- import { Notebook, useJupyter } from '@datalayer/jupyter-react';
23
+ import { Notebook } from '@datalayer/jupyter-react';
25
24
  import { useNotebookTools } from '../tools/adapters/agent-runtimes/notebookHooks';
26
- import { ThemedJupyterProvider } from './utils/themedProvider';
25
+ import { ThemedJupyterProvider, ThemedProvider } from './utils/themedProvider';
27
26
  import { ChatSidebar } from '../chat';
28
- import { DEFAULT_MODEL } from '../specs';
29
- import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
30
- import { useExampleAgentRuntime } from './hooks/useExampleAgentRuntime';
27
+ import { useExampleJupyterAgent } from './hooks/useExampleJupyterAgent';
31
28
  import MatplotlibNotebook from './utils/notebooks/Matplotlib.ipynb.json';
29
+ import { ExampleNotebookToolbar } from './utils/notebookToolbarItems';
32
30
  // Fixed notebook ID
33
31
  const NOTEBOOK_ID = 'chat-notebook-example';
34
32
  // Use the imported Matplotlib notebook
35
33
  const NOTEBOOK_CONTENT = MatplotlibNotebook;
36
34
  // Default configuration
37
35
  const DEFAULT_AGENT_ID = import.meta.env.VITE_AGENT_ID || 'notebook-sidebar-agent-runtime-example';
38
- function getJupyterSandboxUrl(serviceManager) {
39
- const envUrl = import.meta.env.VITE_JUPYTER_SANDBOX_URL;
40
- if (envUrl) {
41
- return envUrl;
42
- }
43
- const baseUrl = serviceManager?.serverSettings?.baseUrl?.replace(/\/$/, '');
44
- if (!baseUrl) {
45
- return undefined;
46
- }
47
- if (baseUrl.includes('token=')) {
48
- return baseUrl;
49
- }
50
- const token = serviceManager?.serverSettings?.token;
51
- if (!token) {
52
- return baseUrl;
53
- }
54
- const separator = baseUrl.includes('?') ? '&' : '?';
55
- return `${baseUrl}${separator}token=${encodeURIComponent(token)}`;
56
- }
57
36
  function NotebookUI({ serviceManager }) {
58
37
  if (!serviceManager) {
59
38
  return (_jsx(Box, { sx: {
@@ -64,59 +43,34 @@ function NotebookUI({ serviceManager }) {
64
43
  color: 'fg.muted',
65
44
  }, children: "Loading Simple services..." }));
66
45
  }
67
- return (_jsx(Notebook, { nbformat: NOTEBOOK_CONTENT, id: NOTEBOOK_ID, serviceManager: serviceManager, height: "100%", cellSidebarMargin: 120, startDefaultKernel: true }));
46
+ return (
47
+ // Only the notebook is wrapped. `JupyterReactTheme` nests a Primer theme
48
+ // of its own, so wrapping the example in it made every surface around the
49
+ // notebook — header, sidebar, error panel — read `canvas.default` from
50
+ // Primer's stock light palette rather than from the chosen theme, which is
51
+ // what showed as a white background.
52
+ _jsx(ThemedJupyterProvider, { fullHeight: true, children: _jsx(Notebook, { nbformat: NOTEBOOK_CONTENT, id: NOTEBOOK_ID, Toolbar: ExampleNotebookToolbar, serviceManager: serviceManager, height: "100%", cellSidebarMargin: 120, startDefaultKernel: true }) }));
68
53
  }
69
54
  export function AgentRuntimeNotebookExampleInner({ serviceManager, }) {
70
- const baseUrl = useExampleAgentRuntimesUrl();
71
- const vercelAiEndpoint = `${baseUrl}/api/v1/vercel-ai/${DEFAULT_AGENT_ID}`;
72
- const [createRequested, setCreateRequested] = useState(false);
73
- const jupyterSandboxUrl = useMemo(() => getJupyterSandboxUrl(serviceManager), [serviceManager]);
74
- const { agentId, isReady, status, error, createAgent } = useExampleAgentRuntime({
55
+ // The tools. Which of the chat and the harness runs them depends on
56
+ // where the loop turns, and the hook decides that.
57
+ const tools = useNotebookTools(NOTEBOOK_ID);
58
+ const { agentReady, protocol: protocolConfig, chatFrontendTools, error, unavailableReason, } = useExampleJupyterAgent({
75
59
  exampleId: 'NotebookAgentSidebarExample',
76
60
  agentName: DEFAULT_AGENT_ID,
77
- autoCreateAgent: false,
78
- agentConfig: {
79
- name: DEFAULT_AGENT_ID,
80
- description: 'Demo agent for notebook sidebar example',
81
- protocol: 'vercel-ai',
82
- model: DEFAULT_MODEL,
83
- systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCode only for temporary inspection code that should not modify notebook cells.',
84
- enableCodemode: false,
85
- sandboxVariant: 'jupyter',
86
- jupyterSandbox: jupyterSandboxUrl,
87
- },
61
+ description: 'Demo agent for notebook sidebar example',
62
+ systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCodeInNotebook only for temporary inspection code that should not modify notebook cells.',
63
+ serviceManager,
64
+ frontendTools: tools,
88
65
  });
89
- useEffect(() => {
90
- if (!jupyterSandboxUrl || createRequested || agentId) {
91
- return;
92
- }
93
- setCreateRequested(true);
94
- void createAgent({
95
- name: DEFAULT_AGENT_ID,
96
- description: 'Demo agent for notebook sidebar example',
97
- protocol: 'vercel-ai',
98
- model: DEFAULT_MODEL,
99
- systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCode only for temporary inspection code that should not modify notebook cells.',
100
- enableCodemode: false,
101
- sandboxVariant: 'jupyter',
102
- jupyterSandbox: jupyterSandboxUrl,
103
- }).catch(() => {
104
- setCreateRequested(false);
105
- });
106
- }, [jupyterSandboxUrl, createRequested, agentId, createAgent]);
107
- const effectiveReady = isReady || status === 'ready';
66
+ // One failed attempt is reported, not retried — see
67
+ // `useExampleJupyterAgent`.
68
+ const chatError = error || unavailableReason;
69
+ // The example's own agent, not merely the runtime: on the cloud target the
70
+ // runtime is ready before this agent has been registered on it.
71
+ const effectiveReady = agentReady;
108
72
  // Get notebook tools for ChatSidebar
109
- const tools = useNotebookTools(NOTEBOOK_ID);
110
73
  // Build Vercel AI protocol config
111
- const protocolConfig = useMemo(() => {
112
- return {
113
- type: 'vercel-ai',
114
- endpoint: vercelAiEndpoint,
115
- agentId: DEFAULT_AGENT_ID,
116
- enableConfigQuery: true,
117
- configEndpoint: `${baseUrl}/api/v1/configure`,
118
- };
119
- }, [baseUrl, vercelAiEndpoint]);
120
74
  return (_jsx(_Fragment, { children: _jsxs(Box, { sx: {
121
75
  height: 'calc(100vh - 70px)',
122
76
  width: '100vw',
@@ -132,7 +86,7 @@ export function AgentRuntimeNotebookExampleInner({ serviceManager, }) {
132
86
  borderBottom: '1px solid',
133
87
  borderColor: 'border.default',
134
88
  bg: 'canvas.default',
135
- }, children: [_jsx("h1", { style: { margin: 0, fontSize: '1.5rem' }, children: "Agent Runtime Notebook Chat Sidebar Example" }), _jsx("p", { style: { margin: '8px 0 0', color: 'var(--fgColor-muted)' }, children: "Chat with Jupyter Notebook integration" })] }), _jsx(Box, { sx: {
89
+ }, children: [_jsx("h1", { style: { margin: 0, fontSize: '1.5rem' }, children: "Notebook Chat Sidebar Example" }), _jsx("p", { style: { margin: '8px 0 0', color: 'var(--fgColor-muted)' }, children: "Chat with Jupyter Notebook integration" })] }), _jsx(Box, { sx: {
136
90
  flex: 1,
137
91
  display: 'flex',
138
92
  overflow: 'hidden',
@@ -146,7 +100,7 @@ export function AgentRuntimeNotebookExampleInner({ serviceManager, }) {
146
100
  overflow: 'hidden',
147
101
  }, children: _jsx(NotebookUI, { serviceManager: serviceManager }) }) })] }), effectiveReady && (_jsx(ChatSidebar, { title: "AI Assistant", protocol: protocolConfig, position: "right", width: 400, showNewChatButton: true, showClearButton: true, showSettingsButton: true, defaultOpen: true, panelProps: {
148
102
  protocol: protocolConfig,
149
- frontendTools: tools,
103
+ frontendTools: chatFrontendTools,
150
104
  useStore: false,
151
105
  showModelSelector: true,
152
106
  showToolsMenu: true,
@@ -169,7 +123,7 @@ export function AgentRuntimeNotebookExampleInner({ serviceManager, }) {
169
123
  message: 'Can you suggest improvements for the code?',
170
124
  },
171
125
  ],
172
- } })), error && (_jsxs(Box, { sx: {
126
+ } })), chatError && (_jsxs(Box, { sx: {
173
127
  position: 'fixed',
174
128
  bottom: 20,
175
129
  right: 20,
@@ -179,16 +133,18 @@ export function AgentRuntimeNotebookExampleInner({ serviceManager, }) {
179
133
  borderRadius: 2,
180
134
  maxWidth: 320,
181
135
  zIndex: 999,
182
- }, children: [_jsx("strong", { children: "Error:" }), " ", error] }))] }) }));
136
+ }, children: [_jsx("strong", { children: "Error:" }), " ", chatError] }))] }) }));
183
137
  }
184
138
  /**
185
- * Main example component with Simple wrapper
139
+ * The example, in the app's theme.
140
+ *
141
+ * The service manager comes from the shell, as it does in every other example:
142
+ * the shell owns which of the four runtime targets is selected, and reading it
143
+ * from an ambient Jupyter provider instead — which is what this example used
144
+ * to do — meant it could be showing a notebook on a different runtime than the
145
+ * one the picker says.
186
146
  */
187
- export function AgentRuntimeNotebookAgentSidebarExample() {
188
- return (_jsx(ThemedJupyterProvider, { children: _jsx(SimpleWrapper, {}) }));
189
- }
190
- function SimpleWrapper() {
191
- const { serviceManager } = useJupyter();
192
- return _jsx(AgentRuntimeNotebookExampleInner, { serviceManager: serviceManager });
147
+ export function AgentRuntimeNotebookAgentSidebarExample({ serviceManager, }) {
148
+ return (_jsx(ThemedProvider, { children: _jsx(AgentRuntimeNotebookExampleInner, { serviceManager: serviceManager }) }));
193
149
  }
194
150
  export default AgentRuntimeNotebookAgentSidebarExample;
@@ -12,5 +12,5 @@ import { ServiceManager } from '@jupyterlab/services';
12
12
  type INotebookCollaborationExampleProps = {
13
13
  serviceManager?: ServiceManager.IManager;
14
14
  };
15
- declare const NotebookCollaborationExample: (props: INotebookCollaborationExampleProps) => import("react/jsx-runtime").JSX.Element;
15
+ declare const NotebookCollaborationExample: (props: INotebookCollaborationExampleProps) => import("react").JSX.Element;
16
16
  export default NotebookCollaborationExample;
@@ -7,13 +7,16 @@ import { createDatalayerServiceManager } from '../services/DatalayerServiceManag
7
7
  import { useState, useEffect, useMemo } from 'react';
8
8
  import { Checkbox, FormControl, Heading } from '@primer/react';
9
9
  import { Box } from '@datalayer/primer-addons';
10
- import { loadJupyterConfig, Notebook } from '@datalayer/jupyter-react';
10
+ import { loadJupyterConfig, Notebook, JupyterCollaborationProvider, } from '@datalayer/jupyter-react';
11
11
  import { DatalayerCollaborationProvider } from '../collaboration';
12
12
  import { useCoreStore } from '../state';
13
13
  import { ThemedJupyterProvider } from './utils/themedProvider';
14
+ import { useRuntimeTargetStore } from './utils/runtimeTargetStore';
14
15
  import nbformatExample from './utils/notebooks/NotebookExample1.ipynb.json';
16
+ import { ExampleNotebookToolbar } from './utils/notebookToolbarItems';
15
17
  // This corresponds to the notebook ID in the URL when you open an existing notbook in your library
16
18
  const NOTEBOOK_ID = '01JZQRQ35GG871QQCZW9TB1A8J';
19
+ const ROOM_PATH = 'notebook-collaboration-example.ipynb';
17
20
  const NotebookCollaborationExample = (props) => {
18
21
  // Load config on component mount
19
22
  loadJupyterConfig();
@@ -21,7 +24,70 @@ const NotebookCollaborationExample = (props) => {
21
24
  const [enableCollaboration, setEnableCollaboration] = useState(false);
22
25
  const [readonly] = useState(false);
23
26
  const [serviceManager, setServiceManager] = useState(props.serviceManager);
27
+ const [collaborationReady, setCollaborationReady] = useState(false);
28
+ const [collaborationError, setCollaborationError] = useState(null);
24
29
  const { configuration } = useCoreStore();
30
+ const runtimeTarget = useRuntimeTargetStore(state => state.target);
31
+ useEffect(() => {
32
+ let cancelled = false;
33
+ const prepare = async () => {
34
+ if (!enableCollaboration || !serviceManager) {
35
+ setCollaborationReady(false);
36
+ setCollaborationError(null);
37
+ return;
38
+ }
39
+ setCollaborationReady(false);
40
+ setCollaborationError(null);
41
+ if (runtimeTarget === 'datalayer') {
42
+ setCollaborationReady(true);
43
+ return;
44
+ }
45
+ try {
46
+ await serviceManager.ready;
47
+ try {
48
+ await serviceManager.contents.get(ROOM_PATH, { content: false });
49
+ }
50
+ catch (error) {
51
+ if (error.response?.status !==
52
+ 404)
53
+ throw error;
54
+ try {
55
+ await serviceManager.contents.save(ROOM_PATH, {
56
+ type: 'notebook',
57
+ format: 'json',
58
+ content: nbformat,
59
+ });
60
+ }
61
+ catch (saveError) {
62
+ // Some Jupyter backends create the file but return a response that
63
+ // the contents client cannot decode. Verify before reporting it.
64
+ try {
65
+ await serviceManager.contents.get(ROOM_PATH, { content: false });
66
+ }
67
+ catch {
68
+ throw saveError;
69
+ }
70
+ }
71
+ }
72
+ // Do not open the collaboration websocket until the room file is
73
+ // observable through the same service manager.
74
+ await serviceManager.contents.get(ROOM_PATH, { content: false });
75
+ if (!cancelled)
76
+ setCollaborationReady(true);
77
+ }
78
+ catch (error) {
79
+ console.error('Failed to prepare collaboration room:', error);
80
+ if (!cancelled) {
81
+ setCollaborationReady(false);
82
+ setCollaborationError(String(error));
83
+ }
84
+ }
85
+ };
86
+ void prepare();
87
+ return () => {
88
+ cancelled = true;
89
+ };
90
+ }, [enableCollaboration, nbformat, runtimeTarget, serviceManager]);
25
91
  useEffect(() => {
26
92
  // Create DatalayerServiceManager if not provided
27
93
  const createManager = async () => {
@@ -49,25 +115,47 @@ const NotebookCollaborationExample = (props) => {
49
115
  };
50
116
  createManager();
51
117
  }, [props.serviceManager, configuration]);
52
- // Create the collaboration provider when enabled
53
- const collaborationProvider = useMemo(() => {
54
- if (!enableCollaboration) {
55
- return undefined;
118
+ // Each Notebook owns its own shared model, so each pane needs a separate
119
+ // provider. Both providers point at the same real library document.
120
+ const collaborationProviders = useMemo(() => {
121
+ if (!enableCollaboration || !collaborationReady) {
122
+ return [undefined, undefined];
123
+ }
124
+ if (runtimeTarget === 'local') {
125
+ const config = {
126
+ path: ROOM_PATH,
127
+ serverSettings: serviceManager?.serverSettings,
128
+ };
129
+ return [
130
+ new JupyterCollaborationProvider(config),
131
+ new JupyterCollaborationProvider(config),
132
+ ];
56
133
  }
57
134
  const spacerUrl = configuration?.spacerUrl;
58
135
  const token = configuration?.token;
59
- if (!spacerUrl || !token) {
60
- console.warn('Datalayer collaboration enabled but spacerUrl or token not configured. ' +
61
- 'Please configure them in the Datalayer store or environment.');
62
- return undefined;
63
- }
64
- // Create and return the Datalayer collaboration provider
65
- return new DatalayerCollaborationProvider({
66
- spacerUrl,
67
- token,
68
- });
69
- }, [enableCollaboration, configuration]);
70
- return (_jsx(ThemedJupyterProvider, { children: _jsxs(Box, { p: 3, children: [_jsx(Heading, { as: "h2", sx: { mb: 3 }, children: "Notebook Collaboration Example" }), _jsx(Box, { sx: { mb: 3 }, children: _jsxs(FormControl, { children: [_jsx(Checkbox, { checked: enableCollaboration, onChange: e => setEnableCollaboration(e.target.checked) }), _jsx(FormControl.Label, { children: "Enable Datalayer Collaboration" })] }) }), (!configuration?.spacerUrl || !configuration?.token) && (_jsx(Box, { sx: { mb: 2, p: 2, bg: 'danger.subtle' }, children: "Warning: Datalayer configuration is missing. Please configure spacerUrl and token to use DatalayerServiceManager and collaboration features." })), !serviceManager && (_jsx(Box, { sx: { mb: 2, p: 2, bg: 'attention.subtle' }, children: "Note: DatalayerServiceManager is not available. Notebook functionality will be limited." })), enableCollaboration ? (_jsxs(Box, { sx: {
136
+ if (!spacerUrl || !token)
137
+ return [undefined, undefined];
138
+ return [
139
+ new DatalayerCollaborationProvider({ spacerUrl, token }),
140
+ new DatalayerCollaborationProvider({ spacerUrl, token }),
141
+ ];
142
+ }, [
143
+ enableCollaboration,
144
+ collaborationReady,
145
+ runtimeTarget,
146
+ configuration?.spacerUrl,
147
+ configuration?.token,
148
+ ]);
149
+ const [collaborationProvider1, collaborationProvider2] = collaborationProviders;
150
+ // Close websocket connections when collaboration is disabled or the example
151
+ // is unmounted. This also prevents stale providers from keeping a notebook
152
+ // in its loading state after toggling the checkbox.
153
+ useEffect(() => {
154
+ return () => {
155
+ collaborationProviders.forEach(provider => provider?.dispose());
156
+ };
157
+ }, [collaborationProviders]);
158
+ return (_jsx(ThemedJupyterProvider, { children: _jsxs(Box, { p: 3, children: [_jsx(Heading, { as: "h2", sx: { mb: 3 }, children: "Notebook Collaboration Example" }), _jsxs(Box, { sx: { mb: 3 }, children: [_jsxs(FormControl, { children: [_jsx(Checkbox, { checked: enableCollaboration, onChange: e => setEnableCollaboration(e.target.checked) }), _jsx(FormControl.Label, { children: "Enable Datalayer Collaboration" })] }), enableCollaboration && runtimeTarget !== 'datalayer' && (_jsx(Box, { sx: { mt: 1, color: 'fg.muted', fontSize: 0 }, children: "Real-time Datalayer collaboration requires the cloud runtime target. Local mode does not expose a collaboration room." }))] }), (!configuration?.spacerUrl || !configuration?.token) && (_jsx(Box, { sx: { mb: 2, p: 2, bg: 'danger.subtle' }, children: "Warning: Datalayer configuration is missing. Please configure spacerUrl and token to use DatalayerServiceManager and collaboration features." })), !serviceManager && (_jsx(Box, { sx: { mb: 2, p: 2, bg: 'attention.subtle' }, children: "Note: DatalayerServiceManager is not available. Notebook functionality will be limited." })), collaborationError && (_jsxs(Box, { sx: { mb: 2, p: 2, bg: 'danger.subtle' }, children: ["Collaboration could not start: ", collaborationError] })), enableCollaboration && collaborationReady ? (_jsxs(Box, { sx: {
71
159
  display: 'flex',
72
160
  gap: 2,
73
161
  flexDirection: 'row',
@@ -82,7 +170,7 @@ const NotebookCollaborationExample = (props) => {
82
170
  borderBottom: '1px solid',
83
171
  borderColor: 'border.default',
84
172
  fontWeight: 'bold',
85
- }, children: "Collaborator 1" }), serviceManager ? (_jsx(Notebook, { id: `${NOTEBOOK_ID}-collab-1`, height: "calc(100vh - 280px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: true, collaborationProvider: collaborationProvider })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." }))] }), _jsxs(Box, { sx: {
173
+ }, children: "Collaborator 1" }), serviceManager ? (_jsx(Notebook, { id: NOTEBOOK_ID, Toolbar: ExampleNotebookToolbar, path: ROOM_PATH, height: "calc(100vh - 280px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: true, collaborationProvider: collaborationProvider1 })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." }))] }), _jsxs(Box, { sx: {
86
174
  flex: 1,
87
175
  border: '1px solid',
88
176
  borderColor: 'border.default',
@@ -93,10 +181,10 @@ const NotebookCollaborationExample = (props) => {
93
181
  borderBottom: '1px solid',
94
182
  borderColor: 'border.default',
95
183
  fontWeight: 'bold',
96
- }, children: "Collaborator 2" }), serviceManager ? (_jsx(Notebook, { id: `${NOTEBOOK_ID}-collab-2`, height: "calc(100vh - 280px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: false, collaborationProvider: collaborationProvider })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." }))] })] })) : (_jsx(Box, { sx: {
184
+ }, children: "Collaborator 2" }), serviceManager ? (_jsx(Notebook, { id: NOTEBOOK_ID, Toolbar: ExampleNotebookToolbar, path: ROOM_PATH, height: "calc(100vh - 280px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: false, collaborationProvider: collaborationProvider2 })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." }))] })] })) : (_jsx(Box, { sx: {
97
185
  border: '1px solid',
98
186
  borderColor: 'border.default',
99
187
  borderRadius: 2,
100
- }, children: serviceManager ? (_jsx(Notebook, { id: NOTEBOOK_ID, height: "calc(100vh - 200px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: true, collaborationProvider: collaborationProvider })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." })) })), _jsxs(Box, { sx: { mt: 2, fontSize: 1, color: 'fg.subtle' }, children: [_jsx(Box, { as: "p", sx: { m: 0, mb: 2 }, children: "This example demonstrates how to use Datalayer services with Notebook:" }), _jsxs(Box, { as: "ul", sx: { m: 0, pl: 3, '& li': { mb: 1 } }, children: [_jsxs("li", { children: [_jsx("strong", { children: "DatalayerServiceManager:" }), " Connects to Datalayer infrastructure for kernel management"] }), _jsxs("li", { children: [_jsx("strong", { children: "DatalayerCollaborationProvider:" }), " Enables real-time collaboration"] }), _jsx("li", { children: "Both require Datalayer credentials (spacerUrl and token)" }), _jsx("li", { children: "Pass them directly to the base Notebook component" }), _jsx("li", { children: "No wrapper components needed - just create the services and pass them as props" }), _jsx("li", { children: "This shows the explicit, composable pattern for Datalayer integration" })] })] })] }) }));
188
+ }, children: serviceManager ? (_jsx(Notebook, { id: NOTEBOOK_ID, Toolbar: ExampleNotebookToolbar, height: "calc(100vh - 200px)", nbformat: nbformat, readonly: readonly, serviceManager: serviceManager, startDefaultKernel: true, collaborationProvider: collaborationProvider1 })) : (_jsx(Box, { sx: { p: 4, textAlign: 'center' }, children: "Loading ServiceManager..." })) })), _jsxs(Box, { sx: { mt: 2, fontSize: 1, color: 'fg.subtle' }, children: [_jsx(Box, { as: "p", sx: { m: 0, mb: 2 }, children: "This example demonstrates how to use Datalayer services with Notebook:" }), _jsxs(Box, { as: "ul", sx: { m: 0, pl: 3, '& li': { mb: 1 } }, children: [_jsxs("li", { children: [_jsx("strong", { children: "DatalayerServiceManager:" }), " Connects to Datalayer infrastructure for kernel management"] }), _jsxs("li", { children: [_jsx("strong", { children: "DatalayerCollaborationProvider:" }), " Enables real-time collaboration"] }), _jsx("li", { children: "Both require Datalayer credentials (spacerUrl and token)" }), _jsx("li", { children: "Pass them directly to the base Notebook component" }), _jsx("li", { children: "No wrapper components needed - just create the services and pass them as props" }), _jsx("li", { children: "This shows the explicit, composable pattern for Datalayer integration" })] })] })] }) }));
101
189
  };
102
190
  export default NotebookCollaborationExample;
@@ -2,5 +2,5 @@ import { ServiceManager } from '@jupyterlab/services';
2
2
  type IJupyterNotebookExampleProps = {
3
3
  serviceManager?: ServiceManager.IManager;
4
4
  };
5
- export declare const JupyterNotebookExample: (props: IJupyterNotebookExampleProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const JupyterNotebookExample: (props: IJupyterNotebookExampleProps) => import("react").JSX.Element;
6
6
  export default JupyterNotebookExample;
@@ -3,23 +3,33 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  * Copyright (c) 2025-2026 Datalayer, Inc.
4
4
  * Distributed under the terms of the Modified BSD License.
5
5
  */
6
- /*
7
- * Copyright (c) 2021-2023 Datalayer, Inc.
8
- *
9
- * MIT License
10
- */
11
6
  import { useMemo } from 'react';
12
7
  import { Box } from '@datalayer/primer-addons';
13
- import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, } from '@datalayer/jupyter-react';
8
+ import { Notebook, CellSidebarExtension, CellSidebarButton, } from '@datalayer/jupyter-react';
14
9
  import { ThemedJupyterProvider } from './utils/themedProvider';
15
10
  import nbformatExample from './utils/notebooks/NotebookExample1.ipynb.json';
11
+ import { ExampleNotebookToolbar } from './utils/notebookToolbarItems';
16
12
  const NOTEBOOK_ID = 'notebook-example-1';
17
13
  export const JupyterNotebookExample = (props) => {
18
14
  const { serviceManager } = props;
19
15
  const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
20
- if (!serviceManager) {
21
- return (_jsxs(Box, { as: "h1", children: ["Notebook Example", _jsx("div", { children: "Loading..." })] }));
22
- }
23
- return (_jsxs(ThemedJupyterProvider, { children: [_jsx(Box, { as: "h1", children: "Notebook Example" }), _jsx(Notebook, { id: NOTEBOOK_ID, nbformat: nbformatExample, serviceManager: serviceManager, startDefaultKernel: true, extensions: extensions, Toolbar: NotebookToolbar })] }));
16
+ return (_jsxs(Box, { sx: {
17
+ flex: 1,
18
+ display: 'flex',
19
+ flexDirection: 'column',
20
+ overflow: 'auto',
21
+ padding: 3,
22
+ }, children: [_jsxs(Box, { sx: {
23
+ marginBottom: 3,
24
+ paddingBottom: 3,
25
+ borderBottom: '1px solid',
26
+ borderColor: 'border.default',
27
+ }, children: [_jsx(Box, { as: "h1", sx: { margin: 0 }, children: "Notebook Example" }), _jsx("p", { children: "A notebook on the selected sandbox, with the kernel indicator in its toolbar." })] }), _jsx(Box, { sx: {
28
+ border: '1px solid',
29
+ borderColor: 'border.default',
30
+ borderRadius: 2,
31
+ padding: 3,
32
+ backgroundColor: 'canvas.default',
33
+ }, children: serviceManager ? (_jsx(ThemedJupyterProvider, { children: _jsx(Notebook, { id: NOTEBOOK_ID, nbformat: nbformatExample, serviceManager: serviceManager, startDefaultKernel: true, extensions: extensions, Toolbar: ExampleNotebookToolbar, height: "calc(100vh - 300px)", cellSidebarMargin: 120 }) })) : (_jsx(Box, { sx: { padding: 3 }, children: _jsx("p", { children: "Loading service manager..." }) })) })] }));
24
34
  };
25
35
  export default JupyterNotebookExample;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A notebook as a page, with a team of agents working in it.
3
+ *
4
+ * The page layout: the notebook on a centred sheet over a quiet canvas, like
5
+ * a document application; the composer docked directly above the sheet and
6
+ * exactly as wide, as its command line; the conversation in a panel at the
7
+ * side, opened from the header when it is wanted. Ask the Analyst for an analysis and the cells
8
+ * appear on the page; ask the Reviewer to check it and the verdict lands
9
+ * beside them.
10
+ *
11
+ * Reactor plugins only. `pageLayout` mounts `LoopPageLayoutPlugin`, which
12
+ * hands the chat view's parts to primer-addons' page layout through the
13
+ * `LoopChatLayout` point; the
14
+ * `jupyter` team brings the Analyst, the Reviewer, the Writer and
15
+ * the rest of the notebook's agents;
16
+ * the loop turns in the browser, so nothing has to be installed or signed
17
+ * into.
18
+ *
19
+ * @module examples/NotebookPageAgent
20
+ */
21
+ import React from 'react';
22
+ declare const NotebookPageAgent: React.FC;
23
+ export default NotebookPageAgent;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from '@datalayer/primer-addons';
3
+ import { ThemedProvider } from './utils/themedProvider';
4
+ import { LoopEmbed } from '../loop';
5
+ const NotebookPageAgent = () => (_jsx(ThemedProvider, { children: _jsx(Box, { sx: { height: '100vh', minHeight: 0 }, children: _jsx(LoopEmbed, { target: "browser",
6
+ /* The Analyst is the team's front door; the team puts the other
7
+ members one click away in the composer's agents menu. */
8
+ agentId: "jupyter-data-analyst", teamId: "jupyter",
9
+ /* The notebook, open on the page. */
10
+ defaultEditor: "notebook", pageLayout: true,
11
+ /* The composer as a draggable card over the top of the page rather
12
+ than the docked band. */
13
+ pageLayoutPrompt: "floating",
14
+ /* The header carries the editor choice — notebook, document, or the
15
+ conversation alone — and the page layout's conversation toggle. */
16
+ showHeader: true, editorSelector: true, commandPalette: true, agentSummary: false }) }) }));
17
+ export default NotebookPageAgent;
@@ -11,6 +11,11 @@ import React from 'react';
11
11
  * Also clears the shared chat + conversation stores synchronously as the
12
12
  * new example mounts, so switching examples never leaks messages from the
13
13
  * previously-mounted chat.
14
+ *
15
+ * And it declares, for every chat an example renders, whether there is an agent
16
+ * to talk to. Two of the four runtime targets are a sandbox and nothing else,
17
+ * and saying so once here is why no example has to know which: the chat shows
18
+ * itself switched off, with the reason in its header, wherever it is mounted.
14
19
  */
15
20
  export declare const ExampleWrapper: React.FC<{
16
21
  children: React.ReactNode;
@@ -6,6 +6,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import { useLayoutEffect } from 'react';
7
7
  import { Box } from '@datalayer/primer-addons';
8
8
  import { useChatStore, useConversationStore } from '../../stores';
9
+ import { ChatAvailabilityProvider } from '../../chat/base/ChatAvailability';
10
+ import { useRuntimeTarget } from '../utils/runtimeTargetStore';
9
11
  /**
10
12
  * ExampleWrapper
11
13
  *
@@ -18,40 +20,46 @@ import { useChatStore, useConversationStore } from '../../stores';
18
20
  * Also clears the shared chat + conversation stores synchronously as the
19
21
  * new example mounts, so switching examples never leaks messages from the
20
22
  * previously-mounted chat.
23
+ *
24
+ * And it declares, for every chat an example renders, whether there is an agent
25
+ * to talk to. Two of the four runtime targets are a sandbox and nothing else,
26
+ * and saying so once here is why no example has to know which: the chat shows
27
+ * itself switched off, with the reason in its header, wherever it is mounted.
21
28
  */
22
29
  export const ExampleWrapper = ({ children, }) => {
30
+ const { hasAgent, noAgentReason } = useRuntimeTarget();
23
31
  useLayoutEffect(() => {
24
32
  useChatStore.getState().reset();
25
33
  useConversationStore.getState().clearAll();
26
34
  }, []);
27
- return (_jsx(Box, { sx: {
28
- position: 'relative',
29
- height: '100%',
30
- width: '100%',
31
- minHeight: 0,
32
- overflow: 'hidden',
33
- display: 'flex',
34
- flexDirection: 'column',
35
- fontFamily: 'var(--fontStack-sansSerif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif)',
36
- lineHeight: 1.5,
37
- '& h1, & h2, & h3, & h4, & h5, & h6, & p, & li, & span, & label, & button, & input, & textarea, & select': {
38
- fontFamily: 'inherit',
39
- },
40
- // Generic constraint: every example's root child fills the wrapper
41
- // exactly and cannot exceed it. This neutralises stray `100vh`/
42
- // `calc(100vh - Npx)` heights inside individual examples so the
43
- // chat footer (or any bottom UI) always remains in the viewport.
44
- '& > *': {
45
- flex: '1 1 0',
46
- minHeight: 0,
47
- maxHeight: '100%',
35
+ return (_jsx(ChatAvailabilityProvider, { disabled: !hasAgent, disableReason: hasAgent ? undefined : noAgentReason, children: _jsx(Box, { sx: {
36
+ position: 'relative',
37
+ height: '100%',
48
38
  width: '100%',
49
- // Default scroll behaviour for plain content pages. Examples
50
- // that manage their own internal scrollers can override this
51
- // by setting `overflow: 'hidden'` (or another value) on their
52
- // root element \u2014 the child rule wins on specificity.
53
- overflow: 'auto',
54
- },
55
- }, children: children }));
39
+ minHeight: 0,
40
+ overflow: 'hidden',
41
+ display: 'flex',
42
+ flexDirection: 'column',
43
+ fontFamily: 'var(--fontStack-sansSerif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif)',
44
+ lineHeight: 1.5,
45
+ '& h1, & h2, & h3, & h4, & h5, & h6, & p, & li, & span, & label, & button, & input, & textarea, & select': {
46
+ fontFamily: 'inherit',
47
+ },
48
+ // Generic constraint: every example's root child fills the wrapper
49
+ // exactly and cannot exceed it. This neutralises stray `100vh`/
50
+ // `calc(100vh - Npx)` heights inside individual examples so the
51
+ // chat footer (or any bottom UI) always remains in the viewport.
52
+ '& > *': {
53
+ flex: '1 1 0',
54
+ minHeight: 0,
55
+ maxHeight: '100%',
56
+ width: '100%',
57
+ // Default scroll behaviour for plain content pages. Examples
58
+ // that manage their own internal scrollers can override this
59
+ // by setting `overflow: 'hidden'` (or another value) on their
60
+ // root element \u2014 the child rule wins on specificity.
61
+ overflow: 'auto',
62
+ },
63
+ }, children: children }) }));
56
64
  };
57
65
  export default ExampleWrapper;
@@ -9,7 +9,7 @@ export interface LexicalEditorProps {
9
9
  serviceManager?: ServiceManager.IManager;
10
10
  /** Optional extra toolbar items (e.g. AI actions from useChatInlineToolbarItems) */
11
11
  extraItems?: ToolbarItem[];
12
- /** Optional additional children to render inside the LexicalComposer */
12
+ /** Optional additional children to render inside the composer */
13
13
  children?: React.ReactNode;
14
14
  }
15
15
  /**