@vertesia/ui 1.0.0 → 1.1.0-dev.20260427.060440Z

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 (293) hide show
  1. package/lib/esm/core/components/ComboBox.js +23 -24
  2. package/lib/esm/core/components/ComboBox.js.map +1 -1
  3. package/lib/esm/core/components/FormItem.js +2 -2
  4. package/lib/esm/core/components/FormItem.js.map +1 -1
  5. package/lib/esm/core/components/SidePanel.js +1 -1
  6. package/lib/esm/core/components/SidePanel.js.map +1 -1
  7. package/lib/esm/core/components/shadcn/collaspible.js +3 -4
  8. package/lib/esm/core/components/shadcn/collaspible.js.map +1 -1
  9. package/lib/esm/core/components/shadcn/dropdown.js +37 -12
  10. package/lib/esm/core/components/shadcn/dropdown.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +6 -6
  12. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
  13. package/lib/esm/core/components/shadcn/filters/filterBar.js +5 -3
  14. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  15. package/lib/esm/core/components/shadcn/radioGroup.js +1 -2
  16. package/lib/esm/core/components/shadcn/radioGroup.js.map +1 -1
  17. package/lib/esm/core/components/shadcn/switch.js +0 -1
  18. package/lib/esm/core/components/shadcn/switch.js.map +1 -1
  19. package/lib/esm/core/components/shadcn/tabs.js +2 -2
  20. package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
  21. package/lib/esm/core/components/shadcn/tooltip.js +17 -1
  22. package/lib/esm/core/components/shadcn/tooltip.js.map +1 -1
  23. package/lib/esm/core/hooks/PortalContainerProvider.js +9 -3
  24. package/lib/esm/core/hooks/PortalContainerProvider.js.map +1 -1
  25. package/lib/esm/env/index.js +5 -8
  26. package/lib/esm/env/index.js.map +1 -1
  27. package/lib/esm/features/agent/chat/AgentRightPanel.js +21 -11
  28. package/lib/esm/features/agent/chat/AgentRightPanel.js.map +1 -1
  29. package/lib/esm/features/agent/chat/AskUserWidget.js +2 -6
  30. package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
  31. package/lib/esm/features/agent/chat/DocumentPanel.js +8 -5
  32. package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -1
  33. package/lib/esm/features/agent/chat/DocumentTabBar.js +5 -13
  34. package/lib/esm/features/agent/chat/DocumentTabBar.js.map +1 -1
  35. package/lib/esm/features/agent/chat/ModernAgentConversation.js +57 -26
  36. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  37. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +20 -16
  38. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  39. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +56 -45
  40. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  41. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +1 -1
  42. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  43. package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js +3 -9
  44. package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
  45. package/lib/esm/features/agent/chat/hooks/useAgentStream.js +9 -5
  46. package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -1
  47. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +4 -0
  48. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
  49. package/lib/esm/features/facets/AgentRunnerFacetsNav.js +1 -1
  50. package/lib/esm/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  51. package/lib/esm/features/facets/DocumentsFacetsNav.js +3 -2
  52. package/lib/esm/features/facets/DocumentsFacetsNav.js.map +1 -1
  53. package/lib/esm/features/facets/RunsFacetsNav.js +8 -1
  54. package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -1
  55. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js +1 -1
  56. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -1
  57. package/lib/esm/features/facets/index.js +1 -0
  58. package/lib/esm/features/facets/index.js.map +1 -1
  59. package/lib/esm/features/facets/utils/VInteractionFacet.js +5 -5
  60. package/lib/esm/features/facets/utils/VInteractionFacet.js.map +1 -1
  61. package/lib/esm/features/index.js +1 -0
  62. package/lib/esm/features/index.js.map +1 -1
  63. package/lib/esm/features/oauth/OAuthProviderConnectButton.js +85 -0
  64. package/lib/esm/features/oauth/OAuthProviderConnectButton.js.map +1 -0
  65. package/lib/esm/features/oauth/RemoteMcpConnectionButton.js +119 -0
  66. package/lib/esm/features/oauth/RemoteMcpConnectionButton.js.map +1 -0
  67. package/lib/esm/features/oauth/index.js +4 -0
  68. package/lib/esm/features/oauth/index.js.map +1 -0
  69. package/lib/esm/features/oauth/useOAuthPopup.js +89 -0
  70. package/lib/esm/features/oauth/useOAuthPopup.js.map +1 -0
  71. package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
  72. package/lib/esm/features/store/collections/EditCollectionView.js +9 -2
  73. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  74. package/lib/esm/features/store/objects/components/ContentOverview.js +19 -7
  75. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  76. package/lib/esm/features/store/objects/components/useContentPanelHooks.js +35 -15
  77. package/lib/esm/features/store/objects/components/useContentPanelHooks.js.map +1 -1
  78. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +3 -3
  79. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
  80. package/lib/esm/features/store/objects/selection/SelectionActions.js +4 -3
  81. package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
  82. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +11 -3
  83. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
  84. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +1 -5
  85. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  86. package/lib/esm/features/user/UserInfo.js +33 -10
  87. package/lib/esm/features/user/UserInfo.js.map +1 -1
  88. package/lib/esm/i18n/locales/ar.json +81 -98
  89. package/lib/esm/i18n/locales/de.json +44 -73
  90. package/lib/esm/i18n/locales/en.json +31 -61
  91. package/lib/esm/i18n/locales/es.json +55 -79
  92. package/lib/esm/i18n/locales/fr.json +55 -81
  93. package/lib/esm/i18n/locales/it.json +55 -79
  94. package/lib/esm/i18n/locales/ja.json +46 -75
  95. package/lib/esm/i18n/locales/ko.json +44 -73
  96. package/lib/esm/i18n/locales/pt.json +55 -79
  97. package/lib/esm/i18n/locales/ru.json +58 -81
  98. package/lib/esm/i18n/locales/tr.json +46 -75
  99. package/lib/esm/i18n/locales/zh-TW.json +46 -75
  100. package/lib/esm/i18n/locales/zh.json +46 -75
  101. package/lib/esm/session/UserSession.js +2 -4
  102. package/lib/esm/session/UserSession.js.map +1 -1
  103. package/lib/esm/session/UserSessionProvider.js +22 -17
  104. package/lib/esm/session/UserSessionProvider.js.map +1 -1
  105. package/lib/esm/session/auth/composable.js +20 -2
  106. package/lib/esm/session/auth/composable.js.map +1 -1
  107. package/lib/esm/session/auth/domainRouting.js +7 -0
  108. package/lib/esm/session/auth/domainRouting.js.map +1 -0
  109. package/lib/esm/shell/login/InviteAcceptModal.js +1 -0
  110. package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
  111. package/lib/esm/widgets/form/Form.js +2 -2
  112. package/lib/esm/widgets/form/Form.js.map +1 -1
  113. package/lib/esm/widgets/markdown/MarkdownRenderer.js +2 -1
  114. package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
  115. package/lib/esm/widgets/markdown/preprocessMathDelimiters.js +226 -0
  116. package/lib/esm/widgets/markdown/preprocessMathDelimiters.js.map +1 -0
  117. package/lib/esm/widgets/monacoEditor/MonacoEditor.js +40 -5
  118. package/lib/esm/widgets/monacoEditor/MonacoEditor.js.map +1 -1
  119. package/lib/esm/widgets/monacoEditor/foldingProviders.js +132 -0
  120. package/lib/esm/widgets/monacoEditor/foldingProviders.js.map +1 -0
  121. package/lib/tsconfig.tsbuildinfo +1 -1
  122. package/lib/types/core/components/ComboBox.d.ts +12 -2
  123. package/lib/types/core/components/ComboBox.d.ts.map +1 -1
  124. package/lib/types/core/components/FormItem.d.ts +5 -2
  125. package/lib/types/core/components/FormItem.d.ts.map +1 -1
  126. package/lib/types/core/components/SidePanel.d.ts.map +1 -1
  127. package/lib/types/core/components/shadcn/badge.d.ts +2 -2
  128. package/lib/types/core/components/shadcn/collaspible.d.ts +3 -3
  129. package/lib/types/core/components/shadcn/collaspible.d.ts.map +1 -1
  130. package/lib/types/core/components/shadcn/dropdown.d.ts +11 -3
  131. package/lib/types/core/components/shadcn/dropdown.d.ts.map +1 -1
  132. package/lib/types/core/components/shadcn/filters/filterBar.d.ts +2 -1
  133. package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  134. package/lib/types/core/components/shadcn/input.d.ts +1 -1
  135. package/lib/types/core/components/shadcn/radioGroup.d.ts.map +1 -1
  136. package/lib/types/core/components/shadcn/switch.d.ts.map +1 -1
  137. package/lib/types/core/components/shadcn/tabs.d.ts +4 -2
  138. package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
  139. package/lib/types/core/components/shadcn/text.d.ts +1 -1
  140. package/lib/types/core/components/shadcn/tooltip.d.ts +1 -1
  141. package/lib/types/core/components/shadcn/tooltip.d.ts.map +1 -1
  142. package/lib/types/core/hooks/PortalContainerProvider.d.ts +1 -0
  143. package/lib/types/core/hooks/PortalContainerProvider.d.ts.map +1 -1
  144. package/lib/types/env/index.d.ts +2 -2
  145. package/lib/types/env/index.d.ts.map +1 -1
  146. package/lib/types/features/agent/chat/AgentChart.d.ts +1 -1
  147. package/lib/types/features/agent/chat/AgentChart.d.ts.map +1 -1
  148. package/lib/types/features/agent/chat/AgentRightPanel.d.ts +7 -2
  149. package/lib/types/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
  150. package/lib/types/features/agent/chat/DocumentPanel.d.ts +2 -2
  151. package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -1
  152. package/lib/types/features/agent/chat/DocumentTabBar.d.ts +1 -2
  153. package/lib/types/features/agent/chat/DocumentTabBar.d.ts.map +1 -1
  154. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +5 -3
  155. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  156. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +4 -2
  157. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  158. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +4 -4
  159. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  160. package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  161. package/lib/types/features/agent/chat/VegaLiteChart.d.ts +1 -1
  162. package/lib/types/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
  163. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +4 -2
  164. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
  165. package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts +1 -0
  166. package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
  167. package/lib/types/features/facets/DocumentsFacetsNav.d.ts.map +1 -1
  168. package/lib/types/features/facets/RunsFacetsNav.d.ts.map +1 -1
  169. package/lib/types/features/facets/index.d.ts +1 -0
  170. package/lib/types/features/facets/index.d.ts.map +1 -1
  171. package/lib/types/features/index.d.ts +1 -0
  172. package/lib/types/features/index.d.ts.map +1 -1
  173. package/lib/types/features/oauth/OAuthProviderConnectButton.d.ts +11 -0
  174. package/lib/types/features/oauth/OAuthProviderConnectButton.d.ts.map +1 -0
  175. package/lib/types/features/oauth/RemoteMcpConnectionButton.d.ts +25 -0
  176. package/lib/types/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -0
  177. package/lib/types/features/oauth/index.d.ts +4 -0
  178. package/lib/types/features/oauth/index.d.ts.map +1 -0
  179. package/lib/types/features/oauth/useOAuthPopup.d.ts +12 -0
  180. package/lib/types/features/oauth/useOAuthPopup.d.ts.map +1 -0
  181. package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
  182. package/lib/types/features/store/collections/EditCollectionView.d.ts.map +1 -1
  183. package/lib/types/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
  184. package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts +3 -3
  185. package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
  186. package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts +2 -1
  187. package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts.map +1 -1
  188. package/lib/types/features/store/objects/selection/SelectionActions.d.ts +3 -3
  189. package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
  190. package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
  191. package/lib/types/features/user/UserInfo.d.ts +2 -1
  192. package/lib/types/features/user/UserInfo.d.ts.map +1 -1
  193. package/lib/types/session/UserSession.d.ts.map +1 -1
  194. package/lib/types/session/UserSessionProvider.d.ts +0 -1
  195. package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
  196. package/lib/types/session/auth/composable.d.ts +4 -0
  197. package/lib/types/session/auth/composable.d.ts.map +1 -1
  198. package/lib/types/session/auth/domainRouting.d.ts +8 -0
  199. package/lib/types/session/auth/domainRouting.d.ts.map +1 -0
  200. package/lib/types/shell/login/InviteAcceptModal.d.ts.map +1 -1
  201. package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
  202. package/lib/types/widgets/markdown/preprocessMathDelimiters.d.ts +24 -0
  203. package/lib/types/widgets/markdown/preprocessMathDelimiters.d.ts.map +1 -0
  204. package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts +2 -1
  205. package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
  206. package/lib/types/widgets/monacoEditor/foldingProviders.d.ts +2 -0
  207. package/lib/types/widgets/monacoEditor/foldingProviders.d.ts.map +1 -0
  208. package/lib/vertesia-ui-core.js +1 -1
  209. package/lib/vertesia-ui-core.js.map +1 -1
  210. package/lib/vertesia-ui-env.js +1 -1
  211. package/lib/vertesia-ui-env.js.map +1 -1
  212. package/lib/vertesia-ui-features.js +1 -1
  213. package/lib/vertesia-ui-features.js.map +1 -1
  214. package/lib/vertesia-ui-i18n.js +1 -1
  215. package/lib/vertesia-ui-i18n.js.map +1 -1
  216. package/lib/vertesia-ui-layout.js +1 -1
  217. package/lib/vertesia-ui-layout.js.map +1 -1
  218. package/lib/vertesia-ui-session.js +1 -1
  219. package/lib/vertesia-ui-session.js.map +1 -1
  220. package/lib/vertesia-ui-shell.js +1 -1
  221. package/lib/vertesia-ui-shell.js.map +1 -1
  222. package/lib/vertesia-ui-widgets.js +1 -1
  223. package/lib/vertesia-ui-widgets.js.map +1 -1
  224. package/package.json +15 -15
  225. package/src/core/components/ComboBox.tsx +66 -29
  226. package/src/core/components/FormItem.tsx +9 -6
  227. package/src/core/components/SidePanel.tsx +5 -3
  228. package/src/core/components/shadcn/collaspible.tsx +5 -7
  229. package/src/core/components/shadcn/dropdown.tsx +68 -13
  230. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +6 -6
  231. package/src/core/components/shadcn/filters/filterBar.tsx +5 -3
  232. package/src/core/components/shadcn/radioGroup.tsx +1 -3
  233. package/src/core/components/shadcn/switch.tsx +0 -2
  234. package/src/core/components/shadcn/tabs.tsx +15 -2
  235. package/src/core/components/shadcn/tooltip.tsx +20 -3
  236. package/src/core/hooks/PortalContainerProvider.tsx +11 -3
  237. package/src/env/index.ts +7 -10
  238. package/src/features/agent/chat/AgentRightPanel.tsx +43 -23
  239. package/src/features/agent/chat/DocumentPanel.tsx +21 -19
  240. package/src/features/agent/chat/DocumentTabBar.tsx +21 -32
  241. package/src/features/agent/chat/ModernAgentConversation.tsx +72 -27
  242. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +21 -9
  243. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +136 -115
  244. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +0 -3
  245. package/src/features/agent/chat/hooks/useAgentStream.ts +13 -7
  246. package/src/features/agent/chat/hooks/useDocumentPanel.ts +8 -0
  247. package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -1
  248. package/src/features/facets/DocumentsFacetsNav.tsx +3 -1
  249. package/src/features/facets/RunsFacetsNav.tsx +9 -1
  250. package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +1 -1
  251. package/src/features/facets/index.ts +1 -0
  252. package/src/features/facets/utils/VInteractionFacet.tsx +12 -12
  253. package/src/features/index.ts +1 -0
  254. package/src/features/oauth/OAuthProviderConnectButton.tsx +125 -0
  255. package/src/features/oauth/RemoteMcpConnectionButton.tsx +274 -0
  256. package/src/features/oauth/index.ts +3 -0
  257. package/src/features/oauth/useOAuthPopup.ts +125 -0
  258. package/src/features/store/collections/BrowseCollectionView.tsx +3 -3
  259. package/src/features/store/collections/EditCollectionView.tsx +10 -1
  260. package/src/features/store/objects/components/ContentOverview.tsx +108 -87
  261. package/src/features/store/objects/components/useContentPanelHooks.ts +50 -15
  262. package/src/features/store/objects/selection/ObjectsActionContext.tsx +5 -5
  263. package/src/features/store/objects/selection/ObjectsActionSpec.ts +2 -1
  264. package/src/features/store/objects/selection/SelectionActions.tsx +6 -5
  265. package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +12 -3
  266. package/src/features/user/UserInfo.tsx +82 -10
  267. package/src/i18n/locales/ar.json +81 -98
  268. package/src/i18n/locales/de.json +44 -73
  269. package/src/i18n/locales/en.json +31 -61
  270. package/src/i18n/locales/es.json +55 -79
  271. package/src/i18n/locales/fr.json +55 -81
  272. package/src/i18n/locales/it.json +55 -79
  273. package/src/i18n/locales/ja.json +46 -75
  274. package/src/i18n/locales/ko.json +44 -73
  275. package/src/i18n/locales/pt.json +55 -79
  276. package/src/i18n/locales/ru.json +58 -81
  277. package/src/i18n/locales/tr.json +46 -75
  278. package/src/i18n/locales/zh-TW.json +46 -75
  279. package/src/i18n/locales/zh.json +46 -75
  280. package/src/session/UserSession.ts +2 -5
  281. package/src/session/UserSessionProvider.tsx +23 -18
  282. package/src/session/auth/auth-flow.md +1 -1
  283. package/src/session/auth/composable.ts +21 -2
  284. package/src/session/auth/domainRouting.test.ts +26 -0
  285. package/src/session/auth/domainRouting.ts +13 -0
  286. package/src/shell/login/InviteAcceptModal.tsx +1 -0
  287. package/src/widgets/form/Form.tsx +2 -2
  288. package/src/widgets/markdown/MarkdownRenderer.tsx +2 -1
  289. package/src/widgets/markdown/markdown.css +12 -0
  290. package/src/widgets/markdown/preprocessMathDelimiters.test.ts +87 -0
  291. package/src/widgets/markdown/preprocessMathDelimiters.ts +229 -0
  292. package/src/widgets/monacoEditor/MonacoEditor.tsx +47 -4
  293. package/src/widgets/monacoEditor/foldingProviders.ts +122 -0
