@datalayer/agent-runtimes 1.0.29 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) 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 +385 -4
  23. package/lib/api/runtimes/environments.js +610 -9
  24. package/lib/api/runtimes/runtimes.d.ts +19 -19
  25. package/lib/api/runtimes/runtimes.js +47 -46
  26. package/lib/api/spacer/notebooks.js +1 -1
  27. package/lib/chat/Chat.d.ts +16 -4
  28. package/lib/chat/Chat.js +18 -5
  29. package/lib/chat/ChatFloating.d.ts +13 -2
  30. package/lib/chat/ChatFloating.js +192 -117
  31. package/lib/chat/ChatInline.d.ts +15 -0
  32. package/lib/chat/ChatInline.js +0 -18
  33. package/lib/chat/ChatPopupStandalone.d.ts +1 -1
  34. package/lib/chat/ChatSidebar.d.ts +14 -2
  35. package/lib/chat/ChatSidebar.js +1 -1
  36. package/lib/chat/ChatStandalone.d.ts +1 -1
  37. package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
  38. package/lib/chat/EphemeralSurfaceControl.js +55 -0
  39. package/lib/chat/base/ChatAvailability.d.ts +34 -0
  40. package/lib/chat/base/ChatAvailability.js +18 -0
  41. package/lib/chat/base/ChatBase.d.ts +2 -1
  42. package/lib/chat/base/ChatBase.js +657 -28
  43. package/lib/chat/display/EmptyState.d.ts +15 -1
  44. package/lib/chat/display/EmptyState.js +78 -12
  45. package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
  46. package/lib/chat/display/PoweredByTag.d.ts +1 -1
  47. package/lib/chat/display/groupSuggestions.d.ts +21 -0
  48. package/lib/chat/display/groupSuggestions.js +18 -0
  49. package/lib/chat/document/EphemeralDocument.d.ts +70 -6
  50. package/lib/chat/document/EphemeralDocument.js +154 -52
  51. package/lib/chat/header/ChatHeader.d.ts +1 -1
  52. package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
  53. package/lib/chat/header/ChatHeaderBase.js +67 -96
  54. package/lib/chat/index.d.ts +4 -1
  55. package/lib/chat/index.js +8 -1
  56. package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
  57. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
  58. package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
  59. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
  60. package/lib/chat/messages/ChatMessageList.d.ts +22 -1
  61. package/lib/chat/messages/ChatMessageList.js +370 -166
  62. package/lib/chat/messages/ChatMessages.d.ts +1 -1
  63. package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
  64. package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
  65. package/lib/chat/messages/TurnFooter.d.ts +42 -0
  66. package/lib/chat/messages/TurnFooter.js +75 -0
  67. package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
  68. package/lib/chat/messages/assistantMarkdown.js +56 -0
  69. package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
  70. package/lib/chat/notebook/EphemeralNotebook.js +194 -61
  71. package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
  72. package/lib/chat/parts/MessagePart.d.ts +1 -1
  73. package/lib/chat/parts/ReasoningPart.d.ts +8 -1
  74. package/lib/chat/parts/TextPart.d.ts +1 -1
  75. package/lib/chat/parts/ToolPart.d.ts +8 -1
  76. package/lib/chat/prompt/FloatingCard.d.ts +26 -0
  77. package/lib/chat/prompt/FloatingCard.js +80 -0
  78. package/lib/chat/prompt/InputPrompt.d.ts +206 -53
  79. package/lib/chat/prompt/InputPrompt.js +161 -80
  80. package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
  81. package/lib/chat/prompt/InputPromptBase.js +225 -0
  82. package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
  83. package/lib/chat/prompt/InputPromptLexical.js +227 -30
  84. package/lib/chat/prompt/InputPromptText.d.ts +10 -2
  85. package/lib/chat/prompt/InputPromptText.js +35 -3
  86. package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
  87. package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
  88. package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
  89. package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
  90. package/lib/chat/prompt/footer/index.d.ts +7 -0
  91. package/lib/chat/prompt/footer/index.js +11 -0
  92. package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
  93. package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
  94. package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
  95. package/lib/chat/prompt/header/InPromptHeader.js +14 -0
  96. package/lib/chat/prompt/header/index.d.ts +7 -0
  97. package/lib/chat/prompt/header/index.js +11 -0
  98. package/lib/chat/prompt/index.d.ts +8 -4
  99. package/lib/chat/prompt/index.js +15 -3
  100. package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
  101. package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
  102. package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
  103. package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
  104. package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
  105. package/lib/chat/prompt/menus/ModelSelector.js +27 -0
  106. package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
  107. package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
  108. package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
  109. package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
  110. package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
  111. package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
  112. package/lib/chat/prompt/menus/index.d.ts +15 -0
  113. package/lib/chat/prompt/menus/index.js +19 -0
  114. package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
  115. package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
  116. package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
  117. package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
  118. package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
  119. package/lib/chat/prompt/plugins/MentionChip.js +24 -0
  120. package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
  121. package/lib/chat/prompt/plugins/MentionNode.js +77 -0
  122. package/lib/chat/prompt/promptHistory.d.ts +52 -0
  123. package/lib/chat/prompt/promptHistory.js +123 -0
  124. package/lib/chat/prompt/stack.d.ts +81 -0
  125. package/lib/chat/prompt/stack.js +41 -0
  126. package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
  127. package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
  128. package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
  129. package/lib/chat/tools/A2AAgentDialog.js +265 -0
  130. package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
  131. package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
  132. package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
  133. package/lib/chat/tools/index.d.ts +1 -0
  134. package/lib/chat/tools/index.js +1 -0
  135. package/lib/chat/usage/ContextPie.d.ts +17 -0
  136. package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
  137. package/lib/chat/useViewportDrag.d.ts +11 -0
  138. package/lib/chat/useViewportDrag.js +61 -0
  139. package/lib/chat/viewModes.d.ts +51 -0
  140. package/lib/chat/viewModes.js +57 -0
  141. package/lib/client/AgentRuntimesClient.d.ts +10 -9
  142. package/lib/client/AgentRuntimesClient.js +1 -1
  143. package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
  144. package/lib/client/AgentsMixin.d.ts +12 -12
  145. package/lib/client/AgentsMixin.js +31 -31
  146. package/lib/client/IAgentRuntimesClient.d.ts +10 -10
  147. package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
  148. package/lib/client/SdkAgentRuntimesClient.js +10 -10
  149. package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
  150. package/lib/client/mixins/RuntimesMixin.js +54 -21
  151. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
  152. package/lib/components/agents/AgentSummary.d.ts +13 -0
  153. package/lib/components/agents/AgentSummary.js +21 -4
  154. package/lib/components/cards/NotificationEventCard.d.ts +1 -1
  155. package/lib/components/cards/OutputCard.d.ts +1 -1
  156. package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
  157. package/lib/components/cards/ToolApprovalCard.js +1 -0
  158. package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
  159. package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
  160. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
  161. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
  162. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
  163. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
  164. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
  165. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
  166. package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
  167. package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
  168. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  169. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  170. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  171. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  172. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  173. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
  174. package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
  175. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  176. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  177. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  178. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  179. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
  180. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
  181. package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
  182. package/lib/components/code-sandboxes/index.d.ts +1 -0
  183. package/lib/components/code-sandboxes/index.js +1 -0
  184. package/lib/components/context/SpaceSelect.d.ts +1 -1
  185. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  186. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  187. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  188. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  189. package/lib/components/progress/CreditsIndicator.js +0 -4
  190. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  191. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  192. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  193. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  194. package/lib/components/snippets/SnippetDialog.js +0 -4
  195. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  196. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  197. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  198. package/lib/context/ContextDistribution.d.ts +1 -1
  199. package/lib/context/ContextInspector.d.ts +2 -1
  200. package/lib/context/ContextPanel.d.ts +1 -1
  201. package/lib/context/ContextUsage.d.ts +1 -1
  202. package/lib/context/CostTracker.d.ts +1 -1
  203. package/lib/context/CostUsageChart.d.ts +1 -1
  204. package/lib/context/CostUsageChart.js +4 -4
  205. package/lib/context/MessageHistory.d.ts +3 -2
  206. package/lib/context/TokenUsageChart.d.ts +1 -1
  207. package/lib/context/TokenUsageChart.js +4 -4
  208. package/lib/examples/A2UiAgentExample.js +15 -6
  209. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  210. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  211. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  212. package/lib/examples/A2UiContactCardExample.js +23 -170
  213. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  214. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  215. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  216. package/lib/examples/A2UiRestaurantExample.js +24 -179
  217. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  218. package/lib/examples/A2UiViewerExample.js +24 -378
  219. package/lib/examples/AgUiAgenticExample.js +2 -4
  220. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  221. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  222. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  223. package/lib/examples/AgUiSharedStateExample.js +2 -4
  224. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  225. package/lib/examples/AgentA2AExample.d.ts +17 -0
  226. package/lib/examples/AgentA2AExample.js +56 -0
  227. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  228. package/lib/examples/AgentCheckpointsExample.js +72 -54
  229. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  230. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  231. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  232. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  233. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  234. package/lib/examples/AgentCodemodeExample.js +60 -125
  235. package/lib/examples/AgentCompactionExample.js +19 -135
  236. package/lib/examples/AgentEvalsExample.js +34 -66
  237. package/lib/examples/AgentGuardrailsExample.js +64 -112
  238. package/lib/examples/AgentHooksExample.d.ts +11 -0
  239. package/lib/examples/AgentHooksExample.js +30 -67
  240. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  241. package/lib/examples/AgentLoopExample.d.ts +4 -2
  242. package/lib/examples/AgentLoopExample.js +45 -93
  243. package/lib/examples/AgentMCPExample.js +30 -79
  244. package/lib/examples/AgentMemoryExample.js +21 -64
  245. package/lib/examples/AgentMonitoringExample.js +33 -94
  246. package/lib/examples/AgentNotificationsExample.js +56 -95
  247. package/lib/examples/AgentOtelExample.js +35 -88
  248. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  249. package/lib/examples/AgentOutputsExample.js +16 -137
  250. package/lib/examples/AgentParametersExample.js +7 -17
  251. package/lib/examples/AgentSkillsExample.js +40 -154
  252. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  253. package/lib/examples/AgentSubagentsExample.js +80 -191
  254. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  255. package/lib/examples/AgentTriggersExample.js +43 -59
  256. package/lib/examples/AgentspecsExample.js +4 -4
  257. package/lib/examples/CellExample.d.ts +1 -1
  258. package/lib/examples/ChatExample.d.ts +12 -5
  259. package/lib/examples/ChatExample.js +38 -13
  260. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  261. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  262. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  263. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  264. package/lib/examples/DecksAgent.d.ts +21 -0
  265. package/lib/examples/DecksAgent.js +23 -0
  266. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  267. package/lib/examples/DocumentPageAgent.js +15 -0
  268. package/lib/examples/Lexical2Example.d.ts +2 -2
  269. package/lib/examples/Lexical2Example.js +17 -38
  270. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  271. package/lib/examples/LexicalAgentExample.js +29 -102
  272. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  273. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  274. package/lib/examples/LoopShellExample.d.ts +38 -0
  275. package/lib/examples/LoopShellExample.js +68 -0
  276. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  277. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  278. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  279. package/lib/examples/LoopWorkspaceExample.js +151 -0
  280. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  281. package/lib/examples/NotebookAgentExample.js +36 -86
  282. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  283. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  284. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  285. package/lib/examples/NotebookCollaborationExample.js +108 -20
  286. package/lib/examples/NotebookExample.d.ts +1 -1
  287. package/lib/examples/NotebookExample.js +20 -10
  288. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  289. package/lib/examples/NotebookPageAgent.js +17 -0
  290. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  291. package/lib/examples/components/ExampleWrapper.js +36 -28
  292. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  293. package/lib/examples/components/LexicalEditor.js +4 -24
  294. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  295. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  296. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  297. package/lib/examples/example-selector.js +26 -6
  298. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  299. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  300. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  301. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  302. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  303. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  304. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  305. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  306. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  307. package/lib/examples/index.d.ts +4 -0
  308. package/lib/examples/index.js +6 -0
  309. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  310. package/lib/examples/lexical/editorConfig.js +26 -48
  311. package/lib/examples/lexical/lexical-theme.css +65 -47
  312. package/lib/examples/main.js +450 -322
  313. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  314. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  315. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  316. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  317. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  318. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  319. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  320. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  321. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  322. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  323. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  324. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  325. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  326. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  327. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  328. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  329. package/lib/examples/utils/exampleSurfaces.js +38 -0
  330. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  331. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  332. package/lib/examples/utils/localUrl.d.ts +2 -0
  333. package/lib/examples/utils/localUrl.js +49 -0
  334. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  335. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  336. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  337. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  338. package/lib/examples/utils/themedProvider.d.ts +7 -0
  339. package/lib/examples/utils/themedProvider.js +57 -4
  340. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  341. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  342. package/lib/examples/utils/waitForAgent.js +24 -0
  343. package/lib/examples2/CellExample.d.ts +1 -1
  344. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  345. package/lib/examples2/NotebookExample.d.ts +1 -1
  346. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  347. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  348. package/lib/examples2/main.js +24 -4
  349. package/lib/extensions/A2UIExtension.d.ts +1 -1
  350. package/lib/hooks/index.d.ts +8 -5
  351. package/lib/hooks/index.js +20 -5
  352. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  353. package/lib/hooks/useAgentRuntimes.js +214 -90
  354. package/lib/hooks/useAgentsCatalog.js +32 -4
  355. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  356. package/lib/hooks/useBrowserAgent.js +75 -0
  357. package/lib/hooks/useBrowserInference.d.ts +27 -0
  358. package/lib/hooks/useBrowserInference.js +67 -0
  359. package/lib/hooks/useCheckpoints.d.ts +8 -17
  360. package/lib/hooks/useCheckpoints.js +25 -59
  361. package/lib/hooks/useConfig.d.ts +1 -1
  362. package/lib/hooks/useConfig.js +5 -1
  363. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  364. package/lib/hooks/useContextSnapshot.js +14 -10
  365. package/lib/hooks/useNotifications.d.ts +11 -11
  366. package/lib/hooks/useNotifications.js +1 -1
  367. package/lib/hooks/useProjects.d.ts +7 -19
  368. package/lib/hooks/useProjects.js +5 -5
  369. package/lib/hooks/useSkills.d.ts +0 -1
  370. package/lib/hooks/useSkills.js +6 -2
  371. package/lib/hooks/useToolApprovals.d.ts +8 -8
  372. package/lib/hooks/useToolApprovals.js +3 -3
  373. package/lib/identity/AgentIdentity.d.ts +9 -2
  374. package/lib/index.d.ts +1 -0
  375. package/lib/index.js +4 -0
  376. package/lib/jupyter/index.d.ts +2 -1
  377. package/lib/jupyter/index.js +2 -1
  378. package/lib/jupyter/serverExecution.d.ts +78 -0
  379. package/lib/jupyter/serverExecution.js +258 -0
  380. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  381. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  382. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  383. package/lib/lexical/ChatInlinePlugin.js +0 -36
  384. package/lib/loop/core/focusRequests.d.ts +10 -0
  385. package/lib/loop/core/focusRequests.js +46 -0
  386. package/lib/loop/core/index.d.ts +894 -0
  387. package/lib/loop/core/index.js +264 -0
  388. package/lib/loop/core/promptStore.d.ts +44 -0
  389. package/lib/loop/core/promptStore.js +63 -0
  390. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  391. package/lib/loop/core/surfaceRequests.js +29 -0
  392. package/lib/loop/core/toolbar.d.ts +28 -0
  393. package/lib/loop/core/toolbar.js +59 -0
  394. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  395. package/lib/loop/embed/LoopEmbed.js +118 -0
  396. package/lib/loop/extensions.d.ts +10 -0
  397. package/lib/loop/extensions.js +49 -0
  398. package/lib/loop/index.d.ts +68 -0
  399. package/lib/loop/index.js +87 -0
  400. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  401. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  402. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  403. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  404. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  405. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  406. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  407. package/lib/loop/plugins/a2ui/index.js +50 -0
  408. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  409. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  410. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  411. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  412. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  413. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  414. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  415. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  416. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  417. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  418. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  419. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  420. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  421. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  422. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  423. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  424. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  425. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  426. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  427. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  428. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  429. package/lib/loop/plugins/agent-evals/index.js +25 -0
  430. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  431. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  432. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  433. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  434. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  435. package/lib/loop/plugins/agent-inference/index.js +29 -0
  436. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  437. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  438. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  439. package/lib/loop/plugins/agent-memory/index.js +25 -0
  440. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  441. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  442. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  443. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  444. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  445. package/lib/loop/plugins/agent-otel/index.js +25 -0
  446. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  447. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  448. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  449. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  450. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  451. package/lib/loop/plugins/agent-skills/index.js +25 -0
  452. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  453. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  454. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  455. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  456. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  457. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  458. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  459. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  460. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  461. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  462. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  463. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  464. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  465. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  466. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  467. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  468. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  469. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  470. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  471. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  472. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  473. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  474. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  475. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  476. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  477. package/lib/loop/plugins/agents/browserService.js +233 -0
  478. package/lib/loop/plugins/agents/index.d.ts +13 -0
  479. package/lib/loop/plugins/agents/index.js +17 -0
  480. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  481. package/lib/loop/plugins/agents/plugin.js +201 -0
  482. package/lib/loop/plugins/agents/service.d.ts +99 -0
  483. package/lib/loop/plugins/agents/service.js +167 -0
  484. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  485. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  486. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  487. package/lib/loop/plugins/agents/switchable.js +405 -0
  488. package/lib/loop/plugins/agents/team.d.ts +87 -0
  489. package/lib/loop/plugins/agents/team.js +143 -0
  490. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  491. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  492. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  493. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  494. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  495. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  496. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  497. package/lib/loop/plugins/agentspecs/index.js +63 -0
  498. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  499. package/lib/loop/plugins/chat/ChatView.js +1670 -0
  500. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  501. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  502. package/lib/loop/plugins/chat/index.d.ts +111 -0
  503. package/lib/loop/plugins/chat/index.js +143 -0
  504. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  505. package/lib/loop/plugins/chat/turnState.js +90 -0
  506. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  507. package/lib/loop/plugins/chat-extras/index.js +51 -0
  508. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  509. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  510. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  511. package/lib/loop/plugins/chat-header/index.js +21 -0
  512. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  513. package/lib/loop/plugins/chat-view/index.js +29 -0
  514. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  515. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  516. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  517. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  518. package/lib/loop/plugins/commands/index.d.ts +20 -0
  519. package/lib/loop/plugins/commands/index.js +148 -0
  520. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  521. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  522. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  523. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  524. package/lib/loop/plugins/decks/index.d.ts +19 -0
  525. package/lib/loop/plugins/decks/index.js +133 -0
  526. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  527. package/lib/loop/plugins/decks/surface.js +11 -0
  528. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  529. package/lib/loop/plugins/document/DocumentView.js +68 -0
  530. package/lib/loop/plugins/document/index.d.ts +3 -0
  531. package/lib/loop/plugins/document/index.js +86 -0
  532. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  533. package/lib/loop/plugins/document/openingDocument.js +122 -0
  534. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  535. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  536. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  537. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  538. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  539. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  540. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  541. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  542. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  543. package/lib/loop/plugins/document-view/index.js +28 -0
  544. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  545. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  546. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  547. package/lib/loop/plugins/graph/GraphView.js +6 -0
  548. package/lib/loop/plugins/graph/index.d.ts +5 -0
  549. package/lib/loop/plugins/graph/index.js +80 -0
  550. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  551. package/lib/loop/plugins/graph/viewType.js +14 -0
  552. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  553. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  554. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  555. package/lib/loop/plugins/input-prompt/index.js +26 -0
  556. package/lib/loop/plugins/models/index.d.ts +3 -0
  557. package/lib/loop/plugins/models/index.js +49 -0
  558. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  559. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  560. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  561. package/lib/loop/plugins/notebook/index.js +91 -0
  562. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  563. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  564. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  565. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  566. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  567. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  568. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  569. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  570. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  571. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  572. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  573. package/lib/loop/plugins/notebook-view/index.js +30 -0
  574. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  575. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  576. package/lib/loop/plugins/page-layout/index.d.ts +35 -0
  577. package/lib/loop/plugins/page-layout/index.js +80 -0
  578. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  579. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  580. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  581. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  582. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  583. package/lib/loop/plugins/prompt/index.js +73 -0
  584. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  585. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  586. package/lib/loop/plugins/shell/index.d.ts +47 -0
  587. package/lib/loop/plugins/shell/index.js +142 -0
  588. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  589. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  590. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  591. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  592. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  593. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  594. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  595. package/lib/loop/plugins/view-switch/index.js +68 -0
  596. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  597. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  598. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  599. package/lib/loop/plugins/window-frame/index.js +79 -0
  600. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  601. package/lib/loop/plugins/window-frame/slots.js +30 -0
  602. package/lib/loop/presets.d.ts +167 -0
  603. package/lib/loop/presets.js +139 -0
  604. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  605. package/lib/loop/shell/LoopWorkspace.js +231 -0
  606. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  607. package/lib/loop/shell/PluginToggles.js +41 -0
  608. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  609. package/lib/loop/shell/ViewSwitcher.js +43 -0
  610. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  611. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  612. package/lib/loop/shell/index.d.ts +10 -0
  613. package/lib/loop/shell/index.js +14 -0
  614. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  615. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  616. package/lib/loop-example-main.d.ts +1 -0
  617. package/lib/loop-example-main.js +42 -0
  618. package/lib/loop-main.d.ts +1 -0
  619. package/lib/loop-main.js +138 -0
  620. package/lib/mcp/McpServerManager.d.ts +1 -1
  621. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  622. package/lib/models/CodeSandboxVariant.d.ts +13 -5
  623. package/lib/models/CodeSandboxVariant.js +17 -5
  624. package/lib/models/Content.d.ts +26 -0
  625. package/lib/models/Environment.d.ts +561 -5
  626. package/lib/models/Environment.js +12 -1
  627. package/lib/models/EnvironmentDTO.d.ts +24 -6
  628. package/lib/models/EnvironmentDTO.js +13 -2
  629. package/lib/models/Exercise.d.ts +0 -2
  630. package/lib/models/Library.d.ts +0 -2
  631. package/lib/models/Notebook.d.ts +0 -2
  632. package/lib/models/ProjectDTO.d.ts +2 -2
  633. package/lib/models/ProjectDTO.js +4 -4
  634. package/lib/models/Runtime.d.ts +11 -11
  635. package/lib/models/RuntimeDTO.d.ts +16 -7
  636. package/lib/models/RuntimeDTO.js +9 -9
  637. package/lib/models/Space.d.ts +10 -0
  638. package/lib/models/Space.js +1 -1
  639. package/lib/models/SpaceDTO.d.ts +1 -1
  640. package/lib/models/SpaceItem.d.ts +1 -2
  641. package/lib/models/environments.generated.d.ts +113 -0
  642. package/lib/models/environments.generated.js +13 -0
  643. package/lib/models/index.d.ts +0 -1
  644. package/lib/models/index.js +0 -1
  645. package/lib/protocols/A2AAdapter.d.ts +39 -6
  646. package/lib/protocols/A2AAdapter.js +180 -11
  647. package/lib/protocols/ACPAdapter.js +40 -37
  648. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  649. package/lib/protocols/AGUIAdapter.js +34 -9
  650. package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
  651. package/lib/protocols/BrowserAgentAdapter.js +310 -0
  652. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  653. package/lib/protocols/VercelAIAdapter.js +27 -7
  654. package/lib/protocols/index.d.ts +1 -0
  655. package/lib/protocols/index.js +1 -0
  656. package/lib/runtimes/actions.d.ts +3 -3
  657. package/lib/runtimes/actions.js +27 -14
  658. package/lib/runtimes/apis.d.ts +13 -4
  659. package/lib/runtimes/browser/agent.d.ts +54 -0
  660. package/lib/runtimes/browser/agent.js +63 -0
  661. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  662. package/lib/runtimes/browser/anonymousToken.js +300 -0
  663. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  664. package/lib/runtimes/browser/frontendTools.js +152 -0
  665. package/lib/runtimes/browser/index.d.ts +11 -0
  666. package/lib/runtimes/browser/index.js +20 -0
  667. package/lib/runtimes/browser/model.d.ts +52 -0
  668. package/lib/runtimes/browser/model.js +110 -0
  669. package/lib/runtimes/browser/protocol.d.ts +54 -0
  670. package/lib/runtimes/browser/protocol.js +35 -0
  671. package/lib/runtimes/browser/subagents.d.ts +131 -0
  672. package/lib/runtimes/browser/subagents.js +241 -0
  673. package/lib/runtimes/index.d.ts +3 -0
  674. package/lib/runtimes/index.js +3 -0
  675. package/lib/runtimes/lifecycle.d.ts +76 -0
  676. package/lib/runtimes/lifecycle.js +99 -0
  677. package/lib/runtimes/variants.d.ts +172 -0
  678. package/lib/runtimes/variants.js +187 -0
  679. package/lib/services/reconnectToRuntime.d.ts +2 -2
  680. package/lib/services/reconnectToRuntime.js +3 -3
  681. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  682. package/lib/services/sandboxServiceManagers.js +11 -11
  683. package/lib/specs/agents/agents.d.ts +128 -112
  684. package/lib/specs/agents/agents.js +8024 -5052
  685. package/lib/specs/evals.js +9 -0
  686. package/lib/specs/frontendTools.d.ts +3 -0
  687. package/lib/specs/frontendTools.js +46 -3
  688. package/lib/specs/mcpServers.d.ts +1 -0
  689. package/lib/specs/mcpServers.js +25 -2
  690. package/lib/specs/models.d.ts +18 -0
  691. package/lib/specs/models.js +154 -0
  692. package/lib/specs/outputs.d.ts +2 -0
  693. package/lib/specs/outputs.js +22 -0
  694. package/lib/specs/personas.js +1 -1
  695. package/lib/specs/teams/teams.d.ts +2 -0
  696. package/lib/specs/teams/teams.js +628 -111
  697. package/lib/state/index.d.ts +1 -1
  698. package/lib/state/index.js +1 -1
  699. package/lib/state/substates/RuntimesState.d.ts +5 -5
  700. package/lib/state/substates/RuntimesState.js +14 -14
  701. package/lib/state/substates/index.d.ts +1 -1
  702. package/lib/state/substates/index.js +1 -1
  703. package/lib/stores/agentRuntimeStore.d.ts +43 -1
  704. package/lib/stores/agentRuntimeStore.js +100 -11
  705. package/lib/stores/index.d.ts +1 -1
  706. package/lib/stores/index.js +1 -1
  707. package/lib/stories/Button.d.ts +1 -1
  708. package/lib/stories/Button.stories.d.ts +1 -1
  709. package/lib/stories/Header.d.ts +1 -1
  710. package/lib/stories/Header.stories.d.ts +1 -1
  711. package/lib/test-setup.js +66 -0
  712. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
  713. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
  714. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
  715. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
  716. package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
  717. package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
  718. package/lib/tools/adapters/commands/index.d.ts +1 -0
  719. package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
  720. package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
  721. package/lib/tools/index.d.ts +1 -0
  722. package/lib/tools/index.js +1 -0
  723. package/lib/types/a2a.d.ts +15 -1
  724. package/lib/types/agents-lifecycle.d.ts +11 -6
  725. package/lib/types/agents.d.ts +31 -6
  726. package/lib/types/agentspecs.d.ts +120 -4
  727. package/lib/types/chat.d.ts +251 -3
  728. package/lib/types/checkpoints.d.ts +20 -0
  729. package/lib/types/config.d.ts +13 -1
  730. package/lib/types/connection.d.ts +1 -1
  731. package/lib/types/evals.d.ts +2 -0
  732. package/lib/types/messages.d.ts +60 -0
  733. package/lib/types/models.d.ts +26 -0
  734. package/lib/types/notifications.d.ts +15 -6
  735. package/lib/types/protocol.d.ts +7 -2
  736. package/lib/types/stream.d.ts +48 -3
  737. package/lib/types/stream.js +5 -0
  738. package/lib/types/teams.d.ts +102 -4
  739. package/lib/types/tool-approvals.d.ts +1 -1
  740. package/lib/types/tools.d.ts +8 -2
  741. package/lib/utils/utils.js +7 -1
  742. package/package.json +376 -361
  743. package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
  744. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  745. package/scripts/codegen/compose.py +208 -0
  746. package/scripts/codegen/generate_agents.py +202 -31
  747. package/scripts/codegen/generate_evals.py +2 -0
  748. package/scripts/codegen/generate_frontend_tools.py +35 -6
  749. package/scripts/codegen/generate_models.py +40 -15
  750. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  751. package/scripts/codegen/generate_teams.py +178 -4
  752. package/scripts/codegen/generate_tools.py +6 -4
  753. package/scripts/gen_workers.py +278 -110
  754. package/scripts/generate-environments-types.py +404 -0
  755. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  756. package/lib/chat/prompt/InputFooter.js +0 -194
  757. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  758. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  759. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  760. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  761. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  762. package/lib/hooks/useRuntimes.d.ts +0 -5
  763. package/lib/hooks/useRuntimes.js +0 -34
  764. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  765. package/lib/jupyter/kernelsHandler.js +0 -39
  766. package/lib/models/Dataset.d.ts +0 -16
  767. package/lib/utils/Cells.d.ts +0 -2
  768. package/lib/utils/Cells.js +0 -28
