@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
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Whether a URL names a service on this machine.
7
+ *
8
+ * Asked this way round on purpose. The test it replaces was "is this prod1?",
9
+ * which took every host it did not recognise for a local one — so once the
10
+ * configured service moved to `r1`, Local mode accepted the cloud URL as its
11
+ * own and the browser dialled it from `localhost`, where CORS refused it.
12
+ *
13
+ * The set of remote hosts is open — `prod1`, `r1`, whatever a deployment adds
14
+ * next — while the set of local ones is not, so the closed set is the one
15
+ * worth enumerating.
16
+ *
17
+ * Shared rather than copied because the same mistake is available to every
18
+ * "local" URL the examples resolve, and it was made twice: once for the
19
+ * Jupyter server, and once — unfixed until now — for the agent-runtimes
20
+ * server, where `VITE_DATALAYER_AGENT_RUNTIMES_URL` defaults to the cloud and
21
+ * was being handed back as the address of a server running on this laptop.
22
+ *
23
+ * @module examples/utils/localUrl
24
+ */
25
+ /** Hosts that mean "this machine", exhaustively. */
26
+ const LOCAL_HOSTS = new Set([
27
+ 'localhost',
28
+ '127.0.0.1',
29
+ '0.0.0.0',
30
+ '::1',
31
+ '[::1]',
32
+ ]);
33
+ export function isLocalUrl(value) {
34
+ if (!value) {
35
+ return false;
36
+ }
37
+ let host;
38
+ try {
39
+ host = new URL(value).hostname.toLowerCase();
40
+ }
41
+ catch {
42
+ // Not a whole URL — a bare `localhost:8765`, say. Match on the text.
43
+ return /(^|\/\/)(localhost|127\.0\.0\.1|0\.0\.0\.0|\[?::1\]?)([:/]|$)/.test(value);
44
+ }
45
+ return (LOCAL_HOSTS.has(host) ||
46
+ host.endsWith('.localhost') ||
47
+ host.endsWith('.local'));
48
+ }
49
+ export default isLocalUrl;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The toolbar every notebook example shows: the kernel indicator, in the
3
+ * colours of the theme the reader picked.
4
+ *
5
+ * A notebook toolbar knows how to save, run and interrupt; it does not know
6
+ * what it is running *on*, and someone reading an example wants to see that —
7
+ * whether a kernel is attached, whether it is busy, what it is. `NotebookToolbar`
8
+ * takes `extraItems` for exactly this, and its own docstring names the kernel
9
+ * indicator as the case.
10
+ *
11
+ * The examples app lets a reader change theme, and until now the notebook was
12
+ * the one part of the page that ignored them: a themed shell around a toolbar
13
+ * on Primer's stock canvas. Its background takes the theme's brand colour now,
14
+ * which is also what makes the picker legible — you can see what a theme
15
+ * *does*. The controls themselves stay stock.
16
+ *
17
+ * One toolbar, built once here, so every notebook example shows the same thing
18
+ * in the same place rather than each growing its own.
19
+ *
20
+ * @module examples/utils/notebookToolbarItems
21
+ */
22
+ import type { JSX } from 'react';
23
+ import type { ToolbarItem } from '@datalayer/primer-addons';
24
+ import { type INotebookToolbarProps } from '@datalayer/jupyter-react';
25
+ /**
26
+ * A toolbar item showing the notebook's kernel.
27
+ *
28
+ * Pushed to the trailing edge by a spacer, because it reports rather than
29
+ * acts: the buttons are what a person reaches for, and a status light sitting
30
+ * among them reads like one more thing to press.
31
+ *
32
+ * @param notebookId Notebook whose kernel to show.
33
+ */
34
+ export declare function useKernelIndicatorToolbarItems(notebookId: string): ToolbarItem[];
35
+ /**
36
+ * The toolbar every notebook example uses.
37
+ *
38
+ * `NotebookToolbar` with the kernel indicator added — passed as the
39
+ * `Toolbar` prop of `Notebook`, which hands it the notebook's id.
40
+ *
41
+ * Examples pass this rather than assembling the items themselves, so the
42
+ * indicator appears in the same place with the same behaviour in all of them,
43
+ * over a background in the colour of the theme the reader chose.
44
+ */
45
+ export declare function ExampleNotebookToolbar({ notebookId, extraItems, ...rest }: INotebookToolbarProps): JSX.Element;
46
+ export default useKernelIndicatorToolbarItems;
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo } from 'react';
3
+ import { KernelIndicator, NOTEBOOK_TOOLBAR_ITEM_ORDERS, NotebookToolbar, useNotebookStore, } from '@datalayer/jupyter-react';
4
+ import { useThemeBrandColor } from './themedProvider';
5
+ /** Trailing edge of the toolbar: past the last item the notebook contributes. */
6
+ const KERNEL_INDICATOR_ORDER = NOTEBOOK_TOOLBAR_ITEM_ORDERS.cellType + 100;
7
+ /**
8
+ * The kernel indicator for one notebook.
9
+ *
10
+ * A component rather than a value captured in the toolbar item, because a
11
+ * notebook gets its kernel *after* its toolbar first renders — the adapter is
12
+ * registered, then the kernel is attached, then it connects. Reading the store
13
+ * from inside the render means each of those steps reaches the indicator; a
14
+ * kernel captured when the item was built would stay `null` and the indicator
15
+ * would sit at an unknown state forever.
16
+ */
17
+ function NotebookKernelIndicator({ notebookId, }) {
18
+ const notebookStore = useNotebookStore();
19
+ // Subscribing to the store means every adapter/kernel/status change
20
+ // re-renders this, which is what keeps the light honest.
21
+ const kernel = notebookStore.selectNotebookAdapter(notebookId)?.kernel ?? null;
22
+ return (_jsx(KernelIndicator, { kernel: kernel,
23
+ // Borderless: the toolbar already draws the frame around it.
24
+ bordered: false }));
25
+ }
26
+ /**
27
+ * A toolbar item showing the notebook's kernel.
28
+ *
29
+ * Pushed to the trailing edge by a spacer, because it reports rather than
30
+ * acts: the buttons are what a person reaches for, and a status light sitting
31
+ * among them reads like one more thing to press.
32
+ *
33
+ * @param notebookId Notebook whose kernel to show.
34
+ */
35
+ export function useKernelIndicatorToolbarItems(notebookId) {
36
+ return useMemo(() => [
37
+ {
38
+ key: 'notebook-kernel-indicator-spacer',
39
+ type: 'spacer',
40
+ order: KERNEL_INDICATOR_ORDER - 1,
41
+ },
42
+ {
43
+ key: 'notebook-kernel-indicator',
44
+ type: 'custom',
45
+ order: KERNEL_INDICATOR_ORDER,
46
+ group: 'kernel',
47
+ render: () => _jsx(NotebookKernelIndicator, { notebookId: notebookId }),
48
+ },
49
+ ], [notebookId]);
50
+ }
51
+ /**
52
+ * A colour at an opacity, whatever notation it was written in.
53
+ *
54
+ * Theme brand colours are hex, and mixing hex by hand is three lines of
55
+ * parsing; `color-mix` does it for any notation and is the fallback for
56
+ * anything that is not a plain `#rrggbb`.
57
+ */
58
+ function tint(color, alpha) {
59
+ const hex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(color.trim());
60
+ if (!hex) {
61
+ return `color-mix(in srgb, ${color} ${Math.round(alpha * 100)}%, transparent)`;
62
+ }
63
+ const digits = hex[1].length === 3
64
+ ? hex[1]
65
+ .split('')
66
+ .map(digit => digit + digit)
67
+ .join('')
68
+ : hex[1];
69
+ const value = parseInt(digits, 16);
70
+ // eslint-disable-next-line no-bitwise
71
+ return `rgba(${(value >> 16) & 255}, ${(value >> 8) & 255}, ${value & 255}, ${alpha})`;
72
+ }
73
+ /** The one stylesheet holding the toolbar's themed background. */
74
+ const TOOLBAR_THEME_STYLE_ID = 'dla-example-notebook-toolbar-theme';
75
+ /**
76
+ * Paint the notebook toolbars in the theme's colour.
77
+ *
78
+ * Through a stylesheet rather than a wrapper element, and that is not a
79
+ * stylistic preference — a wrapper is a bug here. `Notebook` renders the
80
+ * toolbar as a direct child of `#dla-Jupyter-Notebook`, a box of *fixed*
81
+ * height, and the toolbar keeps itself to one line by measuring the room it
82
+ * has with a `ResizeObserver` on itself **and on its parent**. Wrap it and the
83
+ * parent becomes a box whose height follows its content: the toolbar
84
+ * re-lays-out, the wrapper resizes, the observer fires, the toolbar
85
+ * re-lays-out — a render loop with no end. Styling it in place leaves the
86
+ * parent exactly as the notebook built it.
87
+ *
88
+ * Only the background is themed. The controls keep Primer's own colours: they
89
+ * are the things a person presses, and a toolbar whose buttons change hue with
90
+ * a theme picker reads as decoration rather than as controls.
91
+ */
92
+ function useThemedToolbarBackground(brandColor) {
93
+ useEffect(() => {
94
+ if (typeof document === 'undefined') {
95
+ return;
96
+ }
97
+ let style = document.getElementById(TOOLBAR_THEME_STYLE_ID);
98
+ if (!style) {
99
+ style = document.createElement('style');
100
+ style.id = TOOLBAR_THEME_STYLE_ID;
101
+ document.head.appendChild(style);
102
+ }
103
+ // Scoped to the notebook's own container, so nothing else in the examples
104
+ // app picks the colour up by accident.
105
+ style.textContent = `
106
+ #dla-Jupyter-Notebook > [role='toolbar'] {
107
+ background: ${tint(brandColor, 0.09)};
108
+ border-bottom: 1px solid ${tint(brandColor, 0.24)};
109
+ }
110
+ `;
111
+ }, [brandColor]);
112
+ }
113
+ /**
114
+ * The toolbar every notebook example uses.
115
+ *
116
+ * `NotebookToolbar` with the kernel indicator added — passed as the
117
+ * `Toolbar` prop of `Notebook`, which hands it the notebook's id.
118
+ *
119
+ * Examples pass this rather than assembling the items themselves, so the
120
+ * indicator appears in the same place with the same behaviour in all of them,
121
+ * over a background in the colour of the theme the reader chose.
122
+ */
123
+ export function ExampleNotebookToolbar({ notebookId, extraItems, ...rest }) {
124
+ const kernelItems = useKernelIndicatorToolbarItems(notebookId);
125
+ const items = useMemo(() => [...kernelItems, ...(extraItems ?? [])], [kernelItems, extraItems]);
126
+ useThemedToolbarBackground(useThemeBrandColor());
127
+ return (_jsx(NotebookToolbar, { notebookId: notebookId, extraItems: items, ...rest }));
128
+ }
129
+ export default useKernelIndicatorToolbarItems;
@@ -1,4 +1,35 @@
1
- export type ExampleRuntimeTarget = 'local' | 'cloud';
1
+ /** Where the code runs. */
2
+ export type ExampleRuntimeTarget =
3
+ /** Pyodide in this page, and the agent loop with it. */
4
+ 'browser'
5
+ /** A local agent-runtimes server and the Jupyter server beside it. */
6
+ | 'local'
7
+ /** An anonymous Jupyter server on prod1.datalayer.run. Sandbox only. */
8
+ | 'jupyter'
9
+ /** An authenticated Datalayer agent runtime. */
10
+ | 'datalayer';
11
+ /** What a target offers, so callers ask rather than special-case. */
12
+ export interface RuntimeTargetCapabilities {
13
+ /** How to name it in the control. */
14
+ readonly label: string;
15
+ /** One line for the tooltip: what this actually is. */
16
+ readonly hint: string;
17
+ /** Whether an agent runs alongside the sandbox. */
18
+ readonly hasAgent: boolean;
19
+ /** Whether reaching it needs the person to be signed in. */
20
+ readonly requiresAuth: boolean;
21
+ /** Why the chat is off here, when it is. Empty when there is an agent. */
22
+ readonly noAgentReason: string;
23
+ }
24
+ /**
25
+ * The four targets, in the order the control shows them: nearest the person
26
+ * first, furthest last.
27
+ */
28
+ export declare const RUNTIME_TARGETS: ReadonlyArray<ExampleRuntimeTarget>;
29
+ /** What a target offers. */
30
+ export declare function runtimeTargetCapabilities(target: ExampleRuntimeTarget): RuntimeTargetCapabilities;
31
+ /** Whether an agent runs on this target — the question the chat asks. */
32
+ export declare function targetHasAgent(target: ExampleRuntimeTarget): boolean;
2
33
  interface RuntimeTargetState {
3
34
  target: ExampleRuntimeTarget;
4
35
  setTarget: (target: ExampleRuntimeTarget) => void;
@@ -6,4 +37,12 @@ interface RuntimeTargetState {
6
37
  export declare const runtimeTargetStore: import("zustand").StoreApi<RuntimeTargetState>;
7
38
  export declare function useRuntimeTargetStore(): RuntimeTargetState;
8
39
  export declare function useRuntimeTargetStore<T>(selector: (state: RuntimeTargetState) => T): T;
40
+ /**
41
+ * The current target and what it offers, in one read.
42
+ *
43
+ * This is what an example uses: it asks what it has, not where it is.
44
+ */
45
+ export declare function useRuntimeTarget(): {
46
+ target: ExampleRuntimeTarget;
47
+ } & RuntimeTargetCapabilities;
9
48
  export {};
@@ -2,15 +2,87 @@
2
2
  * Copyright (c) 2025-2026 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
+ /**
6
+ * Where an example's code runs, and whether an agent runs with it.
7
+ *
8
+ * Four positions rather than two, because "local or cloud" hid a second
9
+ * question a person actually has: is there an agent here at all? One of these
10
+ * targets is a sandbox and nothing else — an anonymous Jupyter server — and an
11
+ * example mounted on it can execute code but has nobody to talk to. Saying so
12
+ * in the model means the chat can be shown and switched off with a reason,
13
+ * rather than each example guessing.
14
+ *
15
+ * The browser used to be the second such target. It has an agent now: the loop
16
+ * turns in the page with the Vercel AI SDK, which needs no server behind it.
17
+ * The spec's own `harness` does not decide that — the location does, because
18
+ * the browser cannot turn a pydantic-ai loop whatever a spec asks for.
19
+ *
20
+ * The examples shell owns launching and switching. An example reads the target
21
+ * and what it offers; it never creates a runtime itself.
22
+ *
23
+ * @module examples/utils/runtimeTargetStore
24
+ */
5
25
  import { createStore } from 'zustand/vanilla';
6
26
  import { useStore } from 'zustand';
27
+ /**
28
+ * The four targets, in the order the control shows them: nearest the person
29
+ * first, furthest last.
30
+ */
31
+ export const RUNTIME_TARGETS = [
32
+ 'browser',
33
+ 'local',
34
+ 'jupyter',
35
+ 'datalayer',
36
+ ];
37
+ const CAPABILITIES = {
38
+ browser: {
39
+ label: 'Browser',
40
+ hint: 'Python in this page (Pyodide), with the agent loop running here too — no runtime to allocate. Only the model is asked over the network.',
41
+ hasAgent: true,
42
+ // The agent needs none, but the model it asks does: the inference service
43
+ // holds the provider credentials and admits signed-in members only.
44
+ requiresAuth: true,
45
+ noAgentReason: '',
46
+ },
47
+ local: {
48
+ label: 'Local',
49
+ hint: 'An agent on your machine, with the Jupyter server beside it.',
50
+ hasAgent: true,
51
+ requiresAuth: false,
52
+ noAgentReason: '',
53
+ },
54
+ jupyter: {
55
+ label: 'Jupyter',
56
+ hint: 'An anonymous Jupyter server on prod1.datalayer.run. Sandbox only — no agent.',
57
+ hasAgent: false,
58
+ requiresAuth: false,
59
+ noAgentReason: 'No agent on an anonymous Jupyter server',
60
+ },
61
+ datalayer: {
62
+ label: 'Datalayer',
63
+ hint: 'An authenticated Datalayer agent runtime, with its sandbox.',
64
+ hasAgent: true,
65
+ requiresAuth: true,
66
+ noAgentReason: '',
67
+ },
68
+ };
69
+ /** What a target offers. */
70
+ export function runtimeTargetCapabilities(target) {
71
+ return CAPABILITIES[target] ?? CAPABILITIES.local;
72
+ }
73
+ /** Whether an agent runs on this target — the question the chat asks. */
74
+ export function targetHasAgent(target) {
75
+ return runtimeTargetCapabilities(target).hasAgent;
76
+ }
7
77
  const STORAGE_KEY = 'agent-runtimes.examples.runtime-target';
78
+ const isTarget = (value) => typeof value === 'string' &&
79
+ RUNTIME_TARGETS.includes(value);
8
80
  const readStoredTarget = () => {
9
81
  if (typeof window === 'undefined') {
10
82
  return 'local';
11
83
  }
12
84
  const value = window.localStorage.getItem(STORAGE_KEY);
13
- return value === 'cloud' ? 'cloud' : 'local';
85
+ return isTarget(value) ? value : 'local';
14
86
  };
15
87
  export const runtimeTargetStore = createStore(set => ({
16
88
  target: readStoredTarget(),
@@ -25,3 +97,12 @@ export const runtimeTargetStore = createStore(set => ({
25
97
  export function useRuntimeTargetStore(selector) {
26
98
  return useStore(runtimeTargetStore, selector);
27
99
  }
100
+ /**
101
+ * The current target and what it offers, in one read.
102
+ *
103
+ * This is what an example uses: it asks what it has, not where it is.
104
+ */
105
+ export function useRuntimeTarget() {
106
+ const target = useRuntimeTargetStore(state => state.target);
107
+ return { target, ...runtimeTargetCapabilities(target) };
108
+ }
@@ -42,4 +42,11 @@ export declare const ThemedProvider: React.FC<React.PropsWithChildren<Omit<IData
42
42
  export declare const useThemeBrandColor: () => string;
43
43
  export declare const ThemedJupyterProvider: React.FC<React.PropsWithChildren<{
44
44
  useJupyterReactTheme?: boolean;
45
+ /**
46
+ * Make the notebook fill this provider's container.
47
+ *
48
+ * Needed by any example whose notebook is sized `height="100%"` and whose
49
+ * sizing container is outside this provider. See {@link FILL_CONTAINER}.
50
+ */
51
+ fullHeight?: boolean;
45
52
  }>>;
@@ -18,8 +18,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
18
18
  * and swap `<DatalayerThemeProvider>` → `<ThemedProvider>`.
19
19
  */
20
20
  import { useEffect } from 'react';
21
- import { DatalayerThemeProvider, themeConfigs, useThemeStore as usePrimerThemeStore, } from '@datalayer/primer-addons';
22
- import { JupyterReactTheme } from '@datalayer/jupyter-react';
21
+ import { Box, DatalayerThemeProvider, themeConfigs, useThemeStore as usePrimerThemeStore, } from '@datalayer/primer-addons';
22
+ // The lean `/core` entry: the theme without the component library.
23
+ import { JupyterReactTheme } from '@datalayer/jupyter-react/core';
23
24
  import { useExampleThemeStore } from './themeStore';
24
25
  /**
25
26
  * Drop-in replacement for `<DatalayerThemeProvider>`.
@@ -37,6 +38,28 @@ export const ThemedProvider = ({ children, ...rest }) => {
37
38
  useEffect(() => {
38
39
  usePrimerThemeStore.setState({ theme: themeVariant, colorMode });
39
40
  }, [themeVariant, colorMode]);
41
+ // And the other way round. The reactor's `theme.toggleColorMode` command —
42
+ // the palette, Mod+Alt+C — and any primer-addons consumer move the
43
+ // singleton, not the examples' store; with only the mirror above, the chat
44
+ // (which reads the singleton) changed and the provider around everything
45
+ // else kept the old mode. Following the singleton here brings the header,
46
+ // the sidebar and every editor along on the first call. Through the
47
+ // store's setters rather than `setState`, so the active variant's saved
48
+ // preference moves too. No loop: the mirror above then writes back the same
49
+ // values, and equal values are not a change.
50
+ useEffect(() => usePrimerThemeStore.subscribe((state, previous) => {
51
+ if (state.colorMode === previous.colorMode &&
52
+ state.theme === previous.theme) {
53
+ return;
54
+ }
55
+ const example = useExampleThemeStore.getState();
56
+ if (example.colorMode !== state.colorMode) {
57
+ example.setColorMode(state.colorMode);
58
+ }
59
+ if (example.theme !== state.theme) {
60
+ example.setTheme(state.theme);
61
+ }
62
+ }), []);
40
63
  return (_jsx(DatalayerThemeProvider, { colorMode: rest.colorMode ?? colorMode, theme: rest.theme ?? cfg.primerTheme, themeStyles: rest.themeStyles ?? cfg.themeStyles, ...rest, children: children }));
41
64
  };
42
65
  /**
@@ -61,7 +84,36 @@ export const useThemeBrandColor = () => {
61
84
  const { theme: themeVariant } = useExampleThemeStore();
62
85
  return themeConfigs[themeVariant].brandColor;
63
86
  };
64
- export const ThemedJupyterProvider = ({ children, useJupyterReactTheme = true }) => {
87
+ /**
88
+ * Give the notebook the container's height, however deep it sits.
89
+ *
90
+ * `DatalayerThemeProvider` renders Primer's `BaseStyles` and `JupyterReactTheme`
91
+ * renders a `div`, and neither has a height of its own. A `<Notebook
92
+ * height="100%">` inside them resolves against `auto` and collapses to nothing
93
+ * — present in the DOM, zero pixels tall, sitting at the bottom of the column.
94
+ *
95
+ * Sizing those wrappers by counting levels (`& > div > div`) was the first
96
+ * attempt and it is the wrong shape: it breaks the moment either provider adds
97
+ * or removes an element. Taking the notebook out of the flow instead makes the
98
+ * chain irrelevant — an absolutely positioned box resolves against the nearest
99
+ * *positioned* ancestor, which is the one wrapper here that is ours.
100
+ *
101
+ * `!important` because `Notebook` sets `position` and `height` in an inline
102
+ * `style`, which no stylesheet rule can otherwise outrank.
103
+ */
104
+ const FILL_CONTAINER = {
105
+ position: 'relative',
106
+ height: '100%',
107
+ minHeight: 0,
108
+ '& #dla-Jupyter-Notebook': {
109
+ position: 'absolute !important',
110
+ top: '0 !important',
111
+ right: '0 !important',
112
+ bottom: '0 !important',
113
+ left: '0 !important',
114
+ },
115
+ };
116
+ export const ThemedJupyterProvider = ({ children, useJupyterReactTheme = true, fullHeight = false }) => {
65
117
  const { colorMode, theme: themeVariant } = useExampleThemeStore();
66
118
  const cfg = themeConfigs[themeVariant];
67
119
  // Resolve 'auto' to an actual mode so we can pick the right style set.
@@ -76,9 +128,10 @@ export const ThemedJupyterProvider = ({ children, useJupyterReactTheme = true })
76
128
  // Extract the canvas background from the theme's CSS-var overrides.
77
129
  const modeStyles = resolvedMode === 'dark' ? cfg.themeStyles.dark : cfg.themeStyles.light;
78
130
  const backgroundColor = modeStyles['--bgColor-default'];
79
- return (_jsx(ThemedProvider, { children: useJupyterReactTheme ? (
131
+ const themed = (_jsx(ThemedProvider, { children: useJupyterReactTheme ? (
80
132
  // `ThemedProvider` (DatalayerThemeProvider) already applies Primer
81
133
  // BaseStyles with the branded theme font. Disable the inner BaseStyles
82
134
  // so Jupyter examples inherit that font instead of Primer's default.
83
135
  _jsx(JupyterReactTheme, { colormode: colorMode, backgroundColor: backgroundColor, useBaseStyles: false, children: children })) : (children) }));
136
+ return fullHeight ? _jsx(Box, { sx: FILL_CONTAINER, children: themed }) : themed;
84
137
  };
@@ -4,6 +4,8 @@
4
4
  */
5
5
  import { useMemo } from 'react';
6
6
  import { useRuntimeTargetStore, } from './runtimeTargetStore';
7
+ import { useAgentSummaryStore } from './agentSummaryStore';
8
+ import { isLocalUrl } from './localUrl';
7
9
  const normalizeBaseUrl = (value) => {
8
10
  if (!value) {
9
11
  return undefined;
@@ -20,12 +22,31 @@ export function resolveExampleAgentRuntimesUrl(target, override) {
20
22
  if (override) {
21
23
  return normalizeBaseUrl(override) ?? override;
22
24
  }
23
- const localUrl = normalizeBaseUrl(import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL) ??
24
- LOCAL_DEFAULT;
25
- const cloudUrl = normalizeBaseUrl(import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL) ??
25
+ const configured = normalizeBaseUrl(import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL);
26
+ /*
27
+ * The Local target's server runs on this machine, and only a URL that
28
+ * names this machine can be it.
29
+ *
30
+ * `VITE_DATALAYER_AGENT_RUNTIMES_URL` serves both targets, and the
31
+ * `examples:vite` script sets it to the cloud host by default — so taking
32
+ * it here unconditionally, which is what this used to do, answered "where
33
+ * is the local agent-runtimes server?" with `https://r1.datalayer.run`.
34
+ * The summary then read `Location: local` beside `Agent base URL:
35
+ * https://r1.datalayer.run`, every agent call was cross-origin, and the
36
+ * chat failed with a bare "Failed to fetch".
37
+ *
38
+ * `main.tsx` already learned this for the Jupyter server URL — see
39
+ * `isLocalUrl`, whose comment describes the same bug — and the predicate is
40
+ * shared so the two cannot drift apart again. An override that really is
41
+ * local (a different port, say) is still honoured.
42
+ */
43
+ const localUrl = configured && isLocalUrl(configured) ? configured : LOCAL_DEFAULT;
44
+ const cloudUrl = (configured && !isLocalUrl(configured) ? configured : undefined) ??
26
45
  normalizeBaseUrl(import.meta.env.VITE_DATALAYER_RUNTIMES_URL) ??
27
46
  CLOUD_DEFAULT;
28
- return target === 'cloud' ? cloudUrl : localUrl;
47
+ // Only the Datalayer target reaches the hosted service; the rest are local
48
+ // or have no agent at all, and asking the cloud for one would be wrong.
49
+ return target === 'datalayer' ? cloudUrl : localUrl;
29
50
  }
30
51
  /**
31
52
  * Resolve the base URL used by examples to call the agent-runtimes service.
@@ -33,7 +54,11 @@ export function resolveExampleAgentRuntimesUrl(target, override) {
33
54
  */
34
55
  export function useExampleAgentRuntimesUrl(override) {
35
56
  const target = useRuntimeTargetStore(state => state.target);
57
+ const activeRuntimeBaseUrl = useAgentSummaryStore(state => state.active?.location === target ? state.active.baseUrl : undefined);
36
58
  return useMemo(() => {
59
+ if (target === 'datalayer' && activeRuntimeBaseUrl) {
60
+ return normalizeBaseUrl(activeRuntimeBaseUrl) ?? activeRuntimeBaseUrl;
61
+ }
37
62
  return resolveExampleAgentRuntimesUrl(target, override);
38
- }, [target, override]);
63
+ }, [activeRuntimeBaseUrl, target, override]);
39
64
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Wait for an agent the Loop is creating to exist on the server.
3
+ *
4
+ * The examples used to create their agent by hand and gate their sidebars on
5
+ * that request. Now the Loop creates the agent from the capacity plugin's
6
+ * blueprint when it mounts, so a page that wants to follow the agent over a
7
+ * websocket or read its spec asks the server until the agent answers.
8
+ *
9
+ * @module examples/utils/waitForAgent
10
+ */
11
+ export interface WaitForAgentOptions {
12
+ /** Stops the wait; the promise then resolves `false`. */
13
+ signal?: AbortSignal;
14
+ /** Give up after this long (default 120 s). */
15
+ timeoutMs?: number;
16
+ /** Time between two asks (default 1.5 s). */
17
+ intervalMs?: number;
18
+ /** Headers for the ask, e.g. an Authorization header. */
19
+ headers?: Record<string, string>;
20
+ }
21
+ /** Resolves `true` once `GET /api/v1/agents/{id}` answers 200, `false` on timeout or abort. */
22
+ export declare function waitForAgent(serverUrl: string, agentId: string, options?: WaitForAgentOptions): Promise<boolean>;
23
+ export default waitForAgent;
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /** Resolves `true` once `GET /api/v1/agents/{id}` answers 200, `false` on timeout or abort. */
6
+ export async function waitForAgent(serverUrl, agentId, options = {}) {
7
+ const { signal, timeoutMs = 120_000, intervalMs = 1_500, headers } = options;
8
+ const base = serverUrl.replace(/\/+$/, '');
9
+ const url = `${base}/api/v1/agents/${encodeURIComponent(agentId)}`;
10
+ const started = Date.now();
11
+ while (!signal?.aborted && Date.now() - started < timeoutMs) {
12
+ try {
13
+ const response = await fetch(url, { headers, signal });
14
+ if (response.ok)
15
+ return true;
16
+ }
17
+ catch {
18
+ // Not there, or the server is not up yet: ask again.
19
+ }
20
+ await new Promise(resolve => setTimeout(resolve, intervalMs));
21
+ }
22
+ return false;
23
+ }
24
+ export default waitForAgent;
@@ -2,5 +2,5 @@ import { ServiceManager } from '@jupyterlab/services';
2
2
  type ICellExampleProps = {
3
3
  serviceManager?: ServiceManager.IManager;
4
4
  };
5
- export declare const CellExample: (props: ICellExampleProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const CellExample: (props: ICellExampleProps) => import("react").JSX.Element;
6
6
  export default CellExample;
@@ -12,5 +12,5 @@ import { ServiceManager } from '@jupyterlab/services';
12
12
  type IDatalayerNotebookExampleProps = {
13
13
  serviceManager?: ServiceManager.IManager;
14
14
  };
15
- declare const DatalayerNotebookExample: (props: IDatalayerNotebookExampleProps) => import("react/jsx-runtime").JSX.Element;
15
+ declare const DatalayerNotebookExample: (props: IDatalayerNotebookExampleProps) => import("react").JSX.Element;
16
16
  export default DatalayerNotebookExample;
@@ -2,5 +2,5 @@ import { ServiceManager } from '@jupyterlab/services';
2
2
  type INotebookExampleProps = {
3
3
  serviceManager?: ServiceManager.IManager;
4
4
  };
5
- export declare const NotebookExample: (props: INotebookExampleProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const NotebookExample: (props: INotebookExampleProps) => import("react").JSX.Element;
6
6
  export default NotebookExample;
@@ -1,2 +1,2 @@
1
- declare const NotebookMutationsKernel: () => import("react/jsx-runtime").JSX.Element;
1
+ declare const NotebookMutationsKernel: () => import("react").JSX.Element;
2
2
  export default NotebookMutationsKernel;
@@ -1,2 +1,2 @@
1
- declare const NotebookMutationsServiceManager: () => import("react/jsx-runtime").JSX.Element;
1
+ declare const NotebookMutationsServiceManager: () => import("react").JSX.Element;
2
2
  export default NotebookMutationsServiceManager;