@datalayer/agent-runtimes 1.0.29 → 1.3.11

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 (779) hide show
  1. package/lib/AgentDocument.js +5 -22
  2. package/lib/AgentNode.d.ts +1 -1
  3. package/lib/AgentNode.js +193 -23
  4. package/lib/AgentNotebook.js +1 -1
  5. package/lib/App.d.ts +1 -1
  6. package/lib/AppExamples2.d.ts +1 -1
  7. package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
  8. package/lib/agent-node/AgentNodeGallery.js +19 -15
  9. package/lib/agent-node/themeStore.js +7 -6
  10. package/lib/agents/AgentDetails.d.ts +8 -2
  11. package/lib/agents/AgentDetails.js +41 -11
  12. package/lib/agents/AgentRuntimeChat.d.ts +3 -3
  13. package/lib/agents/AgentRuntimeChat.js +15 -15
  14. package/lib/api/agents.d.ts +10 -10
  15. package/lib/api/agents.js +15 -15
  16. package/lib/api/checkpoints.d.ts +40 -0
  17. package/lib/api/checkpoints.js +75 -0
  18. package/lib/api/index.d.ts +1 -0
  19. package/lib/api/index.js +2 -1
  20. package/lib/api/notifications.d.ts +21 -6
  21. package/lib/api/notifications.js +32 -14
  22. package/lib/api/runtimes/environments.d.ts +406 -4
  23. package/lib/api/runtimes/environments.js +641 -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 +20 -2
  30. package/lib/chat/ChatFloating.js +196 -118
  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/ButtonGlow.d.ts +9 -0
  44. package/lib/chat/display/ButtonGlow.js +60 -0
  45. package/lib/chat/display/EmptyState.d.ts +15 -1
  46. package/lib/chat/display/EmptyState.js +81 -12
  47. package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
  48. package/lib/chat/display/PoweredByTag.d.ts +1 -1
  49. package/lib/chat/display/groupSuggestions.d.ts +21 -0
  50. package/lib/chat/display/groupSuggestions.js +18 -0
  51. package/lib/chat/document/EphemeralDocument.d.ts +70 -6
  52. package/lib/chat/document/EphemeralDocument.js +154 -52
  53. package/lib/chat/header/ChatHeader.d.ts +1 -1
  54. package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
  55. package/lib/chat/header/ChatHeaderBase.js +21 -102
  56. package/lib/chat/header/ChatViewModeToggle.d.ts +29 -0
  57. package/lib/chat/header/ChatViewModeToggle.js +55 -0
  58. package/lib/chat/index.d.ts +5 -1
  59. package/lib/chat/index.js +9 -1
  60. package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
  61. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
  62. package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
  63. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
  64. package/lib/chat/messages/ChatMessageList.d.ts +22 -1
  65. package/lib/chat/messages/ChatMessageList.js +370 -166
  66. package/lib/chat/messages/ChatMessages.d.ts +1 -1
  67. package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
  68. package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
  69. package/lib/chat/messages/TurnFooter.d.ts +42 -0
  70. package/lib/chat/messages/TurnFooter.js +75 -0
  71. package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
  72. package/lib/chat/messages/assistantMarkdown.js +56 -0
  73. package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
  74. package/lib/chat/notebook/EphemeralNotebook.js +194 -61
  75. package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
  76. package/lib/chat/parts/MessagePart.d.ts +1 -1
  77. package/lib/chat/parts/ReasoningPart.d.ts +8 -1
  78. package/lib/chat/parts/TextPart.d.ts +1 -1
  79. package/lib/chat/parts/ToolPart.d.ts +8 -1
  80. package/lib/chat/prompt/FloatingCard.d.ts +26 -0
  81. package/lib/chat/prompt/FloatingCard.js +80 -0
  82. package/lib/chat/prompt/InputPrompt.d.ts +206 -53
  83. package/lib/chat/prompt/InputPrompt.js +161 -80
  84. package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
  85. package/lib/chat/prompt/InputPromptBase.js +225 -0
  86. package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
  87. package/lib/chat/prompt/InputPromptLexical.js +227 -30
  88. package/lib/chat/prompt/InputPromptText.d.ts +10 -2
  89. package/lib/chat/prompt/InputPromptText.js +35 -3
  90. package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
  91. package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
  92. package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
  93. package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
  94. package/lib/chat/prompt/footer/index.d.ts +7 -0
  95. package/lib/chat/prompt/footer/index.js +11 -0
  96. package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
  97. package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
  98. package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
  99. package/lib/chat/prompt/header/InPromptHeader.js +14 -0
  100. package/lib/chat/prompt/header/index.d.ts +7 -0
  101. package/lib/chat/prompt/header/index.js +11 -0
  102. package/lib/chat/prompt/index.d.ts +8 -4
  103. package/lib/chat/prompt/index.js +15 -3
  104. package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
  105. package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
  106. package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
  107. package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
  108. package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
  109. package/lib/chat/prompt/menus/ModelSelector.js +27 -0
  110. package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
  111. package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
  112. package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
  113. package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
  114. package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
  115. package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
  116. package/lib/chat/prompt/menus/index.d.ts +15 -0
  117. package/lib/chat/prompt/menus/index.js +19 -0
  118. package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
  119. package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
  120. package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
  121. package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
  122. package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
  123. package/lib/chat/prompt/plugins/MentionChip.js +24 -0
  124. package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
  125. package/lib/chat/prompt/plugins/MentionNode.js +77 -0
  126. package/lib/chat/prompt/promptHistory.d.ts +52 -0
  127. package/lib/chat/prompt/promptHistory.js +123 -0
  128. package/lib/chat/prompt/stack.d.ts +81 -0
  129. package/lib/chat/prompt/stack.js +41 -0
  130. package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
  131. package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
  132. package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
  133. package/lib/chat/tools/A2AAgentDialog.js +265 -0
  134. package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
  135. package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
  136. package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
  137. package/lib/chat/tools/index.d.ts +1 -0
  138. package/lib/chat/tools/index.js +1 -0
  139. package/lib/chat/usage/ContextPie.d.ts +17 -0
  140. package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
  141. package/lib/chat/useViewportDrag.d.ts +11 -0
  142. package/lib/chat/useViewportDrag.js +61 -0
  143. package/lib/chat/viewModes.d.ts +51 -0
  144. package/lib/chat/viewModes.js +57 -0
  145. package/lib/client/AgentRuntimesClient.d.ts +10 -9
  146. package/lib/client/AgentRuntimesClient.js +1 -1
  147. package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
  148. package/lib/client/AgentsMixin.d.ts +12 -12
  149. package/lib/client/AgentsMixin.js +31 -31
  150. package/lib/client/IAgentRuntimesClient.d.ts +10 -10
  151. package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
  152. package/lib/client/SdkAgentRuntimesClient.js +10 -10
  153. package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
  154. package/lib/client/mixins/RuntimesMixin.js +54 -21
  155. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
  156. package/lib/components/agents/AgentSummary.d.ts +13 -0
  157. package/lib/components/agents/AgentSummary.js +21 -4
  158. package/lib/components/cards/NotificationEventCard.d.ts +1 -1
  159. package/lib/components/cards/OutputCard.d.ts +1 -1
  160. package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
  161. package/lib/components/cards/ToolApprovalCard.js +1 -0
  162. package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
  163. package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
  164. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
  165. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
  166. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
  167. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
  168. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +9 -0
  169. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +95 -23
  170. package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
  171. package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
  172. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  173. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  174. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  175. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  176. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  177. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
  178. package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
  179. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  180. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  181. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  182. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  183. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +97 -0
  184. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +184 -0
  185. package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
  186. package/lib/components/code-sandboxes/index.d.ts +1 -0
  187. package/lib/components/code-sandboxes/index.js +1 -0
  188. package/lib/components/context/SpaceSelect.d.ts +1 -1
  189. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  190. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  191. package/lib/components/icons/ArtifactIcon.js +2 -1
  192. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  193. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  194. package/lib/components/progress/CreditsIndicator.js +0 -4
  195. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  196. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  197. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  198. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  199. package/lib/components/snippets/SnippetDialog.js +0 -4
  200. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  201. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  202. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  203. package/lib/context/ContextDistribution.d.ts +1 -1
  204. package/lib/context/ContextInspector.d.ts +2 -1
  205. package/lib/context/ContextPanel.d.ts +1 -1
  206. package/lib/context/ContextUsage.d.ts +1 -1
  207. package/lib/context/CostTracker.d.ts +1 -1
  208. package/lib/context/CostUsageChart.d.ts +1 -1
  209. package/lib/context/CostUsageChart.js +4 -4
  210. package/lib/context/MessageHistory.d.ts +3 -2
  211. package/lib/context/TokenUsageChart.d.ts +1 -1
  212. package/lib/context/TokenUsageChart.js +4 -4
  213. package/lib/examples/A2UiAgentExample.js +15 -6
  214. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  215. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  216. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  217. package/lib/examples/A2UiContactCardExample.js +23 -170
  218. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  219. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  220. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  221. package/lib/examples/A2UiRestaurantExample.js +24 -179
  222. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  223. package/lib/examples/A2UiViewerExample.js +24 -378
  224. package/lib/examples/AgUiAgenticExample.js +2 -4
  225. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  226. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  227. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  228. package/lib/examples/AgUiSharedStateExample.js +2 -4
  229. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  230. package/lib/examples/AgentA2AExample.d.ts +17 -0
  231. package/lib/examples/AgentA2AExample.js +56 -0
  232. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  233. package/lib/examples/AgentCheckpointsExample.js +72 -54
  234. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  235. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  236. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  237. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  238. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  239. package/lib/examples/AgentCodemodeExample.js +60 -125
  240. package/lib/examples/AgentCompactionExample.js +19 -135
  241. package/lib/examples/AgentEvalsExample.js +34 -66
  242. package/lib/examples/AgentGuardrailsExample.js +64 -112
  243. package/lib/examples/AgentHooksExample.d.ts +11 -0
  244. package/lib/examples/AgentHooksExample.js +30 -67
  245. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  246. package/lib/examples/AgentLoopExample.d.ts +4 -2
  247. package/lib/examples/AgentLoopExample.js +45 -93
  248. package/lib/examples/AgentMCPExample.js +30 -79
  249. package/lib/examples/AgentMemoryExample.js +21 -64
  250. package/lib/examples/AgentMonitoringExample.js +33 -94
  251. package/lib/examples/AgentNotificationsExample.js +56 -95
  252. package/lib/examples/AgentOtelExample.js +35 -88
  253. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  254. package/lib/examples/AgentOutputsExample.js +16 -137
  255. package/lib/examples/AgentParametersExample.js +7 -17
  256. package/lib/examples/AgentSkillsExample.js +40 -154
  257. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  258. package/lib/examples/AgentSubagentsExample.js +80 -191
  259. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  260. package/lib/examples/AgentTriggersExample.js +43 -59
  261. package/lib/examples/AgentspecsExample.js +4 -4
  262. package/lib/examples/CellExample.d.ts +1 -1
  263. package/lib/examples/ChatExample.d.ts +12 -5
  264. package/lib/examples/ChatExample.js +38 -13
  265. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  266. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  267. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  268. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  269. package/lib/examples/DecksAgent.d.ts +21 -0
  270. package/lib/examples/DecksAgent.js +23 -0
  271. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  272. package/lib/examples/DocumentPageAgent.js +15 -0
  273. package/lib/examples/Lexical2Example.d.ts +2 -2
  274. package/lib/examples/Lexical2Example.js +17 -38
  275. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  276. package/lib/examples/LexicalAgentExample.js +29 -102
  277. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  278. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  279. package/lib/examples/LoopShellExample.d.ts +38 -0
  280. package/lib/examples/LoopShellExample.js +68 -0
  281. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  282. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  283. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  284. package/lib/examples/LoopWorkspaceExample.js +151 -0
  285. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  286. package/lib/examples/NotebookAgentExample.js +36 -86
  287. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  288. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  289. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  290. package/lib/examples/NotebookCollaborationExample.js +108 -20
  291. package/lib/examples/NotebookExample.d.ts +1 -1
  292. package/lib/examples/NotebookExample.js +20 -10
  293. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  294. package/lib/examples/NotebookPageAgent.js +17 -0
  295. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  296. package/lib/examples/components/ExampleWrapper.js +36 -28
  297. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  298. package/lib/examples/components/LexicalEditor.js +4 -24
  299. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  300. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  301. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  302. package/lib/examples/example-selector.js +26 -6
  303. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  304. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  305. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  306. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  307. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  308. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  309. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  310. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  311. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  312. package/lib/examples/index.d.ts +4 -0
  313. package/lib/examples/index.js +6 -0
  314. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  315. package/lib/examples/lexical/editorConfig.js +26 -48
  316. package/lib/examples/lexical/lexical-theme.css +65 -47
  317. package/lib/examples/main.js +450 -322
  318. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  319. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  320. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  321. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  322. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  323. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  324. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  325. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  326. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  327. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  328. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  329. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  330. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  331. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  332. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  333. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  334. package/lib/examples/utils/exampleSurfaces.js +38 -0
  335. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  336. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  337. package/lib/examples/utils/localUrl.d.ts +2 -0
  338. package/lib/examples/utils/localUrl.js +49 -0
  339. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  340. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  341. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  342. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  343. package/lib/examples/utils/themedProvider.d.ts +7 -0
  344. package/lib/examples/utils/themedProvider.js +57 -4
  345. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  346. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  347. package/lib/examples/utils/waitForAgent.js +24 -0
  348. package/lib/examples2/CellExample.d.ts +1 -1
  349. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  350. package/lib/examples2/NotebookExample.d.ts +1 -1
  351. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  352. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  353. package/lib/examples2/main.js +24 -4
  354. package/lib/extensions/A2UIExtension.d.ts +1 -1
  355. package/lib/hooks/index.d.ts +8 -5
  356. package/lib/hooks/index.js +20 -5
  357. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  358. package/lib/hooks/useAgentRuntimes.js +214 -90
  359. package/lib/hooks/useAgentsCatalog.js +32 -4
  360. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  361. package/lib/hooks/useBrowserAgent.js +75 -0
  362. package/lib/hooks/useBrowserInference.d.ts +27 -0
  363. package/lib/hooks/useBrowserInference.js +67 -0
  364. package/lib/hooks/useCheckpoints.d.ts +8 -17
  365. package/lib/hooks/useCheckpoints.js +25 -59
  366. package/lib/hooks/useConfig.d.ts +1 -1
  367. package/lib/hooks/useConfig.js +5 -1
  368. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  369. package/lib/hooks/useContextSnapshot.js +14 -10
  370. package/lib/hooks/useNotifications.d.ts +11 -11
  371. package/lib/hooks/useNotifications.js +1 -1
  372. package/lib/hooks/useProjects.d.ts +7 -19
  373. package/lib/hooks/useProjects.js +5 -5
  374. package/lib/hooks/useSkills.d.ts +0 -1
  375. package/lib/hooks/useSkills.js +6 -2
  376. package/lib/hooks/useToolApprovals.d.ts +8 -8
  377. package/lib/hooks/useToolApprovals.js +3 -3
  378. package/lib/identity/AgentIdentity.d.ts +9 -2
  379. package/lib/index.d.ts +1 -0
  380. package/lib/index.js +4 -0
  381. package/lib/jupyter/index.d.ts +2 -1
  382. package/lib/jupyter/index.js +2 -1
  383. package/lib/jupyter/serverExecution.d.ts +78 -0
  384. package/lib/jupyter/serverExecution.js +258 -0
  385. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  386. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  387. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  388. package/lib/lexical/ChatInlinePlugin.js +0 -36
  389. package/lib/loop/core/focusRequests.d.ts +10 -0
  390. package/lib/loop/core/focusRequests.js +46 -0
  391. package/lib/loop/core/index.d.ts +903 -0
  392. package/lib/loop/core/index.js +264 -0
  393. package/lib/loop/core/promptStore.d.ts +44 -0
  394. package/lib/loop/core/promptStore.js +63 -0
  395. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  396. package/lib/loop/core/surfaceRequests.js +29 -0
  397. package/lib/loop/core/toolbar.d.ts +28 -0
  398. package/lib/loop/core/toolbar.js +59 -0
  399. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  400. package/lib/loop/embed/LoopEmbed.js +124 -0
  401. package/lib/loop/extensions.d.ts +10 -0
  402. package/lib/loop/extensions.js +49 -0
  403. package/lib/loop/index.d.ts +68 -0
  404. package/lib/loop/index.js +87 -0
  405. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  406. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  407. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  408. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  409. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  410. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  411. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  412. package/lib/loop/plugins/a2ui/index.js +50 -0
  413. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  414. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  415. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  416. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  417. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  418. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  419. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  420. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  421. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  422. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  423. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  424. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  425. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  426. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  427. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  428. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  429. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  430. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  431. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  432. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  433. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  434. package/lib/loop/plugins/agent-evals/index.js +25 -0
  435. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  436. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  437. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  438. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  439. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  440. package/lib/loop/plugins/agent-inference/index.js +29 -0
  441. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  442. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  443. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  444. package/lib/loop/plugins/agent-memory/index.js +25 -0
  445. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  446. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  447. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  448. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  449. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  450. package/lib/loop/plugins/agent-otel/index.js +25 -0
  451. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  452. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  453. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  454. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  455. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  456. package/lib/loop/plugins/agent-skills/index.js +25 -0
  457. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  458. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  459. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  460. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  461. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  462. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  463. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  464. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  465. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  466. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  467. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  468. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  469. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  470. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  471. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  472. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  473. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  474. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  475. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  476. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  477. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  478. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  479. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  480. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  481. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  482. package/lib/loop/plugins/agents/browserService.js +233 -0
  483. package/lib/loop/plugins/agents/index.d.ts +13 -0
  484. package/lib/loop/plugins/agents/index.js +17 -0
  485. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  486. package/lib/loop/plugins/agents/plugin.js +201 -0
  487. package/lib/loop/plugins/agents/service.d.ts +99 -0
  488. package/lib/loop/plugins/agents/service.js +167 -0
  489. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  490. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  491. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  492. package/lib/loop/plugins/agents/switchable.js +405 -0
  493. package/lib/loop/plugins/agents/team.d.ts +87 -0
  494. package/lib/loop/plugins/agents/team.js +143 -0
  495. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  496. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  497. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  498. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  499. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  500. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  501. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  502. package/lib/loop/plugins/agentspecs/index.js +63 -0
  503. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  504. package/lib/loop/plugins/chat/ChatView.js +1679 -0
  505. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  506. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  507. package/lib/loop/plugins/chat/index.d.ts +111 -0
  508. package/lib/loop/plugins/chat/index.js +143 -0
  509. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  510. package/lib/loop/plugins/chat/turnState.js +90 -0
  511. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  512. package/lib/loop/plugins/chat-extras/index.js +51 -0
  513. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  514. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  515. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  516. package/lib/loop/plugins/chat-header/index.js +21 -0
  517. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  518. package/lib/loop/plugins/chat-view/index.js +29 -0
  519. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  520. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  521. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  522. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  523. package/lib/loop/plugins/commands/index.d.ts +20 -0
  524. package/lib/loop/plugins/commands/index.js +148 -0
  525. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  526. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  527. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  528. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  529. package/lib/loop/plugins/decks/index.d.ts +19 -0
  530. package/lib/loop/plugins/decks/index.js +133 -0
  531. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  532. package/lib/loop/plugins/decks/surface.js +11 -0
  533. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  534. package/lib/loop/plugins/document/DocumentView.js +68 -0
  535. package/lib/loop/plugins/document/index.d.ts +3 -0
  536. package/lib/loop/plugins/document/index.js +86 -0
  537. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  538. package/lib/loop/plugins/document/openingDocument.js +122 -0
  539. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  540. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  541. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  542. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  543. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  544. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  545. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  546. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  547. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  548. package/lib/loop/plugins/document-view/index.js +28 -0
  549. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  550. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  551. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  552. package/lib/loop/plugins/graph/GraphView.js +6 -0
  553. package/lib/loop/plugins/graph/index.d.ts +5 -0
  554. package/lib/loop/plugins/graph/index.js +80 -0
  555. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  556. package/lib/loop/plugins/graph/viewType.js +14 -0
  557. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  558. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  559. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  560. package/lib/loop/plugins/input-prompt/index.js +26 -0
  561. package/lib/loop/plugins/models/index.d.ts +3 -0
  562. package/lib/loop/plugins/models/index.js +49 -0
  563. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  564. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  565. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  566. package/lib/loop/plugins/notebook/index.js +91 -0
  567. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  568. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  569. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  570. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  571. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  572. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  573. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  574. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  575. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  576. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  577. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  578. package/lib/loop/plugins/notebook-view/index.js +30 -0
  579. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  580. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  581. package/lib/loop/plugins/page-layout/index.d.ts +71 -0
  582. package/lib/loop/plugins/page-layout/index.js +160 -0
  583. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  584. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  585. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  586. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  587. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  588. package/lib/loop/plugins/prompt/index.js +73 -0
  589. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  590. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  591. package/lib/loop/plugins/shell/index.d.ts +47 -0
  592. package/lib/loop/plugins/shell/index.js +142 -0
  593. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  594. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  595. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  596. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  597. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  598. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  599. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  600. package/lib/loop/plugins/view-switch/index.js +68 -0
  601. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  602. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  603. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  604. package/lib/loop/plugins/window-frame/index.js +79 -0
  605. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  606. package/lib/loop/plugins/window-frame/slots.js +30 -0
  607. package/lib/loop/presets.d.ts +181 -0
  608. package/lib/loop/presets.js +141 -0
  609. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  610. package/lib/loop/shell/LoopWorkspace.js +231 -0
  611. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  612. package/lib/loop/shell/PluginToggles.js +41 -0
  613. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  614. package/lib/loop/shell/ViewSwitcher.js +43 -0
  615. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  616. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  617. package/lib/loop/shell/index.d.ts +10 -0
  618. package/lib/loop/shell/index.js +14 -0
  619. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  620. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  621. package/lib/loop-example-main.d.ts +1 -0
  622. package/lib/loop-example-main.js +42 -0
  623. package/lib/loop-main.d.ts +1 -0
  624. package/lib/loop-main.js +138 -0
  625. package/lib/mcp/McpServerManager.d.ts +1 -1
  626. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  627. package/lib/models/CodeSandboxVariant.d.ts +13 -5
  628. package/lib/models/CodeSandboxVariant.js +17 -5
  629. package/lib/models/Content.d.ts +26 -0
  630. package/lib/models/Deck.d.ts +14 -0
  631. package/lib/models/Environment.d.ts +678 -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/ItemType.d.ts +1 -1
  637. package/lib/models/Library.d.ts +0 -2
  638. package/lib/models/Notebook.d.ts +0 -2
  639. package/lib/models/ProjectDTO.d.ts +2 -2
  640. package/lib/models/ProjectDTO.js +4 -4
  641. package/lib/models/Runtime.d.ts +17 -11
  642. package/lib/models/RuntimeDTO.d.ts +16 -7
  643. package/lib/models/RuntimeDTO.js +9 -9
  644. package/lib/models/Space.d.ts +10 -0
  645. package/lib/models/Space.js +1 -1
  646. package/lib/models/SpaceDTO.d.ts +1 -1
  647. package/lib/models/SpaceItem.d.ts +2 -2
  648. package/lib/models/environments.generated.d.ts +141 -0
  649. package/lib/models/environments.generated.js +13 -0
  650. package/lib/models/index.d.ts +1 -1
  651. package/lib/models/index.js +1 -1
  652. package/lib/protocols/A2AAdapter.d.ts +39 -6
  653. package/lib/protocols/A2AAdapter.js +180 -11
  654. package/lib/protocols/ACPAdapter.js +40 -37
  655. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  656. package/lib/protocols/AGUIAdapter.js +34 -9
  657. package/lib/protocols/BrowserAgentAdapter.d.ts +125 -0
  658. package/lib/protocols/BrowserAgentAdapter.js +317 -0
  659. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  660. package/lib/protocols/VercelAIAdapter.js +27 -7
  661. package/lib/protocols/index.d.ts +1 -0
  662. package/lib/protocols/index.js +1 -0
  663. package/lib/runtimes/actions.d.ts +8 -3
  664. package/lib/runtimes/actions.js +46 -14
  665. package/lib/runtimes/apis.d.ts +13 -4
  666. package/lib/runtimes/browser/agent.d.ts +54 -0
  667. package/lib/runtimes/browser/agent.js +63 -0
  668. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  669. package/lib/runtimes/browser/anonymousToken.js +300 -0
  670. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  671. package/lib/runtimes/browser/frontendTools.js +152 -0
  672. package/lib/runtimes/browser/index.d.ts +11 -0
  673. package/lib/runtimes/browser/index.js +20 -0
  674. package/lib/runtimes/browser/model.d.ts +52 -0
  675. package/lib/runtimes/browser/model.js +110 -0
  676. package/lib/runtimes/browser/protocol.d.ts +54 -0
  677. package/lib/runtimes/browser/protocol.js +35 -0
  678. package/lib/runtimes/browser/subagents.d.ts +131 -0
  679. package/lib/runtimes/browser/subagents.js +241 -0
  680. package/lib/runtimes/index.d.ts +3 -0
  681. package/lib/runtimes/index.js +3 -0
  682. package/lib/runtimes/lifecycle.d.ts +76 -0
  683. package/lib/runtimes/lifecycle.js +99 -0
  684. package/lib/runtimes/variants.d.ts +172 -0
  685. package/lib/runtimes/variants.js +187 -0
  686. package/lib/services/reconnectToRuntime.d.ts +2 -2
  687. package/lib/services/reconnectToRuntime.js +3 -3
  688. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  689. package/lib/services/sandboxServiceManagers.js +11 -11
  690. package/lib/specs/agents/agents.d.ts +129 -112
  691. package/lib/specs/agents/agents.js +8200 -5044
  692. package/lib/specs/evals.js +9 -0
  693. package/lib/specs/frontendTools.d.ts +4 -0
  694. package/lib/specs/frontendTools.js +77 -3
  695. package/lib/specs/mcpServers.d.ts +1 -0
  696. package/lib/specs/mcpServers.js +38 -15
  697. package/lib/specs/models.d.ts +18 -0
  698. package/lib/specs/models.js +154 -0
  699. package/lib/specs/outputs.d.ts +2 -0
  700. package/lib/specs/outputs.js +31 -0
  701. package/lib/specs/personas.js +1 -1
  702. package/lib/specs/skills.js +7 -7
  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 +14 -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/tools/adapters/commands/index.js +5 -0
  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/outputs.d.ts +2 -0
  744. package/lib/types/protocol.d.ts +7 -2
  745. package/lib/types/stream.d.ts +48 -3
  746. package/lib/types/stream.js +5 -0
  747. package/lib/types/teams.d.ts +102 -4
  748. package/lib/types/tool-approvals.d.ts +1 -1
  749. package/lib/types/tools.d.ts +8 -2
  750. package/lib/utils/utils.js +7 -1
  751. package/package.json +376 -361
  752. package/scripts/codegen/compose.py +208 -0
  753. package/scripts/codegen/generate_agents.py +202 -31
  754. package/scripts/codegen/generate_evals.py +2 -0
  755. package/scripts/codegen/generate_frontend_tools.py +35 -6
  756. package/scripts/codegen/generate_mcp_servers.py +2 -2
  757. package/scripts/codegen/generate_models.py +40 -15
  758. package/scripts/codegen/generate_outputs.py +2 -0
  759. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  760. package/scripts/codegen/generate_skills.py +2 -2
  761. package/scripts/codegen/generate_teams.py +178 -4
  762. package/scripts/codegen/generate_tools.py +6 -4
  763. package/scripts/gen_workers.py +278 -110
  764. package/scripts/generate-environments-types.py +404 -0
  765. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  766. package/lib/chat/prompt/InputFooter.js +0 -194
  767. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  768. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  769. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  770. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  771. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  772. package/lib/hooks/useRuntimes.d.ts +0 -5
  773. package/lib/hooks/useRuntimes.js +0 -34
  774. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  775. package/lib/jupyter/kernelsHandler.js +0 -39
  776. package/lib/models/Dataset.d.ts +0 -16
  777. package/lib/utils/Cells.d.ts +0 -2
  778. package/lib/utils/Cells.js +0 -28
  779. /package/lib/models/{Dataset.js → Deck.js} +0 -0
