@vertesia/ui 1.4.0-dev.20260615.042549Z → 1.4.0-dev.20260629.130134Z
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/shadcn/dropdown.d.ts.map +1 -1
- package/lib/core/components/shadcn/dropdown.js +6 -2
- package/lib/core/components/shadcn/dropdown.js.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.js +9 -2
- package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/core/components/shadcn/modal/ConfirmModal.d.ts +16 -1
- package/lib/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -1
- package/lib/core/components/shadcn/modal/ConfirmModal.js +25 -3
- package/lib/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.js +1 -1
- package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
- package/lib/core/components/shadcn/popover.d.ts.map +1 -1
- package/lib/core/components/shadcn/popover.js +3 -1
- package/lib/core/components/shadcn/popover.js.map +1 -1
- package/lib/core/components/shadcn/switch.js +3 -3
- package/lib/core/components/shadcn/switch.js.map +1 -1
- package/lib/core/components/shadcn/tabs.js +1 -1
- package/lib/core/components/shadcn/tabs.js.map +1 -1
- package/lib/core/components/shadcn/tooltip.d.ts.map +1 -1
- package/lib/core/components/shadcn/tooltip.js +3 -1
- package/lib/core/components/shadcn/tooltip.js.map +1 -1
- package/lib/env/index.d.ts +0 -19
- package/lib/env/index.d.ts.map +1 -1
- package/lib/env/index.js +0 -6
- package/lib/env/index.js.map +1 -1
- package/lib/features/agent/PayloadBuilder.d.ts +4 -0
- package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
- package/lib/features/agent/PayloadBuilder.js +16 -0
- package/lib/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/features/agent/chat/AgentApprovalModeSelector.d.ts +10 -0
- package/lib/features/agent/chat/AgentApprovalModeSelector.d.ts.map +1 -0
- package/lib/features/agent/chat/AgentApprovalModeSelector.js +50 -0
- package/lib/features/agent/chat/AgentApprovalModeSelector.js.map +1 -0
- package/lib/features/agent/chat/AgentChatFixtureReplay.d.ts +2 -1
- package/lib/features/agent/chat/AgentChatFixtureReplay.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentChatFixtureReplay.js +3 -3
- package/lib/features/agent/chat/AgentChatFixtureReplay.js.map +1 -1
- package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts +5 -2
- package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRequestInputOverlay.js +41 -7
- package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.js +133 -12
- package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/features/agent/chat/AnimatedThinkingDots.js +1 -1
- package/lib/features/agent/chat/AnimatedThinkingDots.js.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.js +11 -65
- package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.d.ts +3 -1
- package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.js +4 -3
- package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.d.ts +10 -2
- package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.js +526 -117
- package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.d.ts +8 -0
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js +19 -0
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +8 -2
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +551 -92
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js +7 -6
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.js +2 -2
- package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.d.ts +8 -0
- package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.d.ts.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.js +61 -0
- package/lib/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.js.map +1 -0
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +15 -2
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +28 -38
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +3 -2
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js +2 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js.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/SummaryConversation.d.ts +5 -0
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +59 -4
- package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +2 -2
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts +9 -0
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +180 -0
- package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts +6 -0
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.js +92 -2
- package/lib/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/features/agent/chat/clipboardFiles.d.ts +15 -0
- package/lib/features/agent/chat/clipboardFiles.d.ts.map +1 -0
- package/lib/features/agent/chat/clipboardFiles.js +35 -0
- package/lib/features/agent/chat/clipboardFiles.js.map +1 -0
- package/lib/features/agent/chat/hooks/useAgentStream.d.ts +6 -0
- package/lib/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.js +218 -37
- package/lib/features/agent/chat/hooks/useAgentStream.js.map +1 -1
- package/lib/features/agent/chat/hooks/useArtifacts.d.ts +1 -8
- package/lib/features/agent/chat/hooks/useArtifacts.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useArtifacts.js +10 -28
- package/lib/features/agent/chat/hooks/useArtifacts.js.map +1 -1
- package/lib/features/agent/chat/index.d.ts +2 -1
- package/lib/features/agent/chat/index.d.ts.map +1 -1
- package/lib/features/agent/chat/index.js +2 -1
- package/lib/features/agent/chat/index.js.map +1 -1
- package/lib/features/agent/chat/workstreams.d.ts +1 -0
- package/lib/features/agent/chat/workstreams.d.ts.map +1 -1
- package/lib/features/agent/chat/workstreams.js +28 -0
- package/lib/features/agent/chat/workstreams.js.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.d.ts +10 -1
- package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js +6 -3
- package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/features/facets/CollectionsFacetsNav.d.ts +10 -1
- package/lib/features/facets/CollectionsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/CollectionsFacetsNav.js +14 -5
- package/lib/features/facets/CollectionsFacetsNav.js.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.d.ts +10 -1
- package/lib/features/facets/PromptsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.js +14 -5
- package/lib/features/facets/PromptsFacetsNav.js.map +1 -1
- package/lib/features/facets/RunsFacetsNav.d.ts +10 -1
- package/lib/features/facets/RunsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/RunsFacetsNav.js +14 -5
- package/lib/features/facets/RunsFacetsNav.js.map +1 -1
- package/lib/features/index.d.ts +0 -1
- package/lib/features/index.d.ts.map +1 -1
- package/lib/features/index.js +0 -1
- package/lib/features/index.js.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.d.ts +30 -0
- package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -0
- package/lib/features/oauth/McpConnectionsButton.js +70 -0
- package/lib/features/oauth/McpConnectionsButton.js.map +1 -0
- package/lib/features/oauth/McpConnectionsDialog.d.ts +25 -0
- package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -0
- package/lib/features/oauth/McpConnectionsDialog.js +26 -0
- package/lib/features/oauth/McpConnectionsDialog.js.map +1 -0
- package/lib/features/oauth/RemoteMcpConnectionButton.d.ts.map +1 -1
- package/lib/features/oauth/RemoteMcpConnectionButton.js +14 -6
- package/lib/features/oauth/RemoteMcpConnectionButton.js.map +1 -1
- package/lib/features/oauth/index.d.ts +3 -0
- package/lib/features/oauth/index.d.ts.map +1 -1
- package/lib/features/oauth/index.js +3 -0
- package/lib/features/oauth/index.js.map +1 -1
- package/lib/features/oauth/useMcpConnections.d.ts +44 -0
- package/lib/features/oauth/useMcpConnections.d.ts.map +1 -0
- package/lib/features/oauth/useMcpConnections.js +168 -0
- package/lib/features/oauth/useMcpConnections.js.map +1 -0
- package/lib/features/permissions/UserPermissionsProvider.d.ts +4 -6
- package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
- package/lib/features/permissions/UserPermissionsProvider.js +40 -42
- package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
- package/lib/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentPreviewPanel.js +2 -1
- package/lib/features/store/objects/DocumentPreviewPanel.js.map +1 -1
- package/lib/features/store/objects/DocumentQuickFilter.d.ts +23 -0
- package/lib/features/store/objects/DocumentQuickFilter.d.ts.map +1 -0
- package/lib/features/store/objects/DocumentQuickFilter.js +30 -0
- package/lib/features/store/objects/DocumentQuickFilter.js.map +1 -0
- package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentSearchResults.js +17 -1
- package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.js +17 -74
- package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/features/store/objects/layout/DocumentTableColumn.d.ts +7 -1
- package/lib/features/store/objects/layout/DocumentTableColumn.d.ts.map +1 -1
- package/lib/features/store/objects/layout/DocumentTableColumn.js +27 -3
- package/lib/features/store/objects/layout/DocumentTableColumn.js.map +1 -1
- package/lib/features/store/objects/layout/documentLayout.js +1 -1
- package/lib/features/store/objects/layout/renderers.d.ts +2 -1
- package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
- package/lib/features/store/objects/layout/renderers.js +27 -20
- package/lib/features/store/objects/layout/renderers.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesSearch.js +4 -1
- package/lib/features/store/types/ContentObjectTypesSearch.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts +2 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.js +8 -3
- package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
- package/lib/i18n/instance.d.ts.map +1 -1
- package/lib/i18n/instance.js +1 -0
- package/lib/i18n/instance.js.map +1 -1
- package/lib/i18n/locales/ar.json +72 -45
- package/lib/i18n/locales/de.json +65 -34
- package/lib/i18n/locales/en.json +63 -47
- package/lib/i18n/locales/es.json +65 -35
- package/lib/i18n/locales/fr.json +65 -35
- package/lib/i18n/locales/it.json +72 -42
- package/lib/i18n/locales/ja.json +72 -41
- package/lib/i18n/locales/ko.json +72 -41
- package/lib/i18n/locales/pt.json +72 -42
- package/lib/i18n/locales/ru.json +72 -43
- package/lib/i18n/locales/tr.json +72 -41
- package/lib/i18n/locales/zh-TW.json +72 -41
- package/lib/i18n/locales/zh.json +72 -41
- package/lib/session/UserSession.d.ts +0 -6
- package/lib/session/UserSession.d.ts.map +1 -1
- package/lib/session/UserSession.js +0 -15
- package/lib/session/UserSession.js.map +1 -1
- package/lib/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/session/UserSessionProvider.js +39 -98
- package/lib/session/UserSessionProvider.js.map +1 -1
- package/lib/session/auth/composable.d.ts.map +1 -1
- package/lib/session/auth/composable.js +3 -33
- package/lib/session/auth/composable.js.map +1 -1
- package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
- package/lib/shell/login/SignInPrimitives.js +3 -2
- package/lib/shell/login/SignInPrimitives.js.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 +1 -1
- package/lib/vertesia-ui-i18n.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/lib/widgets/schema-editor/editor/Editable.js +1 -1
- package/lib/widgets/schema-editor/editor/Editable.js.map +1 -1
- package/llms.txt +70 -70
- package/package.json +35 -32
- package/src/core/components/shadcn/dropdown.tsx +2 -0
- package/src/core/components/shadcn/filters/filterBar.tsx +9 -2
- package/src/core/components/shadcn/modal/ConfirmModal.tsx +65 -3
- package/src/core/components/shadcn/modal/dialog.tsx +1 -1
- package/src/core/components/shadcn/popover.tsx +1 -0
- package/src/core/components/shadcn/switch.tsx +4 -4
- package/src/core/components/shadcn/tabs.tsx +1 -1
- package/src/core/components/shadcn/tooltip.tsx +1 -0
- package/src/env/index.ts +0 -24
- package/src/features/agent/PayloadBuilder.tsx +18 -0
- package/src/features/agent/chat/AgentApprovalModeSelector.tsx +130 -0
- package/src/features/agent/chat/AgentChatFixtureReplay.test.tsx +22 -2
- package/src/features/agent/chat/AgentChatFixtureReplay.tsx +33 -27
- package/src/features/agent/chat/AgentRequestInputOverlay.test.tsx +122 -0
- package/src/features/agent/chat/AgentRequestInputOverlay.tsx +91 -17
- package/src/features/agent/chat/AgentRightPanel.tsx +238 -50
- package/src/features/agent/chat/AnimatedThinkingDots.tsx +1 -1
- package/src/features/agent/chat/ArtifactsTab.tsx +21 -155
- package/src/features/agent/chat/AskUserWidget.tsx +6 -2
- package/src/features/agent/chat/ModernAgentConversation.test.tsx +1157 -47
- package/src/features/agent/chat/ModernAgentConversation.tsx +703 -136
- package/src/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.tsx +74 -0
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +1420 -126
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +934 -111
- package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.tsx +31 -40
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +28 -28
- package/src/features/agent/chat/ModernAgentOutput/MessageDeliveryStatus.tsx +83 -0
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.test.tsx +38 -2
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +121 -98
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +7 -1
- package/src/features/agent/chat/ModernAgentOutput/SlideInPanel.tsx +3 -3
- package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +82 -2
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +2 -2
- package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +216 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +149 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +103 -2
- package/src/features/agent/chat/clipboardFiles.ts +33 -0
- package/src/features/agent/chat/hooks/useAgentStream.test.tsx +355 -4
- package/src/features/agent/chat/hooks/useAgentStream.ts +270 -43
- package/src/features/agent/chat/hooks/useArtifacts.ts +11 -44
- package/src/features/agent/chat/index.ts +10 -1
- package/src/features/agent/chat/workstreams.ts +42 -0
- package/src/features/facets/AgentRunnerFacetsNav.tsx +23 -3
- package/src/features/facets/CollectionsFacetsNav.tsx +30 -5
- package/src/features/facets/PromptsFacetsNav.tsx +30 -5
- package/src/features/facets/RunsFacetsNav.tsx +32 -5
- package/src/features/index.ts +0 -1
- package/src/features/oauth/McpConnectionsButton.test.tsx +248 -0
- package/src/features/oauth/McpConnectionsButton.tsx +269 -0
- package/src/features/oauth/McpConnectionsDialog.tsx +142 -0
- package/src/features/oauth/RemoteMcpConnectionButton.tsx +37 -14
- package/src/features/oauth/index.ts +3 -0
- package/src/features/oauth/useMcpConnections.test.ts +94 -0
- package/src/features/oauth/useMcpConnections.ts +210 -0
- package/src/features/permissions/UserPermissionsProvider.tsx +41 -59
- package/src/features/store/objects/DocumentPreviewPanel.tsx +4 -2
- package/src/features/store/objects/DocumentQuickFilter.tsx +72 -0
- package/src/features/store/objects/DocumentSearchResults.tsx +30 -11
- package/src/features/store/objects/components/ContentOverview.tsx +30 -99
- package/src/features/store/objects/layout/DocumentTableColumn.tsx +29 -4
- package/src/features/store/objects/layout/documentLayout.tsx +1 -1
- package/src/features/store/objects/layout/renderers.tsx +80 -20
- package/src/features/store/types/ContentObjectTypesSearch.tsx +7 -1
- package/src/features/store/types/ContentObjectTypesTable.tsx +34 -4
- package/src/i18n/instance.ts +1 -0
- package/src/i18n/locales/ar.json +72 -45
- package/src/i18n/locales/de.json +65 -34
- package/src/i18n/locales/en.json +63 -47
- package/src/i18n/locales/es.json +65 -35
- package/src/i18n/locales/fr.json +65 -35
- package/src/i18n/locales/it.json +72 -42
- package/src/i18n/locales/ja.json +72 -41
- package/src/i18n/locales/ko.json +72 -41
- package/src/i18n/locales/pt.json +72 -42
- package/src/i18n/locales/ru.json +72 -43
- package/src/i18n/locales/tr.json +72 -41
- package/src/i18n/locales/zh-TW.json +72 -41
- package/src/i18n/locales/zh.json +72 -41
- package/src/i18n/rtl.test.ts +57 -1
- package/src/session/UserSession.ts +0 -16
- package/src/session/UserSessionProvider.tsx +51 -123
- package/src/session/auth/composable.ts +3 -34
- package/src/shell/login/SignInPrimitives.tsx +3 -2
- package/src/widgets/schema-editor/editor/Editable.tsx +1 -1
- package/lib/features/document-viewer/UniversalDocumentViewer.d.ts +0 -73
- package/lib/features/document-viewer/UniversalDocumentViewer.d.ts.map +0 -1
- package/lib/features/document-viewer/UniversalDocumentViewer.js +0 -415
- package/lib/features/document-viewer/UniversalDocumentViewer.js.map +0 -1
- package/lib/features/document-viewer/index.d.ts +0 -2
- package/lib/features/document-viewer/index.d.ts.map +0 -1
- package/lib/features/document-viewer/index.js +0 -2
- package/lib/features/document-viewer/index.js.map +0 -1
- package/src/features/document-viewer/UniversalDocumentViewer.test.tsx +0 -123
- package/src/features/document-viewer/UniversalDocumentViewer.tsx +0 -746
- package/src/features/document-viewer/index.ts +0 -1
- package/src/session/auth/composable.test.ts +0 -79
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpConnectionsDialog.js","sourceRoot":"","sources":["../../../src/features/oauth/McpConnectionsDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteMcpConnectionButton.d.ts","sourceRoot":"","sources":["../../../src/features/oauth/RemoteMcpConnectionButton.tsx"],"names":[],"mappings":"AAOA,UAAU,8BAA8B;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAUD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACtC,KAAK,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EAAE,qBAAqB,EACpC,YAAY,EACZ,OAAO,EACP,OAAmB,EACnB,SAAiB,EACjB,cAAsB,EACtB,QAAgB,GACnB,EAAE,8BAA8B,+
|
|
1
|
+
{"version":3,"file":"RemoteMcpConnectionButton.d.ts","sourceRoot":"","sources":["../../../src/features/oauth/RemoteMcpConnectionButton.tsx"],"names":[],"mappings":"AAOA,UAAU,8BAA8B;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAUD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACtC,KAAK,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EAAE,qBAAqB,EACpC,YAAY,EACZ,OAAO,EACP,OAAmB,EACnB,SAAiB,EACjB,cAAsB,EACtB,QAAgB,GACnB,EAAE,8BAA8B,+BA8OhC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
3
3
|
import { useUserSession } from '@vertesia/ui/session';
|
|
4
|
-
import { CheckCircle2,
|
|
4
|
+
import { CheckCircle2, Link2, ShieldAlertIcon, Unlink2 } from 'lucide-react';
|
|
5
5
|
import { useCallback, useEffect, useState } from 'react';
|
|
6
6
|
import { Button, Spinner } from '../../core/index.js';
|
|
7
7
|
import { useOAuthPopup } from './useOAuthPopup.js';
|
|
@@ -15,16 +15,21 @@ export function RemoteMcpConnectionButton({ appId, collectionId, collectionName,
|
|
|
15
15
|
const { client } = useUserSession();
|
|
16
16
|
const { t } = useUITranslation();
|
|
17
17
|
const [status, setStatus] = useState(null);
|
|
18
|
-
const [loading, setLoading] = useState(providedAuthenticated === undefined);
|
|
18
|
+
const [loading, setLoading] = useState(providedAuthenticated === undefined && !readOnly);
|
|
19
19
|
const [authenticating, setAuthenticating] = useState(false);
|
|
20
20
|
const [disconnecting, setDisconnecting] = useState(false);
|
|
21
21
|
const authenticated = providedAuthenticated ?? status?.authenticated ?? false;
|
|
22
22
|
const displayName = collectionName ?? collectionId;
|
|
23
|
+
const compactActionClassName = 'h-6 w-32 justify-center px-2 text-xs';
|
|
23
24
|
const loadStatus = useCallback(async () => {
|
|
24
25
|
if (providedAuthenticated !== undefined) {
|
|
25
26
|
setLoading(false);
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
29
|
+
if (readOnly) {
|
|
30
|
+
setLoading(false);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
28
33
|
try {
|
|
29
34
|
setLoading(true);
|
|
30
35
|
const data = await client.remoteMcpConnections.getCollectionStatus(appId, collectionId);
|
|
@@ -36,7 +41,7 @@ export function RemoteMcpConnectionButton({ appId, collectionId, collectionName,
|
|
|
36
41
|
finally {
|
|
37
42
|
setLoading(false);
|
|
38
43
|
}
|
|
39
|
-
}, [client, appId, collectionId, providedAuthenticated]);
|
|
44
|
+
}, [client, appId, collectionId, providedAuthenticated, readOnly]);
|
|
40
45
|
useEffect(() => {
|
|
41
46
|
void loadStatus();
|
|
42
47
|
}, [loadStatus]);
|
|
@@ -94,6 +99,9 @@ export function RemoteMcpConnectionButton({ appId, collectionId, collectionName,
|
|
|
94
99
|
}
|
|
95
100
|
};
|
|
96
101
|
if (loading) {
|
|
102
|
+
if (variant === 'compact') {
|
|
103
|
+
return (_jsx(Button, { variant: "outline", size: "sm", disabled: true, className: compactActionClassName, "aria-label": t('mcpConnections.checkingStatus'), title: t('mcpConnections.checkingStatus'), children: _jsx(Spinner, { className: "size-3" }) }));
|
|
104
|
+
}
|
|
97
105
|
return (_jsx("div", { className: "flex items-center gap-2 text-sm", children: _jsx(Spinner, { className: "size-4" }) }));
|
|
98
106
|
}
|
|
99
107
|
if (variant === 'full') {
|
|
@@ -104,7 +112,7 @@ export function RemoteMcpConnectionButton({ appId, collectionId, collectionName,
|
|
|
104
112
|
}
|
|
105
113
|
if (authenticated) {
|
|
106
114
|
if (variant === 'compact') {
|
|
107
|
-
return (_jsxs("div", { className: "flex items-center gap-2", children: [showLabel && _jsxs("span", { className: "font-medium text-xs text-foreground", children: [displayName, ":"] }),
|
|
115
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [showLabel && _jsxs("span", { className: "font-medium text-xs text-foreground", children: [displayName, ":"] }), !readOnly && showDisconnect && (_jsx(Button, { variant: "outline", size: "sm", onClick: handleDisconnect, disabled: disconnecting, className: compactActionClassName, children: disconnecting ? (_jsx(Spinner, { className: "size-3" })) : (_jsxs(_Fragment, { children: [_jsx(Unlink2, { className: "size-3" }), _jsx("span", { children: t('mcpOAuth.disconnect') })] })) }))] }));
|
|
108
116
|
}
|
|
109
117
|
return (_jsxs("div", { className: "flex items-center gap-1 text-success", children: [_jsx(CheckCircle2, { className: "size-4" }), _jsx("span", { className: "text-sm", children: t('mcpOAuth.connected') })] }));
|
|
110
118
|
}
|
|
@@ -112,8 +120,8 @@ export function RemoteMcpConnectionButton({ appId, collectionId, collectionName,
|
|
|
112
120
|
if (readOnly) {
|
|
113
121
|
return (_jsxs("div", { className: "flex items-center gap-2", children: [showLabel && _jsxs("span", { className: "font-medium text-xs text-foreground", children: [collectionName, ":"] }), _jsx("div", { className: "flex items-center gap-1 text-muted", children: _jsx("span", { className: "text-xs", children: t('mcpOAuth.notConnected') }) })] }));
|
|
114
122
|
}
|
|
115
|
-
return (_jsxs("div", { className: "flex items-center gap-2", children: [showLabel && _jsxs("span", { className: "font-medium text-xs text-foreground", children: [displayName, ":"] }), _jsx(Button, { variant: "outline", size: "sm", onClick: handleConnect, disabled: authenticating, className:
|
|
123
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [showLabel && _jsxs("span", { className: "font-medium text-xs text-foreground", children: [displayName, ":"] }), _jsx(Button, { variant: "outline", size: "sm", onClick: handleConnect, disabled: authenticating, className: compactActionClassName, children: authenticating ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { className: "size-3" }), _jsx("span", { children: t('mcpOAuth.connecting') })] })) : (_jsxs(_Fragment, { children: [_jsx(Link2, { className: "size-3" }), _jsx("span", { children: t('mcpOAuth.connect') })] })) })] }));
|
|
116
124
|
}
|
|
117
|
-
return (_jsx(Button, { variant: "outline", size: "sm", onClick: handleConnect, disabled: authenticating, children: authenticating ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { className: "size-4" }), _jsx("span", { children: t('mcpOAuth.connecting') })] })) : (_jsxs(_Fragment, { children: [_jsx(
|
|
125
|
+
return (_jsx(Button, { variant: "outline", size: "sm", onClick: handleConnect, disabled: readOnly || authenticating, children: authenticating ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { className: "size-4" }), _jsx("span", { children: t('mcpOAuth.connecting') })] })) : (_jsxs(_Fragment, { children: [_jsx(Link2, { className: "size-4 me-1" }), _jsx("span", { children: t('mcpOAuth.connect') })] })) }));
|
|
118
126
|
}
|
|
119
127
|
//# sourceMappingURL=RemoteMcpConnectionButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteMcpConnectionButton.js","sourceRoot":"","sources":["../../../src/features/oauth/RemoteMcpConnectionButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"RemoteMcpConnectionButton.js","sourceRoot":"","sources":["../../../src/features/oauth/RemoteMcpConnectionButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export * from './McpConnectionsButton.js';
|
|
2
|
+
export * from './McpConnectionsDialog.js';
|
|
1
3
|
export * from './OAuthProviderConnectButton.js';
|
|
2
4
|
export * from './RemoteMcpConnectionButton.js';
|
|
5
|
+
export * from './useMcpConnections.js';
|
|
3
6
|
export * from './useOAuthPopup.js';
|
|
4
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/oauth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/oauth/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export * from './McpConnectionsButton.js';
|
|
2
|
+
export * from './McpConnectionsDialog.js';
|
|
1
3
|
export * from './OAuthProviderConnectButton.js';
|
|
2
4
|
export * from './RemoteMcpConnectionButton.js';
|
|
5
|
+
export * from './useMcpConnections.js';
|
|
3
6
|
export * from './useOAuthPopup.js';
|
|
4
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/oauth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/oauth/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type OAuthAuthStatus } from '@vertesia/common';
|
|
2
|
+
/**
|
|
3
|
+
* A group of MCP tool collections that share a single OAuth connection.
|
|
4
|
+
* Connection/activation operations act on the whole group.
|
|
5
|
+
*/
|
|
6
|
+
export interface McpConnectionGroup {
|
|
7
|
+
key: string;
|
|
8
|
+
appId: string;
|
|
9
|
+
appName: string;
|
|
10
|
+
/** Display label: provider display_name, oauth_app name, or individual collection name */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Representative collection ID used for OAuth operations (all in group share the same OAuth provider) */
|
|
13
|
+
representativeId: string;
|
|
14
|
+
/** All collection IDs in this group (used for per-conversation activation toggles) */
|
|
15
|
+
memberIds: string[];
|
|
16
|
+
/** Names of all collections in this group (for tooltip when > 1) */
|
|
17
|
+
memberNames: string[];
|
|
18
|
+
authStatus?: OAuthAuthStatus;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Loads the project's installed MCP tool collections that require OAuth, grouped by their
|
|
22
|
+
* shared OAuth provider/app, and resolves each group's current connection status.
|
|
23
|
+
*
|
|
24
|
+
* Shared by the MCP connections button (badge count) and dialog (list) so the data is
|
|
25
|
+
* fetched once and refreshed together after connect/disconnect.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useMcpConnections(): {
|
|
28
|
+
groups: McpConnectionGroup[];
|
|
29
|
+
loading: boolean;
|
|
30
|
+
statusLoading: boolean;
|
|
31
|
+
reload: () => Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
/** True when every collection in the group is present in the disabled set. */
|
|
34
|
+
export declare function isGroupDisabled(group: McpConnectionGroup, disabled?: string[]): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Toggle a group's activation, returning the next disabled-collection list.
|
|
37
|
+
* Disabling adds all member ids; enabling removes them.
|
|
38
|
+
*/
|
|
39
|
+
export declare function toggleGroupDisabled(group: McpConnectionGroup, disabled: string[] | undefined, active: boolean): string[];
|
|
40
|
+
/** Count connected MCP groups that are enabled for the current conversation. */
|
|
41
|
+
export declare function countConnectedActiveGroups(groups: McpConnectionGroup[], disabled?: string[]): number;
|
|
42
|
+
/** Names of connected MCP groups that are enabled for the current conversation. */
|
|
43
|
+
export declare function getConnectedActiveGroupLabels(groups: McpConnectionGroup[], disabled?: string[]): string[];
|
|
44
|
+
//# sourceMappingURL=useMcpConnections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMcpConnections.d.ts","sourceRoot":"","sources":["../../../src/features/oauth/useMcpConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,0GAA0G;IAC1G,gBAAgB,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oEAAoE;IACpE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB;;;;;EAyIhC;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAGvF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAC9B,MAAM,EAAE,OAAO,GAChB,MAAM,EAAE,CAQV;AAED,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAGpG;AAED,mFAAmF;AACnF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAIzG"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { normalizeToolCollection, } from '@vertesia/common';
|
|
2
|
+
import { useUserSession } from '@vertesia/ui/session';
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Loads the project's installed MCP tool collections that require OAuth, grouped by their
|
|
6
|
+
* shared OAuth provider/app, and resolves each group's current connection status.
|
|
7
|
+
*
|
|
8
|
+
* Shared by the MCP connections button (badge count) and dialog (list) so the data is
|
|
9
|
+
* fetched once and refreshed together after connect/disconnect.
|
|
10
|
+
*/
|
|
11
|
+
export function useMcpConnections() {
|
|
12
|
+
const { client } = useUserSession();
|
|
13
|
+
const [groups, setGroups] = useState([]);
|
|
14
|
+
const [loading, setLoading] = useState(true);
|
|
15
|
+
const [statusLoading, setStatusLoading] = useState(false);
|
|
16
|
+
const reloadIdRef = useRef(0);
|
|
17
|
+
const reload = useCallback(async () => {
|
|
18
|
+
const reloadId = reloadIdRef.current + 1;
|
|
19
|
+
reloadIdRef.current = reloadId;
|
|
20
|
+
setLoading(true);
|
|
21
|
+
setStatusLoading(false);
|
|
22
|
+
try {
|
|
23
|
+
const apps = await client.apps.getInstalledApps('tools');
|
|
24
|
+
const allGroups = [];
|
|
25
|
+
for (const app of apps) {
|
|
26
|
+
const inst = app;
|
|
27
|
+
const oauthIds = inst.oauth_collection_ids ?? [];
|
|
28
|
+
const manifestProviders = inst.manifest.oauth_providers ?? {};
|
|
29
|
+
if (!inst.manifest.tool_collections)
|
|
30
|
+
continue;
|
|
31
|
+
const oauthCollections = inst.manifest.tool_collections
|
|
32
|
+
.map((c) => normalizeToolCollection(c))
|
|
33
|
+
.filter((c) => c.type === 'mcp' && oauthIds.includes(c.id));
|
|
34
|
+
const providerMap = new Map();
|
|
35
|
+
const oauthAppMap = new Map();
|
|
36
|
+
const individualCols = [];
|
|
37
|
+
for (const col of oauthCollections) {
|
|
38
|
+
if (col.oauth_provider) {
|
|
39
|
+
const g = providerMap.get(col.oauth_provider) ?? [];
|
|
40
|
+
g.push(col);
|
|
41
|
+
providerMap.set(col.oauth_provider, g);
|
|
42
|
+
}
|
|
43
|
+
else if (col.oauth_app) {
|
|
44
|
+
const g = oauthAppMap.get(col.oauth_app) ?? [];
|
|
45
|
+
g.push(col);
|
|
46
|
+
oauthAppMap.set(col.oauth_app, g);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
individualCols.push(col);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const [providerKey, cols] of providerMap) {
|
|
53
|
+
allGroups.push({
|
|
54
|
+
key: `${inst.id}:provider:${providerKey}`,
|
|
55
|
+
appId: inst.id,
|
|
56
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
57
|
+
label: manifestProviders[providerKey]?.display_name || providerKey,
|
|
58
|
+
representativeId: cols[0].id,
|
|
59
|
+
memberIds: cols.map((c) => c.id),
|
|
60
|
+
memberNames: cols.map((c) => c.name),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
for (const [oauthApp, cols] of oauthAppMap) {
|
|
64
|
+
allGroups.push({
|
|
65
|
+
key: `${inst.id}:oauthapp:${oauthApp}`,
|
|
66
|
+
appId: inst.id,
|
|
67
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
68
|
+
label: oauthApp,
|
|
69
|
+
representativeId: cols[0].id,
|
|
70
|
+
memberIds: cols.map((c) => c.id),
|
|
71
|
+
memberNames: cols.map((c) => c.name),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
for (const col of individualCols) {
|
|
75
|
+
allGroups.push({
|
|
76
|
+
key: `${inst.id}:individual:${col.id}`,
|
|
77
|
+
appId: inst.id,
|
|
78
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
79
|
+
label: col.name,
|
|
80
|
+
representativeId: col.id,
|
|
81
|
+
memberIds: [col.id],
|
|
82
|
+
memberNames: [col.name],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (reloadIdRef.current !== reloadId) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
setGroups(allGroups);
|
|
90
|
+
setLoading(false);
|
|
91
|
+
if (allGroups.length === 0) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
setStatusLoading(true);
|
|
95
|
+
// Fetch OAuth status once per app installation; getStatus(appId) returns all collection statuses.
|
|
96
|
+
const statusRequestsByApp = new Map();
|
|
97
|
+
const groupsWithStatus = await Promise.all(allGroups.map(async (group) => {
|
|
98
|
+
try {
|
|
99
|
+
let statusRequest = statusRequestsByApp.get(group.appId);
|
|
100
|
+
if (!statusRequest) {
|
|
101
|
+
statusRequest = client.remoteMcpConnections.getStatus(group.appId);
|
|
102
|
+
statusRequestsByApp.set(group.appId, statusRequest);
|
|
103
|
+
}
|
|
104
|
+
const statuses = await statusRequest;
|
|
105
|
+
const status = statuses.find((s) => s.collection_id === group.representativeId);
|
|
106
|
+
return { ...group, authStatus: status };
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return group;
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
if (reloadIdRef.current !== reloadId) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
setGroups(groupsWithStatus);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (reloadIdRef.current === reloadId) {
|
|
119
|
+
console.error('Failed to load MCP tool collections:', error);
|
|
120
|
+
setGroups([]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
if (reloadIdRef.current === reloadId) {
|
|
125
|
+
setLoading(false);
|
|
126
|
+
setStatusLoading(false);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}, [client]);
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
void reload();
|
|
132
|
+
}, [reload]);
|
|
133
|
+
return { groups, loading, statusLoading, reload };
|
|
134
|
+
}
|
|
135
|
+
/** True when every collection in the group is present in the disabled set. */
|
|
136
|
+
export function isGroupDisabled(group, disabled) {
|
|
137
|
+
if (!disabled?.length)
|
|
138
|
+
return false;
|
|
139
|
+
return group.memberIds.every((id) => disabled.includes(id));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Toggle a group's activation, returning the next disabled-collection list.
|
|
143
|
+
* Disabling adds all member ids; enabling removes them.
|
|
144
|
+
*/
|
|
145
|
+
export function toggleGroupDisabled(group, disabled, active) {
|
|
146
|
+
const current = new Set(disabled ?? []);
|
|
147
|
+
if (active) {
|
|
148
|
+
for (const id of group.memberIds)
|
|
149
|
+
current.delete(id);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
for (const id of group.memberIds)
|
|
153
|
+
current.add(id);
|
|
154
|
+
}
|
|
155
|
+
return Array.from(current);
|
|
156
|
+
}
|
|
157
|
+
/** Count connected MCP groups that are enabled for the current conversation. */
|
|
158
|
+
export function countConnectedActiveGroups(groups, disabled) {
|
|
159
|
+
return groups.filter((group) => group.authStatus?.authenticated === true && !isGroupDisabled(group, disabled))
|
|
160
|
+
.length;
|
|
161
|
+
}
|
|
162
|
+
/** Names of connected MCP groups that are enabled for the current conversation. */
|
|
163
|
+
export function getConnectedActiveGroupLabels(groups, disabled) {
|
|
164
|
+
return groups
|
|
165
|
+
.filter((group) => group.authStatus?.authenticated === true && !isGroupDisabled(group, disabled))
|
|
166
|
+
.map((group) => group.label);
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=useMcpConnections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMcpConnections.js","sourceRoot":"","sources":["../../../src/features/oauth/useMcpConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,uBAAuB,GAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAqBjE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QACzC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,SAAS,GAAyB,EAAE,CAAC;YAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,GAAkC,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;gBACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;gBAE9D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB;oBAAE,SAAS;gBAE9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB;qBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;qBACtC,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE9F,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqC,CAAC;gBACjE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqC,CAAC;gBACjE,MAAM,cAAc,GAA8B,EAAE,CAAC;gBAErD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACjC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;wBACrB,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;wBACpD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;oBAC3C,CAAC;yBAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;wBACvB,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;wBAC/C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACJ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;gBAED,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC;wBACX,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,WAAW,EAAE;wBACzC,KAAK,EAAE,IAAI,CAAC,EAAE;wBACd,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;wBAClD,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,YAAY,IAAI,WAAW;wBAClE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBACvC,CAAC,CAAC;gBACP,CAAC;gBAED,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;oBACzC,SAAS,CAAC,IAAI,CAAC;wBACX,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,QAAQ,EAAE;wBACtC,KAAK,EAAE,IAAI,CAAC,EAAE;wBACd,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;wBAClD,KAAK,EAAE,QAAQ;wBACf,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBACvC,CAAC,CAAC;gBACP,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;oBAC/B,SAAS,CAAC,IAAI,CAAC;wBACX,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,eAAe,GAAG,CAAC,EAAE,EAAE;wBACtC,KAAK,EAAE,IAAI,CAAC,EAAE;wBACd,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;wBAClD,KAAK,EAAE,GAAG,CAAC,IAAI;wBACf,gBAAgB,EAAE,GAAG,CAAC,EAAE;wBACxB,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;qBAC1B,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAED,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YAED,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,UAAU,CAAC,KAAK,CAAC,CAAC;YAElB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEvB,kGAAkG;YAClG,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAsC,CAAC;YAC1E,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC1B,IAAI,CAAC;oBACD,IAAI,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACzD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACjB,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACnE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBACxD,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;oBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAChF,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC,CAAC,CACL,CAAC;YAEF,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YAED,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBAC7D,SAAS,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,MAAM,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,KAAyB,EAAE,QAAmB;IAC1E,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAC/B,KAAyB,EACzB,QAA8B,EAC9B,MAAe;IAEf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,0BAA0B,CAAC,MAA4B,EAAE,QAAmB;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACzG,MAAM,CAAC;AAChB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B,CAAC,MAA4B,EAAE,QAAmB;IAC3F,OAAO,MAAM;SACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAChG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
permissions: Permission[];
|
|
5
|
-
}[];
|
|
1
|
+
import { type SystemRoleDefinition } from '@vertesia/common';
|
|
2
|
+
import { type UserSession } from '@vertesia/ui/session';
|
|
3
|
+
type ListRolesResponse = SystemRoleDefinition[];
|
|
6
4
|
export declare class UserPermissions {
|
|
7
5
|
system_roles: ListRolesResponse;
|
|
8
6
|
roles: Set<string>;
|
|
9
7
|
permissions: Set<string>;
|
|
10
|
-
constructor(
|
|
8
|
+
constructor(session: UserSession, roles: ListRolesResponse);
|
|
11
9
|
hasPermission(permission: string | string[]): boolean;
|
|
12
10
|
}
|
|
13
11
|
declare const UserPermissionsContext: import("react").Context<UserPermissions | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserPermissionsProvider.d.ts","sourceRoot":"","sources":["../../../src/features/permissions/UserPermissionsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"UserPermissionsProvider.d.ts","sourceRoot":"","sources":["../../../src/features/permissions/UserPermissionsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7F,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAIxE,KAAK,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAEhD,qBAAa,eAAe;IACxB,YAAY,EAAE,iBAAiB,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEb,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB;IAmC1D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;CAe9C;AAED,QAAA,MAAM,sBAAsB,sDAAwD,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,wBAAgB,kBAAkB,oBAMjC;AAED,UAAU,2BAA2B;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AACD,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE,2BAA2B,2CAwB/E"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { PrincipalType } from '@vertesia/common';
|
|
3
3
|
import { ErrorBox, errorMessage, useFetch } from '@vertesia/ui/core';
|
|
4
4
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
5
5
|
import { useUserSession } from '@vertesia/ui/session';
|
|
@@ -9,15 +9,38 @@ export class UserPermissions {
|
|
|
9
9
|
system_roles; // all roles defined in the system
|
|
10
10
|
roles; // all roles of the current user
|
|
11
11
|
permissions; // all permissions of the current user
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(session, roles) {
|
|
13
|
+
if (!session.authToken) {
|
|
14
|
+
throw new Error('No auth token found in user session');
|
|
15
|
+
}
|
|
13
16
|
this.system_roles = roles;
|
|
14
|
-
const
|
|
15
|
-
|
|
17
|
+
const userRoles = new Set(session.authToken.account_roles || []);
|
|
18
|
+
if (session.authToken.project_roles) {
|
|
19
|
+
for (const role of session.authToken.project_roles) {
|
|
20
|
+
userRoles.add(role);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
16
23
|
this.roles = userRoles;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
24
|
+
// build a temporary role to permissions map
|
|
25
|
+
const map = {};
|
|
26
|
+
for (const role of roles) {
|
|
27
|
+
map[role.name] = role.permissions;
|
|
28
|
+
}
|
|
29
|
+
const permissionCap = session.authToken.type === PrincipalType.OAuthAccess
|
|
30
|
+
? new Set(session.authToken.permissions ?? [])
|
|
31
|
+
: undefined;
|
|
32
|
+
const permissions = new Set();
|
|
33
|
+
for (const role of userRoles) {
|
|
34
|
+
const rolePermissions = map[role];
|
|
35
|
+
if (rolePermissions) {
|
|
36
|
+
for (const permission of rolePermissions) {
|
|
37
|
+
if (!permissionCap || permissionCap.has(permission)) {
|
|
38
|
+
permissions.add(permission);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
this.permissions = permissions;
|
|
21
44
|
}
|
|
22
45
|
hasPermission(permission) {
|
|
23
46
|
if (typeof permission === 'string') {
|
|
@@ -37,25 +60,6 @@ export class UserPermissions {
|
|
|
37
60
|
}
|
|
38
61
|
}
|
|
39
62
|
}
|
|
40
|
-
function listSystemRoles() {
|
|
41
|
-
return listRoles().map((role) => ({
|
|
42
|
-
name: role.name,
|
|
43
|
-
permissions: Array.from(role.permissions),
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
function getPermissionsForRolesFromMappings(roleNames, roles) {
|
|
47
|
-
if (roles.length === 0) {
|
|
48
|
-
return getPermissionsForRoles(roleNames);
|
|
49
|
-
}
|
|
50
|
-
const permissionsByRole = new Map(roles.map((role) => [role.name, role.permissions]));
|
|
51
|
-
const permissions = new Set();
|
|
52
|
-
for (const role of roleNames) {
|
|
53
|
-
for (const permission of permissionsByRole.get(role) ?? []) {
|
|
54
|
-
permissions.add(permission);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return Array.from(permissions);
|
|
58
|
-
}
|
|
59
63
|
const UserPermissionsContext = createContext(undefined);
|
|
60
64
|
export { UserPermissionsContext };
|
|
61
65
|
export function useUserPermissions() {
|
|
@@ -68,28 +72,22 @@ export function useUserPermissions() {
|
|
|
68
72
|
export function UserPermissionProvider({ children }) {
|
|
69
73
|
const { t } = useUITranslation();
|
|
70
74
|
const session = useUserSession();
|
|
71
|
-
const authToken = session.authToken;
|
|
72
|
-
const shouldFetchRoleMappings = Boolean(authToken && !authToken.permissions);
|
|
73
75
|
const { data, error, isLoading } = useFetch(() => {
|
|
74
|
-
if (
|
|
75
|
-
return session.client.iam.roles.
|
|
76
|
+
if (session.user) {
|
|
77
|
+
return session.client.iam.roles.listSystem();
|
|
76
78
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
else {
|
|
80
|
+
return Promise.resolve(undefined);
|
|
81
|
+
}
|
|
82
|
+
}, [session.user]);
|
|
79
83
|
const perms = useMemo(() => {
|
|
80
|
-
if (authToken) {
|
|
81
|
-
|
|
82
|
-
return new UserPermissions(authToken);
|
|
83
|
-
}
|
|
84
|
-
if (data && !isLoading) {
|
|
85
|
-
return new UserPermissions(authToken, data);
|
|
86
|
-
}
|
|
84
|
+
if (session.authToken && data && !isLoading) {
|
|
85
|
+
return new UserPermissions(session, data);
|
|
87
86
|
}
|
|
88
87
|
else {
|
|
89
88
|
return undefined;
|
|
90
89
|
}
|
|
91
|
-
|
|
92
|
-
}, [authToken, data, isLoading, shouldFetchRoleMappings]);
|
|
90
|
+
}, [session, data, isLoading]);
|
|
93
91
|
if (error) {
|
|
94
92
|
return _jsx(ErrorBox, { title: t('store.failedToFetchRoleMappings'), children: errorMessage(error) });
|
|
95
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserPermissionsProvider.js","sourceRoot":"","sources":["../../../src/features/permissions/UserPermissionsProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"UserPermissionsProvider.js","sourceRoot":"","sources":["../../../src/features/permissions/UserPermissionsProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentPreviewPanel.d.ts","sourceRoot":"","sources":["../../../../src/features/store/objects/DocumentPreviewPanel.tsx"],"names":[],"mappings":"AASA,UAAU,yBAAyB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"DocumentPreviewPanel.d.ts","sourceRoot":"","sources":["../../../../src/features/store/objects/DocumentPreviewPanel.tsx"],"names":[],"mappings":"AASA,UAAU,yBAAyB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,yBAAyB,sCA4W5F"}
|
|
@@ -106,7 +106,8 @@ export function DocumentPreviewPanel({ objectId, isOpen, onClose }) {
|
|
|
106
106
|
const isPdf = object?.content?.type === 'application/pdf';
|
|
107
107
|
if (!isOpen)
|
|
108
108
|
return null;
|
|
109
|
-
|
|
109
|
+
const panelTranslateClass = isOpen ? 'translate-x-0' : 'translate-x-full rtl:-translate-x-full'; // rtl-ok: mirrored inline-end transform
|
|
110
|
+
return (_jsxs("div", { className: `fixed inset-y-0 end-0 w-2/5 dark:bg-slate-900 shadow-xl z-50 flex flex-col transition-transform duration-300 transform ${panelTranslateClass}`, children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b dark:border-gray-700 bg-gradient-to-r from-indigo-50 to-gray-50 dark:from-gray-800 dark:to-gray-900", children: [_jsxs("div", { className: "flex items-center", children: [_jsx(FileText, { className: "h-5 w-5 text-indigo-600 me-2" }), _jsx("h2", { className: "text-lg font-semibold text-gray-800 dark:text-gray-200 truncate", children: isLoading ? t('store.loadingDocument') : object?.name || t('store.documentPreview') })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "ghost", size: "sm", onClick: handleViewFullDocument, className: "flex items-center gap-1 text-indigo-600 hover:text-indigo-800", children: [_jsx(Maximize2, { className: "h-4 w-4" }), _jsx("span", { children: t('store.fullView') })] }), _jsx(Button, { variant: "ghost", size: "sm", onClick: onClose, className: "flex items-center text-gray-600 hover:text-gray-800 dark:text-gray-300 dark:hover:text-gray-100", children: _jsx(X, { className: "h-5 w-5" }) })] })] }), isLoading ? (_jsx("div", { className: "flex-1 flex items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx(Spinner, { size: "lg", className: "text-indigo-600 dark:text-indigo-400 mb-2" }), _jsx("p", { className: "text-gray-600 dark:text-gray-400", children: t('store.loadingDocument') })] }) })) : (_jsxs("div", { className: "flex-1 flex flex-col h-full", children: [_jsx("div", { className: "border-b", children: _jsxs("div", { className: "flex px-4", children: [_jsx(Button, { variant: "unstyled", className: `py-2 px-4 font-medium border-b-2 ${currentTab === 'preview'
|
|
110
111
|
? 'border-indigo-600 text-indigo-700 dark:text-indigo-300'
|
|
111
112
|
: 'border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'}`, onClick: () => setCurrentTab('preview'), children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(LayoutGrid, { className: "h-4 w-4" }), _jsx("span", { children: t('store.preview') })] }) }), _jsx(Button, { variant: "unstyled", className: `py-2 px-4 font-medium border-b-2 ${currentTab === 'properties'
|
|
112
113
|
? 'border-indigo-600 text-indigo-700 dark:text-indigo-300'
|