@vertesia/ui 1.0.0-dev.20260305.083323Z → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +61 -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/env/index.js +11 -1
- 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 +243 -106
- 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 +57 -18
- 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 +75 -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 +1 -1
- 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 +694 -0
- package/lib/esm/i18n/locales/de.json +662 -0
- package/lib/esm/i18n/locales/en.json +663 -0
- package/lib/esm/i18n/locales/es.json +668 -0
- package/lib/esm/i18n/locales/fr.json +670 -0
- package/lib/esm/i18n/locales/it.json +668 -0
- package/lib/esm/i18n/locales/ja.json +662 -0
- package/lib/esm/i18n/locales/ko.json +662 -0
- package/lib/esm/i18n/locales/pt.json +668 -0
- package/lib/esm/i18n/locales/ru.json +678 -0
- package/lib/esm/i18n/locales/tr.json +662 -0
- package/lib/esm/i18n/locales/zh-TW.json +662 -0
- package/lib/esm/i18n/locales/zh.json +662 -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 +23 -0
- package/lib/esm/session/UserSession.js.map +1 -1
- package/lib/esm/session/UserSessionProvider.js +4 -0
- 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/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 +44 -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/env/index.d.ts +8 -1
- 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 +12 -3
- 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 +3 -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/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.map +1 -1
- 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 +309 -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/env/index.ts +16 -3
- 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 +461 -271
- 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 +126 -46
- 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 +80 -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 +6 -6
- 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 +694 -0
- package/src/i18n/locales/de.json +662 -0
- package/src/i18n/locales/en.json +663 -0
- package/src/i18n/locales/es.json +668 -0
- package/src/i18n/locales/fr.json +670 -0
- package/src/i18n/locales/it.json +668 -0
- package/src/i18n/locales/ja.json +662 -0
- package/src/i18n/locales/ko.json +662 -0
- package/src/i18n/locales/pt.json +668 -0
- package/src/i18n/locales/ru.json +678 -0
- package/src/i18n/locales/tr.json +662 -0
- package/src/i18n/locales/zh-TW.json +662 -0
- package/src/i18n/locales/zh.json +662 -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 +24 -0
- package/src/session/UserSessionProvider.tsx +4 -0
- package/src/session/auth/composable.ts +1 -1
- 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
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { AgentMessage, AgentMessageType } from "@vertesia/common";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { getSlidingViewMessageBuckets, groupMessagesWithStreaming, isToolActivityMessage, mergeConsecutiveToolGroups, shouldCollapseAdjacentRenderedMessage } from "./utils";
|
|
4
|
+
|
|
5
|
+
function makeMessage(overrides: Partial<AgentMessage>): AgentMessage {
|
|
6
|
+
return {
|
|
7
|
+
timestamp: 0,
|
|
8
|
+
workflow_run_id: "run-1",
|
|
9
|
+
type: AgentMessageType.THOUGHT,
|
|
10
|
+
message: "",
|
|
11
|
+
...overrides,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe("ModernAgentOutput utils - tool preamble behavior", () => {
|
|
16
|
+
it("treats tool preamble thoughts as tool activity", () => {
|
|
17
|
+
const preamble = makeMessage({
|
|
18
|
+
message: "I will now call tools",
|
|
19
|
+
details: {
|
|
20
|
+
display_role: "tool_preamble",
|
|
21
|
+
tools: ["search_documents"],
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
expect(isToolActivityMessage(preamble)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("groups a single tool preamble into a tool_group (not a standalone message)", () => {
|
|
29
|
+
const preamble = makeMessage({
|
|
30
|
+
timestamp: 1000,
|
|
31
|
+
message: "I will now call tools",
|
|
32
|
+
details: {
|
|
33
|
+
display_role: "tool_preamble",
|
|
34
|
+
tools: ["search_documents"],
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const grouped = mergeConsecutiveToolGroups(groupMessagesWithStreaming([preamble], new Map()));
|
|
39
|
+
|
|
40
|
+
expect(grouped).toHaveLength(1);
|
|
41
|
+
expect(grouped[0].type).toBe("tool_group");
|
|
42
|
+
if (grouped[0].type === "tool_group") {
|
|
43
|
+
expect(grouped[0].messages).toHaveLength(1);
|
|
44
|
+
expect(grouped[0].messages[0].details?.display_role).toBe("tool_preamble");
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("keeps preamble and tool-call thought in the same activity tool group", () => {
|
|
49
|
+
const activityGroupId = "activity-1";
|
|
50
|
+
const preamble = makeMessage({
|
|
51
|
+
timestamp: 1000,
|
|
52
|
+
message: "Let me check available docs before answering.",
|
|
53
|
+
details: {
|
|
54
|
+
display_role: "tool_preamble",
|
|
55
|
+
tools: ["list-assistant-knowledge"],
|
|
56
|
+
activity_group_id: activityGroupId,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
const toolCall = makeMessage({
|
|
60
|
+
timestamp: 1010,
|
|
61
|
+
message: "Searching for all knowledge documents available",
|
|
62
|
+
details: {
|
|
63
|
+
tool: "list-assistant-knowledge",
|
|
64
|
+
tool_status: "running",
|
|
65
|
+
activity_group_id: activityGroupId,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const grouped = mergeConsecutiveToolGroups(groupMessagesWithStreaming([preamble, toolCall], new Map()));
|
|
70
|
+
|
|
71
|
+
expect(grouped).toHaveLength(1);
|
|
72
|
+
expect(grouped[0].type).toBe("tool_group");
|
|
73
|
+
if (grouped[0].type === "tool_group") {
|
|
74
|
+
expect(grouped[0].messages).toHaveLength(2);
|
|
75
|
+
expect(grouped[0].messages[0].details?.display_role).toBe("tool_preamble");
|
|
76
|
+
expect(grouped[0].messages[1].details?.tool).toBe("list-assistant-knowledge");
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe("ModernAgentOutput utils - sliding view thinking", () => {
|
|
82
|
+
it("does not surface stale thinking after newer important messages", () => {
|
|
83
|
+
const thinking = makeMessage({
|
|
84
|
+
timestamp: 1000,
|
|
85
|
+
message: "Now let me update the benchmark doc, then launch all workstreams.",
|
|
86
|
+
type: AgentMessageType.THOUGHT,
|
|
87
|
+
});
|
|
88
|
+
const answer = makeMessage({
|
|
89
|
+
timestamp: 2000,
|
|
90
|
+
message: "All 10 workstreams are now running.",
|
|
91
|
+
type: AgentMessageType.ANSWER,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const result = getSlidingViewMessageBuckets([thinking, answer], false, false);
|
|
95
|
+
|
|
96
|
+
expect(result.importantMessages).toEqual([answer]);
|
|
97
|
+
expect(result.recentThinking).toEqual([]);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("keeps the newest thinking when nothing more important has happened yet", () => {
|
|
101
|
+
const question = makeMessage({
|
|
102
|
+
timestamp: 1000,
|
|
103
|
+
message: "Start the benchmark.",
|
|
104
|
+
type: AgentMessageType.QUESTION,
|
|
105
|
+
});
|
|
106
|
+
const thinking = makeMessage({
|
|
107
|
+
timestamp: 2000,
|
|
108
|
+
message: "Launching the workstreams now.",
|
|
109
|
+
type: AgentMessageType.THOUGHT,
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
const result = getSlidingViewMessageBuckets([question, thinking], false, false);
|
|
113
|
+
|
|
114
|
+
expect(result.importantMessages).toEqual([question]);
|
|
115
|
+
expect(result.recentThinking).toEqual([thinking]);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe("ModernAgentOutput utils - streamed deduplication", () => {
|
|
120
|
+
it("skips a stale streaming item once an equivalent streamed answer is persisted", () => {
|
|
121
|
+
const answer = makeMessage({
|
|
122
|
+
timestamp: 2000,
|
|
123
|
+
type: AgentMessageType.ANSWER,
|
|
124
|
+
message: "Here is the final synthesis.",
|
|
125
|
+
details: {
|
|
126
|
+
streamed: true,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const grouped = groupMessagesWithStreaming(
|
|
131
|
+
[answer],
|
|
132
|
+
new Map([
|
|
133
|
+
["stream-1", {
|
|
134
|
+
text: "Here is the final synthesis.",
|
|
135
|
+
startTimestamp: 1000,
|
|
136
|
+
workstreamId: "main",
|
|
137
|
+
}],
|
|
138
|
+
]),
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
expect(grouped).toHaveLength(1);
|
|
142
|
+
expect(grouped[0].type).toBe("single");
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it("skips a stale streaming item when the persisted message matches by activity id", () => {
|
|
146
|
+
const answer = makeMessage({
|
|
147
|
+
timestamp: 2000,
|
|
148
|
+
type: AgentMessageType.ANSWER,
|
|
149
|
+
message: "Different final text",
|
|
150
|
+
details: {
|
|
151
|
+
activity_id: "activity-1",
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const grouped = groupMessagesWithStreaming(
|
|
156
|
+
[answer],
|
|
157
|
+
new Map([
|
|
158
|
+
["activity-1", {
|
|
159
|
+
text: "partial text",
|
|
160
|
+
startTimestamp: 1000,
|
|
161
|
+
workstreamId: "main",
|
|
162
|
+
activityId: "activity-1",
|
|
163
|
+
}],
|
|
164
|
+
]),
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
expect(grouped).toHaveLength(1);
|
|
168
|
+
expect(grouped[0].type).toBe("single");
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
describe("ModernAgentOutput utils - adjacent rendered deduplication", () => {
|
|
173
|
+
it("collapses adjacent answer and complete messages with the same text", () => {
|
|
174
|
+
const previous = makeMessage({
|
|
175
|
+
timestamp: 1000,
|
|
176
|
+
type: AgentMessageType.ANSWER,
|
|
177
|
+
message: "Final answer",
|
|
178
|
+
workstream_id: "main",
|
|
179
|
+
});
|
|
180
|
+
const current = makeMessage({
|
|
181
|
+
timestamp: 1500,
|
|
182
|
+
type: AgentMessageType.COMPLETE,
|
|
183
|
+
message: "Final answer",
|
|
184
|
+
workstream_id: "main",
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
expect(shouldCollapseAdjacentRenderedMessage(previous, current)).toBe(true);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it("collapses adjacent streamed thought and answer messages with the same text", () => {
|
|
191
|
+
const previous = makeMessage({
|
|
192
|
+
timestamp: 1000,
|
|
193
|
+
type: AgentMessageType.THOUGHT,
|
|
194
|
+
message: "Synthesizing results",
|
|
195
|
+
workstream_id: "roundtable",
|
|
196
|
+
details: {
|
|
197
|
+
streamed: true,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
const current = makeMessage({
|
|
201
|
+
timestamp: 1200,
|
|
202
|
+
type: AgentMessageType.ANSWER,
|
|
203
|
+
message: "Synthesizing results",
|
|
204
|
+
workstream_id: "roundtable",
|
|
205
|
+
details: {
|
|
206
|
+
streamed: true,
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
expect(shouldCollapseAdjacentRenderedMessage(previous, current)).toBe(true);
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it("keeps repeated content when it is from a different workstream", () => {
|
|
214
|
+
const previous = makeMessage({
|
|
215
|
+
timestamp: 1000,
|
|
216
|
+
type: AgentMessageType.ANSWER,
|
|
217
|
+
message: "Same text",
|
|
218
|
+
workstream_id: "alpha",
|
|
219
|
+
});
|
|
220
|
+
const current = makeMessage({
|
|
221
|
+
timestamp: 1200,
|
|
222
|
+
type: AgentMessageType.COMPLETE,
|
|
223
|
+
message: "Same text",
|
|
224
|
+
workstream_id: "beta",
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
expect(shouldCollapseAdjacentRenderedMessage(previous, current)).toBe(false);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
@@ -28,91 +28,28 @@ export const DONE_STATES = [
|
|
|
28
28
|
export function isInProgress(messages: AgentMessage[]) {
|
|
29
29
|
if (!messages.length) return true;
|
|
30
30
|
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// Log all workstreams we found for debugging
|
|
43
|
-
console.log("[isInProgress] Workstreams found:", Array.from(workstreamMessages.keys()));
|
|
44
|
-
|
|
45
|
-
// If there's only one workstream and it's not "main", we should treat it as the main one
|
|
46
|
-
// This handles cases where a conversation might not have an explicit main workstream
|
|
47
|
-
if (workstreamMessages.size === 1 && !workstreamMessages.has("main")) {
|
|
48
|
-
const onlyWorkstreamId = workstreamMessages.keys().next().value || "unknown";
|
|
49
|
-
console.log(`[isInProgress] Only one workstream found (${onlyWorkstreamId}), treating as main`);
|
|
50
|
-
|
|
51
|
-
const onlyWorkstreamMsgs = workstreamMessages.get(onlyWorkstreamId)!;
|
|
52
|
-
const lastMessage = onlyWorkstreamMsgs[onlyWorkstreamMsgs.length - 1];
|
|
53
|
-
|
|
54
|
-
console.log(`[isInProgress] Last message type in only workstream: ${lastMessage.type}`);
|
|
55
|
-
|
|
56
|
-
// Check if this single workstream is completed
|
|
57
|
-
if (!DONE_STATES.includes(
|
|
58
|
-
lastMessage.type
|
|
59
|
-
)) {
|
|
60
|
-
console.log("[isInProgress] Only workstream is still in progress");
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
console.log("[isInProgress] Only workstream is completed");
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Check the main workstream if it exists
|
|
69
|
-
if (workstreamMessages.has("main")) {
|
|
70
|
-
const mainWorkstreamMsgs = workstreamMessages.get("main")!;
|
|
71
|
-
|
|
72
|
-
// If there are no messages in the main workstream, the conversation is still in progress
|
|
73
|
-
if (mainWorkstreamMsgs.length === 0) {
|
|
74
|
-
console.log("[isInProgress] Main workstream exists but has no messages, still in progress");
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Check if the main workstream is completed
|
|
79
|
-
const lastMainMessage = mainWorkstreamMsgs[mainWorkstreamMsgs.length - 1];
|
|
80
|
-
console.log(`[isInProgress] Last message type in main workstream: ${lastMainMessage.type}`);
|
|
81
|
-
|
|
82
|
-
if (!DONE_STATES.includes(
|
|
83
|
-
lastMainMessage.type
|
|
84
|
-
)) {
|
|
85
|
-
console.log("[isInProgress] Main workstream is still in progress");
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
console.log("[isInProgress] Main workstream is completed");
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// If we get here, there are multiple workstreams but no "main" workstream
|
|
94
|
-
// We'll keep the conversation active if any workstream is still active
|
|
95
|
-
console.log("[isInProgress] Multiple workstreams but no main, checking if any are still active");
|
|
96
|
-
|
|
97
|
-
for (const [workstreamId, msgs] of workstreamMessages.entries()) {
|
|
98
|
-
if (msgs.length > 0) {
|
|
99
|
-
const lastMessage = msgs[msgs.length - 1];
|
|
100
|
-
if (!DONE_STATES.includes(
|
|
101
|
-
lastMessage.type
|
|
102
|
-
)) {
|
|
103
|
-
console.log(`[isInProgress] Workstream ${workstreamId} is still active`);
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
31
|
+
// Only the main workstream determines whether the conversation is in progress.
|
|
32
|
+
// Child workstream COMPLETE/IDLE messages must not flip this flag.
|
|
33
|
+
const mainMessages = messages.filter(m => getWorkstreamId(m) === 'main');
|
|
34
|
+
|
|
35
|
+
// If there are no main workstream messages yet, check if there's exactly one
|
|
36
|
+
// workstream — treat it as main (handles single-workstream conversations).
|
|
37
|
+
if (mainMessages.length === 0) {
|
|
38
|
+
const lastMessage = messages[messages.length - 1];
|
|
39
|
+
return !DONE_STATES.includes(lastMessage.type);
|
|
107
40
|
}
|
|
108
41
|
|
|
109
|
-
|
|
110
|
-
return
|
|
42
|
+
const lastMainMessage = mainMessages[mainMessages.length - 1];
|
|
43
|
+
return !DONE_STATES.includes(lastMainMessage.type);
|
|
111
44
|
}
|
|
112
45
|
|
|
113
46
|
export const formatRelative = (ts: number | string) =>
|
|
114
47
|
typeof ts === "number" ? dayjs(ts).fromNow() : dayjs(new Date(ts)).fromNow();
|
|
115
48
|
|
|
49
|
+
function getTimestampMs(timestamp: number | string): number {
|
|
50
|
+
return typeof timestamp === "number" ? timestamp : new Date(timestamp).getTime();
|
|
51
|
+
}
|
|
52
|
+
|
|
116
53
|
/**
|
|
117
54
|
* Extract the workstream ID from a message
|
|
118
55
|
* @param message The agent message to analyze
|
|
@@ -137,6 +74,65 @@ export function getWorkstreamId(message: AgentMessage): string {
|
|
|
137
74
|
return "main";
|
|
138
75
|
}
|
|
139
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Returns the message buckets used by the sliding conversation view.
|
|
79
|
+
* Generic thinking should only appear when it is still the newest relevant activity.
|
|
80
|
+
*/
|
|
81
|
+
export function getSlidingViewMessageBuckets(
|
|
82
|
+
messages: AgentMessage[],
|
|
83
|
+
isCompleted: boolean,
|
|
84
|
+
hasStreaming: boolean,
|
|
85
|
+
): { importantMessages: AgentMessage[]; recentThinking: AgentMessage[] } {
|
|
86
|
+
const latestUserQuestionTimestamp = messages.reduce((max, msg) => {
|
|
87
|
+
if (msg.type !== AgentMessageType.QUESTION) return max;
|
|
88
|
+
return Math.max(max, getTimestampMs(msg.timestamp));
|
|
89
|
+
}, -Infinity);
|
|
90
|
+
|
|
91
|
+
const importantMessages = messages.filter((msg) =>
|
|
92
|
+
msg.type === AgentMessageType.ANSWER ||
|
|
93
|
+
msg.type === AgentMessageType.QUESTION ||
|
|
94
|
+
msg.type === AgentMessageType.COMPLETE ||
|
|
95
|
+
msg.type === AgentMessageType.IDLE ||
|
|
96
|
+
msg.type === AgentMessageType.REQUEST_INPUT ||
|
|
97
|
+
msg.type === AgentMessageType.TERMINATED ||
|
|
98
|
+
msg.type === AgentMessageType.ERROR ||
|
|
99
|
+
(msg.type === AgentMessageType.THOUGHT &&
|
|
100
|
+
(msg.details?.tool || msg.details?.tools || msg.details?.streamed || msg.details?.display_role === "tool_preamble"))
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const latestImportantTimestamp = importantMessages.reduce((max, msg) => {
|
|
104
|
+
return Math.max(max, getTimestampMs(msg.timestamp));
|
|
105
|
+
}, -Infinity);
|
|
106
|
+
|
|
107
|
+
const recentThinking = !isCompleted && !hasStreaming
|
|
108
|
+
? messages
|
|
109
|
+
.filter((msg) =>
|
|
110
|
+
msg.type === AgentMessageType.UPDATE ||
|
|
111
|
+
msg.type === AgentMessageType.PLAN ||
|
|
112
|
+
(msg.type === AgentMessageType.THOUGHT &&
|
|
113
|
+
!msg.details?.tool &&
|
|
114
|
+
!msg.details?.tools &&
|
|
115
|
+
!msg.details?.streamed &&
|
|
116
|
+
msg.details?.display_role !== "tool_preamble"))
|
|
117
|
+
.filter((msg) => {
|
|
118
|
+
const timestamp = getTimestampMs(msg.timestamp);
|
|
119
|
+
|
|
120
|
+
if (Number.isFinite(latestUserQuestionTimestamp) && timestamp < latestUserQuestionTimestamp) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (Number.isFinite(latestImportantTimestamp) && timestamp < latestImportantTimestamp) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return true;
|
|
129
|
+
})
|
|
130
|
+
.slice(-1)
|
|
131
|
+
: [];
|
|
132
|
+
|
|
133
|
+
return { importantMessages, recentThinking };
|
|
134
|
+
}
|
|
135
|
+
|
|
140
136
|
/**
|
|
141
137
|
* Get a map of workstream IDs to their completion status
|
|
142
138
|
* @param messages List of agent messages
|
|
@@ -154,7 +150,8 @@ export function getWorkstreamStatusMap(messages: AgentMessage[]): Map<string, "p
|
|
|
154
150
|
// Initialize all workstreams as pending
|
|
155
151
|
statusMap.set(workstreamId, "pending");
|
|
156
152
|
}
|
|
157
|
-
workstreamMessages.get(workstreamId)
|
|
153
|
+
const wsMessages = workstreamMessages.get(workstreamId);
|
|
154
|
+
wsMessages?.push(message);
|
|
158
155
|
});
|
|
159
156
|
|
|
160
157
|
// Log all workstreams found
|
|
@@ -195,10 +192,10 @@ export function getWorkstreamStatusMap(messages: AgentMessage[]): Map<string, "p
|
|
|
195
192
|
// Helper function to get conversation URL - used by other components
|
|
196
193
|
export async function getConversationUrl(
|
|
197
194
|
vertesia: VertesiaClient,
|
|
198
|
-
|
|
195
|
+
agentRunId: string,
|
|
199
196
|
): Promise<string> {
|
|
200
|
-
return vertesia.
|
|
201
|
-
.
|
|
197
|
+
return vertesia.agents
|
|
198
|
+
.getArtifactUrl(agentRunId, 'conversation.json')
|
|
202
199
|
.then((r) => r.url);
|
|
203
200
|
}
|
|
204
201
|
|
|
@@ -218,6 +215,100 @@ export interface StreamingData {
|
|
|
218
215
|
workstreamId?: string;
|
|
219
216
|
isComplete?: boolean;
|
|
220
217
|
startTimestamp: number;
|
|
218
|
+
activityId?: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
function normalizeComparableText(text: unknown): string | undefined {
|
|
222
|
+
if (typeof text !== "string") return undefined;
|
|
223
|
+
const normalized = text.replace(/\r\n/g, "\n").trim();
|
|
224
|
+
return normalized || undefined;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
function getMessageComparableText(message: AgentMessage): string | undefined {
|
|
228
|
+
return normalizeComparableText(message.message);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function isStreamReplacedByMessage(
|
|
232
|
+
streaming: StreamingData,
|
|
233
|
+
messages: AgentMessage[],
|
|
234
|
+
): boolean {
|
|
235
|
+
const streamingText = normalizeComparableText(streaming.text);
|
|
236
|
+
if (!streamingText) return false;
|
|
237
|
+
|
|
238
|
+
const streamWorkstreamId = streaming.workstreamId || "main";
|
|
239
|
+
|
|
240
|
+
return messages.some((message) => {
|
|
241
|
+
const messageTimestamp = getTimestampMs(message.timestamp);
|
|
242
|
+
if (messageTimestamp < streaming.startTimestamp) return false;
|
|
243
|
+
if (getWorkstreamId(message) !== streamWorkstreamId) return false;
|
|
244
|
+
|
|
245
|
+
if (
|
|
246
|
+
streaming.activityId &&
|
|
247
|
+
message.details?.activity_id === streaming.activityId
|
|
248
|
+
) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (
|
|
253
|
+
message.type !== AgentMessageType.THOUGHT &&
|
|
254
|
+
message.type !== AgentMessageType.ANSWER &&
|
|
255
|
+
message.type !== AgentMessageType.COMPLETE &&
|
|
256
|
+
message.type !== AgentMessageType.IDLE
|
|
257
|
+
) {
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (!message.details?.streamed) return false;
|
|
262
|
+
|
|
263
|
+
return getMessageComparableText(message) === streamingText;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export function shouldCollapseAdjacentRenderedMessage(
|
|
268
|
+
previous: AgentMessage,
|
|
269
|
+
current: AgentMessage,
|
|
270
|
+
): boolean {
|
|
271
|
+
if (getWorkstreamId(previous) !== getWorkstreamId(current)) return false;
|
|
272
|
+
|
|
273
|
+
const previousText = getMessageComparableText(previous);
|
|
274
|
+
const currentText = getMessageComparableText(current);
|
|
275
|
+
if (!previousText || previousText !== currentText) return false;
|
|
276
|
+
|
|
277
|
+
const previousTimestamp = getTimestampMs(previous.timestamp);
|
|
278
|
+
const currentTimestamp = getTimestampMs(current.timestamp);
|
|
279
|
+
if (currentTimestamp - previousTimestamp > 10_000) return false;
|
|
280
|
+
|
|
281
|
+
if (
|
|
282
|
+
previous.type === AgentMessageType.ANSWER &&
|
|
283
|
+
(current.type === AgentMessageType.COMPLETE || current.type === AgentMessageType.IDLE)
|
|
284
|
+
) {
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (
|
|
289
|
+
previous.type === AgentMessageType.THOUGHT &&
|
|
290
|
+
(current.type === AgentMessageType.ANSWER ||
|
|
291
|
+
current.type === AgentMessageType.COMPLETE ||
|
|
292
|
+
current.type === AgentMessageType.IDLE) &&
|
|
293
|
+
(previous.details?.streamed || current.details?.streamed)
|
|
294
|
+
) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (
|
|
299
|
+
previous.type === current.type &&
|
|
300
|
+
(previous.details?.streamed || current.details?.streamed) &&
|
|
301
|
+
(
|
|
302
|
+
current.type === AgentMessageType.THOUGHT ||
|
|
303
|
+
current.type === AgentMessageType.ANSWER ||
|
|
304
|
+
current.type === AgentMessageType.COMPLETE ||
|
|
305
|
+
current.type === AgentMessageType.IDLE
|
|
306
|
+
)
|
|
307
|
+
) {
|
|
308
|
+
return true;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return false;
|
|
221
312
|
}
|
|
222
313
|
|
|
223
314
|
/**
|
|
@@ -240,6 +331,26 @@ export function isToolCallMessage(message: AgentMessage): boolean {
|
|
|
240
331
|
return message.type === AgentMessageType.THOUGHT && !!message.details?.tool;
|
|
241
332
|
}
|
|
242
333
|
|
|
334
|
+
function isToolPreambleMessage(message: AgentMessage): boolean {
|
|
335
|
+
const details = message.details as { display_role?: string } | undefined;
|
|
336
|
+
return message.type === AgentMessageType.THOUGHT && details?.display_role === "tool_preamble";
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Check if a message should be rendered as part of tool activity.
|
|
341
|
+
* Includes concrete tool calls plus tool preambles emitted before tool_use.
|
|
342
|
+
*/
|
|
343
|
+
export function isToolActivityMessage(message: AgentMessage): boolean {
|
|
344
|
+
if (isToolCallMessage(message)) return true;
|
|
345
|
+
if (message.type !== AgentMessageType.THOUGHT) return false;
|
|
346
|
+
|
|
347
|
+
const details = message.details as { display_role?: string; tools?: unknown } | undefined;
|
|
348
|
+
if (isToolPreambleMessage(message)) return true;
|
|
349
|
+
if (Array.isArray(details?.tools) && details.tools.length > 0) return true;
|
|
350
|
+
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
|
|
243
354
|
/**
|
|
244
355
|
* Get the tool_run_id from a message's details, if present
|
|
245
356
|
*/
|
|
@@ -285,7 +396,7 @@ export function groupConsecutiveToolCalls(messages: AgentMessage[]): MessageGrou
|
|
|
285
396
|
|
|
286
397
|
const flushToolGroup = () => {
|
|
287
398
|
if (currentToolGroup.length > 0) {
|
|
288
|
-
if (currentToolGroup.length === 1) {
|
|
399
|
+
if (currentToolGroup.length === 1 && !isToolPreambleMessage(currentToolGroup[0])) {
|
|
289
400
|
// Single tool call - no need to group
|
|
290
401
|
groups.push({ type: 'single', message: currentToolGroup[0] });
|
|
291
402
|
} else {
|
|
@@ -301,7 +412,7 @@ export function groupConsecutiveToolCalls(messages: AgentMessage[]): MessageGrou
|
|
|
301
412
|
};
|
|
302
413
|
|
|
303
414
|
for (const message of messages) {
|
|
304
|
-
if (
|
|
415
|
+
if (isToolActivityMessage(message)) {
|
|
305
416
|
currentToolGroup.push(message);
|
|
306
417
|
} else {
|
|
307
418
|
// Flush any pending tool group before adding non-tool message
|
|
@@ -316,13 +427,6 @@ export function groupConsecutiveToolCalls(messages: AgentMessage[]): MessageGrou
|
|
|
316
427
|
return groups;
|
|
317
428
|
}
|
|
318
429
|
|
|
319
|
-
/**
|
|
320
|
-
* Helper to get timestamp as number
|
|
321
|
-
*/
|
|
322
|
-
function getTimestampMs(timestamp: number | string): number {
|
|
323
|
-
return typeof timestamp === "number" ? timestamp : new Date(timestamp).getTime();
|
|
324
|
-
}
|
|
325
|
-
|
|
326
430
|
/**
|
|
327
431
|
* Group messages with streaming messages interleaved in chronological order
|
|
328
432
|
* Messages with the same tool_iteration are grouped together (parallel tool calls)
|
|
@@ -376,8 +480,8 @@ export function groupMessagesWithStreaming(
|
|
|
376
480
|
firstTimestamp: getTimestampMs(message.timestamp),
|
|
377
481
|
});
|
|
378
482
|
}
|
|
379
|
-
activityGroups.get(activityGroupId)
|
|
380
|
-
} else if (
|
|
483
|
+
activityGroups.get(activityGroupId)?.messages.push(message);
|
|
484
|
+
} else if (isToolActivityMessage(message)) {
|
|
381
485
|
const toolIteration = getToolIteration(message);
|
|
382
486
|
const toolRunId = getToolRunId(message);
|
|
383
487
|
|
|
@@ -389,7 +493,7 @@ export function groupMessagesWithStreaming(
|
|
|
389
493
|
firstTimestamp: getTimestampMs(message.timestamp)
|
|
390
494
|
});
|
|
391
495
|
}
|
|
392
|
-
iterationGroups.get(toolIteration)
|
|
496
|
+
iterationGroups.get(toolIteration)?.messages.push(message);
|
|
393
497
|
} else if (toolRunId) {
|
|
394
498
|
// Fallback: group by tool_run_id if no iteration
|
|
395
499
|
if (!toolRunGroups.has(toolRunId)) {
|
|
@@ -398,7 +502,7 @@ export function groupMessagesWithStreaming(
|
|
|
398
502
|
firstTimestamp: getTimestampMs(message.timestamp)
|
|
399
503
|
});
|
|
400
504
|
}
|
|
401
|
-
toolRunGroups.get(toolRunId)
|
|
505
|
+
toolRunGroups.get(toolRunId)?.messages.push(message);
|
|
402
506
|
} else {
|
|
403
507
|
// No tool_iteration or tool_run_id - will use consecutive grouping
|
|
404
508
|
standaloneMessages.push(message);
|
|
@@ -461,6 +565,7 @@ export function groupMessagesWithStreaming(
|
|
|
461
565
|
streamingMessages.forEach((data, streamingId) => {
|
|
462
566
|
// Skip empty streaming messages
|
|
463
567
|
if (!data.text) return;
|
|
568
|
+
if (isStreamReplacedByMessage(data, messages)) return;
|
|
464
569
|
|
|
465
570
|
// Filter by workstream if specified
|
|
466
571
|
if (activeWorkstream && activeWorkstream !== "all") {
|
|
@@ -496,7 +601,7 @@ export function groupMessagesWithStreaming(
|
|
|
496
601
|
|
|
497
602
|
const flushToolGroup = () => {
|
|
498
603
|
if (currentToolGroup.length > 0) {
|
|
499
|
-
if (currentToolGroup.length === 1) {
|
|
604
|
+
if (currentToolGroup.length === 1 && !isToolPreambleMessage(currentToolGroup[0])) {
|
|
500
605
|
groups.push({ type: 'single', message: currentToolGroup[0] });
|
|
501
606
|
} else {
|
|
502
607
|
groups.push({
|
|
@@ -575,7 +680,7 @@ export function groupMessagesWithStreaming(
|
|
|
575
680
|
toolRunId: item.toolRunId,
|
|
576
681
|
toolStatus: latestStatus
|
|
577
682
|
});
|
|
578
|
-
} else if (
|
|
683
|
+
} else if (isToolActivityMessage(item.message)) {
|
|
579
684
|
// Standalone tool message - use consecutive grouping
|
|
580
685
|
currentToolGroup.push(item.message);
|
|
581
686
|
} else {
|
|
@@ -2,6 +2,7 @@ import { AgentMessage, AgentMessageType } from "@vertesia/common";
|
|
|
2
2
|
import { Button, cn } from "@vertesia/ui/core";
|
|
3
3
|
import { EyeIcon, EyeOffIcon } from "lucide-react";
|
|
4
4
|
import React, { useEffect, useRef, useState } from "react";
|
|
5
|
+
import { useUITranslation } from '../../../i18n/index.js';
|
|
5
6
|
import { AnimatedThinkingDots, PulsatingCircle, PulsingMessageLoader } from "./AnimatedThinkingDots";
|
|
6
7
|
import MessageItem from "./ModernAgentOutput/MessageItem";
|
|
7
8
|
import { ThinkingMessages } from "./WaitingMessages";
|
|
@@ -28,6 +29,7 @@ export function SlidingThinkingIndicator({
|
|
|
28
29
|
showDetails: externalShowDetails,
|
|
29
30
|
onShowDetailsChange,
|
|
30
31
|
}: SlidingThinkingIndicatorProps) {
|
|
32
|
+
const { t } = useUITranslation();
|
|
31
33
|
// Use external state if provided, otherwise use internal state
|
|
32
34
|
const [internalShowDetails, setInternalShowDetails] = useState(false);
|
|
33
35
|
|
|
@@ -275,15 +277,15 @@ export function SlidingThinkingIndicator({
|
|
|
275
277
|
variant="ghost"
|
|
276
278
|
onClick={() => setShowDetails(!showDetails)}
|
|
277
279
|
className="text-slate-500 hover:text-slate-700 flex items-center gap-1 text-xs"
|
|
278
|
-
title={showDetails ?
|
|
280
|
+
title={showDetails ? t('agent.hideThinkingDetails') : t('agent.showAllMessages')}
|
|
279
281
|
>
|
|
280
282
|
{showDetails ? (
|
|
281
283
|
<>
|
|
282
|
-
<EyeOffIcon className="h-3 w-3" />
|
|
284
|
+
<EyeOffIcon className="h-3 w-3" /> {t('agent.hideDetails')}
|
|
283
285
|
</>
|
|
284
286
|
) : (
|
|
285
287
|
<>
|
|
286
|
-
<EyeIcon className="h-3 w-3" />
|
|
288
|
+
<EyeIcon className="h-3 w-3" /> {t('agent.showDetails')}
|
|
287
289
|
</>
|
|
288
290
|
)}
|
|
289
291
|
</Button>
|