@datalayer/agent-runtimes 1.0.2 → 1.0.4

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 (608) hide show
  1. package/README.md +14 -132
  2. package/lib/Agent.js +2 -2
  3. package/lib/AgentLexical.d.ts +1 -12
  4. package/lib/AgentLexical.js +3 -14
  5. package/lib/AgentNotebook.js +3 -3
  6. package/lib/App.js +2 -2
  7. package/lib/{components/chat/components → agents}/AgentDetails.d.ts +13 -2
  8. package/lib/{components/chat/components → agents}/AgentDetails.js +6 -12
  9. package/lib/api/agents.d.ts +47 -0
  10. package/lib/api/agents.js +106 -0
  11. package/lib/api/context.d.ts +17 -0
  12. package/lib/api/context.js +45 -0
  13. package/lib/api/evals.d.ts +27 -0
  14. package/lib/api/evals.js +63 -0
  15. package/lib/api/events.d.ts +17 -0
  16. package/lib/api/events.js +93 -0
  17. package/lib/{components/chat → api}/handler.js +1 -1
  18. package/lib/api/index.d.ts +15 -0
  19. package/lib/api/index.js +20 -0
  20. package/lib/api/notifications.d.ts +39 -0
  21. package/lib/api/notifications.js +103 -0
  22. package/lib/api/output.d.ts +28 -0
  23. package/lib/api/output.js +64 -0
  24. package/lib/api/tool-approvals.d.ts +62 -0
  25. package/lib/api/tool-approvals.js +145 -0
  26. package/lib/{components/chat/components → chat}/Chat.d.ts +26 -15
  27. package/lib/{components/chat/components → chat}/Chat.js +16 -16
  28. package/lib/{components/chat/components → chat}/ChatFloating.d.ts +17 -9
  29. package/lib/{components/chat/components → chat}/ChatFloating.js +17 -9
  30. package/lib/{components/chat/components → chat}/ChatInline.d.ts +2 -2
  31. package/lib/{components/chat/components → chat}/ChatInline.js +8 -6
  32. package/lib/{components/chat/components → chat}/ChatPopupStandalone.d.ts +3 -4
  33. package/lib/{components/chat/components → chat}/ChatPopupStandalone.js +6 -6
  34. package/lib/{components/chat/components → chat}/ChatSidebar.d.ts +14 -5
  35. package/lib/{components/chat/components → chat}/ChatSidebar.js +48 -26
  36. package/lib/{components/chat/components → chat}/ChatStandalone.d.ts +3 -4
  37. package/lib/{components/chat/components → chat}/ChatStandalone.js +5 -5
  38. package/lib/chat/base/ChatBase.d.ts +6 -0
  39. package/lib/chat/base/ChatBase.js +1338 -0
  40. package/lib/chat/display/EmptyState.d.ts +27 -0
  41. package/lib/chat/display/EmptyState.js +41 -0
  42. package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.d.ts +1 -1
  43. package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.js +1 -1
  44. package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.d.ts +1 -1
  45. package/lib/{components/chat/components/elements → chat/header}/ChatHeader.d.ts +1 -4
  46. package/lib/{components/chat/components/elements → chat/header}/ChatHeader.js +1 -1
  47. package/lib/chat/header/ChatHeaderBase.d.ts +38 -0
  48. package/lib/chat/header/ChatHeaderBase.js +83 -0
  49. package/lib/chat/index.d.ts +66 -0
  50. package/lib/chat/index.js +74 -0
  51. package/lib/chat/indicators/McpStatusIndicator.d.ts +9 -0
  52. package/lib/chat/indicators/McpStatusIndicator.js +128 -0
  53. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +10 -0
  54. package/lib/chat/indicators/SandboxStatusIndicator.js +175 -0
  55. package/lib/chat/indicators/index.d.ts +17 -0
  56. package/lib/chat/indicators/index.js +19 -0
  57. package/lib/chat/messages/ChatMessageList.d.ts +49 -0
  58. package/lib/chat/messages/ChatMessageList.js +332 -0
  59. package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.d.ts +2 -2
  60. package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.js +6 -4
  61. package/lib/{components/chat/components → chat}/parts/DynamicToolPart.d.ts +1 -1
  62. package/lib/{components/chat/components/elements → chat/parts}/MessagePart.d.ts +1 -1
  63. package/lib/{components/chat/components/elements → chat/parts}/MessagePart.js +4 -4
  64. package/lib/{components/chat/components → chat}/parts/ReasoningPart.js +1 -1
  65. package/lib/{components/chat/components → chat}/parts/TextPart.d.ts +1 -1
  66. package/lib/{components/chat/components → chat}/parts/ToolPart.js +1 -1
  67. package/lib/{components/chat/components → chat}/parts/index.d.ts +2 -1
  68. package/lib/{components/chat/components → chat}/parts/index.js +2 -1
  69. package/lib/chat/prompt/InputFooter.d.ts +43 -0
  70. package/lib/chat/prompt/InputFooter.js +135 -0
  71. package/lib/chat/prompt/InputPrompt.d.ts +60 -0
  72. package/lib/chat/prompt/InputPrompt.js +83 -0
  73. package/lib/chat/prompt/InputPromptFooter.d.ts +25 -0
  74. package/lib/chat/prompt/InputPromptFooter.js +15 -0
  75. package/lib/chat/prompt/InputPromptHeader.d.ts +15 -0
  76. package/lib/chat/prompt/InputPromptHeader.js +15 -0
  77. package/lib/chat/prompt/InputPromptLexical.d.ts +16 -0
  78. package/lib/chat/prompt/InputPromptLexical.js +122 -0
  79. package/lib/chat/prompt/InputPromptText.d.ts +24 -0
  80. package/lib/chat/prompt/InputPromptText.js +66 -0
  81. package/lib/chat/prompt/index.d.ts +11 -0
  82. package/lib/chat/prompt/index.js +15 -0
  83. package/lib/{components/chat/components → chat}/styles/streamdownStyles.d.ts +1 -1
  84. package/lib/chat/tools/ToolApprovalBanner.d.ts +31 -0
  85. package/lib/chat/tools/ToolApprovalBanner.js +62 -0
  86. package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.js +1 -1
  87. package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.d.ts +13 -4
  88. package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.js +18 -8
  89. package/lib/chat/tools/index.d.ts +8 -0
  90. package/lib/{components/chat/components/display → chat/tools}/index.js +3 -1
  91. package/lib/chat/usage/TokenUsageBar.d.ts +8 -0
  92. package/lib/chat/usage/TokenUsageBar.js +213 -0
  93. package/lib/client/AgentsMixin.d.ts +216 -0
  94. package/lib/client/AgentsMixin.js +388 -0
  95. package/lib/client/index.d.ts +6 -0
  96. package/lib/client/index.js +10 -0
  97. package/lib/components/NotificationEventCard.d.ts +8 -0
  98. package/lib/components/NotificationEventCard.js +177 -0
  99. package/lib/components/OutputCard.d.ts +8 -0
  100. package/lib/components/OutputCard.js +94 -0
  101. package/lib/components/ToolApprovalCard.d.ts +33 -0
  102. package/lib/components/ToolApprovalCard.js +78 -0
  103. package/lib/components/index.d.ts +3 -7
  104. package/lib/components/index.js +3 -4
  105. package/lib/{components → config}/AgentConfiguration.d.ts +43 -21
  106. package/lib/{components → config}/AgentConfiguration.js +48 -28
  107. package/lib/config/index.d.ts +2 -0
  108. package/lib/config/index.js +1 -0
  109. package/lib/{components/chat/components → context}/ContextInspector.js +38 -8
  110. package/lib/{components/chat/components → context}/ContextPanel.js +27 -6
  111. package/lib/context/CostTracker.d.ts +37 -0
  112. package/lib/context/CostTracker.js +124 -0
  113. package/lib/context/TokenUsageChart.d.ts +10 -0
  114. package/lib/context/TokenUsageChart.js +288 -0
  115. package/lib/examples/A2UiComponentGalleryExample.d.ts +20 -0
  116. package/lib/examples/A2UiComponentGalleryExample.js +568 -0
  117. package/lib/examples/A2UiContactCardExample.d.ts +21 -0
  118. package/lib/examples/A2UiContactCardExample.js +432 -0
  119. package/lib/examples/A2UiRestaurantExample.d.ts +11 -3
  120. package/lib/examples/A2UiRestaurantExample.js +63 -98
  121. package/lib/examples/A2UiViewerExample.d.ts +21 -0
  122. package/lib/examples/A2UiViewerExample.js +563 -0
  123. package/lib/examples/AgUiAgenticExample.js +3 -3
  124. package/lib/examples/AgUiBackendToolRenderingExample.js +3 -3
  125. package/lib/examples/{AgUiHaikuGenUIExample.d.ts → AgUiHaikuGenUiExample.d.ts} +4 -4
  126. package/lib/examples/{AgUiHaikuGenUIExample.js → AgUiHaikuGenUiExample.js} +7 -7
  127. package/lib/examples/AgUiHumanInTheLoopExample.js +3 -3
  128. package/lib/examples/AgUiSharedStateExample.js +3 -3
  129. package/lib/examples/{AgUiToolsBasedGenUIExample.d.ts → AgUiToolsBasedGenUiExample.d.ts} +4 -4
  130. package/lib/examples/{AgUiToolsBasedGenUIExample.js → AgUiToolsBasedGenUiExample.js} +7 -7
  131. package/lib/examples/AgentCheckpointsExample.d.ts +19 -0
  132. package/lib/examples/AgentCheckpointsExample.js +500 -0
  133. package/lib/examples/AgentCodemodeExample.d.ts +14 -0
  134. package/lib/examples/AgentCodemodeExample.js +256 -0
  135. package/lib/examples/AgentEvalsExample.d.ts +14 -0
  136. package/lib/examples/AgentEvalsExample.js +210 -0
  137. package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
  138. package/lib/examples/AgentGuardrailsExample.js +212 -0
  139. package/lib/examples/AgentMemoryExample.d.ts +14 -0
  140. package/lib/examples/AgentMemoryExample.js +228 -0
  141. package/lib/examples/AgentMonitoringExample.d.ts +13 -0
  142. package/lib/examples/AgentMonitoringExample.js +305 -0
  143. package/lib/examples/AgentNotificationsExample.d.ts +14 -0
  144. package/lib/examples/AgentNotificationsExample.js +267 -0
  145. package/lib/examples/AgentOtelExample.d.ts +25 -0
  146. package/lib/examples/AgentOtelExample.js +281 -0
  147. package/lib/examples/AgentOutputsExample.d.ts +14 -0
  148. package/lib/examples/AgentOutputsExample.js +205 -0
  149. package/lib/examples/AgentSandboxExample.d.ts +17 -0
  150. package/lib/examples/AgentSandboxExample.js +490 -0
  151. package/lib/examples/AgentSkillsExample.d.ts +3 -0
  152. package/lib/examples/AgentSkillsExample.js +284 -0
  153. package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
  154. package/lib/examples/AgentToolApprovalsExample.js +737 -0
  155. package/lib/examples/AgentTriggersExample.d.ts +14 -0
  156. package/lib/examples/AgentTriggersExample.js +1090 -0
  157. package/lib/examples/{AgentRuntimeFormExample.d.ts → AgentspecExample.d.ts} +3 -4
  158. package/lib/examples/{AgentRuntimeFormExample.js → AgentspecExample.js} +92 -34
  159. package/lib/examples/{JupyterCellExample.js → CellSimpleExample.js} +1 -1
  160. package/lib/examples/{AgentRuntimeCustomExample.js → ChatCustomExample.js} +3 -3
  161. package/lib/examples/{AgentRuntimeChatExample.js → ChatExample.js} +6 -14
  162. package/lib/examples/{AgentRuntimeStandaloneExample.js → ChatStandaloneExample.js} +2 -2
  163. package/lib/examples/CopilotKitLexicalExample.d.ts +3 -14
  164. package/lib/examples/CopilotKitLexicalExample.js +4 -15
  165. package/lib/examples/CopilotKitNotebookExample.js +4 -6
  166. package/lib/examples/DatalayerNotebookExample.js +2 -2
  167. package/lib/examples/{AgentRuntimeLexical2Example.d.ts → Lexical2Example.d.ts} +2 -13
  168. package/lib/examples/{AgentRuntimeLexical2Example.js → Lexical2Example.js} +8 -17
  169. package/lib/examples/{AgentRuntimeLexicalExample.d.ts → LexicalExample.d.ts} +1 -12
  170. package/lib/examples/{AgentRuntimeLexicalExample.js → LexicalExample.js} +28 -27
  171. package/lib/examples/{AgentRuntimeLexicalSidebarExample.d.ts → LexicalSidebarExample.d.ts} +2 -13
  172. package/lib/examples/{AgentRuntimeLexicalSidebarExample.js → LexicalSidebarExample.js} +6 -18
  173. package/lib/examples/{AgentRuntimeNotebookExample.js → NotebookExample.js} +14 -10
  174. package/lib/examples/{AgentRuntimeNotebookSidebarExample.js → NotebookSidebarExample.js} +5 -8
  175. package/lib/examples/{JupyterNotebookExample.js → NotebookSimpleExample.js} +2 -2
  176. package/lib/examples/ag-ui/weather/InlineWeatherCard.js +1 -1
  177. package/lib/examples/components/ErrorView.d.ts +14 -0
  178. package/lib/examples/components/ErrorView.js +20 -0
  179. package/lib/examples/components/ExampleWrapper.d.ts +12 -0
  180. package/lib/examples/components/ExampleWrapper.js +16 -0
  181. package/lib/examples/components/Header.d.ts +2 -2
  182. package/lib/examples/components/HeaderControls.js +1 -1
  183. package/lib/examples/components/LexicalEditor.d.ts +1 -12
  184. package/lib/examples/components/LexicalEditor.js +1 -12
  185. package/lib/examples/components/MainContent.d.ts +4 -11
  186. package/lib/examples/components/MainContent.js +6 -60
  187. package/lib/examples/components/index.d.ts +3 -0
  188. package/lib/examples/components/index.js +2 -0
  189. package/lib/examples/example-selector.d.ts +1 -1
  190. package/lib/examples/example-selector.js +35 -22
  191. package/lib/examples/index.d.ts +26 -13
  192. package/lib/examples/index.js +26 -12
  193. package/lib/examples/main.d.ts +7 -0
  194. package/lib/examples/main.js +21 -43
  195. package/lib/examples/utils/examplesStore.d.ts +4 -0
  196. package/lib/examples/{stores → utils}/examplesStore.js +1 -1
  197. package/lib/examples/utils/notebooks/Empty.ipynb.json +33 -0
  198. package/lib/examples/utils/notebooks/NotebookExample2.ipynb.json +48 -0
  199. package/lib/examples/utils/themeStore.d.ts +8 -0
  200. package/lib/examples/utils/themeStore.js +14 -0
  201. package/lib/extensions/A2UIExtension.d.ts +65 -0
  202. package/lib/extensions/A2UIExtension.js +202 -0
  203. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.d.ts +2 -3
  204. package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.js +0 -2
  205. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.d.ts +2 -2
  206. package/lib/{components/chat/extensions → extensions}/MCPUIExtension.js +1 -1
  207. package/lib/extensions/index.d.ts +9 -0
  208. package/lib/{components/chat/extensions → extensions}/index.js +2 -2
  209. package/lib/hooks/index.d.ts +33 -16
  210. package/lib/hooks/index.js +33 -16
  211. package/lib/hooks/useAIAgentsWebSocket.d.ts +29 -0
  212. package/lib/hooks/useAIAgentsWebSocket.js +136 -0
  213. package/lib/hooks/{useAGUI.d.ts → useAgUi.d.ts} +2 -2
  214. package/lib/hooks/{useAGUI.js → useAgUi.js} +2 -2
  215. package/lib/hooks/useAgents.d.ts +150 -11
  216. package/lib/hooks/useAgents.js +623 -61
  217. package/lib/hooks/{useAgentStore.d.ts → useAgentsCatalog.d.ts} +3 -8
  218. package/lib/hooks/{useAgentStore.js → useAgentsCatalog.js} +9 -3
  219. package/lib/hooks/useAgentsRegistry.d.ts +10 -0
  220. package/lib/hooks/useAgentsRegistry.js +20 -0
  221. package/lib/hooks/useAgentsService.d.ts +22 -0
  222. package/lib/hooks/useAgentsService.js +146 -0
  223. package/lib/hooks/useChat.d.ts +2 -2
  224. package/lib/hooks/useChat.js +14 -8
  225. package/lib/hooks/useCheckpoints.d.ts +176 -0
  226. package/lib/hooks/useCheckpoints.js +466 -0
  227. package/lib/hooks/useConfig.d.ts +11 -0
  228. package/lib/hooks/useConfig.js +46 -0
  229. package/lib/hooks/useContextSnapshot.d.ts +11 -0
  230. package/lib/hooks/useContextSnapshot.js +44 -0
  231. package/lib/hooks/useMonitoring.d.ts +24 -0
  232. package/lib/hooks/useMonitoring.js +111 -0
  233. package/lib/hooks/useNotifications.d.ts +67 -0
  234. package/lib/hooks/useNotifications.js +208 -0
  235. package/lib/hooks/useSandbox.d.ts +12 -0
  236. package/lib/hooks/useSandbox.js +49 -0
  237. package/lib/hooks/useSkills.d.ts +13 -0
  238. package/lib/hooks/useSkills.js +46 -0
  239. package/lib/hooks/useToolApprovals.d.ts +45 -0
  240. package/lib/hooks/useToolApprovals.js +126 -0
  241. package/lib/hooks/useTools.d.ts +4 -4
  242. package/lib/hooks/useTools.js +2 -2
  243. package/lib/hooks/{useVercelChat.d.ts → useVercelAI.d.ts} +3 -3
  244. package/lib/hooks/{useVercelChat.js → useVercelAI.js} +2 -2
  245. package/lib/{components/chat/components → identity}/AgentIdentity.d.ts +1 -1
  246. package/lib/{components/chat/components → identity}/AgentIdentity.js +4 -3
  247. package/lib/identity/index.d.ts +1 -0
  248. package/lib/identity/index.js +2 -0
  249. package/lib/index.d.ts +4 -3
  250. package/lib/index.js +3 -2
  251. package/lib/{components/chat/inference → inference}/BaseInferenceProvider.d.ts +3 -3
  252. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.d.ts +3 -3
  253. package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.js +1 -1
  254. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.d.ts +2 -2
  255. package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.js +1 -1
  256. package/lib/{components/chat/inference → inference}/index.d.ts +1 -1
  257. package/lib/{components/chat/inference → inference}/index.js +1 -1
  258. package/lib/lexical/ChatInlinePlugin.d.ts +1 -1
  259. package/lib/lexical/ChatInlinePlugin.js +1 -1
  260. package/lib/{components → mcp}/McpServerManager.d.ts +1 -2
  261. package/lib/mcp/index.d.ts +1 -0
  262. package/lib/{specs/agents/codeai → mcp}/index.js +1 -1
  263. package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.d.ts +3 -3
  264. package/lib/{components/chat/middleware → middleware}/index.d.ts +1 -1
  265. package/lib/{components/chat/middleware → middleware}/index.js +1 -1
  266. package/lib/{components/chat/protocols → protocols}/A2AAdapter.d.ts +6 -6
  267. package/lib/{components/chat/protocols → protocols}/A2AAdapter.js +3 -3
  268. package/lib/{components/chat/protocols → protocols}/ACPAdapter.d.ts +6 -6
  269. package/lib/{components/chat/protocols → protocols}/ACPAdapter.js +4 -4
  270. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.d.ts +14 -6
  271. package/lib/{components/chat/protocols → protocols}/AGUIAdapter.js +72 -10
  272. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.d.ts +6 -6
  273. package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.js +1 -1
  274. package/lib/{components/chat/protocols → protocols}/VercelAIAdapter.d.ts +33 -7
  275. package/lib/protocols/VercelAIAdapter.js +748 -0
  276. package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
  277. package/lib/{components/chat/protocols → protocols}/index.js +1 -1
  278. package/lib/shims/json5.d.ts +4 -0
  279. package/lib/shims/json5.js +8 -0
  280. package/lib/specs/agents/agents.d.ts +54 -0
  281. package/lib/specs/agents/agents.js +1489 -0
  282. package/lib/specs/agents/index.js +15 -12
  283. package/lib/specs/envvars.d.ts +11 -19
  284. package/lib/specs/envvars.js +52 -38
  285. package/lib/specs/evals.d.ts +20 -0
  286. package/lib/specs/evals.js +133 -0
  287. package/lib/specs/events.d.ts +26 -0
  288. package/lib/specs/events.js +140 -0
  289. package/lib/specs/frontendTools.d.ts +14 -0
  290. package/lib/specs/frontendTools.js +53 -0
  291. package/lib/specs/guardrails.d.ts +29 -0
  292. package/lib/specs/guardrails.js +310 -0
  293. package/lib/specs/index.d.ts +15 -2
  294. package/lib/specs/index.js +15 -2
  295. package/lib/specs/mcpServers.d.ts +13 -11
  296. package/lib/specs/mcpServers.js +75 -50
  297. package/lib/specs/memory.d.ts +36 -0
  298. package/lib/specs/memory.js +112 -0
  299. package/lib/specs/models.d.ts +21 -34
  300. package/lib/specs/models.js +66 -66
  301. package/lib/specs/notifications.d.ts +17 -0
  302. package/lib/specs/notifications.js +103 -0
  303. package/lib/specs/outputs.d.ts +19 -0
  304. package/lib/specs/outputs.js +106 -0
  305. package/lib/specs/skills.d.ts +7 -16
  306. package/lib/specs/skills.js +95 -18
  307. package/lib/specs/teams/index.d.ts +17 -0
  308. package/lib/specs/teams/index.js +35 -0
  309. package/lib/specs/teams/teams.d.ts +27 -0
  310. package/lib/specs/teams/teams.js +1000 -0
  311. package/lib/specs/tools.d.ts +15 -0
  312. package/lib/specs/tools.js +86 -0
  313. package/lib/specs/triggers.d.ts +15 -0
  314. package/lib/specs/triggers.js +67 -0
  315. package/lib/stores/agentsStore.d.ts +123 -0
  316. package/lib/stores/agentsStore.js +270 -0
  317. package/lib/{components/chat/store → stores}/chatStore.d.ts +3 -2
  318. package/lib/{components/chat/store → stores}/chatStore.js +2 -2
  319. package/lib/{components/chat/store → stores}/conversationStore.d.ts +1 -1
  320. package/lib/{components/chat/store → stores}/conversationStore.js +1 -1
  321. package/lib/{components/chat/store → stores}/index.d.ts +3 -2
  322. package/lib/{components/chat/store → stores}/index.js +3 -2
  323. package/lib/{components/chat/tools → tools}/ToolExecutor.d.ts +2 -2
  324. package/lib/{components/chat/tools → tools}/ToolExecutor.js +1 -1
  325. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +1 -1
  326. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +14 -10
  327. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +31 -21
  328. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +1 -1
  329. package/lib/tools/index.d.ts +3 -0
  330. package/lib/tools/index.js +3 -7
  331. package/lib/types/a2a.d.ts +39 -0
  332. package/lib/types/acp.d.ts +21 -0
  333. package/lib/types/ag-ui.d.ts +25 -0
  334. package/lib/types/agents-lifecycle.d.ts +36 -0
  335. package/lib/types/agents.d.ts +80 -0
  336. package/lib/types/agents.js +22 -0
  337. package/lib/types/agentspecs.d.ts +90 -0
  338. package/lib/{components/chat/components/base/ChatBase.d.ts → types/chat.d.ts} +59 -99
  339. package/lib/types/checkpoints.d.ts +32 -0
  340. package/lib/types/checkpoints.js +5 -0
  341. package/lib/types/config.d.ts +67 -0
  342. package/lib/{runtime/types.js → types/config.js} +2 -2
  343. package/lib/types/connection.d.ts +31 -0
  344. package/lib/types/connection.js +5 -0
  345. package/lib/types/context.d.ts +67 -0
  346. package/lib/types/context.js +5 -0
  347. package/lib/types/cost.d.ts +42 -0
  348. package/lib/types/cost.js +5 -0
  349. package/lib/types/envvars.d.ts +21 -0
  350. package/lib/types/envvars.js +5 -0
  351. package/lib/types/evals.d.ts +66 -0
  352. package/lib/types/evals.js +5 -0
  353. package/lib/types/events.d.ts +49 -0
  354. package/lib/types/events.js +5 -0
  355. package/lib/types/eventspecs.d.ts +39 -0
  356. package/lib/types/eventspecs.js +5 -0
  357. package/lib/types/examples.d.ts +31 -0
  358. package/lib/types/examples.js +5 -0
  359. package/lib/{components/chat/types → types}/execution.d.ts +10 -1
  360. package/lib/{components/chat/types/extension.d.ts → types/extensions.d.ts} +3 -3
  361. package/lib/types/guardrails.d.ts +106 -0
  362. package/lib/types/guardrails.js +5 -0
  363. package/lib/types/index.d.ts +36 -2
  364. package/lib/types/index.js +35 -2
  365. package/lib/{components/chat/types → types}/inference.d.ts +3 -3
  366. package/lib/types/inference.js +5 -0
  367. package/lib/types/mcp.d.ts +117 -0
  368. package/lib/types/mcp.js +27 -0
  369. package/lib/types/memory.d.ts +23 -0
  370. package/lib/types/memory.js +5 -0
  371. package/lib/{components/chat/types/message.d.ts → types/messages.d.ts} +20 -1
  372. package/lib/{components/chat/types → types}/middleware.d.ts +3 -3
  373. package/lib/types/models.d.ts +63 -0
  374. package/lib/types/models.js +5 -0
  375. package/lib/types/notifications.d.ts +85 -0
  376. package/lib/types/notifications.js +5 -0
  377. package/lib/types/outputs.d.ts +51 -0
  378. package/lib/types/outputs.js +5 -0
  379. package/lib/{components/chat/types → types}/protocol.d.ts +37 -99
  380. package/lib/types/protocol.js +5 -0
  381. package/lib/types/sandbox.d.ts +27 -0
  382. package/lib/types/sandbox.js +24 -0
  383. package/lib/types/skills.d.ts +74 -0
  384. package/lib/types/skills.js +5 -0
  385. package/lib/types/teams.d.ts +133 -0
  386. package/lib/types/teams.js +5 -0
  387. package/lib/types/tool-approvals.d.ts +39 -0
  388. package/lib/types/tool-approvals.js +5 -0
  389. package/lib/{components/chat/types/tool.d.ts → types/tools.d.ts} +61 -4
  390. package/lib/types/triggers.d.ts +48 -0
  391. package/lib/types/triggers.js +5 -0
  392. package/lib/types/usage.d.ts +36 -0
  393. package/lib/types/usage.js +5 -0
  394. package/lib/utils/index.d.ts +1 -0
  395. package/lib/utils/index.js +5 -0
  396. package/lib/utils/utils.d.ts +60 -0
  397. package/lib/utils/utils.js +205 -0
  398. package/package.json +13 -14
  399. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  400. package/scripts/codegen/generate_agents.py +377 -61
  401. package/scripts/codegen/generate_envvars.py +36 -35
  402. package/scripts/codegen/generate_evals.py +279 -0
  403. package/scripts/codegen/generate_events.py +320 -0
  404. package/scripts/codegen/generate_frontend_tools.py +266 -0
  405. package/scripts/codegen/generate_guardrails.py +475 -0
  406. package/scripts/codegen/generate_mcp_servers.py +36 -9
  407. package/scripts/codegen/generate_memory.py +468 -0
  408. package/scripts/codegen/generate_models.py +22 -46
  409. package/scripts/codegen/generate_notifications.py +309 -0
  410. package/scripts/codegen/generate_outputs.py +267 -0
  411. package/scripts/codegen/generate_skills.py +108 -51
  412. package/scripts/codegen/generate_teams.py +922 -0
  413. package/scripts/codegen/generate_tools.py +346 -0
  414. package/scripts/codegen/generate_triggers.py +295 -0
  415. package/scripts/codegen/versioning.py +53 -0
  416. package/style/primer-primitives.css +1 -6
  417. package/lib/components/chat/components/base/ChatBase.js +0 -2242
  418. package/lib/components/chat/components/base/InputPrompt.d.ts +0 -42
  419. package/lib/components/chat/components/base/InputPrompt.js +0 -131
  420. package/lib/components/chat/components/display/index.d.ts +0 -6
  421. package/lib/components/chat/components/index.d.ts +0 -26
  422. package/lib/components/chat/components/index.js +0 -39
  423. package/lib/components/chat/extensions/A2UIExtension.d.ts +0 -87
  424. package/lib/components/chat/extensions/A2UIExtension.js +0 -312
  425. package/lib/components/chat/extensions/index.d.ts +0 -10
  426. package/lib/components/chat/index.d.ts +0 -61
  427. package/lib/components/chat/index.js +0 -76
  428. package/lib/components/chat/protocols/VercelAIAdapter.js +0 -315
  429. package/lib/components/chat/tools/index.d.ts +0 -8
  430. package/lib/components/chat/tools/index.js +0 -11
  431. package/lib/components/chat/types/index.d.ts +0 -12
  432. package/lib/components/chat/types/index.js +0 -17
  433. package/lib/components/sparklines/Sparklines.d.ts +0 -16
  434. package/lib/components/sparklines/Sparklines.js +0 -65
  435. package/lib/components/sparklines/SparklinesLine.d.ts +0 -8
  436. package/lib/components/sparklines/SparklinesLine.js +0 -37
  437. package/lib/components/sparklines/dataProcessing.d.ts +0 -25
  438. package/lib/components/sparklines/dataProcessing.js +0 -35
  439. package/lib/components/sparklines/index.d.ts +0 -4
  440. package/lib/components/sparklines/index.js +0 -7
  441. package/lib/components/sparklines/types.d.ts +0 -36
  442. package/lib/examples/stores/examplesStore.d.ts +0 -5
  443. package/lib/examples/stores/notebooks/Empty.ipynb.json +0 -33
  444. package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +0 -48
  445. package/lib/examples/stores/themeStore.d.ts +0 -33
  446. package/lib/examples/stores/themeStore.js +0 -38
  447. package/lib/hooks/useAgentRuntimes.d.ts +0 -350
  448. package/lib/hooks/useAgentRuntimes.js +0 -78
  449. package/lib/hooks/useKeyboardShortcuts.d.ts +0 -47
  450. package/lib/hooks/useKeyboardShortcuts.js +0 -153
  451. package/lib/hooks/useMobile.d.ts +0 -1
  452. package/lib/hooks/useMobile.js +0 -19
  453. package/lib/hooks/useNotebookAIAgent.d.ts +0 -8
  454. package/lib/hooks/useNotebookAIAgent.js +0 -73
  455. package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +0 -7
  456. package/lib/renderers/a2ui/components/A2UIRenderer.js +0 -102
  457. package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +0 -7
  458. package/lib/renderers/a2ui/components/SurfaceRenderer.js +0 -101
  459. package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +0 -9
  460. package/lib/renderers/a2ui/components/content/AudioPlayer.js +0 -38
  461. package/lib/renderers/a2ui/components/content/Divider.d.ts +0 -9
  462. package/lib/renderers/a2ui/components/content/Divider.js +0 -35
  463. package/lib/renderers/a2ui/components/content/Icon.d.ts +0 -9
  464. package/lib/renderers/a2ui/components/content/Icon.js +0 -110
  465. package/lib/renderers/a2ui/components/content/Image.d.ts +0 -9
  466. package/lib/renderers/a2ui/components/content/Image.js +0 -61
  467. package/lib/renderers/a2ui/components/content/Text.d.ts +0 -9
  468. package/lib/renderers/a2ui/components/content/Text.js +0 -64
  469. package/lib/renderers/a2ui/components/content/Video.d.ts +0 -9
  470. package/lib/renderers/a2ui/components/content/Video.js +0 -37
  471. package/lib/renderers/a2ui/components/content/index.d.ts +0 -6
  472. package/lib/renderers/a2ui/components/content/index.js +0 -25
  473. package/lib/renderers/a2ui/components/index.d.ts +0 -5
  474. package/lib/renderers/a2ui/components/index.js +0 -24
  475. package/lib/renderers/a2ui/components/interactive/Button.d.ts +0 -11
  476. package/lib/renderers/a2ui/components/interactive/Button.js +0 -71
  477. package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +0 -9
  478. package/lib/renderers/a2ui/components/interactive/CheckBox.js +0 -48
  479. package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +0 -9
  480. package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +0 -62
  481. package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +0 -9
  482. package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +0 -73
  483. package/lib/renderers/a2ui/components/interactive/Slider.d.ts +0 -9
  484. package/lib/renderers/a2ui/components/interactive/Slider.js +0 -53
  485. package/lib/renderers/a2ui/components/interactive/TextField.d.ts +0 -9
  486. package/lib/renderers/a2ui/components/interactive/TextField.js +0 -72
  487. package/lib/renderers/a2ui/components/interactive/index.d.ts +0 -6
  488. package/lib/renderers/a2ui/components/interactive/index.js +0 -25
  489. package/lib/renderers/a2ui/components/layout/Card.d.ts +0 -11
  490. package/lib/renderers/a2ui/components/layout/Card.js +0 -30
  491. package/lib/renderers/a2ui/components/layout/Column.d.ts +0 -11
  492. package/lib/renderers/a2ui/components/layout/Column.js +0 -65
  493. package/lib/renderers/a2ui/components/layout/List.d.ts +0 -11
  494. package/lib/renderers/a2ui/components/layout/List.js +0 -55
  495. package/lib/renderers/a2ui/components/layout/Modal.d.ts +0 -11
  496. package/lib/renderers/a2ui/components/layout/Modal.js +0 -58
  497. package/lib/renderers/a2ui/components/layout/Row.d.ts +0 -11
  498. package/lib/renderers/a2ui/components/layout/Row.js +0 -65
  499. package/lib/renderers/a2ui/components/layout/Tabs.d.ts +0 -11
  500. package/lib/renderers/a2ui/components/layout/Tabs.js +0 -48
  501. package/lib/renderers/a2ui/components/layout/index.d.ts +0 -6
  502. package/lib/renderers/a2ui/components/layout/index.js +0 -25
  503. package/lib/renderers/a2ui/context/A2UIContext.d.ts +0 -17
  504. package/lib/renderers/a2ui/context/A2UIContext.js +0 -54
  505. package/lib/renderers/a2ui/context/ThemeContext.d.ts +0 -20
  506. package/lib/renderers/a2ui/context/ThemeContext.js +0 -333
  507. package/lib/renderers/a2ui/hooks/useA2UI.d.ts +0 -36
  508. package/lib/renderers/a2ui/hooks/useA2UI.js +0 -62
  509. package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +0 -8
  510. package/lib/renderers/a2ui/hooks/useDataBinding.js +0 -83
  511. package/lib/renderers/a2ui/index.d.ts +0 -9
  512. package/lib/renderers/a2ui/index.js +0 -28
  513. package/lib/renderers/a2ui/lib/utils.d.ts +0 -11
  514. package/lib/renderers/a2ui/lib/utils.js +0 -38
  515. package/lib/renderers/a2ui/types/index.d.ts +0 -17
  516. package/lib/runtime/index.d.ts +0 -38
  517. package/lib/runtime/index.js +0 -40
  518. package/lib/runtime/runtimeStore.d.ts +0 -76
  519. package/lib/runtime/runtimeStore.js +0 -184
  520. package/lib/runtime/types.d.ts +0 -84
  521. package/lib/runtime/useAgentConnection.d.ts +0 -45
  522. package/lib/runtime/useAgentConnection.js +0 -112
  523. package/lib/runtime/useAgentRuntime.d.ts +0 -93
  524. package/lib/runtime/useAgentRuntime.js +0 -125
  525. package/lib/specs/agents/codeai/agents.d.ts +0 -28
  526. package/lib/specs/agents/codeai/agents.js +0 -179
  527. package/lib/specs/agents/codeai/index.d.ts +0 -1
  528. package/lib/specs/agents/codemode-paper/agents.d.ts +0 -31
  529. package/lib/specs/agents/codemode-paper/agents.js +0 -378
  530. package/lib/specs/agents/codemode-paper/index.d.ts +0 -1
  531. package/lib/specs/agents/codemode-paper/index.js +0 -5
  532. package/lib/specs/agents/datalayer-ai/agents.d.ts +0 -31
  533. package/lib/specs/agents/datalayer-ai/agents.js +0 -352
  534. package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
  535. package/lib/specs/agents/datalayer-ai/index.js +0 -5
  536. package/lib/specs/agents/mocks/agents.d.ts +0 -43
  537. package/lib/specs/agents/mocks/agents.js +0 -2293
  538. package/lib/specs/agents/mocks/index.d.ts +0 -1
  539. package/lib/specs/agents/mocks/index.js +0 -5
  540. package/lib/state/index.d.ts +0 -1
  541. package/lib/state/index.js +0 -5
  542. package/lib/state/substates/AIAgentState.d.ts +0 -80
  543. package/lib/state/substates/AIAgentState.js +0 -108
  544. package/lib/state/substates/index.d.ts +0 -1
  545. package/lib/state/substates/index.js +0 -5
  546. package/lib/types/AIAgent.d.ts +0 -17
  547. package/lib/types/Types.d.ts +0 -217
  548. /package/lib/{components/chat → api}/handler.d.ts +0 -0
  549. /package/lib/{renderers/index.d.ts → api/utils.d.ts} +0 -0
  550. /package/lib/{renderers/index.js → api/utils.js} +0 -0
  551. /package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.js +0 -0
  552. /package/lib/{components/chat/components → chat}/parts/DynamicToolPart.js +0 -0
  553. /package/lib/{components/chat/components → chat}/parts/ReasoningPart.d.ts +0 -0
  554. /package/lib/{components/chat/components → chat}/parts/TextPart.js +0 -0
  555. /package/lib/{components/chat/components → chat}/parts/ToolPart.d.ts +0 -0
  556. /package/lib/{components/chat/components → chat}/styles/streamdownStyles.js +0 -0
  557. /package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.d.ts +0 -0
  558. /package/lib/{components/chat/components → context}/ContextDistribution.d.ts +0 -0
  559. /package/lib/{components/chat/components → context}/ContextDistribution.js +0 -0
  560. /package/lib/{components/chat/components → context}/ContextInspector.d.ts +0 -0
  561. /package/lib/{components/chat/components → context}/ContextPanel.d.ts +0 -0
  562. /package/lib/{components/chat/components → context}/ContextUsage.d.ts +0 -0
  563. /package/lib/{components/chat/components → context}/ContextUsage.js +0 -0
  564. /package/lib/examples/{JupyterCellExample.d.ts → CellSimpleExample.d.ts} +0 -0
  565. /package/lib/examples/{AgentRuntimeCustomExample.d.ts → ChatCustomExample.d.ts} +0 -0
  566. /package/lib/examples/{AgentRuntimeChatExample.d.ts → ChatExample.d.ts} +0 -0
  567. /package/lib/examples/{AgentRuntimeStandaloneExample.d.ts → ChatStandaloneExample.d.ts} +0 -0
  568. /package/lib/examples/{AgentRuntimeNotebookExample.d.ts → NotebookExample.d.ts} +0 -0
  569. /package/lib/examples/{AgentRuntimeNotebookSidebarExample.d.ts → NotebookSidebarExample.d.ts} +0 -0
  570. /package/lib/examples/{JupyterNotebookExample.d.ts → NotebookSimpleExample.d.ts} +0 -0
  571. /package/lib/examples/{stores → utils}/agents/earthquake-detector.ipynb.json +0 -0
  572. /package/lib/examples/{stores → utils}/agents/earthquake-detector.json +0 -0
  573. /package/lib/examples/{stores → utils}/agents/earthquake-detector.lexical.json +0 -0
  574. /package/lib/examples/{stores → utils}/agents/sales-forecaster.ipynb.json +0 -0
  575. /package/lib/examples/{stores → utils}/agents/sales-forecaster.json +0 -0
  576. /package/lib/examples/{stores → utils}/agents/sales-forecaster.lexical.json +0 -0
  577. /package/lib/examples/{stores → utils}/agents/social-post-generator.ipynb.json +0 -0
  578. /package/lib/examples/{stores → utils}/agents/social-post-generator.json +0 -0
  579. /package/lib/examples/{stores → utils}/agents/social-post-generator.lexical.json +0 -0
  580. /package/lib/examples/{stores → utils}/agents/stock-market.ipynb.json +0 -0
  581. /package/lib/examples/{stores → utils}/agents/stock-market.json +0 -0
  582. /package/lib/examples/{stores → utils}/agents/stock-market.lexical.json +0 -0
  583. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExample.ipynb.json +0 -0
  584. /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -0
  585. /package/lib/examples/{stores → utils}/notebooks/Lite.ipynb.json +0 -0
  586. /package/lib/examples/{stores → utils}/notebooks/Matplotlib.ipynb.json +0 -0
  587. /package/lib/examples/{stores → utils}/notebooks/NotebookExample1.ipynb.json +0 -0
  588. /package/lib/examples/{stores → utils}/notebooks/NotebookOutputs.ipynb.json +0 -0
  589. /package/lib/examples/{stores → utils}/notebooks/NotebookToCExample.ipynb.json +0 -0
  590. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.d.ts +0 -0
  591. /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.js +0 -0
  592. /package/lib/examples/{stores → utils}/notebooks/PyGWalker.ipynb.json +0 -0
  593. /package/lib/examples/{stores → utils}/themedProvider.d.ts +0 -0
  594. /package/lib/examples/{stores → utils}/themedProvider.js +0 -0
  595. /package/lib/{components/chat/inference → inference}/BaseInferenceProvider.js +0 -0
  596. /package/lib/{components → mcp}/McpServerManager.js +0 -0
  597. /package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.js +0 -0
  598. /package/lib/{components/chat/types/inference.js → types/a2a.js} +0 -0
  599. /package/lib/{components/chat/types/protocol.js → types/acp.js} +0 -0
  600. /package/lib/{components/sparklines/types.js → types/ag-ui.js} +0 -0
  601. /package/lib/{renderers/a2ui/types/index.js → types/agents-lifecycle.js} +0 -0
  602. /package/lib/types/{AIAgent.js → agentspecs.js} +0 -0
  603. /package/lib/types/{Types.js → chat.js} +0 -0
  604. /package/lib/{components/chat/types → types}/execution.js +0 -0
  605. /package/lib/{components/chat/types/extension.js → types/extensions.js} +0 -0
  606. /package/lib/{components/chat/types/message.js → types/messages.js} +0 -0
  607. /package/lib/{components/chat/types → types}/middleware.js +0 -0
  608. /package/lib/{components/chat/types/tool.js → types/tools.js} +0 -0
