@vertesia/ui 1.5.0-dev.20260901.052906Z → 1.5.0-dev.20260910.051115Z
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/core/components/Avatar.d.ts.map +1 -1
- package/lib/core/components/Avatar.js +3 -3
- package/lib/core/components/Avatar.js.map +1 -1
- package/lib/core/components/ComboBox.js +1 -1
- package/lib/core/components/ComboBox.js.map +1 -1
- package/lib/core/components/FileUpload.js +1 -1
- package/lib/core/components/FileUpload.js.map +1 -1
- package/lib/core/components/Link.js +1 -1
- package/lib/core/components/Link.js.map +1 -1
- package/lib/core/components/SelectList.js +1 -1
- package/lib/core/components/SelectList.js.map +1 -1
- package/lib/core/components/SidePanel.js +1 -1
- package/lib/core/components/SidePanel.js.map +1 -1
- package/lib/core/components/Spinner.js +1 -1
- package/lib/core/components/Spinner.js.map +1 -1
- package/lib/core/components/TagsInput.js +8 -8
- package/lib/core/components/TagsInput.js.map +1 -1
- package/lib/core/components/shadcn/MessageBox.js +1 -1
- package/lib/core/components/shadcn/MessageBox.js.map +1 -1
- package/lib/core/components/shadcn/button.js +1 -1
- package/lib/core/components/shadcn/button.js.map +1 -1
- package/lib/core/components/shadcn/card.d.ts.map +1 -1
- package/lib/core/components/shadcn/card.js +1 -1
- package/lib/core/components/shadcn/card.js.map +1 -1
- package/lib/core/components/shadcn/command.js +5 -5
- package/lib/core/components/shadcn/command.js.map +1 -1
- package/lib/core/components/shadcn/filters/DynamicLabel.js +1 -1
- package/lib/core/components/shadcn/filters/DynamicLabel.js.map +1 -1
- package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js +3 -3
- package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
- package/lib/core/components/shadcn/input.js +3 -3
- package/lib/core/components/shadcn/input.js.map +1 -1
- package/lib/core/components/shadcn/modal/ConfirmModal.js +1 -1
- package/lib/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.d.ts.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.js +2 -2
- package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
- package/lib/core/components/shadcn/overflowTabs.js +2 -2
- package/lib/core/components/shadcn/overflowTabs.js.map +1 -1
- package/lib/core/components/shadcn/popover.js +1 -1
- package/lib/core/components/shadcn/popover.js.map +1 -1
- package/lib/core/components/shadcn/radioGroup.d.ts.map +1 -1
- package/lib/core/components/shadcn/radioGroup.js +3 -3
- package/lib/core/components/shadcn/radioGroup.js.map +1 -1
- package/lib/core/components/shadcn/selectBox.js +1 -1
- package/lib/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/core/components/shadcn/tabs.js +5 -2
- package/lib/core/components/shadcn/tabs.js.map +1 -1
- package/lib/core/components/styles.js +1 -1
- package/lib/core/components/styles.js.map +1 -1
- package/lib/core/components/table/index.js +1 -1
- package/lib/core/hooks/useFetch.d.ts.map +1 -1
- package/lib/core/hooks/useFetch.js +2 -0
- package/lib/core/hooks/useFetch.js.map +1 -1
- package/lib/features/activity-doc/ActivityDoc.js +8 -8
- package/lib/features/activity-doc/ActivityDoc.js.map +1 -1
- package/lib/features/agent/chat/AgentChart.js +1 -1
- package/lib/features/agent/chat/AgentChart.js.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts +2 -3
- package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.js +3 -3
- package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.js +13 -13
- package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/features/agent/chat/DocumentPanel.d.ts +7 -7
- package/lib/features/agent/chat/DocumentPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/DocumentPanel.js +6 -12
- package/lib/features/agent/chat/DocumentPanel.js.map +1 -1
- package/lib/features/agent/chat/DocumentsTab.d.ts +15 -0
- package/lib/features/agent/chat/DocumentsTab.d.ts.map +1 -0
- package/lib/features/agent/chat/DocumentsTab.js +33 -0
- package/lib/features/agent/chat/DocumentsTab.js.map +1 -0
- package/lib/features/agent/chat/JumpingDots.js +1 -1
- package/lib/features/agent/chat/JumpingDots.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.js +3 -3
- package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +22 -9
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +5 -5
- package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.js +16 -11
- package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +7 -7
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessagesContainer.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessagesContainer.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js +10 -10
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +17 -17
- package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +14 -2
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +15 -15
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +18 -0
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
- package/lib/features/agent/chat/SlidingThinkingIndicator.d.ts.map +1 -1
- package/lib/features/agent/chat/SlidingThinkingIndicator.js +5 -2
- package/lib/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
- package/lib/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
- package/lib/features/agent/chat/VegaLiteChart.js +6 -2
- package/lib/features/agent/chat/VegaLiteChart.js.map +1 -1
- package/lib/features/agent/chat/hooks/useDocumentPanel.d.ts +2 -2
- package/lib/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useDocumentPanel.js +0 -18
- package/lib/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
- package/lib/features/errors/RowErrorBoundary.js +1 -1
- package/lib/features/errors/RowErrorBoundary.js.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/features/facets/utils/VInteractionFacet.d.ts +3 -5
- package/lib/features/facets/utils/VInteractionFacet.d.ts.map +1 -1
- package/lib/features/facets/utils/VInteractionFacet.js +10 -23
- package/lib/features/facets/utils/VInteractionFacet.js.map +1 -1
- package/lib/features/facets/utils/VUserFacet.js +1 -1
- package/lib/features/facets/utils/VUserFacet.js.map +1 -1
- package/lib/features/layout/GenericPageNavHeader.d.ts.map +1 -1
- package/lib/features/layout/GenericPageNavHeader.js +4 -1
- package/lib/features/layout/GenericPageNavHeader.js.map +1 -1
- package/lib/features/layout/NotFoundView.js +1 -1
- package/lib/features/layout/NotFoundView.js.map +1 -1
- package/lib/features/magic-pdf/AnnotatedImageSlider.js +4 -12
- package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
- package/lib/features/magic-pdf/ExtractedContentView.js +4 -4
- package/lib/features/magic-pdf/ExtractedContentView.js.map +1 -1
- package/lib/features/magic-pdf/MagicPdfView.js +1 -1
- package/lib/features/magic-pdf/MagicPdfView.js.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.js +4 -1
- package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
- package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsDialog.js +3 -2
- package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
- package/lib/features/oauth/useMcpConnections.d.ts +6 -7
- package/lib/features/oauth/useMcpConnections.d.ts.map +1 -1
- package/lib/features/oauth/useMcpConnections.js +27 -20
- package/lib/features/oauth/useMcpConnections.js.map +1 -1
- package/lib/features/pdf-viewer/PdfPageRenderer.js +2 -2
- package/lib/features/pdf-viewer/PdfPageRenderer.js.map +1 -1
- package/lib/features/pdf-viewer/PdfPageSlider.js +3 -3
- package/lib/features/pdf-viewer/PdfPageSlider.js.map +1 -1
- package/lib/features/pdf-viewer/SimplePdfViewer.js +1 -1
- package/lib/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
- package/lib/features/permissions/UserPermissionsProvider.d.ts +2 -1
- package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
- package/lib/features/permissions/UserPermissionsProvider.js +35 -22
- package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
- package/lib/features/permissions/useRoleMappings.d.ts +19 -0
- package/lib/features/permissions/useRoleMappings.d.ts.map +1 -0
- package/lib/features/permissions/useRoleMappings.js +87 -0
- package/lib/features/permissions/useRoleMappings.js.map +1 -0
- package/lib/features/store/collections/SelectCollection.js +1 -1
- package/lib/features/store/collections/SelectCollection.js.map +1 -1
- package/lib/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentPreviewPanel.js +9 -9
- package/lib/features/store/objects/DocumentPreviewPanel.js.map +1 -1
- package/lib/features/store/objects/DocumentTable.js +1 -1
- package/lib/features/store/objects/DocumentTable.js.map +1 -1
- package/lib/features/store/objects/components/DocumentIcon.js +2 -2
- package/lib/features/store/objects/components/DocumentIcon.js.map +1 -1
- package/lib/features/store/objects/components/DocumentInput.js +1 -1
- package/lib/features/store/objects/components/DocumentInput.js.map +1 -1
- package/lib/features/store/objects/components/PropertiesEditorModal.js +1 -1
- package/lib/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
- package/lib/features/store/objects/components/SaveVersionConfirmModal.js +1 -1
- package/lib/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -1
- package/lib/features/store/objects/layout/documentLayout.d.ts.map +1 -1
- package/lib/features/store/objects/layout/documentLayout.js +2 -2
- package/lib/features/store/objects/layout/documentLayout.js.map +1 -1
- package/lib/features/store/objects/selection/SelectionActions.js +1 -1
- package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/features/store/types/IntakePolicyEditor.d.ts +10 -1
- package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -1
- package/lib/features/store/types/IntakePolicyEditor.js +29 -19
- package/lib/features/store/types/IntakePolicyEditor.js.map +1 -1
- package/lib/features/store/types/IntakePolicyForm.d.ts +1 -1
- package/lib/features/store/types/IntakePolicyForm.d.ts.map +1 -1
- package/lib/features/store/types/IntakePolicyForm.js +5 -3
- package/lib/features/store/types/IntakePolicyForm.js.map +1 -1
- package/lib/features/store/types/SelectContentTypeModal.js +1 -1
- package/lib/features/store/types/SelectContentTypeModal.js.map +1 -1
- package/lib/features/store/types/TypeRegistry.d.ts +10 -5
- package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
- package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +10 -5
- package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
- package/lib/features/user/UserAvatar.js +2 -2
- package/lib/features/user/UserAvatar.js.map +1 -1
- package/lib/features/user/UserInfo.d.ts.map +1 -1
- package/lib/features/user/UserInfo.js +7 -7
- package/lib/features/user/UserInfo.js.map +1 -1
- package/lib/features/utils/index.d.ts +1 -0
- package/lib/features/utils/index.d.ts.map +1 -1
- package/lib/features/utils/index.js +1 -0
- package/lib/features/utils/index.js.map +1 -1
- package/lib/features/utils/interaction.d.ts +55 -0
- package/lib/features/utils/interaction.d.ts.map +1 -0
- package/lib/features/utils/interaction.js +77 -0
- package/lib/features/utils/interaction.js.map +1 -0
- package/lib/features/views/ViewResults.js +2 -2
- package/lib/features/views/ViewResults.js.map +1 -1
- package/lib/i18n/locales/ar.json +17 -1
- package/lib/i18n/locales/de.json +13 -1
- package/lib/i18n/locales/en.json +13 -1
- package/lib/i18n/locales/es.json +13 -1
- package/lib/i18n/locales/fr.json +13 -1
- package/lib/i18n/locales/it.json +13 -1
- package/lib/i18n/locales/ja.json +13 -1
- package/lib/i18n/locales/ko.json +13 -1
- package/lib/i18n/locales/pt.json +13 -1
- package/lib/i18n/locales/ru.json +15 -1
- package/lib/i18n/locales/tr.json +13 -1
- package/lib/i18n/locales/zh-TW.json +13 -1
- package/lib/i18n/locales/zh.json +13 -1
- package/lib/layout/FullHeightLayout.js +2 -2
- package/lib/layout/FullHeightLayout.js.map +1 -1
- package/lib/layout/Navbar.js +4 -4
- package/lib/layout/Navbar.js.map +1 -1
- package/lib/layout/Sidebar.js +1 -1
- package/lib/layout/Sidebar.js.map +1 -1
- package/lib/router/NestedNavigationContext.d.ts +3 -1
- package/lib/router/NestedNavigationContext.d.ts.map +1 -1
- package/lib/router/NestedNavigationContext.js +2 -2
- package/lib/router/NestedNavigationContext.js.map +1 -1
- package/lib/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/session/UserSessionProvider.js +2 -13
- package/lib/session/UserSessionProvider.js.map +1 -1
- package/lib/session/auth/authState.d.ts +13 -0
- package/lib/session/auth/authState.d.ts.map +1 -0
- package/lib/session/auth/authState.js +37 -0
- package/lib/session/auth/authState.js.map +1 -0
- package/lib/session/auth/domainRouting.d.ts +39 -0
- package/lib/session/auth/domainRouting.d.ts.map +1 -1
- package/lib/session/auth/domainRouting.js +85 -0
- package/lib/session/auth/domainRouting.js.map +1 -1
- package/lib/session/auth/useAuthState.d.ts +4 -7
- package/lib/session/auth/useAuthState.d.ts.map +1 -1
- package/lib/session/auth/useAuthState.js +5 -41
- package/lib/session/auth/useAuthState.js.map +1 -1
- package/lib/session/index.d.ts +1 -0
- package/lib/session/index.d.ts.map +1 -1
- package/lib/session/index.js +2 -0
- package/lib/session/index.js.map +1 -1
- package/lib/shell/SplashScreen.d.ts +1 -1
- package/lib/shell/SplashScreen.d.ts.map +1 -1
- package/lib/shell/SplashScreen.js +6 -2
- package/lib/shell/SplashScreen.js.map +1 -1
- package/lib/shell/VertesiaShell.js +1 -1
- package/lib/shell/VertesiaShell.js.map +1 -1
- package/lib/shell/apps/AppProjectSelector.js +1 -1
- package/lib/shell/apps/AppProjectSelector.js.map +1 -1
- package/lib/shell/apps/StandaloneApp.js +2 -2
- package/lib/shell/apps/StandaloneApp.js.map +1 -1
- package/lib/shell/login/SignInPrimitives.js +2 -2
- package/lib/shell/login/SignInPrimitives.js.map +1 -1
- package/lib/shell/login/SigninScreen.js +1 -1
- package/lib/shell/login/SigninScreen.js.map +1 -1
- package/lib/shell/login/SignupForm.js +1 -1
- package/lib/shell/login/SignupForm.js.map +1 -1
- package/lib/shell/login/TerminalLogin.js +2 -2
- package/lib/shell/login/TerminalLogin.js.map +1 -1
- package/lib/shell/login/UserInfo.d.ts.map +1 -1
- package/lib/shell/login/UserInfo.js +1 -1
- package/lib/shell/login/UserInfo.js.map +1 -1
- package/lib/shell/login/UserSessionMenu.js +1 -1
- package/lib/shell/login/UserSessionMenu.js.map +1 -1
- package/lib/vertesia-ui-core.js +7 -7
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-features.js +179 -182
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.DN79y06J.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.DN79y06J.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js +5 -0
- package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js.map +1 -0
- package/lib/vertesia-ui-i18n.js +2 -2
- package/lib/vertesia-ui-layout.js +1 -1
- package/lib/vertesia-ui-layout.js.map +1 -1
- package/lib/vertesia-ui-rich-text.js +24 -24
- package/lib/vertesia-ui-rich-text.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 +3 -3
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +54 -54
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/lib/widgets/Progress.js +1 -1
- package/lib/widgets/Progress.js.map +1 -1
- package/lib/widgets/form/Form.js +2 -2
- package/lib/widgets/form/Form.js.map +1 -1
- package/lib/widgets/form/fields.js +2 -2
- package/lib/widgets/form/fields.js.map +1 -1
- package/lib/widgets/json-view/JSONView.js +1 -1
- package/lib/widgets/json-view/JSONView.js.map +1 -1
- package/lib/widgets/markdown/MermaidDiagram.js +1 -1
- package/lib/widgets/markdown/MermaidDiagram.js.map +1 -1
- package/lib/widgets/markdown/remarkDirectiveHandler.d.ts +7 -2
- package/lib/widgets/markdown/remarkDirectiveHandler.d.ts.map +1 -1
- package/lib/widgets/markdown/remarkDirectiveHandler.js +19 -4
- package/lib/widgets/markdown/remarkDirectiveHandler.js.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.js +4 -2
- package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/widgets/monacoEditor/index.d.ts +1 -0
- package/lib/widgets/monacoEditor/index.d.ts.map +1 -1
- package/lib/widgets/monacoEditor/index.js +1 -0
- package/lib/widgets/monacoEditor/index.js.map +1 -1
- package/lib/widgets/monacoEditor/loadMonaco.d.ts +45 -0
- package/lib/widgets/monacoEditor/loadMonaco.d.ts.map +1 -0
- package/lib/widgets/monacoEditor/loadMonaco.js +62 -0
- package/lib/widgets/monacoEditor/loadMonaco.js.map +1 -0
- package/lib/widgets/properties/PropertiesView.js +1 -1
- package/lib/widgets/properties/PropertiesView.js.map +1 -1
- package/lib/widgets/schema-editor/editor/Editable.js +2 -2
- package/lib/widgets/schema-editor/editor/Editable.js.map +1 -1
- package/lib/widgets/schema-editor/editor/PropertyEditor.js +1 -1
- package/lib/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
- package/lib/widgets/schema-editor/editor/SchemaEditor.js +2 -2
- package/lib/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
- package/lib/widgets/upload/DropZone.js +1 -1
- package/lib/widgets/upload/DropZone.js.map +1 -1
- package/lib/widgets/upload/UploadResultCategory.d.ts +1 -1
- package/lib/widgets/upload/UploadResultCategory.d.ts.map +1 -1
- package/lib/widgets/upload/UploadResultCategory.js +3 -3
- package/lib/widgets/upload/UploadResultCategory.js.map +1 -1
- package/lib/widgets/upload/UploadSummary.js +1 -1
- package/lib/widgets/upload/UploadSummary.js.map +1 -1
- package/lib/widgets/xml-viewer/components/XMLViewer.d.ts.map +1 -1
- package/lib/widgets/xml-viewer/components/XMLViewer.js +7 -3
- package/lib/widgets/xml-viewer/components/XMLViewer.js.map +1 -1
- package/lib/widgets/xml-viewer/hooks/useCollapsible.d.ts +1 -1
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts +11 -13
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts.map +1 -1
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.js +41 -14
- package/lib/widgets/xml-viewer/hooks/useXMLViewer.js.map +1 -1
- package/package.json +7 -7
- package/src/__tests__/contrast.test.ts +1 -0
- package/src/core/components/Avatar.tsx +3 -3
- package/src/core/components/ComboBox.tsx +1 -1
- package/src/core/components/FileUpload.tsx +4 -4
- package/src/core/components/Link.tsx +1 -1
- package/src/core/components/SelectList.tsx +1 -1
- package/src/core/components/SidePanel.tsx +1 -1
- package/src/core/components/Spinner.tsx +1 -1
- package/src/core/components/TagsInput.tsx +8 -8
- package/src/core/components/shadcn/MessageBox.tsx +1 -1
- package/src/core/components/shadcn/button.tsx +1 -1
- package/src/core/components/shadcn/card.tsx +1 -3
- package/src/core/components/shadcn/command.tsx +5 -5
- package/src/core/components/shadcn/filters/DynamicLabel.tsx +1 -1
- package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +3 -3
- package/src/core/components/shadcn/input.tsx +3 -3
- package/src/core/components/shadcn/modal/ConfirmModal.tsx +3 -3
- package/src/core/components/shadcn/modal/dialog.tsx +2 -4
- package/src/core/components/shadcn/overflowTabs.tsx +2 -2
- package/src/core/components/shadcn/popover.tsx +1 -1
- package/src/core/components/shadcn/radioGroup.tsx +5 -7
- package/src/core/components/shadcn/selectBox.tsx +1 -1
- package/src/core/components/shadcn/tabs.tsx +4 -2
- package/src/core/components/styles.ts +1 -1
- package/src/core/components/table/index.tsx +1 -1
- package/src/core/hooks/useFetch.test.ts +20 -0
- package/src/core/hooks/useFetch.ts +2 -0
- package/src/css/base.css +1 -1
- package/src/css/color.css +4 -0
- package/src/css/theme.css +1 -0
- package/src/css/typography.css +2 -2
- package/src/features/activity-doc/ActivityDoc.tsx +11 -11
- package/src/features/agent/chat/AgentChart.tsx +1 -1
- package/src/features/agent/chat/AgentRightPanel.tsx +4 -8
- package/src/features/agent/chat/AskUserWidget.tsx +19 -23
- package/src/features/agent/chat/DocumentPanel.tsx +39 -48
- package/src/features/agent/chat/DocumentsTab.test.tsx +87 -0
- package/src/features/agent/chat/DocumentsTab.tsx +124 -0
- package/src/features/agent/chat/JumpingDots.tsx +3 -3
- package/src/features/agent/chat/ModernAgentConversation.test.tsx +0 -1
- package/src/features/agent/chat/ModernAgentConversation.tsx +3 -5
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +60 -1
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +44 -24
- package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +12 -12
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +28 -15
- package/src/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.tsx +4 -4
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +2 -2
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +7 -12
- package/src/features/agent/chat/ModernAgentOutput/MessagesContainer.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +16 -22
- package/src/features/agent/chat/ModernAgentOutput/SlideInPanel.tsx +4 -4
- package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +2 -4
- package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +21 -21
- package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +4 -4
- package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +16 -1
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +19 -40
- package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.test.ts +41 -0
- package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +19 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +93 -0
- package/src/features/agent/chat/SlidingThinkingIndicator.tsx +5 -2
- package/src/features/agent/chat/VegaLiteChart.tsx +6 -2
- package/src/features/agent/chat/hooks/useDocumentPanel.test.tsx +33 -0
- package/src/features/agent/chat/hooks/useDocumentPanel.ts +3 -20
- package/src/features/errors/RowErrorBoundary.tsx +1 -1
- package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -1
- package/src/features/facets/utils/VInteractionFacet.tsx +22 -34
- package/src/features/facets/utils/VUserFacet.tsx +1 -1
- package/src/features/layout/GenericPageNavHeader.tsx +9 -1
- package/src/features/layout/NotFoundView.tsx +1 -1
- package/src/features/magic-pdf/AnnotatedImageSlider.tsx +8 -16
- package/src/features/magic-pdf/ExtractedContentView.tsx +4 -4
- package/src/features/magic-pdf/MagicPdfView.tsx +1 -1
- package/src/features/oauth/McpConnectionsButton.test.tsx +79 -8
- package/src/features/oauth/McpConnectionsButton.tsx +6 -3
- package/src/features/oauth/McpConnectionsDialog.tsx +9 -3
- package/src/features/oauth/useMcpConnections.ts +33 -27
- package/src/features/pdf-viewer/PdfPageRenderer.tsx +2 -2
- package/src/features/pdf-viewer/PdfPageSlider.tsx +4 -4
- package/src/features/pdf-viewer/SimplePdfViewer.tsx +1 -1
- package/src/features/permissions/UserPermissionsProvider.test.tsx +172 -0
- package/src/features/permissions/UserPermissionsProvider.tsx +68 -21
- package/src/features/permissions/useRoleMappings.ts +105 -0
- package/src/features/store/collections/SelectCollection.tsx +1 -1
- package/src/features/store/objects/DocumentPreviewPanel.tsx +43 -53
- package/src/features/store/objects/DocumentTable.tsx +2 -2
- package/src/features/store/objects/components/DocumentIcon.tsx +4 -4
- package/src/features/store/objects/components/DocumentInput.tsx +3 -3
- package/src/features/store/objects/components/PropertiesEditorModal.tsx +2 -2
- package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +2 -2
- package/src/features/store/objects/layout/documentLayout.tsx +2 -4
- package/src/features/store/objects/selection/SelectionActions.tsx +1 -1
- package/src/features/store/types/IntakePolicyEditor.tsx +70 -36
- package/src/features/store/types/IntakePolicyForm.tsx +11 -3
- package/src/features/store/types/SelectContentTypeModal.tsx +1 -1
- package/src/features/user/UserAvatar.tsx +3 -3
- package/src/features/user/UserInfo.tsx +11 -16
- package/src/features/utils/index.ts +1 -0
- package/src/features/utils/interaction.test.tsx +93 -0
- package/src/features/utils/interaction.tsx +125 -0
- package/src/features/views/ViewResults.tsx +3 -3
- package/src/i18n/locales/ar.json +17 -1
- package/src/i18n/locales/de.json +13 -1
- package/src/i18n/locales/en.json +13 -1
- package/src/i18n/locales/es.json +13 -1
- package/src/i18n/locales/fr.json +13 -1
- package/src/i18n/locales/it.json +13 -1
- package/src/i18n/locales/ja.json +13 -1
- package/src/i18n/locales/ko.json +13 -1
- package/src/i18n/locales/pt.json +13 -1
- package/src/i18n/locales/ru.json +15 -1
- package/src/i18n/locales/tr.json +13 -1
- package/src/i18n/locales/zh-TW.json +13 -1
- package/src/i18n/locales/zh.json +13 -1
- package/src/layout/FullHeightLayout.tsx +2 -2
- package/src/layout/Navbar.tsx +5 -5
- package/src/layout/Sidebar.tsx +1 -1
- package/src/router/NestedNavigationContext.test.tsx +54 -0
- package/src/router/NestedNavigationContext.tsx +9 -2
- package/src/session/UserSessionProvider.tsx +2 -15
- package/src/session/auth/authState.test.ts +35 -0
- package/src/session/auth/authState.ts +42 -0
- package/src/session/auth/domainRouting.test.ts +169 -1
- package/src/session/auth/domainRouting.ts +89 -0
- package/src/session/auth/useAuthState.ts +5 -49
- package/src/session/index.ts +6 -0
- package/src/shell/SplashScreen.test.tsx +22 -0
- package/src/shell/SplashScreen.tsx +6 -2
- package/src/shell/VertesiaShell.tsx +1 -1
- package/src/shell/apps/AppProjectSelector.tsx +1 -1
- package/src/shell/apps/StandaloneApp.tsx +9 -9
- package/src/shell/login/SignInPrimitives.tsx +2 -2
- package/src/shell/login/SigninScreen.tsx +1 -1
- package/src/shell/login/SignupForm.tsx +2 -2
- package/src/shell/login/TerminalLogin.tsx +5 -5
- package/src/shell/login/UserInfo.tsx +2 -5
- package/src/shell/login/UserSessionMenu.tsx +2 -2
- package/src/widgets/Progress.tsx +2 -2
- package/src/widgets/form/Form.tsx +4 -4
- package/src/widgets/form/fields.tsx +2 -2
- package/src/widgets/json-view/JSONView.tsx +1 -6
- package/src/widgets/markdown/ArtifactEditingSurface.test.tsx +33 -29
- package/src/widgets/markdown/MarkdownRenderer.test.tsx +52 -0
- package/src/widgets/markdown/MermaidDiagram.tsx +2 -2
- package/src/widgets/markdown/remarkDirectiveHandler.ts +21 -5
- package/src/widgets/monacoEditor/MonacoEditor.tsx +4 -2
- package/src/widgets/monacoEditor/index.ts +1 -0
- package/src/widgets/monacoEditor/loadMonaco.test.ts +63 -0
- package/src/widgets/monacoEditor/loadMonaco.ts +70 -0
- package/src/widgets/properties/PropertiesView.tsx +1 -1
- package/src/widgets/schema-editor/editor/Editable.tsx +2 -2
- package/src/widgets/schema-editor/editor/PropertyEditor.tsx +1 -1
- package/src/widgets/schema-editor/editor/SchemaEditor.tsx +2 -2
- package/src/widgets/upload/DropZone.tsx +1 -1
- package/src/widgets/upload/UploadResultCategory.tsx +7 -7
- package/src/widgets/upload/UploadSummary.tsx +4 -4
- package/src/widgets/xml-viewer/components/XMLViewer.tsx +7 -3
- package/src/widgets/xml-viewer/hooks/useXMLViewer.test.ts +60 -7
- package/src/widgets/xml-viewer/hooks/useXMLViewer.ts +70 -16
- package/lib/features/agent/chat/DocumentTabBar.d.ts +0 -9
- package/lib/features/agent/chat/DocumentTabBar.d.ts.map +0 -1
- package/lib/features/agent/chat/DocumentTabBar.js +0 -9
- package/lib/features/agent/chat/DocumentTabBar.js.map +0 -1
- package/lib/vertesia-ui-i18n.BJBGsq-8.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.BJBGsq-8.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.BY5YG5cX.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.BY5YG5cX.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.Bd5_1BXO.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.Bd5_1BXO.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.Bvwej2HH.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.Bvwej2HH.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.CMT3f4gf.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.CMT3f4gf.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.D56DNPJW.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.D56DNPJW.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.DDzKLNx6.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.DDzKLNx6.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.D_Am1LpF.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.D_Am1LpF.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.DrZizgGV.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.DrZizgGV.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.DwHsq86z.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.DwHsq86z.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.PLpo0Bbz.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.PLpo0Bbz.chunk.js.map +0 -1
- package/lib/vertesia-ui-i18n.xVbXALqz.chunk.js +0 -5
- package/lib/vertesia-ui-i18n.xVbXALqz.chunk.js.map +0 -1
- package/src/features/agent/chat/DocumentTabBar.tsx +0 -41
|
@@ -326,9 +326,7 @@ function ImageTypeButton({ type, currentType, onClick, icon, tooltip }: ImageTyp
|
|
|
326
326
|
aria-pressed={isSelected}
|
|
327
327
|
className={clsx(
|
|
328
328
|
'p-1 rounded cursor-pointer transition-colors',
|
|
329
|
-
isSelected
|
|
330
|
-
? 'text-primary bg-primary/10'
|
|
331
|
-
: 'text-muted-foreground hover:text-foreground hover:bg-muted',
|
|
329
|
+
isSelected ? 'text-primary bg-primary/10' : 'text-muted hover:text-foreground hover:bg-muted',
|
|
332
330
|
)}
|
|
333
331
|
onClick={onClick}
|
|
334
332
|
>
|
|
@@ -355,25 +353,21 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
|
|
|
355
353
|
variant="unstyled"
|
|
356
354
|
className={clsx(
|
|
357
355
|
'p-1 rounded cursor-pointer transition-colors',
|
|
358
|
-
canZoomOut
|
|
359
|
-
? 'text-muted-foreground hover:text-foreground hover:bg-muted'
|
|
360
|
-
: 'text-muted-foreground/40 cursor-not-allowed',
|
|
356
|
+
canZoomOut ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40 cursor-not-allowed',
|
|
361
357
|
)}
|
|
362
358
|
onClick={onZoomOut}
|
|
363
359
|
disabled={!canZoomOut}
|
|
364
360
|
>
|
|
365
361
|
<Minus className="size-4" />
|
|
366
362
|
</Button>
|
|
367
|
-
<span className="text-xs text-muted
|
|
363
|
+
<span className="text-xs text-muted min-w-[32px] text-center">{zoom}%</span>
|
|
368
364
|
<Button
|
|
369
365
|
title={t('pdf.zoomIn')}
|
|
370
366
|
tooltipPlacement="bottom"
|
|
371
367
|
variant="unstyled"
|
|
372
368
|
className={clsx(
|
|
373
369
|
'p-1 rounded cursor-pointer transition-colors',
|
|
374
|
-
canZoomIn
|
|
375
|
-
? 'text-muted-foreground hover:text-foreground hover:bg-muted'
|
|
376
|
-
: 'text-muted-foreground/40 cursor-not-allowed',
|
|
370
|
+
canZoomIn ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40 cursor-not-allowed',
|
|
377
371
|
)}
|
|
378
372
|
onClick={onZoomIn}
|
|
379
373
|
disabled={!canZoomIn}
|
|
@@ -386,9 +380,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
|
|
|
386
380
|
variant="unstyled"
|
|
387
381
|
className={clsx(
|
|
388
382
|
'p-1 rounded cursor-pointer transition-colors',
|
|
389
|
-
zoom !== DEFAULT_ZOOM
|
|
390
|
-
? 'text-muted-foreground hover:text-foreground hover:bg-muted'
|
|
391
|
-
: 'text-muted-foreground/40',
|
|
383
|
+
zoom !== DEFAULT_ZOOM ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40',
|
|
392
384
|
)}
|
|
393
385
|
onClick={onFitToView}
|
|
394
386
|
>
|
|
@@ -431,10 +423,10 @@ function PageThumbnail({ pageNumber, currentPage, aspectRatio, zoom, url, onSele
|
|
|
431
423
|
{url ? (
|
|
432
424
|
<img src={url} alt={`Page ${pageNumber}`} className="w-full" />
|
|
433
425
|
) : (
|
|
434
|
-
<Loader2 className="w-6 h-6 animate-spin text-muted
|
|
426
|
+
<Loader2 className="w-6 h-6 animate-spin text-muted" />
|
|
435
427
|
)}
|
|
436
428
|
</Button>
|
|
437
|
-
<Center className="text-sm text-muted
|
|
429
|
+
<Center className="text-sm text-muted pt-1 font-semibold">{pageNumber}</Center>
|
|
438
430
|
</div>
|
|
439
431
|
);
|
|
440
432
|
}
|
|
@@ -479,7 +471,7 @@ function PageNavigator({ currentPage, totalPages, onChange }: PageNavigatorProps
|
|
|
479
471
|
};
|
|
480
472
|
|
|
481
473
|
return (
|
|
482
|
-
<div className="flex items-center gap-1 text-xs text-muted
|
|
474
|
+
<div className="flex items-center gap-1 text-xs text-muted">
|
|
483
475
|
<span>{t('pdf.page')}</span>
|
|
484
476
|
<input
|
|
485
477
|
ref={inputRef}
|
|
@@ -7,7 +7,7 @@ import type { ViewType } from './types';
|
|
|
7
7
|
function LoadingSpinner({ className }: { className?: string }) {
|
|
8
8
|
return (
|
|
9
9
|
<div className={`flex items-center justify-center ${className || ''}`}>
|
|
10
|
-
<Loader2 className="w-6 h-6 animate-spin text-
|
|
10
|
+
<Loader2 className="w-6 h-6 animate-spin text-muted" />
|
|
11
11
|
</div>
|
|
12
12
|
);
|
|
13
13
|
}
|
|
@@ -61,7 +61,7 @@ function JsonPageLayoutView({ pageNumber }: JsonPageLayoutViewProps) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (error) {
|
|
64
|
-
return <div className="px-4 py-2 text-
|
|
64
|
+
return <div className="px-4 py-2 text-destructive text-sm">{error}</div>;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
return content ? <JSONCode className="w-full" data={content} /> : null;
|
|
@@ -96,13 +96,13 @@ function MarkdownPageView({ pageNumber }: MarkdownPageViewProps) {
|
|
|
96
96
|
return (
|
|
97
97
|
<div className="h-full flex flex-col items-center justify-center gap-2">
|
|
98
98
|
<LoadingSpinner />
|
|
99
|
-
<span className="text-sm text-muted
|
|
99
|
+
<span className="text-sm text-muted">Loading...</span>
|
|
100
100
|
</div>
|
|
101
101
|
);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
if (error) {
|
|
105
|
-
return <div className="px-4 py-2 text-
|
|
105
|
+
return <div className="px-4 py-2 text-destructive text-sm">{error}</div>;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
return (
|
|
@@ -144,7 +144,7 @@ function MagicPdfViewImpl({ object, onClose }: _MagicPdfViewProps) {
|
|
|
144
144
|
<div className="flex items-center gap-x-2">
|
|
145
145
|
<DownloadPopover object={object} />
|
|
146
146
|
</div>
|
|
147
|
-
<span className="text-xs text-muted
|
|
147
|
+
<span className="text-xs text-muted">{t('pdf.pageOf', { pageNumber, totalPages })}</span>
|
|
148
148
|
<div className="flex items-center gap-x-2">
|
|
149
149
|
{!!onClose && (
|
|
150
150
|
<Button variant="ghost" size="xs" onClick={onClose} title={t('pdf.close')}>
|
|
@@ -47,8 +47,23 @@ describe('MCP connection controls', () => {
|
|
|
47
47
|
manifest: {
|
|
48
48
|
name: 'mcp-app',
|
|
49
49
|
title: 'MCP App',
|
|
50
|
-
oauth_providers: {},
|
|
51
50
|
tool_collections: [
|
|
51
|
+
{
|
|
52
|
+
type: 'mcp',
|
|
53
|
+
id: 'service-account',
|
|
54
|
+
name: 'Service Account',
|
|
55
|
+
namespace: 'service_account',
|
|
56
|
+
url: 'https://service-account-mcp.example.com',
|
|
57
|
+
oauth_provider: 'service-account',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'mcp',
|
|
61
|
+
id: 'service-calendar',
|
|
62
|
+
name: 'Service Calendar',
|
|
63
|
+
namespace: 'service_calendar',
|
|
64
|
+
url: 'https://service-calendar-mcp.example.com',
|
|
65
|
+
oauth_provider: 'service-account',
|
|
66
|
+
},
|
|
52
67
|
{
|
|
53
68
|
type: 'mcp',
|
|
54
69
|
id: 'jira',
|
|
@@ -86,11 +101,23 @@ describe('MCP connection controls', () => {
|
|
|
86
101
|
auth: 'api_key',
|
|
87
102
|
},
|
|
88
103
|
],
|
|
104
|
+
oauth_providers: {
|
|
105
|
+
'service-account': {
|
|
106
|
+
display_name: 'Service Account OAuth',
|
|
107
|
+
grant_type: 'client_credentials',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
89
110
|
},
|
|
90
|
-
oauth_collection_ids: ['jira', 'miro', 'linear', 'github'],
|
|
111
|
+
oauth_collection_ids: ['jira', 'miro', 'linear', 'github', 'service-account', 'service-calendar'],
|
|
91
112
|
},
|
|
92
113
|
]);
|
|
93
114
|
mocks.getStatus.mockResolvedValue([
|
|
115
|
+
{
|
|
116
|
+
authenticated: true,
|
|
117
|
+
collection_id: 'service-account',
|
|
118
|
+
collection_name: 'Service Account',
|
|
119
|
+
mcp_server_url: 'https://service-account-mcp.example.com',
|
|
120
|
+
},
|
|
94
121
|
{
|
|
95
122
|
authenticated: true,
|
|
96
123
|
collection_id: 'jira',
|
|
@@ -124,7 +151,9 @@ describe('MCP connection controls', () => {
|
|
|
124
151
|
]);
|
|
125
152
|
const onChange = vi.fn();
|
|
126
153
|
|
|
127
|
-
renderWithProviders(
|
|
154
|
+
renderWithProviders(
|
|
155
|
+
<McpConnectionsInlineList disabledCollections={['linear', 'service-calendar']} onChange={onChange} />,
|
|
156
|
+
);
|
|
128
157
|
|
|
129
158
|
await screen.findByText('Jira');
|
|
130
159
|
await waitFor(() => expect(mocks.getStatus).toHaveBeenCalledTimes(1));
|
|
@@ -133,16 +162,25 @@ describe('MCP connection controls', () => {
|
|
|
133
162
|
expect(screen.getByText('Linear')).not.toBeNull();
|
|
134
163
|
expect(screen.getByText('GitHub')).not.toBeNull();
|
|
135
164
|
expect(screen.getByText('API Key Tools')).not.toBeNull();
|
|
165
|
+
expect(screen.getByText('Service Account')).not.toBeNull();
|
|
166
|
+
expect(screen.getByText('Service Calendar')).not.toBeNull();
|
|
167
|
+
expect(screen.queryByText('Service Account OAuth')).toBeNull();
|
|
136
168
|
const apiKeyBadge = screen.getByText('API key');
|
|
137
169
|
expect(apiKeyBadge.className).toContain('w-32');
|
|
170
|
+
const managedByAppBadges = screen.getAllByText('Managed by app');
|
|
171
|
+
expect(managedByAppBadges).toHaveLength(2);
|
|
172
|
+
expect(managedByAppBadges[0].className).toContain('w-32');
|
|
138
173
|
expect(screen.queryByText('Connected')).toBeNull();
|
|
139
174
|
expect(screen.getAllByRole('button', { name: 'Disconnect' })).toHaveLength(3);
|
|
140
175
|
const connectButton = screen.getByRole('button', { name: 'Connect' });
|
|
141
176
|
const disconnectButton = screen.getAllByRole('button', { name: 'Disconnect' })[0];
|
|
142
177
|
expect(connectButton.className).toContain('w-32');
|
|
143
178
|
expect(disconnectButton.className).toContain('w-32');
|
|
144
|
-
expect(screen.getAllByText('Enabled')).toHaveLength(
|
|
145
|
-
expect(screen.
|
|
179
|
+
expect(screen.getAllByText('Enabled')).toHaveLength(5);
|
|
180
|
+
expect(screen.getAllByText('Disabled')).toHaveLength(2);
|
|
181
|
+
|
|
182
|
+
fireEvent.click(screen.getByRole('switch', { name: 'Activate Service Calendar for this conversation' }));
|
|
183
|
+
expect(onChange).toHaveBeenCalledWith(['linear']);
|
|
146
184
|
});
|
|
147
185
|
|
|
148
186
|
it('renders MCP rows before connection statuses finish loading', async () => {
|
|
@@ -207,8 +245,29 @@ describe('MCP connection controls', () => {
|
|
|
207
245
|
manifest: {
|
|
208
246
|
name: 'jira-app',
|
|
209
247
|
title: 'Jira',
|
|
210
|
-
oauth_providers: {
|
|
248
|
+
oauth_providers: {
|
|
249
|
+
'service-account': {
|
|
250
|
+
display_name: 'Service Account OAuth',
|
|
251
|
+
grant_type: 'client_credentials',
|
|
252
|
+
},
|
|
253
|
+
},
|
|
211
254
|
tool_collections: [
|
|
255
|
+
{
|
|
256
|
+
type: 'mcp',
|
|
257
|
+
id: 'service-account',
|
|
258
|
+
name: 'Service Account',
|
|
259
|
+
namespace: 'service_account',
|
|
260
|
+
url: 'https://service-account-mcp.example.com',
|
|
261
|
+
oauth_provider: 'service-account',
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
type: 'mcp',
|
|
265
|
+
id: 'service-calendar',
|
|
266
|
+
name: 'Service Calendar',
|
|
267
|
+
namespace: 'service_calendar',
|
|
268
|
+
url: 'https://service-calendar-mcp.example.com',
|
|
269
|
+
oauth_provider: 'service-account',
|
|
270
|
+
},
|
|
212
271
|
{
|
|
213
272
|
type: 'mcp',
|
|
214
273
|
id: 'jira',
|
|
@@ -225,10 +284,16 @@ describe('MCP connection controls', () => {
|
|
|
225
284
|
},
|
|
226
285
|
],
|
|
227
286
|
},
|
|
228
|
-
oauth_collection_ids: ['jira', 'github'],
|
|
287
|
+
oauth_collection_ids: ['jira', 'github', 'service-account', 'service-calendar'],
|
|
229
288
|
},
|
|
230
289
|
]);
|
|
231
290
|
mocks.getStatus.mockResolvedValue([
|
|
291
|
+
{
|
|
292
|
+
authenticated: true,
|
|
293
|
+
collection_id: 'service-account',
|
|
294
|
+
collection_name: 'Service Account',
|
|
295
|
+
mcp_server_url: 'https://service-account-mcp.example.com',
|
|
296
|
+
},
|
|
232
297
|
{
|
|
233
298
|
authenticated: true,
|
|
234
299
|
collection_id: 'jira',
|
|
@@ -254,12 +319,18 @@ describe('MCP connection controls', () => {
|
|
|
254
319
|
|
|
255
320
|
const menuItem = await screen.findByText('MCP');
|
|
256
321
|
expect(menuItem).not.toBeNull();
|
|
257
|
-
expect(screen.getByText('
|
|
322
|
+
expect(screen.getByText('3')).not.toBeNull();
|
|
258
323
|
|
|
259
324
|
fireEvent.click(menuItem);
|
|
260
325
|
|
|
261
326
|
await waitFor(() => {
|
|
262
327
|
expect(screen.getByText('Manage the MCP servers available to this conversation.')).not.toBeNull();
|
|
263
328
|
});
|
|
329
|
+
expect(screen.getByText('Service Account')).not.toBeNull();
|
|
330
|
+
expect(screen.getByText('Service Calendar')).not.toBeNull();
|
|
331
|
+
expect(screen.queryByText('Service Account OAuth')).toBeNull();
|
|
332
|
+
expect(screen.getAllByText('Managed by app')).toHaveLength(2);
|
|
333
|
+
expect(screen.getAllByRole('button', { name: 'Disconnect' })).toHaveLength(1);
|
|
334
|
+
expect(screen.getAllByRole('button', { name: 'Connect' })).toHaveLength(1);
|
|
264
335
|
});
|
|
265
336
|
});
|
|
@@ -128,6 +128,7 @@ export function McpConnectionsInlineList({
|
|
|
128
128
|
{groups.map((group) => {
|
|
129
129
|
const active = !isGroupDisabled(group, disabledCollections);
|
|
130
130
|
const connected = group.authStatus?.authenticated === true;
|
|
131
|
+
const interactiveOAuth = group.authType === 'oauth' && group.oauthGrantType !== 'client_credentials';
|
|
131
132
|
const StatusIcon = connected ? Link2 : Link2Off;
|
|
132
133
|
return (
|
|
133
134
|
<div key={group.key} className="flex flex-wrap items-center gap-x-3 gap-y-2 py-2 text-sm">
|
|
@@ -155,7 +156,7 @@ export function McpConnectionsInlineList({
|
|
|
155
156
|
</span>
|
|
156
157
|
</VTooltip>
|
|
157
158
|
</div>
|
|
158
|
-
{statusLoading && !group.authStatus ? (
|
|
159
|
+
{interactiveOAuth && statusLoading && !group.authStatus ? (
|
|
159
160
|
<Button
|
|
160
161
|
variant="outline"
|
|
161
162
|
size="sm"
|
|
@@ -165,7 +166,7 @@ export function McpConnectionsInlineList({
|
|
|
165
166
|
>
|
|
166
167
|
<Spinner className="size-3" />
|
|
167
168
|
</Button>
|
|
168
|
-
) :
|
|
169
|
+
) : interactiveOAuth ? (
|
|
169
170
|
<RemoteMcpConnectionButton
|
|
170
171
|
appId={group.appId}
|
|
171
172
|
collectionId={group.representativeId}
|
|
@@ -178,7 +179,9 @@ export function McpConnectionsInlineList({
|
|
|
178
179
|
/>
|
|
179
180
|
) : (
|
|
180
181
|
<Badge variant="outline" className="h-6 w-32 justify-center px-2 text-xs">
|
|
181
|
-
{
|
|
182
|
+
{group.authType === 'api_key'
|
|
183
|
+
? t('mcpConnections.apiKey')
|
|
184
|
+
: t('mcpConnections.managedByApp')}
|
|
182
185
|
</Badge>
|
|
183
186
|
)}
|
|
184
187
|
{onChange && (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
2
2
|
import { Link2, Link2Off } from 'lucide-react';
|
|
3
|
-
import { Button, Modal, ModalBody, ModalTitle, Spinner, Switch, VTooltip } from '../../core/index.js';
|
|
3
|
+
import { Badge, Button, Modal, ModalBody, ModalTitle, Spinner, Switch, VTooltip } from '../../core/index.js';
|
|
4
4
|
import { RemoteMcpConnectionButton } from './RemoteMcpConnectionButton.js';
|
|
5
5
|
import { isGroupDisabled, type McpConnectionGroup, toggleGroupDisabled } from './useMcpConnections.js';
|
|
6
6
|
|
|
@@ -62,6 +62,8 @@ export function McpConnectionsDialog({
|
|
|
62
62
|
{groups.map((group) => {
|
|
63
63
|
const active = !isGroupDisabled(group, disabledCollections);
|
|
64
64
|
const connected = group.authStatus?.authenticated === true;
|
|
65
|
+
const interactiveOAuth =
|
|
66
|
+
group.authType === 'oauth' && group.oauthGrantType !== 'client_credentials';
|
|
65
67
|
const StatusIcon = connected ? Link2 : Link2Off;
|
|
66
68
|
return (
|
|
67
69
|
<div key={group.key} className="flex items-center justify-between gap-3 py-3">
|
|
@@ -92,7 +94,7 @@ export function McpConnectionsDialog({
|
|
|
92
94
|
</VTooltip>
|
|
93
95
|
</div>
|
|
94
96
|
<div className="flex shrink-0 items-center gap-3">
|
|
95
|
-
{statusLoading && !group.authStatus ? (
|
|
97
|
+
{interactiveOAuth && statusLoading && !group.authStatus ? (
|
|
96
98
|
<Button
|
|
97
99
|
variant="outline"
|
|
98
100
|
size="sm"
|
|
@@ -102,7 +104,7 @@ export function McpConnectionsDialog({
|
|
|
102
104
|
>
|
|
103
105
|
<Spinner className="size-3" />
|
|
104
106
|
</Button>
|
|
105
|
-
) :
|
|
107
|
+
) : interactiveOAuth ? (
|
|
106
108
|
<RemoteMcpConnectionButton
|
|
107
109
|
appId={group.appId}
|
|
108
110
|
collectionId={group.representativeId}
|
|
@@ -113,6 +115,10 @@ export function McpConnectionsDialog({
|
|
|
113
115
|
showDisconnect
|
|
114
116
|
readOnly={readOnly}
|
|
115
117
|
/>
|
|
118
|
+
) : group.authType === 'oauth' ? (
|
|
119
|
+
<Badge variant="outline" className="h-6 w-32 justify-center px-2 text-xs">
|
|
120
|
+
{t('mcpConnections.managedByApp')}
|
|
121
|
+
</Badge>
|
|
116
122
|
) : null}
|
|
117
123
|
{onChange && (
|
|
118
124
|
<Switch
|
|
@@ -7,22 +7,21 @@ import {
|
|
|
7
7
|
import { useUserSession } from '@vertesia/ui/session';
|
|
8
8
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
* A group of MCP tool collections that share authentication and activation state.
|
|
12
|
-
*/
|
|
10
|
+
/** A visible MCP collection row. OAuth authentication may be shared with sibling rows. */
|
|
13
11
|
export interface McpConnectionGroup {
|
|
14
12
|
key: string;
|
|
15
13
|
appId: string;
|
|
16
14
|
appName: string;
|
|
17
|
-
/** Display label
|
|
15
|
+
/** Display label for the MCP collection. */
|
|
18
16
|
label: string;
|
|
19
|
-
/**
|
|
17
|
+
/** Collection ID used for status and OAuth operations; shared when collections use the same provider. */
|
|
20
18
|
representativeId: string;
|
|
21
|
-
/**
|
|
19
|
+
/** Collection IDs controlled by this row's per-conversation activation toggle. */
|
|
22
20
|
memberIds: string[];
|
|
23
|
-
/**
|
|
21
|
+
/** Collection names represented by this row. */
|
|
24
22
|
memberNames: string[];
|
|
25
23
|
authType: 'oauth' | 'api_key';
|
|
24
|
+
oauthGrantType?: 'authorization_code' | 'client_credentials';
|
|
26
25
|
authStatus?: OAuthAuthStatus;
|
|
27
26
|
}
|
|
28
27
|
|
|
@@ -80,29 +79,36 @@ export function useMcpConnections() {
|
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
for (const [providerKey, cols] of providerMap) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
const representativeId = cols[0].id;
|
|
83
|
+
for (const col of cols) {
|
|
84
|
+
allGroups.push({
|
|
85
|
+
key: `${inst.id}:provider:${providerKey}:${col.id}`,
|
|
86
|
+
appId: inst.id,
|
|
87
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
88
|
+
label: col.name,
|
|
89
|
+
representativeId,
|
|
90
|
+
memberIds: [col.id],
|
|
91
|
+
memberNames: [col.name],
|
|
92
|
+
authType: 'oauth',
|
|
93
|
+
oauthGrantType: manifestProviders[providerKey]?.grant_type,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
for (const [oauthApp, cols] of oauthAppMap) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
const representativeId = cols[0].id;
|
|
100
|
+
for (const col of cols) {
|
|
101
|
+
allGroups.push({
|
|
102
|
+
key: `${inst.id}:oauthapp:${oauthApp}:${col.id}`,
|
|
103
|
+
appId: inst.id,
|
|
104
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
105
|
+
label: col.name,
|
|
106
|
+
representativeId,
|
|
107
|
+
memberIds: [col.id],
|
|
108
|
+
memberNames: [col.name],
|
|
109
|
+
authType: 'oauth',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
106
112
|
}
|
|
107
113
|
|
|
108
114
|
for (const col of individualCols) {
|
|
@@ -11,7 +11,7 @@ function LoadingSpinner({ className, size = 'md' }: { className?: string; size?:
|
|
|
11
11
|
};
|
|
12
12
|
return (
|
|
13
13
|
<div className={`flex items-center justify-center ${className || ''}`}>
|
|
14
|
-
<Loader2 className={`${sizeClasses[size]} animate-spin text-muted
|
|
14
|
+
<Loader2 className={`${sizeClasses[size]} animate-spin text-muted`} />
|
|
15
15
|
</div>
|
|
16
16
|
);
|
|
17
17
|
}
|
|
@@ -327,7 +327,7 @@ function VirtualizedThumbnail({
|
|
|
327
327
|
className="flex items-center justify-center bg-muted"
|
|
328
328
|
style={{ height: placeholderHeight, width: width || '100%' }}
|
|
329
329
|
>
|
|
330
|
-
<span className="text-muted
|
|
330
|
+
<span className="text-muted text-xs">{pageNumber}</span>
|
|
331
331
|
</div>
|
|
332
332
|
);
|
|
333
333
|
|
|
@@ -367,7 +367,7 @@ export function PdfPageSlider({
|
|
|
367
367
|
</Button>
|
|
368
368
|
<Center
|
|
369
369
|
className={clsx(
|
|
370
|
-
'text-muted
|
|
370
|
+
'text-muted font-semibold',
|
|
371
371
|
compact ? 'text-xs pt-0.5' : 'text-sm pt-1',
|
|
372
372
|
)}
|
|
373
373
|
>
|
|
@@ -426,7 +426,7 @@ function PageNavigator({ currentPage, totalPages, onChange }: PageNavigatorProps
|
|
|
426
426
|
};
|
|
427
427
|
|
|
428
428
|
return (
|
|
429
|
-
<div className="flex items-center gap-1 text-xs text-muted
|
|
429
|
+
<div className="flex items-center gap-1 text-xs text-muted">
|
|
430
430
|
<span>{t('pdf.page')}</span>
|
|
431
431
|
<input
|
|
432
432
|
ref={inputRef}
|
|
@@ -457,7 +457,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
|
|
|
457
457
|
<Button variant="ghost" size="xs" onClick={onZoomOut} isDisabled={!canZoomOut} title={t('pdf.zoomOut')}>
|
|
458
458
|
<Minus />
|
|
459
459
|
</Button>
|
|
460
|
-
<span className="text-xs text-muted
|
|
460
|
+
<span className="text-xs text-muted min-w-[32px] text-center">{zoom}%</span>
|
|
461
461
|
<Button variant="ghost" size="xs" onClick={onZoomIn} isDisabled={!canZoomIn} title={t('pdf.zoomIn')}>
|
|
462
462
|
<Plus />
|
|
463
463
|
</Button>
|
|
@@ -466,7 +466,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
|
|
|
466
466
|
size="xs"
|
|
467
467
|
onClick={onFitToView}
|
|
468
468
|
title={t('pdf.fitToWidth')}
|
|
469
|
-
className={zoom === DEFAULT_ZOOM ? 'text-muted
|
|
469
|
+
className={zoom === DEFAULT_ZOOM ? 'text-muted/40' : undefined}
|
|
470
470
|
>
|
|
471
471
|
<Maximize />
|
|
472
472
|
</Button>
|
|
@@ -135,7 +135,7 @@ export function SimplePdfViewer({ object, url, source, className }: SimplePdfVie
|
|
|
135
135
|
title={t('pdf.fullscreen')}
|
|
136
136
|
tooltipPlacement="bottom"
|
|
137
137
|
variant="unstyled"
|
|
138
|
-
className="p-1 rounded cursor-pointer transition-colors text-muted
|
|
138
|
+
className="p-1 rounded cursor-pointer transition-colors text-muted hover:text-foreground hover:bg-muted"
|
|
139
139
|
onClick={() => setIsFullscreen(true)}
|
|
140
140
|
>
|
|
141
141
|
<Maximize2 className="size-4" />
|