@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { Bot, Cpu, FileTextIcon, SendIcon, UploadIcon, XIcon } from "lucide-react";
|
|
4
4
|
import { useUserSession } from "@vertesia/ui/session";
|
|
@@ -10,13 +10,13 @@ import { ImageLightboxProvider } from "./ImageLightbox";
|
|
|
10
10
|
import AllMessagesMixed from "./ModernAgentOutput/AllMessagesMixed";
|
|
11
11
|
import Header from "./ModernAgentOutput/Header";
|
|
12
12
|
import MessageInput from "./ModernAgentOutput/MessageInput";
|
|
13
|
-
import { getWorkstreamId } from "./ModernAgentOutput/utils";
|
|
13
|
+
import { getConversationUrl, getWorkstreamId } from "./ModernAgentOutput/utils";
|
|
14
14
|
import { ThinkingMessages } from "./WaitingMessages";
|
|
15
|
-
import InlineSlidingPlanPanel from "./ModernAgentOutput/InlineSlidingPlanPanel";
|
|
16
15
|
import { SkillWidgetProvider } from "./SkillWidgetProvider";
|
|
17
16
|
import { ArtifactUrlCacheProvider } from "./useArtifactUrlCache.js";
|
|
17
|
+
import { useUITranslation } from "../../../i18n/index.js";
|
|
18
18
|
import { VegaLiteChart } from "./VegaLiteChart";
|
|
19
|
-
import {
|
|
19
|
+
import { AgentRightPanel } from "./AgentRightPanel.js";
|
|
20
20
|
import { useAgentStream } from "./hooks/useAgentStream.js";
|
|
21
21
|
import { useAgentPlans } from "./hooks/useAgentPlans.js";
|
|
22
22
|
import { useDocumentPanel } from "./hooks/useDocumentPanel.js";
|
|
@@ -58,19 +58,12 @@ function printElementToPdf(sourceElement, title) {
|
|
|
58
58
|
return true;
|
|
59
59
|
}
|
|
60
60
|
export function ModernAgentConversation(props) {
|
|
61
|
-
const {
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
const execRun = "runId" in run
|
|
65
|
-
? run
|
|
66
|
-
: {
|
|
67
|
-
runId: run.run_id,
|
|
68
|
-
workflowId: run.workflow_id,
|
|
69
|
-
};
|
|
70
|
-
return (_jsx(SkillWidgetProvider, { children: _jsx(ModernAgentConversationInner, { ...props, run: execRun }) }));
|
|
61
|
+
const { agentRunId, startWorkflow } = props;
|
|
62
|
+
if (agentRunId) {
|
|
63
|
+
return (_jsx(SkillWidgetProvider, { children: _jsx(ModernAgentConversationInner, { ...props, agentRunId: agentRunId }) }));
|
|
71
64
|
}
|
|
72
65
|
else if (startWorkflow) {
|
|
73
|
-
// If we have startWorkflow capability but no
|
|
66
|
+
// If we have startWorkflow capability but no agentRunId yet
|
|
74
67
|
return _jsx(StartWorkflowView, { ...props });
|
|
75
68
|
}
|
|
76
69
|
else {
|
|
@@ -80,19 +73,24 @@ export function ModernAgentConversation(props) {
|
|
|
80
73
|
}
|
|
81
74
|
// Empty state when no agent is running
|
|
82
75
|
function EmptyState() {
|
|
83
|
-
|
|
76
|
+
const { t } = useUITranslation();
|
|
77
|
+
return (_jsxs(MessageBox, { status: "info", icon: _jsx(Bot, { className: "size-16 text-muted mb-4" }), children: [_jsx("div", { className: "text-base font-medium text-muted", children: t('agent.noAgentRunning') }), _jsx("div", { className: "mt-3 text-sm text-muted", children: t('agent.selectInteraction') })] }));
|
|
84
78
|
}
|
|
85
79
|
// Start workflow view - allows initiating a new agent conversation
|
|
86
80
|
// Files can be staged locally before workflow starts, then uploaded when the workflow is created
|
|
87
|
-
function StartWorkflowView({ initialMessage, startWorkflow, onClose, isModal = false, fullWidth = false, placeholder
|
|
81
|
+
function StartWorkflowView({ initialMessage, startWorkflow, onClose, isModal = false, fullWidth = false, placeholder, startButtonText, title,
|
|
88
82
|
// Attachment callback - used to include existing document attachments in the first message
|
|
89
83
|
getAttachedDocs, onAttachmentsSent,
|
|
90
84
|
// File upload props
|
|
91
|
-
acceptedFileTypes
|
|
85
|
+
acceptedFileTypes, maxFiles = 5, }) {
|
|
86
|
+
const { t } = useUITranslation();
|
|
87
|
+
const resolvedPlaceholder = placeholder ?? t('agent.typeYourMessage');
|
|
88
|
+
const resolvedStartButtonText = startButtonText ?? t('agent.startAgent');
|
|
89
|
+
const resolvedTitle = title ?? t('agent.startNewConversation');
|
|
92
90
|
const { client } = useUserSession();
|
|
93
91
|
const [inputValue, setInputValue] = useState("");
|
|
94
92
|
const [isSending, setIsSending] = useState(false);
|
|
95
|
-
const [
|
|
93
|
+
const [startedAgentRunId, setStartedAgentRunId] = useState(null);
|
|
96
94
|
const toast = useToast();
|
|
97
95
|
const inputRef = useRef(null);
|
|
98
96
|
const fileInputRef = useRef(null);
|
|
@@ -167,7 +165,7 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
167
165
|
// Reset plan panel state when starting a new agent
|
|
168
166
|
sessionStorage.removeItem("plan-panel-shown");
|
|
169
167
|
toast({
|
|
170
|
-
title: stagedFiles.length > 0 ?
|
|
168
|
+
title: stagedFiles.length > 0 ? t('agent.startingAgentUploading') : t('agent.startingAgent'),
|
|
171
169
|
status: "info",
|
|
172
170
|
duration: 3000,
|
|
173
171
|
});
|
|
@@ -190,15 +188,16 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
190
188
|
}
|
|
191
189
|
const newRun = await startWorkflow(messageContent);
|
|
192
190
|
if (newRun) {
|
|
193
|
-
|
|
191
|
+
const agentId = newRun.agent_run_id;
|
|
192
|
+
// Upload staged files to the new run's artifact space and signal agent
|
|
194
193
|
const uploadedFiles = [];
|
|
195
194
|
if (stagedFiles.length > 0) {
|
|
196
195
|
for (const file of stagedFiles) {
|
|
197
196
|
try {
|
|
198
197
|
const artifactPath = `files/${file.name}`;
|
|
199
|
-
await client.
|
|
200
|
-
// Signal
|
|
201
|
-
await client.
|
|
198
|
+
await client.agents.uploadArtifact(agentId, artifactPath, file);
|
|
199
|
+
// Signal agent that file was uploaded
|
|
200
|
+
await client.agents.sendSignal(agentId, "FileUploaded", {
|
|
202
201
|
id: `file-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
203
202
|
name: file.name,
|
|
204
203
|
content_type: file.type || 'application/octet-stream',
|
|
@@ -215,7 +214,7 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
215
214
|
// Send a follow-up message to notify the agent that all files are ready
|
|
216
215
|
if (uploadedFiles.length > 0) {
|
|
217
216
|
try {
|
|
218
|
-
await client.
|
|
217
|
+
await client.agents.sendSignal(agentId, "UserInput", {
|
|
219
218
|
message: `[Files Ready] All ${uploadedFiles.length} file(s) have been uploaded and are now available: ${uploadedFiles.join(', ')}. You can now process them.`,
|
|
220
219
|
metadata: {
|
|
221
220
|
type: 'files_ready',
|
|
@@ -231,13 +230,10 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
231
230
|
}
|
|
232
231
|
// Clear attachments after successful start
|
|
233
232
|
onAttachmentsSent?.();
|
|
234
|
-
|
|
235
|
-
runId: newRun.run_id,
|
|
236
|
-
workflowId: newRun.workflow_id,
|
|
237
|
-
});
|
|
233
|
+
setStartedAgentRunId(agentId);
|
|
238
234
|
setInputValue("");
|
|
239
235
|
toast({
|
|
240
|
-
title:
|
|
236
|
+
title: t('agent.agentStarted'),
|
|
241
237
|
status: "success",
|
|
242
238
|
duration: 3000,
|
|
243
239
|
});
|
|
@@ -245,10 +241,10 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
245
241
|
}
|
|
246
242
|
catch (err) {
|
|
247
243
|
toast({
|
|
248
|
-
title:
|
|
244
|
+
title: t('agent.errorStarting'),
|
|
249
245
|
status: "error",
|
|
250
246
|
duration: 3000,
|
|
251
|
-
description: err instanceof Error ? err.message :
|
|
247
|
+
description: err instanceof Error ? err.message : t('agent.unknownError'),
|
|
252
248
|
});
|
|
253
249
|
}
|
|
254
250
|
finally {
|
|
@@ -274,15 +270,15 @@ acceptedFileTypes = ".pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.png,.jpg,.jpeg,.gif,.
|
|
|
274
270
|
adjustTextareaHeight();
|
|
275
271
|
}, [inputValue, adjustTextareaHeight]);
|
|
276
272
|
// If a run has been started, show the conversation
|
|
277
|
-
if (
|
|
278
|
-
return (_jsx(ModernAgentConversationInner, { onClose, isModal, initialMessage, placeholder,
|
|
273
|
+
if (startedAgentRunId) {
|
|
274
|
+
return (_jsx(ModernAgentConversationInner, { onClose, isModal, initialMessage, placeholder, agentRunId: startedAgentRunId, title: title }));
|
|
279
275
|
}
|
|
280
|
-
return (_jsx("div", { className: "flex flex-col h-full bg-background items-center", children: _jsxs("div", { className: cn("flex flex-col h-full w-full overflow-hidden border-0 relative", fullWidth ? "" : "max-w-4xl"), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info-background z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" }), _jsxs("div", { className: "flex items-center justify-between py-2 px-3 border-b border-border bg-background", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "font-medium text-sm text-foreground", children:
|
|
281
|
-
?
|
|
282
|
-
: '
|
|
276
|
+
return (_jsx("div", { className: "flex flex-col h-full bg-background items-center", children: _jsxs("div", { className: cn("flex flex-col h-full w-full overflow-hidden border-0 relative", fullWidth ? "" : "max-w-4xl"), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info-background z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" }), _jsxs("div", { className: "flex items-center justify-between py-2 px-3 border-b border-border bg-background", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "font-medium text-sm text-foreground", children: resolvedTitle })] }), onClose && !isModal && (_jsx(Button, { size: "xs", variant: "ghost", onClick: onClose, title: t('agent.close'), className: "text-muted hover:text-foreground", children: _jsx(XIcon, { className: "size-4" }) }))] }), _jsx("div", { className: "flex-1 overflow-y-auto bg-background flex flex-col items-center justify-end", children: _jsxs("div", { className: "w-full px-4 py-6", children: [initialMessage && (_jsx("div", { className: "px-4 py-3 mb-4 bg-info-background border-l-2 border-info text-info", children: initialMessage })), _jsxs("div", { className: "bg-card p-4 border-l-2 border-info", children: [_jsx("div", { className: "text-base text-foreground font-medium", children: t('agent.enterMessage') }), _jsx("div", { className: "mt-3 text-sm text-muted", children: t('agent.typeQuestionBelow', { buttonText: resolvedStartButtonText }) })] })] }) }), _jsxs("div", { className: "py-3 px-3 border-t border-border bg-background", children: [stagedFiles.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-3", children: stagedFiles.map((file, index) => (_jsxs("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-attention/10 text-attention rounded-md text-sm", children: [_jsx(FileTextIcon, { className: "size-3.5" }), _jsx("span", { className: "max-w-[120px] truncate", children: file.name }), _jsx("span", { className: "text-xs opacity-70", children: t('agent.staged') }), _jsx("button", { onClick: () => removeStagedFile(index), className: "ml-1 p-0.5 hover:bg-attention/20 rounded", children: _jsx(XIcon, { className: "size-3" }) })] }, `${file.name}-${index}`))) })), _jsx("div", { className: "flex gap-2 mb-2", children: _jsxs(Button, { variant: "outline", size: "sm", onClick: () => fileInputRef.current?.click(), disabled: isSending || stagedFiles.length >= maxFiles, className: "text-xs", children: [_jsx(UploadIcon, { className: "size-3.5 mr-1.5" }), t('agent.upload')] }) }), _jsxs("div", { className: "flex items-end gap-2", children: [_jsx("textarea", { ref: inputRef, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, placeholder: resolvedPlaceholder, disabled: isSending, rows: 2, className: "flex-1 py-2.5 px-3 text-sm border border-border bg-background text-foreground focus:border-ring focus:outline-none focus:ring-1 focus:ring-ring rounded-md resize-none overflow-hidden", style: { minHeight: '60px', maxHeight: '200px' } }), _jsxs(Button, { onClick: startWorkflowWithMessage, disabled: !inputValue.trim() || isSending, className: "px-3 py-2.5 text-xs rounded-md transition-colors", children: [isSending ? (_jsx(Spinner, { size: "sm", className: "mr-1.5" })) : (_jsx(SendIcon, { className: "size-3.5 mr-1.5" })), resolvedStartButtonText] })] }), _jsx("div", { className: "text-xs text-muted mt-2 text-center", children: stagedFiles.length > 0
|
|
277
|
+
? t('agent.filesStagedCount', { count: stagedFiles.length })
|
|
278
|
+
: t('agent.enterToSend') })] })] }) }));
|
|
283
279
|
}
|
|
284
280
|
// Inner component that handles the agent conversation - similar to ModernAgentOutput
|
|
285
|
-
function ModernAgentConversationInner({
|
|
281
|
+
function ModernAgentConversationInner({ agentRunId, title, interactive = true, onClose, isModal = false, fullWidth = false, placeholder, resetWorkflow, onRestart, onFork, onShowDetails,
|
|
286
282
|
// File upload props (onFilesSelected handled internally by handleFileUpload)
|
|
287
283
|
uploadedFiles, onRemoveFile, acceptedFileTypes, maxFiles,
|
|
288
284
|
// Document search props
|
|
@@ -290,7 +286,7 @@ renderDocumentSearch, selectedDocuments, onRemoveDocument,
|
|
|
290
286
|
// Object linking
|
|
291
287
|
hideObjectLinking,
|
|
292
288
|
// Section visibility
|
|
293
|
-
hideHeader, hideMessageInput, hidePlanPanel, hideWorkstreamTabs, hideFileUpload, hideDocumentPanel,
|
|
289
|
+
hideHeader, hideMessageInput, hidePlanPanel, hideWorkstreamTabs, showRightPanel: showRightPanelProp = true, hideFileUpload, showArtifacts = false, hideDocumentPanel: _hideDocumentPanel,
|
|
294
290
|
// Attachment callback
|
|
295
291
|
getAttachedDocs, onAttachmentsSent,
|
|
296
292
|
// Upload state
|
|
@@ -302,7 +298,7 @@ className, inputContainerClassName, inputClassName,
|
|
|
302
298
|
// Fusion fragment data
|
|
303
299
|
fusionData,
|
|
304
300
|
// External file upload API
|
|
305
|
-
fileUploadRef, onProcessingFilesChange,
|
|
301
|
+
fileUploadRef, onProcessingFilesChange, processingFiles: processingFilesProp,
|
|
306
302
|
// External plan panel API
|
|
307
303
|
onPlansChange, onWorkstreamStatusChange,
|
|
308
304
|
// External view mode control
|
|
@@ -318,21 +314,24 @@ streamingMessageClassNames,
|
|
|
318
314
|
// BatchProgressPanel className overrides
|
|
319
315
|
batchProgressPanelClassNames,
|
|
320
316
|
// AllMessagesMixed className overrides
|
|
321
|
-
workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionLinkComponent, prependFriendlyMessage, }) {
|
|
317
|
+
workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionLinkComponent, prependFriendlyMessage, payloadContent, conversationContent, conversationTab = false, }) {
|
|
318
|
+
const { t } = useUITranslation();
|
|
322
319
|
const { client } = useUserSession();
|
|
323
320
|
const toast = useToast();
|
|
321
|
+
const instanceIdRef = useRef(`mac-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
|
|
324
322
|
// ────────────────────────────────────────────
|
|
325
323
|
// Extracted hooks
|
|
326
324
|
// ────────────────────────────────────────────
|
|
327
|
-
const { messages, streamingMessages, isCompleted, debugChunkFlash, addOptimisticMessage, removeOptimisticMessages, workflowStatus, serverFileUpdates, } = useAgentStream(client,
|
|
325
|
+
const { messages, streamingMessages, isCompleted, debugChunkFlash, addOptimisticMessage, removeOptimisticMessages, workflowStatus, serverFileUpdates, } = useAgentStream(client, agentRunId);
|
|
328
326
|
const { plans, activePlanIndex, setActivePlanIndex, workstreamStatusMap, showInput, showSlidingPanel, setShowSlidingPanel, } = useAgentPlans(messages, interactive, isModal);
|
|
329
327
|
const { openDocuments, activeDocumentId, isDocPanelOpen, docRefreshKey, closeDocPanel: handleCloseDocPanel, closeDocument: handleCloseDocument, selectDocument, openDocInPanel, } = useDocumentPanel(messages);
|
|
330
|
-
const { processingFiles, hasProcessingFiles, handleFileUpload, } = useFileProcessing(client,
|
|
328
|
+
const { processingFiles, hasProcessingFiles, handleFileUpload, } = useFileProcessing(client, agentRunId, serverFileUpdates, toast);
|
|
331
329
|
// ────────────────────────────────────────────
|
|
332
330
|
// Local state (UI-only concerns)
|
|
333
331
|
// ────────────────────────────────────────────
|
|
334
332
|
const bottomRef = useRef(null);
|
|
335
333
|
const conversationRef = useRef(null);
|
|
334
|
+
const conversationLayoutRef = useRef(null);
|
|
336
335
|
const [isSending, setIsSending] = useState(false);
|
|
337
336
|
const [internalViewMode, setInternalViewMode] = useState("sliding");
|
|
338
337
|
const viewMode = controlledViewMode ?? internalViewMode;
|
|
@@ -347,19 +346,40 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
347
346
|
const [isStopping, setIsStopping] = useState(false);
|
|
348
347
|
const [thinkingMessageIndex, setThinkingMessageIndex] = useState(0);
|
|
349
348
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
349
|
+
const [activeWorkstreams, setActiveWorkstreams] = useState([]);
|
|
350
|
+
const workstreamFetchFailedRef = useRef(false);
|
|
350
351
|
const dragCounterRef = useRef(0);
|
|
351
352
|
// PERFORMANCE: Refs for values used inside useCallback to avoid re-creating the callback
|
|
352
353
|
const isSendingRef = useRef(isSending);
|
|
353
354
|
isSendingRef.current = isSending;
|
|
354
355
|
const hasProcessingFilesRef = useRef(hasProcessingFiles);
|
|
355
356
|
hasProcessingFilesRef.current = hasProcessingFiles;
|
|
356
|
-
// Derive effective workflow status
|
|
357
|
+
// Derive effective workflow status — only main workstream TERMINATED overrides API status.
|
|
357
358
|
const effectiveWorkflowStatus = useMemo(() => {
|
|
358
|
-
const
|
|
359
|
-
|
|
359
|
+
const mainMessages = messages.filter(m => (m.workstream_id || 'main') === 'main');
|
|
360
|
+
const lastMain = mainMessages[mainMessages.length - 1];
|
|
361
|
+
if (lastMain?.type === AgentMessageType.TERMINATED)
|
|
360
362
|
return "TERMINATED";
|
|
361
363
|
return workflowStatus;
|
|
362
364
|
}, [messages, workflowStatus]);
|
|
365
|
+
console.debug("[ModernAgentConversation] render", {
|
|
366
|
+
agentRunId,
|
|
367
|
+
instanceId: instanceIdRef.current,
|
|
368
|
+
messageCount: messages.length,
|
|
369
|
+
activeWorkstreams: activeWorkstreams.length,
|
|
370
|
+
});
|
|
371
|
+
useEffect(() => {
|
|
372
|
+
console.debug("[ModernAgentConversation] mount", {
|
|
373
|
+
agentRunId,
|
|
374
|
+
instanceId: instanceIdRef.current,
|
|
375
|
+
});
|
|
376
|
+
return () => {
|
|
377
|
+
console.debug("[ModernAgentConversation] unmount", {
|
|
378
|
+
agentRunId,
|
|
379
|
+
instanceId: instanceIdRef.current,
|
|
380
|
+
});
|
|
381
|
+
};
|
|
382
|
+
}, [agentRunId]);
|
|
363
383
|
// ────────────────────────────────────────────
|
|
364
384
|
// Computed values
|
|
365
385
|
// ────────────────────────────────────────────
|
|
@@ -374,6 +394,19 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
374
394
|
workstreamStatus: currentWorkstreamStatus,
|
|
375
395
|
};
|
|
376
396
|
}, [plans, activePlanIndex, workstreamStatusMap]);
|
|
397
|
+
const panelWorkstreams = useMemo(() => {
|
|
398
|
+
return activeWorkstreams.map((ws) => ({
|
|
399
|
+
workstream_id: ws.workstream_id,
|
|
400
|
+
launch_id: ws.launch_id,
|
|
401
|
+
elapsed_ms: ws.elapsed_ms,
|
|
402
|
+
deadline_ms: ws.deadline_ms,
|
|
403
|
+
remaining_ms: Math.max(0, ws.deadline_ms - ws.elapsed_ms),
|
|
404
|
+
status: ws.status,
|
|
405
|
+
phase: ws.latest_progress?.phase,
|
|
406
|
+
child_workflow_id: ws.child_workflow_id,
|
|
407
|
+
child_workflow_run_id: ws.child_workflow_run_id,
|
|
408
|
+
}));
|
|
409
|
+
}, [activeWorkstreams]);
|
|
377
410
|
// ────────────────────────────────────────────
|
|
378
411
|
// Stable callbacks
|
|
379
412
|
// ────────────────────────────────────────────
|
|
@@ -388,11 +421,58 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
388
421
|
const handleChangePlan = useCallback((index) => {
|
|
389
422
|
setActivePlanIndex(index);
|
|
390
423
|
}, [setActivePlanIndex]);
|
|
391
|
-
const
|
|
424
|
+
const [rightPanelTab, _setRightPanelTab] = useState((conversationContent || conversationTab) ? 'conversation' : 'plan');
|
|
425
|
+
const [rightPanelWidth, setRightPanelWidth] = useState(400);
|
|
426
|
+
const [isRightPanelResizing, setIsRightPanelResizing] = useState(false);
|
|
427
|
+
const isRightPanelVisible = showRightPanelProp && (showSlidingPanel
|
|
428
|
+
|| isDocPanelOpen
|
|
429
|
+
|| (!hideWorkstreamTabs && panelWorkstreams.length > 0)
|
|
430
|
+
|| !!conversationContent
|
|
431
|
+
|| conversationTab);
|
|
432
|
+
useEffect(() => {
|
|
433
|
+
if (!isRightPanelVisible && isRightPanelResizing) {
|
|
434
|
+
setIsRightPanelResizing(false);
|
|
435
|
+
}
|
|
436
|
+
}, [isRightPanelVisible, isRightPanelResizing]);
|
|
437
|
+
useEffect(() => {
|
|
438
|
+
if (!isRightPanelResizing)
|
|
439
|
+
return;
|
|
440
|
+
const minRightPanelWidth = 300;
|
|
441
|
+
const minConversationWidth = 420;
|
|
442
|
+
const handleMouseMove = (event) => {
|
|
443
|
+
const container = conversationLayoutRef.current;
|
|
444
|
+
if (!container)
|
|
445
|
+
return;
|
|
446
|
+
const containerRect = container.getBoundingClientRect();
|
|
447
|
+
const maxRightPanelWidth = Math.max(minRightPanelWidth, containerRect.width - minConversationWidth);
|
|
448
|
+
const nextWidth = containerRect.right - event.clientX;
|
|
449
|
+
const clampedWidth = Math.min(Math.max(nextWidth, minRightPanelWidth), maxRightPanelWidth);
|
|
450
|
+
setRightPanelWidth(clampedWidth);
|
|
451
|
+
};
|
|
452
|
+
const handleMouseUp = () => {
|
|
453
|
+
setIsRightPanelResizing(false);
|
|
454
|
+
};
|
|
455
|
+
window.addEventListener('mousemove', handleMouseMove);
|
|
456
|
+
window.addEventListener('mouseup', handleMouseUp);
|
|
457
|
+
document.body.style.cursor = 'col-resize';
|
|
458
|
+
document.body.style.userSelect = 'none';
|
|
459
|
+
return () => {
|
|
460
|
+
window.removeEventListener('mousemove', handleMouseMove);
|
|
461
|
+
window.removeEventListener('mouseup', handleMouseUp);
|
|
462
|
+
document.body.style.cursor = '';
|
|
463
|
+
document.body.style.userSelect = '';
|
|
464
|
+
};
|
|
465
|
+
}, [isRightPanelResizing]);
|
|
466
|
+
const handleCloseRightPanel = useCallback(() => {
|
|
392
467
|
setShowSlidingPanel(false);
|
|
393
|
-
|
|
468
|
+
handleCloseDocPanel();
|
|
469
|
+
}, [setShowSlidingPanel, handleCloseDocPanel]);
|
|
394
470
|
// Default StoreLinkComponent that opens documents in the panel
|
|
395
|
-
const internalStoreLinkComponent = useCallback(({ documentId, children }) => (_jsx("
|
|
471
|
+
const internalStoreLinkComponent = useCallback(({ href, documentId, children }) => (_jsx("a", { href: href, className: "text-info underline cursor-pointer hover:text-info/80", onClick: (e) => {
|
|
472
|
+
e.preventDefault();
|
|
473
|
+
e.stopPropagation();
|
|
474
|
+
openDocInPanel(documentId);
|
|
475
|
+
}, children: children })), [openDocInPanel]);
|
|
396
476
|
const effectiveStoreLinkComponent = StoreLinkComponent ?? internalStoreLinkComponent;
|
|
397
477
|
// ────────────────────────────────────────────
|
|
398
478
|
// Effects
|
|
@@ -425,6 +505,39 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
425
505
|
useEffect(() => {
|
|
426
506
|
onWorkstreamStatusChange?.(workstreamStatusMap);
|
|
427
507
|
}, [workstreamStatusMap, onWorkstreamStatusChange]);
|
|
508
|
+
// Poll active workstreams from backend query for right-panel visibility and details.
|
|
509
|
+
useEffect(() => {
|
|
510
|
+
const shouldPoll = !isCompleted || activeWorkstreams.length > 0;
|
|
511
|
+
if (!shouldPoll) {
|
|
512
|
+
setActiveWorkstreams((prev) => (prev.length === 0 ? prev : []));
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
let isCancelled = false;
|
|
516
|
+
const fetchActiveWorkstreams = async () => {
|
|
517
|
+
try {
|
|
518
|
+
const result = await client.agents.getActiveWorkstreams(agentRunId);
|
|
519
|
+
if (isCancelled)
|
|
520
|
+
return;
|
|
521
|
+
setActiveWorkstreams(result.running ?? []);
|
|
522
|
+
workstreamFetchFailedRef.current = false;
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
if (isCancelled)
|
|
526
|
+
return;
|
|
527
|
+
setActiveWorkstreams([]);
|
|
528
|
+
if (!workstreamFetchFailedRef.current) {
|
|
529
|
+
console.warn("Failed to fetch active workstreams:", error);
|
|
530
|
+
workstreamFetchFailedRef.current = true;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
};
|
|
534
|
+
fetchActiveWorkstreams();
|
|
535
|
+
const pollHandle = window.setInterval(fetchActiveWorkstreams, 10000);
|
|
536
|
+
return () => {
|
|
537
|
+
isCancelled = true;
|
|
538
|
+
window.clearInterval(pollHandle);
|
|
539
|
+
};
|
|
540
|
+
}, [client.agents, agentRunId, isCompleted, activeWorkstreams.length]);
|
|
428
541
|
// Notify parent when input availability is determined
|
|
429
542
|
useEffect(() => {
|
|
430
543
|
if (messages.length === 0)
|
|
@@ -453,8 +566,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
453
566
|
if (hasProcessingFilesRef.current) {
|
|
454
567
|
toast({
|
|
455
568
|
status: "warning",
|
|
456
|
-
title:
|
|
457
|
-
description:
|
|
569
|
+
title: t('agent.filesProcessing'),
|
|
570
|
+
description: t('agent.waitForFilesProcessing'),
|
|
458
571
|
duration: 3000,
|
|
459
572
|
});
|
|
460
573
|
return;
|
|
@@ -470,7 +583,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
470
583
|
const messageId = `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
471
584
|
const optimisticMessage = {
|
|
472
585
|
timestamp: Date.now(),
|
|
473
|
-
workflow_run_id:
|
|
586
|
+
workflow_run_id: agentRunId,
|
|
474
587
|
type: AgentMessageType.QUESTION,
|
|
475
588
|
message: messageContent,
|
|
476
589
|
workstream_id: "main",
|
|
@@ -482,8 +595,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
482
595
|
...contextMetadata,
|
|
483
596
|
_messageId: messageId,
|
|
484
597
|
};
|
|
485
|
-
client.
|
|
486
|
-
.sendSignal(
|
|
598
|
+
client.agents
|
|
599
|
+
.sendSignal(agentRunId, "UserInput", {
|
|
487
600
|
message: messageContent,
|
|
488
601
|
metadata,
|
|
489
602
|
})
|
|
@@ -494,24 +607,24 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
494
607
|
removeOptimisticMessages((m) => m.details?._messageId === messageId);
|
|
495
608
|
toast({
|
|
496
609
|
status: "error",
|
|
497
|
-
title:
|
|
498
|
-
description: err instanceof Error ? err.message :
|
|
610
|
+
title: t('agent.failedToSend'),
|
|
611
|
+
description: err instanceof Error ? err.message : t('agent.unknownError'),
|
|
499
612
|
duration: 3000,
|
|
500
613
|
});
|
|
501
614
|
})
|
|
502
615
|
.finally(() => {
|
|
503
616
|
setIsSending(false);
|
|
504
617
|
});
|
|
505
|
-
}, [
|
|
618
|
+
}, [agentRunId, client, toast, getAttachedDocs, getMessageContext, onAttachmentsSent, addOptimisticMessage, removeOptimisticMessages]);
|
|
506
619
|
// Drag and drop handlers for full-panel file upload
|
|
507
620
|
const handleDragEnter = useCallback((e) => {
|
|
508
621
|
e.preventDefault();
|
|
509
622
|
e.stopPropagation();
|
|
510
623
|
dragCounterRef.current++;
|
|
511
|
-
if (
|
|
624
|
+
if (e.dataTransfer?.types?.includes('Files')) {
|
|
512
625
|
setIsDragOver(true);
|
|
513
626
|
}
|
|
514
|
-
}, [
|
|
627
|
+
}, []);
|
|
515
628
|
const handleDragOver = useCallback((e) => {
|
|
516
629
|
e.preventDefault();
|
|
517
630
|
e.stopPropagation();
|
|
@@ -529,39 +642,39 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
529
642
|
e.stopPropagation();
|
|
530
643
|
dragCounterRef.current = 0;
|
|
531
644
|
setIsDragOver(false);
|
|
532
|
-
if (
|
|
645
|
+
if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {
|
|
533
646
|
const filesArray = Array.from(e.dataTransfer.files);
|
|
534
647
|
handleFileUpload(filesArray);
|
|
535
648
|
}
|
|
536
|
-
}, [
|
|
649
|
+
}, [handleFileUpload]);
|
|
537
650
|
// Stop/interrupt the active workflow
|
|
538
651
|
const handleStopWorkflow = useCallback(async () => {
|
|
539
652
|
if (isStopping)
|
|
540
653
|
return;
|
|
541
654
|
setIsStopping(true);
|
|
542
655
|
try {
|
|
543
|
-
await client.
|
|
656
|
+
await client.agents.sendSignal(agentRunId, "Stop", {
|
|
544
657
|
message: "User requested stop",
|
|
545
658
|
});
|
|
546
659
|
toast({
|
|
547
660
|
status: "info",
|
|
548
|
-
title:
|
|
549
|
-
description:
|
|
661
|
+
title: t('agent.agentInterrupted'),
|
|
662
|
+
description: t('agent.typeNewInstructions'),
|
|
550
663
|
duration: 3000,
|
|
551
664
|
});
|
|
552
665
|
}
|
|
553
666
|
catch (err) {
|
|
554
667
|
toast({
|
|
555
668
|
status: "error",
|
|
556
|
-
title:
|
|
557
|
-
description: err instanceof Error ? err.message :
|
|
669
|
+
title: t('agent.failedToInterrupt'),
|
|
670
|
+
description: err instanceof Error ? err.message : t('agent.unknownError'),
|
|
558
671
|
duration: 3000,
|
|
559
672
|
});
|
|
560
673
|
}
|
|
561
674
|
finally {
|
|
562
675
|
setIsStopping(false);
|
|
563
676
|
}
|
|
564
|
-
}, [isStopping, client,
|
|
677
|
+
}, [isStopping, client, agentRunId, toast]);
|
|
565
678
|
// Expose stop handler to external callers via ref
|
|
566
679
|
useEffect(() => {
|
|
567
680
|
if (stopRef)
|
|
@@ -575,6 +688,9 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
575
688
|
}, [isStopping, onStoppingChange]);
|
|
576
689
|
// Calculate number of active tasks for the status indicator
|
|
577
690
|
const getActiveTaskCount = () => {
|
|
691
|
+
if (activeWorkstreams.length > 0) {
|
|
692
|
+
return activeWorkstreams.filter((ws) => ws.status === "running").length;
|
|
693
|
+
}
|
|
578
694
|
if (!messages.length)
|
|
579
695
|
return 0;
|
|
580
696
|
// Group messages by workstream
|
|
@@ -585,7 +701,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
585
701
|
if (!workstreamMessages.has(workstreamId)) {
|
|
586
702
|
workstreamMessages.set(workstreamId, []);
|
|
587
703
|
}
|
|
588
|
-
workstreamMessages.get(workstreamId)
|
|
704
|
+
workstreamMessages.get(workstreamId)?.push(message);
|
|
589
705
|
}
|
|
590
706
|
});
|
|
591
707
|
// Count workstreams that don't have completion messages
|
|
@@ -601,11 +717,11 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
601
717
|
}
|
|
602
718
|
return activeCount;
|
|
603
719
|
};
|
|
604
|
-
const actualTitle = title ||
|
|
720
|
+
const actualTitle = title || t('agent.agentConversation');
|
|
605
721
|
// Handle downloading conversation
|
|
606
722
|
const downloadConversation = async () => {
|
|
607
723
|
try {
|
|
608
|
-
const url = await getConversationUrl(client,
|
|
724
|
+
const url = await getConversationUrl(client, agentRunId);
|
|
609
725
|
if (url)
|
|
610
726
|
window.open(url, "_blank");
|
|
611
727
|
}
|
|
@@ -613,17 +729,17 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
613
729
|
console.error("Failed to download conversation", err);
|
|
614
730
|
toast({
|
|
615
731
|
status: "error",
|
|
616
|
-
title:
|
|
732
|
+
title: t('agent.failedToDownload'),
|
|
617
733
|
duration: 3000,
|
|
618
734
|
});
|
|
619
735
|
}
|
|
620
736
|
};
|
|
621
737
|
// Handle copying run ID
|
|
622
738
|
const copyRunId = () => {
|
|
623
|
-
navigator.clipboard.writeText(
|
|
739
|
+
navigator.clipboard.writeText(agentRunId);
|
|
624
740
|
toast({
|
|
625
741
|
status: "success",
|
|
626
|
-
title:
|
|
742
|
+
title: t('agent.runIdCopied'),
|
|
627
743
|
duration: 2000,
|
|
628
744
|
});
|
|
629
745
|
};
|
|
@@ -632,8 +748,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
632
748
|
if (!conversationRef.current) {
|
|
633
749
|
toast({
|
|
634
750
|
status: "error",
|
|
635
|
-
title:
|
|
636
|
-
description:
|
|
751
|
+
title: t('agent.pdfExportFailed'),
|
|
752
|
+
description: t('agent.noConversationContent'),
|
|
637
753
|
duration: 3000,
|
|
638
754
|
});
|
|
639
755
|
return;
|
|
@@ -644,67 +760,88 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
|
|
|
644
760
|
if (!conversationRef.current) {
|
|
645
761
|
toast({
|
|
646
762
|
status: "error",
|
|
647
|
-
title:
|
|
648
|
-
description:
|
|
763
|
+
title: t('agent.pdfExportFailed'),
|
|
764
|
+
description: t('agent.noConversationContent'),
|
|
649
765
|
duration: 3000,
|
|
650
766
|
});
|
|
651
767
|
return;
|
|
652
768
|
}
|
|
653
|
-
const pdfTitle = `${actualTitle} - ${
|
|
769
|
+
const pdfTitle = `${actualTitle} - ${agentRunId}`;
|
|
654
770
|
const success = printElementToPdf(conversationRef.current, pdfTitle);
|
|
655
771
|
if (!success) {
|
|
656
772
|
toast({
|
|
657
773
|
status: "error",
|
|
658
|
-
title:
|
|
659
|
-
description:
|
|
774
|
+
title: t('agent.pdfExportFailed'),
|
|
775
|
+
description: t('agent.unableToOpenPrint'),
|
|
660
776
|
duration: 4000,
|
|
661
777
|
});
|
|
662
778
|
return;
|
|
663
779
|
}
|
|
664
780
|
toast({
|
|
665
781
|
status: "success",
|
|
666
|
-
title:
|
|
667
|
-
description:
|
|
782
|
+
title: t('agent.pdfExportReady'),
|
|
783
|
+
description: t('agent.printDialogDescription'),
|
|
668
784
|
duration: 4000,
|
|
669
785
|
});
|
|
670
786
|
setIsPdfModalOpen(false);
|
|
671
787
|
};
|
|
788
|
+
// Artifact refresh key — bumps when tool calls complete or conversation finishes,
|
|
789
|
+
// which is when new artifacts are most likely to appear.
|
|
790
|
+
const artifactRefreshKey = useMemo(() => {
|
|
791
|
+
return messages.filter((m) => {
|
|
792
|
+
if (m.type === AgentMessageType.COMPLETE)
|
|
793
|
+
return true;
|
|
794
|
+
if (m.type === AgentMessageType.THOUGHT) {
|
|
795
|
+
const details = m.details;
|
|
796
|
+
return details?.tool_status === 'completed';
|
|
797
|
+
}
|
|
798
|
+
return false;
|
|
799
|
+
}).length;
|
|
800
|
+
}, [messages]);
|
|
672
801
|
// PERFORMANCE: Memoize taskLabels to prevent AllMessagesMixed re-renders
|
|
673
802
|
const taskLabels = useMemo(() => getActivePlan.plan.plan?.reduce((acc, task) => {
|
|
674
803
|
if (task.id && task.goal)
|
|
675
804
|
acc.set(task.id.toString(), task.goal);
|
|
676
805
|
return acc;
|
|
677
806
|
}, new Map()), [getActivePlan.plan]);
|
|
807
|
+
// Conversation area inner content — shared between main layout and conversationTab mode
|
|
808
|
+
const conversationAreaJsx = (_jsxs("div", { ref: conversationRef, className: cn("flex flex-col min-h-0 min-w-0 border-0", conversationTab
|
|
809
|
+
? "flex-1 h-full"
|
|
810
|
+
: isRightPanelVisible
|
|
811
|
+
? "w-full flex-1 min-h-[50vh]"
|
|
812
|
+
: fullWidth
|
|
813
|
+
? "flex-1 w-full"
|
|
814
|
+
: `flex-1 mx-auto ${!isModal ? "max-w-4xl" : ""}`), children: [!hideHeader && (_jsx("div", { className: "flex-shrink-0", children: _jsx(Header, { title: actualTitle, isCompleted: isCompleted, onClose: onClose, isModal: isModal, agentRunId: agentRunId, viewMode: viewMode, onViewModeChange: handleViewModeChange, showPlanPanel: showRightPanelProp && showSlidingPanel, hasPlan: showRightPanelProp && plans.length > 0, showPlanButton: showRightPanelProp && !conversationTab, onTogglePlanPanel: handleTogglePlanPanel, onDownload: downloadConversation, onCopyRunId: copyRunId, resetWorkflow: resetWorkflow, onRestart: onRestart, onFork: onFork, onShowDetails: onShowDetails, onExportPdf: exportConversationPdf, isReceivingChunks: debugChunkFlash }) })), messages.length === 0 && !isCompleted ? (_jsx("div", { className: "flex-1 flex flex-col items-center justify-center h-full text-center py-6", children: _jsxs("div", { className: "p-5 max-w-md border border-info rounded-lg shadow-sm", children: [_jsxs("div", { className: "flex items-center space-x-3 mb-3", children: [_jsx(PulsatingCircle, { size: "sm", color: "blue" }), _jsx("div", { className: "text-sm text-muted font-medium", children: ThinkingMessages[thinkingMessageIndex] })] }), _jsx("div", { className: "mt-4 flex justify-center", children: _jsx(AnimatedThinkingDots, { color: "blue", className: "mt-1" }) })] }) })) : (_jsx(AllMessagesMixed, { messages: messages, bottomRef: bottomRef, isCompleted: isCompleted, plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, showPlanPanel: showRightPanelProp && showSlidingPanel, onTogglePlanPanel: handleTogglePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, taskLabels: taskLabels, streamingMessages: streamingMessages, onSendMessage: handleSendMessage, thinkingMessageIndex: thinkingMessageIndex, messageItemClassNames: messageItemClassNames, messageStyleOverrides: messageStyleOverrides, toolCallGroupClassNames: toolCallGroupClassNames, hideToolCallsInViewMode: hideToolCallsInViewMode, streamingMessageClassNames: streamingMessageClassNames, batchProgressPanelClassNames: batchProgressPanelClassNames, artifactRunId: agentRunId, viewMode: viewMode, hideWorkstreamTabs: hideWorkstreamTabs, workingIndicatorClassName: workingIndicatorClassName, messageListClassName: messageListClassName, StoreLinkComponent: effectiveStoreLinkComponent, CollectionLinkComponent: CollectionLinkComponent, prependFriendlyMessage: prependFriendlyMessage })), !hideMessageInput && (_jsx("div", { className: "flex-shrink-0", style: { paddingBottom: 'env(safe-area-inset-bottom, 0px)' }, children: effectiveWorkflowStatus && effectiveWorkflowStatus !== "RUNNING" ? (_jsxs(MessageBox, { status: effectiveWorkflowStatus === "COMPLETED" ? 'success' : 'done', icon: null, className: "m-2", children: ["This Workflow is ", effectiveWorkflowStatus] })) : showInput && (_jsx(MessageInput, { onSend: handleSendMessage, onStop: handleStopWorkflow, disabled: isUploading, isSending: isSending || isUploading, isStopping: isStopping, isStreaming: !isCompleted, isCompleted: isCompleted, activeTaskCount: getActiveTaskCount(), placeholder: placeholder ?? 'Type your message...', onFilesSelected: handleFileUpload, uploadedFiles: uploadedFiles, onRemoveFile: onRemoveFile, acceptedFileTypes: acceptedFileTypes, maxFiles: maxFiles, processingFiles: processingFiles, hasProcessingFiles: hasProcessingFiles, renderDocumentSearch: renderDocumentSearch, selectedDocuments: selectedDocuments, onRemoveDocument: onRemoveDocument, hideObjectLinking: hideObjectLinking, hideFileUpload: hideFileUpload, className: inputContainerClassName, inputClassName: inputClassName })) }))] }));
|
|
678
815
|
// Main content - wrapped with FusionFragmentProvider when fusionData is provided
|
|
679
|
-
const mainContent = (_jsx(ArtifactUrlCacheProvider, { children: _jsx(ImageLightboxProvider, { children: _jsxs("div", { className: cn("flex flex-col lg:flex-row gap-2 h-full relative overflow-hidden", isDragOver && "ring-2 ring-blue-400 ring-inset", className), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-100/80 dark:bg-blue-900/40 z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-blue-600 dark:text-blue-400 font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to upload"] }) })), _jsxs(
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
//
|
|
685
|
-
|
|
686
|
-
//
|
|
687
|
-
|
|
688
|
-
//
|
|
689
|
-
|
|
690
|
-
//
|
|
691
|
-
|
|
692
|
-
//
|
|
693
|
-
|
|
694
|
-
//
|
|
695
|
-
|
|
816
|
+
const mainContent = (_jsx(ArtifactUrlCacheProvider, { children: _jsx(ImageLightboxProvider, { children: _jsxs("div", { ref: conversationLayoutRef, className: cn("flex flex-col lg:flex-row gap-2 w-full h-full relative overflow-hidden", isDragOver && "ring-2 ring-blue-400 ring-inset", className), onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-100/80 dark:bg-blue-900/40 z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-blue-600 dark:text-blue-400 font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to upload"] }) })), !conversationTab && conversationAreaJsx, isRightPanelVisible && (_jsxs(_Fragment, { children: [!conversationTab && (_jsx("div", { className: "hidden lg:block lg:w-1 lg:shrink-0 cursor-col-resize bg-border/70 hover:bg-border transition-colors", onMouseDown: () => setIsRightPanelResizing(true), role: "separator", "aria-orientation": "vertical", "aria-label": "Resize right panel" })), _jsx("div", { className: conversationTab
|
|
817
|
+
? "w-full h-full overflow-auto"
|
|
818
|
+
: "w-full lg:w-[var(--agent-right-panel-width)] lg:shrink-0 min-h-[50vh] lg:h-full border-t lg:border-t-0 lg:border-l", style: !conversationTab ? { ['--agent-right-panel-width']: `${rightPanelWidth}px` } : undefined, children: _jsx(AgentRightPanel
|
|
819
|
+
// Plan
|
|
820
|
+
, {
|
|
821
|
+
// Plan
|
|
822
|
+
plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, showPlan: !hidePlanPanel && showSlidingPanel,
|
|
823
|
+
// Workstreams
|
|
824
|
+
activeWorkstreams: panelWorkstreams, hideWorkstreams: hideWorkstreamTabs,
|
|
825
|
+
// Documents
|
|
826
|
+
openDocuments: openDocuments, activeDocumentId: activeDocumentId, onSelectDocument: selectDocument, onCloseDocument: handleCloseDocument, docRefreshKey: docRefreshKey, runId: agentRunId,
|
|
827
|
+
// Uploads
|
|
828
|
+
processingFiles: processingFilesProp ?? processingFiles,
|
|
829
|
+
// Artifacts
|
|
830
|
+
showArtifacts: showArtifacts, artifactRefreshKey: artifactRefreshKey,
|
|
831
|
+
// Messages (for workstreams tab context)
|
|
832
|
+
messages: messages,
|
|
833
|
+
// Payload content
|
|
834
|
+
payloadContent: payloadContent,
|
|
835
|
+
// Conversation content
|
|
836
|
+
conversationContent: conversationTab ? conversationAreaJsx : conversationContent,
|
|
837
|
+
// Panel control
|
|
838
|
+
onClose: handleCloseRightPanel, defaultTab: rightPanelTab }) })] })), _jsxs(Modal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), children: [_jsx(ModalTitle, { children: "Export conversation as PDF" }), _jsxs(ModalBody, { children: [_jsx("p", { className: "mb-2", children: "This will open your browser's print dialog with the current conversation." }), _jsx("p", { className: "text-sm text-muted", children: "To save a PDF, choose \"Save as PDF\" or a similar option in the print dialog." })] }), _jsxs(ModalFooter, { align: "right", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setIsPdfModalOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", onClick: handleConfirmExportPdf, children: "Open print dialog" })] })] })] }) }) }));
|
|
696
839
|
// Wrap with FusionFragmentProvider when fusionData is provided
|
|
697
840
|
// This enables fusion-fragment code blocks to display data and supports
|
|
698
841
|
// agent-mode interactions where clicking editable fields sends messages
|
|
699
842
|
if (fusionData) {
|
|
700
|
-
return (_jsx(FusionFragmentProvider, { data: fusionData, sendMessage: handleSendMessage, ChartComponent: VegaLiteChart, artifactRunId:
|
|
843
|
+
return (_jsx(FusionFragmentProvider, { data: fusionData, sendMessage: handleSendMessage, ChartComponent: VegaLiteChart, artifactRunId: agentRunId, children: mainContent }));
|
|
701
844
|
}
|
|
702
845
|
return mainContent;
|
|
703
846
|
}
|
|
704
|
-
// Helper function to get conversation URL - used by other components
|
|
705
|
-
export async function getConversationUrl(vertesia, workflowRunId) {
|
|
706
|
-
return vertesia.files
|
|
707
|
-
.getDownloadUrl(`agents/${workflowRunId}/conversation.json`)
|
|
708
|
-
.then((r) => r.url);
|
|
709
|
-
}
|
|
710
847
|
//# sourceMappingURL=ModernAgentConversation.js.map
|