@@ -0,0 +1,175 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * SandboxStatusIndicator — Round coloured dot that shows the
8
+ * real-time sandbox execution status via a WebSocket connection.
9
+ *
10
+ * Aggregate logic
11
+ * ───────────────
12
+ * - variant === "unavailable" → hidden
13
+ * - sandbox_running === false → "stopped" (gray)
14
+ * - is_executing === false → "idle" (green)
15
+ * - is_executing === true → "executing" (blue, pulsing)
16
+ *
17
+ * The component connects to the `/configure/sandbox/ws` WebSocket
18
+ * and receives status updates in real time. It can also send
19
+ * an interrupt request via `{"action": "interrupt"}`.
20
+ *
21
+ * @module chat/indicators/SandboxStatusIndicator
22
+ */
23
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
24
+ import { Tooltip } from '@primer/react';
25
+ import { Box } from '@datalayer/primer-addons';
26
+ import { SANDBOX_STATUS_COLORS, SANDBOX_STATUS_LABELS, } from '../../types/sandbox';
27
+ /* ── Helpers ───────────────────────────────────────────── */
28
+ function getWsUrl(apiBase, authToken, agentId) {
29
+ if (typeof window === 'undefined')
30
+ return '';
31
+ const base = apiBase
32
+ ? apiBase
33
+ : window.location.hostname === 'localhost' ||
34
+ window.location.hostname === '127.0.0.1'
35
+ ? 'http://127.0.0.1:8765'
36
+ : '';
37
+ // Convert http(s) to ws(s).
38
+ const wsBase = base.replace(/^http/, 'ws');
39
+ let wsUrl = `${wsBase}/api/v1/configure/sandbox/ws`;
40
+ // Include agent_id so the backend returns agent-scoped status.
41
+ const params = [];
42
+ if (agentId) {
43
+ params.push(`agent_id=${encodeURIComponent(agentId)}`);
44
+ }
45
+ // WebSocket API doesn't support custom headers, pass token as query param.
46
+ if (authToken) {
47
+ params.push(`token=${encodeURIComponent(authToken)}`);
48
+ }
49
+ if (params.length > 0) {
50
+ wsUrl += `?${params.join('&')}`;
51
+ }
52
+ return wsUrl;
53
+ }
54
+ function deriveAggregate(status) {
55
+ if (!status ||
56
+ status.variant === 'unavailable' ||
57
+ status.variant === 'error') {
58
+ return 'unavailable';
59
+ }
60
+ if (!status.sandbox_running)
61
+ return 'stopped';
62
+ if (status.is_executing)
63
+ return 'executing';
64
+ return 'idle';
65
+ }
66
+ const SANDBOX_PULSE_KEYFRAMES = `
67
+ @keyframes sandbox-pulse {
68
+ 0%, 100% { opacity: 1; }
69
+ 50% { opacity: 0.4; }
70
+ }
71
+ `;
72
+ function useInjectKeyframes() {
73
+ useEffect(() => {
74
+ const id = '__sandbox-pulse-keyframes__';
75
+ if (document.getElementById(id))
76
+ return;
77
+ const style = document.createElement('style');
78
+ style.id = id;
79
+ style.textContent = SANDBOX_PULSE_KEYFRAMES;
80
+ document.head.appendChild(style);
81
+ }, []);
82
+ }
83
+ /* ── Component ─────────────────────────────────────────── */
84
+ export function SandboxStatusIndicator({ apiBase, authToken, agentId, }) {
85
+ useInjectKeyframes();
86
+ const [status, setStatus] = useState(null);
87
+ const wsRef = useRef(null);
88
+ const reconnectTimerRef = useRef();
89
+ const wsUrl = useMemo(() => getWsUrl(apiBase, authToken, agentId), [apiBase, authToken, agentId]);
90
+ // ---- WebSocket lifecycle ----
91
+ useEffect(() => {
92
+ if (!wsUrl)
93
+ return;
94
+ let disposed = false;
95
+ function connect() {
96
+ if (disposed)
97
+ return;
98
+ const ws = new WebSocket(wsUrl);
99
+ ws.onopen = () => {
100
+ wsRef.current = ws;
101
+ };
102
+ ws.onmessage = event => {
103
+ try {
104
+ const msg = JSON.parse(event.data);
105
+ // Ignore interrupt ack messages.
106
+ if (msg.action === 'interrupt')
107
+ return;
108
+ setStatus(msg);
109
+ }
110
+ catch {
111
+ // Ignore malformed messages.
112
+ }
113
+ };
114
+ ws.onclose = () => {
115
+ wsRef.current = null;
116
+ if (!disposed) {
117
+ // Reconnect after a short delay.
118
+ reconnectTimerRef.current = setTimeout(connect, 3000);
119
+ }
120
+ };
121
+ ws.onerror = () => {
122
+ ws.close();
123
+ };
124
+ }
125
+ connect();
126
+ return () => {
127
+ disposed = true;
128
+ clearTimeout(reconnectTimerRef.current);
129
+ wsRef.current?.close();
130
+ wsRef.current = null;
131
+ };
132
+ }, [wsUrl]);
133
+ // ---- Interrupt helper (exposed for stop-button integration) ----
134
+ const sendInterrupt = useCallback(() => {
135
+ const ws = wsRef.current;
136
+ if (ws && ws.readyState === WebSocket.OPEN) {
137
+ ws.send(JSON.stringify({ action: 'interrupt' }));
138
+ }
139
+ }, []);
140
+ // ---- Derived display values ----
141
+ const aggregate = useMemo(() => deriveAggregate(status), [status]);
142
+ const tooltipText = useMemo(() => {
143
+ if (!status)
144
+ return SANDBOX_STATUS_LABELS.unavailable;
145
+ const label = SANDBOX_STATUS_LABELS[aggregate];
146
+ const variant = status.variant;
147
+ return `${label} (${variant})`;
148
+ }, [aggregate, status]);
149
+ // Hide when sandbox is not available at all.
150
+ if (aggregate === 'unavailable')
151
+ return null;
152
+ return (_jsx(Tooltip, { text: tooltipText, direction: "n", children: _jsx("button", { type: "button", "aria-label": tooltipText, onClick: aggregate === 'executing' ? sendInterrupt : undefined, style: {
153
+ display: 'inline-flex',
154
+ alignItems: 'center',
155
+ justifyContent: 'center',
156
+ width: 28,
157
+ height: 28,
158
+ padding: 0,
159
+ border: 'none',
160
+ background: 'none',
161
+ cursor: aggregate === 'executing' ? 'pointer' : 'default',
162
+ lineHeight: 0,
163
+ }, children: _jsx(Box, { as: "span", sx: {
164
+ display: 'inline-block',
165
+ width: 12,
166
+ height: 12,
167
+ borderRadius: '50%',
168
+ bg: SANDBOX_STATUS_COLORS[aggregate],
169
+ flexShrink: 0,
170
+ ...(aggregate === 'executing' && {
171
+ animation: 'sandbox-pulse 1.5s ease-in-out infinite',
172
+ }),
173
+ } }) }) }));
174
+ }
175
+ export default SandboxStatusIndicator;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * McpStatusIndicator — Round status dot showing the aggregate
3
+ * state of MCP servers, with a tooltip listing per-server details.
4
+ *
5
+ * Statuses:
6
+ * - none: No MCP servers defined (gray)
7
+ * - not_started: Servers defined but not started (gray)
8
+ * - starting: Servers are starting up (amber / pulsing)
9
+ * - failed: At least one server failed (red)
10
+ * - started: All servers started & available (green)
11
+ *
12
+ * @module chat/indicators/McpStatusIndicator
13
+ */
14
+ export { McpStatusIndicator, type McpStatusIndicatorProps, } from './McpStatusIndicator';
15
+ export type { McpServerStatus, McpAggregateStatus } from '../../types/mcp';
16
+ export { SandboxStatusIndicator, type SandboxStatusIndicatorProps, } from './SandboxStatusIndicator';
17
+ export type { SandboxAggregateStatus, SandboxWsStatus, } from '../../types/sandbox';
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * McpStatusIndicator — Round status dot showing the aggregate
7
+ * state of MCP servers, with a tooltip listing per-server details.
8
+ *
9
+ * Statuses:
10
+ * - none: No MCP servers defined (gray)
11
+ * - not_started: Servers defined but not started (gray)
12
+ * - starting: Servers are starting up (amber / pulsing)
13
+ * - failed: At least one server failed (red)
14
+ * - started: All servers started & available (green)
15
+ *
16
+ * @module chat/indicators/McpStatusIndicator
17
+ */
18
+ export { McpStatusIndicator, } from './McpStatusIndicator';
19
+ export { SandboxStatusIndicator, } from './SandboxStatusIndicator';
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MessageList — Renders the scrollable list of chat messages, tool calls,
3
+ * and the typing indicator.
4
+ *
5
+ * @module chat/messages/MessageList
6
+ */
7
+ import { type ReactNode, type RefObject } from 'react';
8
+ import type { DisplayItem, AvatarConfig, RenderToolResult } from '../../types/chat';
9
+ export interface ToolApprovalConfig {
10
+ /** Base API URL for the agent runtime (e.g., http://localhost:8765/api/v1) */
11
+ apiBaseUrl: string;
12
+ /** Auth token for API calls */
13
+ authToken?: string;
14
+ }
15
+ export interface ChatMessageListProps {
16
+ /** All display items (messages + tool calls) */
17
+ displayItems: DisplayItem[];
18
+ /** Whether the agent is loading */
19
+ isLoading: boolean;
20
+ /** Whether the agent is currently streaming */
21
+ isStreaming: boolean;
22
+ /** Show the pulsing-dot typing indicator */
23
+ showLoadingIndicator: boolean;
24
+ /** Hide assistant messages that follow a rendered tool call UI */
25
+ hideMessagesAfterToolUI: boolean;
26
+ /** Resolved avatar configuration */
27
+ avatarConfig: Required<Pick<AvatarConfig, 'userAvatar' | 'assistantAvatar' | 'showAvatars' | 'avatarSize' | 'userAvatarBg' | 'assistantAvatarBg'>>;
28
+ /** Layout padding */
29
+ padding: number;
30
+ /** Optional custom tool-result renderer */
31
+ renderToolResult?: RenderToolResult;
32
+ /** Content to render when there are no messages */
33
+ emptyContent: ReactNode;
34
+ /** Ref attached to the sentinel div at the bottom for auto-scrolling */
35
+ messagesEndRef: RefObject<HTMLDivElement>;
36
+ /**
37
+ * Callback for human-in-the-loop tool responses.
38
+ * Called when the user responds to an 'executing' tool.
39
+ */
40
+ onRespond: (toolCallId: string, result: unknown) => Promise<void>;
41
+ /**
42
+ * Approval config for built-in tool approval support.
43
+ * When provided, the default tool call rendering detects `pending_approval`
44
+ * results and shows approve/deny buttons that call the agent-runtimes
45
+ * approval API.
46
+ */
47
+ approvalConfig?: ToolApprovalConfig;
48
+ }
49
+ export declare function ChatMessageList({ displayItems, isLoading, isStreaming, showLoadingIndicator, hideMessagesAfterToolUI, avatarConfig, padding, renderToolResult, emptyContent, messagesEndRef, onRespond, approvalConfig, }: ChatMessageListProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,332 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * MessageList — Renders the scrollable list of chat messages, tool calls,
8
+ * and the typing indicator.
9
+ *
10
+ * @module chat/messages/MessageList
11
+ */
12
+ import { useState, useEffect, useCallback, } from 'react';
13
+ import { Text } from '@primer/react';
14
+ import { Box } from '@datalayer/primer-addons';
15
+ import { Streamdown } from 'streamdown';
16
+ import { streamdownMarkdownStyles, streamdownCodeBlockStyles, } from '../styles/streamdownStyles';
17
+ import { ToolCallDisplay } from '../tools/ToolCallDisplay';
18
+ import { isToolCallMessage, getMessageText } from '../../utils';
19
+ // ---------------------------------------------------------------------------
20
+ // DefaultToolCallRenderer — handles tool approval for a single tool call
21
+ // ---------------------------------------------------------------------------
22
+ function DefaultToolCallRenderer({ item, approvalConfig, onRespond, }) {
23
+ const resultObject = item.result && typeof item.result === 'object'
24
+ ? item.result
25
+ : undefined;
26
+ // Detect pending approval from tool result (pydantic-deferred mode)
27
+ const isPendingFromResult = item.status === 'inProgress' && resultObject?.pending_approval === true;
28
+ // In ai-agents-wrapper mode, the server blocks waiting for approval and
29
+ // never sends a tool-result with pending_approval. The tool stays in
30
+ // 'executing' status. We proactively poll the approval API to detect if
31
+ // a pending approval record exists for this tool.
32
+ const isExecuting = item.status === 'executing';
33
+ const [matchedApprovalId, setMatchedApprovalId] = useState(null);
34
+ const [decision, setDecision] = useState();
35
+ const [loading, setLoading] = useState(false);
36
+ // Should we poll the approval API?
37
+ const shouldPoll = (isPendingFromResult || isExecuting) &&
38
+ !!approvalConfig?.apiBaseUrl &&
39
+ !decision;
40
+ // Normalize tool name for matching (strip version suffix, dashes/underscores, lowercase)
41
+ const normalizedToolName = item.toolName
42
+ .replace(/:[0-9]+\.[0-9]+\.[0-9]+.*$/, '')
43
+ .replace(/[-_]/g, '')
44
+ .toLowerCase();
45
+ // Poll for matching approval record when tool is executing or pending approval
46
+ useEffect(() => {
47
+ if (!shouldPoll || !approvalConfig?.apiBaseUrl)
48
+ return;
49
+ let cancelled = false;
50
+ const poll = async () => {
51
+ try {
52
+ const headers = {
53
+ 'Content-Type': 'application/json',
54
+ };
55
+ if (approvalConfig.authToken) {
56
+ headers['Authorization'] = `Bearer ${approvalConfig.authToken}`;
57
+ }
58
+ const res = await fetch(`${approvalConfig.apiBaseUrl}/tool-approvals?status=pending`, { headers });
59
+ if (!res.ok || cancelled)
60
+ return;
61
+ const data = await res.json();
62
+ const approvals = Array.isArray(data)
63
+ ? data
64
+ : (data.approvals ??
65
+ data.requests ??
66
+ []);
67
+ // Match by normalized tool name
68
+ const match = approvals.find(a => {
69
+ const aNormalized = String(a.tool_name || '')
70
+ .replace(/:[0-9]+\.[0-9]+\.[0-9]+.*$/, '')
71
+ .replace(/[-_]/g, '')
72
+ .toLowerCase();
73
+ return aNormalized === normalizedToolName && a.status === 'pending';
74
+ });
75
+ if (match && !cancelled) {
76
+ setMatchedApprovalId(match.id);
77
+ }
78
+ }
79
+ catch {
80
+ // Retry on next interval
81
+ }
82
+ };
83
+ poll();
84
+ const interval = setInterval(poll, 3000);
85
+ return () => {
86
+ cancelled = true;
87
+ clearInterval(interval);
88
+ };
89
+ }, [
90
+ shouldPoll,
91
+ approvalConfig?.apiBaseUrl,
92
+ approvalConfig?.authToken,
93
+ normalizedToolName,
94
+ ]);
95
+ const makeDecision = useCallback(async (action) => {
96
+ if (!matchedApprovalId || !approvalConfig?.apiBaseUrl)
97
+ return;
98
+ setLoading(true);
99
+ try {
100
+ const headers = {
101
+ 'Content-Type': 'application/json',
102
+ };
103
+ if (approvalConfig.authToken) {
104
+ headers['Authorization'] = `Bearer ${approvalConfig.authToken}`;
105
+ }
106
+ const res = await fetch(`${approvalConfig.apiBaseUrl}/tool-approvals/${matchedApprovalId}/${action}`, {
107
+ method: 'POST',
108
+ headers,
109
+ body: JSON.stringify({}),
110
+ });
111
+ if (res.ok) {
112
+ setDecision(action === 'approve' ? 'approved' : 'denied');
113
+ onRespond({
114
+ type: 'tool-approval-decision',
115
+ approved: action === 'approve',
116
+ approvalId: matchedApprovalId,
117
+ toolName: item.toolName,
118
+ });
119
+ }
120
+ }
121
+ catch {
122
+ // Allow retry
123
+ }
124
+ finally {
125
+ setLoading(false);
126
+ }
127
+ }, [
128
+ matchedApprovalId,
129
+ approvalConfig?.apiBaseUrl,
130
+ approvalConfig?.authToken,
131
+ onRespond,
132
+ item.toolCallId,
133
+ item.toolName,
134
+ ]);
135
+ // Show approval UI when we have a confirmed pending approval (from result
136
+ // or discovered via polling) or after a decision has been made.
137
+ const hasApproval = isPendingFromResult || !!matchedApprovalId;
138
+ const approvalState = decision || (hasApproval ? 'pending' : undefined);
139
+ return (_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, onApprove: matchedApprovalId && !decision
140
+ ? () => void makeDecision('approve')
141
+ : undefined, onDeny: matchedApprovalId && !decision
142
+ ? () => void makeDecision('reject')
143
+ : undefined, approvalLoading: loading }));
144
+ }
145
+ // ---------------------------------------------------------------------------
146
+ // Component
147
+ // ---------------------------------------------------------------------------
148
+ export function ChatMessageList({ displayItems, isLoading, isStreaming, showLoadingIndicator, hideMessagesAfterToolUI, avatarConfig, padding, renderToolResult, emptyContent, messagesEndRef, onRespond, approvalConfig, }) {
149
+ if (displayItems.length === 0) {
150
+ return _jsx(_Fragment, { children: emptyContent });
151
+ }
152
+ // Create respond callback for a tool call (human-in-the-loop)
153
+ const createRespondCallback = (toolCallId) => {
154
+ return (result) => {
155
+ onRespond(toolCallId, result);
156
+ };
157
+ };
158
+ // Build set of rendered tool call IDs to support hideMessagesAfterToolUI
159
+ const renderedToolCallIds = new Set();
160
+ displayItems.forEach(item => {
161
+ if (isToolCallMessage(item)) {
162
+ if (renderToolResult) {
163
+ const rendered = renderToolResult({
164
+ toolCallId: item.toolCallId,
165
+ toolName: item.toolName,
166
+ name: item.toolName,
167
+ args: item.args,
168
+ result: item.result,
169
+ status: item.status,
170
+ error: item.error,
171
+ });
172
+ if (rendered !== null && rendered !== undefined) {
173
+ renderedToolCallIds.add(item.toolCallId);
174
+ }
175
+ }
176
+ else {
177
+ // Default display always renders tool calls
178
+ renderedToolCallIds.add(item.toolCallId);
179
+ }
180
+ }
181
+ });
182
+ const hasRenderedToolCall = renderedToolCallIds.size > 0;
183
+ return (_jsxs(_Fragment, { children: [displayItems.map((item, index) => {
184
+ // ---- Tool call item ----
185
+ if (isToolCallMessage(item)) {
186
+ const respond = item.status === 'executing' || item.status === 'inProgress'
187
+ ? createRespondCallback(item.toolCallId)
188
+ : undefined;
189
+ const toolUI = renderToolResult ? (renderToolResult({
190
+ toolCallId: item.toolCallId,
191
+ toolName: item.toolName,
192
+ name: item.toolName,
193
+ args: item.args,
194
+ result: item.result,
195
+ status: item.status,
196
+ error: item.error,
197
+ respond,
198
+ })) : (_jsx(DefaultToolCallRenderer, { item: item, approvalConfig: approvalConfig, onRespond: createRespondCallback(item.toolCallId) }));
199
+ if (toolUI === null || toolUI === undefined)
200
+ return null;
201
+ return (_jsx(Box, { sx: {
202
+ display: 'flex',
203
+ flexDirection: 'column',
204
+ alignItems: 'flex-start',
205
+ maxWidth: '95%',
206
+ px: padding,
207
+ py: 1,
208
+ }, children: toolUI }, item.id));
209
+ }
210
+ // ---- Chat message item ----
211
+ const message = item;
212
+ const isUser = message.role === 'user';
213
+ // Optionally hide assistant messages that follow a rendered tool call
214
+ if (!isUser && hideMessagesAfterToolUI && hasRenderedToolCall) {
215
+ const messageText = getMessageText(message);
216
+ const prevIndex = index - 1;
217
+ if (prevIndex >= 0) {
218
+ const prevItem = displayItems[prevIndex];
219
+ if (isToolCallMessage(prevItem) &&
220
+ renderedToolCallIds.has(prevItem.toolCallId)) {
221
+ return null;
222
+ }
223
+ }
224
+ // Check for HITL-specific patterns
225
+ const hitlToolCall = displayItems.find(di => isToolCallMessage(di) &&
226
+ renderedToolCallIds.has(di.toolCallId) &&
227
+ di.args &&
228
+ 'steps' in di.args &&
229
+ Array.isArray(di.args.steps));
230
+ if (hitlToolCall && messageText) {
231
+ const steps = hitlToolCall.args.steps;
232
+ const hasStepContent = steps.some(step => step.description &&
233
+ messageText
234
+ .toLowerCase()
235
+ .includes(step.description.toLowerCase().slice(0, 20))) ||
236
+ /^\s*(\d+\.\s|[-*]\s|\*\*)/.test(messageText) ||
237
+ messageText.includes('**Enabled**') ||
238
+ messageText.includes('steps below');
239
+ if (hasStepContent) {
240
+ return null;
241
+ }
242
+ }
243
+ }
244
+ return (_jsx(Box, { sx: {
245
+ display: 'flex',
246
+ flexDirection: 'column',
247
+ alignItems: isUser ? 'flex-end' : 'flex-start',
248
+ px: padding,
249
+ py: 1,
250
+ }, children: _jsxs(Box, { sx: {
251
+ display: 'flex',
252
+ gap: 2,
253
+ flexDirection: isUser ? 'row-reverse' : 'row',
254
+ alignItems: 'flex-start',
255
+ }, children: [avatarConfig.showAvatars && (_jsx(Box, { sx: {
256
+ width: avatarConfig.avatarSize,
257
+ height: avatarConfig.avatarSize,
258
+ borderRadius: '50%',
259
+ bg: isUser
260
+ ? avatarConfig.userAvatarBg
261
+ : avatarConfig.assistantAvatarBg,
262
+ color: isUser
263
+ ? 'fg.default'
264
+ : 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))',
265
+ display: 'flex',
266
+ alignItems: 'center',
267
+ justifyContent: 'center',
268
+ flexShrink: 0,
269
+ }, children: isUser
270
+ ? avatarConfig.userAvatar
271
+ : avatarConfig.assistantAvatar })), _jsx(Box, { sx: {
272
+ maxWidth: '85%',
273
+ p: 2,
274
+ borderRadius: 2,
275
+ backgroundColor: isUser ? 'accent.emphasis' : 'canvas.subtle',
276
+ // Use primary-button text token for better contrast when
277
+ // accent.emphasis is bright (e.g. Matrix dark theme).
278
+ color: isUser
279
+ ? 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))'
280
+ : 'fg.default',
281
+ ...streamdownCodeBlockStyles,
282
+ }, children: isUser ? (_jsx(Text, { sx: {
283
+ fontSize: 1,
284
+ whiteSpace: 'pre-wrap',
285
+ wordBreak: 'break-word',
286
+ }, children: getMessageText(message) })) : (_jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: getMessageText(message) || (isStreaming ? '...' : '') }) })) })] }) }, message.id));
287
+ }), showLoadingIndicator && (isLoading || isStreaming) && (_jsx(Box, { sx: {
288
+ display: 'flex',
289
+ alignItems: 'flex-start',
290
+ px: padding,
291
+ py: 1,
292
+ }, children: _jsxs(Box, { sx: {
293
+ display: 'flex',
294
+ gap: 2,
295
+ alignItems: 'flex-start',
296
+ }, children: [avatarConfig.showAvatars && (_jsx(Box, { sx: {
297
+ width: avatarConfig.avatarSize,
298
+ height: avatarConfig.avatarSize,
299
+ borderRadius: '50%',
300
+ bg: avatarConfig.assistantAvatarBg,
301
+ color: 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))',
302
+ display: 'flex',
303
+ alignItems: 'center',
304
+ justifyContent: 'center',
305
+ flexShrink: 0,
306
+ }, children: avatarConfig.assistantAvatar })), _jsx(Box, { sx: {
307
+ display: 'flex',
308
+ alignItems: 'center',
309
+ gap: '4px',
310
+ p: 2,
311
+ borderRadius: 2,
312
+ bg: 'canvas.subtle',
313
+ minHeight: '32px',
314
+ }, children: [0, 0.2, 0.4].map((delay, i) => (_jsx(Box, { sx: {
315
+ width: '8px',
316
+ height: '8px',
317
+ borderRadius: '50%',
318
+ bg: 'fg.muted',
319
+ animation: 'typingPulse 1.4s ease-in-out infinite',
320
+ animationDelay: `${delay}s`,
321
+ '@keyframes typingPulse': {
322
+ '0%, 60%, 100%': {
323
+ transform: 'scale(0.6)',
324
+ opacity: 0.4,
325
+ },
326
+ '30%': {
327
+ transform: 'scale(1)',
328
+ opacity: 1,
329
+ },
330
+ },
331
+ } }, i))) })] }) })), _jsx("div", { ref: messagesEndRef })] }));
332
+ }
@@ -2,10 +2,10 @@
2
2
  * Chat message list component.
