@datalayer/agent-runtimes 1.0.29 → 1.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (779) hide show
  1. package/lib/AgentDocument.js +5 -22
  2. package/lib/AgentNode.d.ts +1 -1
  3. package/lib/AgentNode.js +193 -23
  4. package/lib/AgentNotebook.js +1 -1
  5. package/lib/App.d.ts +1 -1
  6. package/lib/AppExamples2.d.ts +1 -1
  7. package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
  8. package/lib/agent-node/AgentNodeGallery.js +19 -15
  9. package/lib/agent-node/themeStore.js +7 -6
  10. package/lib/agents/AgentDetails.d.ts +8 -2
  11. package/lib/agents/AgentDetails.js +41 -11
  12. package/lib/agents/AgentRuntimeChat.d.ts +3 -3
  13. package/lib/agents/AgentRuntimeChat.js +15 -15
  14. package/lib/api/agents.d.ts +10 -10
  15. package/lib/api/agents.js +15 -15
  16. package/lib/api/checkpoints.d.ts +40 -0
  17. package/lib/api/checkpoints.js +75 -0
  18. package/lib/api/index.d.ts +1 -0
  19. package/lib/api/index.js +2 -1
  20. package/lib/api/notifications.d.ts +21 -6
  21. package/lib/api/notifications.js +32 -14
  22. package/lib/api/runtimes/environments.d.ts +406 -4
  23. package/lib/api/runtimes/environments.js +641 -9
  24. package/lib/api/runtimes/runtimes.d.ts +19 -19
  25. package/lib/api/runtimes/runtimes.js +47 -46
  26. package/lib/api/spacer/notebooks.js +1 -1
  27. package/lib/chat/Chat.d.ts +16 -4
  28. package/lib/chat/Chat.js +18 -5
  29. package/lib/chat/ChatFloating.d.ts +20 -2
  30. package/lib/chat/ChatFloating.js +196 -118
  31. package/lib/chat/ChatInline.d.ts +15 -0
  32. package/lib/chat/ChatInline.js +0 -18
  33. package/lib/chat/ChatPopupStandalone.d.ts +1 -1
  34. package/lib/chat/ChatSidebar.d.ts +14 -2
  35. package/lib/chat/ChatSidebar.js +1 -1
  36. package/lib/chat/ChatStandalone.d.ts +1 -1
  37. package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
  38. package/lib/chat/EphemeralSurfaceControl.js +55 -0
  39. package/lib/chat/base/ChatAvailability.d.ts +34 -0
  40. package/lib/chat/base/ChatAvailability.js +18 -0
  41. package/lib/chat/base/ChatBase.d.ts +2 -1
  42. package/lib/chat/base/ChatBase.js +657 -28
  43. package/lib/chat/display/ButtonGlow.d.ts +9 -0
  44. package/lib/chat/display/ButtonGlow.js +60 -0
  45. package/lib/chat/display/EmptyState.d.ts +15 -1
  46. package/lib/chat/display/EmptyState.js +81 -12
  47. package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
  48. package/lib/chat/display/PoweredByTag.d.ts +1 -1
  49. package/lib/chat/display/groupSuggestions.d.ts +21 -0
  50. package/lib/chat/display/groupSuggestions.js +18 -0
  51. package/lib/chat/document/EphemeralDocument.d.ts +70 -6
  52. package/lib/chat/document/EphemeralDocument.js +154 -52
  53. package/lib/chat/header/ChatHeader.d.ts +1 -1
  54. package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
  55. package/lib/chat/header/ChatHeaderBase.js +21 -102
  56. package/lib/chat/header/ChatViewModeToggle.d.ts +29 -0
  57. package/lib/chat/header/ChatViewModeToggle.js +55 -0
  58. package/lib/chat/index.d.ts +5 -1
  59. package/lib/chat/index.js +9 -1
  60. package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
  61. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
  62. package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
  63. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
  64. package/lib/chat/messages/ChatMessageList.d.ts +22 -1
  65. package/lib/chat/messages/ChatMessageList.js +370 -166
  66. package/lib/chat/messages/ChatMessages.d.ts +1 -1
  67. package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
  68. package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
  69. package/lib/chat/messages/TurnFooter.d.ts +42 -0
  70. package/lib/chat/messages/TurnFooter.js +75 -0
  71. package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
  72. package/lib/chat/messages/assistantMarkdown.js +56 -0
  73. package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
  74. package/lib/chat/notebook/EphemeralNotebook.js +194 -61
  75. package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
  76. package/lib/chat/parts/MessagePart.d.ts +1 -1
  77. package/lib/chat/parts/ReasoningPart.d.ts +8 -1
  78. package/lib/chat/parts/TextPart.d.ts +1 -1
  79. package/lib/chat/parts/ToolPart.d.ts +8 -1
  80. package/lib/chat/prompt/FloatingCard.d.ts +26 -0
  81. package/lib/chat/prompt/FloatingCard.js +80 -0
  82. package/lib/chat/prompt/InputPrompt.d.ts +206 -53
  83. package/lib/chat/prompt/InputPrompt.js +161 -80
  84. package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
  85. package/lib/chat/prompt/InputPromptBase.js +225 -0
  86. package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
  87. package/lib/chat/prompt/InputPromptLexical.js +227 -30
  88. package/lib/chat/prompt/InputPromptText.d.ts +10 -2
  89. package/lib/chat/prompt/InputPromptText.js +35 -3
  90. package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
  91. package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
  92. package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
  93. package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
  94. package/lib/chat/prompt/footer/index.d.ts +7 -0
  95. package/lib/chat/prompt/footer/index.js +11 -0
  96. package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
  97. package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
  98. package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
  99. package/lib/chat/prompt/header/InPromptHeader.js +14 -0
  100. package/lib/chat/prompt/header/index.d.ts +7 -0
  101. package/lib/chat/prompt/header/index.js +11 -0
  102. package/lib/chat/prompt/index.d.ts +8 -4
  103. package/lib/chat/prompt/index.js +15 -3
  104. package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
  105. package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
  106. package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
  107. package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
  108. package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
  109. package/lib/chat/prompt/menus/ModelSelector.js +27 -0
  110. package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
  111. package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
  112. package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
  113. package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
  114. package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
  115. package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
  116. package/lib/chat/prompt/menus/index.d.ts +15 -0
  117. package/lib/chat/prompt/menus/index.js +19 -0
  118. package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
  119. package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
  120. package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
  121. package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
  122. package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
  123. package/lib/chat/prompt/plugins/MentionChip.js +24 -0
  124. package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
  125. package/lib/chat/prompt/plugins/MentionNode.js +77 -0
  126. package/lib/chat/prompt/promptHistory.d.ts +52 -0
  127. package/lib/chat/prompt/promptHistory.js +123 -0
  128. package/lib/chat/prompt/stack.d.ts +81 -0
  129. package/lib/chat/prompt/stack.js +41 -0
  130. package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
  131. package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
  132. package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
  133. package/lib/chat/tools/A2AAgentDialog.js +265 -0
  134. package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
  135. package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
  136. package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
  137. package/lib/chat/tools/index.d.ts +1 -0
  138. package/lib/chat/tools/index.js +1 -0
  139. package/lib/chat/usage/ContextPie.d.ts +17 -0
  140. package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
  141. package/lib/chat/useViewportDrag.d.ts +11 -0
  142. package/lib/chat/useViewportDrag.js +61 -0
  143. package/lib/chat/viewModes.d.ts +51 -0
  144. package/lib/chat/viewModes.js +57 -0
  145. package/lib/client/AgentRuntimesClient.d.ts +10 -9
  146. package/lib/client/AgentRuntimesClient.js +1 -1
  147. package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
  148. package/lib/client/AgentsMixin.d.ts +12 -12
  149. package/lib/client/AgentsMixin.js +31 -31
  150. package/lib/client/IAgentRuntimesClient.d.ts +10 -10
  151. package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
  152. package/lib/client/SdkAgentRuntimesClient.js +10 -10
  153. package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
  154. package/lib/client/mixins/RuntimesMixin.js +54 -21
  155. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
  156. package/lib/components/agents/AgentSummary.d.ts +13 -0
  157. package/lib/components/agents/AgentSummary.js +21 -4
  158. package/lib/components/cards/NotificationEventCard.d.ts +1 -1
  159. package/lib/components/cards/OutputCard.d.ts +1 -1
  160. package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
  161. package/lib/components/cards/ToolApprovalCard.js +1 -0
  162. package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
  163. package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
  164. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
  165. package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
  166. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
  167. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
  168. package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +9 -0
  169. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +95 -23
  170. package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
  171. package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
  172. package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
  173. package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
  174. package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
  175. package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
  176. package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
  177. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
  178. package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
  179. package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
  180. package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
  181. package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
  182. package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
  183. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +97 -0
  184. package/lib/components/code-sandboxes/codeSandboxEnvironments.js +184 -0
  185. package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
  186. package/lib/components/code-sandboxes/index.d.ts +1 -0
  187. package/lib/components/code-sandboxes/index.js +1 -0
  188. package/lib/components/context/SpaceSelect.d.ts +1 -1
  189. package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
  190. package/lib/components/icons/ArtifactIcon.d.ts +1 -0
  191. package/lib/components/icons/ArtifactIcon.js +2 -1
  192. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  193. package/lib/components/progress/CreditsIndicator.d.ts +1 -0
  194. package/lib/components/progress/CreditsIndicator.js +0 -4
  195. package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
  196. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
  197. package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
  198. package/lib/components/snippets/SnippetDialog.d.ts +1 -0
  199. package/lib/components/snippets/SnippetDialog.js +0 -4
  200. package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
  201. package/lib/components/specs/SpecPayloadPreview.js +102 -0
  202. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  203. package/lib/context/ContextDistribution.d.ts +1 -1
  204. package/lib/context/ContextInspector.d.ts +2 -1
  205. package/lib/context/ContextPanel.d.ts +1 -1
  206. package/lib/context/ContextUsage.d.ts +1 -1
  207. package/lib/context/CostTracker.d.ts +1 -1
  208. package/lib/context/CostUsageChart.d.ts +1 -1
  209. package/lib/context/CostUsageChart.js +4 -4
  210. package/lib/context/MessageHistory.d.ts +3 -2
  211. package/lib/context/TokenUsageChart.d.ts +1 -1
  212. package/lib/context/TokenUsageChart.js +4 -4
  213. package/lib/examples/A2UiAgentExample.js +15 -6
  214. package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
  215. package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
  216. package/lib/examples/A2UiContactCardExample.d.ts +10 -0
  217. package/lib/examples/A2UiContactCardExample.js +23 -170
  218. package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
  219. package/lib/examples/A2UiJupyterOutputExample.js +792 -0
  220. package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
  221. package/lib/examples/A2UiRestaurantExample.js +24 -179
  222. package/lib/examples/A2UiViewerExample.d.ts +10 -0
  223. package/lib/examples/A2UiViewerExample.js +24 -378
  224. package/lib/examples/AgUiAgenticExample.js +2 -4
  225. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
  226. package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
  227. package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
  228. package/lib/examples/AgUiSharedStateExample.js +2 -4
  229. package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
  230. package/lib/examples/AgentA2AExample.d.ts +17 -0
  231. package/lib/examples/AgentA2AExample.js +56 -0
  232. package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
  233. package/lib/examples/AgentCheckpointsExample.js +72 -54
  234. package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
  235. package/lib/examples/AgentCodeSandboxExample.js +93 -303
  236. package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
  237. package/lib/examples/AgentCodeSandboxesExample.js +56 -162
  238. package/lib/examples/AgentCodemodeExample.d.ts +7 -2
  239. package/lib/examples/AgentCodemodeExample.js +60 -125
  240. package/lib/examples/AgentCompactionExample.js +19 -135
  241. package/lib/examples/AgentEvalsExample.js +34 -66
  242. package/lib/examples/AgentGuardrailsExample.js +64 -112
  243. package/lib/examples/AgentHooksExample.d.ts +11 -0
  244. package/lib/examples/AgentHooksExample.js +30 -67
  245. package/lib/examples/AgentInferenceProviderExample.js +8 -32
  246. package/lib/examples/AgentLoopExample.d.ts +4 -2
  247. package/lib/examples/AgentLoopExample.js +45 -93
  248. package/lib/examples/AgentMCPExample.js +30 -79
  249. package/lib/examples/AgentMemoryExample.js +21 -64
  250. package/lib/examples/AgentMonitoringExample.js +33 -94
  251. package/lib/examples/AgentNotificationsExample.js +56 -95
  252. package/lib/examples/AgentOtelExample.js +35 -88
  253. package/lib/examples/AgentOutputsExample.d.ts +2 -1
  254. package/lib/examples/AgentOutputsExample.js +16 -137
  255. package/lib/examples/AgentParametersExample.js +7 -17
  256. package/lib/examples/AgentSkillsExample.js +40 -154
  257. package/lib/examples/AgentSubagentsExample.d.ts +7 -6
  258. package/lib/examples/AgentSubagentsExample.js +80 -191
  259. package/lib/examples/AgentToolApprovalsExample.js +35 -91
  260. package/lib/examples/AgentTriggersExample.js +43 -59
  261. package/lib/examples/AgentspecsExample.js +4 -4
  262. package/lib/examples/CellExample.d.ts +1 -1
  263. package/lib/examples/ChatExample.d.ts +12 -5
  264. package/lib/examples/ChatExample.js +38 -13
  265. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  266. package/lib/examples/CopilotKitLexicalExample.js +4 -41
  267. package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
  268. package/lib/examples/CopilotKitNotebookExample.js +2 -14
  269. package/lib/examples/DecksAgent.d.ts +21 -0
  270. package/lib/examples/DecksAgent.js +23 -0
  271. package/lib/examples/DocumentPageAgent.d.ts +19 -0
  272. package/lib/examples/DocumentPageAgent.js +15 -0
  273. package/lib/examples/Lexical2Example.d.ts +2 -2
  274. package/lib/examples/Lexical2Example.js +17 -38
  275. package/lib/examples/LexicalAgentExample.d.ts +2 -1
  276. package/lib/examples/LexicalAgentExample.js +29 -102
  277. package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
  278. package/lib/examples/LexicalAgentSidebarExample.js +99 -131
  279. package/lib/examples/LoopShellExample.d.ts +38 -0
  280. package/lib/examples/LoopShellExample.js +68 -0
  281. package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
  282. package/lib/examples/LoopWorkspaceEmbed.js +73 -0
  283. package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
  284. package/lib/examples/LoopWorkspaceExample.js +151 -0
  285. package/lib/examples/NotebookAgentExample.d.ts +13 -0
  286. package/lib/examples/NotebookAgentExample.js +36 -86
  287. package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
  288. package/lib/examples/NotebookAgentSidebarExample.js +39 -83
  289. package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
  290. package/lib/examples/NotebookCollaborationExample.js +108 -20
  291. package/lib/examples/NotebookExample.d.ts +1 -1
  292. package/lib/examples/NotebookExample.js +20 -10
  293. package/lib/examples/NotebookPageAgent.d.ts +23 -0
  294. package/lib/examples/NotebookPageAgent.js +17 -0
  295. package/lib/examples/components/ExampleWrapper.d.ts +5 -0
  296. package/lib/examples/components/ExampleWrapper.js +36 -28
  297. package/lib/examples/components/LexicalEditor.d.ts +1 -1
  298. package/lib/examples/components/LexicalEditor.js +4 -24
  299. package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
  300. package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
  301. package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
  302. package/lib/examples/example-selector.js +26 -6
  303. package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
  304. package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
  305. package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
  306. package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
  307. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
  308. package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
  309. package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
  310. package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
  311. package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
  312. package/lib/examples/index.d.ts +4 -0
  313. package/lib/examples/index.js +6 -0
  314. package/lib/examples/lexical/editorConfig.d.ts +2 -75
  315. package/lib/examples/lexical/editorConfig.js +26 -48
  316. package/lib/examples/lexical/lexical-theme.css +65 -47
  317. package/lib/examples/main.js +450 -322
  318. package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
  319. package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
  320. package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
  321. package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
  322. package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
  323. package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
  324. package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
  325. package/lib/examples/scenes/A2UiViewerScene.js +395 -0
  326. package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
  327. package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
  328. package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
  329. package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
  330. package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
  331. package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
  332. package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
  333. package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
  334. package/lib/examples/utils/exampleSurfaces.js +38 -0
  335. package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
  336. package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
  337. package/lib/examples/utils/localUrl.d.ts +2 -0
  338. package/lib/examples/utils/localUrl.js +49 -0
  339. package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
  340. package/lib/examples/utils/notebookToolbarItems.js +129 -0
  341. package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
  342. package/lib/examples/utils/runtimeTargetStore.js +82 -1
  343. package/lib/examples/utils/themedProvider.d.ts +7 -0
  344. package/lib/examples/utils/themedProvider.js +57 -4
  345. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
  346. package/lib/examples/utils/waitForAgent.d.ts +23 -0
  347. package/lib/examples/utils/waitForAgent.js +24 -0
  348. package/lib/examples2/CellExample.d.ts +1 -1
  349. package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
  350. package/lib/examples2/NotebookExample.d.ts +1 -1
  351. package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
  352. package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
  353. package/lib/examples2/main.js +24 -4
  354. package/lib/extensions/A2UIExtension.d.ts +1 -1
  355. package/lib/hooks/index.d.ts +8 -5
  356. package/lib/hooks/index.js +20 -5
  357. package/lib/hooks/useAgentRuntimes.d.ts +49 -22
  358. package/lib/hooks/useAgentRuntimes.js +214 -90
  359. package/lib/hooks/useAgentsCatalog.js +32 -4
  360. package/lib/hooks/useBrowserAgent.d.ts +26 -0
  361. package/lib/hooks/useBrowserAgent.js +75 -0
  362. package/lib/hooks/useBrowserInference.d.ts +27 -0
  363. package/lib/hooks/useBrowserInference.js +67 -0
  364. package/lib/hooks/useCheckpoints.d.ts +8 -17
  365. package/lib/hooks/useCheckpoints.js +25 -59
  366. package/lib/hooks/useConfig.d.ts +1 -1
  367. package/lib/hooks/useConfig.js +5 -1
  368. package/lib/hooks/useContextSnapshot.d.ts +18 -7
  369. package/lib/hooks/useContextSnapshot.js +14 -10
  370. package/lib/hooks/useNotifications.d.ts +11 -11
  371. package/lib/hooks/useNotifications.js +1 -1
  372. package/lib/hooks/useProjects.d.ts +7 -19
  373. package/lib/hooks/useProjects.js +5 -5
  374. package/lib/hooks/useSkills.d.ts +0 -1
  375. package/lib/hooks/useSkills.js +6 -2
  376. package/lib/hooks/useToolApprovals.d.ts +8 -8
  377. package/lib/hooks/useToolApprovals.js +3 -3
  378. package/lib/identity/AgentIdentity.d.ts +9 -2
  379. package/lib/index.d.ts +1 -0
  380. package/lib/index.js +4 -0
  381. package/lib/jupyter/index.d.ts +2 -1
  382. package/lib/jupyter/index.js +2 -1
  383. package/lib/jupyter/serverExecution.d.ts +78 -0
  384. package/lib/jupyter/serverExecution.js +258 -0
  385. package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
  386. package/lib/jupyter/useResumeServerExecutions.js +64 -0
  387. package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
  388. package/lib/lexical/ChatInlinePlugin.js +0 -36
  389. package/lib/loop/core/focusRequests.d.ts +10 -0
  390. package/lib/loop/core/focusRequests.js +46 -0
  391. package/lib/loop/core/index.d.ts +903 -0
  392. package/lib/loop/core/index.js +264 -0
  393. package/lib/loop/core/promptStore.d.ts +44 -0
  394. package/lib/loop/core/promptStore.js +63 -0
  395. package/lib/loop/core/surfaceRequests.d.ts +33 -0
  396. package/lib/loop/core/surfaceRequests.js +29 -0
  397. package/lib/loop/core/toolbar.d.ts +28 -0
  398. package/lib/loop/core/toolbar.js +59 -0
  399. package/lib/loop/embed/LoopEmbed.d.ts +57 -0
  400. package/lib/loop/embed/LoopEmbed.js +124 -0
  401. package/lib/loop/extensions.d.ts +10 -0
  402. package/lib/loop/extensions.js +49 -0
  403. package/lib/loop/index.d.ts +68 -0
  404. package/lib/loop/index.js +87 -0
  405. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
  406. package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
  407. package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
  408. package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
  409. package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
  410. package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
  411. package/lib/loop/plugins/a2ui/index.d.ts +3 -0
  412. package/lib/loop/plugins/a2ui/index.js +50 -0
  413. package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
  414. package/lib/loop/plugins/a2ui-scene/index.js +28 -0
  415. package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
  416. package/lib/loop/plugins/agent-a2a/index.js +26 -0
  417. package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
  418. package/lib/loop/plugins/agent-a2ui/index.js +42 -0
  419. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
  420. package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
  421. package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
  422. package/lib/loop/plugins/agent-capacity/index.js +52 -0
  423. package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
  424. package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
  425. package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
  426. package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
  427. package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
  428. package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
  429. package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
  430. package/lib/loop/plugins/agent-codemode/index.js +41 -0
  431. package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
  432. package/lib/loop/plugins/agent-compaction/index.js +34 -0
  433. package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
  434. package/lib/loop/plugins/agent-evals/index.js +25 -0
  435. package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
  436. package/lib/loop/plugins/agent-guardrails/index.js +25 -0
  437. package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
  438. package/lib/loop/plugins/agent-hooks/index.js +28 -0
  439. package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
  440. package/lib/loop/plugins/agent-inference/index.js +29 -0
  441. package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
  442. package/lib/loop/plugins/agent-mcp/index.js +25 -0
  443. package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
  444. package/lib/loop/plugins/agent-memory/index.js +25 -0
  445. package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
  446. package/lib/loop/plugins/agent-monitoring/index.js +25 -0
  447. package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
  448. package/lib/loop/plugins/agent-notifications/index.js +25 -0
  449. package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
  450. package/lib/loop/plugins/agent-otel/index.js +25 -0
  451. package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
  452. package/lib/loop/plugins/agent-outputs/index.js +25 -0
  453. package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
  454. package/lib/loop/plugins/agent-parameters/index.js +25 -0
  455. package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
  456. package/lib/loop/plugins/agent-skills/index.js +25 -0
  457. package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
  458. package/lib/loop/plugins/agent-subagents/index.js +25 -0
  459. package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
  460. package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
  461. package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
  462. package/lib/loop/plugins/agent-triggers/index.js +26 -0
  463. package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
  464. package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
  465. package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
  466. package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
  467. package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
  468. package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
  469. package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
  470. package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
  471. package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
  472. package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
  473. package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
  474. package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
  475. package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
  476. package/lib/loop/plugins/agents/SandboxView.js +43 -0
  477. package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
  478. package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
  479. package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
  480. package/lib/loop/plugins/agents/agentIcons.js +88 -0
  481. package/lib/loop/plugins/agents/browserService.d.ts +50 -0
  482. package/lib/loop/plugins/agents/browserService.js +233 -0
  483. package/lib/loop/plugins/agents/index.d.ts +13 -0
  484. package/lib/loop/plugins/agents/index.js +17 -0
  485. package/lib/loop/plugins/agents/plugin.d.ts +91 -0
  486. package/lib/loop/plugins/agents/plugin.js +201 -0
  487. package/lib/loop/plugins/agents/service.d.ts +99 -0
  488. package/lib/loop/plugins/agents/service.js +167 -0
  489. package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
  490. package/lib/loop/plugins/agents/specSubagents.js +33 -0
  491. package/lib/loop/plugins/agents/switchable.d.ts +107 -0
  492. package/lib/loop/plugins/agents/switchable.js +405 -0
  493. package/lib/loop/plugins/agents/team.d.ts +87 -0
  494. package/lib/loop/plugins/agents/team.js +143 -0
  495. package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
  496. package/lib/loop/plugins/agents/useSandboxService.js +36 -0
  497. package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
  498. package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
  499. package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
  500. package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
  501. package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
  502. package/lib/loop/plugins/agentspecs/index.js +63 -0
  503. package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
  504. package/lib/loop/plugins/chat/ChatView.js +1679 -0
  505. package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
  506. package/lib/loop/plugins/chat/chatViewTools.js +92 -0
  507. package/lib/loop/plugins/chat/index.d.ts +111 -0
  508. package/lib/loop/plugins/chat/index.js +143 -0
  509. package/lib/loop/plugins/chat/turnState.d.ts +41 -0
  510. package/lib/loop/plugins/chat/turnState.js +90 -0
  511. package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
  512. package/lib/loop/plugins/chat-extras/index.js +51 -0
  513. package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
  514. package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
  515. package/lib/loop/plugins/chat-header/index.d.ts +3 -0
  516. package/lib/loop/plugins/chat-header/index.js +21 -0
  517. package/lib/loop/plugins/chat-view/index.d.ts +10 -0
  518. package/lib/loop/plugins/chat-view/index.js +29 -0
  519. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
  520. package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
  521. package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
  522. package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
  523. package/lib/loop/plugins/commands/index.d.ts +20 -0
  524. package/lib/loop/plugins/commands/index.js +148 -0
  525. package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
  526. package/lib/loop/plugins/decks/DeckSurface.js +6 -0
  527. package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
  528. package/lib/loop/plugins/decks/DecksMenu.js +42 -0
  529. package/lib/loop/plugins/decks/index.d.ts +19 -0
  530. package/lib/loop/plugins/decks/index.js +133 -0
  531. package/lib/loop/plugins/decks/surface.d.ts +7 -0
  532. package/lib/loop/plugins/decks/surface.js +11 -0
  533. package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
  534. package/lib/loop/plugins/document/DocumentView.js +68 -0
  535. package/lib/loop/plugins/document/index.d.ts +3 -0
  536. package/lib/loop/plugins/document/index.js +86 -0
  537. package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
  538. package/lib/loop/plugins/document/openingDocument.js +122 -0
  539. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
  540. package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
  541. package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
  542. package/lib/loop/plugins/document-toolbar/index.js +35 -0
  543. package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
  544. package/lib/loop/plugins/document-toolbar/names.js +10 -0
  545. package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
  546. package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
  547. package/lib/loop/plugins/document-view/index.d.ts +10 -0
  548. package/lib/loop/plugins/document-view/index.js +28 -0
  549. package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
  550. package/lib/loop/plugins/graph/GraphToggle.js +22 -0
  551. package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
  552. package/lib/loop/plugins/graph/GraphView.js +6 -0
  553. package/lib/loop/plugins/graph/index.d.ts +5 -0
  554. package/lib/loop/plugins/graph/index.js +80 -0
  555. package/lib/loop/plugins/graph/viewType.d.ts +10 -0
  556. package/lib/loop/plugins/graph/viewType.js +14 -0
  557. package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
  558. package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
  559. package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
  560. package/lib/loop/plugins/input-prompt/index.js +26 -0
  561. package/lib/loop/plugins/models/index.d.ts +3 -0
  562. package/lib/loop/plugins/models/index.js +49 -0
  563. package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
  564. package/lib/loop/plugins/notebook/NotebookView.js +189 -0
  565. package/lib/loop/plugins/notebook/index.d.ts +3 -0
  566. package/lib/loop/plugins/notebook/index.js +91 -0
  567. package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
  568. package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
  569. package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
  570. package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
  571. package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
  572. package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
  573. package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
  574. package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
  575. package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
  576. package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
  577. package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
  578. package/lib/loop/plugins/notebook-view/index.js +30 -0
  579. package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
  580. package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
  581. package/lib/loop/plugins/page-layout/index.d.ts +71 -0
  582. package/lib/loop/plugins/page-layout/index.js +160 -0
  583. package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
  584. package/lib/loop/plugins/plugins-panel/index.js +74 -0
  585. package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
  586. package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
  587. package/lib/loop/plugins/prompt/index.d.ts +11 -0
  588. package/lib/loop/plugins/prompt/index.js +73 -0
  589. package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
  590. package/lib/loop/plugins/shell/editorChoice.js +58 -0
  591. package/lib/loop/plugins/shell/index.d.ts +47 -0
  592. package/lib/loop/plugins/shell/index.js +142 -0
  593. package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
  594. package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
  595. package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
  596. package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
  597. package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
  598. package/lib/loop/plugins/subagent-activity/index.js +42 -0
  599. package/lib/loop/plugins/view-switch/index.d.ts +46 -0
  600. package/lib/loop/plugins/view-switch/index.js +68 -0
  601. package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
  602. package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
  603. package/lib/loop/plugins/window-frame/index.d.ts +6 -0
  604. package/lib/loop/plugins/window-frame/index.js +79 -0
  605. package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
  606. package/lib/loop/plugins/window-frame/slots.js +30 -0
  607. package/lib/loop/presets.d.ts +181 -0
  608. package/lib/loop/presets.js +141 -0
  609. package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
  610. package/lib/loop/shell/LoopWorkspace.js +231 -0
  611. package/lib/loop/shell/PluginToggles.d.ts +21 -0
  612. package/lib/loop/shell/PluginToggles.js +41 -0
  613. package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
  614. package/lib/loop/shell/ViewSwitcher.js +43 -0
  615. package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
  616. package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
  617. package/lib/loop/shell/index.d.ts +10 -0
  618. package/lib/loop/shell/index.js +14 -0
  619. package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
  620. package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
  621. package/lib/loop-example-main.d.ts +1 -0
  622. package/lib/loop-example-main.js +42 -0
  623. package/lib/loop-main.d.ts +1 -0
  624. package/lib/loop-main.js +138 -0
  625. package/lib/mcp/McpServerManager.d.ts +1 -1
  626. package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
  627. package/lib/models/CodeSandboxVariant.d.ts +13 -5
  628. package/lib/models/CodeSandboxVariant.js +17 -5
  629. package/lib/models/Content.d.ts +26 -0
  630. package/lib/models/Deck.d.ts +14 -0
  631. package/lib/models/Environment.d.ts +678 -5
  632. package/lib/models/Environment.js +12 -1
  633. package/lib/models/EnvironmentDTO.d.ts +24 -6
  634. package/lib/models/EnvironmentDTO.js +13 -2
  635. package/lib/models/Exercise.d.ts +0 -2
  636. package/lib/models/ItemType.d.ts +1 -1
  637. package/lib/models/Library.d.ts +0 -2
  638. package/lib/models/Notebook.d.ts +0 -2
  639. package/lib/models/ProjectDTO.d.ts +2 -2
  640. package/lib/models/ProjectDTO.js +4 -4
  641. package/lib/models/Runtime.d.ts +17 -11
  642. package/lib/models/RuntimeDTO.d.ts +16 -7
  643. package/lib/models/RuntimeDTO.js +9 -9
  644. package/lib/models/Space.d.ts +10 -0
  645. package/lib/models/Space.js +1 -1
  646. package/lib/models/SpaceDTO.d.ts +1 -1
  647. package/lib/models/SpaceItem.d.ts +2 -2
  648. package/lib/models/environments.generated.d.ts +141 -0
  649. package/lib/models/environments.generated.js +13 -0
  650. package/lib/models/index.d.ts +1 -1
  651. package/lib/models/index.js +1 -1
  652. package/lib/protocols/A2AAdapter.d.ts +39 -6
  653. package/lib/protocols/A2AAdapter.js +180 -11
  654. package/lib/protocols/ACPAdapter.js +40 -37
  655. package/lib/protocols/AGUIAdapter.d.ts +14 -0
  656. package/lib/protocols/AGUIAdapter.js +34 -9
  657. package/lib/protocols/BrowserAgentAdapter.d.ts +125 -0
  658. package/lib/protocols/BrowserAgentAdapter.js +317 -0
  659. package/lib/protocols/VercelAIAdapter.d.ts +10 -0
  660. package/lib/protocols/VercelAIAdapter.js +27 -7
  661. package/lib/protocols/index.d.ts +1 -0
  662. package/lib/protocols/index.js +1 -0
  663. package/lib/runtimes/actions.d.ts +8 -3
  664. package/lib/runtimes/actions.js +46 -14
  665. package/lib/runtimes/apis.d.ts +13 -4
  666. package/lib/runtimes/browser/agent.d.ts +54 -0
  667. package/lib/runtimes/browser/agent.js +63 -0
  668. package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
  669. package/lib/runtimes/browser/anonymousToken.js +300 -0
  670. package/lib/runtimes/browser/frontendTools.d.ts +61 -0
  671. package/lib/runtimes/browser/frontendTools.js +152 -0
  672. package/lib/runtimes/browser/index.d.ts +11 -0
  673. package/lib/runtimes/browser/index.js +20 -0
  674. package/lib/runtimes/browser/model.d.ts +52 -0
  675. package/lib/runtimes/browser/model.js +110 -0
  676. package/lib/runtimes/browser/protocol.d.ts +54 -0
  677. package/lib/runtimes/browser/protocol.js +35 -0
  678. package/lib/runtimes/browser/subagents.d.ts +131 -0
  679. package/lib/runtimes/browser/subagents.js +241 -0
  680. package/lib/runtimes/index.d.ts +3 -0
  681. package/lib/runtimes/index.js +3 -0
  682. package/lib/runtimes/lifecycle.d.ts +76 -0
  683. package/lib/runtimes/lifecycle.js +99 -0
  684. package/lib/runtimes/variants.d.ts +172 -0
  685. package/lib/runtimes/variants.js +187 -0
  686. package/lib/services/reconnectToRuntime.d.ts +2 -2
  687. package/lib/services/reconnectToRuntime.js +3 -3
  688. package/lib/services/sandboxServiceManagers.d.ts +2 -2
  689. package/lib/services/sandboxServiceManagers.js +11 -11
  690. package/lib/specs/agents/agents.d.ts +129 -112
  691. package/lib/specs/agents/agents.js +8200 -5044
  692. package/lib/specs/evals.js +9 -0
  693. package/lib/specs/frontendTools.d.ts +4 -0
  694. package/lib/specs/frontendTools.js +77 -3
  695. package/lib/specs/mcpServers.d.ts +1 -0
  696. package/lib/specs/mcpServers.js +38 -15
  697. package/lib/specs/models.d.ts +18 -0
  698. package/lib/specs/models.js +154 -0
  699. package/lib/specs/outputs.d.ts +2 -0
  700. package/lib/specs/outputs.js +31 -0
  701. package/lib/specs/personas.js +1 -1
  702. package/lib/specs/skills.js +7 -7
  703. package/lib/specs/teams/teams.d.ts +2 -0
  704. package/lib/specs/teams/teams.js +628 -111
  705. package/lib/state/index.d.ts +1 -1
  706. package/lib/state/index.js +1 -1
  707. package/lib/state/substates/RuntimesState.d.ts +5 -5
  708. package/lib/state/substates/RuntimesState.js +14 -14
  709. package/lib/state/substates/index.d.ts +1 -1
  710. package/lib/state/substates/index.js +1 -1
  711. package/lib/stores/agentRuntimeStore.d.ts +43 -1
  712. package/lib/stores/agentRuntimeStore.js +100 -11
  713. package/lib/stores/index.d.ts +1 -1
  714. package/lib/stores/index.js +1 -1
  715. package/lib/stories/Button.d.ts +1 -1
  716. package/lib/stories/Button.stories.d.ts +1 -1
  717. package/lib/stories/Header.d.ts +1 -1
  718. package/lib/stories/Header.stories.d.ts +1 -1
  719. package/lib/test-setup.js +66 -0
  720. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
  721. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
  722. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
  723. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
  724. package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
  725. package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
  726. package/lib/tools/adapters/commands/index.d.ts +1 -0
  727. package/lib/tools/adapters/commands/index.js +5 -0
  728. package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
  729. package/lib/tools/index.d.ts +1 -0
  730. package/lib/tools/index.js +1 -0
  731. package/lib/types/a2a.d.ts +15 -1
  732. package/lib/types/agents-lifecycle.d.ts +11 -6
  733. package/lib/types/agents.d.ts +31 -6
  734. package/lib/types/agentspecs.d.ts +120 -4
  735. package/lib/types/chat.d.ts +251 -3
  736. package/lib/types/checkpoints.d.ts +20 -0
  737. package/lib/types/config.d.ts +13 -1
  738. package/lib/types/connection.d.ts +1 -1
  739. package/lib/types/evals.d.ts +2 -0
  740. package/lib/types/messages.d.ts +60 -0
  741. package/lib/types/models.d.ts +26 -0
  742. package/lib/types/notifications.d.ts +15 -6
  743. package/lib/types/outputs.d.ts +2 -0
  744. package/lib/types/protocol.d.ts +7 -2
  745. package/lib/types/stream.d.ts +48 -3
  746. package/lib/types/stream.js +5 -0
  747. package/lib/types/teams.d.ts +102 -4
  748. package/lib/types/tool-approvals.d.ts +1 -1
  749. package/lib/types/tools.d.ts +8 -2
  750. package/lib/utils/utils.js +7 -1
  751. package/package.json +376 -361
  752. package/scripts/codegen/compose.py +208 -0
  753. package/scripts/codegen/generate_agents.py +202 -31
  754. package/scripts/codegen/generate_evals.py +2 -0
  755. package/scripts/codegen/generate_frontend_tools.py +35 -6
  756. package/scripts/codegen/generate_mcp_servers.py +2 -2
  757. package/scripts/codegen/generate_models.py +40 -15
  758. package/scripts/codegen/generate_outputs.py +2 -0
  759. package/scripts/codegen/generate_sandbox_agents.py +76 -62
  760. package/scripts/codegen/generate_skills.py +2 -2
  761. package/scripts/codegen/generate_teams.py +178 -4
  762. package/scripts/codegen/generate_tools.py +6 -4
  763. package/scripts/gen_workers.py +278 -110
  764. package/scripts/generate-environments-types.py +404 -0
  765. package/lib/chat/prompt/InputFooter.d.ts +0 -58
  766. package/lib/chat/prompt/InputFooter.js +0 -194
  767. package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
  768. package/lib/chat/prompt/InputPromptFooter.js +0 -15
  769. package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
  770. package/lib/chat/prompt/InputPromptHeader.js +0 -15
  771. package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
  772. package/lib/hooks/useRuntimes.d.ts +0 -5
  773. package/lib/hooks/useRuntimes.js +0 -34
  774. package/lib/jupyter/kernelsHandler.d.ts +0 -8
  775. package/lib/jupyter/kernelsHandler.js +0 -39
  776. package/lib/models/Dataset.d.ts +0 -16
  777. package/lib/utils/Cells.d.ts +0 -2
  778. package/lib/utils/Cells.js +0 -28
  779. /package/lib/models/{Dataset.js → Deck.js} +0 -0
