@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,72 @@
1
+ /**
2
+ * What is already in the notebook when the workspace opens.
3
+ *
4
+ * A cell with a result in it, rather than an empty one.
5
+ *
6
+ * The empty cell was honest and useless. A visitor arriving at a page whose
7
+ * argument is "an agent works in a real notebook" met a blank editor and an
8
+ * agent with nothing to talk about — so the first thing they had to do, before
9
+ * seeing anything, was think of a task. Worse, every opener the agent offers
10
+ * refers to *this notebook*: "analyze this dataset", "find anomalies in this
11
+ * notebook". Against an empty document those are questions with no answer.
12
+ *
13
+ * So the notebook opens on a small analysis that has already run. The reader
14
+ * sees code, a table of numbers under it, and an agent beside it that can be
15
+ * asked about them — which is the entire product in one screen, with nothing
16
+ * required of them first.
17
+ *
18
+ * Three things it has to be, and they pull against each other:
19
+ *
20
+ * - **Real.** The output is what this code actually prints. Nobody is going to
21
+ * check, and that is exactly why it matters: a fabricated output in a
22
+ * product demonstration is a lie told to somebody deciding whether to trust
23
+ * the product.
24
+ * - **Small.** It is read in the corner of a landing page, at whatever height
25
+ * is left after the chrome. One cell, six rows out.
26
+ * - **Worth asking about.** The frame is deliberately unfinished — regional
27
+ * revenue with an obvious gap in it — so that "find the anomalies" and "plot
28
+ * revenue by region" have somewhere to land.
29
+ *
30
+ * The execution count is `1` and the outputs are populated, so the notebook
31
+ * reads as a session somebody already started. It is not connected to the
32
+ * kernel that will run the next cell; the moment anyone runs anything, real
33
+ * output replaces this.
34
+ *
35
+ * @module loop/plugins/notebook/openingNotebook
36
+ */
37
+ import type { INotebookContent } from '@jupyterlab/nbformat';
38
+ /**
39
+ * The frame the opening cell builds, rendered as pandas prints it.
40
+ *
41
+ * Written out rather than computed, and taken from a real run rather than
42
+ * typed: the column alignment is pandas' own, and eyeballing it produces
43
+ * something that looks approximately right and is wrong in every column. A
44
+ * fabricated output in a product demonstration is a lie told to somebody
45
+ * deciding whether to trust the product.
46
+ */
47
+ /** As pandas prints the frame. Shared with the opening document, which shows the same result. */
48
+ export declare const OPENING_FRAME_REPR = " region quarter revenue\n0 North Q1 182400\n1 North Q2 196750\n2 South Q1 141200\n3 South Q2 18900\n4 West Q1 203100\n5 West Q2 211480";
49
+ /**
50
+ * The code of the opening cell, as nbformat wants it: one string per line.
51
+ *
52
+ * Exported because two things need it and they must not drift. The notebook
53
+ * below shows it as a cell that has already run — execution count `1`, output
54
+ * present — and the workspace runs the same text on the sandbox as soon as one
55
+ * is ready, so that the claim the cell makes is true of the kernel behind it.
56
+ *
57
+ * Without the second half the notebook is a picture of a session rather than
58
+ * one: `sales` is on screen and undefined, and the first thing the agent does
59
+ * with it raises `NameError` in front of the visitor.
60
+ */
61
+ export declare const OPENING_SOURCE: string[];
62
+ /** The same code as one string, for a sandbox that takes source rather than cells. */
63
+ export declare function openingCode(): string;
64
+ /**
65
+ * The notebook a LOOP workspace opens on.
66
+ *
67
+ * Exported as a factory rather than a constant: `EphemeralNotebook` keeps the
68
+ * object it is first given and edits it in place, so two workspaces sharing one
69
+ * literal would share one document.
70
+ */
71
+ export declare function openingNotebook(): INotebookContent;
72
+ export default openingNotebook;
@@ -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 frame the opening cell builds, rendered as pandas prints it.
7
+ *
8
+ * Written out rather than computed, and taken from a real run rather than
9
+ * typed: the column alignment is pandas' own, and eyeballing it produces
10
+ * something that looks approximately right and is wrong in every column. A
11
+ * fabricated output in a product demonstration is a lie told to somebody
12
+ * deciding whether to trust the product.
13
+ */
14
+ /** As pandas prints the frame. Shared with the opening document, which shows the same result. */
15
+ export const OPENING_FRAME_REPR = ` region quarter revenue
16
+ 0 North Q1 182400
17
+ 1 North Q2 196750
18
+ 2 South Q1 141200
19
+ 3 South Q2 18900
20
+ 4 West Q1 203100
21
+ 5 West Q2 211480`;
22
+ /**
23
+ * The code of the opening cell, as nbformat wants it: one string per line.
24
+ *
25
+ * Exported because two things need it and they must not drift. The notebook
26
+ * below shows it as a cell that has already run — execution count `1`, output
27
+ * present — and the workspace runs the same text on the sandbox as soon as one
28
+ * is ready, so that the claim the cell makes is true of the kernel behind it.
29
+ *
30
+ * Without the second half the notebook is a picture of a session rather than
31
+ * one: `sales` is on screen and undefined, and the first thing the agent does
32
+ * with it raises `NameError` in front of the visitor.
33
+ */
34
+ export const OPENING_SOURCE = [
35
+ 'import pandas as pd\n',
36
+ '\n',
37
+ '# Quarterly revenue by region.\n',
38
+ 'sales = pd.DataFrame(\n',
39
+ ' {\n',
40
+ ' "region": ["North", "North", "South", "South", "West", "West"],\n',
41
+ ' "quarter": ["Q1", "Q2", "Q1", "Q2", "Q1", "Q2"],\n',
42
+ ' "revenue": [182400, 196750, 141200, 18900, 203100, 211480],\n',
43
+ ' }\n',
44
+ ')\n',
45
+ '\n',
46
+ 'sales',
47
+ ];
48
+ /** The same code as one string, for a sandbox that takes source rather than cells. */
49
+ export function openingCode() {
50
+ return OPENING_SOURCE.join('');
51
+ }
52
+ /**
53
+ * The notebook a LOOP workspace opens on.
54
+ *
55
+ * Exported as a factory rather than a constant: `EphemeralNotebook` keeps the
56
+ * object it is first given and edits it in place, so two workspaces sharing one
57
+ * literal would share one document.
58
+ */
59
+ export function openingNotebook() {
60
+ return {
61
+ cells: [
62
+ {
63
+ cell_type: 'code',
64
+ id: 'opening-analysis',
65
+ metadata: {},
66
+ execution_count: 1,
67
+ source: OPENING_SOURCE,
68
+ outputs: [
69
+ {
70
+ output_type: 'execute_result',
71
+ execution_count: 1,
72
+ data: { 'text/plain': [OPENING_FRAME_REPR] },
73
+ metadata: {},
74
+ },
75
+ ],
76
+ },
77
+ ],
78
+ metadata: {
79
+ kernelspec: {
80
+ display_name: 'Python 3',
81
+ language: 'python',
82
+ name: 'python3',
83
+ },
84
+ language_info: { name: 'python' },
85
+ },
86
+ nbformat: 4,
87
+ nbformat_minor: 5,
88
+ };
89
+ }
90
+ export default openingNotebook;
@@ -0,0 +1,4 @@
1
+ import { NOTEBOOK_TOOLBAR_PLUGIN_NAME } from './names';
2
+ export { NOTEBOOK_TOOLBAR_PLUGIN_NAME };
3
+ export declare const NotebookToolbarPlugin: import("@datalayer/reactor").LazyPluginRef;
4
+ export default NotebookToolbarPlugin;
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-notebook-toolbar` — the notebook's own toolbar items.
7
+ *
8
+ * A plugin of its own rather than part of the notebook editor, because the
9
+ * toolbar is where several parties meet. The editor offers a point and draws
10
+ * whatever is contributed to it; this plugin provides the bar itself and puts
11
+ * the notebook's own furniture on it — a light saying what the notebook is
12
+ * running on — and opens a second point for everyone else, which is where the
13
+ * chat's agent actions arrive.
14
+ *
15
+ * Switch this off and the notebook has **no toolbar at all**, not an empty
16
+ * one, and the chat's buttons go with it: they had nowhere to sit. The
17
+ * notebook itself keeps working, which is the point of the split.
18
+ *
19
+ * Lazy, and waiting on the toolbar point rather than on startup. Nothing has to
20
+ * name it: the notebook renders its toolbar, that read fires the point's
21
+ * activation event, and the module arrives. A workspace where nobody opens a
22
+ * notebook never fetches it at all — which is the whole reason its manifest
23
+ * lives here and its code does not.
24
+ *
25
+ * @module loop/plugins/notebook-toolbar
26
+ */
27
+ import { defineLazyPlugin, onContributionPoint } from '@datalayer/reactor';
28
+ import { LoopNotebookToolbar, LoopNotebookToolbarItem } from '../../core';
29
+ import { NOTEBOOK_TOOLBAR_PLUGIN_NAME } from './names';
30
+ export { NOTEBOOK_TOOLBAR_PLUGIN_NAME };
31
+ export const NotebookToolbarPlugin = defineLazyPlugin({
32
+ name: NOTEBOOK_TOOLBAR_PLUGIN_NAME,
33
+ displayName: 'Notebook toolbar',
34
+ description: 'Shows what the notebook is running on, on its toolbar.',
35
+ octicon: 'circle',
36
+ emoji: '\u{1F7E2}',
37
+ activationEvents: [onContributionPoint(LoopNotebookToolbar)],
38
+ // The bar is what accepts buttons, so the plugin that owns the bar is the
39
+ // one that opens the point. Declared here rather than inside the module, so
40
+ // the graph shows the point — and the chat's contributions to it — before
41
+ // this plugin's code has been fetched.
42
+ contributionPoints: [LoopNotebookToolbarItem],
43
+ load: () => import('./plugin'),
44
+ });
45
+ export default NotebookToolbarPlugin;
@@ -0,0 +1,10 @@
1
+ import type { ToolbarItem } from '@datalayer/primer-addons';
2
+ /**
3
+ * The standard notebook toolbar items.
4
+ *
5
+ * Pushed to the trailing edge by a spacer, because the indicator reports
6
+ * rather than acts: the buttons are what a person reaches for, and a status
7
+ * light sitting among them reads like one more thing to press.
8
+ */
9
+ export declare function notebookToolbarItems(notebookId: string): ToolbarItem[];
10
+ export default notebookToolbarItems;
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { KernelIndicator, NOTEBOOK_TOOLBAR_ITEM_ORDERS, useNotebookStore, } from '@datalayer/jupyter-react';
3
+ /** Trailing edge of the toolbar: past the last item the notebook contributes. */
4
+ const KERNEL_INDICATOR_ORDER = NOTEBOOK_TOOLBAR_ITEM_ORDERS.cellType + 100;
5
+ /**
6
+ * The kernel indicator for one notebook.
7
+ *
8
+ * A component rather than a value captured when the item was built, because a
9
+ * notebook gets its kernel *after* its toolbar first renders — the adapter is
10
+ * registered, then the kernel is attached, then it connects. Reading the store
11
+ * from inside the render means each of those steps reaches the indicator; a
12
+ * kernel captured at build time would stay `null` and the light would sit at
13
+ * an unknown state forever.
14
+ */
15
+ function NotebookKernelIndicator({ notebookId, }) {
16
+ const notebookStore = useNotebookStore();
17
+ const kernel = notebookStore.selectNotebookAdapter(notebookId)?.kernel ?? null;
18
+ return (_jsx(KernelIndicator, { kernel: kernel,
19
+ // Borderless: the toolbar already draws the frame around it.
20
+ bordered: false }));
21
+ }
22
+ /**
23
+ * The standard notebook toolbar items.
24
+ *
25
+ * Pushed to the trailing edge by a spacer, because the indicator reports
26
+ * rather than acts: the buttons are what a person reaches for, and a status
27
+ * light sitting among them reads like one more thing to press.
28
+ */
29
+ export function notebookToolbarItems(notebookId) {
30
+ return [
31
+ {
32
+ key: 'loop-kernel-indicator-spacer',
33
+ type: 'spacer',
34
+ order: KERNEL_INDICATOR_ORDER - 1,
35
+ },
36
+ {
37
+ key: 'loop-kernel-indicator',
38
+ type: 'custom',
39
+ order: KERNEL_INDICATOR_ORDER,
40
+ group: 'kernel',
41
+ render: () => _jsx(NotebookKernelIndicator, { notebookId: notebookId }),
42
+ },
43
+ ];
44
+ }
45
+ export default notebookToolbarItems;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The plugin's name, on its own.
3
+ *
4
+ * Imported by both the manifest and the module it loads, and by hosts that
5
+ * want to name the plugin without pulling either in.
6
+ *
7
+ * @module loop/plugins/notebook-toolbar/names
8
+ */
9
+ export declare const NOTEBOOK_TOOLBAR_PLUGIN_NAME = "@datalayer/loop-plugin-notebook-toolbar";
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The plugin's name, on its own.
7
+ *
8
+ * Imported by both the manifest and the module it loads, and by hosts that
9
+ * want to name the plugin without pulling either in.
10
+ *
11
+ * @module loop/plugins/notebook-toolbar/names
12
+ */
13
+ export const NOTEBOOK_TOOLBAR_PLUGIN_NAME = '@datalayer/loop-plugin-notebook-toolbar';
@@ -0,0 +1,2 @@
1
+ export declare const NotebookToolbarPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, unknown>;
2
+ export default NotebookToolbarPlugin;
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The notebook toolbar plugin's module — everything behind its manifest.
7
+ *
8
+ * Separate from the entry point so that `@datalayer/jupyter-react`, which the
9
+ * kernel indicator reaches for, is fetched when a notebook toolbar is first
10
+ * read rather than with the shell.
11
+ *
12
+ * @module loop/plugins/notebook-toolbar/plugin
13
+ */
14
+ import { contribution, definePlugin } from '@datalayer/reactor';
15
+ import { LoopNotebookToolbar } from '../../core';
16
+ import { notebookToolbarItems } from './items';
17
+ import { NOTEBOOK_TOOLBAR_PLUGIN_NAME } from './names';
18
+ export const NotebookToolbarPlugin = definePlugin({
19
+ name: NOTEBOOK_TOOLBAR_PLUGIN_NAME,
20
+ contributes: [
21
+ contribution(LoopNotebookToolbar, { items: ({ editorId }) => notebookToolbarItems(editorId) }, { id: 'toolbar', order: 100 }),
22
+ ],
23
+ });
24
+ export default NotebookToolbarPlugin;
@@ -0,0 +1,10 @@
1
+ export declare const NOTEBOOK_VIEW_PLUGIN_NAME = "@datalayer/loop-plugin-notebook-view";
2
+ export declare const NotebookViewPlugin: 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 NotebookViewPlugin;
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * `@datalayer/loop-plugin-notebook-view` — the notebook, one click away.
7
+ *
8
+ * The footer icon that opens the notebook beside the conversation. It shows
9
+ * only while a notebook is actually contributed, and requires the
10
+ * input-prompt plugin, whose footer the icon sits in.
11
+ *
12
+ * @module loop/plugins/notebook-view
13
+ */
14
+ // The same icon the notebook's own editor view declares, so the footer
15
+ // button and the selector entry read as one thing.
16
+ import { RowsIcon } from '@primer/octicons-react';
17
+ import { defineViewPlugin } from '../view-switch';
18
+ export const NOTEBOOK_VIEW_PLUGIN_NAME = '@datalayer/loop-plugin-notebook-view';
19
+ export const NotebookViewPlugin = defineViewPlugin({
20
+ key: 'notebook',
21
+ viewId: 'notebook',
22
+ displayName: 'Notebook view',
23
+ description: 'The notebook beside the chat, from the composer footer.',
24
+ icon: RowsIcon,
25
+ tooltip: 'Show the notebook',
26
+ octicon: 'rows',
27
+ emoji: '\u{1F4D3}',
28
+ order: 11,
29
+ });
30
+ export default NotebookViewPlugin;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The turn panel: the current turn, hung on the composer.
3
+ *
4
+ * On the page layout the transcript is a side panel that starts closed, so
5
+ * without this a person who asks something sees cells appear and no word from
6
+ * whoever is writing them. This shows the turn where the eye already is: the
7
+ * message just sent, then the reply as it streams — and, while a tool runs,
8
+ * what the agent is doing in the page ("Analyst is adding a cell…") — in the
9
+ * prompt's own card. Under it, by configuration, the transcript's turn footer,
10
+ * only its copy and dismiss actions, or nothing. A new message replaces it
11
+ * all: the turn feed is the last turn only, and that is the panel's contract.
12
+ *
13
+ * The reply is rendered as the transcript renders it — the same markdown
14
+ * pipeline, a size down — so a table or a list reads as one here too. What
15
+ * the panel is not is a second transcript: one turn, compact, and the whole
16
+ * conversation one click away.
17
+ *
18
+ * @module loop/plugins/page-layout/TurnPanel
19
+ */
20
+ import type { JSX } from 'react';
21
+ export type TurnPanelFooter = 'full' | 'actions' | 'none';
22
+ export declare function TurnPanel({ footer, }: {
23
+ footer?: TurnPanelFooter;
24
+ }): JSX.Element | null;
25
+ export default TurnPanel;
@@ -0,0 +1,126 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { Box, IconButton, Text } from '@primer/react';
4
+ import { CheckIcon, CommentDiscussionIcon, CopyIcon, XIcon, } from '@primer/octicons-react';
5
+ import { useContributions, useSignalValue } from '@datalayer/reactor/react';
6
+ import { signal } from '@datalayer/reactor';
7
+ import { TurnFooter } from '../../../chat/messages/TurnFooter';
8
+ import { LoopChatTurn } from '../../core';
9
+ import { Streamdown } from 'streamdown';
10
+ import { streamdownMarkdownStyles } from '../../../chat/styles/streamdownStyles';
11
+ import { normalizeAssistantMarkdown } from '../../../chat/messages/assistantMarkdown';
12
+ import { openPagePanel, pageLayoutSheet, } from '@datalayer/primer-addons/lib/reactor';
13
+ /* A signal to read when no chat contributed a turn: the hook needs one. */
14
+ const NO_TURN = signal({ id: 0, status: 'idle' });
15
+ /** How much of the reply the panel shows before it scrolls. */
16
+ const MAX_HEIGHT = 168;
17
+ /** The three dots, while the agent has said nothing yet. */
18
+ function Thinking() {
19
+ return (_jsxs(Box, { as: "span", "aria-label": "The agent is thinking", sx: {
20
+ display: 'inline-flex',
21
+ gap: '4px',
22
+ alignItems: 'center',
23
+ height: '1.5em',
24
+ '& > i': {
25
+ width: 5,
26
+ height: 5,
27
+ borderRadius: '50%',
28
+ bg: 'fg.muted',
29
+ animation: 'loop-turn-dot 1.2s ease-in-out infinite',
30
+ },
31
+ '& > i:nth-of-type(2)': { animationDelay: '0.15s' },
32
+ '& > i:nth-of-type(3)': { animationDelay: '0.3s' },
33
+ '@keyframes loop-turn-dot': {
34
+ '0%, 80%, 100%': { opacity: 0.25 },
35
+ '40%': { opacity: 1 },
36
+ },
37
+ }, children: [_jsx("i", {}), _jsx("i", {}), _jsx("i", {})] }));
38
+ }
39
+ export function TurnPanel({ footer = 'full', }) {
40
+ const entries = useContributions(LoopChatTurn);
41
+ const turn = useSignalValue(entries[0]?.value.turn ?? NO_TURN);
42
+ const sheet = useSignalValue(pageLayoutSheet);
43
+ const replyRef = useRef(null);
44
+ /*
45
+ * Dismissed, per turn: the panel goes away until the next message — the
46
+ * transcript keeps the turn, one click away. Keyed on the turn's id so a
47
+ * new turn shows again unasked.
48
+ */
49
+ const [dismissedId, setDismissedId] = useState(null);
50
+ const [copied, setCopied] = useState(false);
51
+ // Follow the reply as it grows: the newest words are the ones wanted.
52
+ useEffect(() => {
53
+ const el = replyRef.current;
54
+ if (el) {
55
+ el.scrollTop = el.scrollHeight;
56
+ }
57
+ }, [turn.assistant]);
58
+ useEffect(() => {
59
+ if (!copied) {
60
+ return;
61
+ }
62
+ const timer = window.setTimeout(() => setCopied(false), 1400);
63
+ return () => window.clearTimeout(timer);
64
+ }, [copied]);
65
+ const copyTurn = useCallback(async () => {
66
+ const text = [turn.user, turn.assistant].filter(Boolean).join('\n\n');
67
+ await navigator.clipboard?.writeText(text);
68
+ setCopied(true);
69
+ }, [turn.user, turn.assistant]);
70
+ // With the transcript on the sheet, the turn is already on the page.
71
+ if (sheet === 'panel' ||
72
+ turn.status === 'idle' ||
73
+ !turn.user ||
74
+ dismissedId === turn.id) {
75
+ return null;
76
+ }
77
+ const working = turn.status === 'thinking' || turn.status === 'streaming';
78
+ return (_jsxs(Box, { "data-turn-panel": "", sx: {
79
+ borderTop: '1px solid',
80
+ borderColor: 'border.muted',
81
+ px: 3,
82
+ pt: 2,
83
+ pb: footer === 'none' ? 2 : 1,
84
+ display: 'flex',
85
+ flexDirection: 'column',
86
+ gap: 2,
87
+ bg: 'canvas.default',
88
+ }, children: [_jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-end' }, children: _jsx(Text, { sx: {
89
+ fontSize: 0,
90
+ lineHeight: 1.45,
91
+ px: 2,
92
+ py: 1,
93
+ borderRadius: '10px',
94
+ bg: 'accent.subtle',
95
+ color: 'fg.default',
96
+ maxWidth: '85%',
97
+ overflow: 'hidden',
98
+ display: '-webkit-box',
99
+ WebkitLineClamp: 2,
100
+ WebkitBoxOrient: 'vertical',
101
+ }, children: turn.user }) }), _jsxs(Box, { sx: { display: 'flex', gap: 2, alignItems: 'flex-start' }, children: [_jsx(Box, { ref: replyRef, sx: {
102
+ flex: '1 1 auto',
103
+ minWidth: 0,
104
+ maxHeight: MAX_HEIGHT,
105
+ overflowY: 'auto',
106
+ fontSize: 0,
107
+ lineHeight: 1.5,
108
+ color: turn.assistant ? 'fg.default' : 'fg.muted',
109
+ // Rendered markdown brings its own flow; the plain fallbacks
110
+ // below keep their line breaks.
111
+ whiteSpace: turn.assistant ? 'normal' : 'pre-wrap',
112
+ overflowWrap: 'anywhere',
113
+ }, children: turn.assistant ? (_jsx(Box, { sx: { ...streamdownMarkdownStyles, fontSize: 0 }, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(turn.assistant) }) })) : turn.activity ? (_jsx(Text, { sx: { color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : working ? (_jsx(Thinking, {})) : turn.status === 'error' ? ('The agent could not answer.') : ('Done — the result is in the page.') }), _jsx(IconButton, { icon: CommentDiscussionIcon, size: "small", variant: "invisible", "aria-label": "Open the conversation", onClick: openPagePanel, sx: { color: 'fg.muted', flexShrink: 0 } })] }), turn.assistant && turn.activity ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : null, footer === 'full' ? (
114
+ // The same footer the transcript draws under a turn: the window's
115
+ // fill, this turn's tokens in and out, copy, and dismiss.
116
+ _jsx(TurnFooter, { usage: turn.usage, live: working, latest: true, padding: 0, onCopy: copyTurn, onRemove: () => setDismissedId(turn.id) })) : footer === 'actions' ? (
117
+ // The actions without the counters, for a host whose readers are not
118
+ // asking about tokens.
119
+ _jsxs(Box, { sx: {
120
+ display: 'flex',
121
+ justifyContent: 'flex-end',
122
+ gap: 1,
123
+ mt: -1,
124
+ }, children: [_jsx(IconButton, { icon: copied ? CheckIcon : CopyIcon, size: "small", variant: "invisible", "aria-label": copied ? 'Copied' : 'Copy this turn', onClick: () => void copyTurn(), sx: { color: 'fg.muted' } }), _jsx(IconButton, { icon: XIcon, size: "small", variant: "invisible", "aria-label": "Dismiss until the next turn", onClick: () => setDismissedId(turn.id), sx: { color: 'fg.muted' } })] })) : null] }));
125
+ }
126
+ export default TurnPanel;
@@ -0,0 +1,35 @@
1
+ import { type TurnPanelFooter } from './TurnPanel';
2
+ export { pageLayoutPanelOpen, pageLayoutSheet, openPagePanel as openConversationPanel, } from '@datalayer/primer-addons/lib/reactor';
3
+ export type { TurnPanelFooter } from './TurnPanel';
4
+ export declare const LOOP_PAGE_LAYOUT_PLUGIN_NAME = "@datalayer/loop-plugin-page-layout";
5
+ /** What a host may set on the page layout. */
6
+ export type LoopPageLayoutConfig = {
7
+ /**
8
+ * Where the turn panel hangs on the composer.
9
+ *
10
+ * `below` (the default): under the composer, where a reply reads as the
11
+ * answer to what was just typed above it. `above`: over it, for a host
12
+ * whose composer sits at the bottom of the page and wants the reply to
13
+ * rise. `none`: no panel — the conversation is the side panel only.
14
+ */
15
+ turnPanel: 'below' | 'above' | 'none';
16
+ /**
17
+ * How the composer stands over the page.
18
+ *
19
+ * `docked` (the default): in a band above the canvas, at the sheet's own
20
+ * width, so the prompt and the page read as one column. `floating`: a
21
+ * draggable card anchored to the top of the canvas, hovering over a strip
22
+ * kept clear for it — the document application's title bar, movable.
23
+ */
24
+ prompt: 'docked' | 'floating';
25
+ /**
26
+ * What the turn panel draws under the reply.
27
+ *
28
+ * `full` (the default): the transcript's turn footer — the window's fill,
29
+ * this turn's tokens, copy, dismiss. `actions`: copy and dismiss only, for
30
+ * a host whose readers are not asking about tokens. `none`: nothing.
31
+ */
32
+ turnPanelFooter: TurnPanelFooter;
33
+ };
34
+ export declare const LoopPageLayoutPlugin: import("@datalayer/reactor").ReactorPlugin<LoopPageLayoutConfig, unknown, unknown>;
35
+ export default LoopPageLayoutPlugin;
@@ -0,0 +1,80 @@
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, } from '@datalayer/primer-addons/lib/reactor';
6
+ import { LoopChatLayout, LoopChatTurn, LoopPromptPanel, LoopSlots, } from '../../core';
7
+ import { TurnPanel } from './TurnPanel';
8
+ /*
9
+ * The layout's state is primer-addons', re-exported under the names the
10
+ * Loop always had: a host that opened the conversation panel by calling
11
+ * `openConversationPanel()` keeps doing so.
12
+ */
13
+ export { pageLayoutPanelOpen, pageLayoutSheet, openPagePanel as openConversationPanel, } from '@datalayer/primer-addons/lib/reactor';
14
+ export const LOOP_PAGE_LAYOUT_PLUGIN_NAME = '@datalayer/loop-plugin-page-layout';
15
+ /* A signal to read when no chat contributed a turn: the hook needs one. */
16
+ const NO_TURN = signal({ id: 0, status: 'idle' });
17
+ /**
18
+ * The chat view's parts on the page layout.
19
+ *
20
+ * The editors are the page, the transcript the panel, the composer the band;
21
+ * what the agent is doing — the turn's `activity` — is the line at the top
22
+ * of the sheet, so the change is seen where it happens.
23
+ */
24
+ function LoopPageLayout({ parts, promptMode, }) {
25
+ const turnEntries = useContributions(LoopChatTurn);
26
+ const turn = useSignalValue(turnEntries[0]?.value.turn ?? NO_TURN);
27
+ 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: promptMode }));
28
+ }
29
+ /** The header button that opens and closes the conversation panel. */
30
+ function ConversationToggle() {
31
+ return (_jsx(PagePanelToggle, { panelName: "conversation", icon: CommentDiscussionIcon, sx: { order: 2 } }));
32
+ }
33
+ export const LoopPageLayoutPlugin = definePlugin({
34
+ name: LOOP_PAGE_LAYOUT_PLUGIN_NAME,
35
+ config: { turnPanel: 'below', turnPanelFooter: 'full', prompt: 'docked' },
36
+ displayName: 'Page layout',
37
+ 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.',
38
+ octicon: 'file',
39
+ emoji: '\u{1F4C4}',
40
+ build: ({ config, ...ctx }) => {
41
+ /*
42
+ The layout, contributed per build because the composer's stance is
43
+ configuration: `docked-top` means the layout owns the composer's width
44
+ — `PageLayout` gives it a mount point the width of the sheet, so the
45
+ prompt and the page read as one column; `floating-top` is the draggable
46
+ card, sized by itself, over a strip of canvas kept clear for it. The
47
+ component closes over the choice once, per build.
48
+ */
49
+ const promptMode = config.prompt;
50
+ const ConfiguredLayout = (parts) => (_jsx(LoopPageLayout, { parts: parts, promptMode: promptMode }));
51
+ ctx.contribute(LoopChatLayout, {
52
+ id: 'page-layout',
53
+ prompt: promptMode === 'floating' ? 'floating-top' : 'docked-top',
54
+ Component: ConfiguredLayout,
55
+ }, { id: 'page-layout' });
56
+ // The turn panel is configuration-dependent, so it is contributed here
57
+ // rather than statically: which side, what footer, or not at all. The
58
+ // component closes over the footer choice once, per build.
59
+ if (config.turnPanel !== 'none') {
60
+ const footer = config.turnPanelFooter;
61
+ const ConfiguredTurnPanel = () => (_jsx(TurnPanel, { footer: footer }));
62
+ ctx.contribute(LoopPromptPanel, {
63
+ id: 'page-layout-turn',
64
+ placement: config.turnPanel,
65
+ order: 0,
66
+ Component: ConfiguredTurnPanel,
67
+ }, { id: 'page-layout-turn' });
68
+ }
69
+ return {
70
+ components: [
71
+ {
72
+ id: 'page-layout-conversation-toggle',
73
+ slot: LoopSlots.header,
74
+ Component: ConversationToggle,
75
+ },
76
+ ],
77
+ };
78
+ },
79
+ });
80
+ 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;