@vertesia/ui 1.0.0-dev.20260305.083323Z → 1.0.0

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 (770) hide show
  1. package/lib/esm/core/components/SelectList.js +3 -1
  2. package/lib/esm/core/components/SelectList.js.map +1 -1
  3. package/lib/esm/core/components/SidePanel.js +2 -2
  4. package/lib/esm/core/components/SidePanel.js.map +1 -1
  5. package/lib/esm/core/components/index.js +0 -5
  6. package/lib/esm/core/components/index.js.map +1 -1
  7. package/lib/esm/core/components/shadcn/breadcrumb.js +11 -7
  8. package/lib/esm/core/components/shadcn/breadcrumb.js.map +1 -1
  9. package/lib/esm/core/components/shadcn/button.js +5 -3
  10. package/lib/esm/core/components/shadcn/button.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/collaspible.js +14 -0
  12. package/lib/esm/core/components/shadcn/collaspible.js.map +1 -0
  13. package/lib/esm/core/components/shadcn/dropdown.js +61 -0
  14. package/lib/esm/core/components/shadcn/dropdown.js.map +1 -0
  15. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +3 -1
  16. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
  17. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js +3 -1
  18. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -1
  19. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js +1 -1
  20. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -1
  21. package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js +1 -1
  22. package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js.map +1 -1
  23. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js +4 -2
  24. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js.map +1 -1
  25. package/lib/esm/core/components/shadcn/filters/filterBar.js +7 -4
  26. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  27. package/lib/esm/core/components/shadcn/index.js +4 -0
  28. package/lib/esm/core/components/shadcn/index.js.map +1 -1
  29. package/lib/esm/core/components/shadcn/modal/ConfirmModal.js +4 -2
  30. package/lib/esm/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
  31. package/lib/esm/core/components/shadcn/modal/DeleteModal.js +5 -3
  32. package/lib/esm/core/components/shadcn/modal/DeleteModal.js.map +1 -1
  33. package/lib/esm/core/components/shadcn/popover.js +11 -7
  34. package/lib/esm/core/components/shadcn/popover.js.map +1 -1
  35. package/lib/esm/core/components/shadcn/radioGroup.js +29 -0
  36. package/lib/esm/core/components/shadcn/radioGroup.js.map +1 -0
  37. package/lib/esm/core/components/shadcn/switch.js +19 -0
  38. package/lib/esm/core/components/shadcn/switch.js.map +1 -0
  39. package/lib/esm/core/components/shadcn/tabs.js +6 -6
  40. package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
  41. package/lib/esm/core/components/shadcn/theme/ThemeSwitcher.js +7 -4
  42. package/lib/esm/core/components/shadcn/theme/ThemeSwitcher.js.map +1 -1
  43. package/lib/esm/core/components/toast/NotificationPanel.js +3 -3
  44. package/lib/esm/core/components/toast/NotificationPanel.js.map +1 -1
  45. package/lib/esm/env/index.js +11 -1
  46. package/lib/esm/env/index.js.map +1 -1
  47. package/lib/esm/features/agent/PayloadBuilder.js +87 -15
  48. package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
  49. package/lib/esm/features/agent/chat/AgentRightPanel.js +159 -0
  50. package/lib/esm/features/agent/chat/AgentRightPanel.js.map +1 -0
  51. package/lib/esm/features/agent/chat/ArtifactsTab.js +69 -0
  52. package/lib/esm/features/agent/chat/ArtifactsTab.js.map +1 -0
  53. package/lib/esm/features/agent/chat/AskUserWidget.js +12 -6
  54. package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
  55. package/lib/esm/features/agent/chat/DocumentPanel.js +6 -3
  56. package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -1
  57. package/lib/esm/features/agent/chat/ImageLightbox.js +3 -1
  58. package/lib/esm/features/agent/chat/ImageLightbox.js.map +1 -1
  59. package/lib/esm/features/agent/chat/ModernAgentConversation.js +243 -106
  60. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  61. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +122 -52
  62. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  63. package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +5 -3
  64. package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
  65. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +57 -18
  66. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  67. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +82 -83
  68. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
  69. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +16 -14
  70. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  71. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +20 -5
  72. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  73. package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js +8 -6
  74. package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
  75. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +12 -10
  76. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
  77. package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js +5 -3
  78. package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
  79. package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +104 -13
  80. package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
  81. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +9 -5
  82. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
  83. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +160 -76
  84. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  85. package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js +3 -1
  86. package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
  87. package/lib/esm/features/agent/chat/VegaLiteChart.js +14 -2
  88. package/lib/esm/features/agent/chat/VegaLiteChart.js.map +1 -1
  89. package/lib/esm/features/agent/chat/hooks/useAgentPlans.js +3 -8
  90. package/lib/esm/features/agent/chat/hooks/useAgentPlans.js.map +1 -1
  91. package/lib/esm/features/agent/chat/hooks/useAgentStream.js +75 -16
  92. package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -1
  93. package/lib/esm/features/agent/chat/hooks/useArtifacts.js +108 -0
  94. package/lib/esm/features/agent/chat/hooks/useArtifacts.js.map +1 -0
  95. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +56 -5
  96. package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
  97. package/lib/esm/features/agent/chat/hooks/useFileProcessing.js +12 -10
  98. package/lib/esm/features/agent/chat/hooks/useFileProcessing.js.map +1 -1
  99. package/lib/esm/features/errors/PanelErrorBoundary.js +3 -1
  100. package/lib/esm/features/errors/PanelErrorBoundary.js.map +1 -1
  101. package/lib/esm/features/facets/AgentRunnerFacetsNav.js +45 -33
  102. package/lib/esm/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  103. package/lib/esm/features/facets/RunsFacetsNav.js +1 -1
  104. package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -1
  105. package/lib/esm/features/facets/index.js +1 -1
  106. package/lib/esm/features/facets/index.js.map +1 -1
  107. package/lib/esm/features/layout/GenericPageNavHeader.js +40 -28
  108. package/lib/esm/features/layout/GenericPageNavHeader.js.map +1 -1
  109. package/lib/esm/features/layout/NotFoundView.js +3 -1
  110. package/lib/esm/features/layout/NotFoundView.js.map +1 -1
  111. package/lib/esm/features/magic-pdf/AnnotatedImageSlider.js +9 -5
  112. package/lib/esm/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  113. package/lib/esm/features/magic-pdf/DownloadPopover.js +5 -4
  114. package/lib/esm/features/magic-pdf/DownloadPopover.js.map +1 -1
  115. package/lib/esm/features/magic-pdf/MagicPdfView.js +8 -5
  116. package/lib/esm/features/magic-pdf/MagicPdfView.js.map +1 -1
  117. package/lib/esm/features/pdf-viewer/PdfPageSlider.js +9 -5
  118. package/lib/esm/features/pdf-viewer/PdfPageSlider.js.map +1 -1
  119. package/lib/esm/features/pdf-viewer/SimplePdfViewer.js +5 -3
  120. package/lib/esm/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
  121. package/lib/esm/features/permissions/UserPermissionsProvider.js +3 -1
  122. package/lib/esm/features/permissions/UserPermissionsProvider.js.map +1 -1
  123. package/lib/esm/features/store/collections/BrowseCollectionView.js +9 -1
  124. package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
  125. package/lib/esm/features/store/collections/CollectionsTable.js +14 -7
  126. package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -1
  127. package/lib/esm/features/store/collections/CreateCollection.js +12 -9
  128. package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
  129. package/lib/esm/features/store/collections/EditCollectionView.js +23 -19
  130. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  131. package/lib/esm/features/store/collections/SelectCollection.js +25 -10
  132. package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
  133. package/lib/esm/features/store/collections/SharedPropsEditor.js +5 -3
  134. package/lib/esm/features/store/collections/SharedPropsEditor.js.map +1 -1
  135. package/lib/esm/features/store/collections/SyncMemberHeadsToggle.js +5 -3
  136. package/lib/esm/features/store/collections/SyncMemberHeadsToggle.js.map +1 -1
  137. package/lib/esm/features/store/objects/DocumentPreviewPanel.js +14 -12
  138. package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  139. package/lib/esm/features/store/objects/DocumentSearchResults.js +15 -5
  140. package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
  141. package/lib/esm/features/store/objects/DocumentTable.js +10 -7
  142. package/lib/esm/features/store/objects/DocumentTable.js.map +1 -1
  143. package/lib/esm/features/store/objects/ExportPropertiesModal.js +5 -2
  144. package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -1
  145. package/lib/esm/features/store/objects/components/ContentDispositionButton.js +3 -1
  146. package/lib/esm/features/store/objects/components/ContentDispositionButton.js.map +1 -1
  147. package/lib/esm/features/store/objects/components/ContentOverview.js +55 -40
  148. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  149. package/lib/esm/features/store/objects/components/DocumentIcon.js +4 -3
  150. package/lib/esm/features/store/objects/components/DocumentIcon.js.map +1 -1
  151. package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +13 -11
  152. package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
  153. package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js +15 -18
  154. package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -1
  155. package/lib/esm/features/store/objects/components/SelectDocument.js +9 -6
  156. package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -1
  157. package/lib/esm/features/store/objects/components/TextEditorPanel.js +97 -0
  158. package/lib/esm/features/store/objects/components/TextEditorPanel.js.map +1 -0
  159. package/lib/esm/features/store/objects/components/VectorSearchWidget.js +3 -1
  160. package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  161. package/lib/esm/features/store/objects/components/useContentPanelHooks.js +4 -2
  162. package/lib/esm/features/store/objects/components/useContentPanelHooks.js.map +1 -1
  163. package/lib/esm/features/store/objects/components/useDownloadFile.js +12 -10
  164. package/lib/esm/features/store/objects/components/useDownloadFile.js.map +1 -1
  165. package/lib/esm/features/store/objects/layout/documentLayout.js +10 -6
  166. package/lib/esm/features/store/objects/layout/documentLayout.js.map +1 -1
  167. package/lib/esm/features/store/objects/layout/renderers.js +10 -1
  168. package/lib/esm/features/store/objects/layout/renderers.js.map +1 -1
  169. package/lib/esm/features/store/objects/search/DocumentSearchContext.js +3 -2
  170. package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  171. package/lib/esm/features/store/objects/search/DocumentSearchProvider.js +3 -0
  172. package/lib/esm/features/store/objects/search/DocumentSearchProvider.js.map +1 -1
  173. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +22 -109
  174. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
  175. package/lib/esm/features/store/objects/selection/ObjectsActionContextClass.js +50 -0
  176. package/lib/esm/features/store/objects/selection/ObjectsActionContextClass.js.map +1 -0
  177. package/lib/esm/features/store/objects/selection/ObjectsActionHooks.js +27 -0
  178. package/lib/esm/features/store/objects/selection/ObjectsActionHooks.js.map +1 -0
  179. package/lib/esm/features/store/objects/selection/SelectionActions.js +10 -6
  180. package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
  181. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +17 -12
  182. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
  183. package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +9 -5
  184. package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -1
  185. package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js +4 -2
  186. package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js.map +1 -1
  187. package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js +24 -23
  188. package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -1
  189. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +10 -5
  190. package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
  191. package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js +13 -9
  192. package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js.map +1 -1
  193. package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +14 -8
  194. package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -1
  195. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +42 -39
  196. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  197. package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +4 -2
  198. package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
  199. package/lib/esm/features/store/objects/upload/useUploadHandler.js +9 -7
  200. package/lib/esm/features/store/objects/upload/useUploadHandler.js.map +1 -1
  201. package/lib/esm/features/store/types/ContentObjectTypesSearch.js +6 -4
  202. package/lib/esm/features/store/types/ContentObjectTypesSearch.js.map +1 -1
  203. package/lib/esm/features/store/types/ContentObjectTypesTable.js +3 -1
  204. package/lib/esm/features/store/types/ContentObjectTypesTable.js.map +1 -1
  205. package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js +6 -7
  206. package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js.map +1 -1
  207. package/lib/esm/features/store/types/ObjectSchemaEditor.js +9 -7
  208. package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
  209. package/lib/esm/features/store/types/SelectContentType.js +9 -7
  210. package/lib/esm/features/store/types/SelectContentType.js.map +1 -1
  211. package/lib/esm/features/store/types/SelectContentTypeModal.js +5 -2
  212. package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -1
  213. package/lib/esm/features/store/types/TableLayoutEditor.js +6 -4
  214. package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -1
  215. package/lib/esm/features/user/UserInfo.js +40 -50
  216. package/lib/esm/features/user/UserInfo.js.map +1 -1
  217. package/lib/esm/i18n/index.js +31 -0
  218. package/lib/esm/i18n/index.js.map +1 -0
  219. package/lib/esm/i18n/instance.js +46 -0
  220. package/lib/esm/i18n/instance.js.map +1 -0
  221. package/lib/esm/i18n/locales/ar.json +694 -0
  222. package/lib/esm/i18n/locales/de.json +662 -0
  223. package/lib/esm/i18n/locales/en.json +663 -0
  224. package/lib/esm/i18n/locales/es.json +668 -0
  225. package/lib/esm/i18n/locales/fr.json +670 -0
  226. package/lib/esm/i18n/locales/it.json +668 -0
  227. package/lib/esm/i18n/locales/ja.json +662 -0
  228. package/lib/esm/i18n/locales/ko.json +662 -0
  229. package/lib/esm/i18n/locales/pt.json +668 -0
  230. package/lib/esm/i18n/locales/ru.json +678 -0
  231. package/lib/esm/i18n/locales/tr.json +662 -0
  232. package/lib/esm/i18n/locales/zh-TW.json +662 -0
  233. package/lib/esm/i18n/locales/zh.json +662 -0
  234. package/lib/esm/layout/FullHeightLayout.js +3 -0
  235. package/lib/esm/layout/FullHeightLayout.js.map +1 -1
  236. package/lib/esm/layout/Navbar.js +3 -1
  237. package/lib/esm/layout/Navbar.js.map +1 -1
  238. package/lib/esm/layout/RegionTag.js +15 -0
  239. package/lib/esm/layout/RegionTag.js.map +1 -0
  240. package/lib/esm/layout/Sidebar.js +2 -2
  241. package/lib/esm/layout/Sidebar.js.map +1 -1
  242. package/lib/esm/layout/index.js +1 -0
  243. package/lib/esm/layout/index.js.map +1 -1
  244. package/lib/esm/router/HistoryNavigator.js +1 -1
  245. package/lib/esm/router/HistoryNavigator.js.map +1 -1
  246. package/lib/esm/router/Nav.js +5 -3
  247. package/lib/esm/router/Nav.js.map +1 -1
  248. package/lib/esm/router/NestedNavigationContext.js +4 -0
  249. package/lib/esm/router/NestedNavigationContext.js.map +1 -1
  250. package/lib/esm/router/NestedRouterProvider.js +3 -1
  251. package/lib/esm/router/NestedRouterProvider.js.map +1 -1
  252. package/lib/esm/router/Router.js +21 -6
  253. package/lib/esm/router/Router.js.map +1 -1
  254. package/lib/esm/session/UserSession.js +23 -0
  255. package/lib/esm/session/UserSession.js.map +1 -1
  256. package/lib/esm/session/UserSessionProvider.js +4 -0
  257. package/lib/esm/session/UserSessionProvider.js.map +1 -1
  258. package/lib/esm/session/auth/composable.js +1 -1
  259. package/lib/esm/session/auth/composable.js.map +1 -1
  260. package/lib/esm/session/auth/firebase.js +1 -1
  261. package/lib/esm/session/auth/firebase.js.map +1 -1
  262. package/lib/esm/session/auth/useCurrentTenant.js +3 -1
  263. package/lib/esm/session/auth/useCurrentTenant.js.map +1 -1
  264. package/lib/esm/shell/SplashScreen.js +3 -7
  265. package/lib/esm/shell/SplashScreen.js.map +1 -1
  266. package/lib/esm/shell/apps/StandaloneApp.js +5 -2
  267. package/lib/esm/shell/apps/StandaloneApp.js.map +1 -1
  268. package/lib/esm/shell/login/EnterpriseSigninButton.js +5 -3
  269. package/lib/esm/shell/login/EnterpriseSigninButton.js.map +1 -1
  270. package/lib/esm/shell/login/GitHubSignInButton.js +3 -7
  271. package/lib/esm/shell/login/GitHubSignInButton.js.map +1 -1
  272. package/lib/esm/shell/login/GoogleSignInButton.js +3 -1
  273. package/lib/esm/shell/login/GoogleSignInButton.js.map +1 -1
  274. package/lib/esm/shell/login/InviteAcceptModal.js +5 -2
  275. package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
  276. package/lib/esm/shell/login/MicrosoftSigninButton.js +4 -6
  277. package/lib/esm/shell/login/MicrosoftSigninButton.js.map +1 -1
  278. package/lib/esm/shell/login/SigninScreen.js +6 -2
  279. package/lib/esm/shell/login/SigninScreen.js.map +1 -1
  280. package/lib/esm/shell/login/SignupForm.js +36 -34
  281. package/lib/esm/shell/login/SignupForm.js.map +1 -1
  282. package/lib/esm/shell/login/TerminalLogin.js +28 -21
  283. package/lib/esm/shell/login/TerminalLogin.js.map +1 -1
  284. package/lib/esm/shell/login/UserInfo.js +6 -4
  285. package/lib/esm/shell/login/UserInfo.js.map +1 -1
  286. package/lib/esm/shell/login/UserSessionMenu.js +3 -4
  287. package/lib/esm/shell/login/UserSessionMenu.js.map +1 -1
  288. package/lib/esm/widgets/index.js +0 -1
  289. package/lib/esm/widgets/index.js.map +1 -1
  290. package/lib/esm/widgets/json-view/JSONCode.js +1 -1
  291. package/lib/esm/widgets/json-view/JSONCode.js.map +1 -1
  292. package/lib/esm/widgets/json-view/JSONDisplay.js +6 -2
  293. package/lib/esm/widgets/json-view/JSONDisplay.js.map +1 -1
  294. package/lib/esm/widgets/json-view/JSONSwitcher.js +6 -0
  295. package/lib/esm/widgets/json-view/JSONSwitcher.js.map +1 -0
  296. package/lib/esm/widgets/json-view/JSONView.js +1 -1
  297. package/lib/esm/widgets/json-view/JSONView.js.map +1 -1
  298. package/lib/esm/widgets/json-view/index.js +1 -0
  299. package/lib/esm/widgets/json-view/index.js.map +1 -1
  300. package/lib/esm/widgets/markdown/ArtifactContentRenderer.js +6 -5
  301. package/lib/esm/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
  302. package/lib/esm/widgets/markdown/CodeBlockContext.js +11 -0
  303. package/lib/esm/widgets/markdown/CodeBlockContext.js.map +1 -0
  304. package/lib/esm/widgets/markdown/MarkdownRenderer.js +11 -10
  305. package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
  306. package/lib/esm/widgets/markdown/codeBlockHandlers.js +11 -12
  307. package/lib/esm/widgets/markdown/codeBlockHandlers.js.map +1 -1
  308. package/lib/esm/widgets/markdown/index.js +10 -9
  309. package/lib/esm/widgets/markdown/index.js.map +1 -1
  310. package/lib/esm/widgets/markdown/remarkDirectiveHandler.js +0 -1
  311. package/lib/esm/widgets/markdown/remarkDirectiveHandler.js.map +1 -1
  312. package/lib/esm/widgets/schema-editor/ManagedSchema.js +6 -5
  313. package/lib/esm/widgets/schema-editor/ManagedSchema.js.map +1 -1
  314. package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js +7 -3
  315. package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
  316. package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js +3 -1
  317. package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
  318. package/lib/esm/widgets/upload/DropZone.js +9 -11
  319. package/lib/esm/widgets/upload/DropZone.js.map +1 -1
  320. package/lib/esm/widgets/upload/UploadResultCategory.js +3 -1
  321. package/lib/esm/widgets/upload/UploadResultCategory.js.map +1 -1
  322. package/lib/esm/widgets/upload/UploadSummary.js +3 -1
  323. package/lib/esm/widgets/upload/UploadSummary.js.map +1 -1
  324. package/lib/tsconfig.tsbuildinfo +1 -1
  325. package/lib/types/core/components/SelectList.d.ts.map +1 -1
  326. package/lib/types/core/components/SidePanel.d.ts +4 -2
  327. package/lib/types/core/components/SidePanel.d.ts.map +1 -1
  328. package/lib/types/core/components/index.d.ts +0 -5
  329. package/lib/types/core/components/index.d.ts.map +1 -1
  330. package/lib/types/core/components/shadcn/badge.d.ts +2 -2
  331. package/lib/types/core/components/shadcn/breadcrumb.d.ts +1 -1
  332. package/lib/types/core/components/shadcn/breadcrumb.d.ts.map +1 -1
  333. package/lib/types/core/components/shadcn/button.d.ts.map +1 -1
  334. package/lib/types/core/components/shadcn/collaspible.d.ts +6 -0
  335. package/lib/types/core/components/shadcn/collaspible.d.ts.map +1 -0
  336. package/lib/types/core/components/shadcn/dropdown.d.ts +44 -0
  337. package/lib/types/core/components/shadcn/dropdown.d.ts.map +1 -0
  338. package/lib/types/core/components/shadcn/filters/comboBox/DateCombobox.d.ts.map +1 -1
  339. package/lib/types/core/components/shadcn/filters/comboBox/SelectCombobox.d.ts.map +1 -1
  340. package/lib/types/core/components/shadcn/filters/filter/dateFilter.d.ts.map +1 -1
  341. package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  342. package/lib/types/core/components/shadcn/index.d.ts +4 -0
  343. package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
  344. package/lib/types/core/components/shadcn/input.d.ts +1 -1
  345. package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts +2 -1
  346. package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -1
  347. package/lib/types/core/components/shadcn/modal/DeleteModal.d.ts.map +1 -1
  348. package/lib/types/core/components/shadcn/popover.d.ts +11 -3
  349. package/lib/types/core/components/shadcn/popover.d.ts.map +1 -1
  350. package/lib/types/core/components/shadcn/radioGroup.d.ts +26 -0
  351. package/lib/types/core/components/shadcn/radioGroup.d.ts.map +1 -0
  352. package/lib/types/core/components/shadcn/switch.d.ts +12 -0
  353. package/lib/types/core/components/shadcn/switch.d.ts.map +1 -0
  354. package/lib/types/core/components/shadcn/tabs.d.ts +4 -2
  355. package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
  356. package/lib/types/core/components/shadcn/theme/ThemeSwitcher.d.ts +3 -2
  357. package/lib/types/core/components/shadcn/theme/ThemeSwitcher.d.ts.map +1 -1
  358. package/lib/types/core/components/toast/NotificationPanel.d.ts.map +1 -1
  359. package/lib/types/env/index.d.ts +8 -1
  360. package/lib/types/env/index.d.ts.map +1 -1
  361. package/lib/types/features/agent/PayloadBuilder.d.ts +31 -3
  362. package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
  363. package/lib/types/features/agent/chat/AgentRightPanel.d.ts +50 -0
  364. package/lib/types/features/agent/chat/AgentRightPanel.d.ts.map +1 -0
  365. package/lib/types/features/agent/chat/ArtifactsTab.d.ts +9 -0
  366. package/lib/types/features/agent/chat/ArtifactsTab.d.ts.map +1 -0
  367. package/lib/types/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  368. package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -1
  369. package/lib/types/features/agent/chat/ImageLightbox.d.ts.map +1 -1
  370. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +22 -9
  371. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  372. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
  373. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  374. package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts.map +1 -1
  375. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +12 -3
  376. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  377. package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts +1 -1
  378. package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts.map +1 -1
  379. package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  380. package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  381. package/lib/types/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
  382. package/lib/types/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.d.ts.map +1 -1
  383. package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts +3 -1
  384. package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
  385. package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts +5 -1
  386. package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
  387. package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
  388. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +16 -1
  389. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
  390. package/lib/types/features/agent/chat/SlidingThinkingIndicator.d.ts.map +1 -1
  391. package/lib/types/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
  392. package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -1
  393. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +3 -3
  394. package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
  395. package/lib/types/features/agent/chat/hooks/useArtifacts.d.ts +18 -0
  396. package/lib/types/features/agent/chat/hooks/useArtifacts.d.ts.map +1 -0
  397. package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
  398. package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts +4 -4
  399. package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -1
  400. package/lib/types/features/agent/chat/types/document.d.ts +2 -0
  401. package/lib/types/features/agent/chat/types/document.d.ts.map +1 -1
  402. package/lib/types/features/errors/PanelErrorBoundary.d.ts.map +1 -1
  403. package/lib/types/features/facets/AgentRunnerFacetsNav.d.ts +2 -1
  404. package/lib/types/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  405. package/lib/types/features/facets/index.d.ts +1 -1
  406. package/lib/types/features/facets/index.d.ts.map +1 -1
  407. package/lib/types/features/layout/GenericPageNavHeader.d.ts +2 -2
  408. package/lib/types/features/layout/GenericPageNavHeader.d.ts.map +1 -1
  409. package/lib/types/features/layout/NotFoundView.d.ts.map +1 -1
  410. package/lib/types/features/magic-pdf/AnnotatedImageSlider.d.ts.map +1 -1
  411. package/lib/types/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
  412. package/lib/types/features/magic-pdf/MagicPdfView.d.ts.map +1 -1
  413. package/lib/types/features/pdf-viewer/PdfPageSlider.d.ts.map +1 -1
  414. package/lib/types/features/pdf-viewer/SimplePdfViewer.d.ts.map +1 -1
  415. package/lib/types/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  416. package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
  417. package/lib/types/features/store/collections/CollectionsTable.d.ts +4 -0
  418. package/lib/types/features/store/collections/CollectionsTable.d.ts.map +1 -1
  419. package/lib/types/features/store/collections/CreateCollection.d.ts.map +1 -1
  420. package/lib/types/features/store/collections/EditCollectionView.d.ts.map +1 -1
  421. package/lib/types/features/store/collections/SelectCollection.d.ts.map +1 -1
  422. package/lib/types/features/store/collections/SharedPropsEditor.d.ts.map +1 -1
  423. package/lib/types/features/store/collections/SyncMemberHeadsToggle.d.ts.map +1 -1
  424. package/lib/types/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
  425. package/lib/types/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  426. package/lib/types/features/store/objects/DocumentTable.d.ts.map +1 -1
  427. package/lib/types/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
  428. package/lib/types/features/store/objects/components/ContentDispositionButton.d.ts.map +1 -1
  429. package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  430. package/lib/types/features/store/objects/components/DocumentIcon.d.ts +2 -1
  431. package/lib/types/features/store/objects/components/DocumentIcon.d.ts.map +1 -1
  432. package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts.map +1 -1
  433. package/lib/types/features/store/objects/components/SaveVersionConfirmModal.d.ts.map +1 -1
  434. package/lib/types/features/store/objects/components/SelectDocument.d.ts +3 -1
  435. package/lib/types/features/store/objects/components/SelectDocument.d.ts.map +1 -1
  436. package/lib/types/features/store/objects/components/TextEditorPanel.d.ts +10 -0
  437. package/lib/types/features/store/objects/components/TextEditorPanel.d.ts.map +1 -0
  438. package/lib/types/features/store/objects/components/VectorSearchWidget.d.ts.map +1 -1
  439. package/lib/types/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
  440. package/lib/types/features/store/objects/components/useDownloadFile.d.ts.map +1 -1
  441. package/lib/types/features/store/objects/layout/documentLayout.d.ts +3 -2
  442. package/lib/types/features/store/objects/layout/documentLayout.d.ts.map +1 -1
  443. package/lib/types/features/store/objects/layout/renderers.d.ts.map +1 -1
  444. package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  445. package/lib/types/features/store/objects/search/DocumentSearchProvider.d.ts.map +1 -1
  446. package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts +3 -20
  447. package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
  448. package/lib/types/features/store/objects/selection/ObjectsActionContextClass.d.ts +16 -0
  449. package/lib/types/features/store/objects/selection/ObjectsActionContextClass.d.ts.map +1 -0
  450. package/lib/types/features/store/objects/selection/ObjectsActionHooks.d.ts +7 -0
  451. package/lib/types/features/store/objects/selection/ObjectsActionHooks.d.ts.map +1 -0
  452. package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts +4 -1
  453. package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts.map +1 -1
  454. package/lib/types/features/store/objects/selection/SelectionActions.d.ts +6 -1
  455. package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
  456. package/lib/types/features/store/objects/selection/actions/AddToCollectionAction.d.ts.map +1 -1
  457. package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts.map +1 -1
  458. package/lib/types/features/store/objects/selection/actions/ConfirmAction.d.ts +1 -1
  459. package/lib/types/features/store/objects/selection/actions/ConfirmAction.d.ts.map +1 -1
  460. package/lib/types/features/store/objects/selection/actions/DeleteObjectsAction.d.ts.map +1 -1
  461. package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
  462. package/lib/types/features/store/objects/selection/actions/RemoveFromCollectionAction.d.ts.map +1 -1
  463. package/lib/types/features/store/objects/selection/actions/StartWorkflowComponent.d.ts.map +1 -1
  464. package/lib/types/features/store/objects/upload/DocumentUploadModal.d.ts.map +1 -1
  465. package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
  466. package/lib/types/features/store/objects/upload/useUploadHandler.d.ts.map +1 -1
  467. package/lib/types/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
  468. package/lib/types/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
  469. package/lib/types/features/store/types/CreateOrUpdateTypeModal.d.ts +2 -1
  470. package/lib/types/features/store/types/CreateOrUpdateTypeModal.d.ts.map +1 -1
  471. package/lib/types/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
  472. package/lib/types/features/store/types/SelectContentType.d.ts.map +1 -1
  473. package/lib/types/features/store/types/SelectContentTypeModal.d.ts.map +1 -1
  474. package/lib/types/features/store/types/TableLayoutEditor.d.ts.map +1 -1
  475. package/lib/types/features/user/UserInfo.d.ts +2 -2
  476. package/lib/types/features/user/UserInfo.d.ts.map +1 -1
  477. package/lib/types/i18n/index.d.ts +14 -0
  478. package/lib/types/i18n/index.d.ts.map +1 -0
  479. package/lib/types/i18n/instance.d.ts +5 -0
  480. package/lib/types/i18n/instance.d.ts.map +1 -0
  481. package/lib/types/layout/FullHeightLayout.d.ts +3 -0
  482. package/lib/types/layout/FullHeightLayout.d.ts.map +1 -1
  483. package/lib/types/layout/Navbar.d.ts.map +1 -1
  484. package/lib/types/layout/RegionTag.d.ts +4 -0
  485. package/lib/types/layout/RegionTag.d.ts.map +1 -0
  486. package/lib/types/layout/Sidebar.d.ts +2 -1
  487. package/lib/types/layout/Sidebar.d.ts.map +1 -1
  488. package/lib/types/layout/index.d.ts +1 -0
  489. package/lib/types/layout/index.d.ts.map +1 -1
  490. package/lib/types/router/Nav.d.ts +5 -1
  491. package/lib/types/router/Nav.d.ts.map +1 -1
  492. package/lib/types/router/NestedNavigationContext.d.ts.map +1 -1
  493. package/lib/types/router/NestedRouterProvider.d.ts.map +1 -1
  494. package/lib/types/router/Router.d.ts +2 -0
  495. package/lib/types/router/Router.d.ts.map +1 -1
  496. package/lib/types/session/UserSession.d.ts +1 -0
  497. package/lib/types/session/UserSession.d.ts.map +1 -1
  498. package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
  499. package/lib/types/session/auth/useCurrentTenant.d.ts.map +1 -1
  500. package/lib/types/shell/SplashScreen.d.ts.map +1 -1
  501. package/lib/types/shell/apps/StandaloneApp.d.ts.map +1 -1
  502. package/lib/types/shell/login/EnterpriseSigninButton.d.ts.map +1 -1
  503. package/lib/types/shell/login/GitHubSignInButton.d.ts.map +1 -1
  504. package/lib/types/shell/login/GoogleSignInButton.d.ts.map +1 -1
  505. package/lib/types/shell/login/InviteAcceptModal.d.ts.map +1 -1
  506. package/lib/types/shell/login/MicrosoftSigninButton.d.ts +1 -1
  507. package/lib/types/shell/login/MicrosoftSigninButton.d.ts.map +1 -1
  508. package/lib/types/shell/login/SigninScreen.d.ts.map +1 -1
  509. package/lib/types/shell/login/SignupForm.d.ts.map +1 -1
  510. package/lib/types/shell/login/TerminalLogin.d.ts.map +1 -1
  511. package/lib/types/shell/login/UserInfo.d.ts.map +1 -1
  512. package/lib/types/shell/login/UserSessionMenu.d.ts.map +1 -1
  513. package/lib/types/widgets/index.d.ts +0 -1
  514. package/lib/types/widgets/index.d.ts.map +1 -1
  515. package/lib/types/widgets/json-view/JSONDisplay.d.ts.map +1 -1
  516. package/lib/types/widgets/json-view/JSONSwitcher.d.ts +6 -0
  517. package/lib/types/widgets/json-view/JSONSwitcher.d.ts.map +1 -0
  518. package/lib/types/widgets/json-view/index.d.ts +1 -0
  519. package/lib/types/widgets/json-view/index.d.ts.map +1 -1
  520. package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
  521. package/lib/types/widgets/markdown/CodeBlockContext.d.ts +21 -0
  522. package/lib/types/widgets/markdown/CodeBlockContext.d.ts.map +1 -0
  523. package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
  524. package/lib/types/widgets/markdown/codeBlockHandlers.d.ts +0 -12
  525. package/lib/types/widgets/markdown/codeBlockHandlers.d.ts.map +1 -1
  526. package/lib/types/widgets/markdown/index.d.ts +10 -9
  527. package/lib/types/widgets/markdown/index.d.ts.map +1 -1
  528. package/lib/types/widgets/schema-editor/ManagedSchema.d.ts +1 -1
  529. package/lib/types/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
  530. package/lib/types/widgets/schema-editor/editor/PropertyEditor.d.ts.map +1 -1
  531. package/lib/types/widgets/schema-editor/editor/SchemaEditor.d.ts.map +1 -1
  532. package/lib/types/widgets/upload/DropZone.d.ts.map +1 -1
  533. package/lib/types/widgets/upload/UploadResultCategory.d.ts.map +1 -1
  534. package/lib/types/widgets/upload/UploadSummary.d.ts.map +1 -1
  535. package/lib/vertesia-ui-core.js +1 -1
  536. package/lib/vertesia-ui-core.js.map +1 -1
  537. package/lib/vertesia-ui-env.js +1 -1
  538. package/lib/vertesia-ui-env.js.map +1 -1
  539. package/lib/vertesia-ui-features.js +1 -1
  540. package/lib/vertesia-ui-features.js.map +1 -1
  541. package/lib/vertesia-ui-i18n.js +2 -0
  542. package/lib/vertesia-ui-i18n.js.map +1 -0
  543. package/lib/vertesia-ui-layout.js +1 -1
  544. package/lib/vertesia-ui-layout.js.map +1 -1
  545. package/lib/vertesia-ui-router.js +1 -1
  546. package/lib/vertesia-ui-router.js.map +1 -1
  547. package/lib/vertesia-ui-session.js +1 -1
  548. package/lib/vertesia-ui-session.js.map +1 -1
  549. package/lib/vertesia-ui-shell.js +1 -1
  550. package/lib/vertesia-ui-shell.js.map +1 -1
  551. package/lib/vertesia-ui-widgets.js +1 -1
  552. package/lib/vertesia-ui-widgets.js.map +1 -1
  553. package/package.json +36 -22
  554. package/src/core/components/SelectList.tsx +3 -1
  555. package/src/core/components/SidePanel.tsx +5 -4
  556. package/src/core/components/index.ts +0 -5
  557. package/src/core/components/shadcn/breadcrumb.tsx +16 -9
  558. package/src/core/components/shadcn/button.tsx +5 -3
  559. package/src/core/components/shadcn/collaspible.tsx +33 -0
  560. package/src/core/components/shadcn/dropdown.tsx +309 -0
  561. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +3 -1
  562. package/src/core/components/shadcn/filters/comboBox/SelectCombobox.tsx +3 -1
  563. package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +1 -1
  564. package/src/core/components/shadcn/filters/filter/StringListFilter.tsx +1 -1
  565. package/src/core/components/shadcn/filters/filter/dateFilter.tsx +5 -3
  566. package/src/core/components/shadcn/filters/filterBar.tsx +8 -5
  567. package/src/core/components/shadcn/index.ts +5 -1
  568. package/src/core/components/shadcn/modal/ConfirmModal.tsx +7 -3
  569. package/src/core/components/shadcn/modal/DeleteModal.tsx +5 -3
  570. package/src/core/components/shadcn/popover.tsx +12 -7
  571. package/src/core/components/shadcn/radioGroup.tsx +100 -0
  572. package/src/core/components/shadcn/switch.tsx +60 -0
  573. package/src/core/components/shadcn/tabs.tsx +29 -27
  574. package/src/core/components/shadcn/theme/ThemeSwitcher.tsx +13 -9
  575. package/src/core/components/toast/NotificationPanel.tsx +38 -44
  576. package/src/env/index.ts +16 -3
  577. package/src/features/agent/PayloadBuilder.tsx +100 -13
  578. package/src/features/agent/chat/AgentRightPanel.tsx +424 -0
  579. package/src/features/agent/chat/ArtifactsTab.tsx +197 -0
  580. package/src/features/agent/chat/AskUserWidget.tsx +14 -8
  581. package/src/features/agent/chat/DocumentPanel.tsx +24 -9
  582. package/src/features/agent/chat/ImageLightbox.tsx +6 -3
  583. package/src/features/agent/chat/ModernAgentConversation.tsx +461 -271
  584. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +151 -55
  585. package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +6 -4
  586. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +126 -46
  587. package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +21 -31
  588. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +119 -114
  589. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +26 -9
  590. package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +9 -7
  591. package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +15 -13
  592. package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +8 -3
  593. package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +149 -49
  594. package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +9 -5
  595. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +229 -0
  596. package/src/features/agent/chat/ModernAgentOutput/utils.ts +202 -97
  597. package/src/features/agent/chat/SlidingThinkingIndicator.tsx +5 -3
  598. package/src/features/agent/chat/VegaLiteChart.tsx +20 -8
  599. package/src/features/agent/chat/hooks/useAgentPlans.ts +3 -9
  600. package/src/features/agent/chat/hooks/useAgentStream.ts +80 -19
  601. package/src/features/agent/chat/hooks/useArtifacts.ts +151 -0
  602. package/src/features/agent/chat/hooks/useDocumentPanel.ts +65 -5
  603. package/src/features/agent/chat/hooks/useFileProcessing.ts +14 -13
  604. package/src/features/agent/chat/types/document.ts +2 -0
  605. package/src/features/errors/PanelErrorBoundary.tsx +5 -3
  606. package/src/features/facets/AgentRunnerFacetsNav.tsx +54 -35
  607. package/src/features/facets/RunsFacetsNav.tsx +6 -6
  608. package/src/features/facets/index.ts +1 -1
  609. package/src/features/layout/GenericPageNavHeader.tsx +64 -41
  610. package/src/features/layout/NotFoundView.tsx +4 -1
  611. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +12 -8
  612. package/src/features/magic-pdf/DownloadPopover.tsx +11 -10
  613. package/src/features/magic-pdf/MagicPdfView.tsx +10 -7
  614. package/src/features/pdf-viewer/PdfPageSlider.tsx +10 -6
  615. package/src/features/pdf-viewer/SimplePdfViewer.tsx +5 -3
  616. package/src/features/permissions/UserPermissionsProvider.tsx +3 -1
  617. package/src/features/store/collections/BrowseCollectionView.tsx +11 -1
  618. package/src/features/store/collections/CollectionsTable.tsx +20 -12
  619. package/src/features/store/collections/CreateCollection.tsx +14 -11
  620. package/src/features/store/collections/EditCollectionView.tsx +31 -28
  621. package/src/features/store/collections/SelectCollection.tsx +50 -14
  622. package/src/features/store/collections/SharedPropsEditor.tsx +7 -5
  623. package/src/features/store/collections/SyncMemberHeadsToggle.tsx +6 -4
  624. package/src/features/store/objects/DocumentPreviewPanel.tsx +30 -28
  625. package/src/features/store/objects/DocumentSearchResults.tsx +31 -21
  626. package/src/features/store/objects/DocumentTable.tsx +11 -5
  627. package/src/features/store/objects/ExportPropertiesModal.tsx +8 -5
  628. package/src/features/store/objects/components/ContentDispositionButton.tsx +3 -1
  629. package/src/features/store/objects/components/ContentOverview.tsx +96 -50
  630. package/src/features/store/objects/components/DocumentIcon.tsx +11 -3
  631. package/src/features/store/objects/components/PropertiesEditorModal.tsx +14 -12
  632. package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +24 -37
  633. package/src/features/store/objects/components/SelectDocument.tsx +15 -6
  634. package/src/features/store/objects/components/TextEditorPanel.tsx +143 -0
  635. package/src/features/store/objects/components/VectorSearchWidget.tsx +11 -8
  636. package/src/features/store/objects/components/useContentPanelHooks.ts +4 -2
  637. package/src/features/store/objects/components/useDownloadFile.ts +12 -10
  638. package/src/features/store/objects/layout/documentLayout.tsx +16 -6
  639. package/src/features/store/objects/layout/renderers.tsx +27 -1
  640. package/src/features/store/objects/search/DocumentSearchContext.ts +3 -2
  641. package/src/features/store/objects/search/DocumentSearchProvider.tsx +3 -0
  642. package/src/features/store/objects/selection/ObjectsActionContext.tsx +26 -128
  643. package/src/features/store/objects/selection/ObjectsActionContextClass.ts +59 -0
  644. package/src/features/store/objects/selection/ObjectsActionHooks.ts +33 -0
  645. package/src/features/store/objects/selection/ObjectsActionSpec.ts +4 -1
  646. package/src/features/store/objects/selection/SelectionActions.tsx +14 -6
  647. package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +19 -14
  648. package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +9 -5
  649. package/src/features/store/objects/selection/actions/ConfirmAction.tsx +4 -3
  650. package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +24 -23
  651. package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +10 -5
  652. package/src/features/store/objects/selection/actions/RemoveFromCollectionAction.tsx +13 -9
  653. package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +14 -8
  654. package/src/features/store/objects/upload/DocumentUploadModal.tsx +56 -55
  655. package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +4 -2
  656. package/src/features/store/objects/upload/useUploadHandler.ts +9 -7
  657. package/src/features/store/types/ContentObjectTypesSearch.tsx +10 -8
  658. package/src/features/store/types/ContentObjectTypesTable.tsx +6 -4
  659. package/src/features/store/types/CreateOrUpdateTypeModal.tsx +11 -12
  660. package/src/features/store/types/ObjectSchemaEditor.tsx +11 -9
  661. package/src/features/store/types/SelectContentType.tsx +15 -13
  662. package/src/features/store/types/SelectContentTypeModal.tsx +16 -13
  663. package/src/features/store/types/TableLayoutEditor.tsx +16 -12
  664. package/src/features/user/UserInfo.tsx +47 -56
  665. package/src/i18n/index.tsx +45 -0
  666. package/src/i18n/instance.ts +49 -0
  667. package/src/i18n/locales/ar.json +694 -0
  668. package/src/i18n/locales/de.json +662 -0
  669. package/src/i18n/locales/en.json +663 -0
  670. package/src/i18n/locales/es.json +668 -0
  671. package/src/i18n/locales/fr.json +670 -0
  672. package/src/i18n/locales/it.json +668 -0
  673. package/src/i18n/locales/ja.json +662 -0
  674. package/src/i18n/locales/ko.json +662 -0
  675. package/src/i18n/locales/pt.json +668 -0
  676. package/src/i18n/locales/ru.json +678 -0
  677. package/src/i18n/locales/tr.json +662 -0
  678. package/src/i18n/locales/zh-TW.json +662 -0
  679. package/src/i18n/locales/zh.json +662 -0
  680. package/src/layout/FullHeightLayout.tsx +8 -0
  681. package/src/layout/Navbar.tsx +4 -2
  682. package/src/layout/RegionTag.tsx +25 -0
  683. package/src/layout/Sidebar.tsx +4 -3
  684. package/src/layout/index.ts +2 -1
  685. package/src/router/HistoryNavigator.ts +10 -10
  686. package/src/router/Nav.tsx +9 -3
  687. package/src/router/NestedNavigationContext.tsx +4 -0
  688. package/src/router/NestedRouterProvider.tsx +3 -1
  689. package/src/router/Router.tsx +23 -7
  690. package/src/session/UserSession.ts +24 -0
  691. package/src/session/UserSessionProvider.tsx +4 -0
  692. package/src/session/auth/composable.ts +1 -1
  693. package/src/session/auth/firebase.ts +1 -1
  694. package/src/session/auth/useCurrentTenant.ts +3 -1
  695. package/src/shell/SplashScreen.tsx +22 -26
  696. package/src/shell/apps/StandaloneApp.tsx +9 -6
  697. package/src/shell/login/EnterpriseSigninButton.tsx +6 -4
  698. package/src/shell/login/GitHubSignInButton.tsx +3 -7
  699. package/src/shell/login/GoogleSignInButton.tsx +3 -1
  700. package/src/shell/login/InviteAcceptModal.tsx +5 -2
  701. package/src/shell/login/MicrosoftSigninButton.tsx +4 -6
  702. package/src/shell/login/SigninScreen.tsx +18 -13
  703. package/src/shell/login/SignupForm.tsx +46 -46
  704. package/src/shell/login/TerminalLogin.tsx +35 -31
  705. package/src/shell/login/UserInfo.tsx +15 -13
  706. package/src/shell/login/UserSessionMenu.tsx +28 -31
  707. package/src/widgets/index.ts +0 -1
  708. package/src/widgets/json-view/JSONCode.tsx +1 -1
  709. package/src/widgets/json-view/JSONDisplay.tsx +8 -3
  710. package/src/widgets/json-view/JSONSwitcher.tsx +24 -0
  711. package/src/widgets/json-view/JSONView.tsx +1 -1
  712. package/src/widgets/json-view/index.ts +1 -0
  713. package/src/widgets/markdown/ArtifactContentRenderer.tsx +15 -7
  714. package/src/widgets/markdown/CodeBlockContext.tsx +34 -0
  715. package/src/widgets/markdown/MarkdownRenderer.tsx +14 -13
  716. package/src/widgets/markdown/codeBlockHandlers.tsx +17 -36
  717. package/src/widgets/markdown/index.ts +27 -34
  718. package/src/widgets/markdown/remarkDirectiveHandler.ts +1 -1
  719. package/src/widgets/schema-editor/ManagedSchema.ts +6 -5
  720. package/src/widgets/schema-editor/editor/PropertyEditor.tsx +7 -3
  721. package/src/widgets/schema-editor/editor/SchemaEditor.tsx +3 -1
  722. package/src/widgets/upload/DropZone.tsx +10 -13
  723. package/src/widgets/upload/UploadResultCategory.tsx +3 -1
  724. package/src/widgets/upload/UploadSummary.tsx +13 -11
  725. package/tsconfig.dist.json +1 -1
  726. package/lib/esm/core/components/Dropdown.js +0 -16
  727. package/lib/esm/core/components/Dropdown.js.map +0 -1
  728. package/lib/esm/core/components/DropdownList.js +0 -9
  729. package/lib/esm/core/components/DropdownList.js.map +0 -1
  730. package/lib/esm/core/components/RadioGroup.js +0 -34
  731. package/lib/esm/core/components/RadioGroup.js.map +0 -1
  732. package/lib/esm/core/components/SelectStack.js +0 -8
  733. package/lib/esm/core/components/SelectStack.js.map +0 -1
  734. package/lib/esm/core/components/Switch.js +0 -12
  735. package/lib/esm/core/components/Switch.js.map +0 -1
  736. package/lib/esm/widgets/popover/Popover.js +0 -73
  737. package/lib/esm/widgets/popover/Popover.js.map +0 -1
  738. package/lib/esm/widgets/popover/context.js +0 -7
  739. package/lib/esm/widgets/popover/context.js.map +0 -1
  740. package/lib/esm/widgets/popover/index.js +0 -3
  741. package/lib/esm/widgets/popover/index.js.map +0 -1
  742. package/lib/esm/widgets/popover/slots.js +0 -22
  743. package/lib/esm/widgets/popover/slots.js.map +0 -1
  744. package/lib/types/core/components/Dropdown.d.ts +0 -15
  745. package/lib/types/core/components/Dropdown.d.ts.map +0 -1
  746. package/lib/types/core/components/DropdownList.d.ts +0 -13
  747. package/lib/types/core/components/DropdownList.d.ts.map +0 -1
  748. package/lib/types/core/components/RadioGroup.d.ts +0 -26
  749. package/lib/types/core/components/RadioGroup.d.ts.map +0 -1
  750. package/lib/types/core/components/SelectStack.d.ts +0 -13
  751. package/lib/types/core/components/SelectStack.d.ts.map +0 -1
  752. package/lib/types/core/components/Switch.d.ts +0 -11
  753. package/lib/types/core/components/Switch.d.ts.map +0 -1
  754. package/lib/types/widgets/popover/Popover.d.ts +0 -38
  755. package/lib/types/widgets/popover/Popover.d.ts.map +0 -1
  756. package/lib/types/widgets/popover/context.d.ts +0 -8
  757. package/lib/types/widgets/popover/context.d.ts.map +0 -1
  758. package/lib/types/widgets/popover/index.d.ts +0 -3
  759. package/lib/types/widgets/popover/index.d.ts.map +0 -1
  760. package/lib/types/widgets/popover/slots.d.ts +0 -5
  761. package/lib/types/widgets/popover/slots.d.ts.map +0 -1
  762. package/src/core/components/Dropdown.tsx +0 -63
  763. package/src/core/components/DropdownList.tsx +0 -72
  764. package/src/core/components/RadioGroup.tsx +0 -100
  765. package/src/core/components/SelectStack.tsx +0 -63
  766. package/src/core/components/Switch.tsx +0 -30
  767. package/src/widgets/popover/Popover.tsx +0 -171
  768. package/src/widgets/popover/context.ts +0 -15
  769. package/src/widgets/popover/index.ts +0 -2
  770. package/src/widgets/popover/slots.ts +0 -24
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { Bot, Cpu, FileTextIcon, SendIcon, UploadIcon, XIcon } from "lucide-react";
4
4
  import { useUserSession } from "@vertesia/ui/session";
