@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,160 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CommentDiscussionIcon } from '@primer/octicons-react';
3
+ import { definePlugin, signal } from '@datalayer/reactor';
4
+ import { useContributions, useSignalValue } from '@datalayer/reactor/react';
5
+ import { PageLayout, PagePanelToggle, openPagePanel, } from '@datalayer/primer-addons/lib/reactor';
6
+ import { ChatViewModeToggle } from '../../../chat/header/ChatViewModeToggle';
7
+ import { LoopChatLayout, LoopChatTurn, LoopPromptPanel, LoopSlots, } from '../../core';
8
+ import { TurnPanel } from './TurnPanel';
9
+ /*
10
+ * The layout's state is primer-addons', re-exported under the names the
11
+ * Loop always had: a host that opened the conversation panel by calling
12
+ * `openConversationPanel()` keeps doing so.
13
+ */
14
+ export { pageLayoutPanelOpen, pageLayoutSheet, openPagePanel as openConversationPanel, } from '@datalayer/primer-addons/lib/reactor';
15
+ export const LOOP_PAGE_LAYOUT_PLUGIN_NAME = '@datalayer/loop-plugin-page-layout';
16
+ /* A signal to read when no chat contributed a turn: the hook needs one. */
17
+ const NO_TURN = signal({ id: 0, status: 'idle' });
18
+ /**
19
+ * How the page layout shows the chat, when the composer is the floating
20
+ * card: the card itself over the page (`floating-draggable`, where it
21
+ * starts), or the conversation panel with the composer standing in it —
22
+ * beside the page (`sidebar`), over its right edge at full height
23
+ * (`floating`), or as a window in its corner (`floating-small`). The four
24
+ * modes of the chat header's toggle, which the card carries in its own
25
+ * footer. One signal for the workspace, as `pageLayoutPanelOpen` is: the
26
+ * mode is the person's, not a build's.
27
+ */
28
+ export const pageLayoutChatMode = signal('floating-draggable');
29
+ /** The composer's stance for the chat view, following the mode above. */
30
+ const promptStance = signal('floating-top');
31
+ /*
32
+ * Which edge the card returns to when the mode puts it back over the page:
33
+ * the build's own `promptAnchor`, kept here because the mode is picked
34
+ * through a module-level function, as `pageLayoutChatMode` itself is. One
35
+ * page layout to a page, the assumption that signal already makes.
36
+ */
37
+ let floatingStance = 'floating-top';
38
+ export function pageLayoutForChatMode(mode) {
39
+ switch (mode) {
40
+ case 'sidebar':
41
+ return { bandMode: 'panel', panelMode: 'docked' };
42
+ case 'floating':
43
+ return { bandMode: 'panel', panelMode: 'overlay' };
44
+ case 'floating-small':
45
+ return { bandMode: 'panel', panelMode: 'popup' };
46
+ default:
47
+ return { bandMode: 'floating', panelMode: 'docked' };
48
+ }
49
+ }
50
+ /** Picks a mode: the layout follows, and so does the composer's stance. */
51
+ export function setPageLayoutChatMode(mode) {
52
+ pageLayoutChatMode.value = mode;
53
+ const { bandMode } = pageLayoutForChatMode(mode);
54
+ promptStance.value = bandMode === 'floating' ? floatingStance : 'docked-top';
55
+ // The composer went into the panel: the panel opens to show it.
56
+ if (bandMode === 'panel') {
57
+ openPagePanel();
58
+ }
59
+ }
60
+ /** The toggle in the floating composer's footer. */
61
+ function ChatModeAction() {
62
+ const mode = useSignalValue(pageLayoutChatMode);
63
+ return _jsx(ChatViewModeToggle, { value: mode, onChange: setPageLayoutChatMode });
64
+ }
65
+ /**
66
+ * The chat view's parts on the page layout.
67
+ *
68
+ * The editors are the page, the transcript the panel, the composer the band;
69
+ * what the agent is doing — the turn's `activity` — is the line at the top
70
+ * of the sheet, so the change is seen where it happens.
71
+ */
72
+ function LoopPageLayout({ parts, promptMode, pageSize, }) {
73
+ const turnEntries = useContributions(LoopChatTurn);
74
+ const turn = useSignalValue(turnEntries[0]?.value.turn ?? NO_TURN);
75
+ const chatMode = useSignalValue(pageLayoutChatMode);
76
+ // The display modes are the floating card's own; a docked composer stays
77
+ // docked above the page, whatever mode was picked elsewhere.
78
+ const placement = promptMode === 'floating'
79
+ ? pageLayoutForChatMode(chatMode)
80
+ : { bandMode: 'docked', panelMode: 'docked' };
81
+ return (_jsx(PageLayout, { page: parts.editors, hasPage: parts.hasEditor, panel: parts.transcript, band: parts.prompt, chips: parts.chips, picker: parts.picker, transient: parts.transient, activity: turn.activity, bandMode: placement.bandMode, panelMode: placement.panelMode, pageSize: pageSize }));
82
+ }
83
+ /** The header button that opens and closes the conversation panel. */
84
+ function ConversationToggle() {
85
+ return (_jsx(PagePanelToggle, { panelName: "conversation", icon: CommentDiscussionIcon, sx: { order: 2 } }));
86
+ }
87
+ export const LoopPageLayoutPlugin = definePlugin({
88
+ name: LOOP_PAGE_LAYOUT_PLUGIN_NAME,
89
+ config: {
90
+ turnPanel: 'below',
91
+ turnPanelFooter: 'full',
92
+ prompt: 'docked',
93
+ promptAnchor: 'top',
94
+ pageSize: undefined,
95
+ },
96
+ displayName: 'Page layout',
97
+ description: 'The editor — or, in the chat view, the conversation — on a centred sheet, the prompt docked above it at the same width or floating over it as a draggable card, the current turn under the prompt, the conversation in a side panel.',
98
+ octicon: 'file',
99
+ emoji: '\u{1F4C4}',
100
+ build: ({ config, ...ctx }) => {
101
+ /*
102
+ The layout, contributed per build because the composer's stance is
103
+ configuration: `docked-top` means the layout owns the composer's width
104
+ — `PageLayout` gives it a mount point the width of the sheet, so the
105
+ prompt and the page read as one column; `floating-top` and
106
+ `floating-bottom` are the draggable
107
+ card, sized by itself, over a strip of canvas kept clear for it. The
108
+ component closes over the choice once, per build.
109
+ */
110
+ const promptMode = config.prompt;
111
+ const pageSize = config.pageSize;
112
+ floatingStance =
113
+ config.promptAnchor === 'bottom' ? 'floating-bottom' : 'floating-top';
114
+ if (promptMode === 'floating') {
115
+ promptStance.value = floatingStance;
116
+ }
117
+ const ConfiguredLayout = (parts) => (_jsx(LoopPageLayout, { parts: parts, promptMode: promptMode, pageSize: pageSize }));
118
+ ctx.contribute(LoopChatLayout, {
119
+ id: 'page-layout',
120
+ prompt: promptMode === 'floating' ? floatingStance : 'docked-top',
121
+ // Live only for the card: its display modes move the composer.
122
+ promptStance: promptMode === 'floating' ? promptStance : undefined,
123
+ Component: ConfiguredLayout,
124
+ }, { id: 'page-layout' });
125
+ // The turn panel is configuration-dependent, so it is contributed here
126
+ // rather than statically: which side, what footer, or not at all. The
127
+ // component closes over the footer choice once, per build.
128
+ if (config.turnPanel !== 'none') {
129
+ const footer = config.turnPanelFooter;
130
+ const ConfiguredTurnPanel = () => (_jsx(TurnPanel, { footer: footer }));
131
+ ctx.contribute(LoopPromptPanel, {
132
+ id: 'page-layout-turn',
133
+ placement: config.turnPanel,
134
+ order: 0,
135
+ Component: ConfiguredTurnPanel,
136
+ }, { id: 'page-layout-turn' });
137
+ }
138
+ return {
139
+ components: [
140
+ {
141
+ id: 'page-layout-conversation-toggle',
142
+ slot: LoopSlots.header,
143
+ Component: ConversationToggle,
144
+ },
145
+ // The display modes, in the floating card's footer — and only
146
+ // there: a docked composer has none to pick.
147
+ ...(promptMode === 'floating'
148
+ ? [
149
+ {
150
+ id: 'page-layout-chat-mode',
151
+ slot: LoopSlots.promptAction,
152
+ Component: ChatModeAction,
153
+ },
154
+ ]
155
+ : []),
156
+ ],
157
+ };
158
+ },
159
+ });
160
+ export default LoopPageLayoutPlugin;
@@ -0,0 +1,14 @@
1
+ import type { ReactorReactOutput } from '@datalayer/reactor/react';
2
+ export declare const PLUGINS_PANEL_PLUGIN_NAME = "@datalayer/loop-plugin-plugins-panel";
3
+ /**
4
+ * How wide the panel is, and the aside around it.
5
+ *
6
+ * Declared here rather than in the shell so the two cannot disagree: the panel
7
+ * truncates its descriptions to the width it was given, and truncating to a
8
+ * width the container does not actually have is how text ends up cut short in
9
+ * the middle of empty space.
10
+ */
11
+ export declare const SIDEBAR_WIDTH = 420;
12
+ export declare const PluginsPanelPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, ReactorReactOutput>;
13
+ export { PluginsManagerView as PluginsPanel } from '@datalayer/reactor-manager';
14
+ export default PluginsPanelPlugin;
@@ -0,0 +1,74 @@
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
+ * `@datalayer/loop-plugin-plugins-panel` — the plugin list, as a plugin.
8
+ *
9
+ * It fills the sidebar slot like any other contribution, which is the joke and
10
+ * also the proof: the thing that switches plugins on and off is itself one, and
11
+ * can be left out of a host that does not want it.
12
+ *
13
+ * The list itself is no longer written here. `@datalayer/reactor-manager` is
14
+ * the same surface, generic — a filter, a row per plugin, a switch each — and
15
+ * the workspace had grown its own copy that answered the same questions
16
+ * slightly differently. This plugin is now the loop's placement of it: which
17
+ * slot it goes in, and which plugin may not be switched off.
18
+ *
19
+ * What went with the rewrite is the graph button. The panel used to draw it,
20
+ * which meant asking by name whether a graph view was mounted; the graph
21
+ * plugin contributes it to the manager's action slot now, so it appears and
22
+ * disappears with the thing it opens.
23
+ *
24
+ * @module loop/plugins/plugins-panel
25
+ */
26
+ import { definePlugin } from '@datalayer/reactor';
27
+ import { GraphPlugin } from '@datalayer/reactor-graph';
28
+ import { PluginsManagerView } from '@datalayer/reactor-manager';
29
+ import { LoopSlots } from '../../core';
30
+ export const PLUGINS_PANEL_PLUGIN_NAME = '@datalayer/loop-plugin-plugins-panel';
31
+ /**
32
+ * How wide the panel is, and the aside around it.
33
+ *
34
+ * Declared here rather than in the shell so the two cannot disagree: the panel
35
+ * truncates its descriptions to the width it was given, and truncating to a
36
+ * width the container does not actually have is how text ends up cut short in
37
+ * the middle of empty space.
38
+ */
39
+ export const SIDEBAR_WIDTH = 420;
40
+ /** The generic graph plugin, which the loop's own adapter wraps. */
41
+ const REACTOR_GRAPH_PLUGIN_NAME = GraphPlugin.name;
42
+ export const PluginsPanelPlugin = definePlugin({
43
+ name: PLUGINS_PANEL_PLUGIN_NAME,
44
+ displayName: 'Plugins panel',
45
+ description: 'Switch plugins on and off while the workspace runs.',
46
+ octicon: 'plug',
47
+ emoji: '\u{1F50C}',
48
+ build: () => ({
49
+ components: [
50
+ {
51
+ id: 'plugins-panel',
52
+ slot: LoopSlots.sidebar,
53
+ // Last in the sidebar: it is about the workspace rather than part of
54
+ // the work, so a plugin's own panel — the decks list, say — sits
55
+ // above it whatever order the plugins were listed in.
56
+ order: 900,
57
+ // Itself protected: switching the panel off would remove the only way
58
+ // to switch anything back on.
59
+ //
60
+ // The workspace is forwarded rather than used here — the manager
61
+ // passes whatever it is given to the plugins contributing actions, and
62
+ // the graph button is the one that needs it.
63
+ Component: ({ workspace }) => (_jsx(PluginsManagerView, { protectedPlugins: [PLUGINS_PANEL_PLUGIN_NAME],
64
+ // `@datalayer/loop-plugin-graph` is the switch that matters: it
65
+ // places the graph in this workspace and pulls the generic plugin
66
+ // in as a dependency. Listing both put two switches in front of
67
+ // one feature, with no way to tell which to use.
68
+ hiddenPlugins: [REACTOR_GRAPH_PLUGIN_NAME], width: SIDEBAR_WIDTH, workspace: workspace })),
69
+ },
70
+ ],
71
+ }),
72
+ });
73
+ export { PluginsManagerView as PluginsPanel } from '@datalayer/reactor-manager';
74
+ export default PluginsPanelPlugin;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The + in the prompt's footer: start the conversation over.
3
+ *
4
+ * The chat header carries the same control, and a workspace that hides that
5
+ * header — the Loop Shell does — used to lose the only way to reset. This one
6
+ * lives with the composer, which is on screen in every placement.
7
+ *
8
+ * It presses the `/new` command rather than reaching into the chat, so the
9
+ * button and the slash command cannot drift: one intent, one path, and the
10
+ * command's own error shows when no conversation is on screen.
11
+ *
12
+ * @module loop/plugins/prompt/NewChatAction
13
+ */
14
+ import type { JSX } from 'react';
15
+ import type { LoopWorkspaceContext } from '../../core';
16
+ export declare function NewChatAction({ workspace, }: {
17
+ workspace?: LoopWorkspaceContext;
18
+ }): JSX.Element | null;
19
+ export default NewChatAction;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { IconButton } from '@primer/react';
3
+ import { PlusIcon } from '@primer/octicons-react';
4
+ export function NewChatAction({ workspace, }) {
5
+ if (!workspace) {
6
+ return null;
7
+ }
8
+ return (_jsx(IconButton, { icon: PlusIcon, "aria-label": "New conversation", title: "New conversation", variant: "invisible", size: "small", onClick: () => void workspace.submit('/new') }));
9
+ }
10
+ export default NewChatAction;
@@ -0,0 +1,11 @@
1
+ import { NewChatAction } from './NewChatAction';
2
+ export declare const PROMPT_PLUGIN_NAME = "@datalayer/loop-plugin-prompt";
3
+ export declare const PromptPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
4
+ components: {
5
+ id: string;
6
+ slot: "loop.promptAction";
7
+ Component: typeof NewChatAction;
8
+ }[];
9
+ }>;
10
+ export { focusPrompt, onPromptFocusRequest } from '../../core';
11
+ export default PromptPlugin;
@@ -0,0 +1,73 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-prompt` — the prompt as a first-class subject.
7
+ *
8
+ * The composer itself is the chat's, whatever the placement: docked under the
9
+ * workspace, in the chat column, or floating in a draggable card
10
+ * (`promptPlacement: 'floating'` on the chat, which is the real
11
+ * `InputPrompt` — lexical editor, slash commands, the tools/skills/model
12
+ * footer — wrapped in `FloatingCard`). This plugin deliberately ships no
13
+ * second input box: two composers for one conversation is one too many, and a
14
+ * reimplementation would be a composer that drifts.
15
+ *
16
+ * What it adds is around the composer: `/prompt` (Mod+Alt+P) puts the caret
17
+ * in it from anywhere, through the same ask-and-answer channel the editor
18
+ * commands use; `/new` (Mod+Alt+R) starts the conversation over, and the +
19
+ * this plugin puts in the prompt's footer bar presses exactly that command.
20
+ * `loopPlugins({ floatingPrompt: true })` mounts this plugin and asks the
21
+ * chat for the floating placement together.
22
+ *
23
+ * @module loop/plugins/prompt
24
+ */
25
+ import { contribution, definePlugin } from '@datalayer/reactor';
26
+ import { LoopCommand, LoopSlots, focusPrompt } from '../../core';
27
+ import { NewChatAction } from './NewChatAction';
28
+ export const PROMPT_PLUGIN_NAME = '@datalayer/loop-plugin-prompt';
29
+ export const PromptPlugin = definePlugin({
30
+ name: PROMPT_PLUGIN_NAME,
31
+ displayName: 'Prompt',
32
+ description: 'Prompt commands: focus the composer, start over, and the +.',
33
+ octicon: 'paper-airplane',
34
+ emoji: '\u{1FAB6}',
35
+ contributes: [
36
+ contribution(LoopCommand, {
37
+ name: 'prompt',
38
+ description: 'Focus the prompt',
39
+ group: 'Session',
40
+ keybinding: 'Mod+Alt+P',
41
+ run: async () => {
42
+ if (!focusPrompt()) {
43
+ throw new Error('No prompt is on screen to focus.');
44
+ }
45
+ },
46
+ }, { id: 'prompt' }),
47
+ contribution(LoopCommand, {
48
+ name: 'new',
49
+ aliases: ['reset'],
50
+ description: 'Start the conversation over',
51
+ group: 'Session',
52
+ keybinding: 'Mod+Alt+R',
53
+ run: async ({ workspace }) => {
54
+ const reset = workspace.viewControls.newChat;
55
+ if (!reset) {
56
+ throw new Error('No conversation is on screen to start over.');
57
+ }
58
+ reset();
59
+ },
60
+ }, { id: 'new' }),
61
+ ],
62
+ build: () => ({
63
+ components: [
64
+ {
65
+ id: 'new-chat',
66
+ slot: LoopSlots.promptAction,
67
+ Component: NewChatAction,
68
+ },
69
+ ],
70
+ }),
71
+ });
72
+ export { focusPrompt, onPromptFocusRequest } from '../../core';
73
+ export default PromptPlugin;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The editor choice, in the loop's vocabulary.
3
+ *
4
+ * The store itself lives in `@datalayer/reactor-shell` now — the loop's
5
+ * editor selector grew into the generic shell plugin, and this module is the
6
+ * thin dictionary between the two: `editor` here is `view` there. Kept so
7
+ * everything written against the loop's names (the `/editor` command, the
8
+ * tests, the barrel) reads unchanged.
9
+ *
10
+ * The one behavioural difference from the old local store is deliberate:
11
+ * `chooseEditor` no longer calls the chat's surface channel itself — the
12
+ * generic store announces every choice through the announcer the loop's
13
+ * shell plugin installs, which is wired to `requestSurface`. One path,
14
+ * whether the choice came from the selector, `/editor`, or the generic
15
+ * cycle command.
16
+ *
17
+ * @module loop/plugins/shell/editorChoice
18
+ */
19
+ import { chooseView, nextView, seedViewChoice, setViewOptions, subscribeViewChoice } from '@datalayer/reactor-shell';
20
+ /** The choice that means "just the conversation". */
21
+ export declare const NONE_EDITOR = "none";
22
+ /** The current request and options, in loop names. */
23
+ export declare function getEditorChoice(): {
24
+ editorId: string;
25
+ options: readonly string[];
26
+ };
27
+ export declare const subscribeEditorChoice: typeof subscribeViewChoice;
28
+ export declare const setEditorOptions: typeof setViewOptions;
29
+ export declare const chooseEditor: typeof chooseView;
30
+ export declare const seedEditorChoice: typeof seedViewChoice;
31
+ export declare const nextEditor: typeof nextView;
@@ -0,0 +1,58 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The editor choice, in the loop's vocabulary.
7
+ *
8
+ * The store itself lives in `@datalayer/reactor-shell` now — the loop's
9
+ * editor selector grew into the generic shell plugin, and this module is the
10
+ * thin dictionary between the two: `editor` here is `view` there. Kept so
11
+ * everything written against the loop's names (the `/editor` command, the
12
+ * tests, the barrel) reads unchanged.
13
+ *
14
+ * The one behavioural difference from the old local store is deliberate:
15
+ * `chooseEditor` no longer calls the chat's surface channel itself — the
16
+ * generic store announces every choice through the announcer the loop's
17
+ * shell plugin installs, which is wired to `requestSurface`. One path,
18
+ * whether the choice came from the selector, `/editor`, or the generic
19
+ * cycle command.
20
+ *
21
+ * @module loop/plugins/shell/editorChoice
22
+ */
23
+ import { NONE_VIEW, chooseView, getViewChoice, nextView, seedViewChoice, setViewAnnouncer, setViewOptions, subscribeViewChoice, } from '@datalayer/reactor-shell';
24
+ import { requestSurface } from '../../core/surfaceRequests';
25
+ /*
26
+ * Wired at import, not only at plugin start: the `/editor` command is a
27
+ * plain contribution that can be run without a reactor around it — the tests
28
+ * do, and so does anything driving commands headlessly — and a choice that
29
+ * silently announced to nobody would look exactly like the bug the surface
30
+ * channel exists to prevent. The loop shell plugin installs the same
31
+ * announcer again when it registers, which is idempotent by construction.
32
+ */
33
+ setViewAnnouncer(requestSurface);
34
+ /** The choice that means "just the conversation". */
35
+ export const NONE_EDITOR = NONE_VIEW;
36
+ /*
37
+ * Cached per underlying state: `useSyncExternalStore` re-renders whenever
38
+ * the snapshot's identity changes, so a getter that builds a fresh object on
39
+ * every call is an infinite render loop waiting for its first subscriber —
40
+ * the view-switch icons found it. The store replaces its state object only
41
+ * on actual change, which makes it the perfect cache key.
42
+ */
43
+ let mappedFor = null;
44
+ let mapped = null;
45
+ /** The current request and options, in loop names. */
46
+ export function getEditorChoice() {
47
+ const state = getViewChoice();
48
+ if (state !== mappedFor || !mapped) {
49
+ mappedFor = state;
50
+ mapped = { editorId: state.viewId, options: state.options };
51
+ }
52
+ return mapped;
53
+ }
54
+ export const subscribeEditorChoice = subscribeViewChoice;
55
+ export const setEditorOptions = setViewOptions;
56
+ export const chooseEditor = chooseView;
57
+ export const seedEditorChoice = seedViewChoice;
58
+ export const nextEditor = nextView;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `@datalayer/loop-plugin-shell` — the loop's face of the generic shell.
3
+ *
4
+ * The machinery lives in `@datalayer/reactor-shell` now: the view choice
5
+ * store, the segmented selector that shows nothing until plugins contribute,
6
+ * the cycle command. This plugin is what makes it *the loop's*:
7
+ *
8
+ * - it points the generic plugin at {@link LoopEditorView} — the editor
9
+ * point the notebook and document fill — and declares the loop's points;
10
+ * - it teaches the selector to read a {@link ChatSurfaceContribution},
11
+ * gating against the live workspace the header slot passes;
12
+ * - it wires the announcer to `requestSurface`, so a choice reaches the chat
13
+ * through the same channel `/notebook` and `/document` use;
14
+ * - it keeps the `/editor` slash command, in the loop's own registry.
15
+ *
16
+ * @module loop/plugins/shell
17
+ */
18
+ import type { JSX } from 'react';
19
+ export declare const SHELL_PLUGIN_NAME = "@datalayer/loop-plugin-shell";
20
+ export type ShellPluginConfig = {
21
+ /**
22
+ * The editor the selector starts on.
23
+ *
24
+ * A preference, not a demand, exactly like the chat's `defaultSurface` — a
25
+ * named editor whose plugin is not mounted leaves the selector on `'none'`.
26
+ * The two configs should agree; `loopPlugins` sets both from one option.
27
+ */
28
+ defaultEditor: string;
29
+ /**
30
+ * Whether the header carries the segmented control at all.
31
+ *
32
+ * The points are declared either way — extending the shell must not
33
+ * depend on whether its selector happens to be drawn.
34
+ */
35
+ showSelector: boolean;
36
+ };
37
+ /** The generic selector, dressed for the loop's header. */
38
+ declare function EditorSelectorComponent(slotProps: Record<string, unknown>): JSX.Element | null;
39
+ export declare const ShellPlugin: import("@datalayer/reactor").ReactorPlugin<ShellPluginConfig, unknown, unknown>;
40
+ export { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, setEditorOptions, subscribeEditorChoice, } from './editorChoice';
41
+ /** The loop's selector, for a host that renders it somewhere of its own. */
42
+ export { EditorSelectorComponent as EditorSelector };
43
+ /** @deprecated The editors plugin grew into the shell plugin; same object. */
44
+ export declare const EditorsPlugin: import("@datalayer/reactor").ReactorPlugin<ShellPluginConfig, unknown, unknown>;
45
+ /** @deprecated See {@link SHELL_PLUGIN_NAME}. */
46
+ export declare const EDITORS_PLUGIN_NAME = "@datalayer/loop-plugin-shell";
47
+ export default ShellPlugin;
@@ -0,0 +1,142 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { configurePlugin, contribution, definePlugin, } from '@datalayer/reactor';
3
+ import { ShellPlugin as ReactorShellPlugin, ViewSelector, } from '@datalayer/reactor-shell';
4
+ import { LoopCommand, LoopEditorView, LoopSlots, LoopViewType, canOpenView, requestSurface, } from '../../core';
5
+ import { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, } from './editorChoice';
6
+ import { useEditorPreviews } from './useEditorPreviews';
7
+ export const SHELL_PLUGIN_NAME = '@datalayer/loop-plugin-shell';
8
+ /** How a loop editor contribution reads as the generic selector's view. */
9
+ function describeEditor(value, context) {
10
+ const surface = value;
11
+ const workspace = context
12
+ ?.workspace;
13
+ const openable = workspace ? canOpenView(surface, workspace) : true;
14
+ return {
15
+ id: surface.surfaceId,
16
+ title: surface.title,
17
+ icon: surface.icon,
18
+ order: surface.order,
19
+ disabled: !openable,
20
+ disabledReason: openable
21
+ ? undefined
22
+ : (workspace && surface.unavailableReason?.(workspace)) ||
23
+ 'Not available right now',
24
+ };
25
+ }
26
+ /** The generic selector, dressed for the loop's header. */
27
+ function EditorSelectorComponent(slotProps) {
28
+ const workspace = slotProps
29
+ .workspace;
30
+ /*
31
+ * Live figures for the labels — "Notebook (4)" — and the hover cards
32
+ * behind them. The editors are connected whether or not they are shown;
33
+ * the selector is where that stops being invisible.
34
+ */
35
+ const previews = useEditorPreviews(workspace?.surfaceId ?? '');
36
+ const describe = (value, context) => {
37
+ const base = describeEditor(value, context);
38
+ const preview = previews[base.id];
39
+ return preview
40
+ ? { ...base, badge: preview.badge, details: preview.details }
41
+ : base;
42
+ };
43
+ return (_jsx(ViewSelector, { point: LoopEditorView, describe: describe, context: slotProps,
44
+ // "Chat", not "None": with no editor beside it the conversation IS the
45
+ // view, and a control that names the common case after what it lacks
46
+ // reads as an error state.
47
+ noneLabel: "Chat", ariaLabel: "Editor" }));
48
+ }
49
+ export const ShellPlugin = definePlugin({
50
+ name: SHELL_PLUGIN_NAME,
51
+ // Named apart from the reactor's own `Shell` plugin, which sits beside it
52
+ // in the plugins panel: this is the Loop workspace's.
53
+ displayName: 'Loop shell',
54
+ description: 'The Loop workspace’s extension points, and the editor choice.',
55
+ octicon: 'columns',
56
+ emoji: '\u{1F4D1}',
57
+ config: {
58
+ defaultEditor: NONE_EDITOR,
59
+ showSelector: true,
60
+ },
61
+ /*
62
+ * The generic shell, configured for the loop. The selector is rendered by
63
+ * *this* plugin (below) rather than the generic one, because which slot it
64
+ * sits in and whether it shows are loop configuration; the generic
65
+ * keybinding is stood down so the loop's `/editor` keeps `Mod+Alt+E`
66
+ * without two commands fighting over one chord.
67
+ */
68
+ dependencies: [
69
+ configurePlugin(ReactorShellPlugin, {
70
+ point: LoopEditorView,
71
+ describe: describeEditor,
72
+ showSelector: false,
73
+ announce: (viewId) => requestSurface(viewId),
74
+ commandId: 'loop.shell.cycleEditor',
75
+ // Named for what it cycles here: the palette said "Switch the view" and
76
+ // a person looking for the notebook did not recognise it.
77
+ commandName: 'Switch the editor',
78
+ commandDescription: 'Cycle through the editors beside the conversation, and none',
79
+ keybinding: '',
80
+ }),
81
+ ],
82
+ // Declared, not merely used: the registry knows who contributed to a
83
+ // point, it cannot know who opened it — and these two are what makes this
84
+ // the plugin the others extend.
85
+ contributionPoints: [LoopViewType, LoopEditorView],
86
+ contributes: [
87
+ contribution(LoopCommand, {
88
+ name: 'editor',
89
+ aliases: ['editors'],
90
+ description: 'Switch the editor beside the conversation',
91
+ group: 'Open',
92
+ keybinding: 'Mod+Alt+E',
93
+ args: [
94
+ {
95
+ name: 'editor',
96
+ description: 'Which editor: none, or a surface id. Omit to cycle.',
97
+ required: false,
98
+ choices: () => [NONE_EDITOR, ...getEditorChoice().options],
99
+ },
100
+ ],
101
+ run: async ({ argv }) => {
102
+ const asked = argv.trim();
103
+ const wanted = asked === '' ? nextEditor() : asked;
104
+ const known = [NONE_EDITOR, ...getEditorChoice().options];
105
+ if (!known.includes(wanted)) {
106
+ throw new Error(`No editor called '${wanted}'. There is: ${known.join(', ')}.`);
107
+ }
108
+ if (!chooseEditor(wanted)) {
109
+ throw new Error('No chat is on screen to host the editor.');
110
+ }
111
+ },
112
+ }, { id: 'editor' }),
113
+ ],
114
+ build: ({ config }) => {
115
+ // The selector starts where the chat starts. Seeded, not requested: the
116
+ // chat's own `defaultSurface` is what actually opens the editor, and at
117
+ // build time there is no chat listening yet. The chat writes "no editor"
118
+ // as `''` or `'none'`; the selector's word for it is `'none'`.
119
+ seedEditorChoice(config.defaultEditor || NONE_EDITOR);
120
+ return {
121
+ components: config.showSelector
122
+ ? [
123
+ {
124
+ id: 'editor-selector',
125
+ slot: LoopSlots.header,
126
+ // The component holds itself to the trailing edge of the header
127
+ // row with `marginLeft: 'auto'`, wherever the slot renders it.
128
+ Component: EditorSelectorComponent,
129
+ },
130
+ ]
131
+ : [],
132
+ };
133
+ },
134
+ });
135
+ export { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, setEditorOptions, subscribeEditorChoice, } from './editorChoice';
136
+ /** The loop's selector, for a host that renders it somewhere of its own. */
137
+ export { EditorSelectorComponent as EditorSelector };
138
+ /** @deprecated The editors plugin grew into the shell plugin; same object. */
139
+ export const EditorsPlugin = ShellPlugin;
140
+ /** @deprecated See {@link SHELL_PLUGIN_NAME}. */
141
+ export const EDITORS_PLUGIN_NAME = SHELL_PLUGIN_NAME;
142
+ export default ShellPlugin;