@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
@@ -9,15 +9,19 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
9
9
  *
10
10
  * @module chat/messages/MessageList
11
11
  */
12
- import { useState, useCallback, useEffect, useMemo, useRef, } from 'react';
13
- import { Text, Spinner } from '@primer/react';
14
- import { DependabotIcon, PersonIcon } from '@primer/octicons-react';
12
+ import { Fragment, useState, useCallback, useEffect, useMemo, useRef, } from 'react';
13
+ import { Text, Spinner, Link, Label, RelativeTime } from '@primer/react';
14
+ import { ArrowRightIcon, BroadcastIcon, ClockIcon, DependabotIcon, PersonIcon, SkipIcon, ToolsIcon, XCircleFillIcon, } from '@primer/octicons-react';
15
15
  import { Box } from '@datalayer/primer-addons';
16
16
  import { Streamdown } from 'streamdown';
17
17
  import { streamdownMarkdownStyles, streamdownCodeBlockStyles, } from '../styles/streamdownStyles';
18
18
  import { ToolCallDisplay } from '../tools/ToolCallDisplay';
19
+ import { TurnFooter } from './TurnFooter';
20
+ import { normalizeAssistantMarkdown } from './assistantMarkdown';
19
21
  import { isToolCallMessage, getMessageText } from '../../utils';
20
- import { useAgentRuntimeStore, useAgentRuntimeSubagentActivityByToolCall, agentRuntimeStore, } from '../../stores/agentRuntimeStore';
22
+ import { A2AAgentDialog, a2aAgentDetails } from '../tools/A2AAgentDialog';
23
+ import { SUBAGENT_STOPPED } from '../../types/stream';
24
+ import { useAgentRuntimeStore, useAgentRuntimeSubagentActivity, useAgentRuntimeSubagentActivityByToolCall, agentRuntimeStore, } from '../../stores/agentRuntimeStore';
21
25
  // ---------------------------------------------------------------------------
22
26
  // Normalize helper
23
27
  // ---------------------------------------------------------------------------
@@ -27,49 +31,47 @@ function normalizeName(name) {
27
31
  .replace(/[-_]/g, '')
28
32
  .toLowerCase();
29
33
  }
34
+ // ---------------------------------------------------------------------------
35
+ // Speakers — a message's name, tone and initials, for a chat that holds more
36
+ // than one non-user voice (a team's supervisor and its members, a
37
+ // delegation's asker and asked — not just "the assistant").
38
+ // ---------------------------------------------------------------------------
30
39
  /**
31
- * Expand a single-line markdown table (rows joined with `||`) into one row
32
- * per line so a markdown renderer can produce a real HTML table. Idempotent:
33
- * any pre-existing `|\n|` boundaries are unaffected.
40
+ * A speaker's tone as the four Primer functional colours its header, its
41
+ * bubble and its avatar are drawn in. `'neutral'` (the default, for a
42
+ * speaker with no tone of its own) falls back to plain canvas/border/fg
43
+ * tokens, since Primer has no `neutral.subtle`.
34
44
  */