@@ -0,0 +1,41 @@
1
+ /** Whether a tool changes nothing on an editor. */
2
+ export declare function isChatViewTool(name: string): boolean;
3
+ /** The subset of `tools` an agent is handed while no editor is on screen. */
4
+ export declare function toolsForChatView<T extends {
5
+ name: string;
6
+ }>(tools: T[],
7
+ /** Names a contribution vouched for (`chatView: true`), kept regardless. */
8
+ keep?: ReadonlySet<string>): T[];
9
+ /**
10
+ * The order tool contributions are merged in, by their contribution id.
11
+ *
12
+ * The notebook and the document used to ship an `executeCode` under one
13
+ * reference name, and which contribution arrived first decided which won —
14
+ * a race, and in the chat view the document's would answer "No active kernel
15
+ * session" to a request the notebook's could serve. The names are specific
16
+ * now (`executeCodeInNotebook`, `executeCodeInDocument`), so nothing is
17
+ * shadowed; the order is kept deterministic all the same, because "first
18
+ * wins" should never again depend on which lazy import landed first.
19
+ *
20
+ * The editor on screen goes first; with none on screen, the notebook does.
21
+ * Everything else keeps its relative order.
22
+ */
23
+ export declare function orderToolContributions<T extends {
24
+ value: {
25
+ id: string;
26
+ };
27
+ }>(entries: readonly T[], activeSurfaceId: string | undefined): T[];
28
+ /**
29
+ * Whether a contribution's tools belong to a surface that is not the one on
30
+ * screen.
31
+ *
32
+ * A contribution named `${surfaceId}-tools`, by the notebook and document
33
+ * plugins' own convention, belongs to that one editor. With no editor active
34
+ * (`activeSurfaceId` undefined — the chat view), nothing is excluded here:
35
+ * every surface's tools are still candidates, narrowed instead by
36
+ * `toolsForChatView`. A contribution whose id doesn't follow the
37
+ * `-tools` convention, or whose surface isn't one of `surfaceIds` at all
38
+ * (a host's own tools, say), is never excluded — this only ever withholds
39
+ * another *editor's* tools, never a tool that was never tied to one.
40
+ */
41
+ export declare function isInactiveSurfaceContribution(id: string, surfaceIds: ReadonlySet<string>, activeSurfaceId: string | undefined): boolean;
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The tools an agent keeps, depending on what is on screen.
7
+ *
8
+ * With an editor open, the agent has that editor's own tools — not every
9
+ * editor's: the notebook and the document plugins mount together whenever a
10
+ * workspace offers a choice of either (an `editorSelector`, or a fixed
11
+ * `defaultEditor` with the other still reachable), and their contributions
12
+ * used to reach the model together regardless of which one was actually on
13
+ * screen — asking about a failure while the document was open ran the
14
+ * notebook's cell tools instead of the document's block ones, because
15
+ * nothing excluded the surface that was not showing (see
16
+ * `isInactiveSurfaceContribution`).
17
+ *
18
+ * In the chat view — no editor on screen at all — the notebook and the
19
+ * document are still mounted, out of sight, so every tool would still
20
+ * *work*, but a cell inserted into a notebook nobody is looking at is a
21
+ * change the person did not see happen. So there the agent keeps only the
22
+ * ones that leave the editors as they are — `executeCodeInNotebook` and
23
+ * `executeCodeInDocument`, whose outputs stream onto the conversation, and
24
+ * the read and list tools, so it can still answer from what is there.
25
+ *
26
+ * Names are matched by their reference form and their raw `datalayer_` form
27
+ * alike, since the adapter registers whichever the definition carries.
28
+ *
29
+ * @module loop/plugins/chat/chatViewTools
30
+ */
31
+ /** The reference name, with the adapter's prefix and the editor suffix off. */
32
+ function bareName(name) {
33
+ return name.replace(/^datalayer_/, '').replace(/_lexical$/, '');
34
+ }
35
+ /** Whether a tool changes nothing on an editor. */
36
+ export function isChatViewTool(name) {
37
+ const bare = bareName(name);
38
+ return (/^executeCodeIn(Notebook|Document)$/.test(bare) ||
39
+ /^(read|list)[A-Z]/.test(bare));
40
+ }
41
+ /** The subset of `tools` an agent is handed while no editor is on screen. */
42
+ export function toolsForChatView(tools,
43
+ /** Names a contribution vouched for (`chatView: true`), kept regardless. */
44
+ keep) {
45
+ return tools.filter(tool => keep?.has(tool.name) || isChatViewTool(tool.name));
46
+ }
47
+ /**
48
+ * The order tool contributions are merged in, by their contribution id.
49
+ *
50
+ * The notebook and the document used to ship an `executeCode` under one
51
+ * reference name, and which contribution arrived first decided which won —
52
+ * a race, and in the chat view the document's would answer "No active kernel
53
+ * session" to a request the notebook's could serve. The names are specific
54
+ * now (`executeCodeInNotebook`, `executeCodeInDocument`), so nothing is
55
+ * shadowed; the order is kept deterministic all the same, because "first
56
+ * wins" should never again depend on which lazy import landed first.
57
+ *
58
+ * The editor on screen goes first; with none on screen, the notebook does.
59
+ * Everything else keeps its relative order.
60
+ */
61
+ export function orderToolContributions(entries, activeSurfaceId) {
62
+ const rank = (entry) => {
63
+ if (activeSurfaceId && entry.value.id === `${activeSurfaceId}-tools`) {
64
+ return 0;
65
+ }
66
+ return entry.value.id === 'notebook-tools' ? 1 : 2;
67
+ };
68
+ return entries
69
+ .map((entry, index) => ({ entry, index, rank: rank(entry) }))
70
+ .sort((a, b) => a.rank - b.rank || a.index - b.index)
71
+ .map(item => item.entry);
72
+ }
73
+ /**
74
+ * Whether a contribution's tools belong to a surface that is not the one on
75
+ * screen.
76
+ *
77
+ * A contribution named `${surfaceId}-tools`, by the notebook and document
78
+ * plugins' own convention, belongs to that one editor. With no editor active
79
+ * (`activeSurfaceId` undefined — the chat view), nothing is excluded here:
80
+ * every surface's tools are still candidates, narrowed instead by
81
+ * `toolsForChatView`. A contribution whose id doesn't follow the
82
+ * `-tools` convention, or whose surface isn't one of `surfaceIds` at all
83
+ * (a host's own tools, say), is never excluded — this only ever withholds
84
+ * another *editor's* tools, never a tool that was never tied to one.
85
+ */
86
+ export function isInactiveSurfaceContribution(id, surfaceIds, activeSurfaceId) {
87
+ if (!activeSurfaceId || !id.endsWith('-tools')) {
88
+ return false;
89
+ }
90
+ const surfaceId = id.slice(0, -'-tools'.length);
91
+ return surfaceIds.has(surfaceId) && surfaceId !== activeSurfaceId;
92
+ }
@@ -0,0 +1,111 @@
1
+ /** What a host may set on the chat. */
2
+ export type ChatPluginConfig = {
3
+ /**
4
+ * What the empty prompt says.
5
+ *
6
+ * Configured on the plugin rather than passed to the workspace: the prompt
7
+ * belongs to the chat, and a shell that has no chat plugin has no prompt to
8
+ * put a placeholder in. A host that wants different words says so where the
9
+ * words are.
10
+ */
11
+ placeholder: string;
12
+ /**
13
+ * Which editor is open beside the chat when the workspace opens.
14
+ *
15
+ * `'none'` leaves the chat full width. Any other value is the `surfaceId` of
16
+ * a contributed chat surface — `'notebook'`, `'document'`, or one a plugin
17
+ * this host mounts brings of its own; the field is a plain string rather
18
+ * than a union so a new surface does not have to change this type to be
19
+ * choosable.
20
+ *
21
+ * A surface that is not contributed, or cannot open yet, is simply not
22
+ * opened: the default is a preference, not a demand, and a host that asks
23
+ * for the notebook in a workspace with no notebook plugin gets a working
24
+ * chat rather than an error.
25
+ */
26
+ defaultSurface: string;
27
+ /**
28
+ * Whether a person may change which editor sits beside the chat.
29
+ *
30
+ * True by default. False leaves `defaultSurface` open and removes the
31
+ * control, for a host that has already decided what the workspace is for —
32
+ * an embed showing one notebook does not want a strip inviting the reader
33
+ * to swap it for a document or for nothing at all.
34
+ */
35
+ showSurfaceSelector: boolean;
36
+ /**
37
+ * Whether the chat draws its own title bar.
38
+ *
39
+ * False by default — the header carries the agent's name and the reason a
40
+ * disabled chat is disabled, and both are worth having.
41
+ *
42
+ * True for a host that has already said what this is. On a landing page the
43
+ * workspace sits under a heading that names it, and a second title bar
44
+ * directly beneath repeats the point in a smaller font.
45
+ */
46
+ hideHeader: boolean;
47
+ /**
48
+ * Whether the chat renders a prompt at all.
49
+ *
50
+ * False by default: the prompt is most of what a chat is. True is for a
51
+ * workspace where something else owns the typing — the floating prompt
52
+ * plugin renders its own input and submits through the same
53
+ * `workspace.submit`, and a second box under the transcript would be two
54
+ * composers for one conversation.
55
+ */
56
+ hidePrompt: boolean;
57
+ /**
58
+ * Where the prompt sits.
59
+ *
60
+ * `bottom` (the default) spans the workspace: the notebook and the
61
+ * conversation share one composer, which is right when what the agent is
62
+ * doing is the document beside it.
63
+ *
64
+ * `bottom-chat` keeps it inside the chat column, under the transcript, where
65
+ * every other example in this package puts it. The prompt then reads as part
66
+ * of the conversation rather than as a bar the whole page rests on — better
67
+ * for a host that embeds the workspace as a chat that happens to have a
68
+ * notebook attached.
69
+ *
70
+ * `floating` takes it out of the layout entirely: the same composer — the
71
+ * lexical editor, the tools/skills/model footer, all of it — in a draggable
72
+ * card over the workspace, bottom-centre until somebody moves it. For a
73
+ * shell that is mostly canvas. `loopPlugins({ floatingPrompt: true })` asks
74
+ * for it together with the `/prompt` command that focuses it.
75
+ *
76
+ * `top` puts it above everything — a horizontal bar across the workspace,
77
+ * with the openers as a row of chips directly under it. For a host whose
78
+ * editor is the point: the notebook takes the rest of the height, the
79
+ * prompt reads as its command line rather than as a chat's tail, and a
80
+ * reader who has never seen the product knows what to type first.
81
+ */
82
+ promptPlacement: 'top' | 'bottom' | 'bottom-chat' | 'floating';
83
+ /**
84
+ * Whether the composer takes the caret when the workspace opens.
85
+ *
86
+ * True is right nearly everywhere: the workspace exists to be typed into,
87
+ * and a person who opened it should not have to click first. It is wrong
88
+ * where the loop is one section of a longer page — focusing an input on
89
+ * mount scrolls the browser to it, so a visitor who came for the top of the
90
+ * page is thrown into the middle of it, and a screen reader is moved with
91
+ * them. Such a host passes `false` and lets the reader arrive at the prompt.
92
+ */
93
+ autoFocusPrompt: boolean;
94
+ /**
95
+ * Pixels to reserve at the top of the workspace when it goes full screen —
96
+ * room for a host's own fixed header, drawn outside the workspace
97
+ * entirely.
98
+ *
99
+ * Setting this also keeps full screen on the CSS-overlay door for good,
100
+ * never the browser's real Fullscreen API: the API promotes the workspace
101
+ * above *everything* on the page, that header included, and there is no
102
+ * partial form of it that leaves a sibling element on screen — see
103
+ * `useWorkspaceFullScreen`'s own `forceOverlay` for why. 0 (the default)
104
+ * leaves full screen trying the API first, the way most hosts want it, and
105
+ * filling the entire viewport when it falls back to the overlay.
106
+ */
107
+ fullScreenTopOffset: number | string;
108
+ };
109
+ export declare const CHAT_PLUGIN_NAME = "@datalayer/loop-plugin-chat";
110
+ export declare const ChatPlugin: import("@datalayer/reactor").ReactorPlugin<ChatPluginConfig, unknown, unknown>;
111
+ export default ChatPlugin;
@@ -0,0 +1,143 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The chat plugin: the first view, and the proof that chat is not special.
7
+ *
8
+ * @module loop/plugins/chat
9
+ */
10
+ import { CommentDiscussionIcon, FoldIcon, SparkleFillIcon, SyncIcon, } from '@primer/octicons-react';
11
+ import { contribution, definePlugin } from '@datalayer/reactor';
12
+ import { LoopAgentGate, LoopChatComposer, LoopChatExtras, LoopChatHeader, LoopChatSuggestion, LoopChatTurn, LoopCommand, LoopFrontendTool, LoopDocumentToolbarItem, LoopNotebookToolbarItem, LoopViewType, } from '../../core';
13
+ import { createTurnFeed, feedWriters } from './turnState';
14
+ /**
15
+ * An editor toolbar button that asks an agent to do something.
16
+ *
17
+ * These live here, on the chat, rather than on the editors — which is where
18
+ * they were. A button that submits a prompt only works because there is a
19
+ * conversation to submit it to, so the notebook was reaching into the chat to
20
+ * draw it. Contributing them from this side inverts that: the editors offer a
21
+ * toolbar and know nothing about agents, and switching the chat off takes its
22
+ * buttons off both toolbars with it.
23
+ *
24
+ * The specialists are reached the way a person would reach them — by asking.
25
+ * A button that called a private API would be a second way to invoke an agent,
26
+ * free to drift from the one people type.
27
+ */
28
+ function agentAction(context, item) {
29
+ const { prompt, ...rest } = item;
30
+ return {
31
+ ...rest,
32
+ type: 'button',
33
+ group: 'agent',
34
+ onClick: () => context.workspace.prompts.submit(prompt),
35
+ };
36
+ }
37
+ export const CHAT_PLUGIN_NAME = '@datalayer/loop-plugin-chat';
38
+ export const ChatPlugin = definePlugin({
39
+ name: CHAT_PLUGIN_NAME,
40
+ config: {
41
+ placeholder: 'Ask anything, type / for commands or @ for mention',
42
+ // The notebook: it is what most of these agents work on, and a workspace
43
+ // that opens on an empty chat hides the half of itself that does the work.
44
+ defaultSurface: 'notebook',
45
+ showSurfaceSelector: true,
46
+ hideHeader: false,
47
+ hidePrompt: false,
48
+ promptPlacement: 'bottom',
49
+ autoFocusPrompt: true,
50
+ fullScreenTopOffset: 0,
51
+ },
52
+ displayName: 'Chat',
53
+ description: 'The conversation, the prompt, and the point editors plug into.',
54
+ octicon: 'comment-discussion',
55
+ emoji: '\u{1F4AC}',
56
+ // Declared, not merely used: the registry knows who contributed to a point,
57
+ // it cannot know who opened it, and a point nobody has filled yet is exactly
58
+ // when knowing it exists is most useful. `LoopFrontendTool` is the chat's
59
+ // own opening: the tools its agent is handed, filled by the notebook, the
60
+ // document, and whoever else owns a capability. The composer and the title
61
+ // bar are openings too: the chat assembles their props, and the
62
+ // input-prompt and chat-header plugins render them.
63
+ contributionPoints: [
64
+ LoopAgentGate,
65
+ LoopFrontendTool,
66
+ LoopChatComposer,
67
+ LoopChatHeader,
68
+ LoopChatSuggestion,
69
+ LoopChatExtras,
70
+ LoopChatTurn,
71
+ ],
72
+ /*
73
+ * The current turn, contributed at build so it is one per reactor.
74
+ *
75
+ * The chat both opens `LoopChatTurn` and fills it: the point is how anyone
76
+ * else reads the turn (the page layout's panel under the prompt), and the
77
+ * chat view is what keeps it current. The feed's writers travel with the
78
+ * contribution so the view can find its own reactor's feed without a
79
+ * module-level singleton two workspaces on one page would share.
80
+ */
81
+ build: ctx => {
82
+ const feed = createTurnFeed();
83
+ ctx.contribute(LoopChatTurn, { id: 'chat-turn', turn: feed.turn, ...feedWriters(feed) }, { id: 'chat-turn' });
84
+ return {};
85
+ },
86
+ contributes: [
87
+ contribution(LoopViewType, {
88
+ viewType: 'chat',
89
+ title: 'Chat',
90
+ icon: CommentDiscussionIcon,
91
+ order: 0,
92
+ load: () => import('./ChatView'),
93
+ }, { id: 'chat', order: 0 }),
94
+ contribution(LoopCommand, {
95
+ name: 'chat',
96
+ description: 'Show the conversation',
97
+ group: 'Session',
98
+ keybinding: 'Mod+Alt+K',
99
+ run: async ({ workspace }) => {
100
+ workspace.setActiveViewType('chat');
101
+ },
102
+ }, { id: 'chat' }),
103
+ // What the chat puts on the notebook's toolbar. The bar belongs to the
104
+ // toolbar plugin, which opens this point; the notebook knows about neither.
105
+ // With the toolbar plugin switched off there is no bar, so these have
106
+ // nowhere to sit and are not drawn — which is the honest outcome.
107
+ contribution(LoopNotebookToolbarItem, {
108
+ items: (context) => [
109
+ agentAction(context, {
110
+ key: 'loop-compact',
111
+ ariaLabel: 'Compact this notebook',
112
+ title: 'Ask @NotebookCompactor to shorten it without changing results',
113
+ icon: FoldIcon,
114
+ order: 200,
115
+ prompt: '@NotebookCompactor compact this notebook without changing what it computes.',
116
+ }),
117
+ agentAction(context, {
118
+ key: 'loop-reproduce',
119
+ ariaLabel: 'Check reproducibility',
120
+ title: 'Ask @NotebookReproducer to run it on a fresh sandbox',
121
+ icon: SyncIcon,
122
+ order: 201,
123
+ prompt: '@NotebookReproducer run this notebook top to bottom on a fresh sandbox and report what does not reproduce.',
124
+ }),
125
+ ],
126
+ }, { id: 'agent-actions', order: 200 }),
127
+ // And on the document's, which had no agent actions at all before there
128
+ // was a point to put them on.
129
+ contribution(LoopDocumentToolbarItem, {
130
+ items: (context) => [
131
+ agentAction(context, {
132
+ key: 'loop-summarise',
133
+ ariaLabel: 'Summarise this document',
134
+ title: 'Ask the agent for a summary of what this document says',
135
+ icon: SparkleFillIcon,
136
+ order: 200,
137
+ prompt: 'Summarise this document in a short paragraph.',
138
+ }),
139
+ ],
140
+ }, { id: 'agent-actions', order: 200 }),
141
+ ],
142
+ });
143
+ export default ChatPlugin;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The conversation's current turn, kept by the chat and read by anyone.
3
+ *
4
+ * One instance per reactor — created by the chat plugin when it builds and
5
+ * contributed to `LoopChatTurn` — so two workspaces on one page do not share
6
+ * a turn. The chat view drives it: `begin` on send (which is what clears the
7
+ * previous turn), `assistant` as the reply arrives, `end` when the agent
8
+ * stops. Readers hold the signal.
9
+ *
10
+ * @module loop/plugins/chat/turnState
11
+ */
12
+ import { type ReadonlySignal } from '@datalayer/reactor';
13
+ import type { ContextSnapshotData } from '../../../types';
14
+ import type { ChatTurnSnapshot, ChatTurnStatus } from '../../core';
15
+ export type TurnFeed = {
16
+ /** The turn, for readers. */
17
+ turn: ReadonlySignal<ChatTurnSnapshot>;
18
+ /** A new turn: the previous one is gone, this one holds the message. */
19
+ begin: (user: string) => void;
20
+ /** The reply so far. Moves the turn to `streaming` on its first text. */
21
+ assistant: (text: string) => void;
22
+ /** The agent stopped, one way or another. */
23
+ end: (status?: Extract<ChatTurnStatus, 'done' | 'error'>) => void;
24
+ /** The context window, as the agent last reported it. */
25
+ usage: (snapshot: ContextSnapshotData | undefined) => void;
26
+ /** What the agent is doing now, or nothing. */
27
+ activity: (label: string | undefined) => void;
28
+ };
29
+ export declare function createTurnFeed(): TurnFeed;
30
+ /**
31
+ * The writers, as extra fields on the contribution.
32
+ *
33
+ * `ChatTurnContribution` is read-only by type — that is what readers get —
34
+ * but the chat view has to reach the same feed to drive it, and it finds it
35
+ * through the contribution like everyone else. So the writers ride along as
36
+ * fields the public type does not name; {@link turnWritersOf} is how the view
37
+ * gets them back.
38
+ */
39
+ export declare const TURN_WRITERS: unique symbol;
40
+ export declare function feedWriters(feed: TurnFeed): Record<symbol, TurnFeed>;
41
+ export declare function turnWritersOf(value: unknown): TurnFeed | undefined;
@@ -0,0 +1,90 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The conversation's current turn, kept by the chat and read by anyone.
7
+ *
8
+ * One instance per reactor — created by the chat plugin when it builds and
9
+ * contributed to `LoopChatTurn` — so two workspaces on one page do not share
10
+ * a turn. The chat view drives it: `begin` on send (which is what clears the
11
+ * previous turn), `assistant` as the reply arrives, `end` when the agent
12
+ * stops. Readers hold the signal.
13
+ *
14
+ * @module loop/plugins/chat/turnState
15
+ */
16
+ import { signal } from '@datalayer/reactor';
17
+ const IDLE = { id: 0, status: 'idle' };
18
+ export function createTurnFeed() {
19
+ const turn = signal(IDLE);
20
+ return {
21
+ turn,
22
+ begin: user => {
23
+ // The window's fill carries over: it is the conversation's, not the
24
+ // turn's, and the footer under a fresh turn should not read empty
25
+ // until the agent reports again.
26
+ turn.value = {
27
+ id: turn.value.id + 1,
28
+ user,
29
+ status: 'thinking',
30
+ usage: turn.value.usage,
31
+ };
32
+ },
33
+ assistant: text => {
34
+ const current = turn.value;
35
+ // Nothing to attach it to, or nothing new: leave the value alone so
36
+ // readers do not re-render for an identical snapshot.
37
+ if (current.status === 'idle' || current.assistant === text) {
38
+ return;
39
+ }
40
+ turn.value = {
41
+ ...current,
42
+ assistant: text,
43
+ status: current.status === 'done' || current.status === 'error'
44
+ ? current.status
45
+ : text
46
+ ? 'streaming'
47
+ : current.status,
48
+ };
49
+ },
50
+ usage: snapshot => {
51
+ const current = turn.value;
52
+ // Kept even while idle: the agent reports the window once at mount,
53
+ // before anyone has typed, and the first turn wants those figures.
54
+ if (current.usage === snapshot) {
55
+ return;
56
+ }
57
+ turn.value = { ...current, usage: snapshot };
58
+ },
59
+ activity: label => {
60
+ const current = turn.value;
61
+ if (current.status === 'idle' || current.activity === label) {
62
+ return;
63
+ }
64
+ turn.value = { ...current, activity: label };
65
+ },
66
+ end: (status = 'done') => {
67
+ const current = turn.value;
68
+ if (current.status === 'idle') {
69
+ return;
70
+ }
71
+ turn.value = { ...current, status, activity: undefined };
72
+ },
73
+ };
74
+ }
75
+ /**
76
+ * The writers, as extra fields on the contribution.
77
+ *
78
+ * `ChatTurnContribution` is read-only by type — that is what readers get —
79
+ * but the chat view has to reach the same feed to drive it, and it finds it
80
+ * through the contribution like everyone else. So the writers ride along as
81
+ * fields the public type does not name; {@link turnWritersOf} is how the view
82
+ * gets them back.
83
+ */
84
+ export const TURN_WRITERS = Symbol.for('loop.chat.turn.writers');
85
+ export function feedWriters(feed) {
86
+ return { [TURN_WRITERS]: feed };
87
+ }
88
+ export function turnWritersOf(value) {
89
+ return value?.[TURN_WRITERS];
90
+ }
@@ -0,0 +1,14 @@
1
+ import type { ReactorPlugin } from '@datalayer/reactor';
2
+ import { type LoopChatExtrasValue } from '../../core';
3
+ export declare const CHAT_EXTRAS_PLUGIN_NAME = "@datalayer/loop-plugin-chat-extras";
4
+ export type ChatExtrasHandle = {
5
+ plugin: ReactorPlugin<Record<string, never>, unknown, unknown>;
6
+ /** Replace the live extras the chat view reads. */
7
+ setExtras: (value: LoopChatExtrasValue) => void;
8
+ };
9
+ /**
10
+ * A chat-extras plugin plus its setter. Call once per workspace (memoise it),
11
+ * then push updates through `setExtras`.
12
+ */
13
+ export declare function createChatExtrasPlugin(): ChatExtrasHandle;
14
+ export default createChatExtrasPlugin;
@@ -0,0 +1,51 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-chat-extras` — a live channel from a host example
7
+ * into the loop's conversation.
8
+ *
9
+ * An example that wraps a `LoopEmbed` in its own panels still has things to
10
+ * say to the chat column that change over the life of the page: an error
11
+ * banner it derives from its own state, the codemode toggle, the MCP and
12
+ * codemode status the footer shows. {@link createChatExtrasPlugin} returns a
13
+ * plugin to hand `LoopEmbed` and a `setExtras` the example calls whenever
14
+ * those change — backed by a signal, so the chat view re-renders without the
15
+ * plugin being rebuilt.
16
+ *
17
+ * ```tsx
18
+ * const { plugin, setExtras } = useMemo(() => createChatExtrasPlugin(), []);
19
+ * useEffect(() => setExtras({ errorBanner, codemodeEnabled }), […]);
20
+ * <LoopEmbed plugins={[capacityPlugin, plugin]} … />
21
+ * ```
22
+ *
23
+ * @module loop/plugins/chat-extras
24
+ */
25
+ import { contribution, definePlugin, signal } from '@datalayer/reactor';
26
+ import { LoopChatExtras } from '../../core';
27
+ export const CHAT_EXTRAS_PLUGIN_NAME = '@datalayer/loop-plugin-chat-extras';
28
+ let counter = 0;
29
+ /**
30
+ * A chat-extras plugin plus its setter. Call once per workspace (memoise it),
31
+ * then push updates through `setExtras`.
32
+ */
33
+ export function createChatExtrasPlugin() {
34
+ const id = `chat-extras-${(counter += 1)}`;
35
+ const extras = signal({});
36
+ const plugin = definePlugin({
37
+ name: CHAT_EXTRAS_PLUGIN_NAME,
38
+ displayName: 'Chat Extras',
39
+ description: 'A host example’s live banner and footer status.',
40
+ octicon: 'megaphone',
41
+ emoji: '\u{1F4E3}',
42
+ contributes: [contribution(LoopChatExtras, { id, extras }, { id })],
43
+ });
44
+ return {
45
+ plugin,
46
+ setExtras: value => {
47
+ extras.value = value;
48
+ },
49
+ };
50
+ }
51
+ export default createChatExtrasPlugin;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The standard bar: the assembled props, rendered by `ChatBaseHeader`.
3
+ *
4
+ * In its own file for the same reason as the composer's view: the header
5
+ * pulls the kernel indicator and its friends, and the plugin's module
6
+ * should stay a manifest.
7
+ *
8
+ * @module loop/plugins/chat-header/HeaderView
9
+ */
10
+ import type { JSX } from 'react';
11
+ import type { LoopChatHeaderProps } from '../../core';
12
+ export declare function HeaderView({ header }: LoopChatHeaderProps): JSX.Element;
13
+ export default HeaderView;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ChatBaseHeader } from '../../../chat/header/ChatHeaderBase';
3
+ export function HeaderView({ header }) {
4
+ return _jsx(ChatBaseHeader, { ...header });
5
+ }
6
+ export default HeaderView;
@@ -0,0 +1,3 @@
1
+ export declare const CHAT_HEADER_PLUGIN_NAME = "@datalayer/loop-plugin-chat-header";
2
+ export declare const ChatHeaderPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, unknown>;
3
+ export default ChatHeaderPlugin;
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Suspense, lazy } from 'react';
3
+ import { contribution, definePlugin } from '@datalayer/reactor';
4
+ import { LoopChatHeader } from '../../core';
5
+ export const CHAT_HEADER_PLUGIN_NAME = '@datalayer/loop-plugin-chat-header';
6
+ const LazyHeaderView = lazy(() => import('./HeaderView'));
7
+ /** The lazy boundary, so the point's consumers need no Suspense of theirs. */
8
+ function HeaderView(props) {
9
+ return (_jsx(Suspense, { fallback: null, children: _jsx(LazyHeaderView, { ...props }) }));
10
+ }
11
+ export const ChatHeaderPlugin = definePlugin({
12
+ name: CHAT_HEADER_PLUGIN_NAME,
13
+ displayName: 'Chat Header',
14
+ description: 'The conversation’s title bar: agent, kernel, actions.',
15
+ octicon: 'rows',
16
+ emoji: '\u{1F3F7}\u{FE0F}',
17
+ contributes: [
18
+ contribution(LoopChatHeader, { id: 'chat-header', Component: HeaderView }, { id: 'chat-header' }),
19
+ ],
20
+ });
21
+ export default ChatHeaderPlugin;
@@ -0,0 +1,10 @@
1
+ export declare const CHAT_VIEW_PLUGIN_NAME = "@datalayer/loop-plugin-chat-view";
2
+ export declare const ChatViewPlugin: 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 ChatViewPlugin;