@@ -0,0 +1,133 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Decks in a Loop: a deck beside the chat.
7
+ *
8
+ * The plugin pulls `@datalayer/decks`'s own reactor plugin in as a dependency,
9
+ * pointed at the Loop's slots — the list of decks in the sidebar, the "new
10
+ * deck" dialog at the root — and adds what only a Loop can know:
11
+ *
12
+ * - a **Deck** editor surface, one entry in the shell's editor selector, that
13
+ * shows the open deck in the column beside the conversation;
14
+ * - a **menu in the composer** with the decks to open and the plugin's
15
+ * commands, and a `deck` slash command with a keystroke;
16
+ * - the deck **following the decks**: whatever asks to see one — a row in the
17
+ * list, the palette, an agent's tool — brings the surface beside the chat.
18
+ *
19
+ * It declares no tools. The decks plugin does: its `AgentTools` bundle names
20
+ * every command an agent may call — reading and writing decks as much as
21
+ * opening and presenting one — and the chat reads the bundle from the reactor
22
+ * (`useAgentCommandTools`) and runs each as the command it is, on this page,
23
+ * saved to the decks server when the plugin was given one. Nothing here
24
+ * duplicates, and nothing here can drift from, what the plugin declared.
25
+ *
26
+ * `DeckViewPlugin` is the footer icon that switches to the deck, like the
27
+ * notebook's and the document's.
28
+ *
29
+ * @module loop/plugins/decks
30
+ */
31
+ import { ProjectIcon } from '@primer/octicons-react';
32
+ import { configurePlugin, contribution, definePlugin, } from '@datalayer/reactor';
33
+ import { DecksPlugin, getDecksState, subscribeDecksState, } from '@datalayer/decks/plugin';
34
+ import { LoopCommand, LoopEditorView, LoopSlots, requestSurface, } from '../../core';
35
+ import { InputPromptPlugin } from '../input-prompt';
36
+ import { chooseEditor } from '../shell/editorChoice';
37
+ import { defineViewPlugin } from '../view-switch';
38
+ import DecksMenu from './DecksMenu';
39
+ import { DECK_SURFACE_ID } from './surface';
40
+ export { DECK_SURFACE_ID } from './surface';
41
+ export const DECKS_PLUGIN_NAME = '@datalayer/loop-plugin-decks';
42
+ /**
43
+ * A slot nobody renders: the decks plugin's main view is shown through the
44
+ * Deck surface instead, so the plugin's own `slot` output must land nowhere.
45
+ */
46
+ export const DECKS_UNUSED_SLOT = 'loop.decks.unused';
47
+ export const LoopDecksPlugin = definePlugin({
48
+ name: DECKS_PLUGIN_NAME,
49
+ // `Deck editor`, like `Notebook editor`: the decks plugin it depends on is
50
+ // the one called `Decks`, and the two sit side by side in the plugins panel.
51
+ displayName: 'Deck editor',
52
+ description: 'A deck beside the chat, and the tools an agent writes a presentation with.',
53
+ octicon: 'project',
54
+ emoji: '\u{1F4CA}',
55
+ dependencies: [
56
+ configurePlugin(DecksPlugin, {
57
+ listSlot: LoopSlots.sidebar,
58
+ // Above the plugins panel, which puts itself last.
59
+ listOrder: 10,
60
+ slot: DECKS_UNUSED_SLOT,
61
+ dialogSlot: LoopSlots.root,
62
+ shellView: false,
63
+ }),
64
+ // The menu sits in the composer's action row; without the composer there
65
+ // is nowhere for it to be.
66
+ InputPromptPlugin,
67
+ ],
68
+ contributes: [
69
+ contribution(LoopEditorView, {
70
+ surfaceId: DECK_SURFACE_ID,
71
+ title: 'Deck',
72
+ icon: ProjectIcon,
73
+ order: 30,
74
+ load: () => import('./DeckSurface'),
75
+ }, { id: DECK_SURFACE_ID, order: 30 }),
76
+ contribution(LoopCommand, {
77
+ name: 'deck',
78
+ description: 'Open the deck beside the chat',
79
+ group: 'Open',
80
+ keybinding: 'Mod+Alt+D',
81
+ run: async ({ workspace }) => {
82
+ workspace.setActiveViewType('chat');
83
+ if (!requestSurface(DECK_SURFACE_ID)) {
84
+ throw new Error('No chat is on screen to open the deck beside.');
85
+ }
86
+ },
87
+ }, { id: 'deck' }),
88
+ ],
89
+ register: () => {
90
+ /*
91
+ * The deck surface follows the decks. Whatever asks to see a deck or the
92
+ * list — the sidebar row, the palette's "Show the decks", an agent's
93
+ * `decks_open` — bumps the store's `revealed`, and this brings the Deck
94
+ * editor beside the chat so the ask has a visible answer. Without it,
95
+ * "Show the decks" with the notebook on screen changed the store and
96
+ * nothing else.
97
+ */
98
+ let seen = getDecksState().revealed;
99
+ return subscribeDecksState(() => {
100
+ const { revealed } = getDecksState();
101
+ if (revealed === seen) {
102
+ return;
103
+ }
104
+ seen = revealed;
105
+ if (!chooseEditor(DECK_SURFACE_ID)) {
106
+ console.warn('[loop] No chat is on screen to show the deck beside.');
107
+ }
108
+ });
109
+ },
110
+ build: () => ({
111
+ components: [
112
+ {
113
+ id: 'decks-menu',
114
+ slot: LoopSlots.promptAction,
115
+ order: 40,
116
+ Component: DecksMenu,
117
+ },
118
+ ],
119
+ }),
120
+ });
121
+ /** The footer icon that shows the deck, beside the notebook's and the document's. */
122
+ export const DeckViewPlugin = defineViewPlugin({
123
+ key: 'deck',
124
+ viewId: DECK_SURFACE_ID,
125
+ displayName: 'Deck view',
126
+ description: 'The deck beside the chat, from the composer footer.',
127
+ icon: ProjectIcon,
128
+ tooltip: 'Show the deck',
129
+ octicon: 'project',
130
+ emoji: '\u{1F4CA}',
131
+ order: 12,
132
+ });
133
+ export default LoopDecksPlugin;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The editor surface the deck is shown on: what the selector, the footer
3
+ * icon, the composer menu and the store's "reveal" all point at.
4
+ *
5
+ * @module loop/plugins/decks/surface
6
+ */
7
+ export declare const DECK_SURFACE_ID = "deck";
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The editor surface the deck is shown on: what the selector, the footer
7
+ * icon, the composer menu and the store's "reveal" all point at.
8
+ *
9
+ * @module loop/plugins/decks/surface
10
+ */
11
+ export const DECK_SURFACE_ID = 'deck';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The document view: the ephemeral Lexical document, bound to the sandbox.
3
+ *
4
+ * This module is only ever reached through the view's `load()` thunk, which is
5
+ * what keeps `@datalayer/jupyter-lexical` — and the Lumino nodes it initialises
6
+ * on import — out of the shell's bundle until someone opens a document.
7
+ *
8
+ * @module loop/plugins/document/DocumentView
9
+ */
10
+ import type { JSX } from 'react';
11
+ import { type ChatSurfaceProps } from '../../core';
12
+ export default function DocumentView({ workspace, }: ChatSurfaceProps): JSX.Element;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { useContributions, useSignalValue } from '@datalayer/reactor/react';
4
+ import { Box, Text } from '@primer/react';
5
+ import { EphemeralDocument } from '../../../chat/document/EphemeralDocument';
6
+ import { LoopDocumentToolbar, LoopDocumentToolbarItem, LoopOpeningDocument, } from '../../core';
7
+ import { useEditorToolbar } from '../../core/toolbar';
8
+ import { useSandboxService } from '../agents';
9
+ import { openingDocument } from './openingDocument';
10
+ export default function DocumentView({ workspace, }) {
11
+ const service = useSandboxService();
12
+ const snapshot = useSignalValue(service.snapshot);
13
+ const documentId = workspace.surfaceId;
14
+ // Read before the early return, not after: the hook count must not depend on
15
+ // whether a sandbox happens to be running. As with the notebook, the bar
16
+ // itself belongs to a plugin — switch that off and the document has no
17
+ // toolbar rather than an empty one.
18
+ const toolbar = useEditorToolbar(LoopDocumentToolbar, LoopDocumentToolbarItem, {
19
+ workspace,
20
+ editorId: documentId,
21
+ });
22
+ /*
23
+ * What the editor opens on. A host's own opening document wins over the
24
+ * plugin's; either is built fresh here and handed over as the serialised
25
+ * state `EphemeralDocument` loads exactly once, when it mounts — which is
26
+ * below the early return, so the state is ready before the editor is.
27
+ */
28
+ const openingEntries = useContributions(LoopOpeningDocument);
29
+ const contributedOpening = openingEntries[0]?.value;
30
+ const opening = useMemo(() => JSON.stringify((contributedOpening?.document ?? openingDocument)()), [contributedOpening]);
31
+ const autoFocus = contributedOpening?.autoFocus ?? true;
32
+ if (snapshot.state !== 'running') {
33
+ return (_jsx(Box, { sx: {
34
+ height: '100%',
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ justifyContent: 'center',
38
+ color: 'fg.muted',
39
+ fontSize: 1,
40
+ px: 4,
41
+ textAlign: 'center',
42
+ }, children: _jsx(Text, { children: "The document needs a running sandbox for its code blocks. Open the Sandbox view to see what it is doing." }) }));
43
+ }
44
+ // A browser sandbox already owns its kernel; binding to that manager is what
45
+ // puts the agent's code blocks and the reader's in the same one. A server
46
+ // sandbox is reached by URL, as before, and returns null here. The notebook
47
+ // view does exactly this — the document simply never did, which is why it
48
+ // came up blank on Pyodide.
49
+ const browserManager = service.getServiceManager() ??
50
+ undefined;
51
+ return (_jsx(Box, { sx: { height: '100%', minHeight: 0 }, children: _jsx(EphemeralDocument
52
+ // The entry point owns the theme; a second provider here would fight
53
+ // it over BaseStyles and font tokens (§3.5, §3.6).
54
+ , {
55
+ // The entry point owns the theme; a second provider here would fight
56
+ // it over BaseStyles and font tokens (§3.5, §3.6).
57
+ inheritTheme: true, documentId: documentId, content: opening, autoFocus: autoFocus, serviceManager: browserManager, showToolbar: toolbar.present, toolbarExtraItems: toolbar.items,
58
+ // Join the sandbox's kernel rather than starting a rival one.
59
+ kernelId: browserManager ? snapshot.kernelId : undefined, runtimeOverride: !browserManager && snapshot.jupyterUrl
60
+ ? {
61
+ baseUrl: snapshot.jupyterUrl,
62
+ // Without the token the server refuses every request and the
63
+ // cell runs into silence — no kernel, no output, no error the
64
+ // reader can act on.
65
+ token: snapshot.jupyterToken,
66
+ }
67
+ : undefined }) }));
68
+ }
@@ -0,0 +1,3 @@
1
+ export declare const DOCUMENT_PLUGIN_NAME = "@datalayer/loop-plugin-document";
2
+ export declare const DocumentPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, unknown>;
3
+ export default DocumentPlugin;
@@ -0,0 +1,86 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-document` — a rich-text editor, beside the chat.
7
+ *
8
+ * The same shape as the notebook plugin, contributed to the same point: an
9
+ * editor the conversation is about, not an alternative to it.
10
+ *
11
+ * @module loop/plugins/document
12
+ */
13
+ import { FileIcon } from '@primer/octicons-react';
14
+ import { contribution, definePlugin } from '@datalayer/reactor';
15
+ import { LoopCommand, LoopEditorView, LoopFrontendTool, requestSurface, LoopDocumentToolbar, LoopOpeningDocument, } from '../../core';
16
+ import { AgentsPlugin } from '../agents';
17
+ export const DOCUMENT_PLUGIN_NAME = '@datalayer/loop-plugin-document';
18
+ export const DocumentPlugin = definePlugin({
19
+ name: DOCUMENT_PLUGIN_NAME,
20
+ displayName: 'Document editor',
21
+ description: 'A rich-text document beside the chat, driven by the agent.',
22
+ octicon: 'file',
23
+ emoji: '\u{1F4C4}',
24
+ // The sandbox is a hard dependency; the shell and the chat are extended
25
+ // through their points instead — see the notebook plugin for why.
26
+ dependencies: [AgentsPlugin],
27
+ // Declared, not merely used: the registry knows who contributed to a
28
+ // point, it cannot know who opened it. Declaring it is also what makes
29
+ // the document toolbar visible on the plugin graph before anything has
30
+ // filled it — which is exactly when knowing it exists is most useful.
31
+ // And the opening document: what the editor holds before anyone types,
32
+ // for a host with a story of its own to open on.
33
+ contributionPoints: [LoopDocumentToolbar, LoopOpeningDocument],
34
+ contributes: [
35
+ // The editor: one entry in the shell's segmented control, one view in
36
+ // the editor column.
37
+ contribution(LoopEditorView, {
38
+ surfaceId: 'document',
39
+ title: 'Document',
40
+ icon: FileIcon,
41
+ order: 20,
42
+ canOpen: workspace => workspace.sandbox.state === 'running',
43
+ unavailableReason: () => 'Needs a running sandbox',
44
+ // Lazy, and it matters more here than anywhere: this module pulls
45
+ // `@datalayer/jupyter-lexical`, which initialises Lumino-backed nodes
46
+ // at import time.
47
+ load: () => import('./DocumentView'),
48
+ }, { id: 'document', order: 20 }),
49
+ contribution(LoopCommand, {
50
+ name: 'document',
51
+ description: 'Open the document beside the chat',
52
+ group: 'Open',
53
+ keybinding: 'Mod+Alt+O',
54
+ run: async ({ workspace }) => {
55
+ // The chat first, because the surface lives beside it; then the
56
+ // surface itself. Switching the view alone leaves whichever surface
57
+ // was already open, so on the chat view — where a reader usually is
58
+ // — this used to do nothing at all.
59
+ workspace.setActiveViewType('chat');
60
+ if (!requestSurface('document')) {
61
+ throw new Error('No chat is on screen to open the document beside.');
62
+ }
63
+ },
64
+ }, { id: 'document' }),
65
+ ],
66
+ build: ctx => {
67
+ /*
68
+ * The document's tools, contributed when their module arrives.
69
+ *
70
+ * `lexicalHooks` imports `@datalayer/jupyter-lexical` at module load —
71
+ * the exact import this plugin keeps out of its own entry so a workspace
72
+ * only pays for lexical when a document exists. A static contribution
73
+ * would smuggle it back in. The reactor takes contributions at any time
74
+ * and bumps its revision, so the chat re-reads its tools point the
75
+ * moment these land.
76
+ */
77
+ void import('../../../tools/adapters/agent-runtimes/lexicalHooks').then(({ createLexicalTools }) => {
78
+ ctx.contribute(LoopFrontendTool, {
79
+ id: 'document-tools',
80
+ tools: workspace => createLexicalTools(workspace.surfaceId),
81
+ }, { id: 'document-tools' });
82
+ });
83
+ return {};
84
+ },
85
+ });
86
+ export default DocumentPlugin;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * What the document editor holds before anyone types.
3
+ *
4
+ * A heading, a paragraph and a Jupyter cell that has already run — the same
5
+ * small analysis the opening notebook shows, so the two editors open on one
6
+ * story. It exists for the same reason the notebook's opening cell does: an
7
+ * empty editor shows what the editor is, and a short document shows what it is
8
+ * *for* — prose and live code on one page, the output already there.
9
+ *
10
+ * Serialised Lexical state, as `EphemeralDocument` loads it. The cell is the
11
+ * pair the slash menu's "Jupyter Cell" inserts — a `jupyter-input` holding the
12
+ * code and a `jupyter-output` holding what it printed, tied by one uuid. The
13
+ * code is stored already tokenised, the way the editor's own highlighter
14
+ * stores it after a keystroke: a loaded state runs no transforms, so code
15
+ * handed over as plain text would sit unhighlighted until somebody typed in
16
+ * it. The same Prism grammar the highlighter uses does the tokenising here.
17
+ * The output is what this code prints, from a real run: a fabricated output
18
+ * on a page asking to be trusted is a lie told at the worst possible moment.
19
+ *
20
+ * @module loop/plugins/document/openingDocument
21
+ */
22
+ import type { SerializedEditorState } from 'lexical';
23
+ import 'prismjs/components/prism-python';
24
+ export declare const OPENING_DOCUMENT_TITLE = "Quarterly revenue by region";
25
+ export declare const OPENING_DOCUMENT_PARAGRAPH: string;
26
+ /** The opening document, built fresh: the editor keeps what it is handed. */
27
+ export declare function openingDocument(): SerializedEditorState;
28
+ export default openingDocument;
@@ -0,0 +1,122 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import Prism from 'prismjs';
6
+ import 'prismjs/components/prism-python';
7
+ import { OPENING_FRAME_REPR, OPENING_SOURCE, } from '../notebook/openingNotebook';
8
+ export const OPENING_DOCUMENT_TITLE = 'Quarterly revenue by region';
9
+ export const OPENING_DOCUMENT_PARAGRAPH = 'Six rows of revenue, two quarters, three regions. The cell below loads them and ' +
10
+ 'shows the frame; run it, change it, or ask an agent to take it further — the ' +
11
+ 'code and its output live in this document, beside the words about them.';
12
+ const INPUT_UUID = 'opening-document-input';
13
+ const OUTPUT_UUID = 'opening-document-output';
14
+ const text = (content) => ({
15
+ detail: 0,
16
+ format: 0,
17
+ mode: 'normal',
18
+ style: '',
19
+ text: content,
20
+ type: 'text',
21
+ version: 1,
22
+ });
23
+ const block = (type, children, extra = {}) => ({
24
+ children,
25
+ direction: 'ltr',
26
+ format: '',
27
+ indent: 0,
28
+ type,
29
+ version: 1,
30
+ ...extra,
31
+ });
32
+ const LINE_BREAK = { type: 'linebreak', version: 1 };
33
+ /** One run of code as the highlighter stores it: text, and the token type it is. */
34
+ const highlight = (content, highlightType) => ({
35
+ detail: 0,
36
+ format: 0,
37
+ mode: 'normal',
38
+ style: '',
39
+ text: content,
40
+ type: 'jupyter-input-highlight',
41
+ version: 1,
42
+ highlightType,
43
+ });
44
+ /**
45
+ * Prism's tokens as highlight nodes — the same walk `@datalayer/jupyter-lexical`
46
+ * makes when it tokenises a code block, so what is stored here is what the
47
+ * editor would have stored itself.
48
+ */
49
+ const tokenNodes = (tokens) => tokens.flatMap(token => {
50
+ if (typeof token === 'string') {
51
+ return token
52
+ .split('\n')
53
+ .flatMap((part, index) => [
54
+ ...(index > 0 ? [LINE_BREAK] : []),
55
+ ...(part.length > 0 ? [highlight(part)] : []),
56
+ ]);
57
+ }
58
+ const { content, type } = token;
59
+ if (typeof content === 'string') {
60
+ return [highlight(content, type)];
61
+ }
62
+ if (Array.isArray(content)) {
63
+ return content.length === 1 && typeof content[0] === 'string'
64
+ ? [highlight(content[0], type)]
65
+ : tokenNodes(content);
66
+ }
67
+ return [];
68
+ });
69
+ /** The code, tokenised; plain lines only if the grammar is somehow missing. */
70
+ const codeNodes = (source) => {
71
+ const grammar = Prism.languages.python;
72
+ if (grammar) {
73
+ return tokenNodes(Prism.tokenize(source, grammar));
74
+ }
75
+ return source
76
+ .split('\n')
77
+ .flatMap((line, index) => [
78
+ ...(index > 0 ? [LINE_BREAK] : []),
79
+ ...(line.length > 0 ? [highlight(line)] : []),
80
+ ]);
81
+ };
82
+ /** The opening document, built fresh: the editor keeps what it is handed. */
83
+ export function openingDocument() {
84
+ const source = OPENING_SOURCE.join('');
85
+ return {
86
+ root: {
87
+ children: [
88
+ block('heading', [text(OPENING_DOCUMENT_TITLE)], { tag: 'h1' }),
89
+ block('paragraph', [text(OPENING_DOCUMENT_PARAGRAPH)], {
90
+ textFormat: 0,
91
+ textStyle: '',
92
+ }),
93
+ block('jupyter-input', codeNodes(source), {
94
+ language: 'python',
95
+ jupyterInputNodeUuid: INPUT_UUID,
96
+ }),
97
+ {
98
+ type: 'jupyter-output',
99
+ version: 1,
100
+ format: '',
101
+ source,
102
+ outputs: [
103
+ {
104
+ output_type: 'execute_result',
105
+ execution_count: 1,
106
+ data: { 'text/plain': OPENING_FRAME_REPR },
107
+ metadata: {},
108
+ },
109
+ ],
110
+ jupyterInputNodeUuid: INPUT_UUID,
111
+ jupyterOutputNodeUuid: OUTPUT_UUID,
112
+ },
113
+ ],
114
+ direction: 'ltr',
115
+ format: '',
116
+ indent: 0,
117
+ type: 'root',
118
+ version: 1,
119
+ },
120
+ };
121
+ }
122
+ export default openingDocument;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * What the document's code blocks run on, on the document's toolbar.
3
+ *
4
+ * The prose equivalent of the notebook's kernel light. A document with a
5
+ * Jupyter cell in it is running code, and someone whose cell does nothing
6
+ * should be able to see whether there is anything to run it on without leaving
7
+ * the document.
8
+ *
9
+ * Read through the sandbox service's signal rather than the workspace snapshot
10
+ * so it tracks the sandbox itself, including while it is starting.
11
+ *
12
+ * @module loop/plugins/document-toolbar/SandboxStatusItem
13
+ */
14
+ import type { JSX } from 'react';
15
+ export declare function SandboxStatusItem(): JSX.Element | null;
16
+ export default SandboxStatusItem;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useSignalValue } from '@datalayer/reactor/react';
3
+ import { Box, Text } from '@primer/react';
4
+ import { useOptionalSandboxService } from '../agents';
5
+ import { IDLE_SANDBOX_SNAPSHOT_SIGNAL } from '../../core';
6
+ /** How each state reads, and what colour it reads in. */
7
+ const APPEARANCE = {
8
+ idle: { label: 'No sandbox', color: 'fg.muted' },
9
+ starting: { label: 'Sandbox starting', color: 'attention.fg' },
10
+ running: { label: 'Sandbox ready', color: 'success.fg' },
11
+ stopping: { label: 'Sandbox stopping', color: 'attention.fg' },
12
+ error: { label: 'Sandbox failed', color: 'danger.fg' },
13
+ };
14
+ export function SandboxStatusItem() {
15
+ // Optional: the document is usable without the sandbox plugin, and a status
16
+ // item is the last thing that should insist on it.
17
+ const service = useOptionalSandboxService();
18
+ const snapshot = useSignalValue(service?.snapshot ?? IDLE_SANDBOX_SNAPSHOT_SIGNAL);
19
+ if (!service) {
20
+ return null;
21
+ }
22
+ const appearance = APPEARANCE[snapshot.state] ?? APPEARANCE.idle;
23
+ return (_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1, px: 2 }, children: [_jsx(Box, { sx: {
24
+ width: 8,
25
+ height: 8,
26
+ borderRadius: '50%',
27
+ bg: appearance.color,
28
+ flexShrink: 0,
29
+ } }), _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: appearance.label })] }));
30
+ }
31
+ export default SandboxStatusItem;
@@ -0,0 +1,4 @@
1
+ import { DOCUMENT_TOOLBAR_PLUGIN_NAME } from './names';
2
+ export { DOCUMENT_TOOLBAR_PLUGIN_NAME };
3
+ export declare const DocumentToolbarPlugin: import("@datalayer/reactor").LazyPluginRef;
4
+ export default DocumentToolbarPlugin;
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-document-toolbar` — the document's own toolbar items.
7
+ *
8
+ * The prose counterpart of the notebook toolbar plugin, and the same
9
+ * arrangement: the document editor offers a point, this plugin provides the
10
+ * bar and puts what belongs to the document on it, and opens a second point
11
+ * where the chat's agent actions arrive. Switch it off and the document has no
12
+ * toolbar at all — no formatting controls, no buttons — and goes on being
13
+ * editable.
14
+ *
15
+ * Lazy, waiting on the document toolbar point — a workspace where nobody opens
16
+ * a document never fetches it.
17
+ *
18
+ * @module loop/plugins/document-toolbar
19
+ */
20
+ import { defineLazyPlugin, onContributionPoint } from '@datalayer/reactor';
21
+ import { LoopDocumentToolbar, LoopDocumentToolbarItem } from '../../core';
22
+ import { DOCUMENT_TOOLBAR_PLUGIN_NAME } from './names';
23
+ export { DOCUMENT_TOOLBAR_PLUGIN_NAME };
24
+ export const DocumentToolbarPlugin = defineLazyPlugin({
25
+ name: DOCUMENT_TOOLBAR_PLUGIN_NAME,
26
+ displayName: 'Document toolbar',
27
+ description: 'Shows what the document’s code blocks run on.',
28
+ octicon: 'circle',
29
+ emoji: '\u{1F535}',
30
+ activationEvents: [onContributionPoint(LoopDocumentToolbar)],
31
+ /** The bar accepts the buttons, so the bar's owner opens the point. */
32
+ contributionPoints: [LoopDocumentToolbarItem],
33
+ load: () => import('./plugin'),
34
+ });
35
+ export default DocumentToolbarPlugin;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The plugin's name, on its own — see the notebook toolbar's `names` module.
3
+ *
4
+ * @module loop/plugins/document-toolbar/names
5
+ */
6
+ export declare const DOCUMENT_TOOLBAR_PLUGIN_NAME = "@datalayer/loop-plugin-document-toolbar";
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The plugin's name, on its own — see the notebook toolbar's `names` module.
7
+ *
8
+ * @module loop/plugins/document-toolbar/names
9
+ */
10
+ export const DOCUMENT_TOOLBAR_PLUGIN_NAME = '@datalayer/loop-plugin-document-toolbar';
@@ -0,0 +1,2 @@
1
+ export declare const DocumentToolbarPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, unknown>;
2
+ export default DocumentToolbarPlugin;
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * The document toolbar plugin's module.
8
+ *
9
+ * @module loop/plugins/document-toolbar/plugin
10
+ */
11
+ import { contribution, definePlugin } from '@datalayer/reactor';
12
+ import { LoopDocumentToolbar } from '../../core';
13
+ import { SandboxStatusItem } from './SandboxStatusItem';
14
+ import { DOCUMENT_TOOLBAR_PLUGIN_NAME } from './names';
15
+ /** Trailing edge, past whatever the Lexical toolbar puts there itself. */
16
+ const STATUS_ORDER = 1000;
17
+ export const DocumentToolbarPlugin = definePlugin({
18
+ name: DOCUMENT_TOOLBAR_PLUGIN_NAME,
19
+ contributes: [
20
+ contribution(LoopDocumentToolbar, {
21
+ items: () => [
22
+ {
23
+ key: 'loop-document-status-spacer',
24
+ type: 'spacer',
25
+ order: STATUS_ORDER - 1,
26
+ },
27
+ {
28
+ key: 'loop-document-sandbox-status',
29
+ type: 'custom',
30
+ order: STATUS_ORDER,
31
+ group: 'sandbox',
32
+ render: () => _jsx(SandboxStatusItem, {}),
33
+ },
34
+ ],
35
+ }, { id: 'toolbar', order: 100 }),
36
+ ],
37
+ });
38
+ export default DocumentToolbarPlugin;
@@ -0,0 +1,10 @@
1
+ export declare const DOCUMENT_VIEW_PLUGIN_NAME = "@datalayer/loop-plugin-document-view";
2
+ export declare const DocumentViewPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
3
+ components: {
4
+ id: string;
5
+ slot: "loop.promptAction";
6
+ order: number;
7
+ Component: () => import("react").JSX.Element | null;
8
+ }[];
9
+ }>;
10
+ export default DocumentViewPlugin;