3
3
  * Renders the list of chat messages with support for custom renderers.
4
4
  *
5
- * @module components/chat/components/elements/ChatMessages
5
+ * @module chat/messages/ChatMessages
6
6
  */
7
7
  import React from 'react';
8
- import type { ChatMessage } from '../../types/message';
8
+ import type { ChatMessage } from '../../types/messages';
9
9
  import type { ExtensionRegistry } from '../../extensions/ExtensionRegistry';
10
10
  /**
11
11
  * ChatMessages props
@@ -7,14 +7,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  * Chat message list component.
8
8
  * Renders the list of chat messages with support for custom renderers.
9
9
  *
10
- * @module components/chat/components/elements/ChatMessages
10
+ * @module chat/messages/ChatMessages
11
11
  */
12
12
  import { useRef, useEffect } from 'react';
13
13
  import { Text, RelativeTime } from '@primer/react';
14
14
  import { Box } from '@datalayer/primer-addons';
15
15
  import { PersonIcon, ToolsIcon } from '@primer/octicons-react';
16
16
  import { AiAgentIcon } from '@datalayer/icons-react';
17
- import { useChatMessages, useChatExtensionRegistry, } from '../../store/chatStore';
17
+ import { useChatMessages, useChatExtensionRegistry, } from '../../stores/chatStore';
18
18
  /**
19
19
  * Chat Messages component
20
20
  */