@@ -100,8 +100,8 @@ interface ModernAgentConversationProps {
100
100
  resetWorkflow?: () => void;
101
101
  /** Called after a restart succeeds — receives the new AgentRun for navigation */
102
102
  onRestart?: (newRun: AgentRun) => void;
103
- /** Called after a fork succeeds — receives the new AgentRun for navigation */
104
- onFork?: (newRun: AgentRun) => void;
103
+ /** Called after a clone succeeds — receives the new AgentRun for navigation */
104
+ onClone?: (newRun: AgentRun) => void;
105
105
  /** Called to show run details/internals modal */
106
106
  onShowDetails?: () => void;
107
107
 
@@ -169,6 +169,8 @@ interface ModernAgentConversationProps {
169
169
  showArtifacts?: boolean;
170
170
  /** Hide the document preview panel that auto-opens on create_document */
171
171
  hideDocumentPanel?: boolean;
172
+ /** Message types to exclude from the conversation view */
173
+ hiddenMessageTypes?: AgentMessageType[];
172
174
 
173
175
  // Callback to get attached documents when sending messages
174
176
  // Returns array of { id, name } to include in message metadata and display
@@ -673,7 +675,7 @@ function ModernAgentConversationInner({
673
675
  placeholder,
674
676
  resetWorkflow,
675
677
  onRestart,
676
- onFork,
678
+ onClone,
677
679
  onShowDetails,
678
680
  // File upload props (onFilesSelected handled internally by handleFileUpload)
679
681
  uploadedFiles,
@@ -695,6 +697,7 @@ function ModernAgentConversationInner({
695
697
  hideFileUpload,
696
698
  showArtifacts = false,
697
699
  hideDocumentPanel: _hideDocumentPanel,
700
+ hiddenMessageTypes,
698
701
  // Attachment callback
699
702
  getAttachedDocs,
700
703
  onAttachmentsSent,
@@ -759,7 +762,8 @@ function ModernAgentConversationInner({
759
762
  debugChunkFlash,
760
763
  addOptimisticMessage,
761
764
  removeOptimisticMessages,
762
- workflowStatus,
765
+ agentRunStatus,
766
+ workflowRunId,
763
767
  serverFileUpdates,
764
768
  } = useAgentStream(client, agentRunId);
765
769
 
@@ -782,6 +786,7 @@ function ModernAgentConversationInner({
782
786
  closeDocument: handleCloseDocument,
783
787
  selectDocument,
784
788
  openDocInPanel,
789
+ updateDocumentTitle,
785
790
  } = useDocumentPanel(messages);
786
791
 
787
792
  const {
@@ -810,6 +815,7 @@ function ModernAgentConversationInner({
810
815
  const [thinkingMessageIndex, setThinkingMessageIndex] = useState(0);
811
816
  const [isDragOver, setIsDragOver] = useState(false);
812
817
  const [activeWorkstreams, setActiveWorkstreams] = useState<ActiveWorkstreamEntry[]>([]);
818
+ const [completedWorkstreams, setCompletedWorkstreams] = useState<Array<{ launch_id: string; workstream_id: string; status: 'completed' | 'canceled' }>>([]);
813
819
  const workstreamFetchFailedRef = useRef(false);
814
820
  const dragCounterRef = useRef(0);
815
821
 
@@ -819,13 +825,32 @@ function ModernAgentConversationInner({
819
825
  const hasProcessingFilesRef = useRef(hasProcessingFiles);
820
826
  hasProcessingFilesRef.current = hasProcessingFiles;
821
827
 
822
- // Derive effective workflow status — only main workstream TERMINATED overrides API status.
823
- const effectiveWorkflowStatus = useMemo(() => {
828
+ const lastMainMessage = useMemo(() => {
824
829
  const mainMessages = messages.filter(m => (m.workstream_id || 'main') === 'main');
825
- const lastMain = mainMessages[mainMessages.length - 1];
826
- if (lastMain?.type === AgentMessageType.TERMINATED) return "TERMINATED";
827
- return workflowStatus;
828
- }, [messages, workflowStatus]);
830
+ return mainMessages[mainMessages.length - 1];
831
+ }, [messages]);
832
+
833
+ // Derive effective status from AgentRun state; main workstream terminal events cover live-stream races.
834
+ const effectiveWorkflowStatus = useMemo(() => {
835
+ if (lastMainMessage?.type === AgentMessageType.TERMINATED) return "TERMINATED";
836
+ if (
837
+ lastMainMessage?.type === AgentMessageType.COMPLETE &&
838
+ (!agentRunStatus || agentRunStatus === "RUNNING")
839
+ ) {
840
+ return "COMPLETED";
841
+ }
842
+ return agentRunStatus;
843
+ }, [lastMainMessage, agentRunStatus]);
844
+
845
+ const isWorkflowTerminal = useMemo(() => {
846
+ const normalizedStatus = effectiveWorkflowStatus?.toUpperCase();
847
+ return normalizedStatus === "COMPLETED"
848
+ || normalizedStatus === "FAILED"
849
+ || normalizedStatus === "CANCELED"
850
+ || normalizedStatus === "CANCELLED"
851
+ || normalizedStatus === "TERMINATED"
852
+ || normalizedStatus === "TIMED_OUT";
853
+ }, [effectiveWorkflowStatus]);
829
854
 
830
855
  console.debug("[ModernAgentConversation] render", {
831
856
  agentRunId,
@@ -865,7 +890,7 @@ function ModernAgentConversationInner({
865
890
  }, [plans, activePlanIndex, workstreamStatusMap]);
866
891
 
867
892
  const panelWorkstreams = useMemo<WorkstreamInfo[]>(() => {
868
- return activeWorkstreams.map((ws) => ({
893
+ const running: WorkstreamInfo[] = activeWorkstreams.map((ws) => ({
869
894
  workstream_id: ws.workstream_id,
870
895
  launch_id: ws.launch_id,
871
896
  elapsed_ms: ws.elapsed_ms,
@@ -876,7 +901,16 @@ function ModernAgentConversationInner({
876
901
  child_workflow_id: ws.child_workflow_id,
877
902
  child_workflow_run_id: ws.child_workflow_run_id,
878
903
  }));
879
- }, [activeWorkstreams]);
904
+ const completed: WorkstreamInfo[] = completedWorkstreams.map((ws) => ({
905
+ workstream_id: ws.workstream_id,
906
+ launch_id: ws.launch_id,
907
+ elapsed_ms: 0,
908
+ deadline_ms: 0,
909
+ remaining_ms: 0,
910
+ status: ws.status,
911
+ }));
912
+ return [...running, ...completed];
913
+ }, [activeWorkstreams, completedWorkstreams]);
880
914
 
881
915
  // ────────────────────────────────────────────
882
916
  // Stable callbacks
@@ -897,8 +931,8 @@ function ModernAgentConversationInner({
897
931
  // ────────────────────────────────────────────
898
932
  // Unified right panel state
899
933
  // ────────────────────────────────────────────
900
- type RightPanelTab = 'plan' | 'workstreams' | 'documents' | 'uploads' | 'artifacts' | 'conversation';
901
- const [rightPanelTab, _setRightPanelTab] = useState<RightPanelTab>((conversationContent || conversationTab) ? 'conversation' : 'plan');
934
+ type RightPanelTab = 'plan' | 'workstreams' | 'documents' | 'uploads' | 'artifacts' | 'payload' | 'conversation';
935
+ const [rightPanelTab, setRightPanelTab] = useState<RightPanelTab>((conversationContent || conversationTab) ? 'conversation' : 'plan');
902
936
  const [rightPanelWidth, setRightPanelWidth] = useState(400);
903
937
  const [isRightPanelResizing, setIsRightPanelResizing] = useState(false);
904
938
 
@@ -963,12 +997,13 @@ const handleCloseRightPanel = useCallback(() => {
963
997
  e.preventDefault();
964
998
  e.stopPropagation();
965
999
  openDocInPanel(documentId);
1000
+ setRightPanelTab('documents');
966
1001
  }}
967
1002
  >
968
1003
  {children}
969
1004
  </a>
970
1005
  ),
971
- [openDocInPanel]
1006
+ [openDocInPanel, setRightPanelTab]
972
1007
  );
973
1008
 
974
1009
  const effectiveStoreLinkComponent = StoreLinkComponent ?? internalStoreLinkComponent;
@@ -1025,6 +1060,12 @@ const handleCloseRightPanel = useCallback(() => {
1025
1060
  const result = await client.agents.getActiveWorkstreams(agentRunId);
1026
1061
  if (isCancelled) return;
1027
1062
  setActiveWorkstreams(result.running ?? []);
1063
+ const completed = (result as unknown as { completed?: Array<{ launch_id: string; workstream_id: string; status: string }> }).completed ?? [];
1064
+ setCompletedWorkstreams(completed.map(c => ({
1065
+ launch_id: c.launch_id,
1066
+ workstream_id: c.workstream_id,
1067
+ status: c.status === 'canceled' ? 'canceled' : 'completed',
1068
+ })));
1028
1069
  workstreamFetchFailedRef.current = false;
1029
1070
  } catch (error) {
1030
1071
  if (isCancelled) return;
@@ -1045,6 +1086,15 @@ const handleCloseRightPanel = useCallback(() => {
1045
1086
  };
1046
1087
  }, [client.agents, agentRunId, isCompleted, activeWorkstreams.length]);
1047
1088
 
1089
+ // Auto-switch to Workstreams tab the first time workstreams become active
1090
+ const hasAutoSwitchedToWorkstreamsRef = useRef(false);
1091
+ useEffect(() => {
1092
+ if (panelWorkstreams.length > 0 && !hasAutoSwitchedToWorkstreamsRef.current) {
1093
+ hasAutoSwitchedToWorkstreamsRef.current = true;
1094
+ setRightPanelTab('workstreams');
1095
+ }
1096
+ }, [panelWorkstreams.length]);
1097
+
1048
1098
  // Notify parent when input availability is determined
1049
1099
  useEffect(() => {
1050
1100
  if (messages.length === 0) return;
@@ -1268,16 +1318,6 @@ const handleCloseRightPanel = useCallback(() => {
1268
1318
  }
1269
1319
  };
1270
1320
 
1271
- // Handle copying run ID
1272
- const copyRunId = () => {
1273
- navigator.clipboard.writeText(agentRunId);
1274
- toast({
1275
- status: "success",
1276
- title: t('agent.runIdCopied'),
1277
- duration: 2000,
1278
- });
1279
- };
1280
-
1281
1321
  const [isPdfModalOpen, setIsPdfModalOpen] = useState(false);
1282
1322
 
1283
1323
  const exportConversationPdf = () => {
@@ -1367,9 +1407,11 @@ const handleCloseRightPanel = useCallback(() => {
1367
1407
  <Header
1368
1408
  title={actualTitle}
1369
1409
  isCompleted={isCompleted}
1410
+ isTerminal={isWorkflowTerminal}
1370
1411
  onClose={onClose}
1371
1412
  isModal={isModal}
1372
1413
  agentRunId={agentRunId}
1414
+ workflowRunId={workflowRunId || ''}
1373
1415
  viewMode={viewMode}
1374
1416
  onViewModeChange={handleViewModeChange}
1375
1417
  showPlanPanel={showRightPanelProp && showSlidingPanel}
@@ -1377,10 +1419,9 @@ const handleCloseRightPanel = useCallback(() => {
1377
1419
  showPlanButton={showRightPanelProp && !conversationTab}
1378
1420
  onTogglePlanPanel={handleTogglePlanPanel}
1379
1421
  onDownload={downloadConversation}
1380
- onCopyRunId={copyRunId}
1381
1422
  resetWorkflow={resetWorkflow}
1382
1423
  onRestart={onRestart}
1383
- onFork={onFork}
1424
+ onClone={onClone}
1384
1425
  onShowDetails={onShowDetails}
1385
1426
  onExportPdf={exportConversationPdf}
1386
1427
  isReceivingChunks={debugChunkFlash}
@@ -1432,6 +1473,7 @@ const handleCloseRightPanel = useCallback(() => {
1432
1473
  StoreLinkComponent={effectiveStoreLinkComponent}
1433
1474
  CollectionLinkComponent={CollectionLinkComponent}
1434
1475
  prependFriendlyMessage={prependFriendlyMessage}
1476
+ hiddenMessageTypes={hiddenMessageTypes}
1435
1477
  />
1436
1478
  )}
1437
1479
 
@@ -1535,6 +1577,7 @@ const handleCloseRightPanel = useCallback(() => {
1535
1577
  activeDocumentId={activeDocumentId}
1536
1578
  onSelectDocument={selectDocument}
1537
1579
  onCloseDocument={handleCloseDocument}
1580
+ onUpdateDocumentTitle={updateDocumentTitle}
1538
1581
  docRefreshKey={docRefreshKey}
1539
1582
  runId={agentRunId}
1540
1583
  // Uploads
@@ -1551,6 +1594,8 @@ const handleCloseRightPanel = useCallback(() => {
1551
1594
  // Panel control
1552
1595
  onClose={handleCloseRightPanel}
1553
1596
  defaultTab={rightPanelTab}
1597
+ activeTab={rightPanelTab}
1598
+ onTabChange={setRightPanelTab}
1554
1599
  />
1555
1600
  </div>
1556
1601
  </>
@@ -166,6 +166,8 @@ interface AllMessagesMixedProps {
166
166
  /** Optional message to display as the first user message in the conversation.
167
167
  * Purely visual/UI — not sent to temporal. Renders as a QUESTION MessageItem before real messages. */
168
168
  prependFriendlyMessage?: string;
169
+ /** Message types to exclude from the conversation view */
170
+ hiddenMessageTypes?: AgentMessageType[];
169
171
  }
170
172
 
171
173
  // PERFORMANCE: Throttle interval for auto-scroll (ms)
@@ -192,6 +194,7 @@ function AllMessagesMixedComponent({
192
194
  StoreLinkComponent,
193
195
  CollectionLinkComponent,
194
196
  prependFriendlyMessage,
197
+ hiddenMessageTypes,
195
198
  }: AllMessagesMixedProps) {
196
199
  if (!artifactRunId) {
197
200
  console.warn('[AllMessagesMixed] artifactRunId prop is missing!');
@@ -290,7 +293,11 @@ function AllMessagesMixedComponent({
290
293
  // Low-signal messages are suppressed at the source (server-side) via shouldSuppressLowSignalMessage
291
294
  const sortedMessages = React.useMemo(
292
295
  () => {
293
- const sorted = [...messages].sort((a, b) => {
296
+ const filtered = hiddenMessageTypes?.length
297
+ ? messages.filter(m => !hiddenMessageTypes.includes(m.type))
298
+ : messages;
299
+
300
+ const sorted = [...filtered].sort((a, b) => {
294
301
  const timeA = typeof a.timestamp === "number" ? a.timestamp : new Date(a.timestamp).getTime();
295
302
  const timeB = typeof b.timestamp === "number" ? b.timestamp : new Date(b.timestamp).getTime();
296
303
  return timeA - timeB;
@@ -310,7 +317,7 @@ function AllMessagesMixedComponent({
310
317
  }
311
318
  return deduped;
312
319
  },
313
- [messages],
320
+ [messages, hiddenMessageTypes],
314
321
  );
315
322
 
316
323
  // Get workstreams from messages - only from message.workstream_id
@@ -439,13 +446,18 @@ function AllMessagesMixedComponent({
439
446
  // Check if each workstream is completed
440
447
  for (const [workstreamId, msgs] of workstreamMessages.entries()) {
441
448
  if (msgs.length > 0) {
442
- const lastMessage = msgs[msgs.length - 1];
443
- statusMap.set(workstreamId, [
444
- AgentMessageType.COMPLETE,
445
- AgentMessageType.IDLE,
446
- AgentMessageType.REQUEST_INPUT,
447
- AgentMessageType.TERMINATED
448
- ].includes(lastMessage.type));
449
+ const isCompleted = msgs.some(m => {
450
+ if ([AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT, AgentMessageType.TERMINATED].includes(m.type)) {
451
+ return true;
452
+ }
453
+ // Workstream completion is sent as UPDATE with workstream_event: 'completed' or status: 'completed'/'canceled'
454
+ if (m.type === AgentMessageType.UPDATE && m.details) {
455
+ const d = m.details as Record<string, unknown>;
456
+ return d.workstream_event === 'completed' || d.status === 'completed' || d.status === 'canceled';
457
+ }
458
+ return false;
459
+ });
460
+ statusMap.set(workstreamId, isCompleted);
449
461
  }
450
462
  }
451
463