@@ -10,13 +10,13 @@ import { ImageLightboxProvider } from "./ImageLightbox";
10
10
  import AllMessagesMixed from "./ModernAgentOutput/AllMessagesMixed";
11
11
  import Header from "./ModernAgentOutput/Header";
12
12
  import MessageInput from "./ModernAgentOutput/MessageInput";
13
- import { getWorkstreamId } from "./ModernAgentOutput/utils";
13
+ import { getConversationUrl, getWorkstreamId } from "./ModernAgentOutput/utils";
14
14
  import { ThinkingMessages } from "./WaitingMessages";
15
- import InlineSlidingPlanPanel from "./ModernAgentOutput/InlineSlidingPlanPanel";
16
15
  import { SkillWidgetProvider } from "./SkillWidgetProvider";
17
16
  import { ArtifactUrlCacheProvider } from "./useArtifactUrlCache.js";
17
+ import { useUITranslation } from "../../../i18n/index.js";
18
18
  import { VegaLiteChart } from "./VegaLiteChart";
19
- import { DocumentPanel } from "./DocumentPanel.js";
19
+ import { AgentRightPanel } from "./AgentRightPanel.js";
20
20
  import { useAgentStream } from "./hooks/useAgentStream.js";
21
21
  import { useAgentPlans } from "./hooks/useAgentPlans.js";
