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

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
@@ -6,6 +6,7 @@ import { VegaEmbed } from 'react-vega';
6
6
  import type { View } from 'vega';
7
7
  import type { TopLevelSpec as VisualizationSpec } from 'vega-lite';
8
8
  import { cn } from '../../../core/components/libs/utils';
9
+ import { useUITranslation } from '../../../i18n/index.js';
9
10
  import { useUserSession } from '@vertesia/ui/session';
10
11
  import type { VegaLiteChartSpec } from './AgentChart';
11
12
  import { getArtifactCacheKey, getFileCacheKey, useArtifactUrlCache } from './useArtifactUrlCache';
@@ -52,6 +53,7 @@ function FullscreenDialog({
52
53
  description?: string;
53
54
  children: React.ReactNode;
54
55
  }) {
56
+ const { t } = useUITranslation();
55
57
  return (
56
58
  <DialogPrimitive.Root open={isOpen} onOpenChange={(open) => !open && onClose()}>
57
59
  <DialogPrimitive.Portal>
@@ -67,7 +69,7 @@ function FullscreenDialog({
67
69
  <button
68
70
  onClick={onClose}
69
71
  className="absolute top-3 right-3 z-10 p-2 rounded-lg bg-white/80 dark:bg-gray-800/80 backdrop-blur-sm hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors duration-150 shadow-sm"
70
- aria-label="Close fullscreen"
72
+ aria-label={t('agent.closeFullscreen')}
71
73
  >
72
74
  <X className="w-5 h-5 text-gray-600 dark:text-gray-300" />
73
75
  </button>
@@ -80,7 +82,7 @@ function FullscreenDialog({
80
82
  <div className="flex items-center justify-between px-4 sm:px-6 py-3 border-t border-gray-200 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-800/50 rounded-b-xl">
81
83
  <div className="flex flex-col">
82
84
  <DialogPrimitive.Title className="text-base font-semibold text-gray-900 dark:text-gray-100">
83
- {title || 'Dashboard'}
85
+ {title || t('agent.dashboard')}
84
86
  </DialogPrimitive.Title>
85
87
  {description && (
86
88
  <DialogPrimitive.Description className="text-sm text-gray-500 dark:text-gray-400 mt-0.5">
@@ -540,6 +542,7 @@ function getDarkModeConfig(isDark: boolean): Record<string, any> {
540
542
  }
541
543
 
542
544
  export const VegaLiteChart = memo(function VegaLiteChart({ spec, artifactRunId }: VegaLiteChartProps) {
545
+ const { t } = useUITranslation();
543
546
  const { title, description, spec: vegaSpec, options } = spec;
544
547
  const [isExporting, setIsExporting] = useState(false);
545
548
  const [isCopied, setIsCopied] = useState(false);
@@ -581,6 +584,15 @@ export const VegaLiteChart = memo(function VegaLiteChart({ spec, artifactRunId }
581
584
  return;
582
585
  }
583
586
 
587
+ if (!artifactRunId) {
588
+ console.warn('[VegaLiteChart] artifact references found but artifactRunId is missing!', {
589
+ references: references.map(r => r.artifactPath),
590
+ artifactRunId,
591
+ });
592
+ } else {
593
+ console.info('[VegaLiteChart] resolving artifacts with runId:', artifactRunId, references.map(r => r.artifactPath));
594
+ }
595
+
584
596
  let cancelled = false;
585
597
  setIsLoadingArtifacts(true);
586
598
  setArtifactError(null);
@@ -903,28 +915,28 @@ export const VegaLiteChart = memo(function VegaLiteChart({ spec, artifactRunId }
903
915
  onClick={handleCopy}
904
916
  disabled={isCopied}
905
917
  className="text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 flex items-center gap-1"
906
- title="Copy to clipboard"
918
+ title={t('agent.copyToClipboard')}
907
919
  >
908
920
  {isCopied ? <Check className="w-3 h-3" /> : <Copy className="w-3 h-3" />}
909
- {isCopied ? 'Copied' : 'Copy'}
921
+ {isCopied ? t('agent.copied') : t('agent.copy')}
910
922
  </button>
911
923
  <button
912
924
  onClick={handleExport}
913
925
  disabled={isExporting}
914
926
  className="text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1"
915
- title="Export as PNG"
927
+ title={t('agent.exportAsPng')}
916
928
  >
917
929
  <Download className="w-3 h-3" />
918
- {isExporting ? 'Exporting...' : 'Export'}
930
+ {isExporting ? t('agent.exporting') : t('agent.export')}
919
931
  </button>
920
932
  {showFullscreenButton && (
921
933
  <button
922
934
  onClick={toggleFullscreen}
923
935
  className="text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors flex items-center gap-1"
924
- title={isFullscreen ? "Exit fullscreen" : "Fullscreen"}
936
+ title={isFullscreen ? t('agent.exitFullscreen') : t('agent.fullscreen')}
925
937
  >
926
938
  {isFullscreen ? <Minimize2 className="w-3 h-3" /> : <Maximize2 className="w-3 h-3" />}
927
- {isFullscreen ? 'Exit' : 'Fullscreen'}
939
+ {isFullscreen ? t('agent.exit') : t('agent.fullscreen')}
928
940
  </button>
929
941
  )}
930
942
  </div>
@@ -42,11 +42,12 @@ export function useAgentPlans(
42
42
  setPlans([]);
43
43
  setActivePlanIndex(0);
44
44
  setWorkstreamStatusMap(new Map());
45
- setShowSlidingPanel(false);
45
+ // Keep right panel open by default on desktop sessions.
46
+ setShowSlidingPanel(!isModal);
46
47
  lastProcessedIndex.current = -1;
47
48
  knownPlanTimestamps.current.clear();
48
49
  }
49
- }, [messages.length === 0]);
50
+ }, [messages.length === 0, isModal]);
50
51
 
51
52
  // Process new messages incrementally
52
53
  useEffect(() => {
@@ -157,13 +158,6 @@ export function useAgentPlans(
157
158
  }
158
159
  }, [plans.length, showSlidingPanel]);
159
160
 
160
- // Hide panel when there are no plans
161
- useEffect(() => {
162
- if (plans.length === 0) {
163
- setShowSlidingPanel(false);
164
- }
165
- }, [plans.length]);
166
-
167
161
  // Helper to determine showInput from the latest message
168
162
  const updateShowInput = useCallback((msgs: AgentMessage[]) => {
169
163
  const lastMessage = msgs[msgs.length - 1];
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useEffect, useRef, useState } from 'react';
2
- import { AsyncExecutionResult, VertesiaClient } from '@vertesia/client';
2
+ import { VertesiaClient } from '@vertesia/client';
3
3
  import {
4
4
  AgentMessage,
5
5
  AgentMessageType,
@@ -44,14 +44,14 @@ export interface UseAgentStreamResult {
44
44
  * - COMPLETE/IDLE streaming flush
45
45
  * - Timestamp-based message dedup and optimistic QUESTION replacement
46
46
  * - `isCompleted` derived state
47
- * - State reset when `run.runId` changes
47
+ * - State reset when `agentRunId` changes
48
48
  *
49
49
  * File-processing SYSTEM messages are passed through to the messages array
50
50
  * (Option A from the plan) so downstream hooks can react to them.
51
51
  */
52
52
  export function useAgentStream(
53
53
  client: VertesiaClient,
54
- run: AsyncExecutionResult,
54
+ agentRunId: string,
55
55
  ): UseAgentStreamResult {
56
56
  const [messages, setMessages] = useState<AgentMessage[]>([]);
57
57
  const [isCompleted, setIsCompleted] = useState(false);
@@ -65,12 +65,24 @@ export function useAgentStream(
65
65
 
66
66
  // RAF-batched streaming updates
67
67
  const pendingStreamingChunks = useRef<Map<string, StreamingData>>(new Map());
68
- const streamingFlushScheduled = useRef<number | null>(null);
68
+ const streamingFlushScheduled = useRef<{ mode: 'raf' | 'timeout'; id: number } | null>(null);
69
69
 
70
70
  // Debug: visual flash indicator for incoming chunks
71
71
  const [debugChunkFlash, setDebugChunkFlash] = useState(false);
72
72
  const debugFlashTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
73
73
 
74
+ const cancelScheduledStreamingFlush = useCallback(() => {
75
+ const scheduled = streamingFlushScheduled.current;
76
+ if (!scheduled) return;
77
+
78
+ if (scheduled.mode === 'raf') {
79
+ cancelAnimationFrame(scheduled.id);
80
+ } else {
81
+ clearTimeout(scheduled.id);
82
+ }
83
+ streamingFlushScheduled.current = null;
84
+ }, []);
85
+
74
86
  const flushStreamingChunks = useCallback(() => {
75
87
  if (pendingStreamingChunks.current.size > 0) {
76
88
  setStreamingMessages(new Map(pendingStreamingChunks.current));
@@ -88,22 +100,30 @@ export function useAgentStream(
88
100
 
89
101
  // Stream messages from the agent
90
102
  useEffect(() => {
91
- // Reset all state when runId changes (new agent)
103
+ // Reset all state when agentRunId changes (new agent)
104
+ console.debug('[useAgentStream] effect:start', { agentRunId });
92
105
  setMessages([]);
93
106
  setWorkflowStatus(null);
94
107
  setStreamingMessages(new Map());
95
108
  setServerFileUpdates(new Map());
109
+ const abortController = new AbortController();
96
110
 
97
- // Check workflow status
98
- client.store.workflows.getRunDetails(run.runId, run.workflowId)
99
- .then((statusResult) => {
100
- setWorkflowStatus(statusResult.status as string);
111
+ // Check agent run status
112
+ client.agents.retrieve(agentRunId)
113
+ .then((agentRun) => {
114
+ if (!abortController.signal.aborted) {
115
+ setWorkflowStatus(agentRun.status?.toUpperCase() ?? null);
116
+ }
101
117
  })
102
118
  .catch((error) => {
103
- console.error('Failed to check workflow status:', error);
119
+ if (!abortController.signal.aborted) {
120
+ console.error('Failed to check agent run status:', error);
121
+ }
104
122
  });
105
123
 
106
- client.store.workflows.streamMessages(run.workflowId, run.runId, (message) => {
124
+ client.agents.streamMessages(agentRunId, (message) => {
125
+ if (abortController.signal.aborted) return;
126
+
107
127
  // Handle streaming chunks separately for real-time aggregation
108
128
  // PERFORMANCE: Batch updates using RAF instead of immediate state updates
109
129
  if (message.type === AgentMessageType.STREAMING_CHUNK) {
@@ -130,7 +150,17 @@ export function useAgentStream(
130
150
 
131
151
  // Schedule a flush if not already scheduled (~60 updates/sec max)
132
152
  if (streamingFlushScheduled.current === null) {
133
- streamingFlushScheduled.current = requestAnimationFrame(flushStreamingChunks);
153
+ if (document.hidden) {
154
+ streamingFlushScheduled.current = {
155
+ mode: 'timeout',
156
+ id: window.setTimeout(flushStreamingChunks, 16),
157
+ };
158
+ } else {
159
+ streamingFlushScheduled.current = {
160
+ mode: 'raf',
161
+ id: requestAnimationFrame(flushStreamingChunks),
162
+ };
163
+ }
134
164
  }
135
165
  return;
136
166
  }
@@ -176,7 +206,15 @@ export function useAgentStream(
176
206
  }
177
207
  }
178
208
 
179
- if (message.message) {
209
+ const hasContent = !!message.message;
210
+ const isStateMessage = [
211
+ AgentMessageType.COMPLETE,
212
+ AgentMessageType.IDLE,
213
+ AgentMessageType.TERMINATED,
214
+ AgentMessageType.REQUEST_INPUT,
215
+ ].includes(message.type);
216
+
217
+ if (hasContent || isStateMessage) {
180
218
  setMessages((prev) => {
181
219
  // Check for duplicate by timestamp
182
220
  if (prev.find((m) => m.timestamp === message.timestamp)) {
@@ -196,17 +234,40 @@ export function useAgentStream(
196
234
  return [...prev];
197
235
  });
198
236
  }
199
- });
237
+ }, undefined, abortController.signal)
238
+ .catch((error) => {
239
+ if (!abortController.signal.aborted) {
240
+ console.error('Failed to stream agent messages:', error);
241
+ }
242
+ });
200
243
 
201
244
  return () => {
245
+ console.debug('[useAgentStream] effect:cleanup', { agentRunId });
246
+ abortController.abort();
202
247
  setMessages([]);
203
- if (streamingFlushScheduled.current !== null) {
204
- cancelAnimationFrame(streamingFlushScheduled.current);
205
- streamingFlushScheduled.current = null;
206
- }
248
+ cancelScheduledStreamingFlush();
207
249
  pendingStreamingChunks.current.clear();
250
+ if (debugFlashTimeout.current) {
251
+ clearTimeout(debugFlashTimeout.current);
252
+ debugFlashTimeout.current = null;
253
+ }
254
+ };
255
+ }, [agentRunId, client.agents, flushStreamingChunks, cancelScheduledStreamingFlush]);
256
+
257
+ // Flush pending streaming chunks when tab becomes visible.
258
+ useEffect(() => {
259
+ const handleVisibilityChange = () => {
260
+ if (!document.hidden && pendingStreamingChunks.current.size > 0) {
261
+ cancelScheduledStreamingFlush();
262
+ flushStreamingChunks();
263
+ }
264
+ };
265
+
266
+ document.addEventListener('visibilitychange', handleVisibilityChange);
267
+ return () => {
268
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
208
269
  };
209
- }, [run.runId, client.store.workflows, flushStreamingChunks]);
270
+ }, [flushStreamingChunks, cancelScheduledStreamingFlush]);
210
271
 
211
272
  // Add an optimistic message to the timeline
212
273
  const addOptimisticMessage = useCallback((msg: AgentMessage) => {
@@ -0,0 +1,151 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { VertesiaClient } from '@vertesia/client';
3
+
4
+ // ---------------------------------------------------------------------------
5
+ // Tree node type
6
+ // ---------------------------------------------------------------------------
7
+
8
+ export interface ArtifactTreeNode {
9
+ /** Display name — e.g. "out", "report.csv" */
10
+ name: string;
11
+ /** Full relative path from the run root — e.g. "out/subdir/report.csv" */
12
+ path: string;
13
+ isDirectory: boolean;
14
+ children: ArtifactTreeNode[];
15
+ }
16
+
17
+ // ---------------------------------------------------------------------------
18
+ // Internal files we never show to the user
19
+ // ---------------------------------------------------------------------------
20
+
21
+ const INTERNAL_FILE_PATTERNS = [
22
+ /conversation\.json$/,
23
+ /-conversation\.json$/,
24
+ /^tools\.json$/,
25
+ ];
26
+
27
+ function isInternalFile(relativePath: string): boolean {
28
+ const basename = relativePath.split('/').pop() ?? relativePath;
29
+ return INTERNAL_FILE_PATTERNS.some((re) => re.test(basename));
30
+ }
31
+
32
+ // ---------------------------------------------------------------------------
33
+ // Build a tree from a flat list of relative paths
34
+ // ---------------------------------------------------------------------------
35
+
36
+ function buildTree(paths: string[]): ArtifactTreeNode[] {
37
+ const root: ArtifactTreeNode = { name: '', path: '', isDirectory: true, children: [] };
38
+
39
+ for (const p of paths) {
40
+ const parts = p.split('/');
41
+ let current = root;
42
+ let accumulated = '';
43
+
44
+ for (let i = 0; i < parts.length; i++) {
45
+ const part = parts[i];
46
+ accumulated = accumulated ? `${accumulated}/${part}` : part;
47
+ const isLast = i === parts.length - 1;
48
+
49
+ let child = current.children.find((c) => c.name === part);
50
+ if (!child) {
51
+ child = {
52
+ name: part,
53
+ path: accumulated,
54
+ isDirectory: !isLast,
55
+ children: [],
56
+ };
57
+ current.children.push(child);
58
+ }
59
+ current = child;
60
+ }
61
+ }
62
+
63
+ // Sort: directories first, then alphabetical
64
+ const sortChildren = (node: ArtifactTreeNode) => {
65
+ node.children.sort((a, b) => {
66
+ if (a.isDirectory !== b.isDirectory) return a.isDirectory ? -1 : 1;
67
+ return a.name.localeCompare(b.name);
68
+ });
69
+ node.children.forEach(sortChildren);
70
+ };
71
+ sortChildren(root);
72
+
73
+ return root.children;
74
+ }
75
+
76
+ /**
77
+ * Extract the run-relative path from an artifact listing entry.
78
+ * The list API may return paths prefixed with the bucket name
79
+ * (e.g. "store_dev_.../agents/{runId}/files/foo.txt"), so we search
80
+ * for the "agents/{runId}/" segment anywhere in the string rather
81
+ * than assuming it starts at index 0.
82
+ */
83
+ function stripToRelativePath(fullPath: string, runId: string): string {
84
+ const prefix = `agents/${runId}/`;
85
+ const idx = fullPath.indexOf(prefix);
86
+ if (idx !== -1) return fullPath.slice(idx + prefix.length);
87
+ return fullPath.split('/').pop() ?? fullPath;
88
+ }
89
+
90
+ // ---------------------------------------------------------------------------
91
+ // Hook
92
+ // ---------------------------------------------------------------------------
93
+
94
+ export interface UseArtifactsResult {
95
+ tree: ArtifactTreeNode[];
96
+ flatFiles: string[];
97
+ isLoading: boolean;
98
+ error: string | null;
99
+ refresh: () => void;
100
+ }
101
+
102
+ export function useArtifacts(
103
+ client: VertesiaClient,
104
+ runId: string | undefined,
105
+ refreshKey = 0,
106
+ ): UseArtifactsResult {
107
+ const [flatFiles, setFlatFiles] = useState<string[]>([]);
108
+ const [isLoading, setIsLoading] = useState(false);
109
+ const [error, setError] = useState<string | null>(null);
110
+ const [manualRefreshKey, setManualRefreshKey] = useState(0);
111
+ const fetchIdRef = useRef(0);
112
+
113
+ const fetchArtifacts = useCallback(async () => {
114
+ if (!runId) return;
115
+
116
+ const fetchId = ++fetchIdRef.current;
117
+ setIsLoading(true);
118
+ setError(null);
119
+
120
+ try {
121
+ const paths = await client.files.listArtifacts(runId);
122
+ if (fetchId !== fetchIdRef.current) return; // stale
123
+
124
+ const relatives = paths
125
+ .map((p) => stripToRelativePath(p, runId))
126
+ .filter((p) => p && !isInternalFile(p));
127
+
128
+ setFlatFiles(relatives);
129
+ } catch (err) {
130
+ if (fetchId !== fetchIdRef.current) return;
131
+ setError(err instanceof Error ? err.message : 'Failed to list artifacts');
132
+ setFlatFiles([]);
133
+ } finally {
134
+ if (fetchId === fetchIdRef.current) {
135
+ setIsLoading(false);
136
+ }
137
+ }
138
+ }, [client, runId]);
139
+
140
+ useEffect(() => {
141
+ fetchArtifacts();
142
+ }, [fetchArtifacts, refreshKey, manualRefreshKey]);
143
+
144
+ const tree = useMemo(() => buildTree(flatFiles), [flatFiles]);
145
+
146
+ const refresh = useCallback(() => {
147
+ setManualRefreshKey((k) => k + 1);
148
+ }, []);
149
+
150
+ return { tree, flatFiles, isLoading, error, refresh };
151
+ }
@@ -13,6 +13,43 @@ export interface UseDocumentPanelResult {
13
13
  openDocInPanel: (docId: string) => void;
14
14
  }
15
15
 
16
+ function toNonEmptyString(value: unknown): string | undefined {
17
+ if (typeof value === 'string' && value.trim().length > 0) {
18
+ return value;
19
+ }
20
+ return undefined;
21
+ }
22
+
23
+ function getRevisionRootId(details: Record<string, unknown>, fallbackId: string): string {
24
+ const directRootId =
25
+ toNonEmptyString(details.revision_root_id) ||
26
+ toNonEmptyString(details.revision_root) ||
27
+ toNonEmptyString(details.root_document_id) ||
28
+ toNonEmptyString(details.root_id);
29
+ if (directRootId) return directRootId;
30
+
31
+ const revisionInfo = details.revision_info;
32
+ if (revisionInfo && typeof revisionInfo === 'object') {
33
+ const rootFromRevisionInfo = toNonEmptyString((revisionInfo as Record<string, unknown>).root);
34
+ if (rootFromRevisionInfo) return rootFromRevisionInfo;
35
+ }
36
+
37
+ return fallbackId;
38
+ }
39
+
40
+ function isSameRevisionChain(existing: OpenDocument, incoming: OpenDocument): boolean {
41
+ if (existing.revisionRootId && incoming.revisionRootId) {
42
+ return existing.revisionRootId === incoming.revisionRootId;
43
+ }
44
+ if (incoming.revisionRootId) {
45
+ return existing.id === incoming.revisionRootId;
46
+ }
47
+ if (existing.revisionRootId) {
48
+ return existing.revisionRootId === incoming.id;
49
+ }
50
+ return existing.id === incoming.id;
51
+ }
52
+
16
53
  /**
17
54
  * Hook that manages the document side panel.
18
55
  *
@@ -52,14 +89,37 @@ export function useDocumentPanel(messages: AgentMessage[]): UseDocumentPanelResu
52
89
  if (message.type === AgentMessageType.UPDATE && message.details) {
53
90
  const details = message.details as Record<string, unknown>;
54
91
  if (details.event_class === 'document_created' || details.event_class === 'document_updated') {
55
- const docId = details.document_id as string;
92
+ const sourceDocId = toNonEmptyString(details.document_id);
93
+ const updatedDocId = toNonEmptyString(details.updated_document_id);
94
+ const docId = updatedDocId || sourceDocId;
56
95
  const docTitle = details.title as string;
57
96
  if (docId) {
97
+ const revisionRootId = getRevisionRootId(details, sourceDocId || docId);
98
+ const incomingDoc: OpenDocument = {
99
+ id: docId,
100
+ title: docTitle || 'Document',
101
+ revisionRootId,
102
+ };
58
103
  setOpenDocuments(prev => {
59
- if (prev.some(d => d.id === docId)) return prev;
60
- return [...prev, { id: docId, title: docTitle || 'Document' }];
104
+ const existingIndex = prev.findIndex(doc => isSameRevisionChain(doc, incomingDoc));
105
+ if (existingIndex < 0) {
106
+ return [...prev, incomingDoc];
107
+ }
108
+
109
+ const existing = prev[existingIndex];
110
+ if (
111
+ existing.id === incomingDoc.id &&
112
+ existing.title === incomingDoc.title &&
113
+ existing.revisionRootId === incomingDoc.revisionRootId
114
+ ) {
115
+ return prev;
116
+ }
117
+
118
+ const next = [...prev];
119
+ next[existingIndex] = incomingDoc;
120
+ return next;
61
121
  });
62
- setActiveDocumentId(docId);
122
+ setActiveDocumentId(incomingDoc.id);
63
123
  setIsDocPanelOpen(true);
64
124
  if (details.event_class === 'document_updated') {
65
125
  setDocRefreshKey(k => k + 1);
@@ -99,7 +159,7 @@ export function useDocumentPanel(messages: AgentMessage[]): UseDocumentPanelResu
99
159
  const openDocInPanel = useCallback((docId: string) => {
100
160
  setOpenDocuments(prev => {
101
161
  if (prev.some(d => d.id === docId)) return prev;
102
- return [...prev, { id: docId, title: 'Document' }];
162
+ return [...prev, { id: docId, title: 'Document', revisionRootId: docId }];
103
163
  });
104
164
  setActiveDocumentId(docId);
105
165
  setIsDocPanelOpen(true);
@@ -1,10 +1,11 @@
1
1
  import { useCallback, useEffect, useMemo, useState } from 'react';
2
- import { AsyncExecutionResult, VertesiaClient } from '@vertesia/client';
2
+ import { VertesiaClient } from '@vertesia/client';
3
3
  import {
4
4
  ConversationFile,
5
5
  ConversationFileRef,
6
6
  FileProcessingStatus,
7
7
  } from '@vertesia/common';
8
+ import { i18nInstance, NAMESPACE } from '../../../../i18n/instance.js';
8
9
 
9
10
  export interface UseFileProcessingResult {
10
11
  processingFiles: Map<string, ConversationFile>;
@@ -20,24 +21,25 @@ type ToastFn = (opts: { status: 'success' | 'error' | 'warning' | 'info'; title:
20
21
  * Combines local optimistic upload state with server-side processing
21
22
  * status updates (from `useAgentStream.serverFileUpdates`).
22
23
  *
23
- * @param client - Vertesia client for artifact uploads and workflow signals
24
- * @param run - Current workflow execution
24
+ * @param client - Vertesia client for artifact uploads and agent signals
25
+ * @param agentRunId - Stable AgentRun ID
25
26
  * @param serverFileUpdates - Server-side file processing updates from useAgentStream
26
27
  * @param toast - Toast notification function for error display
27
28
  */
28
29
  export function useFileProcessing(
29
30
  client: VertesiaClient,
30
- run: AsyncExecutionResult,
31
+ agentRunId: string,
31
32
  serverFileUpdates: Map<string, ConversationFile>,
32
33
  toast: ToastFn,
33
34
  ): UseFileProcessingResult {
35
+ const t = i18nInstance.getFixedT(null, NAMESPACE);
34
36
  // Local optimistic file state (uploads initiated from the UI)
35
37
  const [localFiles, setLocalFiles] = useState<Map<string, ConversationFile>>(new Map());
36
38
 
37
- // Reset when run changes
39
+ // Reset when agentRunId changes
38
40
  useEffect(() => {
39
41
  setLocalFiles(new Map());
40
- }, [run.runId]);
42
+ }, [agentRunId]);
41
43
 
42
44
  // Merge local + server state (server takes precedence for same IDs)
43
45
  const processingFiles = useMemo(() => {
@@ -72,7 +74,7 @@ export function useFileProcessing(
72
74
 
73
75
  try {
74
76
  // Upload to artifact storage
75
- await client.files.uploadArtifact(run.runId, artifactPath, file);
77
+ await client.agents.uploadArtifact(agentRunId, artifactPath, file);
76
78
 
77
79
  // Update local state to processing
78
80
  setLocalFiles(prev => {
@@ -86,10 +88,9 @@ export function useFileProcessing(
86
88
  return newMap;
87
89
  });
88
90
 
89
- // Signal workflow that file was uploaded
90
- await client.store.workflows.sendSignal(
91
- run.workflowId,
92
- run.runId,
91
+ // Signal agent that file was uploaded
92
+ await client.agents.sendSignal(
93
+ agentRunId,
93
94
  'FileUploaded',
94
95
  {
95
96
  id: fileId,
@@ -114,13 +115,13 @@ export function useFileProcessing(
114
115
 
115
116
  toast({
116
117
  status: 'error',
117
- title: 'Upload Failed',
118
+ title: t('agent.uploadFailed'),
118
119
  description: error instanceof Error ? error.message : 'Failed to upload file',
119
120
  duration: 3000,
120
121
  });
121
122
  }
122
123
  }
123
- }, [client, run, toast]);
124
+ }, [client, agentRunId, toast]);
124
125
 
125
126
  return { processingFiles, hasProcessingFiles, handleFileUpload };
126
127
  }
@@ -1,4 +1,6 @@
1
1
  export interface OpenDocument {
2
2
  id: string;
3
3
  title: string;
4
+ /** Revision chain key used to dedupe multiple revisions of the same document. */
5
+ revisionRootId?: string;
4
6
  }
@@ -1,6 +1,7 @@
1
1
  import { MessageBox } from '@vertesia/ui/core';
2
2
  import { VertesiaErrorBoundary } from './VertesiaErrorBoundary';
3
3
  import { ReactNode } from 'react';
4
+ import { useUITranslation } from '../../i18n/index.js';
4
5
 
5
6
  export function PanelErrorBoundary({ children }: { children: ReactNode }) {
6
7
  return (
@@ -11,11 +12,12 @@ export function PanelErrorBoundary({ children }: { children: ReactNode }) {
11
12
  }
12
13
 
13
14
  function PanelErrorFallback({ error }: { error?: Error }) {
15
+ const { t } = useUITranslation();
14
16
  return (
15
- <MessageBox status="error" title="Sorry, something went wrong...">
17
+ <MessageBox status="error" title={t('errors.somethingWentWrong')}>
16
18
  <div className='mb-4'>
17
- Our team has been notified and will be quickly working on resolving it.
18
- If you&apos;d like to escalate or simply contact us, please email us at&nbsp;
19
+ {t('errors.teamNotifiedLine1')}
20
+ {' '}{t('errors.teamNotifiedLine2')}&nbsp;
19
21
 
20
22
  <a className='text-info' href="mailto:support@vertesiahq.com">support@vertesiahq.com</a>.
21
23
  </div>