@vertesia/ui 1.0.0-dev.20260305.083323Z → 1.0.0-dev.20260331.091034Z
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.
- package/lib/esm/core/components/SelectList.js +3 -1
- package/lib/esm/core/components/SelectList.js.map +1 -1
- package/lib/esm/core/components/SidePanel.js +2 -2
- package/lib/esm/core/components/SidePanel.js.map +1 -1
- package/lib/esm/core/components/index.js +0 -5
- package/lib/esm/core/components/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/breadcrumb.js +11 -7
- package/lib/esm/core/components/shadcn/breadcrumb.js.map +1 -1
- package/lib/esm/core/components/shadcn/button.js +5 -3
- package/lib/esm/core/components/shadcn/button.js.map +1 -1
- package/lib/esm/core/components/shadcn/collaspible.js +14 -0
- package/lib/esm/core/components/shadcn/collaspible.js.map +1 -0
- package/lib/esm/core/components/shadcn/dropdown.js +64 -0
- package/lib/esm/core/components/shadcn/dropdown.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +3 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js +3 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js +1 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js +1 -1
- package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js +4 -2
- package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filterBar.js +7 -4
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/index.js +4 -0
- package/lib/esm/core/components/shadcn/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js +4 -2
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
- package/lib/esm/core/components/shadcn/modal/DeleteModal.js +5 -3
- package/lib/esm/core/components/shadcn/modal/DeleteModal.js.map +1 -1
- package/lib/esm/core/components/shadcn/popover.js +11 -7
- package/lib/esm/core/components/shadcn/popover.js.map +1 -1
- package/lib/esm/core/components/shadcn/radioGroup.js +29 -0
- package/lib/esm/core/components/shadcn/radioGroup.js.map +1 -0
- package/lib/esm/core/components/shadcn/switch.js +19 -0
- package/lib/esm/core/components/shadcn/switch.js.map +1 -0
- package/lib/esm/core/components/shadcn/tabs.js +6 -6
- package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
- package/lib/esm/core/components/shadcn/theme/ThemeSwitcher.js +7 -4
- package/lib/esm/core/components/shadcn/theme/ThemeSwitcher.js.map +1 -1
- package/lib/esm/core/components/toast/NotificationPanel.js +3 -3
- package/lib/esm/core/components/toast/NotificationPanel.js.map +1 -1
- package/lib/esm/core/hooks/PortalContainerProvider.js +9 -3
- package/lib/esm/core/hooks/PortalContainerProvider.js.map +1 -1
- package/lib/esm/env/index.js +16 -9
- package/lib/esm/env/index.js.map +1 -1
- package/lib/esm/features/agent/PayloadBuilder.js +87 -15
- package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/esm/features/agent/chat/AgentRightPanel.js +159 -0
- package/lib/esm/features/agent/chat/AgentRightPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ArtifactsTab.js +69 -0
- package/lib/esm/features/agent/chat/ArtifactsTab.js.map +1 -0
- package/lib/esm/features/agent/chat/AskUserWidget.js +12 -6
- package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/esm/features/agent/chat/DocumentPanel.js +6 -3
- package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ImageLightbox.js +3 -1
- package/lib/esm/features/agent/chat/ImageLightbox.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +241 -113
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +122 -52
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +5 -3
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +76 -33
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +82 -83
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +16 -14
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +20 -5
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js +8 -6
- package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +12 -10
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js +5 -3
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +104 -13
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +9 -5
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +160 -76
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js +3 -1
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
- package/lib/esm/features/agent/chat/VegaLiteChart.js +14 -2
- package/lib/esm/features/agent/chat/VegaLiteChart.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js +3 -8
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js +79 -16
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useArtifacts.js +108 -0
- package/lib/esm/features/agent/chat/hooks/useArtifacts.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +56 -5
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js +12 -10
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js.map +1 -1
- package/lib/esm/features/errors/PanelErrorBoundary.js +3 -1
- package/lib/esm/features/errors/PanelErrorBoundary.js.map +1 -1
- package/lib/esm/features/facets/AgentRunnerFacetsNav.js +45 -33
- package/lib/esm/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/RunsFacetsNav.js +9 -2
- package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/index.js +1 -1
- package/lib/esm/features/facets/index.js.map +1 -1
- package/lib/esm/features/layout/GenericPageNavHeader.js +40 -28
- package/lib/esm/features/layout/GenericPageNavHeader.js.map +1 -1
- package/lib/esm/features/layout/NotFoundView.js +3 -1
- package/lib/esm/features/layout/NotFoundView.js.map +1 -1
- package/lib/esm/features/magic-pdf/AnnotatedImageSlider.js +9 -5
- package/lib/esm/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
- package/lib/esm/features/magic-pdf/DownloadPopover.js +5 -4
- package/lib/esm/features/magic-pdf/DownloadPopover.js.map +1 -1
- package/lib/esm/features/magic-pdf/MagicPdfView.js +8 -5
- package/lib/esm/features/magic-pdf/MagicPdfView.js.map +1 -1
- package/lib/esm/features/pdf-viewer/PdfPageSlider.js +9 -5
- package/lib/esm/features/pdf-viewer/PdfPageSlider.js.map +1 -1
- package/lib/esm/features/pdf-viewer/SimplePdfViewer.js +5 -3
- package/lib/esm/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
- package/lib/esm/features/permissions/UserPermissionsProvider.js +3 -1
- package/lib/esm/features/permissions/UserPermissionsProvider.js.map +1 -1
- package/lib/esm/features/store/collections/BrowseCollectionView.js +9 -1
- package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/CollectionsTable.js +14 -7
- package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -1
- package/lib/esm/features/store/collections/CreateCollection.js +12 -9
- package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js +23 -19
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/SelectCollection.js +25 -10
- package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
- package/lib/esm/features/store/collections/SharedPropsEditor.js +5 -3
- package/lib/esm/features/store/collections/SharedPropsEditor.js.map +1 -1
- package/lib/esm/features/store/collections/SyncMemberHeadsToggle.js +5 -3
- package/lib/esm/features/store/collections/SyncMemberHeadsToggle.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js +14 -12
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentSearchResults.js +15 -5
- package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentTable.js +10 -7
- package/lib/esm/features/store/objects/DocumentTable.js.map +1 -1
- package/lib/esm/features/store/objects/ExportPropertiesModal.js +5 -2
- package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentDispositionButton.js +3 -1
- package/lib/esm/features/store/objects/components/ContentDispositionButton.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentOverview.js +55 -40
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/esm/features/store/objects/components/DocumentIcon.js +4 -3
- package/lib/esm/features/store/objects/components/DocumentIcon.js.map +1 -1
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +13 -11
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js +15 -18
- package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/SelectDocument.js +9 -6
- package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -1
- package/lib/esm/features/store/objects/components/TextEditorPanel.js +97 -0
- package/lib/esm/features/store/objects/components/TextEditorPanel.js.map +1 -0
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js +3 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
- package/lib/esm/features/store/objects/components/useContentPanelHooks.js +4 -2
- package/lib/esm/features/store/objects/components/useContentPanelHooks.js.map +1 -1
- package/lib/esm/features/store/objects/components/useDownloadFile.js +12 -10
- package/lib/esm/features/store/objects/components/useDownloadFile.js.map +1 -1
- package/lib/esm/features/store/objects/layout/documentLayout.js +10 -6
- package/lib/esm/features/store/objects/layout/documentLayout.js.map +1 -1
- package/lib/esm/features/store/objects/layout/renderers.js +10 -1
- package/lib/esm/features/store/objects/layout/renderers.js.map +1 -1
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js +3 -2
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
- package/lib/esm/features/store/objects/search/DocumentSearchProvider.js +3 -0
- package/lib/esm/features/store/objects/search/DocumentSearchProvider.js.map +1 -1
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +22 -109
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
- package/lib/esm/features/store/objects/selection/ObjectsActionContextClass.js +50 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionContextClass.js.map +1 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionHooks.js +27 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionHooks.js.map +1 -0
- package/lib/esm/features/store/objects/selection/SelectionActions.js +10 -6
- package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +17 -12
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +9 -5
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js +4 -2
- package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js +24 -23
- package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +10 -5
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js +13 -9
- package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +14 -8
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -1
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +42 -39
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +4 -2
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
- package/lib/esm/features/store/objects/upload/useUploadHandler.js +9 -7
- package/lib/esm/features/store/objects/upload/useUploadHandler.js.map +1 -1
- package/lib/esm/features/store/types/ContentObjectTypesSearch.js +6 -4
- package/lib/esm/features/store/types/ContentObjectTypesSearch.js.map +1 -1
- package/lib/esm/features/store/types/ContentObjectTypesTable.js +3 -1
- package/lib/esm/features/store/types/ContentObjectTypesTable.js.map +1 -1
- package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js +6 -7
- package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js.map +1 -1
- package/lib/esm/features/store/types/ObjectSchemaEditor.js +9 -7
- package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentType.js +9 -7
- package/lib/esm/features/store/types/SelectContentType.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentTypeModal.js +5 -2
- package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -1
- package/lib/esm/features/store/types/TableLayoutEditor.js +6 -4
- package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -1
- package/lib/esm/features/user/UserInfo.js +40 -50
- package/lib/esm/features/user/UserInfo.js.map +1 -1
- package/lib/esm/i18n/index.js +31 -0
- package/lib/esm/i18n/index.js.map +1 -0
- package/lib/esm/i18n/instance.js +46 -0
- package/lib/esm/i18n/instance.js.map +1 -0
- package/lib/esm/i18n/locales/ar.json +696 -0
- package/lib/esm/i18n/locales/de.json +664 -0
- package/lib/esm/i18n/locales/en.json +665 -0
- package/lib/esm/i18n/locales/es.json +670 -0
- package/lib/esm/i18n/locales/fr.json +672 -0
- package/lib/esm/i18n/locales/it.json +670 -0
- package/lib/esm/i18n/locales/ja.json +664 -0
- package/lib/esm/i18n/locales/ko.json +664 -0
- package/lib/esm/i18n/locales/pt.json +670 -0
- package/lib/esm/i18n/locales/ru.json +680 -0
- package/lib/esm/i18n/locales/tr.json +664 -0
- package/lib/esm/i18n/locales/zh-TW.json +664 -0
- package/lib/esm/i18n/locales/zh.json +664 -0
- package/lib/esm/layout/FullHeightLayout.js +3 -0
- package/lib/esm/layout/FullHeightLayout.js.map +1 -1
- package/lib/esm/layout/Navbar.js +3 -1
- package/lib/esm/layout/Navbar.js.map +1 -1
- package/lib/esm/layout/RegionTag.js +15 -0
- package/lib/esm/layout/RegionTag.js.map +1 -0
- package/lib/esm/layout/Sidebar.js +2 -2
- package/lib/esm/layout/Sidebar.js.map +1 -1
- package/lib/esm/layout/index.js +1 -0
- package/lib/esm/layout/index.js.map +1 -1
- package/lib/esm/router/HistoryNavigator.js +1 -1
- package/lib/esm/router/HistoryNavigator.js.map +1 -1
- package/lib/esm/router/Nav.js +5 -3
- package/lib/esm/router/Nav.js.map +1 -1
- package/lib/esm/router/NestedNavigationContext.js +4 -0
- package/lib/esm/router/NestedNavigationContext.js.map +1 -1
- package/lib/esm/router/NestedRouterProvider.js +3 -1
- package/lib/esm/router/NestedRouterProvider.js.map +1 -1
- package/lib/esm/router/Router.js +21 -6
- package/lib/esm/router/Router.js.map +1 -1
- package/lib/esm/session/UserSession.js +25 -4
- package/lib/esm/session/UserSession.js.map +1 -1
- package/lib/esm/session/UserSessionProvider.js +6 -13
- package/lib/esm/session/UserSessionProvider.js.map +1 -1
- package/lib/esm/session/auth/composable.js +1 -1
- package/lib/esm/session/auth/composable.js.map +1 -1
- package/lib/esm/session/auth/domainRouting.js +17 -0
- package/lib/esm/session/auth/domainRouting.js.map +1 -0
- package/lib/esm/session/auth/firebase.js +1 -1
- package/lib/esm/session/auth/firebase.js.map +1 -1
- package/lib/esm/session/auth/useCurrentTenant.js +3 -1
- package/lib/esm/session/auth/useCurrentTenant.js.map +1 -1
- package/lib/esm/shell/SplashScreen.js +3 -7
- package/lib/esm/shell/SplashScreen.js.map +1 -1
- package/lib/esm/shell/apps/StandaloneApp.js +5 -2
- package/lib/esm/shell/apps/StandaloneApp.js.map +1 -1
- package/lib/esm/shell/login/EnterpriseSigninButton.js +5 -3
- package/lib/esm/shell/login/EnterpriseSigninButton.js.map +1 -1
- package/lib/esm/shell/login/GitHubSignInButton.js +3 -7
- package/lib/esm/shell/login/GitHubSignInButton.js.map +1 -1
- package/lib/esm/shell/login/GoogleSignInButton.js +3 -1
- package/lib/esm/shell/login/GoogleSignInButton.js.map +1 -1
- package/lib/esm/shell/login/InviteAcceptModal.js +5 -2
- package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
- package/lib/esm/shell/login/MicrosoftSigninButton.js +4 -6
- package/lib/esm/shell/login/MicrosoftSigninButton.js.map +1 -1
- package/lib/esm/shell/login/SigninScreen.js +6 -2
- package/lib/esm/shell/login/SigninScreen.js.map +1 -1
- package/lib/esm/shell/login/SignupForm.js +36 -34
- package/lib/esm/shell/login/SignupForm.js.map +1 -1
- package/lib/esm/shell/login/TerminalLogin.js +28 -21
- package/lib/esm/shell/login/TerminalLogin.js.map +1 -1
- package/lib/esm/shell/login/UserInfo.js +6 -4
- package/lib/esm/shell/login/UserInfo.js.map +1 -1
- package/lib/esm/shell/login/UserSessionMenu.js +3 -4
- package/lib/esm/shell/login/UserSessionMenu.js.map +1 -1
- package/lib/esm/widgets/index.js +0 -1
- package/lib/esm/widgets/index.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONDisplay.js +6 -2
- package/lib/esm/widgets/json-view/JSONDisplay.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONSwitcher.js +6 -0
- package/lib/esm/widgets/json-view/JSONSwitcher.js.map +1 -0
- package/lib/esm/widgets/json-view/JSONView.js +1 -1
- package/lib/esm/widgets/json-view/JSONView.js.map +1 -1
- package/lib/esm/widgets/json-view/index.js +1 -0
- package/lib/esm/widgets/json-view/index.js.map +1 -1
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js +6 -5
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/CodeBlockContext.js +11 -0
- package/lib/esm/widgets/markdown/CodeBlockContext.js.map +1 -0
- package/lib/esm/widgets/markdown/MarkdownRenderer.js +11 -10
- package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/codeBlockHandlers.js +11 -12
- package/lib/esm/widgets/markdown/codeBlockHandlers.js.map +1 -1
- package/lib/esm/widgets/markdown/index.js +10 -9
- package/lib/esm/widgets/markdown/index.js.map +1 -1
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js +0 -1
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js.map +1 -1
- package/lib/esm/widgets/schema-editor/ManagedSchema.js +6 -5
- package/lib/esm/widgets/schema-editor/ManagedSchema.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js +7 -3
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js +3 -1
- package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
- package/lib/esm/widgets/upload/DropZone.js +9 -11
- package/lib/esm/widgets/upload/DropZone.js.map +1 -1
- package/lib/esm/widgets/upload/UploadResultCategory.js +3 -1
- package/lib/esm/widgets/upload/UploadResultCategory.js.map +1 -1
- package/lib/esm/widgets/upload/UploadSummary.js +3 -1
- package/lib/esm/widgets/upload/UploadSummary.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/SelectList.d.ts.map +1 -1
- package/lib/types/core/components/SidePanel.d.ts +4 -2
- package/lib/types/core/components/SidePanel.d.ts.map +1 -1
- package/lib/types/core/components/index.d.ts +0 -5
- package/lib/types/core/components/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/badge.d.ts +2 -2
- package/lib/types/core/components/shadcn/breadcrumb.d.ts +1 -1
- package/lib/types/core/components/shadcn/breadcrumb.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/button.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/collaspible.d.ts +6 -0
- package/lib/types/core/components/shadcn/collaspible.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/dropdown.d.ts +51 -0
- package/lib/types/core/components/shadcn/dropdown.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/filters/comboBox/DateCombobox.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/filters/comboBox/SelectCombobox.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/filters/filter/dateFilter.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/index.d.ts +4 -0
- package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/input.d.ts +1 -1
- package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts +2 -1
- package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/modal/DeleteModal.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/popover.d.ts +11 -3
- package/lib/types/core/components/shadcn/popover.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/radioGroup.d.ts +26 -0
- package/lib/types/core/components/shadcn/radioGroup.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/switch.d.ts +12 -0
- package/lib/types/core/components/shadcn/switch.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/tabs.d.ts +4 -2
- package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/theme/ThemeSwitcher.d.ts +3 -2
- package/lib/types/core/components/shadcn/theme/ThemeSwitcher.d.ts.map +1 -1
- package/lib/types/core/components/toast/NotificationPanel.d.ts.map +1 -1
- package/lib/types/core/hooks/PortalContainerProvider.d.ts +1 -0
- package/lib/types/core/hooks/PortalContainerProvider.d.ts.map +1 -1
- package/lib/types/env/index.d.ts +12 -3
- package/lib/types/env/index.d.ts.map +1 -1
- package/lib/types/features/agent/PayloadBuilder.d.ts +31 -3
- package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AgentRightPanel.d.ts +50 -0
- package/lib/types/features/agent/chat/AgentRightPanel.d.ts.map +1 -0
- package/lib/types/features/agent/chat/ArtifactsTab.d.ts +9 -0
- package/lib/types/features/agent/chat/ArtifactsTab.d.ts.map +1 -0
- package/lib/types/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ImageLightbox.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +22 -9
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +13 -4
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts +3 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts +5 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +16 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/types/features/agent/chat/SlidingThinkingIndicator.d.ts.map +1 -1
- package/lib/types/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +5 -3
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useArtifacts.d.ts +18 -0
- package/lib/types/features/agent/chat/hooks/useArtifacts.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts +4 -4
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -1
- package/lib/types/features/agent/chat/types/document.d.ts +2 -0
- package/lib/types/features/agent/chat/types/document.d.ts.map +1 -1
- package/lib/types/features/errors/PanelErrorBoundary.d.ts.map +1 -1
- package/lib/types/features/facets/AgentRunnerFacetsNav.d.ts +2 -1
- package/lib/types/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
- package/lib/types/features/facets/RunsFacetsNav.d.ts.map +1 -1
- package/lib/types/features/facets/index.d.ts +1 -1
- package/lib/types/features/facets/index.d.ts.map +1 -1
- package/lib/types/features/layout/GenericPageNavHeader.d.ts +2 -2
- package/lib/types/features/layout/GenericPageNavHeader.d.ts.map +1 -1
- package/lib/types/features/layout/NotFoundView.d.ts.map +1 -1
- package/lib/types/features/magic-pdf/AnnotatedImageSlider.d.ts.map +1 -1
- package/lib/types/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
- package/lib/types/features/magic-pdf/MagicPdfView.d.ts.map +1 -1
- package/lib/types/features/pdf-viewer/PdfPageSlider.d.ts.map +1 -1
- package/lib/types/features/pdf-viewer/SimplePdfViewer.d.ts.map +1 -1
- package/lib/types/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
- package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/collections/CollectionsTable.d.ts +4 -0
- package/lib/types/features/store/collections/CollectionsTable.d.ts.map +1 -1
- package/lib/types/features/store/collections/CreateCollection.d.ts.map +1 -1
- package/lib/types/features/store/collections/EditCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/collections/SelectCollection.d.ts.map +1 -1
- package/lib/types/features/store/collections/SharedPropsEditor.d.ts.map +1 -1
- package/lib/types/features/store/collections/SyncMemberHeadsToggle.d.ts.map +1 -1
- package/lib/types/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
- package/lib/types/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
- package/lib/types/features/store/objects/DocumentTable.d.ts.map +1 -1
- package/lib/types/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/ContentDispositionButton.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/DocumentIcon.d.ts +2 -1
- package/lib/types/features/store/objects/components/DocumentIcon.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/SaveVersionConfirmModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/SelectDocument.d.ts +3 -1
- package/lib/types/features/store/objects/components/SelectDocument.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/TextEditorPanel.d.ts +10 -0
- package/lib/types/features/store/objects/components/TextEditorPanel.d.ts.map +1 -0
- package/lib/types/features/store/objects/components/VectorSearchWidget.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/useContentPanelHooks.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/useDownloadFile.d.ts.map +1 -1
- package/lib/types/features/store/objects/layout/documentLayout.d.ts +3 -2
- package/lib/types/features/store/objects/layout/documentLayout.d.ts.map +1 -1
- package/lib/types/features/store/objects/layout/renderers.d.ts.map +1 -1
- package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
- package/lib/types/features/store/objects/search/DocumentSearchProvider.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts +3 -20
- package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/ObjectsActionContextClass.d.ts +16 -0
- package/lib/types/features/store/objects/selection/ObjectsActionContextClass.d.ts.map +1 -0
- package/lib/types/features/store/objects/selection/ObjectsActionHooks.d.ts +7 -0
- package/lib/types/features/store/objects/selection/ObjectsActionHooks.d.ts.map +1 -0
- package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts +4 -1
- package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts +6 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/AddToCollectionAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ConfirmAction.d.ts +1 -1
- package/lib/types/features/store/objects/selection/actions/ConfirmAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/DeleteObjectsAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/RemoveFromCollectionAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/StartWorkflowComponent.d.ts.map +1 -1
- package/lib/types/features/store/objects/upload/DocumentUploadModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
- package/lib/types/features/store/objects/upload/useUploadHandler.d.ts.map +1 -1
- package/lib/types/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
- package/lib/types/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
- package/lib/types/features/store/types/CreateOrUpdateTypeModal.d.ts +2 -1
- package/lib/types/features/store/types/CreateOrUpdateTypeModal.d.ts.map +1 -1
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
- package/lib/types/features/store/types/SelectContentType.d.ts.map +1 -1
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts.map +1 -1
- package/lib/types/features/store/types/TableLayoutEditor.d.ts.map +1 -1
- package/lib/types/features/user/UserInfo.d.ts +2 -2
- package/lib/types/features/user/UserInfo.d.ts.map +1 -1
- package/lib/types/i18n/index.d.ts +14 -0
- package/lib/types/i18n/index.d.ts.map +1 -0
- package/lib/types/i18n/instance.d.ts +5 -0
- package/lib/types/i18n/instance.d.ts.map +1 -0
- package/lib/types/layout/FullHeightLayout.d.ts +3 -0
- package/lib/types/layout/FullHeightLayout.d.ts.map +1 -1
- package/lib/types/layout/Navbar.d.ts.map +1 -1
- package/lib/types/layout/RegionTag.d.ts +4 -0
- package/lib/types/layout/RegionTag.d.ts.map +1 -0
- package/lib/types/layout/Sidebar.d.ts +2 -1
- package/lib/types/layout/Sidebar.d.ts.map +1 -1
- package/lib/types/layout/index.d.ts +1 -0
- package/lib/types/layout/index.d.ts.map +1 -1
- package/lib/types/router/Nav.d.ts +5 -1
- package/lib/types/router/Nav.d.ts.map +1 -1
- package/lib/types/router/NestedNavigationContext.d.ts.map +1 -1
- package/lib/types/router/NestedRouterProvider.d.ts.map +1 -1
- package/lib/types/router/Router.d.ts +2 -0
- package/lib/types/router/Router.d.ts.map +1 -1
- package/lib/types/session/UserSession.d.ts +1 -0
- package/lib/types/session/UserSession.d.ts.map +1 -1
- package/lib/types/session/UserSessionProvider.d.ts +0 -1
- package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/types/session/auth/domainRouting.d.ts +3 -0
- package/lib/types/session/auth/domainRouting.d.ts.map +1 -0
- package/lib/types/session/auth/useCurrentTenant.d.ts.map +1 -1
- package/lib/types/shell/SplashScreen.d.ts.map +1 -1
- package/lib/types/shell/apps/StandaloneApp.d.ts.map +1 -1
- package/lib/types/shell/login/EnterpriseSigninButton.d.ts.map +1 -1
- package/lib/types/shell/login/GitHubSignInButton.d.ts.map +1 -1
- package/lib/types/shell/login/GoogleSignInButton.d.ts.map +1 -1
- package/lib/types/shell/login/InviteAcceptModal.d.ts.map +1 -1
- package/lib/types/shell/login/MicrosoftSigninButton.d.ts +1 -1
- package/lib/types/shell/login/MicrosoftSigninButton.d.ts.map +1 -1
- package/lib/types/shell/login/SigninScreen.d.ts.map +1 -1
- package/lib/types/shell/login/SignupForm.d.ts.map +1 -1
- package/lib/types/shell/login/TerminalLogin.d.ts.map +1 -1
- package/lib/types/shell/login/UserInfo.d.ts.map +1 -1
- package/lib/types/shell/login/UserSessionMenu.d.ts.map +1 -1
- package/lib/types/widgets/index.d.ts +0 -1
- package/lib/types/widgets/index.d.ts.map +1 -1
- package/lib/types/widgets/json-view/JSONDisplay.d.ts.map +1 -1
- package/lib/types/widgets/json-view/JSONSwitcher.d.ts +6 -0
- package/lib/types/widgets/json-view/JSONSwitcher.d.ts.map +1 -0
- package/lib/types/widgets/json-view/index.d.ts +1 -0
- package/lib/types/widgets/json-view/index.d.ts.map +1 -1
- package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/CodeBlockContext.d.ts +21 -0
- package/lib/types/widgets/markdown/CodeBlockContext.d.ts.map +1 -0
- package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts +0 -12
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts.map +1 -1
- package/lib/types/widgets/markdown/index.d.ts +10 -9
- package/lib/types/widgets/markdown/index.d.ts.map +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
- package/lib/types/widgets/schema-editor/editor/PropertyEditor.d.ts.map +1 -1
- package/lib/types/widgets/schema-editor/editor/SchemaEditor.d.ts.map +1 -1
- package/lib/types/widgets/upload/DropZone.d.ts.map +1 -1
- package/lib/types/widgets/upload/UploadResultCategory.d.ts.map +1 -1
- package/lib/types/widgets/upload/UploadSummary.d.ts.map +1 -1
- package/lib/vertesia-ui-core.js +1 -1
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-env.js +1 -1
- package/lib/vertesia-ui-env.js.map +1 -1
- package/lib/vertesia-ui-features.js +1 -1
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-i18n.js +2 -0
- package/lib/vertesia-ui-i18n.js.map +1 -0
- package/lib/vertesia-ui-layout.js +1 -1
- package/lib/vertesia-ui-layout.js.map +1 -1
- package/lib/vertesia-ui-router.js +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js +1 -1
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-shell.js +1 -1
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +1 -1
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/package.json +36 -22
- package/src/core/components/SelectList.tsx +3 -1
- package/src/core/components/SidePanel.tsx +5 -4
- package/src/core/components/index.ts +0 -5
- package/src/core/components/shadcn/breadcrumb.tsx +16 -9
- package/src/core/components/shadcn/button.tsx +5 -3
- package/src/core/components/shadcn/collaspible.tsx +33 -0
- package/src/core/components/shadcn/dropdown.tsx +325 -0
- package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +3 -1
- package/src/core/components/shadcn/filters/comboBox/SelectCombobox.tsx +3 -1
- package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +1 -1
- package/src/core/components/shadcn/filters/filter/StringListFilter.tsx +1 -1
- package/src/core/components/shadcn/filters/filter/dateFilter.tsx +5 -3
- package/src/core/components/shadcn/filters/filterBar.tsx +8 -5
- package/src/core/components/shadcn/index.ts +5 -1
- package/src/core/components/shadcn/modal/ConfirmModal.tsx +7 -3
- package/src/core/components/shadcn/modal/DeleteModal.tsx +5 -3
- package/src/core/components/shadcn/popover.tsx +12 -7
- package/src/core/components/shadcn/radioGroup.tsx +100 -0
- package/src/core/components/shadcn/switch.tsx +60 -0
- package/src/core/components/shadcn/tabs.tsx +29 -27
- package/src/core/components/shadcn/theme/ThemeSwitcher.tsx +13 -9
- package/src/core/components/toast/NotificationPanel.tsx +38 -44
- package/src/core/hooks/PortalContainerProvider.tsx +11 -3
- package/src/env/index.ts +24 -13
- package/src/features/agent/PayloadBuilder.tsx +100 -13
- package/src/features/agent/chat/AgentRightPanel.tsx +424 -0
- package/src/features/agent/chat/ArtifactsTab.tsx +197 -0
- package/src/features/agent/chat/AskUserWidget.tsx +14 -8
- package/src/features/agent/chat/DocumentPanel.tsx +24 -9
- package/src/features/agent/chat/ImageLightbox.tsx +6 -3
- package/src/features/agent/chat/ModernAgentConversation.tsx +460 -279
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +151 -55
- package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +6 -4
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +183 -105
- package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +21 -31
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +119 -114
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +26 -9
- package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +9 -7
- package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +15 -13
- package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +8 -3
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +149 -49
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +9 -5
- package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +229 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +202 -97
- package/src/features/agent/chat/SlidingThinkingIndicator.tsx +5 -3
- package/src/features/agent/chat/VegaLiteChart.tsx +20 -8
- package/src/features/agent/chat/hooks/useAgentPlans.ts +3 -9
- package/src/features/agent/chat/hooks/useAgentStream.ts +86 -19
- package/src/features/agent/chat/hooks/useArtifacts.ts +151 -0
- package/src/features/agent/chat/hooks/useDocumentPanel.ts +65 -5
- package/src/features/agent/chat/hooks/useFileProcessing.ts +14 -13
- package/src/features/agent/chat/types/document.ts +2 -0
- package/src/features/errors/PanelErrorBoundary.tsx +5 -3
- package/src/features/facets/AgentRunnerFacetsNav.tsx +54 -35
- package/src/features/facets/RunsFacetsNav.tsx +15 -7
- package/src/features/facets/index.ts +1 -1
- package/src/features/layout/GenericPageNavHeader.tsx +64 -41
- package/src/features/layout/NotFoundView.tsx +4 -1
- package/src/features/magic-pdf/AnnotatedImageSlider.tsx +12 -8
- package/src/features/magic-pdf/DownloadPopover.tsx +11 -10
- package/src/features/magic-pdf/MagicPdfView.tsx +10 -7
- package/src/features/pdf-viewer/PdfPageSlider.tsx +10 -6
- package/src/features/pdf-viewer/SimplePdfViewer.tsx +5 -3
- package/src/features/permissions/UserPermissionsProvider.tsx +3 -1
- package/src/features/store/collections/BrowseCollectionView.tsx +11 -1
- package/src/features/store/collections/CollectionsTable.tsx +20 -12
- package/src/features/store/collections/CreateCollection.tsx +14 -11
- package/src/features/store/collections/EditCollectionView.tsx +31 -28
- package/src/features/store/collections/SelectCollection.tsx +50 -14
- package/src/features/store/collections/SharedPropsEditor.tsx +7 -5
- package/src/features/store/collections/SyncMemberHeadsToggle.tsx +6 -4
- package/src/features/store/objects/DocumentPreviewPanel.tsx +30 -28
- package/src/features/store/objects/DocumentSearchResults.tsx +31 -21
- package/src/features/store/objects/DocumentTable.tsx +11 -5
- package/src/features/store/objects/ExportPropertiesModal.tsx +8 -5
- package/src/features/store/objects/components/ContentDispositionButton.tsx +3 -1
- package/src/features/store/objects/components/ContentOverview.tsx +96 -50
- package/src/features/store/objects/components/DocumentIcon.tsx +11 -3
- package/src/features/store/objects/components/PropertiesEditorModal.tsx +14 -12
- package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +24 -37
- package/src/features/store/objects/components/SelectDocument.tsx +15 -6
- package/src/features/store/objects/components/TextEditorPanel.tsx +143 -0
- package/src/features/store/objects/components/VectorSearchWidget.tsx +11 -8
- package/src/features/store/objects/components/useContentPanelHooks.ts +4 -2
- package/src/features/store/objects/components/useDownloadFile.ts +12 -10
- package/src/features/store/objects/layout/documentLayout.tsx +16 -6
- package/src/features/store/objects/layout/renderers.tsx +27 -1
- package/src/features/store/objects/search/DocumentSearchContext.ts +3 -2
- package/src/features/store/objects/search/DocumentSearchProvider.tsx +3 -0
- package/src/features/store/objects/selection/ObjectsActionContext.tsx +26 -128
- package/src/features/store/objects/selection/ObjectsActionContextClass.ts +59 -0
- package/src/features/store/objects/selection/ObjectsActionHooks.ts +33 -0
- package/src/features/store/objects/selection/ObjectsActionSpec.ts +4 -1
- package/src/features/store/objects/selection/SelectionActions.tsx +14 -6
- package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +19 -14
- package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +9 -5
- package/src/features/store/objects/selection/actions/ConfirmAction.tsx +4 -3
- package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +24 -23
- package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +10 -5
- package/src/features/store/objects/selection/actions/RemoveFromCollectionAction.tsx +13 -9
- package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +14 -8
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +56 -55
- package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +4 -2
- package/src/features/store/objects/upload/useUploadHandler.ts +9 -7
- package/src/features/store/types/ContentObjectTypesSearch.tsx +10 -8
- package/src/features/store/types/ContentObjectTypesTable.tsx +6 -4
- package/src/features/store/types/CreateOrUpdateTypeModal.tsx +11 -12
- package/src/features/store/types/ObjectSchemaEditor.tsx +11 -9
- package/src/features/store/types/SelectContentType.tsx +15 -13
- package/src/features/store/types/SelectContentTypeModal.tsx +16 -13
- package/src/features/store/types/TableLayoutEditor.tsx +16 -12
- package/src/features/user/UserInfo.tsx +47 -56
- package/src/i18n/index.tsx +45 -0
- package/src/i18n/instance.ts +49 -0
- package/src/i18n/locales/ar.json +696 -0
- package/src/i18n/locales/de.json +664 -0
- package/src/i18n/locales/en.json +665 -0
- package/src/i18n/locales/es.json +670 -0
- package/src/i18n/locales/fr.json +672 -0
- package/src/i18n/locales/it.json +670 -0
- package/src/i18n/locales/ja.json +664 -0
- package/src/i18n/locales/ko.json +664 -0
- package/src/i18n/locales/pt.json +670 -0
- package/src/i18n/locales/ru.json +680 -0
- package/src/i18n/locales/tr.json +664 -0
- package/src/i18n/locales/zh-TW.json +664 -0
- package/src/i18n/locales/zh.json +664 -0
- package/src/layout/FullHeightLayout.tsx +8 -0
- package/src/layout/Navbar.tsx +4 -2
- package/src/layout/RegionTag.tsx +25 -0
- package/src/layout/Sidebar.tsx +4 -3
- package/src/layout/index.ts +2 -1
- package/src/router/HistoryNavigator.ts +10 -10
- package/src/router/Nav.tsx +9 -3
- package/src/router/NestedNavigationContext.tsx +4 -0
- package/src/router/NestedRouterProvider.tsx +3 -1
- package/src/router/Router.tsx +23 -7
- package/src/session/UserSession.ts +26 -5
- package/src/session/UserSessionProvider.tsx +6 -14
- package/src/session/auth/composable.ts +1 -1
- package/src/session/auth/domainRouting.test.ts +110 -0
- package/src/session/auth/domainRouting.ts +22 -0
- package/src/session/auth/firebase.ts +1 -1
- package/src/session/auth/useCurrentTenant.ts +3 -1
- package/src/shell/SplashScreen.tsx +22 -26
- package/src/shell/apps/StandaloneApp.tsx +9 -6
- package/src/shell/login/EnterpriseSigninButton.tsx +6 -4
- package/src/shell/login/GitHubSignInButton.tsx +3 -7
- package/src/shell/login/GoogleSignInButton.tsx +3 -1
- package/src/shell/login/InviteAcceptModal.tsx +5 -2
- package/src/shell/login/MicrosoftSigninButton.tsx +4 -6
- package/src/shell/login/SigninScreen.tsx +18 -13
- package/src/shell/login/SignupForm.tsx +46 -46
- package/src/shell/login/TerminalLogin.tsx +35 -31
- package/src/shell/login/UserInfo.tsx +15 -13
- package/src/shell/login/UserSessionMenu.tsx +28 -31
- package/src/widgets/index.ts +0 -1
- package/src/widgets/json-view/JSONCode.tsx +1 -1
- package/src/widgets/json-view/JSONDisplay.tsx +8 -3
- package/src/widgets/json-view/JSONSwitcher.tsx +24 -0
- package/src/widgets/json-view/JSONView.tsx +1 -1
- package/src/widgets/json-view/index.ts +1 -0
- package/src/widgets/markdown/ArtifactContentRenderer.tsx +15 -7
- package/src/widgets/markdown/CodeBlockContext.tsx +34 -0
- package/src/widgets/markdown/MarkdownRenderer.tsx +14 -13
- package/src/widgets/markdown/codeBlockHandlers.tsx +17 -36
- package/src/widgets/markdown/index.ts +27 -34
- package/src/widgets/markdown/remarkDirectiveHandler.ts +1 -1
- package/src/widgets/schema-editor/ManagedSchema.ts +6 -5
- package/src/widgets/schema-editor/editor/PropertyEditor.tsx +7 -3
- package/src/widgets/schema-editor/editor/SchemaEditor.tsx +3 -1
- package/src/widgets/upload/DropZone.tsx +10 -13
- package/src/widgets/upload/UploadResultCategory.tsx +3 -1
- package/src/widgets/upload/UploadSummary.tsx +13 -11
- package/tsconfig.dist.json +1 -1
- package/lib/esm/core/components/Dropdown.js +0 -16
- package/lib/esm/core/components/Dropdown.js.map +0 -1
- package/lib/esm/core/components/DropdownList.js +0 -9
- package/lib/esm/core/components/DropdownList.js.map +0 -1
- package/lib/esm/core/components/RadioGroup.js +0 -34
- package/lib/esm/core/components/RadioGroup.js.map +0 -1
- package/lib/esm/core/components/SelectStack.js +0 -8
- package/lib/esm/core/components/SelectStack.js.map +0 -1
- package/lib/esm/core/components/Switch.js +0 -12
- package/lib/esm/core/components/Switch.js.map +0 -1
- package/lib/esm/widgets/popover/Popover.js +0 -73
- package/lib/esm/widgets/popover/Popover.js.map +0 -1
- package/lib/esm/widgets/popover/context.js +0 -7
- package/lib/esm/widgets/popover/context.js.map +0 -1
- package/lib/esm/widgets/popover/index.js +0 -3
- package/lib/esm/widgets/popover/index.js.map +0 -1
- package/lib/esm/widgets/popover/slots.js +0 -22
- package/lib/esm/widgets/popover/slots.js.map +0 -1
- package/lib/types/core/components/Dropdown.d.ts +0 -15
- package/lib/types/core/components/Dropdown.d.ts.map +0 -1
- package/lib/types/core/components/DropdownList.d.ts +0 -13
- package/lib/types/core/components/DropdownList.d.ts.map +0 -1
- package/lib/types/core/components/RadioGroup.d.ts +0 -26
- package/lib/types/core/components/RadioGroup.d.ts.map +0 -1
- package/lib/types/core/components/SelectStack.d.ts +0 -13
- package/lib/types/core/components/SelectStack.d.ts.map +0 -1
- package/lib/types/core/components/Switch.d.ts +0 -11
- package/lib/types/core/components/Switch.d.ts.map +0 -1
- package/lib/types/widgets/popover/Popover.d.ts +0 -38
- package/lib/types/widgets/popover/Popover.d.ts.map +0 -1
- package/lib/types/widgets/popover/context.d.ts +0 -8
- package/lib/types/widgets/popover/context.d.ts.map +0 -1
- package/lib/types/widgets/popover/index.d.ts +0 -3
- package/lib/types/widgets/popover/index.d.ts.map +0 -1
- package/lib/types/widgets/popover/slots.d.ts +0 -5
- package/lib/types/widgets/popover/slots.d.ts.map +0 -1
- package/src/core/components/Dropdown.tsx +0 -63
- package/src/core/components/DropdownList.tsx +0 -72
- package/src/core/components/RadioGroup.tsx +0 -100
- package/src/core/components/SelectStack.tsx +0 -63
- package/src/core/components/Switch.tsx +0 -30
- package/src/widgets/popover/Popover.tsx +0 -171
- package/src/widgets/popover/context.ts +0 -15
- package/src/widgets/popover/index.ts +0 -2
- 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=
|
|
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 || '
|
|
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=
|
|
918
|
+
title={t('agent.copyToClipboard')}
|
|
907
919
|
>
|
|
908
920
|
{isCopied ? <Check className="w-3 h-3" /> : <Copy className="w-3 h-3" />}
|
|
909
|
-
{isCopied ? '
|
|
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=
|
|
927
|
+
title={t('agent.exportAsPng')}
|
|
916
928
|
>
|
|
917
929
|
<Download className="w-3 h-3" />
|
|
918
|
-
{isExporting ? '
|
|
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 ?
|
|
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 ? '
|
|
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
|
-
|
|
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 {
|
|
2
|
+
import { VertesiaClient } from '@vertesia/client';
|
|
3
3
|
import {
|
|
4
4
|
AgentMessage,
|
|
5
5
|
AgentMessageType,
|
|
@@ -30,6 +30,8 @@ export interface UseAgentStreamResult {
|
|
|
30
30
|
removeOptimisticMessages: (predicate: (msg: AgentMessage) => boolean) => void;
|
|
31
31
|
/** Workflow status fetched from API (RUNNING, COMPLETED, FAILED, etc.) */
|
|
32
32
|
workflowStatus: string | null;
|
|
33
|
+
/** Temporal workflow run ID (first_workflow_run_id from AgentRun) */
|
|
34
|
+
workflowRunId: string | null;
|
|
33
35
|
/** Server-side file processing status updates (from SYSTEM messages) */
|
|
34
36
|
serverFileUpdates: Map<string, ConversationFile>;
|
|
35
37
|
}
|
|
@@ -44,18 +46,19 @@ export interface UseAgentStreamResult {
|
|
|
44
46
|
* - COMPLETE/IDLE streaming flush
|
|
45
47
|
* - Timestamp-based message dedup and optimistic QUESTION replacement
|
|
46
48
|
* - `isCompleted` derived state
|
|
47
|
-
* - State reset when `
|
|
49
|
+
* - State reset when `agentRunId` changes
|
|
48
50
|
*
|
|
49
51
|
* File-processing SYSTEM messages are passed through to the messages array
|
|
50
52
|
* (Option A from the plan) so downstream hooks can react to them.
|
|
51
53
|
*/
|
|
52
54
|
export function useAgentStream(
|
|
53
55
|
client: VertesiaClient,
|
|
54
|
-
|
|
56
|
+
agentRunId: string,
|
|
55
57
|
): UseAgentStreamResult {
|
|
56
58
|
const [messages, setMessages] = useState<AgentMessage[]>([]);
|
|
57
59
|
const [isCompleted, setIsCompleted] = useState(false);
|
|
58
60
|
const [workflowStatus, setWorkflowStatus] = useState<string | null>(null);
|
|
61
|
+
const [workflowRunId, setWorkflowRunId] = useState<string | null>(null);
|
|
59
62
|
|
|
60
63
|
// Server-side file processing status updates
|
|
61
64
|
const [serverFileUpdates, setServerFileUpdates] = useState<Map<string, ConversationFile>>(new Map());
|
|
@@ -65,12 +68,24 @@ export function useAgentStream(
|
|
|
65
68
|
|
|
66
69
|
// RAF-batched streaming updates
|
|
67
70
|
const pendingStreamingChunks = useRef<Map<string, StreamingData>>(new Map());
|
|
68
|
-
const streamingFlushScheduled = useRef<number | null>(null);
|
|
71
|
+
const streamingFlushScheduled = useRef<{ mode: 'raf' | 'timeout'; id: number } | null>(null);
|
|
69
72
|
|
|
70
73
|
// Debug: visual flash indicator for incoming chunks
|
|
71
74
|
const [debugChunkFlash, setDebugChunkFlash] = useState(false);
|
|
72
75
|
const debugFlashTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
73
76
|
|
|
77
|
+
const cancelScheduledStreamingFlush = useCallback(() => {
|
|
78
|
+
const scheduled = streamingFlushScheduled.current;
|
|
79
|
+
if (!scheduled) return;
|
|
80
|
+
|
|
81
|
+
if (scheduled.mode === 'raf') {
|
|
82
|
+
cancelAnimationFrame(scheduled.id);
|
|
83
|
+
} else {
|
|
84
|
+
clearTimeout(scheduled.id);
|
|
85
|
+
}
|
|
86
|
+
streamingFlushScheduled.current = null;
|
|
87
|
+
}, []);
|
|
88
|
+
|
|
74
89
|
const flushStreamingChunks = useCallback(() => {
|
|
75
90
|
if (pendingStreamingChunks.current.size > 0) {
|
|
76
91
|
setStreamingMessages(new Map(pendingStreamingChunks.current));
|
|
@@ -88,22 +103,32 @@ export function useAgentStream(
|
|
|
88
103
|
|
|
89
104
|
// Stream messages from the agent
|
|
90
105
|
useEffect(() => {
|
|
91
|
-
// Reset all state when
|
|
106
|
+
// Reset all state when agentRunId changes (new agent)
|
|
107
|
+
console.debug('[useAgentStream] effect:start', { agentRunId });
|
|
92
108
|
setMessages([]);
|
|
93
109
|
setWorkflowStatus(null);
|
|
110
|
+
setWorkflowRunId(null);
|
|
94
111
|
setStreamingMessages(new Map());
|
|
95
112
|
setServerFileUpdates(new Map());
|
|
113
|
+
const abortController = new AbortController();
|
|
96
114
|
|
|
97
|
-
// Check
|
|
98
|
-
client.
|
|
99
|
-
.then((
|
|
100
|
-
|
|
115
|
+
// Check agent run status
|
|
116
|
+
client.agents.getInternals(agentRunId)
|
|
117
|
+
.then((agentRun) => {
|
|
118
|
+
if (!abortController.signal.aborted) {
|
|
119
|
+
setWorkflowStatus(agentRun.status?.toUpperCase() ?? null);
|
|
120
|
+
setWorkflowRunId(agentRun.first_workflow_run_id ?? null);
|
|
121
|
+
}
|
|
101
122
|
})
|
|
102
123
|
.catch((error) => {
|
|
103
|
-
|
|
124
|
+
if (!abortController.signal.aborted) {
|
|
125
|
+
console.error('Failed to check agent run status:', error);
|
|
126
|
+
}
|
|
104
127
|
});
|
|
105
128
|
|
|
106
|
-
client.
|
|
129
|
+
client.agents.streamMessages(agentRunId, (message) => {
|
|
130
|
+
if (abortController.signal.aborted) return;
|
|
131
|
+
|
|
107
132
|
// Handle streaming chunks separately for real-time aggregation
|
|
108
133
|
// PERFORMANCE: Batch updates using RAF instead of immediate state updates
|
|
109
134
|
if (message.type === AgentMessageType.STREAMING_CHUNK) {
|
|
@@ -130,7 +155,17 @@ export function useAgentStream(
|
|
|
130
155
|
|
|
131
156
|
// Schedule a flush if not already scheduled (~60 updates/sec max)
|
|
132
157
|
if (streamingFlushScheduled.current === null) {
|
|
133
|
-
|
|
158
|
+
if (document.hidden) {
|
|
159
|
+
streamingFlushScheduled.current = {
|
|
160
|
+
mode: 'timeout',
|
|
161
|
+
id: window.setTimeout(flushStreamingChunks, 16),
|
|
162
|
+
};
|
|
163
|
+
} else {
|
|
164
|
+
streamingFlushScheduled.current = {
|
|
165
|
+
mode: 'raf',
|
|
166
|
+
id: requestAnimationFrame(flushStreamingChunks),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
134
169
|
}
|
|
135
170
|
return;
|
|
136
171
|
}
|
|
@@ -176,7 +211,15 @@ export function useAgentStream(
|
|
|
176
211
|
}
|
|
177
212
|
}
|
|
178
213
|
|
|
179
|
-
|
|
214
|
+
const hasContent = !!message.message;
|
|
215
|
+
const isStateMessage = [
|
|
216
|
+
AgentMessageType.COMPLETE,
|
|
217
|
+
AgentMessageType.IDLE,
|
|
218
|
+
AgentMessageType.TERMINATED,
|
|
219
|
+
AgentMessageType.REQUEST_INPUT,
|
|
220
|
+
].includes(message.type);
|
|
221
|
+
|
|
222
|
+
if (hasContent || isStateMessage) {
|
|
180
223
|
setMessages((prev) => {
|
|
181
224
|
// Check for duplicate by timestamp
|
|
182
225
|
if (prev.find((m) => m.timestamp === message.timestamp)) {
|
|
@@ -196,17 +239,40 @@ export function useAgentStream(
|
|
|
196
239
|
return [...prev];
|
|
197
240
|
});
|
|
198
241
|
}
|
|
199
|
-
})
|
|
242
|
+
}, undefined, abortController.signal)
|
|
243
|
+
.catch((error) => {
|
|
244
|
+
if (!abortController.signal.aborted) {
|
|
245
|
+
console.error('Failed to stream agent messages:', error);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
200
248
|
|
|
201
249
|
return () => {
|
|
250
|
+
console.debug('[useAgentStream] effect:cleanup', { agentRunId });
|
|
251
|
+
abortController.abort();
|
|
202
252
|
setMessages([]);
|
|
203
|
-
|
|
204
|
-
cancelAnimationFrame(streamingFlushScheduled.current);
|
|
205
|
-
streamingFlushScheduled.current = null;
|
|
206
|
-
}
|
|
253
|
+
cancelScheduledStreamingFlush();
|
|
207
254
|
pendingStreamingChunks.current.clear();
|
|
255
|
+
if (debugFlashTimeout.current) {
|
|
256
|
+
clearTimeout(debugFlashTimeout.current);
|
|
257
|
+
debugFlashTimeout.current = null;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
}, [agentRunId, client.agents, flushStreamingChunks, cancelScheduledStreamingFlush]);
|
|
261
|
+
|
|
262
|
+
// Flush pending streaming chunks when tab becomes visible.
|
|
263
|
+
useEffect(() => {
|
|
264
|
+
const handleVisibilityChange = () => {
|
|
265
|
+
if (!document.hidden && pendingStreamingChunks.current.size > 0) {
|
|
266
|
+
cancelScheduledStreamingFlush();
|
|
267
|
+
flushStreamingChunks();
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
272
|
+
return () => {
|
|
273
|
+
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
208
274
|
};
|
|
209
|
-
}, [
|
|
275
|
+
}, [flushStreamingChunks, cancelScheduledStreamingFlush]);
|
|
210
276
|
|
|
211
277
|
// Add an optimistic message to the timeline
|
|
212
278
|
const addOptimisticMessage = useCallback((msg: AgentMessage) => {
|
|
@@ -234,6 +300,7 @@ export function useAgentStream(
|
|
|
234
300
|
addOptimisticMessage,
|
|
235
301
|
removeOptimisticMessages,
|
|
236
302
|
workflowStatus,
|
|
303
|
+
workflowRunId,
|
|
237
304
|
serverFileUpdates,
|
|
238
305
|
};
|
|
239
306
|
}
|
|
@@ -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
|
|
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
|
-
|
|
60
|
-
|
|
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(
|
|
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 {
|
|
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
|
|
24
|
-
* @param
|
|
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
|
-
|
|
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
|
|
39
|
+
// Reset when agentRunId changes
|
|
38
40
|
useEffect(() => {
|
|
39
41
|
setLocalFiles(new Map());
|
|
40
|
-
}, [
|
|
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.
|
|
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
|
|
90
|
-
await client.
|
|
91
|
-
|
|
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: '
|
|
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,
|
|
124
|
+
}, [client, agentRunId, toast]);
|
|
124
125
|
|
|
125
126
|
return { processingFiles, hasProcessingFiles, handleFileUpload };
|
|
126
127
|
}
|
|
@@ -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=
|
|
17
|
+
<MessageBox status="error" title={t('errors.somethingWentWrong')}>
|
|
16
18
|
<div className='mb-4'>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
{t('errors.teamNotifiedLine1')}
|
|
20
|
+
{' '}{t('errors.teamNotifiedLine2')}
|
|
19
21
|
|
|
20
22
|
<a className='text-info' href="mailto:support@vertesiahq.com">support@vertesiahq.com</a>.
|
|
21
23
|
</div>
|