22
22
  import { useDocumentPanel } from "./hooks/useDocumentPanel.js";
@@ -58,19 +58,12 @@ function printElementToPdf(sourceElement, title) {
58
58
  return true;
59
59
  }
60
60
  export function ModernAgentConversation(props) {
61
- const { run, startWorkflow } = props;
62
- if (run) {
63
- // If we have a run, convert it to AsyncExecutionResult format if needed
64
- const execRun = "runId" in run
65
- ? run
66
- : {
67
- runId: run.run_id,
68
- workflowId: run.workflow_id,
69
- };
70
- return (_jsx(SkillWidgetProvider, { children: _jsx(ModernAgentConversationInner, { ...props, run: execRun }) }));
61
+ const { agentRunId, startWorkflow } = props;
62
+ if (agentRunId) {
63
+ return (_jsx(SkillWidgetProvider, { children: _jsx(ModernAgentConversationInner, { ...props, agentRunId: agentRunId }) }));
71
64
  }
72
65
  else if (startWorkflow) {
73
- // If we have startWorkflow capability but no run yet
66
+ // If we have startWorkflow capability but no agentRunId yet
74
67
  return _jsx(StartWorkflowView, { ...props });
75
68
  }
76
69
  else {
@@ -80,19 +73,24 @@ export function ModernAgentConversation(props) {
80
73
  }
81
74
  // Empty state when no agent is running
82
75
  function EmptyState() {
83
- return (_jsxs(MessageBox, { status: "info", icon: _jsx(Bot, { className: "size-16 text-muted mb-4" }), children: [_jsx("div", { className: "text-base font-medium text-muted", children: "No agent currently running" }), _jsx("div", { className: "mt-3 text-sm text-muted", children: "Select an interaction and click Start to start an agent" })] }));
76
+ const { t } = useUITranslation();
77
+ return (_jsxs(MessageBox, { status: "info", icon: _jsx(Bot, { className: "size-16 text-muted mb-4" }), children: [_jsx("div", { className: "text-base font-medium text-muted", children: t('agent.noAgentRunning') }), _jsx("div", { className: "mt-3 text-sm text-muted", children: t('agent.selectInteraction') })] }));
84
78
  }
85
79
  // Start workflow view - allows initiating a new agent conversation
86
80
  // Files can be staged locally before workflow starts, then uploaded when the workflow is created
87
- function StartWorkflowView({ initialMessage, startWorkflow, onClose, isModal = false, fullWidth = false, placeholder = "Type your message...", startButtonText = "Start Agent", title = "Start New Conversation",
81
+ function StartWorkflowView({ initialMessage, startWorkflow, onClose, isModal = false, fullWidth = false, placeholder, startButtonText, title,
88
82
  // Attachment callback - used to include existing document attachments in the first message
89
83
  getAttachedDocs, onAttachmentsSent,
90
84
  // File upload props
91
- acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.webp", maxFiles = 5, }) {
85
+ acceptedFileTypes, maxFiles = 5, }) {
86
+ const { t } = useUITranslation();
87
+ const resolvedPlaceholder = placeholder ?? t('agent.typeYourMessage');
88
+ const resolvedStartButtonText = startButtonText ?? t('agent.startAgent');
89
+ const resolvedTitle = title ?? t('agent.startNewConversation');
92
90
  const { client } = useUserSession();
93
91
  const [inputValue, setInputValue] = useState("");
94
92
  const [isSending, setIsSending] = useState(false);
95
- const [run, setRun] = useState();
93
+ const [startedAgentRunId, setStartedAgentRunId] = useState(null);
96
94
  const toast = useToast();
97
95
  const inputRef = useRef(null);
98
96
  const fileInputRef = useRef(null);
@@ -167,7 +165,7 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
167
165
  // Reset plan panel state when starting a new agent
168
166
  sessionStorage.removeItem("plan-panel-shown");
169
167
  toast({
170
- title: stagedFiles.length > 0 ? "Starting agent and uploading files..." : "Starting agent...",
168
+ title: stagedFiles.length > 0 ? t('agent.startingAgentUploading') : t('agent.startingAgent'),
171
169
  status: "info",
172
170
  duration: 3000,
173
171
  });
@@ -190,15 +188,16 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
190
188
  }
191
189
  const newRun = await startWorkflow(messageContent);
192
190
  if (newRun) {
193
- // Upload staged files to the new run's artifact space and signal workflow
191
+ const agentId = newRun.agent_run_id;
192
+ // Upload staged files to the new run's artifact space and signal agent
194
193
  const uploadedFiles = [];
195
194
  if (stagedFiles.length > 0) {
196
195
  for (const file of stagedFiles) {
197
196
  try {
198
197
  const artifactPath = `files/${file.name}`;
199
- await client.files.uploadArtifact(newRun.run_id, artifactPath, file);
200
- // Signal workflow that file was uploaded
201
- await client.store.workflows.sendSignal(newRun.workflow_id, newRun.run_id, "FileUploaded", {
198
+ await client.agents.uploadArtifact(agentId, artifactPath, file);
199
+ // Signal agent that file was uploaded
200
+ await client.agents.sendSignal(agentId, "FileUploaded", {
202
201
  id: `file-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
203
202
  name: file.name,
204
203
  content_type: file.type || 'application/octet-stream',
@@ -215,7 +214,7 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
215
214
  // Send a follow-up message to notify the agent that all files are ready
216
215
  if (uploadedFiles.length > 0) {
217
216
  try {
218
- await client.store.workflows.sendSignal(newRun.workflow_id, newRun.run_id, "UserInput", {
217
+ await client.agents.sendSignal(agentId, "UserInput", {
219
218
  message: `[Files Ready] All ${uploadedFiles.length} file(s) have been uploaded and are now available: ${uploadedFiles.join(', ')}. You can now process them.`,
220
219
  metadata: {
221
220
  type: 'files_ready',
@@ -231,13 +230,10 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
231
230
  }
232
231
  // Clear attachments after successful start
233
232
  onAttachmentsSent?.();
234
- setRun({
235
- runId: newRun.run_id,
236
- workflowId: newRun.workflow_id,
237
- });
233
+ setStartedAgentRunId(agentId);
238
234
  setInputValue("");
239
235
  toast({
240
- title: "Agent started",
236
+ title: t('agent.agentStarted'),
241
237
  status: "success",
242
238
  duration: 3000,
243
239
  });
@@ -245,10 +241,10 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
245
241
  }
246
242
  catch (err) {
247
243
  toast({
248
- title: "Error starting workflow",
244
+ title: t('agent.errorStarting'),
249
245
  status: "error",
250
246
  duration: 3000,
251
- description: err instanceof Error ? err.message : "Unknown error",
247
+ description: err instanceof Error ? err.message : t('agent.unknownError'),
252
248
  });
253
249
  }
254
250
  finally {
@@ -274,15 +270,15 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
274
270
  adjustTextareaHeight();
275
271
  }, [inputValue, adjustTextareaHeight]);
276
272
  // If a run has been started, show the conversation
277
- if (run) {
278
- return (_jsx(ModernAgentConversationInner, { onClose, isModal, initialMessage, placeholder, run: run, title: title }));
273
+ if (startedAgentRunId) {
274
+ return (_jsx(ModernAgentConversationInner, { onClose, isModal, initialMessage, placeholder, agentRunId: startedAgentRunId, title: title }));
279
275
  }
280
- return (_jsx("div", { className: "flex flex-col h-full bg-background items-center", children: _jsxs("div", { className: cn("flex flex-col h-full w-full overflow-hidden border-0 relative", fullWidth ? "" : "max-w-4xl"), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info-background z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" }), _jsxs("div", { className: "flex items-center justify-between py-2 px-3 border-b border-border bg-background", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "font-medium text-sm text-foreground", children: title })] }), onClose && !isModal && (_jsx(Button, { size: "xs", variant: "ghost", onClick: onClose, title: "Close", className: "text-muted hover:text-foreground", children: _jsx(XIcon, { className: "size-4" }) }))] }), _jsx("div", { className: "flex-1 overflow-y-auto bg-background flex flex-col items-center justify-end", children: _jsxs("div", { className: "w-full px-4 py-6", children: [initialMessage && (_jsx("div", { className: "px-4 py-3 mb-4 bg-info-background border-l-2 border-info text-info", children: initialMessage })), _jsxs("div", { className: "bg-card p-4 border-l-2 border-info", children: [_jsx("div", { className: "text-base text-foreground font-medium", children: "Enter a message to start a conversation" }), _jsxs("div", { className: "mt-3 text-sm text-muted", children: ["Type your question below and press Enter or click ", startButtonText, " ", "to begin"] })] })] }) }), _jsxs("div", { className: "py-3 px-3 border-t border-border bg-background", children: [stagedFiles.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-3", children: stagedFiles.map((file, index) => (_jsxs("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-attention/10 text-attention rounded-md text-sm", children: [_jsx(FileTextIcon, { className: "size-3.5" }), _jsx("span", { className: "max-w-[120px] truncate", children: file.name }), _jsx("span", { className: "text-xs opacity-70", children: "Staged" }), _jsx("button", { onClick: () => removeStagedFile(index), className: "ml-1 p-0.5 hover:bg-attention/20 rounded", children: _jsx(XIcon, { className: "size-3" }) })] }, `${file.name}-${index}`))) })), _jsx("div", { className: "flex gap-2 mb-2", children: _jsxs(Button, { variant: "outline", size: "sm", onClick: () => fileInputRef.current?.click(), disabled: isSending || stagedFiles.length >= maxFiles, className: "text-xs", children: [_jsx(UploadIcon, { className: "size-3.5 mr-1.5" }), "Upload"] }) }), _jsxs("div", { className: "flex items-end gap-2", children: [_jsx("textarea", { ref: inputRef, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, placeholder: placeholder, disabled: isSending, rows: 2, className: "flex-1 py-2.5 px-3 text-sm border border-border bg-background text-foreground focus:border-ring focus:outline-none focus:ring-1 focus:ring-ring rounded-md resize-none overflow-hidden", style: { minHeight: '60px', maxHeight: '200px' } }), _jsxs(Button, { onClick: startWorkflowWithMessage, disabled: !inputValue.trim() || isSending, className: "px-3 py-2.5 text-xs rounded-md transition-colors", children: [isSending ? (_jsx(Spinner, { size: "sm", className: "mr-1.5" })) : (_jsx(SendIcon, { className: "size-3.5 mr-1.5" })), startButtonText] })] }), _jsx("div", { className: "text-xs text-muted mt-2 text-center", children: stagedFiles.length > 0
281
- ? `${stagedFiles.length} file${stagedFiles.length > 1 ? 's' : ''} staged - will upload when conversation starts`
282
- : 'Enter to send • Shift+Enter for new line' })] })] }) }));
276
+ return (_jsx("div", { className: "flex flex-col h-full bg-background items-center", children: _jsxs("div", { className: cn("flex flex-col h-full w-full overflow-hidden border-0 relative", fullWidth ? "" : "max-w-4xl"), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info-background z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" }), _jsxs("div", { className: "flex items-center justify-between py-2 px-3 border-b border-border bg-background", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "font-medium text-sm text-foreground", children: resolvedTitle })] }), onClose && !isModal && (_jsx(Button, { size: "xs", variant: "ghost", onClick: onClose, title: t('agent.close'), className: "text-muted hover:text-foreground", children: _jsx(XIcon, { className: "size-4" }) }))] }), _jsx("div", { className: "flex-1 overflow-y-auto bg-background flex flex-col items-center justify-end", children: _jsxs("div", { className: "w-full px-4 py-6", children: [initialMessage && (_jsx("div", { className: "px-4 py-3 mb-4 bg-info-background border-l-2 border-info text-info", children: initialMessage })), _jsxs("div", { className: "bg-card p-4 border-l-2 border-info", children: [_jsx("div", { className: "text-base text-foreground font-medium", children: t('agent.enterMessage') }), _jsx("div", { className: "mt-3 text-sm text-muted", children: t('agent.typeQuestionBelow', { buttonText: resolvedStartButtonText }) })] })] }) }), _jsxs("div", { className: "py-3 px-3 border-t border-border bg-background", children: [stagedFiles.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-3", children: stagedFiles.map((file, index) => (_jsxs("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-attention/10 text-attention rounded-md text-sm", children: [_jsx(FileTextIcon, { className: "size-3.5" }), _jsx("span", { className: "max-w-[120px] truncate", children: file.name }), _jsx("span", { className: "text-xs opacity-70", children: t('agent.staged') }), _jsx("button", { onClick: () => removeStagedFile(index), className: "ml-1 p-0.5 hover:bg-attention/20 rounded", children: _jsx(XIcon, { className: "size-3" }) })] }, `${file.name}-${index}`))) })), _jsx("div", { className: "flex gap-2 mb-2", children: _jsxs(Button, { variant: "outline", size: "sm", onClick: () => fileInputRef.current?.click(), disabled: isSending || stagedFiles.length >= maxFiles, className: "text-xs", children: [_jsx(UploadIcon, { className: "size-3.5 mr-1.5" }), t('agent.upload')] }) }), _jsxs("div", { className: "flex items-end gap-2", children: [_jsx("textarea", { ref: inputRef, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, placeholder: resolvedPlaceholder, disabled: isSending, rows: 2, className: "flex-1 py-2.5 px-3 text-sm border border-border bg-background text-foreground focus:border-ring focus:outline-none focus:ring-1 focus:ring-ring rounded-md resize-none overflow-hidden", style: { minHeight: '60px', maxHeight: '200px' } }), _jsxs(Button, { onClick: startWorkflowWithMessage, disabled: !inputValue.trim() || isSending, className: "px-3 py-2.5 text-xs rounded-md transition-colors", children: [isSending ? (_jsx(Spinner, { size: "sm", className: "mr-1.5" })) : (_jsx(SendIcon, { className: "size-3.5 mr-1.5" })), resolvedStartButtonText] })] }), _jsx("div", { className: "text-xs text-muted mt-2 text-center", children: stagedFiles.length > 0
277
+ ? t('agent.filesStagedCount', { count: stagedFiles.length })
278
+ : t('agent.enterToSend') })] })] }) }));
283
279
  }
284
280
  // Inner component that handles the agent conversation - similar to ModernAgentOutput
285
- function ModernAgentConversationInner({ run, title, interactive = true, onClose, isModal = false, fullWidth = false, placeholder = "Type your message...", resetWorkflow,
281
+ function ModernAgentConversationInner({ agentRunId, title, interactive = true, onClose, isModal = false, fullWidth = false, placeholder, resetWorkflow, onRestart, onFork, onShowDetails,
286
282
  // File upload props (onFilesSelected handled internally by handleFileUpload)
287
283
  uploadedFiles, onRemoveFile, acceptedFileTypes, maxFiles,
288
284
  // Document search props
@@ -290,7 +286,7 @@ renderDocumentSearch, selectedDocuments, onRemoveDocument,
290
286
  // Object linking
291
287
  hideObjectLinking,
292
288
  // Section visibility
293
- hideHeader, hideMessageInput, hidePlanPanel, hideWorkstreamTabs, hideFileUpload, hideDocumentPanel,
289
+ hideHeader, hideMessageInput, hidePlanPanel, hideWorkstreamTabs, showRightPanel: showRightPanelProp = true, hideFileUpload, showArtifacts = false, hideDocumentPanel: _hideDocumentPanel,
294
290
  // Attachment callback
295
291
  getAttachedDocs, onAttachmentsSent,
296
292
  // Upload state
@@ -302,7 +298,7 @@ className, inputContainerClassName, inputClassName,
302
298
  // Fusion fragment data
303
299
  fusionData,
304
300
  // External file upload API
305
- fileUploadRef, onProcessingFilesChange,
301
+ fileUploadRef, onProcessingFilesChange, processingFiles: processingFilesProp,
306
302
  // External plan panel API
307
303
  onPlansChange, onWorkstreamStatusChange,
308
304
  // External view mode control
@@ -318,21 +314,24 @@ streamingMessageClassNames,
318
314
  // BatchProgressPanel className overrides
319
315
  batchProgressPanelClassNames,
320
316
  // AllMessagesMixed className overrides
321
- workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionLinkComponent, prependFriendlyMessage, }) {
317
+ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionLinkComponent, prependFriendlyMessage, payloadContent, conversationContent, conversationTab = false, }) {
318
+ const { t } = useUITranslation();
322
319
  const { client } = useUserSession();
323
320
  const toast = useToast();
321
+ const instanceIdRef = useRef(`mac-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
324
322
  // ────────────────────────────────────────────
325
323
  // Extracted hooks
326
324
  // ────────────────────────────────────────────
327
- const { messages, streamingMessages, isCompleted, debugChunkFlash, addOptimisticMessage, removeOptimisticMessages, workflowStatus, serverFileUpdates, } = useAgentStream(client, run);
325
+ const { messages, streamingMessages, isCompleted, debugChunkFlash, addOptimisticMessage, removeOptimisticMessages, workflowStatus, serverFileUpdates, } = useAgentStream(client, agentRunId);
328
326
  const { plans, activePlanIndex, setActivePlanIndex, workstreamStatusMap, showInput, showSlidingPanel, setShowSlidingPanel, } = useAgentPlans(messages, interactive, isModal);
329
327
  const { openDocuments, activeDocumentId, isDocPanelOpen, docRefreshKey, closeDocPanel: handleCloseDocPanel, closeDocument: handleCloseDocument, selectDocument, openDocInPanel, } = useDocumentPanel(messages);
330
- const { processingFiles, hasProcessingFiles, handleFileUpload, } = useFileProcessing(client, run, serverFileUpdates, toast);
328
+ const { processingFiles, hasProcessingFiles, handleFileUpload, } = useFileProcessing(client, agentRunId, serverFileUpdates, toast);
331
329
  // ────────────────────────────────────────────
332
330
  // Local state (UI-only concerns)
333
331
  // ────────────────────────────────────────────
334
332
  const bottomRef = useRef(null);
335
333
  const conversationRef = useRef(null);
334
+ const conversationLayoutRef = useRef(null);
336
335
  const [isSending, setIsSending] = useState(false);
337
336
  const [internalViewMode, setInternalViewMode] = useState("sliding");
338
337
  const viewMode = controlledViewMode ?? internalViewMode;
@@ -347,19 +346,40 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
347
346
  const [isStopping, setIsStopping] = useState(false);
348
347
  const [thinkingMessageIndex, setThinkingMessageIndex] = useState(0);
349
348
  const [isDragOver, setIsDragOver] = useState(false);
349
+ const [activeWorkstreams, setActiveWorkstreams] = useState([]);
350
+ const workstreamFetchFailedRef = useRef(false);
350
351
  const dragCounterRef = useRef(0);
351
352
  // PERFORMANCE: Refs for values used inside useCallback to avoid re-creating the callback
352
353
  const isSendingRef = useRef(isSending);
353
354
  isSendingRef.current = isSending;
354
355
  const hasProcessingFilesRef = useRef(hasProcessingFiles);
355
356
  hasProcessingFilesRef.current = hasProcessingFiles;
356
- // Derive effective workflow status (API status + TERMINATED from messages)
357
+ // Derive effective workflow status only main workstream TERMINATED overrides API status.
357
358
  const effectiveWorkflowStatus = useMemo(() => {
358
- const lastMsg = messages[messages.length - 1];
359
- if (lastMsg?.type === AgentMessageType.TERMINATED)
359
+ const mainMessages = messages.filter(m => (m.workstream_id || 'main') === 'main');
360
+ const lastMain = mainMessages[mainMessages.length - 1];
361
+ if (lastMain?.type === AgentMessageType.TERMINATED)
360
362
  return "TERMINATED";
361
363
  return workflowStatus;
362
364
  }, [messages, workflowStatus]);
365
+ console.debug("[ModernAgentConversation] render", {
366
+ agentRunId,
367
+ instanceId: instanceIdRef.current,
368
+ messageCount: messages.length,
369
+ activeWorkstreams: activeWorkstreams.length,
370
+ });
371
+ useEffect(() => {
372
+ console.debug("[ModernAgentConversation] mount", {
373
+ agentRunId,
374
+ instanceId: instanceIdRef.current,
375
+ });
376
+ return () => {
377
+ console.debug("[ModernAgentConversation] unmount", {
378
+ agentRunId,
379
+ instanceId: instanceIdRef.current,
380
+ });
381
+ };
382
+ }, [agentRunId]);
363
383
  // ────────────────────────────────────────────
364
384
  // Computed values
365
385
  // ────────────────────────────────────────────
@@ -374,6 +394,19 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
374
394
  workstreamStatus: currentWorkstreamStatus,
375
395
  };
376
396
  }, [plans, activePlanIndex, workstreamStatusMap]);
397
+ const panelWorkstreams = useMemo(() => {
398
+ return activeWorkstreams.map((ws) => ({
399
+ workstream_id: ws.workstream_id,
400
+ launch_id: ws.launch_id,
401
+ elapsed_ms: ws.elapsed_ms,
402
+ deadline_ms: ws.deadline_ms,
403
+ remaining_ms: Math.max(0, ws.deadline_ms - ws.elapsed_ms),
404
+ status: ws.status,
405
+ phase: ws.latest_progress?.phase,
406
+ child_workflow_id: ws.child_workflow_id,
407
+ child_workflow_run_id: ws.child_workflow_run_id,
408
+ }));
409
+ }, [activeWorkstreams]);
377
410
  // ────────────────────────────────────────────
378
411
  // Stable callbacks
379
412
  // ────────────────────────────────────────────
@@ -388,11 +421,58 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
388
421
  const handleChangePlan = useCallback((index) => {
389
422
  setActivePlanIndex(index);
390
423
  }, [setActivePlanIndex]);
391
- const handleClosePlanPanel = useCallback(() => {
424
+ const [rightPanelTab, _setRightPanelTab] = useState((conversationContent || conversationTab) ? 'conversation' : 'plan');
425
+ const [rightPanelWidth, setRightPanelWidth] = useState(400);
426
+ const [isRightPanelResizing, setIsRightPanelResizing] = useState(false);
427
+ const isRightPanelVisible = showRightPanelProp && (showSlidingPanel
428
+ || isDocPanelOpen
429
+ || (!hideWorkstreamTabs && panelWorkstreams.length > 0)
430
+ || !!conversationContent
431
+ || conversationTab);
432
+ useEffect(() => {
433
+ if (!isRightPanelVisible && isRightPanelResizing) {
434
+ setIsRightPanelResizing(false);
435
+ }
436
+ }, [isRightPanelVisible, isRightPanelResizing]);
437
+ useEffect(() => {
438
+ if (!isRightPanelResizing)
439
+ return;
440
+ const minRightPanelWidth = 300;
441
+ const minConversationWidth = 420;
442
+ const handleMouseMove = (event) => {
443
+ const container = conversationLayoutRef.current;
444
+ if (!container)
445
+ return;
446
+ const containerRect = container.getBoundingClientRect();
447
+ const maxRightPanelWidth = Math.max(minRightPanelWidth, containerRect.width - minConversationWidth);
448
+ const nextWidth = containerRect.right - event.clientX;
449
+ const clampedWidth = Math.min(Math.max(nextWidth, minRightPanelWidth), maxRightPanelWidth);
450
+ setRightPanelWidth(clampedWidth);
451
+ };
452
+ const handleMouseUp = () => {
453
+ setIsRightPanelResizing(false);
454
+ };
455
+ window.addEventListener('mousemove', handleMouseMove);
456
+ window.addEventListener('mouseup', handleMouseUp);
457
+ document.body.style.cursor = 'col-resize';
458
+ document.body.style.userSelect = 'none';
459
+ return () => {
460
+ window.removeEventListener('mousemove', handleMouseMove);
461
+ window.removeEventListener('mouseup', handleMouseUp);
462
+ document.body.style.cursor = '';
463
+ document.body.style.userSelect = '';
464
+ };
465
+ }, [isRightPanelResizing]);
466
+ const handleCloseRightPanel = useCallback(() => {
392
467
  setShowSlidingPanel(false);
393
- }, [setShowSlidingPanel]);
468
+ handleCloseDocPanel();
469
+ }, [setShowSlidingPanel, handleCloseDocPanel]);
394
470
  // Default StoreLinkComponent that opens documents in the panel
395
- const internalStoreLinkComponent = useCallback(({ documentId, children }) => (_jsx("button", { className: "text-info underline cursor-pointer hover:text-info/80", onClick: () => openDocInPanel(documentId), children: children })), [openDocInPanel]);
471
+ const internalStoreLinkComponent = useCallback(({ href, documentId, children }) => (_jsx("a", { href: href, className: "text-info underline cursor-pointer hover:text-info/80", onClick: (e) => {
472
+ e.preventDefault();
473
+ e.stopPropagation();
474
+ openDocInPanel(documentId);
475
+ }, children: children })), [openDocInPanel]);
396
476
  const effectiveStoreLinkComponent = StoreLinkComponent ?? internalStoreLinkComponent;
397
477
  // ────────────────────────────────────────────
398
478
  // Effects
@@ -425,6 +505,39 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
425
505
  useEffect(() => {
426
506
  onWorkstreamStatusChange?.(workstreamStatusMap);
427
507
  }, [workstreamStatusMap, onWorkstreamStatusChange]);
508
+ // Poll active workstreams from backend query for right-panel visibility and details.
509
+ useEffect(() => {
510
+ const shouldPoll = !isCompleted || activeWorkstreams.length > 0;
511
+ if (!shouldPoll) {
512
+ setActiveWorkstreams((prev) => (prev.length === 0 ? prev : []));
513
+ return;
514
+ }
515
+ let isCancelled = false;
516
+ const fetchActiveWorkstreams = async () => {
517
+ try {
518
+ const result = await client.agents.getActiveWorkstreams(agentRunId);
519
+ if (isCancelled)
520
+ return;
521
+ setActiveWorkstreams(result.running ?? []);
522
+ workstreamFetchFailedRef.current = false;
523
+ }
524
+ catch (error) {
525
+ if (isCancelled)
526
+ return;
527
+ setActiveWorkstreams([]);
528
+ if (!workstreamFetchFailedRef.current) {
529
+ console.warn("Failed to fetch active workstreams:", error);
530
+ workstreamFetchFailedRef.current = true;
531
+ }
532
+ }
533
+ };
534
+ fetchActiveWorkstreams();
535
+ const pollHandle = window.setInterval(fetchActiveWorkstreams, 10000);
536
+ return () => {
537
+ isCancelled = true;
538
+ window.clearInterval(pollHandle);
539
+ };
540
+ }, [client.agents, agentRunId, isCompleted, activeWorkstreams.length]);
428
541
  // Notify parent when input availability is determined
429
542
  useEffect(() => {
430
543
  if (messages.length === 0)
@@ -453,8 +566,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
453
566
  if (hasProcessingFilesRef.current) {
454
567
  toast({
455
568
  status: "warning",
456
- title: "Files Still Processing",
457
- description: "Please wait for all files to finish processing before sending",
569
+ title: t('agent.filesProcessing'),
570
+ description: t('agent.waitForFilesProcessing'),
458
571
  duration: 3000,
459
572
  });
460
573
  return;
@@ -470,7 +583,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
470
583
  const messageId = `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
471
584
  const optimisticMessage = {
472
585
  timestamp: Date.now(),
473
- workflow_run_id: run.runId,
586
+ workflow_run_id: agentRunId,
474
587
  type: AgentMessageType.QUESTION,
475
588
  message: messageContent,
476
589
  workstream_id: "main",
@@ -482,8 +595,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
482
595
  ...contextMetadata,
483
596
  _messageId: messageId,
484
597
  };
485
- client.store.workflows
486
- .sendSignal(run.workflowId, run.runId, "UserInput", {
598
+ client.agents
599
+ .sendSignal(agentRunId, "UserInput", {
487
600
  message: messageContent,
488
601
  metadata,
489
602
  })
@@ -494,24 +607,24 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
494
607
  removeOptimisticMessages((m) => m.details?._messageId === messageId);
495
608
  toast({
496
609
  status: "error",
497
- title: "Failed to Send Message",
498
- description: err instanceof Error ? err.message : "Unknown error",
610
+ title: t('agent.failedToSend'),
611
+ description: err instanceof Error ? err.message : t('agent.unknownError'),
499
612
  duration: 3000,
500
613
  });
501
614
  })
502
615
  .finally(() => {
503
616
  setIsSending(false);
504
617
  });
505
- }, [run.runId, run.workflowId, client, toast, getAttachedDocs, getMessageContext, onAttachmentsSent, addOptimisticMessage, removeOptimisticMessages]);
618
+ }, [agentRunId, client, toast, getAttachedDocs, getMessageContext, onAttachmentsSent, addOptimisticMessage, removeOptimisticMessages]);
506
619
  // Drag and drop handlers for full-panel file upload
507
620
  const handleDragEnter = useCallback((e) => {
508
621
  e.preventDefault();
509
622
  e.stopPropagation();
510
623
  dragCounterRef.current++;
511
- if (run && e.dataTransfer?.types?.includes('Files')) {
624
+ if (e.dataTransfer?.types?.includes('Files')) {
512
625
  setIsDragOver(true);
513
626
  }
514
- }, [run]);
627
+ }, []);
515
628
  const handleDragOver = useCallback((e) => {
516
629
  e.preventDefault();
517
630
  e.stopPropagation();
@@ -529,39 +642,39 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
529
642
  e.stopPropagation();
530
643
  dragCounterRef.current = 0;
531
644
  setIsDragOver(false);
532
- if (run && e.dataTransfer?.files && e.dataTransfer.files.length > 0) {
645
+ if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {
533
646
  const filesArray = Array.from(e.dataTransfer.files);
534
647
  handleFileUpload(filesArray);
535
648
  }
536
- }, [run, handleFileUpload]);
649
+ }, [handleFileUpload]);
537
650
  // Stop/interrupt the active workflow
538
651
  const handleStopWorkflow = useCallback(async () => {
539
652
  if (isStopping)
540
653
  return;
541
654
  setIsStopping(true);
542
655
  try {
543
- await client.store.workflows.sendSignal(run.workflowId, run.runId, "Stop", {
656
+ await client.agents.sendSignal(agentRunId, "Stop", {
544
657
  message: "User requested stop",
545
658
  });
546
659
  toast({
547
660
  status: "info",
548
- title: "Agent Interrupted",
549
- description: "Type your message to give new instructions",
661
+ title: t('agent.agentInterrupted'),
662
+ description: t('agent.typeNewInstructions'),
550
663
  duration: 3000,
551
664
  });
552
665
  }
553
666
  catch (err) {
554
667
  toast({
555
668
  status: "error",
556
- title: "Failed to Interrupt",
557
- description: err instanceof Error ? err.message : "Unknown error",
669
+ title: t('agent.failedToInterrupt'),
670
+ description: err instanceof Error ? err.message : t('agent.unknownError'),
558
671
  duration: 3000,
559
672
  });
560
673
  }
561
674
  finally {
562
675
  setIsStopping(false);
563
676
  }
564
- }, [isStopping, client, run.workflowId, run.runId, toast]);
677
+ }, [isStopping, client, agentRunId, toast]);
565
678
  // Expose stop handler to external callers via ref
566
679
  useEffect(() => {
567
680
  if (stopRef)
@@ -575,6 +688,9 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
575
688
  }, [isStopping, onStoppingChange]);
576
689
  // Calculate number of active tasks for the status indicator
577
690
  const getActiveTaskCount = () => {
691
+ if (activeWorkstreams.length > 0) {
692
+ return activeWorkstreams.filter((ws) => ws.status === "running").length;
693
+ }
578
694
  if (!messages.length)
579
695
  return 0;
580
696
  // Group messages by workstream
@@ -585,7 +701,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
585
701
  if (!workstreamMessages.has(workstreamId)) {
586
702
  workstreamMessages.set(workstreamId, []);
587
703
  }
588
- workstreamMessages.get(workstreamId).push(message);
704
+ workstreamMessages.get(workstreamId)?.push(message);
589
705
  }
590
706
  });
591
707
  // Count workstreams that don't have completion messages
@@ -601,11 +717,11 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
601
717
  }
602
718
  return activeCount;
603
719
  };
604
- const actualTitle = title || run.workflowId.split(":")[2] || "Agent Conversation";
720
+ const actualTitle = title || t('agent.agentConversation');
605
721
  // Handle downloading conversation
606
722
  const downloadConversation = async () => {
607
723
  try {
608
- const url = await getConversationUrl(client, run.runId);
724
+ const url = await getConversationUrl(client, agentRunId);
609
725
  if (url)
610
726
  window.open(url, "_blank");
611
727
  }
@@ -613,17 +729,17 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
613
729
  console.error("Failed to download conversation", err);
614
730
  toast({
615
731
  status: "error",
616
- title: "Failed to download conversation",
732
+ title: t('agent.failedToDownload'),
617
733
  duration: 3000,
618
734
  });
619
735
  }
620
736
  };
621
737
  // Handle copying run ID
622
738
  const copyRunId = () => {
623
- navigator.clipboard.writeText(run.runId);
739
+ navigator.clipboard.writeText(agentRunId);
624
740
  toast({
625
741
  status: "success",
626
- title: "Run ID copied",
742
+ title: t('agent.runIdCopied'),
627
743
  duration: 2000,
628
744
  });
629
745
  };
@@ -632,8 +748,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
632
748
  if (!conversationRef.current) {
633
749
  toast({
634
750
  status: "error",
635
- title: "PDF export failed",
636
- description: "No conversation content available to export",
751
+ title: t('agent.pdfExportFailed'),
752
+ description: t('agent.noConversationContent'),
637
753
  duration: 3000,
638
754
  });
639
755
  return;
@@ -644,67 +760,88 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
644
760
  if (!conversationRef.current) {
645
761
  toast({
646
762
  status: "error",
647
- title: "PDF export failed",
648
- description: "No conversation content available to export",
763
+ title: t('agent.pdfExportFailed'),
764
+ description: t('agent.noConversationContent'),
649
765
  duration: 3000,
650
766
  });
651
767
  return;
652
768
  }
653
- const pdfTitle = `${actualTitle} - ${run.runId}`;
769
+ const pdfTitle = `${actualTitle} - ${agentRunId}`;
654
770
  const success = printElementToPdf(conversationRef.current, pdfTitle);
655
771
  if (!success) {
656
772
  toast({
657
773
  status: "error",
658
- title: "PDF export failed",
659
- description: "Unable to open print preview",
774
+ title: t('agent.pdfExportFailed'),
775
+ description: t('agent.unableToOpenPrint'),
660
776
  duration: 4000,
661
777
  });
662
778
  return;
663
779
  }
664
780
  toast({
665
781
  status: "success",
666
- title: "PDF export ready",
667
- description: "Use your browser's Print dialog to save as PDF",
782
+ title: t('agent.pdfExportReady'),
783
+ description: t('agent.printDialogDescription'),
668
784
  duration: 4000,
669
785
  });
670
786
  setIsPdfModalOpen(false);
671
787
  };
788
+ // Artifact refresh key — bumps when tool calls complete or conversation finishes,
789
+ // which is when new artifacts are most likely to appear.
790
+ const artifactRefreshKey = useMemo(() => {
791
+ return messages.filter((m) => {
792
+ if (m.type === AgentMessageType.COMPLETE)
793
+ return true;
794
+ if (m.type === AgentMessageType.THOUGHT) {
795
+ const details = m.details;
796
+ return details?.tool_status === 'completed';
797
+ }
798
+ return false;
799
+ }).length;
800
+ }, [messages]);
672
801
  // PERFORMANCE: Memoize taskLabels to prevent AllMessagesMixed re-renders
673
802
  const taskLabels = useMemo(() => getActivePlan.plan.plan?.reduce((acc, task) => {
674
803
  if (task.id && task.goal)
675
804
  acc.set(task.id.toString(), task.goal);
676
805
  return acc;
677
806
  }, new Map()), [getActivePlan.plan]);
807
+ // Conversation area inner content — shared between main layout and conversationTab mode
808
+ const conversationAreaJsx = (_jsxs("div", { ref: conversationRef, className: cn("flex flex-col min-h-0 min-w-0 border-0", conversationTab
809
+ ? "flex-1 h-full"
810
+ : isRightPanelVisible
811
+ ? "w-full flex-1 min-h-[50vh]"
812
+ : fullWidth
813
+ ? "flex-1 w-full"
814
+ : `flex-1 mx-auto ${!isModal ? "max-w-4xl" : ""}`), children: [!hideHeader && (_jsx("div", { className: "flex-shrink-0", children: _jsx(Header, { title: actualTitle, isCompleted: isCompleted, onClose: onClose, isModal: isModal, agentRunId: agentRunId, viewMode: viewMode, onViewModeChange: handleViewModeChange, showPlanPanel: showRightPanelProp && showSlidingPanel, hasPlan: showRightPanelProp && plans.length > 0, showPlanButton: showRightPanelProp && !conversationTab, onTogglePlanPanel: handleTogglePlanPanel, onDownload: downloadConversation, onCopyRunId: copyRunId, resetWorkflow: resetWorkflow, onRestart: onRestart, onFork: onFork, onShowDetails: onShowDetails, onExportPdf: exportConversationPdf, isReceivingChunks: debugChunkFlash }) })), messages.length === 0 && !isCompleted ? (_jsx("div", { className: "flex-1 flex flex-col items-center justify-center h-full text-center py-6", children: _jsxs("div", { className: "p-5 max-w-md border border-info rounded-lg shadow-sm", children: [_jsxs("div", { className: "flex items-center space-x-3 mb-3", children: [_jsx(PulsatingCircle, { size: "sm", color: "blue" }), _jsx("div", { className: "text-sm text-muted font-medium", children: ThinkingMessages[thinkingMessageIndex] })] }), _jsx("div", { className: "mt-4 flex justify-center", children: _jsx(AnimatedThinkingDots, { color: "blue", className: "mt-1" }) })] }) })) : (_jsx(AllMessagesMixed, { messages: messages, bottomRef: bottomRef, isCompleted: isCompleted, plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, showPlanPanel: showRightPanelProp && showSlidingPanel, onTogglePlanPanel: handleTogglePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, taskLabels: taskLabels, streamingMessages: streamingMessages, onSendMessage: handleSendMessage, thinkingMessageIndex: thinkingMessageIndex, messageItemClassNames: messageItemClassNames, messageStyleOverrides: messageStyleOverrides, toolCallGroupClassNames: toolCallGroupClassNames, hideToolCallsInViewMode: hideToolCallsInViewMode, streamingMessageClassNames: streamingMessageClassNames, batchProgressPanelClassNames: batchProgressPanelClassNames, artifactRunId: agentRunId, viewMode: viewMode, hideWorkstreamTabs: hideWorkstreamTabs, workingIndicatorClassName: workingIndicatorClassName, messageListClassName: messageListClassName, StoreLinkComponent: effectiveStoreLinkComponent, CollectionLinkComponent: CollectionLinkComponent, prependFriendlyMessage: prependFriendlyMessage })), !hideMessageInput && (_jsx("div", { className: "flex-shrink-0", style: { paddingBottom: 'env(safe-area-inset-bottom, 0px)' }, children: effectiveWorkflowStatus && effectiveWorkflowStatus !== "RUNNING" ? (_jsxs(MessageBox, { status: effectiveWorkflowStatus === "COMPLETED" ? 'success' : 'done', icon: null, className: "m-2", children: ["This Workflow is ", effectiveWorkflowStatus] })) : showInput && (_jsx(MessageInput, { onSend: handleSendMessage, onStop: handleStopWorkflow, disabled: isUploading, isSending: isSending || isUploading, isStopping: isStopping, isStreaming: !isCompleted, isCompleted: isCompleted, activeTaskCount: getActiveTaskCount(), placeholder: placeholder ?? 'Type your message...', onFilesSelected: handleFileUpload, uploadedFiles: uploadedFiles, onRemoveFile: onRemoveFile, acceptedFileTypes: acceptedFileTypes, maxFiles: maxFiles, processingFiles: processingFiles, hasProcessingFiles: hasProcessingFiles, renderDocumentSearch: renderDocumentSearch, selectedDocuments: selectedDocuments, onRemoveDocument: onRemoveDocument, hideObjectLinking: hideObjectLinking, hideFileUpload: hideFileUpload, className: inputContainerClassName, inputClassName: inputClassName })) }))] }));
678
815
  // Main content - wrapped with FusionFragmentProvider when fusionData is provided
679
- const mainContent = (_jsx(ArtifactUrlCacheProvider, { children: _jsx(ImageLightboxProvider, { children: _jsxs("div", { className: cn("flex flex-col lg:flex-row gap-2 h-full relative overflow-hidden", isDragOver && "ring-2 ring-blue-400 ring-inset", className), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-100/80 dark:bg-blue-900/40 z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-blue-600 dark:text-blue-400 font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to upload"] }) })), _jsxs("div", { ref: conversationRef, className: cn("flex flex-col min-h-0 border-0", (showSlidingPanel || isDocPanelOpen)
680
- ? "w-full lg:w-3/5 flex-1 min-h-[50vh]"
681
- : fullWidth
682
- ? "flex-1 w-full"
683
- : `flex-1 mx-auto ${!isModal ? "max-w-4xl" : ""}`), children: [!hideHeader && (_jsx("div", { className: "flex-shrink-0", children: _jsx(Header, { title: actualTitle, isCompleted: isCompleted, onClose: onClose, isModal: isModal, run: run, viewMode: viewMode, onViewModeChange: handleViewModeChange, showPlanPanel: showSlidingPanel, hasPlan: plans.length > 0, onTogglePlanPanel: handleTogglePlanPanel, onDownload: downloadConversation, onCopyRunId: copyRunId, resetWorkflow: resetWorkflow, onExportPdf: exportConversationPdf, isReceivingChunks: debugChunkFlash }) })), messages.length === 0 && !isCompleted ? (_jsx("div", { className: "flex-1 flex flex-col items-center justify-center h-full text-center py-6", children: _jsxs("div", { className: "p-5 max-w-md border border-info rounded-lg shadow-sm", children: [_jsxs("div", { className: "flex items-center space-x-3 mb-3", children: [_jsx(PulsatingCircle, { size: "sm", color: "blue" }), _jsx("div", { className: "text-sm text-muted font-medium", children: ThinkingMessages[thinkingMessageIndex] })] }), _jsx("div", { className: "mt-4 flex justify-center", children: _jsx(AnimatedThinkingDots, { color: "blue", className: "mt-1" }) })] }) })) : (_jsx(AllMessagesMixed, { messages: messages, bottomRef: bottomRef, isCompleted: isCompleted, plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, showPlanPanel: showSlidingPanel, onTogglePlanPanel: handleTogglePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, taskLabels: taskLabels, streamingMessages: streamingMessages, onSendMessage: handleSendMessage, thinkingMessageIndex: thinkingMessageIndex, messageItemClassNames: messageItemClassNames, messageStyleOverrides: messageStyleOverrides, toolCallGroupClassNames: toolCallGroupClassNames, hideToolCallsInViewMode: hideToolCallsInViewMode, streamingMessageClassNames: streamingMessageClassNames, batchProgressPanelClassNames: batchProgressPanelClassNames, viewMode: viewMode, hideWorkstreamTabs: hideWorkstreamTabs, workingIndicatorClassName: workingIndicatorClassName, messageListClassName: messageListClassName, StoreLinkComponent: effectiveStoreLinkComponent, CollectionLinkComponent: CollectionLinkComponent, prependFriendlyMessage: prependFriendlyMessage })), !hideMessageInput && (_jsx("div", { className: "flex-shrink-0", style: { paddingBottom: 'env(safe-area-inset-bottom, 0px)' }, children: effectiveWorkflowStatus && effectiveWorkflowStatus !== "RUNNING" ? (_jsxs(MessageBox, { status: effectiveWorkflowStatus === "COMPLETED" ? 'success' : 'done', icon: null, className: "m-2", children: ["This Workflow is ", effectiveWorkflowStatus] })) : showInput && (_jsx(MessageInput, { onSend: handleSendMessage, onStop: handleStopWorkflow, disabled: isUploading, isSending: isSending || isUploading, isStopping: isStopping, isStreaming: !isCompleted, isCompleted: isCompleted, activeTaskCount: getActiveTaskCount(), placeholder: placeholder,
684
- // File upload props - use internal handler that signals workflow
685
- onFilesSelected: handleFileUpload, uploadedFiles: uploadedFiles, onRemoveFile: onRemoveFile, acceptedFileTypes: acceptedFileTypes, maxFiles: maxFiles,
686
- // File processing state
687
- processingFiles: processingFiles, hasProcessingFiles: hasProcessingFiles,
688
- // Document search props
689
- renderDocumentSearch: renderDocumentSearch, selectedDocuments: selectedDocuments, onRemoveDocument: onRemoveDocument,
690
- // Object linking
691
- hideObjectLinking: hideObjectLinking,
692
- // Files Uploaded
693
- hideFileUpload: hideFileUpload,
694
- // Styling props
695
- className: inputContainerClassName, inputClassName: inputClassName })) }))] }), !hidePlanPanel && showSlidingPanel && (_jsx("div", { className: "w-full lg:w-1/3 min-h-[50vh] lg:h-full border-t lg:border-t-0 lg:border-l", children: _jsx(InlineSlidingPlanPanel, { plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, isOpen: showSlidingPanel, onClose: handleClosePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan }) })), !hideDocumentPanel && isDocPanelOpen && openDocuments.length > 0 && (_jsx("div", { className: cn("w-full lg:w-2/5 min-h-[50vh] lg:h-full border-t lg:border-t-0 lg:border-l", showSlidingPanel && "lg:w-1/3"), children: _jsx(DocumentPanel, { isOpen: isDocPanelOpen, onClose: handleCloseDocPanel, documents: openDocuments, activeDocumentId: activeDocumentId, onSelectDocument: selectDocument, onCloseDocument: handleCloseDocument, refreshKey: docRefreshKey, runId: run.runId }) })), _jsxs(Modal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), children: [_jsx(ModalTitle, { children: "Export conversation as PDF" }), _jsxs(ModalBody, { children: [_jsx("p", { className: "mb-2", children: "This will open your browser's print dialog with the current conversation." }), _jsx("p", { className: "text-sm text-muted", children: "To save a PDF, choose \"Save as PDF\" or a similar option in the print dialog." })] }), _jsxs(ModalFooter, { align: "right", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setIsPdfModalOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", onClick: handleConfirmExportPdf, children: "Open print dialog" })] })] })] }) }) }));
816
+ const mainContent = (_jsx(ArtifactUrlCacheProvider, { children: _jsx(ImageLightboxProvider, { children: _jsxs("div", { ref: conversationLayoutRef, className: cn("flex flex-col lg:flex-row gap-2 w-full h-full relative overflow-hidden", isDragOver && "ring-2 ring-blue-400 ring-inset", className), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-100/80 dark:bg-blue-900/40 z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-blue-600 dark:text-blue-400 font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to upload"] }) })), !conversationTab && conversationAreaJsx, isRightPanelVisible && (_jsxs(_Fragment, { children: [!conversationTab && (_jsx("div", { className: "hidden lg:block lg:w-1 lg:shrink-0 cursor-col-resize bg-border/70 hover:bg-border transition-colors", onMouseDown: () => setIsRightPanelResizing(true), role: "separator", "aria-orientation": "vertical", "aria-label": "Resize right panel" })), _jsx("div", { className: conversationTab
817
+ ? "w-full h-full overflow-auto"
818
+ : "w-full lg:w-[var(--agent-right-panel-width)] lg:shrink-0 min-h-[50vh] lg:h-full border-t lg:border-t-0 lg:border-l", style: !conversationTab ? { ['--agent-right-panel-width']: `${rightPanelWidth}px` } : undefined, children: _jsx(AgentRightPanel
819
+ // Plan
820
+ , {
821
+ // Plan
822
+ plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, showPlan: !hidePlanPanel && showSlidingPanel,
823
+ // Workstreams
824
+ activeWorkstreams: panelWorkstreams, hideWorkstreams: hideWorkstreamTabs,
825
+ // Documents
826
+ openDocuments: openDocuments, activeDocumentId: activeDocumentId, onSelectDocument: selectDocument, onCloseDocument: handleCloseDocument, docRefreshKey: docRefreshKey, runId: agentRunId,
827
+ // Uploads
828
+ processingFiles: processingFilesProp ?? processingFiles,
829
+ // Artifacts
830
+ showArtifacts: showArtifacts, artifactRefreshKey: artifactRefreshKey,
831
+ // Messages (for workstreams tab context)
832
+ messages: messages,
833
+ // Payload content
834
+ payloadContent: payloadContent,
835
+ // Conversation content
836
+ conversationContent: conversationTab ? conversationAreaJsx : conversationContent,
837
+ // Panel control
838
+ onClose: handleCloseRightPanel, defaultTab: rightPanelTab }) })] })), _jsxs(Modal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), children: [_jsx(ModalTitle, { children: "Export conversation as PDF" }), _jsxs(ModalBody, { children: [_jsx("p", { className: "mb-2", children: "This will open your browser's print dialog with the current conversation." }), _jsx("p", { className: "text-sm text-muted", children: "To save a PDF, choose \"Save as PDF\" or a similar option in the print dialog." })] }), _jsxs(ModalFooter, { align: "right", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setIsPdfModalOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", onClick: handleConfirmExportPdf, children: "Open print dialog" })] })] })] }) }) }));
696
839
  // Wrap with FusionFragmentProvider when fusionData is provided
697
840
  // This enables fusion-fragment code blocks to display data and supports
698
841
  // agent-mode interactions where clicking editable fields sends messages
699
842
  if (fusionData) {
700
- return (_jsx(FusionFragmentProvider, { data: fusionData, sendMessage: handleSendMessage, ChartComponent: VegaLiteChart, artifactRunId: run.runId, children: mainContent }));
843
+ return (_jsx(FusionFragmentProvider, { data: fusionData, sendMessage: handleSendMessage, ChartComponent: VegaLiteChart, artifactRunId: agentRunId, children: mainContent }));
701
844
  }
702
845
  return mainContent;
703
846
  }
704
- // Helper function to get conversation URL - used by other components
705
- export async function getConversationUrl(vertesia, workflowRunId) {
706
- return vertesia.files
707
- .getDownloadUrl(`agents/${workflowRunId}/conversation.json`)
708
- .then((r) => r.url);
709
- }
710
847
  //# sourceMappingURL=ModernAgentConversation.js.map