@@ -0,0 +1,903 @@
1
+ import type { ReadonlySignal } from '@datalayer/reactor';
2
+ import type { ComponentType, ReactNode } from 'react';
3
+ import type { ExecutionState } from '@datalayer/jupyter-react/kernel-indicator';
4
+ import type { ToolbarItem } from '@datalayer/primer-addons';
5
+ import type { FrontendToolDefinition } from '../../types/tools';
6
+ import type { ContextSnapshotData } from '../../types/context';
7
+ /** Lifecycle of the sandbox a workspace is attached to. */
8
+ export type SandboxState = 'idle' | 'starting' | 'running' | 'stopping' | 'error';
9
+ /** What the workspace knows about the sandbox behind it. */
10
+ export type SandboxSnapshot = {
11
+ state: SandboxState;
12
+ /**
13
+ * Why, when the state is `error`.
14
+ *
15
+ * Carried because `error` on its own is the least useful thing a sandbox
16
+ * can say: the indicator drew "connected-dead" with every field unknown,
17
+ * which tells a reader that something is wrong and nothing about what.
18
+ * Whoever sets the state knows the reason; this is where it travels.
19
+ */
20
+ errorReason?: string;
21
+ variant?: string;
22
+ kernelId?: string;
23
+ jupyterUrl?: string;
24
+ /**
25
+ * The token that server wants, when it wants one.
26
+ *
27
+ * Carried beside the URL because the two are useless apart: a notebook
28
+ * pointed at a tokened Jupyter server without its token is refused at the
29
+ * first request, and the visible symptom is a cell that runs and produces
30
+ * nothing rather than an error anybody can act on.
31
+ */
32
+ jupyterToken?: string;
33
+ /**
34
+ * Where it runs, as the sandbox plugin names it.
35
+ *
36
+ * Part of the snapshot rather than read from a signal, because this is the
37
+ * path that already re-renders whoever is watching: the workspace holds the
38
+ * snapshot in state, so a plugin asking "is there an agent here?" gets a
39
+ * fresh answer when the target moves instead of a stale closure.
40
+ */
41
+ target?: string;
42
+ /**
43
+ * The agent-runtimes server backing this sandbox, when it is not the host's.
44
+ *
45
+ * A Datalayer runtime brings its own: the agent runs on the pod, not on the
46
+ * server the workspace was opened against, so a chat addressed at
47
+ * `workspace.serverUrl` would be talking to the wrong machine. Absent for
48
+ * every other target, where the two are the same thing.
49
+ */
50
+ agentBaseUrl?: string;
51
+ };
52
+ /**
53
+ * What a view reads while the sandbox plugin is absent.
54
+ *
55
+ * Every plugin that watches the sandbox has to call `useSignalValue`
56
+ * unconditionally — the plugin can be switched off from the sidebar, and hook
57
+ * order cannot depend on that — so each needs something signal-shaped to read
58
+ * instead. They used to declare their own, and all four made the same mistake:
59
+ * building the value inside `peek()`.
60
+ *
61
+ * `useSignalValue` is a `useSyncExternalStore`, so `peek()` *is* the snapshot
62
+ * and React compares it by identity. A fresh object per call means the snapshot
63
+ * never settles, and the page re-renders without bound — React says "the result
64
+ * of getSnapshot should be cached", and then a nested-update overflow surfaces
65
+ * wherever the fiftieth render happens to land, which is nowhere near here.
66
+ *
67
+ * So: one frozen value, read by every caller. Typed rather than cast, because
68
+ * the `as never` the four copies used is exactly what let the wrong shape
69
+ * through without a word from the compiler.
70
+ */
71
+ export declare const IDLE_SANDBOX_SNAPSHOT: SandboxSnapshot;
72
+ /** {@link IDLE_SANDBOX_SNAPSHOT}, shaped as a signal to be read like one. */
73
+ export declare const IDLE_SANDBOX_SNAPSHOT_SIGNAL: ReadonlySignal<SandboxSnapshot>;
74
+ /**
75
+ * The target read while the sandbox plugin is absent.
76
+ *
77
+ * Typed as `undefined` rather than `string | undefined` so that
78
+ * `service?.target ?? IDLE_SANDBOX_TARGET_SIGNAL` keeps whatever the service
79
+ * says a target is: widening it here would quietly turn every caller's
80
+ * `SandboxTarget` into a bare string.
81
+ */
82
+ export declare const IDLE_SANDBOX_TARGET_SIGNAL: ReadonlySignal<undefined>;
83
+ /**
84
+ * The id the workspace's surfaces are known by.
85
+ *
86
+ * One expression in one place, because three things have to agree on it: the
87
+ * notebook that renders, the document that renders, and the frontend tools an
88
+ * in-page agent is given to reach them. A tool addressed to a different id than
89
+ * the surface on screen edits nothing and reports success, which is the worst
90
+ * way for this to be wrong.
91
+ *
92
+ * Keyed on the *session*, never on the agent. Keying it on the agent meant
93
+ * every switch renamed the surface, and a renamed surface is a new one: the
94
+ * notebook remounted empty, so changing who you were talking to silently threw
95
+ * away the work you were talking about. The notebook belongs to the workspace;
96
+ * the agent is only a visitor to it.
97
+ */
98
+ export declare function loopSurfaceId(sessionId: string | undefined): string;
99
+ /**
100
+ * What a view or a command is allowed to know about the session it runs in.
101
+ *
102
+ * Deliberately small: a plugin that needs more should get it from the plugin
103
+ * that owns it (the sandbox service, the agent service), not from a context
104
+ * object that grows to mean everything.
105
+ */
106
+ export type LoopWorkspaceContext = {
107
+ /** Base URL of the agent-runtimes server backing this session. */
108
+ serverUrl: string;
109
+ /** Agent spec bound to the session. */
110
+ agentId: string;
111
+ /**
112
+ * Point the session at a different agent.
113
+ *
114
+ * For whichever plugin offers the choice. It used to keep the new name in
115
+ * its own state, which changed the label and nothing else: everything that
116
+ * matters — the chat's endpoint, the sandbox connection, the notebook's id —
117
+ * reads `agentId` from here, so a switch that does not reach this context is
118
+ * a switch that did not happen.
119
+ */
120
+ setAgentId: (agentId: string) => void;
121
+ /** Conversation being continued, when there is one. */
122
+ conversationId?: string;
123
+ /**
124
+ * The id the notebook and the document on screen are addressed by.
125
+ *
126
+ * Fixed for the life of the workspace, so it survives an agent switch — see
127
+ * `loopSurfaceId`. Read this rather than deriving one, or the tools an agent
128
+ * is handed will address a surface nobody is looking at.
129
+ */
130
+ surfaceId: string;
131
+ /** Active model id, as an agentspecs catalog id. */
132
+ model?: string;
133
+ /** The sandbox, as last reported. */
134
+ sandbox: SandboxSnapshot;
135
+ /**
136
+ * For whichever plugin owns the sandbox to keep the workspace informed.
137
+ *
138
+ * The shell does not know which plugin that is — it just needs the value,
139
+ * because `canOpen` gates are asked about the live workspace and a stale
140
+ * snapshot would grey out a notebook that has a perfectly good kernel.
141
+ */
142
+ setSandbox: (sandbox: SandboxSnapshot) => void;
143
+ /** Which view is on screen. */
144
+ activeViewType: string;
145
+ /** Put another view on screen. */
146
+ setActiveViewType: (viewType: string) => void;
147
+ /** Prompts typed by whoever renders the prompt, for whichever view answers. */
148
+ prompts: PromptChannel;
149
+ /**
150
+ * Run what a person typed: a slash command when it is one, the prompt
151
+ * channel otherwise.
152
+ *
153
+ * The prompt is not the shell's any more — the chat plugin renders it — but
154
+ * dispatch still belongs to the workspace, which is the only thing that can
155
+ * see every command every plugin contributed. A plugin rendering a prompt
156
+ * calls this and shows whatever comes back.
157
+ */
158
+ submit: (message: string) => Promise<SubmitOutcome>;
159
+ /** What the active view is doing, as it last reported. */
160
+ viewControls: ViewControls;
161
+ /** For a view to report itself. Pass `null` on unmount. */
162
+ setViewControls: (controls: ViewControls | null) => void;
163
+ /**
164
+ * Whatever the host wants in the chat's title bar.
165
+ *
166
+ * The plugin road to the same place is `LoopSlots.chatHeader`, and it is the
167
+ * better one for anything that belongs to a capability. This is for the host
168
+ * that is embedding the workspace and has one button to add — a page that
169
+ * mounts `LoopWorkspace` should not have to write a plugin to put an icon
170
+ * next to the agent's name.
171
+ *
172
+ * Rendered before the chat's own controls, so the host's additions read as
173
+ * part of the page and the chat's stay together at the trailing edge.
174
+ */
175
+ chatHeaderActions?: ReactNode;
176
+ };
177
+ /**
178
+ * How a prompt typed in the shell reaches whatever should answer it.
179
+ *
180
+ * The prompt belongs to the shell and the answer belongs to a view, so
181
+ * something has to carry a message across without the shell knowing which
182
+ * plugin is listening. A channel does that in both directions: the shell
183
+ * publishes, a mounted view subscribes, and neither imports the other.
184
+ */
185
+ export type PromptChannel = {
186
+ /** Publish a prompt. Returns whether anything was listening. */
187
+ submit: (message: string) => boolean;
188
+ /** Listen for prompts. Returns an unsubscribe. */
189
+ subscribe: (listener: (message: string) => void) => () => void;
190
+ };
191
+ /** Create a prompt channel. The shell owns one per workspace. */
192
+ export declare function createPromptChannel(): PromptChannel;
193
+ /**
194
+ * What the active view tells the shell about itself.
195
+ *
196
+ * The prompt lives in the shell but the work happens in a view, so the spinner
197
+ * and the stop button would otherwise be in the wrong place: a chat streaming a
198
+ * reply, a notebook running a cell and a sandbox starting up all need the same
199
+ * two facts said the same way.
200
+ */
201
+ export type ViewControls = {
202
+ /** Whether the view is working on something. */
203
+ busy?: boolean;
204
+ /** How to stop it, when it can be stopped. */
205
+ stop?: () => void;
206
+ /** Start the view's work over — the chat resets its conversation. */
207
+ newChat?: () => void;
208
+ };
209
+ /** Props every view receives. */
210
+ export type LoopViewProps = {
211
+ viewType: string;
212
+ workspace: LoopWorkspaceContext;
213
+ };
214
+ /** A view the workspace may open. */
215
+ export type ViewTypeContribution = {
216
+ /** Stable id: 'chat' | 'notebook' | 'document' | 'sandbox' | 'a2ui'. */
217
+ viewType: string;
218
+ title: string;
219
+ /** Drawn beside the title in the switcher. Any component: an octicon,
220
+ * a Datalayer icon, or something a plugin brings itself. */
221
+ icon?: ComponentType<any>;
222
+ /** Ordering in the view switcher. Lower is earlier. */
223
+ order?: number;
224
+ /**
225
+ * Whether the view can be opened right now, judged against the live
226
+ * workspace. A notebook says "only with a running sandbox"; the reactor
227
+ * holds no opinion about it, and neither does the switcher.
228
+ */
229
+ canOpen?: (workspace: LoopWorkspaceContext) => boolean;
230
+ /**
231
+ * Why it cannot be opened, for a disabled tab's tooltip. A tab that is
232
+ * greyed out with no explanation is worse than no tab.
233
+ */
234
+ unavailableReason?: (workspace: LoopWorkspaceContext) => string;
235
+ /**
236
+ * Lazy module. Non-negotiable: the document view pulls
237
+ * `@datalayer/jupyter-lexical` and its Lumino side effects, and must not be
238
+ * in the shell's bundle until someone opens it.
239
+ */
240
+ load: () => Promise<{
241
+ default: ComponentType<LoopViewProps>;
242
+ }>;
243
+ };
244
+ /**
245
+ * What running a typed message did.
246
+ *
247
+ * `handled` distinguishes the two silences: a command that ran and printed
248
+ * nothing, and a prompt nobody was listening for. Only the second is worth
249
+ * telling the person about.
250
+ */
251
+ export type SubmitOutcome = {
252
+ /** Whether anything took the message — a command, or a listening view. */
253
+ handled: boolean;
254
+ /** The command's name, when it was one. */
255
+ command?: string;
256
+ /** What the command returned, for the caller to render. */
257
+ result?: CommandResult;
258
+ /** Why it was not handled, in the person's terms. */
259
+ reason?: string;
260
+ };
261
+ /** What a command run produces. */
262
+ export type CommandResult = {
263
+ /** Rendered by the shell as a transient panel. */
264
+ content?: unknown;
265
+ /** Sent to the agent as if the user had typed it. */
266
+ prompt?: string;
267
+ };
268
+ /** One argument of a command, for completion in either front-end. */
269
+ export type CommandArgSpec = {
270
+ name: string;
271
+ description?: string;
272
+ required?: boolean;
273
+ choices?: readonly string[] | (() => readonly string[] | Promise<readonly string[]>);
274
+ };
275
+ /** What a command is given when it runs. */
276
+ export type LoopCommandContext = {
277
+ workspace: LoopWorkspaceContext;
278
+ /** The raw text after the command name. */
279
+ argv: string;
280
+ };
281
+ /**
282
+ * A slash command. Mirrored one-for-one by `SlashCommandSpec` in Python, so a
283
+ * command is described the same way in the terminal and here even when the two
284
+ * implementations differ — a Rich panel there, a React panel here.
285
+ */
286
+ export type CommandContribution = {
287
+ name: string;
288
+ aliases?: readonly string[];
289
+ description: string;
290
+ /** Grouping in `/help`. */
291
+ group?: string;
292
+ /**
293
+ * A keystroke that runs it, written once for every platform.
294
+ *
295
+ * `'Mod+Alt+G'` is ⌘⌥G on a Mac and Ctrl+Alt+G elsewhere. Optional, and most
296
+ * commands have none: a slash command is reached by typing its name, and a
297
+ * shortcut is worth spending only on the few things somebody does often.
298
+ *
299
+ * Bound by whichever surface owns the keyboard — the command palette, when
300
+ * it is mounted. The Python side has no equivalent because a terminal has no
301
+ * keystrokes to give away.
302
+ */
303
+ keybinding?: string;
304
+ args?: readonly CommandArgSpec[];
305
+ run: (ctx: LoopCommandContext) => Promise<CommandResult | void>;
306
+ };
307
+ /** A candidate offered by an `@` namespace. */
308
+ export type MentionCandidate = {
309
+ id: string;
310
+ label: string;
311
+ description?: string;
312
+ emoji?: string;
313
+ };
314
+ /** What a resolved mention adds to the turn. */
315
+ export type MentionBinding = {
316
+ /** Text substituted into the prompt. */
317
+ text: string;
318
+ /** Anything the shell should attach to the turn (a delegate, context). */
319
+ payload?: unknown;
320
+ };
321
+ /** An `@` namespace: `@agent` first, `@file` and `@cell` later. */
322
+ export type MentionContribution = {
323
+ namespace: string;
324
+ trigger?: string;
325
+ list: (workspace: LoopWorkspaceContext, query: string) => Promise<readonly MentionCandidate[]>;
326
+ resolve: (workspace: LoopWorkspaceContext, id: string) => Promise<MentionBinding>;
327
+ };
328
+ /**
329
+ * An editor the chat can host beside the conversation.
330
+ *
331
+ * A notebook and a document are not alternatives *to* the chat — they are what
332
+ * the conversation is about, and a person reading a reply wants the cell it
333
+ * just changed in view, not one tab away. So they are contributed to the chat
334
+ * rather than to the workspace, and the chat decides where they sit.
335
+ *
336
+ * The shape is deliberately close to `ViewTypeContribution`: the same gating,
337
+ * the same lazy `load`, so a plugin author who has written one has written the
338
+ * other.
339
+ */
340
+ export type ChatSurfaceContribution = {
341
+ /** Stable id: 'notebook' | 'document'. */
342
+ surfaceId: string;
343
+ title: string;
344
+ icon?: ComponentType<any>;
345
+ /** Ordering in the chat's surface picker. Lower is earlier. */
346
+ order?: number;
347
+ /** Whether it can be opened right now, judged against the live workspace. */
348
+ canOpen?: (workspace: LoopWorkspaceContext) => boolean;
349
+ /** Why it cannot be, for the disabled control's tooltip. */
350
+ unavailableReason?: (workspace: LoopWorkspaceContext) => string;
351
+ /** Lazy module, for the same reason views are lazy. */
352
+ load: () => Promise<{
353
+ default: ComponentType<ChatSurfaceProps>;
354
+ }>;
355
+ };
356
+ /** Props a chat surface receives. */
357
+ export type ChatSurfaceProps = {
358
+ surfaceId: string;
359
+ workspace: LoopWorkspaceContext;
360
+ };
361
+ /** Views the workspace may open. */
362
+ export declare const LoopViewType: import("@datalayer/reactor").ContributionPoint<ViewTypeContribution>;
363
+ /** Editors the chat hosts beside the conversation. */
364
+ /**
365
+ * Editors the shell hosts beside the conversation.
366
+ *
367
+ * Owned by the shell plugin, not the chat: which editors exist is a fact
368
+ * about the workspace, and the segmented control that offers them shows
369
+ * nothing at all until a plugin contributes one. The chat renders the chosen
370
+ * editor's column, but the choice is the shell's.
371
+ *
372
+ * `LoopChatSurface` is the same point under its historical name, kept so
373
+ * nothing that contributed to it has to move in the same commit.
374
+ */
375
+ export declare const LoopEditorView: import("@datalayer/reactor").ContributionPoint<ChatSurfaceContribution>;
376
+ /** @deprecated Use {@link LoopEditorView}: the shell owns the point now. */
377
+ export declare const LoopChatSurface: import("@datalayer/reactor").ContributionPoint<ChatSurfaceContribution>;
378
+ /** The shape an editor contributes — one view in the shell's editor point. */
379
+ export type EditorViewContribution = ChatSurfaceContribution;
380
+ /**
381
+ * Frontend tools the chat hands its agent.
382
+ *
383
+ * Opened by the chat plugin, filled by whoever owns a capability: the
384
+ * notebook contributes its cell tools, the document its lexical ones, and a
385
+ * host plugin can add its own. The factory runs against the live workspace,
386
+ * so a tool addressed by `surfaceId` binds to the session on screen.
387
+ */
388
+ export type FrontendToolContribution = {
389
+ /** Stable id, for the registry and the graph. */
390
+ id: string;
391
+ /** Build the tools for this workspace. Called on mount and agent switch. */
392
+ tools: (workspace: LoopWorkspaceContext) => FrontendToolDefinition[];
393
+ /**
394
+ * Whether these tools stay in the chat view — the conversation alone, no
395
+ * editor on screen. Off by default: the chat view withholds tools that
396
+ * change a notebook or a document the reader cannot see. A contribution
397
+ * whose tools touch no editor — a deck the agent makes, say — says so here.
398
+ */
399
+ chatView?: boolean;
400
+ };
401
+ export declare const LoopFrontendTool: import("@datalayer/reactor").ContributionPoint<FrontendToolContribution>;
402
+ /**
403
+ * The composer — the input prompt — arriving as a plugin.
404
+ *
405
+ * The chat view *assembles* everything the composer needs (the draft, the
406
+ * send handler, the menus' data, the placement) and hands it over; the
407
+ * plugin owns the component that renders it. Split this way round because
408
+ * the wiring is the chat's knowledge and the surface is the plugin's: a
409
+ * host can replace the composer's face without re-deriving a single query,
410
+ * and unticking the input-prompt plugin removes the composer the way
411
+ * unticking the notebook removes the editor.
412
+ */
413
+ export type LoopChatComposerProps = {
414
+ workspace: LoopWorkspaceContext;
415
+ /** The standard composer's props, fully assembled by the chat view. */
416
+ composer: import('../../chat/prompt/InputPrompt').InputPromptProps;
417
+ };
418
+ export type ChatComposerContribution = {
419
+ /** Stable id, for the registry and the graph. */
420
+ id: string;
421
+ Component: ComponentType<LoopChatComposerProps>;
422
+ };
423
+ export declare const LoopChatComposer: import("@datalayer/reactor").ContributionPoint<ChatComposerContribution>;
424
+ /**
425
+ * The chat's title bar, arriving as a plugin.
426
+ *
427
+ * Same shape as the composer point: the chat assembles the header's full
428
+ * props — title, kernel indicator, runtime status, the actions row — and the
429
+ * plugin renders them, by default with the standard `ChatBaseHeader`. No
430
+ * contribution, no title bar.
431
+ */
432
+ export type LoopChatHeaderProps = {
433
+ workspace: LoopWorkspaceContext;
434
+ /** The standard header's props, fully assembled by the chat. */
435
+ header: import('../../chat/header/ChatHeaderBase').ChatBaseHeaderProps;
436
+ };
437
+ export type ChatHeaderContribution = {
438
+ /** Stable id, for the registry and the graph. */
439
+ id: string;
440
+ Component: ComponentType<LoopChatHeaderProps>;
441
+ };
442
+ export declare const LoopChatHeader: import("@datalayer/reactor").ContributionPoint<ChatHeaderContribution>;
443
+ /**
444
+ * The agent a capacity plugin wants the workspace to run.
445
+ *
446
+ * A capacity plugin — codemode, hooks, guardrails — is a statement about
447
+ * *which agent* answers and *how it is created*: an agentspec id and the
448
+ * create-payload details the server needs. Contributed here rather than
449
+ * configured on the agents plugin, so mounting the capacity is the whole
450
+ * gesture: the agents plugin reads the first blueprint when its Local
451
+ * target creates the agent, and a workspace with no blueprint behaves as
452
+ * before. The workspace's `agentId` still names the instance; the blueprint
453
+ * says what that instance is made from.
454
+ */
455
+ export type AgentBlueprintContribution = {
456
+ /** Stable id, for the registry and the graph. */
457
+ id: string;
458
+ /** The agentspec the agent is created from. */
459
+ specId?: string;
460
+ /** Extra fields merged into the server's create-agent payload. */
461
+ createPayload?: Record<string, unknown>;
462
+ };
463
+ export declare const LoopAgentBlueprint: import("@datalayer/reactor").ContributionPoint<AgentBlueprintContribution>;
464
+ /** One conversation opener a plugin offers on the empty chat. */
465
+ export type ChatSuggestionItem = {
466
+ /** The chip's words. */
467
+ text: string;
468
+ /** What is submitted; the chip's words when absent. */
469
+ message?: string;
470
+ emoji?: string;
471
+ };
472
+ /**
473
+ * Conversation openers, contributed ahead of the spec's own.
474
+ *
475
+ * A capacity plugin knows what its agent is worth asking; when anything is
476
+ * contributed here the chat shows it instead of the spec's generic list.
477
+ */
478
+ export type ChatSuggestionContribution = {
479
+ /** Stable id, for the registry and the graph. */
480
+ id: string;
481
+ suggestions: ChatSuggestionItem[];
482
+ };
483
+ export declare const LoopChatSuggestion: import("@datalayer/reactor").ContributionPoint<ChatSuggestionContribution>;
484
+ /**
485
+ * The per-example chat extras a host feeds the loop's conversation live.
486
+ *
487
+ * An example that keeps its bespoke panels around a `LoopEmbed` still has
488
+ * things to say to the chat *column* — an error banner it computes from its
489
+ * own state, the codemode toggle and the MCP/codemode status the footer
490
+ * shows. These change over the life of the page, so the contribution carries
491
+ * a **signal** rather than a value: the example updates `.value`, and the
492
+ * chat view re-renders through `useSignalValue`. `createChatExtrasPlugin`
493
+ * builds the plugin and hands back the setter.
494
+ */
495
+ export type LoopChatExtrasValue = {
496
+ /** A banner drawn above the transcript — the example's own diagnostics. */
497
+ errorBanner?: {
498
+ message: string;
499
+ variant: 'danger' | 'warning';
500
+ };
501
+ /** Whether the codemode toggle in the footer reads as on. */
502
+ codemodeEnabled?: boolean;
503
+ /** Called when the reader flips the codemode toggle. */
504
+ onToggleCodemode?: (enabled: boolean) => void | Promise<void>;
505
+ /** Live MCP toolset status for the footer indicator. */
506
+ mcpStatusData?: import('../../types/mcp').McpToolsetsStatusResponse | null;
507
+ /** Live codemode status for the footer indicator. */
508
+ codemodeStatusData?: import('../../types/stream').CodemodeStatusData | null;
509
+ /**
510
+ * A custom renderer for tool results in the transcript.
511
+ *
512
+ * For an example whose demonstration *is* how a tool result is drawn — the
513
+ * A2UI examples render their agent's surface here. Wins over the notebook
514
+ * tool-surface rendering when set. See `ChatBase.renderToolResult`.
515
+ */
516
+ renderToolResult?: import('../../types/chat').RenderToolResult;
517
+ /**
518
+ * Extra frontend tools the agent may call, from the host example.
519
+ *
520
+ * Folded into the loop's frontend-tool set alongside the notebook and
521
+ * document tools (first name wins). For an example whose demo is a bespoke
522
+ * client tool — A2UI Jupyter Output's `run_jupyter_output_demo`.
523
+ */
524
+ frontendTools?: FrontendToolDefinition[];
525
+ /**
526
+ * Take the composer off the screen, live.
527
+ *
528
+ * The chat plugin's `hidePrompt` is configuration — set once when the
529
+ * reactor is built. This is the same switch as a signal, for a host whose
530
+ * page changes what owns the typing while the workspace is running: a
531
+ * landing page that swaps the prompt for a connection panel when the
532
+ * visitor chooses to bring their own agent, without rebuilding the reactor
533
+ * and losing the notebook the visitor was just working in.
534
+ */
535
+ hidePrompt?: boolean;
536
+ /**
537
+ * Whether the composer draws its usage band — context, session, turn.
538
+ * True unless a host says otherwise: a public page turns the counters off,
539
+ * because they answer questions a visitor is not asking.
540
+ */
541
+ showTokenUsage?: boolean;
542
+ /**
543
+ * Openers the host has taken off its page, by their words.
544
+ *
545
+ * A team's spec offers the requests its members answer; a page that
546
+ * mounts the team without one member's tools — a landing page with no
547
+ * decks plugin — would otherwise offer a chip that leads nowhere. Matched
548
+ * on the chip's text, which is how the chat tells openers apart already.
549
+ */
550
+ hiddenOpeners?: string[];
551
+ /**
552
+ * Told what the agent has used, each time the chat learns it.
553
+ *
554
+ * The composer's usage band is for a reader who wants the numbers in the
555
+ * chat. A host that draws its own — a landing page counting what a
556
+ * question cost under the notebook it was asked in — needs the same
557
+ * snapshot outside the chat, without turning the band back on. Called with
558
+ * every snapshot the chat receives, `undefined` included.
559
+ */
560
+ onUsage?: (snapshot: ContextSnapshotData | undefined) => void;
561
+ };
562
+ export type ChatExtrasContribution = {
563
+ /** Stable id, for the registry and the graph. */
564
+ id: string;
565
+ /** The live extras. Updated by the example; read by the chat view. */
566
+ extras: ReadonlySignal<LoopChatExtrasValue>;
567
+ };
568
+ export declare const LoopChatExtras: import("@datalayer/reactor").ContributionPoint<ChatExtrasContribution>;
569
+ /**
570
+ * What the notebook already holds when the workspace opens.
571
+ *
572
+ * The notebook plugin ships one opening cell with a result in it, so a visitor
573
+ * never meets a blank editor. A host whose argument needs more — a landing
574
+ * page showing several cells and an output in the first viewport — contributes
575
+ * its own here, and the notebook view opens on that instead. First
576
+ * contribution wins.
577
+ *
578
+ * `notebook` is a factory rather than a document: `EphemeralNotebook` keeps
579
+ * the object it is first given and edits it in place, so a shared literal
580
+ * would be a shared notebook. `prime` is the code the view runs on the sandbox
581
+ * as soon as one is ready, so the kernel agrees with the cells on screen —
582
+ * without it a variable the cells show is undefined the first time anyone
583
+ * uses it. Left unset, the code cells' own source is run, top to bottom.
584
+ */
585
+ export type OpeningNotebookContribution = {
586
+ /** Stable id, for the registry and the graph. */
587
+ id: string;
588
+ /** The document to open on, built fresh per mount. */
589
+ notebook: () => import('@jupyterlab/nbformat').INotebookContent;
590
+ /** Code to run on the sandbox so it matches the cells; defaults to them. */
591
+ prime?: string;
592
+ };
593
+ export declare const LoopOpeningNotebook: import("@datalayer/reactor").ContributionPoint<OpeningNotebookContribution>;
594
+ /**
595
+ * What the document editor holds when it opens.
596
+ *
597
+ * The document's twin of {@link LoopOpeningNotebook}: a host that wants the
598
+ * editor to open on something — a heading, a paragraph, a cell that has
599
+ * already run — contributes it here, as a serialised Lexical editor state
600
+ * built fresh per mount. Nothing contributed means the document plugin's own
601
+ * opening document, which is a short one of exactly that shape.
602
+ */
603
+ export type OpeningDocumentContribution = {
604
+ /** Stable id, for the registry and the graph. */
605
+ id: string;
606
+ /** The editor state to open on, built fresh per mount. */
607
+ document: () => import('lexical').SerializedEditorState;
608
+ /**
609
+ * Whether the document takes the caret when it mounts. Defaults to `true`
610
+ * — the document's own long-standing behaviour, unconditional until this
611
+ * field existed.
612
+ *
613
+ * A host that also asks the *chat's* composer to focus on mount (see
614
+ * `LoopPresetOptions.autoFocusPrompt`) should set this to `false`: the
615
+ * chat's own autofocus runs the moment its composer paints, but the
616
+ * document waits on a sandbox and a kernel to start first, so its
617
+ * unconditional autofocus used to win the race by simply going second —
618
+ * moving the caret to the document a beat after the composer had already
619
+ * (and correctly) claimed it.
620
+ */
621
+ autoFocus?: boolean;
622
+ };
623
+ export declare const LoopOpeningDocument: import("@datalayer/reactor").ContributionPoint<OpeningDocumentContribution>;
624
+ /**
625
+ * Whether there is anything to chat with.
626
+ *
627
+ * A gate rather than an extension point of its own: `defineGate` is the
628
+ * reactor's primitive for exactly this — one plugin asking the others whether
629
+ * something may happen, and being told why not in words it can show. The chat
630
+ * asks; the sandbox plugin answers, because only some of the places code runs
631
+ * bring an agent with them. Neither imports the other.
632
+ *
633
+ * Nothing answering means allowed, so a workspace with no sandbox plugin has a
634
+ * working chat.
635
+ */
636
+ export declare const LoopAgentGate: import("@datalayer/reactor").Gate<LoopWorkspaceContext>;
637
+ /** @deprecated Use `LoopAgentGate`; chat is one consumer of agent availability. */
638
+ export declare const LoopChatGate: import("@datalayer/reactor").Gate<LoopWorkspaceContext>;
639
+ /**
640
+ * What an editor hands a toolbar contributor.
641
+ *
642
+ * The workspace, so an item can submit a prompt or switch views, and the id of
643
+ * the editor instance, so an item that reports on *this* editor — a kernel
644
+ * light, a dirty marker — can find it. Deliberately not the editor's adapter:
645
+ * a toolbar item that could reach inside the editor would couple every
646
+ * contributor to the editor's internals, and the point of the split is that
647
+ * they do not know each other.
648
+ */
649
+ export type EditorToolbarContext = {
650
+ workspace: LoopWorkspaceContext;
651
+ /** The id of the editor this toolbar belongs to. */
652
+ editorId: string;
653
+ };
654
+ /**
655
+ * The toolbar of an editor, provided by a plugin.
656
+ *
657
+ * A contribution here does not decorate a toolbar — it *is* the toolbar. An
658
+ * editor with nothing contributed to its toolbar point renders no toolbar at
659
+ * all, which is the difference between a toolbar plugin and a plugin that adds
660
+ * a button: switch this off and the bar goes, not just what was on it.
661
+ *
662
+ * `items` is what the providing plugin puts on its own toolbar. Everyone else
663
+ * uses the item point below, so that "who owns the toolbar" and "who is
664
+ * allowed to add to it" stay separate questions.
665
+ */
666
+ export type EditorToolbarContribution = {
667
+ items?: (context: EditorToolbarContext) => ToolbarItem[];
668
+ };
669
+ /**
670
+ * Something a plugin adds to a toolbar another plugin provides.
671
+ *
672
+ * `items` is called during the editor's render and must be pure — build the
673
+ * descriptors, do the work in `onClick` or inside a `render` component. It
674
+ * returns a list rather than a single item so one plugin can contribute a
675
+ * spacer and the thing after it as one indivisible unit.
676
+ *
677
+ * Nothing is rendered from here when no plugin provides the toolbar. That is
678
+ * deliberate: a button with no bar to sit on has nowhere to go, and drawing
679
+ * one anyway would make the toolbar plugin look optional when it is not.
680
+ */
681
+ export type EditorToolbarItemContribution = {
682
+ items: (context: EditorToolbarContext) => ToolbarItem[];
683
+ };
684
+ /**
685
+ * The notebook editor's toolbar.
686
+ *
687
+ * Offered by the notebook plugin and filled by the notebook toolbar plugin.
688
+ * The notebook names neither the toolbar nor anything on it.
689
+ */
690
+ export declare const LoopNotebookToolbar: import("@datalayer/reactor").ContributionPoint<EditorToolbarContribution>;
691
+ /**
692
+ * What goes on the notebook's toolbar, once something provides one.
693
+ *
694
+ * Offered by the *toolbar* plugin, not by the editor: the bar is what accepts
695
+ * buttons, so the plugin that owns the bar is the one that opens the point.
696
+ * The chat puts its agent actions here.
697
+ */
698
+ export declare const LoopNotebookToolbarItem: import("@datalayer/reactor").ContributionPoint<EditorToolbarItemContribution>;
699
+ /** The document editor's toolbar. The same arrangement, for prose. */
700
+ export declare const LoopDocumentToolbar: import("@datalayer/reactor").ContributionPoint<EditorToolbarContribution>;
701
+ /** What goes on the document's toolbar, once something provides one. */
702
+ export declare const LoopDocumentToolbarItem: import("@datalayer/reactor").ContributionPoint<EditorToolbarItemContribution>;
703
+ export { onSurfaceRequest, requestSurface, type SurfaceRequestListener, } from './surfaceRequests';
704
+ export { focusPrompt, onPromptFocusRequest } from './focusRequests';
705
+ /** Slash commands, shared in shape with the CLI. */
706
+ export declare const LoopCommand: import("@datalayer/reactor").ContributionPoint<CommandContribution>;
707
+ /** `@` namespaces. */
708
+ export declare const LoopMention: import("@datalayer/reactor").ContributionPoint<MentionContribution>;
709
+ /** Slot names the shell renders. Slots render everything; points choose one. */
710
+ export declare const LoopSlots: {
711
+ /** Agent picker, model chip, status indicators. */
712
+ readonly header: "loop.header";
713
+ /**
714
+ * The chat's own title bar, beside the agent's name.
715
+ *
716
+ * Distinct from `header`, which is the workspace's row above every view: a
717
+ * host can hide one and keep the other, and what belongs here is what is
718
+ * true of the *conversation* rather than of the workspace — how long the
719
+ * visitor's trial key has left, say.
720
+ *
721
+ * Empty for most workspaces, and the chat asks whether anyone contributed
722
+ * before it draws anything, so an unfilled slot costs nothing.
723
+ */
724
+ readonly chatHeader: "loop.chatHeader";
725
+ /** Buttons beside the prompt. */
726
+ readonly promptAction: "loop.promptAction";
727
+ /**
728
+ * The strip inside the prompt, above where the typing goes.
729
+ *
730
+ * Kept and rendered, and nothing contributes to it today: the controls that
731
+ * decide what the next message does — agent, tools, skills, model — live in
732
+ * the footer under the prompt, which already had three of the four. This is
733
+ * for whatever wants to sit *in* the prompt rather than under it, and it
734
+ * draws nothing while it is empty.
735
+ */
736
+ readonly inpromptMenu: "loop.inpromptMenu";
737
+ /**
738
+ * Under the view, above the status line.
739
+ *
740
+ * Where the chat plugin puts its prompt. A slot rather than a fixed place in
741
+ * the shell, so a workspace mounted without a chat has nothing there instead
742
+ * of an input box wired to nothing.
743
+ */
744
+ readonly footer: "loop.footer";
745
+ /** Small status items under the prompt. */
746
+ readonly status: "loop.status";
747
+ /**
748
+ * A mount point for plugins that position themselves.
749
+ *
750
+ * Rendered once, with no layout of its own. What goes here paints over the
751
+ * workspace from a portal — the command palette does — so the slot only has
752
+ * to exist somewhere the reactor is running. It is `root` rather than
753
+ * `loop.root` because it is the reactor's convention rather than the loop's:
754
+ * the music and CMS applications render the same name for the same plugins.
755
+ */
756
+ readonly root: "root";
757
+ /**
758
+ * The trailing edge, beside the view: the plugin list, and anything else
759
+ * that belongs next to the work rather than in front of it.
760
+ *
761
+ * A slot, so a workspace with no sidebar plugin has no sidebar at all — the
762
+ * column is not drawn when nothing fills it.
763
+ */
764
+ readonly sidebar: "loop.sidebar";
765
+ };
766
+ /**
767
+ * The sandbox's lifecycle, in the vocabulary a kernel indicator speaks.
768
+ *
769
+ * Here rather than beside either renderer because two of them draw the same
770
+ * fact — the control in the workspace header, and the chat's own header for a
771
+ * host that hides the workspace's. Two copies of this mapping would eventually
772
+ * disagree about what `starting` looks like, and a workspace showing two
773
+ * indicators that disagree is worse than one showing none.
774
+ *
775
+ * The execution state is the finer answer and wins when there is one: a
776
+ * running sandbox is either working or waiting, and which of the two is the
777
+ * thing a person actually watches for.
778
+ */
779
+ export declare function sandboxIndicatorState(state: SandboxState, executionState?: string, isExecuting?: boolean): ExecutionState;
780
+ /** Whether a view or a chat surface can be opened right now. */
781
+ export declare function canOpenView(contribution: Pick<ViewTypeContribution, 'canOpen'>, workspace: LoopWorkspaceContext): boolean;
782
+ /** Parse `/name rest` into its parts. Returns undefined when it is not a command. */
783
+ export declare function parseCommand(input: string): {
784
+ name: string;
785
+ argv: string;
786
+ } | undefined;
787
+ export { useLoopPromptStore, suggestLoopPrompt, type LoopPromptState, type SuggestedPrompt, } from './promptStore';
788
+ /**
789
+ * How the chat view arranges its parts.
790
+ *
791
+ * The chat view assembles everything — the editor surfaces, the transcript
792
+ * column, the composer, the openers, the surface picker — and by default lays
793
+ * them out as a split: editor beside transcript, prompt underneath. A layout
794
+ * contribution takes those same parts, already wired, and arranges them
795
+ * differently: the page-layout plugin puts the editor on a centred sheet like
796
+ * a document and floats the prompt at the top of it. First contribution wins.
797
+ *
798
+ * The parts are elements, not data: the composer's draft, the transcript's
799
+ * streaming, the surfaces' hidden mounts all stay the view's business. A
800
+ * layout decides where things go, never what they do.
801
+ */
802
+ export type ChatLayoutParts = {
803
+ workspace: LoopWorkspaceContext;
804
+ /** The editor surfaces — every mountable surface, the active one shown. */
805
+ editors: ReactNode;
806
+ /** Whether an editor surface is on screen (false: the transcript is all). */
807
+ hasEditor: boolean;
808
+ /** The conversation column: transcript, banner, expired-key cover. */
809
+ transcript: ReactNode;
810
+ /** The composer, or null when hidden. Floating when the layout asked. */
811
+ prompt: ReactNode;
812
+ /** The openers as chips, or null. */
813
+ chips: ReactNode;
814
+ /** The surface picker strip, or null. */
815
+ picker: ReactNode;
816
+ /** A transient notice (a command's output), or null. */
817
+ transient: ReactNode;
818
+ };
819
+ export type ChatLayoutContribution = {
820
+ /** Stable id, for the registry and the graph. */
821
+ id: string;
822
+ /** Arranges the parts. */
823
+ Component: ComponentType<ChatLayoutParts>;
824
+ /**
825
+ * How this layout wants the composer built.
826
+ *
827
+ * `floating-top` and `floating-bottom` are a floating card anchored to
828
+ * that edge of the layout rather than
829
+ * the bottom — a command line over the document, sized by the card.
830
+ * `docked-top` is that same command line standing in the flow instead: the
831
+ * layout gives it a mount point and the composer fills it, so its width is
832
+ * the layout's to decide and the page below starts under it rather than
833
+ * behind it.
834
+ */
835
+ prompt?: 'docked' | 'floating' | 'floating-top' | 'floating-bottom' | 'docked-top';
836
+ /**
837
+ * The same, live, for a layout whose stance changes while it is on
838
+ * screen — the page layout moves the composer between a floating card
839
+ * and its side panel as the person picks a display mode. Read over
840
+ * `prompt` by the chat view whenever it is given; `prompt` is then only
841
+ * the stance the layout starts in.
842
+ */
843
+ promptStance?: ReadonlySignal<'docked' | 'floating' | 'floating-top' | 'floating-bottom' | 'docked-top'>;
844
+ };
845
+ export declare const LoopChatLayout: import("@datalayer/reactor").ContributionPoint<ChatLayoutContribution>;
846
+ /**
847
+ * A panel attached to the composer, above or below it.
848
+ *
849
+ * The input-prompt plugin opens this point and renders every contribution
850
+ * inside the prompt's own card — so on a floating composer the panel floats
851
+ * with it. The page layout uses it to show the current turn beside a prompt
852
+ * whose transcript is out of sight; a host could hang anything else there.
853
+ */
854
+ export type PromptPanelContribution = {
855
+ /** Stable id, for the registry and the graph. */
856
+ id: string;
857
+ /** Which side of the composer. `below` when unsaid. */
858
+ placement?: 'above' | 'below';
859
+ /** Among panels on the same side; lower first. */
860
+ order?: number;
861
+ Component: ComponentType<{
862
+ workspace: LoopWorkspaceContext;
863
+ }>;
864
+ };
865
+ export declare const LoopPromptPanel: import("@datalayer/reactor").ContributionPoint<PromptPanelContribution>;
866
+ /**
867
+ * The conversation's current turn, as a live value.
868
+ *
869
+ * What was just asked and what is being answered — the last user message,
870
+ * the assistant's reply as it streams, and where the turn stands. The chat
871
+ * plugin contributes one of these and its view keeps it current; anything
872
+ * that shows a conversation without the transcript (the page layout's turn
873
+ * panel) reads it. A new turn replaces the old one entirely, which is what
874
+ * "cleared on each turn" means for a reader.
875
+ */
876
+ export type ChatTurnStatus = 'idle' | 'thinking' | 'streaming' | 'done' | 'error';
877
+ export type ChatTurnSnapshot = {
878
+ /** Counts up per turn, so a reader can tell a new turn from an edit. */
879
+ id: number;
880
+ /** What the person sent. */
881
+ user?: string;
882
+ /** What the agent has said so far. */
883
+ assistant?: string;
884
+ status: ChatTurnStatus;
885
+ /**
886
+ * The context window as the agent last reported it — what a turn footer
887
+ * draws: the window's fill, and this turn's tokens in and out.
888
+ */
889
+ usage?: import('../../types').ContextSnapshotData;
890
+ /**
891
+ * What the agent is doing right now, in a short line — "Analyst is adding
892
+ * a cell…" — while a tool runs; cleared when it returns. For a layout that
893
+ * shows the work rather than the transcript.
894
+ */
895
+ activity?: string;
896
+ };
897
+ export type ChatTurnContribution = {
898
+ /** Stable id, for the registry and the graph. */
899
+ id: string;
900
+ /** The turn, live. */
901
+ turn: ReadonlySignal<ChatTurnSnapshot>;
902
+ };
903
+ export declare const LoopChatTurn: import("@datalayer/reactor").ContributionPoint<ChatTurnContribution>;