@@ -70,8 +70,10 @@ export function ChatMessages({ messageRenderer, activityRenderer, showTimestamps
70
70
  : message.role === 'assistant'
71
71
  ? 'accent.emphasis'
72
72
  : 'attention.emphasis',
73
- color: message.role === 'user' ? 'fg.default' : 'fg.onEmphasis',
74
- }, children: message.role === 'user' ? (_jsx(PersonIcon, { size: 16 })) : message.role === 'assistant' ? (_jsx(AiAgentIcon, { colored: true, size: 16 })) : (_jsx(ToolsIcon, { size: 16 })) }) })), _jsxs(Box, { sx: { flex: 1, minWidth: 0 }, children: [_jsxs(Box, { sx: {
73
+ color: message.role === 'user'
74
+ ? 'fg.default'
75
+ : 'var(--button-primary-fgColor-rest, var(--fgColor-onEmphasis))',
76
+ }, children: message.role === 'user' ? (_jsx(PersonIcon, { size: 16 })) : message.role === 'assistant' ? (_jsx(AiAgentIcon, { size: 16 })) : (_jsx(ToolsIcon, { size: 16 })) }) })), _jsxs(Box, { sx: { flex: 1, minWidth: 0 }, children: [_jsxs(Box, { sx: {
75
77
  display: 'flex',
76
78
  alignItems: 'center',
77
79
  gap: 2,
@@ -2,7 +2,7 @@
2
2
  * Dynamic tool display component.
3
3
  * Renders dynamic tool UI parts with placeholder/warning styling.
4
4
  *
5
- * @module components/chat/components/display/DynamicToolPart
5
+ * @module chat/display/DynamicToolPart
6
6
  */
7
7
  import type { DynamicToolUIPart } from 'ai';
8
8
  export interface DynamicToolPartProps {
@@ -2,7 +2,7 @@
2
2
  * Message part renderer component.
3
3
  * Routes message parts to appropriate display components based on type.
4
4
  *
5
- * @module components/chat/components/elements/MessagePart
5
+ * @module chat/parts/MessagePart
6
6
  */
7
7
  import type { UIDataTypes, UIMessagePart, UITools, UIMessage } from 'ai';
8
8
  /**