35
- function expandCompactMarkdownTableBody(body) {
36
- if (!body)
37
- return body;
38
- if (!/\|\s*[-:| ]{3,}\|/.test(body))
39
- return body;
40
- if (!body.includes('||'))
41
- return body;
42
- return body.replace(/\|\|/g, '|\n|');
45
+ function toneColorsOf(tone) {
46
+ if (!tone || tone === 'neutral') {
47
+ return {
48
+ emphasis: 'neutral.emphasis',
49
+ subtle: 'canvas.subtle',
50
+ muted: 'border.default',
51
+ fg: 'fg.default',
52
+ };
53
+ }
54
+ return {
55
+ emphasis: `${tone}.emphasis`,
56
+ subtle: `${tone}.subtle`,
57
+ muted: `${tone}.muted`,
58
+ fg: `${tone}.fg`,
59
+ };
43
60
  }
44
- /**
45
- * Pre-process assistant text for Streamdown:
46
- * - Unwrap ```markdown / ```md fenced blocks so tables render as HTML
47
- * instead of as a code block.
48
- * - Inside any fenced block (or top-level body), expand compact one-line
49
- * markdown tables.
50
- */
51
- function normalizeAssistantMarkdown(text) {
52
- if (!text)
53
- return text;
54
- // Unwrap explicit ```markdown / ```md fences and expand compact tables.
55
- let out = text.replace(/```(markdown|md)\s*\n([\s\S]*?)```/gi, (_match, _lang, body) => {
56
- const expanded = expandCompactMarkdownTableBody(body.trim());
57
- return `\n\n${expanded}\n\n`;
58
- });
59
- // Also expand compact tables inside other fenced blocks that happen to
60
- // carry a markdown table (e.g. bare ``` fences).
61
- out = out.replace(/```([a-zA-Z0-9_+-]*)\n([\s\S]*?)```/g, (match, lang, body) => {
62
- const expanded = expandCompactMarkdownTableBody(body);
63
- if (expanded === body)
64
- return match;
65
- // If we expanded an unlabeled fence containing a real markdown table,
66
- // unwrap it so it renders as a table.
67
- if (!lang || /^(text|plain)$/i.test(lang)) {
68
- return `\n\n${expanded.trim()}\n\n`;
69
- }
70
- return `\`\`\`${lang}\n${expanded}\`\`\``;
71
- });
72
- return out;
61
+ /** Three pulsing dots: a speaker is still writing and has not settled yet. */
62
+ function TypingDots({ size = 8 }) {
63
+ return (_jsx(Box, { sx: { display: 'flex', alignItems: 'center', gap: '4px' }, children: [0, 0.2, 0.4].map((delay, index) => (_jsx(Box, { sx: {
64
+ width: size,
65
+ height: size,
66
+ borderRadius: '50%',
67
+ bg: 'fg.muted',
68
+ animation: 'typingPulse 1.4s ease-in-out infinite',
69
+ animationDelay: `${delay}s`,
70
+ '@keyframes typingPulse': {
71
+ '0%, 60%, 100%': { transform: 'scale(0.6)', opacity: 0.4 },
72
+ '30%': { transform: 'scale(1)', opacity: 1 },
73
+ },
74
+ } }, index))) }));
73
75
  }
74
76
  const SUBAGENT_AVATAR_CONFIG = {
75
77
  userAvatar: _jsx(PersonIcon, { size: 14 }),
@@ -185,6 +187,18 @@ export function SubagentChatPanel({ toolCallId, subagentName: subagentNameHint,
185
187
  }, [events, subagentNameHint]);
186
188
  const isDone = useMemo(() => events.some(e => e.phase === 'end' || e.phase === 'error'), [events]);
187
189
  const hasError = useMemo(() => events.some(e => e.phase === 'error'), [events]);
190
+ // A stop is an error the person asked for: shown as stopped, not failed.
191
+ const isStopped = useMemo(() => events.some(e => e.phase === 'error' && e.error === SUBAGENT_STOPPED), [events]);
192
+ /*
193
+ * A run over A2A is a separate agent's: the box says so, names where it
194
+ * runs, links its card, and while the agent is still being launched says
195
+ * that rather than "working".
196
+ */
197
+ const remote = useMemo(() => a2aAgentDetails(events, subagentNameHint), [events, subagentNameHint]);
198
+ const overA2A = remote !== null;
199
+ // "card" in the header opens the agent's details over the chat rather than
200
+ // a tab: the run's facts, the card fetched live, and the link out.
201
+ const [cardOpen, setCardOpen] = useState(false);
188
202
  // Forward inline tool-approval decisions to the shared monitoring socket.
189
203
  const handleRespond = useCallback(async (_toolCallId, result) => {
190
204
  if (result && typeof result === 'object') {
@@ -199,19 +213,41 @@ export function SubagentChatPanel({ toolCallId, subagentName: subagentNameHint,
199
213
  }
200
214
  }, []);
201
215
  useEffect(() => {
202
- messagesEndRef.current?.scrollIntoView({ block: 'end' });
216
+ messagesEndRef.current?.scrollIntoView?.({ block: 'end' });
203
217
  }, [displayItems]);
204
218
  if (events.length === 0) {
205
219
  return null;
206
220
  }
207
- return (_jsxs(Box, { sx: {
221
+ /*
222
+ * Coloured for what it is: a run under way is accent, a finished one
223
+ * success, a failed one danger — the frame, the header and the name all
224
+ * say so, so the box reads as a subagent's at a glance rather than as one
225
+ * more grey card among the tool cards.
226
+ */
227
+ const tone = hasError
228
+ ? isStopped
229
+ ? 'attention'
230
+ : 'danger'
231
+ : isDone
232
+ ? 'success'
233
+ : 'accent';
234
+ const progress = hasError
235
+ ? isStopped
236
+ ? 'stopped'
237
+ : 'failed'
238
+ : isDone
239
+ ? 'done'
240
+ : overA2A && remote?.state === 'launching'
241
+ ? 'launching\u2026'
242
+ : 'working\u2026';
243
+ return (_jsxs(Box, { "data-subagent-panel": subagentName, "data-subagent-transport": overA2A ? 'a2a' : 'in-process', sx: {
208
244
  mt: 2,
209
245
  display: 'flex',
210
246
  flexDirection: 'column',
211
247
  height,
212
248
  width: '100%',
213
249
  border: '1px solid',
214
- borderColor: 'border.default',
250
+ borderColor: `${tone}.emphasis`,
215
251
  borderRadius: 2,
216
252
  overflow: 'hidden',
217
253
  bg: 'canvas.default',
@@ -222,13 +258,10 @@ export function SubagentChatPanel({ toolCallId, subagentName: subagentNameHint,
222
258
  px: 2,
223
259
  py: 1,
224
260
  borderBottom: '1px solid',
225
- borderColor: 'border.muted',
226
- bg: 'canvas.subtle',
261
+ borderColor: `${tone}.muted`,
262
+ bg: `${tone}.subtle`,
227
263
  flexShrink: 0,
228
- }, children: [_jsx(Box, { sx: {
229
- display: 'flex',
230
- color: hasError ? 'danger.fg' : isDone ? 'success.fg' : 'accent.fg',
231
- }, children: _jsx(DependabotIcon, { size: 14 }) }), _jsx(Text, { sx: { fontSize: 0, fontWeight: 'bold', color: 'fg.default' }, children: subagentName }), _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', ml: 'auto' }, children: hasError ? 'failed' : isDone ? 'done' : 'working\u2026' })] }), _jsx(Box, { sx: { flex: 1, minHeight: 0, overflowY: 'auto' }, children: _jsx(ChatMessageList, { displayItems: displayItems, isLoading: !isDone, isStreaming: !isDone, showLoadingIndicator: !isDone, hideMessagesAfterToolUI: false, avatarConfig: avatarConfig, padding: 2, onRespond: handleRespond, messagesEndRef: messagesEndRef, emptyContent: _jsxs(Box, { sx: {
264
+ }, children: [_jsx(Box, { sx: { display: 'flex', color: `${tone}.fg` }, children: overA2A ? _jsx(BroadcastIcon, { size: 14 }) : _jsx(DependabotIcon, { size: 14 }) }), _jsx(Text, { sx: { fontSize: 0, color: `${tone}.fg` }, children: overA2A ? 'A2A agent' : 'Subagent' }), _jsx(Text, { sx: { fontSize: 0, fontWeight: 'bold', color: `${tone}.fg` }, children: subagentName }), remote?.launch ? (_jsx(Text, { sx: { fontSize: 0, color: `${tone}.fg`, opacity: 0.8 }, children: remote.launch })) : null, remote ? (_jsx(Link, { as: "button", type: "button", "data-a2a-card-button": true, onClick: () => setCardOpen(true), sx: { fontSize: 0, ml: 1 }, children: "card" })) : null, _jsx(Text, { sx: { fontSize: 0, color: `${tone}.fg`, ml: 'auto' }, children: progress })] }), cardOpen && remote ? (_jsx(A2AAgentDialog, { details: remote, onClose: () => setCardOpen(false) })) : null, _jsx(Box, { sx: { flex: 1, minHeight: 0, overflowY: 'auto' }, children: _jsx(ChatMessageList, { displayItems: displayItems, isLoading: !isDone, isStreaming: !isDone, showLoadingIndicator: !isDone, hideMessagesAfterToolUI: false, avatarConfig: avatarConfig, padding: 2, onRespond: handleRespond, messagesEndRef: messagesEndRef, emptyContent: _jsxs(Box, { sx: {
232
265
  display: 'flex',
233
266
  alignItems: 'center',
234
267
  gap: 1,
@@ -341,11 +374,25 @@ function DefaultToolCallRenderer({ item, onRespond, }) {
341
374
  : externalDecision
342
375
  ? 'external'
343
376
  : undefined;
344
- // `normalizeName` strips underscores, so compare against the normalized form.
345
- const isSubagentDelegation = normalizedToolName === 'delegatetask';
377
+ /*
378
+ * A delegation, either way it is spelled.
379
+ *
380
+ * A server-side harness delegates through one `delegate_task` tool that
381
+ * names the subagent in its arguments; the in-page loop gives the parent
382
+ * one tool *per* subagent, named after it. The store is keyed by the parent
383
+ * tool call whichever way, so a call that has activity under its id is a
384
+ * delegation — and the box below shows the run, boxed like the tool card
385
+ * above it and named for who is running.
386
+ */
387
+ const delegationEvents = useAgentRuntimeSubagentActivity(item.toolCallId);
388
+ const isSubagentDelegation = normalizedToolName === 'delegatetask' || delegationEvents.length > 0;
346
389
  const delegatedSubagentName = typeof item.args?.subagent_name === 'string'
347
390
  ? item.args.subagent_name
348
- : undefined;
391
+ : typeof item.args?.subagent === 'string'
392
+ ? item.args.subagent
393
+ : normalizedToolName === 'delegatetask'
394
+ ? undefined
395
+ : item.toolName;
349
396
  return (_jsxs(_Fragment, { children: [_jsx(ToolCallDisplay, { toolCallId: item.toolCallId, toolName: item.toolName, args: item.args, result: item.result, status: item.status, error: item.error, executionError: item.executionError, codeError: item.codeError, exitCode: item.exitCode, approvalRequired: hasApproval, approvalState: approvalState, approvalDecisionSource: approvalDecisionSource, onApprove: effectiveApprovalId && !decision && !externalDecision
350
397
  ? () => makeDecision('approve')
351
398
  : undefined, onDeny: effectiveApprovalId && !decision && !externalDecision
@@ -355,7 +402,7 @@ function DefaultToolCallRenderer({ item, onRespond, }) {
355
402
  // ---------------------------------------------------------------------------
356
403
  // Component
357
404
  // ---------------------------------------------------------------------------
358
- export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoadingIndicator, hideMessagesAfterToolUI, avatarConfig, padding, renderToolResult, emptyContent, messagesEndRef, onRespond, approvalConfig, }) {
405
+ export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoadingIndicator, hideMessagesAfterToolUI, avatarConfig, padding, renderToolResult, emptyContent, messagesEndRef, onRespond, approvalConfig, showTurnFooters = false, agentUsage, onRemoveItems, renderMessageFooter, }) {
359
406
  if (displayItems.length === 0) {
360
407
  return _jsx(_Fragment, { children: emptyContent });
361
408
  }
@@ -378,6 +425,8 @@ export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoad
378
425
  result: item.result,
379
426
  status: item.status,
380
427
  error: item.error,
428
+ // Only tested for null-ness here, so the node itself is not built.
429
+ defaultUI: null,
381
430
  });
382
431
  if (rendered !== null && rendered !== undefined) {
383
432
  renderedToolCallIds.add(item.toolCallId);
@@ -390,111 +439,284 @@ export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoad
390
439
  }
391
440
  });
392
441
  const hasRenderedToolCall = renderedToolCallIds.size > 0;
393
- return (_jsxs(_Fragment, { children: [displayItems.map((item, index) => {
394
- // ---- Tool call item ----
395
- if (isToolCallMessage(item)) {
396
- const respond = item.status === 'executing' || item.status === 'inProgress'
397
- ? createRespondCallback(item.toolCallId)
398
- : undefined;
399
- const toolUI = renderToolResult ? (renderToolResult({
400
- toolCallId: item.toolCallId,
401
- toolName: item.toolName,
402
- name: item.toolName,
403
- args: item.args,
404
- result: item.result,
405
- status: item.status,
406
- error: item.error,
407
- respond,
408
- })) : (_jsx(DefaultToolCallRenderer, { item: item, approvalConfig: approvalConfig, onRespond: createRespondCallback(item.toolCallId) }));
409
- if (toolUI === null || toolUI === undefined)
410
- return null;
411
- return (_jsx(Box, { sx: {
412
- display: 'flex',
413
- flexDirection: 'column',
414
- alignItems: 'flex-start',
415
- maxWidth: '95%',
416
- px: padding,
417
- py: 1,
418
- }, children: toolUI }, item.id));
442
+ /*
443
+ * Turn boundaries: a turn opens at each of the person's messages and runs
444
+ * to the item before the next one. The footer stands after a turn's last
445
+ * item — attached by index, not to the item's own rendering, so a turn
446
+ * whose closing item happens to be hidden still gets its accounting row.
447
+ */
448
+ const turnEnds = new Map();
449
+ if (showTurnFooters) {
450
+ let start = -1;
451
+ displayItems.forEach((item, index) => {
452
+ const opensTurn = !isToolCallMessage(item) && item.role === 'user';
453
+ if (opensTurn) {
454
+ if (start >= 0) {
455
+ turnEnds.set(index - 1, start);
419
456
  }
420
- // ---- Chat message item ----
457
+ start = index;
458
+ }
459
+ });
460
+ if (start >= 0) {
461
+ turnEnds.set(displayItems.length - 1, start);
462
+ }
463
+ }
464
+ /** The turn as text: the person's ask, the answers, the tools by name. */
465
+ const copyTurn = (start, end) => {
466
+ const lines = [];
467
+ for (let index = start; index <= end; index += 1) {
468
+ const item = displayItems[index];
469
+ if (isToolCallMessage(item)) {
470
+ lines.push(`[tool · ${item.toolName}]`);
471
+ }
472
+ else {
421
473
  const message = item;
422
- const isUser = message.role === 'user';
423
- // Optionally hide assistant messages that follow a rendered tool call
424
- if (!isUser && hideMessagesAfterToolUI && hasRenderedToolCall) {
425
- const messageText = getMessageText(message);
426
- const prevIndex = index - 1;
427
- if (prevIndex >= 0) {
428
- const prevItem = displayItems[prevIndex];
429
- if (isToolCallMessage(prevItem) &&
430
- renderedToolCallIds.has(prevItem.toolCallId)) {
431
- return null;
432
- }
433
- }
434
- // Check for HITL-specific patterns
435
- const hitlToolCall = displayItems.find(di => isToolCallMessage(di) &&
436
- renderedToolCallIds.has(di.toolCallId) &&
437
- di.args &&
438
- 'steps' in di.args &&
439
- Array.isArray(di.args.steps));
440
- if (hitlToolCall && messageText) {
441
- const steps = hitlToolCall.args.steps;
442
- const hasStepContent = steps.some(step => step.description &&
443
- messageText
444
- .toLowerCase()
445
- .includes(step.description.toLowerCase().slice(0, 20))) ||
446
- /^\s*(\d+\.\s|[-*]\s|\*\*)/.test(messageText) ||
447
- messageText.includes('**Enabled**') ||
448
- messageText.includes('steps below');
449
- if (hasStepContent) {
450
- return null;
451
- }
452
- }
474
+ const text = getMessageText(message);
475
+ if (text) {
476
+ lines.push(message.role === 'user' ? `You: ${text}` : text);
453
477
  }
454
- return (_jsx(Box, { sx: {
455
- display: 'flex',
456
- flexDirection: 'column',
457
- alignItems: isUser ? 'flex-end' : 'flex-start',
458
- px: padding,
478
+ }
479
+ }
480
+ return (navigator.clipboard?.writeText(lines.join('\n\n')) ?? Promise.resolve());
481
+ };
482
+ const footerAt = (index) => {
483
+ const start = turnEnds.get(index);
484
+ if (start === undefined) {
485
+ return null;
486
+ }
487
+ const isLastTurn = index === displayItems.length - 1;
488
+ const running = isLoading || isStreaming;
489
+ return (_jsx(TurnFooter, { usage: agentUsage, live: isLastTurn && running, latest: isLastTurn && !running, padding: padding, onCopy: () => copyTurn(start, index), onRemove: () => onRemoveItems?.(displayItems.slice(start, index + 1).map(entry => entry.id)) }));
490
+ };
491
+ const renderItem = (item, index) => {
492
+ // ---- Tool call item ----
493
+ if (isToolCallMessage(item)) {
494
+ const respond = item.status === 'executing' || item.status === 'inProgress'
495
+ ? createRespondCallback(item.toolCallId)
496
+ : undefined;
497
+ /*
498
+ The row the chat would draw by itself, handed to the caller.
499
+
500
+ `renderToolResult` replaces this outright, which is right for a
501
+ caller substituting a custom card and wrong for one that only
502
+ wants to add something beneath the row — that caller previously
503
+ had to reimplement it, and returning nothing for the tools it did
504
+ not care about hid those tools entirely. Offering the default as a
505
+ node lets it compose instead of choosing.
506
+ */
507
+ const defaultUI = (_jsx(DefaultToolCallRenderer, { item: item, approvalConfig: approvalConfig, onRespond: createRespondCallback(item.toolCallId) }));
508
+ const toolUI = renderToolResult
509
+ ? renderToolResult({
510
+ toolCallId: item.toolCallId,
511
+ toolName: item.toolName,
512
+ name: item.toolName,
513
+ args: item.args,
514
+ result: item.result,
515
+ status: item.status,
516
+ error: item.error,
517
+ respond,
518
+ defaultUI,
519
+ })
520
+ : defaultUI;
521
+ if (toolUI === null || toolUI === undefined)
522
+ return null;
523
+ return (_jsx(Box, { sx: {
524
+ display: 'flex',
525
+ flexDirection: 'column',
526
+ alignItems: 'flex-start',
527
+ /*
528
+ The full column. `maxWidth: '95%'` with content-driven
529
+ width left every tool card as wide as its longest line, so
530
+ a transcript of executions was a ragged stack of
531
+ differently-sized boxes. The default row still hugs its
532
+ content under `alignItems`; anything that declares
533
+ `width: '100%'` — the cell and output surfaces do — gets
534
+ the whole measure.
535
+ */
536
+ width: '100%',
537
+ px: padding,
538
+ py: 1,
539
+ }, children: toolUI }, item.id));
540
+ }
541
+ // ---- Chat message item ----
542
+ const message = item;
543
+ const isUser = message.role === 'user';
544
+ const speaker = message.speaker;
545
+ /*
546
+ * A note — a wait, a failure, a stop — is not a speaker's turn: no
547
+ * avatar, no side, no bubble. Centred and pill-shaped, the way the
548
+ * transcript already sets apart what *happened* from what was *said*.
549
+ */
550
+ if (message.note) {
551
+ const noteColor = message.note === 'failed'
552
+ ? 'danger.fg'
553
+ : message.note === 'waiting'
554
+ ? 'attention.fg'
555
+ : 'fg.muted';
556
+ const NoteIcon = message.note === 'failed'
557
+ ? XCircleFillIcon
558
+ : message.note === 'waiting'
559
+ ? ClockIcon
560
+ : SkipIcon;
561
+ return (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', px: padding, py: 1 }, children: _jsxs(Box, { sx: {
562
+ display: 'inline-flex',
563
+ gap: 2,
564
+ alignItems: 'center',
565
+ px: 3,
459
566
  py: 1,
460
- }, children: _jsxs(Box, { sx: {
567
+ borderRadius: 999,
568
+ bg: 'canvas.subtle',
569
+ border: '1px solid',
570
+ borderColor: 'border.muted',
571
+ color: noteColor,
572
+ fontSize: 0,
573
+ maxWidth: '90%',
574
+ }, children: [_jsx(NoteIcon, { size: 14 }), speaker ? (_jsx(Text, { sx: { fontWeight: 'semibold' }, children: speaker.name })) : null, _jsx(Text, { sx: { color: 'fg.muted' }, children: getMessageText(message) }), message.createdAt ? (_jsx(RelativeTime, { datetime: message.createdAt.toISOString(), sx: { color: 'fg.muted' } })) : null] }) }, message.id));
575
+ }
576
+ // Optionally hide assistant messages that follow a rendered tool call
577
+ if (!isUser && hideMessagesAfterToolUI && hasRenderedToolCall) {
578
+ const messageText = getMessageText(message);
579
+ const prevIndex = index - 1;
580
+ if (prevIndex >= 0) {
581
+ const prevItem = displayItems[prevIndex];
582
+ if (isToolCallMessage(prevItem) &&
583
+ renderedToolCallIds.has(prevItem.toolCallId)) {
584
+ return null;
585
+ }
586
+ }
587
+ // Check for HITL-specific patterns
588
+ const hitlToolCall = displayItems.find(di => isToolCallMessage(di) &&
589
+ renderedToolCallIds.has(di.toolCallId) &&
590
+ di.args &&
591
+ 'steps' in di.args &&
592
+ Array.isArray(di.args.steps));
593
+ if (hitlToolCall && messageText) {
594
+ const steps = hitlToolCall.args.steps;
595
+ const hasStepContent = steps.some(step => step.description &&
596
+ messageText
597
+ .toLowerCase()
598
+ .includes(step.description.toLowerCase().slice(0, 20))) ||
599
+ /^\s*(\d+\.\s|[-*]\s|\*\*)/.test(messageText) ||
600
+ messageText.includes('**Enabled**') ||
601
+ messageText.includes('steps below');
602
+ if (hasStepContent) {
603
+ return null;
604
+ }
605
+ }
606
+ }
607
+ return (_jsx(Box, { sx: {
608
+ display: 'flex',
609
+ flexDirection: 'column',
610
+ alignItems: isUser ? 'flex-end' : 'flex-start',
611
+ px: padding,
612
+ py: 1,
613
+ }, children: _jsxs(Box, { sx: {
614
+ display: 'flex',
615
+ gap: 2,
616
+ flexDirection: isUser ? 'row-reverse' : 'row',
617
+ alignItems: 'flex-start',
618
+ /*
619
+ Full width, always.
620
+
621
+ This row used to shrink to its content under the column's
622
+ alignment, so the bubble's `maxWidth: '85%'` resolved
623
+ against a parent whose width was itself the content's —
624
+ circular geometry that re-settled with every streamed
625
+ chunk, and the person's own message drifted leftward while
626
+ the agent was answering. A full-width row is fixed ground:
627
+ `row-reverse` pins the person's bubble to the right edge,
628
+ `row` pins the agent's to the left, and 85% means 85% of
629
+ the column whatever is being generated below.
630
+ */
631
+ width: '100%',
632
+ }, children: [avatarConfig.showAvatars && (_jsx(Box, { sx: {
633
+ width: avatarConfig.avatarSize,
634
+ height: avatarConfig.avatarSize,
635
+ borderRadius: '50%',
636
+ bg: speaker
637
+ ? toneColorsOf(speaker.tone).emphasis
638
+ : isUser
639
+ ? avatarConfig.userAvatarBg
640
+ : avatarConfig.assistantAvatarBg,
641
+ color: speaker
642
+ ? 'fg.onEmphasis'
643
+ : isUser
644
+ ? 'fg.default'
645
+ : 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))',
461
646
  display: 'flex',
462
- gap: 2,
463
- flexDirection: isUser ? 'row-reverse' : 'row',
464
- alignItems: 'flex-start',
465
- }, children: [avatarConfig.showAvatars && (_jsx(Box, { sx: {
466
- width: avatarConfig.avatarSize,
467
- height: avatarConfig.avatarSize,
468
- borderRadius: '50%',
469
- bg: isUser
470
- ? avatarConfig.userAvatarBg
471
- : avatarConfig.assistantAvatarBg,
472
- color: isUser
473
- ? 'fg.default'
474
- : 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))',
647
+ alignItems: 'center',
648
+ justifyContent: 'center',
649
+ flexShrink: 0,
650
+ fontSize: speaker ? 0 : undefined,
651
+ fontWeight: speaker ? 'bold' : undefined,
652
+ }, children: speaker
653
+ ? speaker.initials || '?'
654
+ : isUser
655
+ ? avatarConfig.userAvatar
656
+ : avatarConfig.assistantAvatar })), _jsxs(Box, { sx: { maxWidth: '85%', minWidth: 0 }, children: [speaker ? (_jsxs(Box, { sx: {
475
657
  display: 'flex',
476
- alignItems: 'center',
477
- justifyContent: 'center',
478
- flexShrink: 0,
479
- }, children: isUser
480
- ? avatarConfig.userAvatar
481
- : avatarConfig.assistantAvatar })), _jsx(Box, { sx: {
482
- maxWidth: '85%',
658
+ gap: 2,
659
+ alignItems: 'baseline',
660
+ flexWrap: 'wrap',
661
+ flexDirection: isUser ? 'row-reverse' : 'row',
662
+ mb: 1,
663
+ }, children: [_jsx(Text, { sx: {
664
+ fontWeight: 'semibold',
665
+ fontSize: 1,
666
+ color: toneColorsOf(speaker.tone).fg,
667
+ }, children: speaker.name }), message.directedTo ? (_jsxs(_Fragment, { children: [_jsxs(Text, { sx: {
668
+ color: 'fg.muted',
669
+ fontSize: 0,
670
+ display: 'inline-flex',
671
+ alignItems: 'center',
672
+ gap: 1,
673
+ }, children: [message.steer ? 'steers' : 'asks', ' ', _jsx(ArrowRightIcon, { size: 12 })] }), _jsx(Text, { sx: {
674
+ fontWeight: 'semibold',
675
+ fontSize: 1,
676
+ color: toneColorsOf(message.directedTo.tone).fg,
677
+ }, children: message.directedTo.name })] })) : speaker.role ? (_jsx(Label, { size: "small", children: speaker.role })) : null, message.createdAt ? (_jsx(RelativeTime, { datetime: message.createdAt.toISOString(), sx: { fontSize: 0, color: 'fg.muted' } })) : null] })) : null, _jsxs(Box, { sx: {
483
678
  p: 2,
484
679
  overflowX: 'auto',
485
680
  borderRadius: 2,
486
- backgroundColor: isUser ? 'accent.emphasis' : 'canvas.subtle',
681
+ backgroundColor: isUser
682
+ ? 'accent.emphasis'
683
+ : speaker
684
+ ? toneColorsOf(speaker.tone).subtle
685
+ : 'canvas.subtle',
686
+ border: !isUser && speaker ? '1px solid' : undefined,
687
+ borderColor: !isUser && speaker
688
+ ? toneColorsOf(speaker.tone).muted
689
+ : undefined,
487
690
  // Use primary-button text token for better contrast when
488
691
  // accent.emphasis is bright (e.g. Matrix dark theme).
489
692
  color: isUser
490
693
  ? 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))'
491
694
  : 'fg.default',
492
695
  ...streamdownCodeBlockStyles,
493
- }, children: isUser ? (_jsx(Text, { sx: {
494
- fontSize: 1,
495
- whiteSpace: 'pre-wrap',
496
- wordBreak: 'break-word',
497
- }, children: getMessageText(message) })) : (_jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(getMessageText(message) || (isStreaming ? '...' : '')) }) })) })] }) }, message.id));
696
+ }, children: [message.toolChips?.length ? (_jsx(Box, { sx: { display: 'flex', gap: 1, flexWrap: 'wrap', mb: 2 }, children: message.toolChips.map((label, chipIndex) => (_jsx(Label, { variant: "secondary", size: "small", children: _jsxs(Box, { as: "span", sx: {
697
+ display: 'inline-flex',
698
+ gap: 1,
699
+ alignItems: 'center',
700
+ }, children: [_jsx(ToolsIcon, { size: 10 }), " ", label] }) }, `${label}-${chipIndex}`))) })) : null, isUser ? (_jsx(Text, { sx: {
701
+ fontSize: 1,
702
+ whiteSpace: 'pre-wrap',
703
+ wordBreak: 'break-word',
704
+ }, children: getMessageText(message) })) : message.live && !getMessageText(message) ? (_jsx(TypingDots, { size: 6 })) : (_jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(getMessageText(message) || (isStreaming ? '...' : '')) }) }))] }), renderMessageFooter ? (_jsx(Box, { sx: {
705
+ display: 'flex',
706
+ gap: 2,
707
+ alignItems: 'center',
708
+ mt: 1,
709
+ flexWrap: 'wrap',
710
+ flexDirection: isUser ? 'row-reverse' : 'row',
711
+ }, children: renderMessageFooter(message) })) : null] })] }) }, message.id));
712
+ };
713
+ return (_jsxs(_Fragment, { children: [displayItems.map((item, index) => {
714
+ const itemUI = renderItem(item, index);
715
+ const footer = footerAt(index);
716
+ if (itemUI === null && footer === null) {
717
+ return null;
718
+ }
719
+ return (_jsxs(Fragment, { children: [itemUI, footer] }, item.id));
498
720
  }), showLoadingIndicator && (isLoading || isStreaming) && (_jsx(Box, { sx: {
499
721
  display: 'flex',
500
722
  alignItems: 'flex-start',
@@ -517,27 +739,9 @@ export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoad
517
739
  }, children: avatarConfig.assistantAvatar })), _jsx(Box, { sx: {
518
740
  display: 'flex',
519
741
  alignItems: 'center',
520
- gap: '4px',
521
742
  p: 2,
522
743
  borderRadius: 2,
523
744
  bg: 'canvas.subtle',
524
745
  minHeight: '32px',
525
- }, children: [0, 0.2, 0.4].map((delay, i) => (_jsx(Box, { sx: {
526
- width: '8px',
527
- height: '8px',
528
- borderRadius: '50%',
529
- bg: 'fg.muted',
530
- animation: 'typingPulse 1.4s ease-in-out infinite',
531
- animationDelay: `${delay}s`,
532
- '@keyframes typingPulse': {
533
- '0%, 60%, 100%': {
534
- transform: 'scale(0.6)',
535
- opacity: 0.4,
536
- },
537
- '30%': {
538
- transform: 'scale(1)',
539
- opacity: 1,
540
- },
541
- },
542
- } }, i))) })] }) })), _jsx("div", { ref: messagesEndRef })] }));
746
+ }, children: _jsx(TypingDots, {}) })] }) })), _jsx("div", { ref: messagesEndRef })] }));
543
747
  }