@xenosystem/agent-interface-ui 0.1.25 → 0.1.27
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/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/agentHostPlatformBridge.js +96 -16
- package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
- package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/hubAgentPlatformBridge.js +2 -0
- package/dist/adapters/hubAgentPlatformBridge.js.map +1 -1
- package/dist/adapters/scopedBackupBridge.d.ts +4 -0
- package/dist/adapters/scopedBackupBridge.d.ts.map +1 -0
- package/dist/adapters/scopedBackupBridge.js +49 -0
- package/dist/adapters/scopedBackupBridge.js.map +1 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -1
- package/dist/adapters/xenoAgentCompatibilityBridge.js +9 -1
- package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -1
- package/dist/agent.css +13227 -0
- package/dist/components/agent/AgentIdentityGenerator.d.ts +16 -0
- package/dist/components/agent/AgentIdentityGenerator.d.ts.map +1 -0
- package/dist/components/agent/AgentIdentityGenerator.js +80 -0
- package/dist/components/agent/AgentIdentityGenerator.js.map +1 -0
- package/dist/components/agent/AgentInterface.d.ts +1 -0
- package/dist/components/agent/AgentInterface.d.ts.map +1 -1
- package/dist/components/agent/AgentInterface.js +1816 -643
- package/dist/components/agent/AgentInterface.js.map +1 -1
- package/dist/components/agent/AgentNotificationBanner.d.ts +10 -0
- package/dist/components/agent/AgentNotificationBanner.d.ts.map +1 -0
- package/dist/components/agent/AgentNotificationBanner.js +28 -0
- package/dist/components/agent/AgentNotificationBanner.js.map +1 -0
- package/dist/components/agent/AgentOnboarding.d.ts +16 -2
- package/dist/components/agent/AgentOnboarding.d.ts.map +1 -1
- package/dist/components/agent/AgentOnboarding.js +93 -201
- package/dist/components/agent/AgentOnboarding.js.map +1 -1
- package/dist/components/agent/AgentView.d.ts.map +1 -1
- package/dist/components/agent/AgentView.js +533 -308
- package/dist/components/agent/AgentView.js.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.js +3 -2
- package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +4 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js +23 -195
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -1
- package/dist/components/agent/AgentsWorkspaceView.d.ts +12 -0
- package/dist/components/agent/AgentsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/AgentsWorkspaceView.js +129 -0
- package/dist/components/agent/AgentsWorkspaceView.js.map +1 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts +7 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts.map +1 -1
- package/dist/components/agent/DevelopmentCoordinationPanel.js +57 -49
- package/dist/components/agent/DevelopmentCoordinationPanel.js.map +1 -1
- package/dist/components/agent/KnowledgePanel.d.ts.map +1 -1
- package/dist/components/agent/KnowledgePanel.js +17 -67
- package/dist/components/agent/KnowledgePanel.js.map +1 -1
- package/dist/components/agent/LiveConversationCollaboration.d.ts +27 -0
- package/dist/components/agent/LiveConversationCollaboration.d.ts.map +1 -0
- package/dist/components/agent/LiveConversationCollaboration.js +127 -0
- package/dist/components/agent/LiveConversationCollaboration.js.map +1 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -1
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js +1 -1
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -1
- package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -1
- package/dist/components/agent/MonacoWorkbenchEditor.js +3 -3
- package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -1
- package/dist/components/agent/OwnedBrowserController.d.ts +55 -0
- package/dist/components/agent/OwnedBrowserController.d.ts.map +1 -0
- package/dist/components/agent/OwnedBrowserController.js +166 -0
- package/dist/components/agent/OwnedBrowserController.js.map +1 -0
- package/dist/components/agent/OwnedWorkforceView.d.ts +10 -0
- package/dist/components/agent/OwnedWorkforceView.d.ts.map +1 -0
- package/dist/components/agent/OwnedWorkforceView.js +256 -0
- package/dist/components/agent/OwnedWorkforceView.js.map +1 -0
- package/dist/components/agent/PluginManager.d.ts +34 -0
- package/dist/components/agent/PluginManager.d.ts.map +1 -1
- package/dist/components/agent/PluginManager.js +187 -126
- package/dist/components/agent/PluginManager.js.map +1 -1
- package/dist/components/agent/ProjectsWorkspaceView.d.ts +14 -0
- package/dist/components/agent/ProjectsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/ProjectsWorkspaceView.js +176 -0
- package/dist/components/agent/ProjectsWorkspaceView.js.map +1 -0
- package/dist/components/agent/RunReviewPanel.d.ts +8 -13
- package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
- package/dist/components/agent/RunReviewPanel.js +120 -106
- package/dist/components/agent/RunReviewPanel.js.map +1 -1
- package/dist/components/agent/ScheduledWorkspaceView.d.ts +19 -0
- package/dist/components/agent/ScheduledWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/ScheduledWorkspaceView.js +150 -0
- package/dist/components/agent/ScheduledWorkspaceView.js.map +1 -0
- package/dist/components/agent/SdkSessionPanel.d.ts +25 -0
- package/dist/components/agent/SdkSessionPanel.d.ts.map +1 -0
- package/dist/components/agent/SdkSessionPanel.js +15 -0
- package/dist/components/agent/SdkSessionPanel.js.map +1 -0
- package/dist/components/agent/SlashCommandAutocomplete.d.ts +12 -0
- package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +1 -0
- package/dist/components/agent/SlashCommandAutocomplete.js +33 -0
- package/dist/components/agent/SlashCommandAutocomplete.js.map +1 -0
- package/dist/components/agent/TeamsWorkspaceView.d.ts +12 -0
- package/dist/components/agent/TeamsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/TeamsWorkspaceView.js +127 -0
- package/dist/components/agent/TeamsWorkspaceView.js.map +1 -0
- package/dist/components/agent/WorkspacePersistenceNotice.d.ts +3 -0
- package/dist/components/agent/WorkspacePersistenceNotice.d.ts.map +1 -0
- package/dist/components/agent/WorkspacePersistenceNotice.js +23 -0
- package/dist/components/agent/WorkspacePersistenceNotice.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -1
- package/dist/components/agent/acp/AcpAgentConfigForm.js +47 -14
- package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +1 -1
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -1
- package/dist/components/agent/acp/AcpAgentManager.js +18 -18
- package/dist/components/agent/acp/AcpAgentManager.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js +1 -1
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpApprovalPanel.js +2 -2
- package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpCertificationPanel.js +1 -1
- package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +1 -1
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpProviderManagerPanel.js +1 -1
- package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpProviderModelsPanel.js +1 -1
- package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpSupportBundlePanel.js +1 -1
- package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -1
- package/dist/components/agent/collaborationWindow.d.ts +11 -0
- package/dist/components/agent/collaborationWindow.d.ts.map +1 -0
- package/dist/components/agent/collaborationWindow.js +10 -0
- package/dist/components/agent/collaborationWindow.js.map +1 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +25 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +1 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.js +118 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.js.map +1 -0
- package/dist/components/agent/conversationCollaborationController.d.ts +96 -0
- package/dist/components/agent/conversationCollaborationController.d.ts.map +1 -0
- package/dist/components/agent/conversationCollaborationController.js +597 -0
- package/dist/components/agent/conversationCollaborationController.js.map +1 -0
- package/dist/components/agent/destructiveConfirmation.d.ts +76 -0
- package/dist/components/agent/destructiveConfirmation.d.ts.map +1 -0
- package/dist/components/agent/destructiveConfirmation.js +231 -0
- package/dist/components/agent/destructiveConfirmation.js.map +1 -0
- package/dist/components/agent/developmentCoordinationController.d.ts +43 -0
- package/dist/components/agent/developmentCoordinationController.d.ts.map +1 -0
- package/dist/components/agent/developmentCoordinationController.js +94 -0
- package/dist/components/agent/developmentCoordinationController.js.map +1 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts +24 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts.map +1 -1
- package/dist/components/agent/developmentCoordinationProjection.js +34 -5
- package/dist/components/agent/developmentCoordinationProjection.js.map +1 -1
- package/dist/components/agent/editorOperationAuthority.d.ts +29 -0
- package/dist/components/agent/editorOperationAuthority.d.ts.map +1 -0
- package/dist/components/agent/editorOperationAuthority.js +73 -0
- package/dist/components/agent/editorOperationAuthority.js.map +1 -0
- package/dist/components/agent/knowledgePagination.d.ts +7 -0
- package/dist/components/agent/knowledgePagination.d.ts.map +1 -0
- package/dist/components/agent/knowledgePagination.js +7 -0
- package/dist/components/agent/knowledgePagination.js.map +1 -0
- package/dist/components/agent/knowledgePanelController.d.ts +32 -0
- package/dist/components/agent/knowledgePanelController.d.ts.map +1 -0
- package/dist/components/agent/knowledgePanelController.js +119 -0
- package/dist/components/agent/knowledgePanelController.js.map +1 -0
- package/dist/components/agent/monacoWorkbenchShared.js +1 -1
- package/dist/components/agent/onboardingModels.d.ts +31 -0
- package/dist/components/agent/onboardingModels.d.ts.map +1 -0
- package/dist/components/agent/onboardingModels.js +107 -0
- package/dist/components/agent/onboardingModels.js.map +1 -0
- package/dist/components/agent/personalConversationScope.d.ts +26 -0
- package/dist/components/agent/personalConversationScope.d.ts.map +1 -0
- package/dist/components/agent/personalConversationScope.js +43 -0
- package/dist/components/agent/personalConversationScope.js.map +1 -0
- package/dist/components/agent/reviewRequestScope.d.ts +16 -0
- package/dist/components/agent/reviewRequestScope.d.ts.map +1 -0
- package/dist/components/agent/reviewRequestScope.js +101 -0
- package/dist/components/agent/reviewRequestScope.js.map +1 -0
- package/dist/components/agent/scheduleCreationAttempt.d.ts +12 -0
- package/dist/components/agent/scheduleCreationAttempt.d.ts.map +1 -0
- package/dist/components/agent/scheduleCreationAttempt.js +30 -0
- package/dist/components/agent/scheduleCreationAttempt.js.map +1 -0
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts +1 -1
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -1
- package/dist/components/agent/settings/EntitySettingsLayout.js +64 -44
- package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -1
- package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -1
- package/dist/components/agent/settings/SettingsNavigation.js +17 -17
- package/dist/components/agent/settings/SettingsNavigation.js.map +1 -1
- package/dist/components/agent/settings/entityArchiveState.d.ts +24 -0
- package/dist/components/agent/settings/entityArchiveState.d.ts.map +1 -0
- package/dist/components/agent/settings/entityArchiveState.js +12 -0
- package/dist/components/agent/settings/entityArchiveState.js.map +1 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/AccessMembersSection.js +10 -25
- package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -1
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts +16 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.js +265 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.js.map +1 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +47 -32
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
- package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/DangerZoneSection.js +30 -6
- package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -1
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +47 -37
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -1
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +30 -43
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.js +14 -12
- package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -1
- package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/GeneralSection.js +47 -4
- package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -1
- package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/IntegrationsSection.js +14 -21
- package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/NotificationsSection.js +125 -20
- package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js +7 -7
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js +5 -4
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -1
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +2 -3
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +39 -26
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts +6 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js +205 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js.map +1 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.d.ts +3 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.js +6 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.js.map +1 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts +3 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.js +9 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.js.map +1 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts +6 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js +8 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js.map +1 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +25 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +89 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +1 -0
- package/dist/components/agent/settings/shared/InputField.d.ts +1 -1
- package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/InputField.js +4 -3
- package/dist/components/agent/settings/shared/InputField.js.map +1 -1
- package/dist/components/agent/settings/shared/MembersTable.d.ts +3 -3
- package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/MembersTable.js +1 -1
- package/dist/components/agent/settings/shared/MembersTable.js.map +1 -1
- package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts +5 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.js +70 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.js.map +1 -0
- package/dist/components/agent/settings/shared/SettingsCard.d.ts +2 -1
- package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/SettingsCard.js +2 -2
- package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.js +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -1
- package/dist/components/agent/settings/shared/UsageChart.d.ts +10 -0
- package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/UsageChart.js +16 -10
- package/dist/components/agent/settings/shared/UsageChart.js.map +1 -1
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts +8 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.js +26 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.js.map +1 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts +8 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.js +53 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.js.map +1 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts +8 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.js +51 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.js.map +1 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.d.ts +28 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.js +82 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.js.map +1 -0
- package/dist/components/agent/sidebarEntityPins.d.ts +11 -0
- package/dist/components/agent/sidebarEntityPins.d.ts.map +1 -0
- package/dist/components/agent/sidebarEntityPins.js +37 -0
- package/dist/components/agent/sidebarEntityPins.js.map +1 -0
- package/dist/components/agent/workspaceHierarchy.d.ts +24 -0
- package/dist/components/agent/workspaceHierarchy.d.ts.map +1 -0
- package/dist/components/agent/workspaceHierarchy.js +50 -0
- package/dist/components/agent/workspaceHierarchy.js.map +1 -0
- package/dist/components/product/XenoAgentProductHeader.d.ts +4 -2
- package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -1
- package/dist/components/product/XenoAgentProductHeader.js +22 -4
- package/dist/components/product/XenoAgentProductHeader.js.map +1 -1
- package/dist/components/product/XenoAgentSessionTabs.js +1 -1
- package/dist/components/product/XenoAgentSessionTabs.js.map +1 -1
- package/dist/components/product/XenoAgentWorkspaceSelector.d.ts +7 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.d.ts.map +1 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.js +237 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.js.map +1 -0
- package/dist/components/workspace/WorkspaceCreationWizard.d.ts +6 -0
- package/dist/components/workspace/WorkspaceCreationWizard.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceCreationWizard.js +48 -0
- package/dist/components/workspace/WorkspaceCreationWizard.js.map +1 -0
- package/dist/hooks/useSidebarLayoutPreference.d.ts +29 -0
- package/dist/hooks/useSidebarLayoutPreference.d.ts.map +1 -0
- package/dist/hooks/useSidebarLayoutPreference.js +83 -0
- package/dist/hooks/useSidebarLayoutPreference.js.map +1 -0
- package/dist/hooks/useWorkspaceCreation.d.ts +8 -0
- package/dist/hooks/useWorkspaceCreation.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceCreation.js +40 -0
- package/dist/hooks/useWorkspaceCreation.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/platformApiTypes.d.ts +77 -36
- package/dist/platformApiTypes.d.ts.map +1 -1
- package/dist/platformBridge.d.ts +4 -0
- package/dist/platformBridge.d.ts.map +1 -1
- package/dist/platformBridge.js +10 -0
- package/dist/platformBridge.js.map +1 -1
- package/dist/stores/agentChatStore.d.ts +120 -2
- package/dist/stores/agentChatStore.d.ts.map +1 -1
- package/dist/stores/agentChatStore.js +329 -35
- package/dist/stores/agentChatStore.js.map +1 -1
- package/dist/stores/agentCreationDefaults.d.ts +25 -0
- package/dist/stores/agentCreationDefaults.d.ts.map +1 -0
- package/dist/stores/agentCreationDefaults.js +11 -0
- package/dist/stores/agentCreationDefaults.js.map +1 -0
- package/dist/stores/entitySettingsStore.d.ts +37 -12
- package/dist/stores/entitySettingsStore.d.ts.map +1 -1
- package/dist/stores/entitySettingsStore.js +558 -585
- package/dist/stores/entitySettingsStore.js.map +1 -1
- package/dist/stores/suggestionStore.d.ts +9 -2
- package/dist/stores/suggestionStore.d.ts.map +1 -1
- package/dist/stores/suggestionStore.js +51 -24
- package/dist/stores/suggestionStore.js.map +1 -1
- package/dist/stores/workspaceCreationAttempt.d.ts +14 -0
- package/dist/stores/workspaceCreationAttempt.d.ts.map +1 -0
- package/dist/stores/workspaceCreationAttempt.js +35 -0
- package/dist/stores/workspaceCreationAttempt.js.map +1 -0
- package/dist/stores/workspaceReconciliation.d.ts +6 -0
- package/dist/stores/workspaceReconciliation.d.ts.map +1 -0
- package/dist/stores/workspaceReconciliation.js +33 -0
- package/dist/stores/workspaceReconciliation.js.map +1 -0
- package/dist/stores/workspaceStore.d.ts +44 -9
- package/dist/stores/workspaceStore.d.ts.map +1 -1
- package/dist/stores/workspaceStore.js +238 -99
- package/dist/stores/workspaceStore.js.map +1 -1
- package/dist/types/agentEditor.d.ts +1 -0
- package/dist/types/agentEditor.d.ts.map +1 -1
- package/dist/utils/advertisedReasoning.d.ts +25 -0
- package/dist/utils/advertisedReasoning.d.ts.map +1 -0
- package/dist/utils/advertisedReasoning.js +62 -0
- package/dist/utils/advertisedReasoning.js.map +1 -0
- package/dist/utils/clipboardCopy.d.ts +4 -0
- package/dist/utils/clipboardCopy.d.ts.map +1 -0
- package/dist/utils/clipboardCopy.js +27 -0
- package/dist/utils/clipboardCopy.js.map +1 -0
- package/dist/utils/providerCommandArgs.d.ts +11 -0
- package/dist/utils/providerCommandArgs.d.ts.map +1 -0
- package/dist/utils/providerCommandArgs.js +18 -0
- package/dist/utils/providerCommandArgs.js.map +1 -0
- package/dist/utils/rendererTeardown.d.ts +6 -0
- package/dist/utils/rendererTeardown.d.ts.map +1 -0
- package/dist/utils/rendererTeardown.js +18 -0
- package/dist/utils/rendererTeardown.js.map +1 -0
- package/package.json +20 -8
- package/src/agent.css +39 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessMembersSection.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccessMembersSection.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AccessMembersSection.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccessMembersSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,wBAAgB,oBAAoB,6BAQnC"}
|
|
@@ -1,31 +1,16 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import React
|
|
3
|
-
import { UserPlus, Globe, X } from 'lucide-react';
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
4
3
|
import { useEntitySettingsStore } from '../../../../stores/entitySettingsStore.js';
|
|
5
|
-
import {
|
|
6
|
-
import { SettingRow } from '../shared/SettingRow.js';
|
|
7
|
-
import { ToggleSwitch } from '../shared/ToggleSwitch.js';
|
|
8
|
-
import { MembersTable } from '../shared/MembersTable.js';
|
|
4
|
+
import { AccountWorkspacePanel } from './AccountWorkspacePanel.js';
|
|
9
5
|
export function AccessMembersSection() {
|
|
10
|
-
const settings = useEntitySettingsStore(
|
|
11
|
-
const updateAccess = useEntitySettingsStore(s => s.updateAccess);
|
|
12
|
-
const addMember = useEntitySettingsStore(s => s.addMember);
|
|
13
|
-
const removeMember = useEntitySettingsStore(s => s.removeMember);
|
|
14
|
-
const updateMemberRole = useEntitySettingsStore(s => s.updateMemberRole);
|
|
15
|
-
const [showInvite, setShowInvite] = useState(false);
|
|
16
|
-
const [inviteEmail, setInviteEmail] = useState('');
|
|
17
|
-
const [inviteRole, setInviteRole] = useState('viewer');
|
|
6
|
+
const settings = useEntitySettingsStore(state => state.settings);
|
|
18
7
|
if (!settings)
|
|
19
8
|
return null;
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
setInviteEmail('');
|
|
27
|
-
setShowInvite(false);
|
|
28
|
-
};
|
|
29
|
-
return (_jsxs("div", { className: "h-full min-h-0 grid grid-cols-1 xl:grid-cols-[minmax(0,1fr)_300px] gap-4 items-start", children: [_jsx(SettingsCard, { title: "Members", className: "flex flex-col min-h-0", headerRight: !isReadonly ? (_jsxs("button", { onClick: () => setShowInvite(true), className: "flex items-center gap-1 text-[10px] text-white/40 hover:text-white/70 transition-colors", children: [_jsx(UserPlus, { className: "w-3 h-3" }), " Invite"] })) : undefined, children: _jsxs("div", { className: "flex flex-col", children: [showInvite && (_jsxs("div", { className: "flex gap-2 mb-3 p-2.5 rounded-md bg-[#18181b] border border-[#27272a] flex-shrink-0", children: [_jsx("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(e.target.value), placeholder: "email@example.com", className: "flex-1 px-2 py-1.5 bg-[#2b2b2b] border border-[#27272a] rounded text-[11px] text-white focus:outline-none" }), _jsxs("select", { value: inviteRole, onChange: (e) => setInviteRole(e.target.value), className: "px-2 py-1.5 bg-[#2b2b2b] border border-[#27272a] rounded text-[10px] text-white/60 focus:outline-none", children: [_jsx("option", { value: "admin", children: "Admin" }), _jsx("option", { value: "editor", children: "Editor" }), _jsx("option", { value: "viewer", children: "Viewer" })] }), _jsx("button", { onClick: handleInvite, className: "px-2.5 py-1.5 bg-[#252525] text-white/70 text-[10px] rounded hover:bg-[#333336] transition-colors", children: "Send" }), _jsx("button", { onClick: () => setShowInvite(false), className: "px-2 py-1.5 text-white/40 text-[10px] hover:text-white/70", children: "Cancel" })] })), _jsx("div", { className: "flex-1 min-h-0 overflow-auto", children: _jsx(MembersTable, { members: access.members, onUpdateRole: updateMemberRole, onRemove: removeMember, readonly: isReadonly }) })] }) }), _jsxs("div", { className: "flex flex-col gap-4 min-h-0", children: [!isReadonly && (_jsx(SettingsCard, { title: "Access Control", children: _jsxs("div", { className: "divide-y divide-white/[0.05]", children: [_jsx(SettingRow, { icon: Globe, title: "Public Access", description: "Allow link access", children: _jsx(ToggleSwitch, { enabled: access.publicAccess, onChange: (v) => updateAccess({ publicAccess: v }) }) }), _jsx(SettingRow, { icon: Globe, title: "Guest Viewing", description: "Unauth guests can view", children: _jsx(ToggleSwitch, { enabled: access.allowGuestViewing, onChange: (v) => updateAccess({ allowGuestViewing: v }) }) })] }) })), access.pendingInvites.length > 0 && (_jsx(SettingsCard, { title: "Pending Invites", children: _jsx("div", { className: "space-y-2", children: access.pendingInvites.map((invite) => (_jsxs("div", { className: "flex items-center justify-between py-1.5 px-2 rounded-md bg-[#161618]", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-[11px] text-white/60 truncate", children: invite.email }), _jsxs("div", { className: "text-[9px] text-white/25", children: ["Expires ", new Date(invite.expiresAt).toLocaleDateString()] })] }), _jsxs("div", { className: "flex items-center gap-2 ml-2", children: [_jsx("span", { className: "text-[9px] text-white/30 uppercase px-1.5 py-0.5 bg-[#1E1E1E] rounded", children: invite.role }), _jsx("button", { className: "text-white/30 hover:text-red-400/70 transition-colors", children: _jsx(X, { className: "w-3 h-3" }) })] })] }, invite.id))) }) }))] })] }));
|
|
9
|
+
const workspaceId = settings.entityType === 'workspace' ? settings.entityId : settings.workspaceId;
|
|
10
|
+
if (!workspaceId)
|
|
11
|
+
return _jsx("p", { role: "alert", children: "Select a workspace before loading account membership." });
|
|
12
|
+
// Team/agent views inherit workspace membership; they must not silently mutate
|
|
13
|
+
// the entire server workspace from a narrower settings context.
|
|
14
|
+
return _jsx(AccountWorkspacePanel, { workspaceId: workspaceId, readOnly: settings.entityType !== 'workspace' }, workspaceId);
|
|
30
15
|
}
|
|
31
16
|
//# sourceMappingURL=AccessMembersSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessMembersSection.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccessMembersSection.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AccessMembersSection.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccessMembersSection.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAA;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAA;IAClG,IAAI,CAAC,WAAW;QAAE,OAAO,YAAG,IAAI,EAAC,OAAO,sEAA0D,CAAA;IAClG,+EAA+E;IAC/E,gEAAgE;IAChE,OAAO,KAAC,qBAAqB,IAAmB,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,UAAU,KAAK,WAAW,IAApF,WAAW,CAA6E,CAAA;AAC7H,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AgentAccountRequest, AgentAccountResult } from '@xenosystem/agent-interface-contract';
|
|
3
|
+
export declare function requireAccountAcknowledgement(call: (input: AgentAccountRequest) => Promise<AgentAccountResult>, input: AgentAccountRequest): Promise<AgentAccountResult>;
|
|
4
|
+
/** A lost preparation ACK is looked up under the same ID, never implicitly executed. */
|
|
5
|
+
export declare function requestPreparedAccountMutation(call: (input: AgentAccountRequest) => Promise<AgentAccountResult>, input: AgentAccountRequest, isCurrent: () => boolean): Promise<AgentAccountResult>;
|
|
6
|
+
export declare function AccountSignInPrompt({ signIn, busy, buttonClass, onCancel }: {
|
|
7
|
+
signIn: NonNullable<AgentAccountResult['status']>['signIn'];
|
|
8
|
+
busy: boolean;
|
|
9
|
+
buttonClass: string;
|
|
10
|
+
onCancel(): void;
|
|
11
|
+
}): React.JSX.Element;
|
|
12
|
+
export declare function AccountWorkspacePanel({ workspaceId, readOnly }: {
|
|
13
|
+
workspaceId: string;
|
|
14
|
+
readOnly?: boolean;
|
|
15
|
+
}): React.JSX.Element;
|
|
16
|
+
//# sourceMappingURL=AccountWorkspacePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountWorkspacePanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccountWorkspacePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAA4F,MAAM,sCAAsC,CAAA;AAS7L,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI9K;AAED,wFAAwF;AACxF,wBAAsB,8BAA8B,CAAC,IAAI,EAAC,CAAC,KAAK,EAAC,mBAAmB,KAAG,OAAO,CAAC,kBAAkB,CAAC,EAAC,KAAK,EAAC,mBAAmB,EAAC,SAAS,EAAC,MAAI,OAAO,GAAE,OAAO,CAAC,kBAAkB,CAAC,CAiB9L;AAGD,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAA;CAAE,qBAMjM;AACD,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,QAAgB,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,qBAiNnH"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
3
|
+
import { reconcileMembershipOperations } from './membershipOperationProjection.js';
|
|
4
|
+
import { getAgentPlatformBridge } from '../../../../platformBridge.js';
|
|
5
|
+
import { SettingsCard } from '../shared/SettingsCard.js';
|
|
6
|
+
import { MembersTable } from '../shared/MembersTable.js';
|
|
7
|
+
import { SettingRow } from '../shared/SettingRow.js';
|
|
8
|
+
import { UserRound } from 'lucide-react';
|
|
9
|
+
import { ConfirmationController, InAppConfirmationDialog } from '../shared/InAppConfirmationDialog.js';
|
|
10
|
+
export async function requireAccountAcknowledgement(call, input) {
|
|
11
|
+
const result = await call(input);
|
|
12
|
+
if (!result.success)
|
|
13
|
+
throw new Error(result.error || `Account operation refused (${result.code || 'unknown'}).`);
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
/** A lost preparation ACK is looked up under the same ID, never implicitly executed. */
|
|
17
|
+
export async function requestPreparedAccountMutation(call, input, isCurrent) {
|
|
18
|
+
const snapshot = structuredClone(input), id = input.membershipOperationId || input.keyOperationId || input.accountOperationId || input.integrationOperationId;
|
|
19
|
+
const recover = async (error, executed = false) => {
|
|
20
|
+
try {
|
|
21
|
+
const found = await call({ ...snapshot, intentPhase: 'lookup' });
|
|
22
|
+
if (found.keyMutation || found.membershipMutation || found.accountMutation || found.integrationOperation)
|
|
23
|
+
return { ...found, success: false, error };
|
|
24
|
+
}
|
|
25
|
+
catch { /* Retain only the known ID, without inventing a durable acknowledgement. */ }
|
|
26
|
+
const outcome = executed ? 'uncertain' : 'preparation-unknown';
|
|
27
|
+
const actions = { invite: 'invite.create', 'update-member': 'member.role', 'remove-member': 'member.remove', 'revoke-invite': 'invite.revoke', 'resend-invite': 'invite.resend', 'transfer-owner': 'owner.transfer' };
|
|
28
|
+
return { success: false, error: 'Intent delivery could not be verified. Look up the same operation ID before retrying.', ...(snapshot.keyOperationId ? { keyMutation: { operationId: snapshot.keyOperationId, action: snapshot.action === 'rotate-key' ? 'rotate' : snapshot.action === 'revoke-key' ? 'revoke' : 'create', outcome, secretDelivery: 'unavailable' } } : snapshot.membershipOperationId ? { membershipMutation: { operationId: snapshot.membershipOperationId, action: actions[snapshot.action], outcome } } : snapshot.accountOperationId ? { accountMutation: { operationId: snapshot.accountOperationId, action: snapshot.action === 'create-workspace' ? 'workspace.create' : snapshot.action === 'accept-invite' ? 'invite.accept' : 'invite.decline', outcome } } : { integrationOperation: { operationId: snapshot.integrationOperationId, provider: snapshot.integrationProvider, state: executed ? 'uncertain' : 'not-observed' } }) };
|
|
29
|
+
};
|
|
30
|
+
let prepared;
|
|
31
|
+
try {
|
|
32
|
+
prepared = await call({ ...snapshot, intentPhase: 'prepare' });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return recover('Preparation acknowledgement was lost. Check or explicitly retry this same operation; no execution was requested.');
|
|
36
|
+
}
|
|
37
|
+
if (!prepared.success && !prepared.membershipMutation && !prepared.keyMutation && ['REQUEST_FAILED', 'UNCERTAIN', 'CONFLICT'].includes(prepared.code || ''))
|
|
38
|
+
return recover(prepared.error || 'Preparation was not confirmed.');
|
|
39
|
+
if (!prepared.success || !prepared.intentPrepared || (prepared.membershipMutation?.operationId || prepared.keyMutation?.operationId || prepared.accountMutation?.operationId || prepared.integrationOperation?.operationId) !== id)
|
|
40
|
+
return { ...prepared, success: false, error: prepared.error || 'Durable intent preparation was not acknowledged.' };
|
|
41
|
+
if (!isCurrent())
|
|
42
|
+
return { ...prepared, success: false, error: 'Scope changed after preparation. Nothing was dispatched.' };
|
|
43
|
+
try {
|
|
44
|
+
return await call({ ...snapshot, intentPhase: 'execute' });
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return recover('Execution acknowledgement was lost. Check or explicitly retry this same operation.', true);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function AccountSignInPrompt({ signIn, busy, buttonClass, onCancel }) {
|
|
51
|
+
return _jsxs("div", { className: "space-y-2", children: [signIn?.userCode ? _jsxs("p", { children: ["Complete sign-in using code ", _jsx("strong", { children: signIn.userCode }), "."] }) : _jsx("p", { children: signIn?.phase === 'exchanging' ? 'Verifying sign-in and saving your account securely...' : 'Continue with XENO in your system browser.' }), signIn?.verificationUrl?.startsWith('https://') && _jsx("a", { href: signIn.verificationUrl, target: "_blank", rel: "noopener noreferrer", children: signIn.method === 'loopback-pkce' ? 'Open XENO sign-in in browser' : 'Open XENO verification' }), _jsx("button", { type: "button", className: buttonClass, disabled: busy || signIn?.phase === 'exchanging', onClick: onCancel, children: "Cancel sign-in" })] });
|
|
52
|
+
}
|
|
53
|
+
export function AccountWorkspacePanel({ workspaceId, readOnly = false }) {
|
|
54
|
+
const [confirmationController] = useState(() => new ConfirmationController());
|
|
55
|
+
const [confirmation, setConfirmation] = useState(null);
|
|
56
|
+
const [operations, setOperations] = useState([]);
|
|
57
|
+
const [membershipAvailable, setMembershipAvailable] = useState(false);
|
|
58
|
+
const [abandonmentAvailable, setAbandonmentAvailable] = useState(false);
|
|
59
|
+
const operationScope = useRef(undefined);
|
|
60
|
+
const [view, setView] = useState(null);
|
|
61
|
+
const [error, setError] = useState(null);
|
|
62
|
+
const [notice, setNotice] = useState(null);
|
|
63
|
+
const [busy, setBusy] = useState(false);
|
|
64
|
+
const [serverWorkspaceId, setServerWorkspaceId] = useState('');
|
|
65
|
+
const [workspaceName, setWorkspaceName] = useState('');
|
|
66
|
+
const [integrationOperation, setIntegrationOperation] = useState();
|
|
67
|
+
const [newOwnerId, setNewOwnerId] = useState('');
|
|
68
|
+
const [email, setEmail] = useState('');
|
|
69
|
+
const [role, setRole] = useState('viewer');
|
|
70
|
+
const [visibleCount, setVisibleCount] = useState(50);
|
|
71
|
+
const epoch = useRef(0);
|
|
72
|
+
const inFlight = useRef(false);
|
|
73
|
+
const call = (input) => {
|
|
74
|
+
const bridge = getAgentPlatformBridge().account;
|
|
75
|
+
if (!bridge)
|
|
76
|
+
return Promise.reject(new Error('The canonical account bridge is not available in this host.'));
|
|
77
|
+
return requireAccountAcknowledgement(bridge.request, input);
|
|
78
|
+
};
|
|
79
|
+
const refresh = async (generation) => {
|
|
80
|
+
const local = await call({ action: 'binding', workspaceId, intentPhase: 'lookup' });
|
|
81
|
+
if (epoch.current !== generation)
|
|
82
|
+
return;
|
|
83
|
+
if (local.binding) {
|
|
84
|
+
const recovery = await call({ action: 'membership-operations', workspaceId, expectedBindingRevision: local.bindingRevision, intentPhase: 'lookup' });
|
|
85
|
+
if (epoch.current !== generation)
|
|
86
|
+
return;
|
|
87
|
+
setOperations(recovery.membershipOperations || []);
|
|
88
|
+
setView({ workspaceId, binding: local.binding, revision: local.bindingRevision, workspaces: [], members: [], invites: [], inbox: [], accountOperations: [], integrations: [] });
|
|
89
|
+
}
|
|
90
|
+
const status = (await call({ action: 'status' })).status;
|
|
91
|
+
const next = { workspaceId, status, binding: local.binding, revision: local.bindingRevision, workspaces: [], members: [], invites: [], inbox: [], accountOperations: [], integrations: [] };
|
|
92
|
+
if (epoch.current === generation)
|
|
93
|
+
setView({ ...next });
|
|
94
|
+
if (status?.state === 'signed-in') {
|
|
95
|
+
const accountId = status.account?.id;
|
|
96
|
+
const [catalogResult, bindingResult, inboxResult, operationsResult, integrationsResult, integrationOperationsResult] = await Promise.allSettled([call({ action: 'list-workspaces' }), call({ action: 'binding', workspaceId }), call({ action: 'account-inbox' }), call({ action: 'account-operations', expectedAccountId: accountId, intentPhase: 'lookup' }), call({ action: 'integration-status' }), call({ action: 'integration-operations', expectedAccountId: accountId, intentPhase: 'lookup' })]);
|
|
97
|
+
if (catalogResult.status !== 'fulfilled' || bindingResult.status !== 'fulfilled')
|
|
98
|
+
throw new Error('Account workspace authority could not be verified.');
|
|
99
|
+
const catalog = catalogResult.value, binding = bindingResult.value;
|
|
100
|
+
next.workspaces = catalog.workspaces || [];
|
|
101
|
+
next.binding = binding.binding;
|
|
102
|
+
next.revision = binding.bindingRevision;
|
|
103
|
+
next.inbox = inboxResult.status === 'fulfilled' ? inboxResult.value.inboxInvites || [] : [];
|
|
104
|
+
next.accountOperations = operationsResult.status === 'fulfilled' ? operationsResult.value.accountOperations || [] : [];
|
|
105
|
+
next.integrations = integrationsResult.status === 'fulfilled' ? integrationsResult.value.integrations || [] : [];
|
|
106
|
+
if (epoch.current === generation && integrationOperationsResult.status === 'fulfilled')
|
|
107
|
+
setIntegrationOperation(integrationOperationsResult.value.integrationOperations?.[0]);
|
|
108
|
+
const scope = `${status.account?.id}:${workspaceId}:${binding.bindingRevision}`;
|
|
109
|
+
if (epoch.current === generation && operationScope.current !== scope) {
|
|
110
|
+
operationScope.current = scope;
|
|
111
|
+
setOperations([]);
|
|
112
|
+
setMembershipAvailable(false);
|
|
113
|
+
}
|
|
114
|
+
if (epoch.current === generation)
|
|
115
|
+
setView({ ...next });
|
|
116
|
+
if (binding.binding) {
|
|
117
|
+
const context = { workspaceId, expectedBindingRevision: binding.bindingRevision };
|
|
118
|
+
const mutations = await call({ action: 'membership-operations', ...context });
|
|
119
|
+
if (epoch.current === generation) {
|
|
120
|
+
setOperations(prior => reconcileMembershipOperations(prior, mutations.membershipOperations));
|
|
121
|
+
setMembershipAvailable(mutations.membershipManagementAvailable === true);
|
|
122
|
+
setAbandonmentAvailable(mutations.workspaceOperationAbandonmentAvailable === true);
|
|
123
|
+
}
|
|
124
|
+
const [members, invites] = await Promise.allSettled([call({ action: 'members', ...context }), call({ action: 'invites', ...context })]);
|
|
125
|
+
next.members = members.status === 'fulfilled' ? members.value.members || [] : [];
|
|
126
|
+
next.invites = invites.status === 'fulfilled' ? invites.value.invites || [] : [];
|
|
127
|
+
if (epoch.current === generation && (members.status === 'rejected' || invites.status === 'rejected'))
|
|
128
|
+
setError('Some membership or invitation data could not be verified. Refresh before making changes.');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (epoch.current === generation)
|
|
132
|
+
setView(next);
|
|
133
|
+
};
|
|
134
|
+
const execute = async (input, accepted) => {
|
|
135
|
+
if (inFlight.current)
|
|
136
|
+
return;
|
|
137
|
+
const generation = epoch.current;
|
|
138
|
+
inFlight.current = true;
|
|
139
|
+
setBusy(true);
|
|
140
|
+
setError(null);
|
|
141
|
+
setNotice(null);
|
|
142
|
+
const actionMap = { invite: 'invite.create', 'update-member': 'member.role', 'remove-member': 'member.remove', 'revoke-invite': 'invite.revoke', 'resend-invite': 'invite.resend', 'transfer-owner': 'owner.transfer' };
|
|
143
|
+
const mutationAction = input && actionMap[input.action];
|
|
144
|
+
if (input && mutationAction)
|
|
145
|
+
input = { ...input, membershipOperationId: input.membershipOperationId ?? crypto.randomUUID() };
|
|
146
|
+
const accountMutation = !!input && ['create-workspace', 'accept-invite', 'decline-invite'].includes(input.action);
|
|
147
|
+
const integrationMutation = input?.action === 'start-integration';
|
|
148
|
+
if (input && accountMutation)
|
|
149
|
+
input = { ...input, accountOperationId: input.accountOperationId ?? crypto.randomUUID(), expectedAccountId: input.expectedAccountId ?? view?.status?.account?.id };
|
|
150
|
+
if (input && integrationMutation)
|
|
151
|
+
input = { ...input, integrationOperationId: input.integrationOperationId ?? crypto.randomUUID(), expectedAccountId: input.expectedAccountId ?? view?.status?.account?.id };
|
|
152
|
+
try {
|
|
153
|
+
if (input) {
|
|
154
|
+
const account = getAgentPlatformBridge().account;
|
|
155
|
+
if (!account)
|
|
156
|
+
throw new Error('Canonical account bridge unavailable.');
|
|
157
|
+
const result = mutationAction || accountMutation || integrationMutation ? await requestPreparedAccountMutation(account.request, input, () => epoch.current === generation && !readOnly && (!input.expectedAccountId || view?.status?.account?.id === input.expectedAccountId)) : await account.request(input);
|
|
158
|
+
if (epoch.current !== generation)
|
|
159
|
+
return;
|
|
160
|
+
if (result.membershipMutation)
|
|
161
|
+
setOperations(prior => reconcileMembershipOperations(prior, [result.membershipMutation]));
|
|
162
|
+
else if (mutationAction && result.code !== 'UNCERTAIN')
|
|
163
|
+
setOperations(prior => prior.filter(value => value.operationId !== input.membershipOperationId));
|
|
164
|
+
if (result.membershipMutation?.outcome === 'prepared') {
|
|
165
|
+
setNotice('Prepared locally; not dispatched. Use Retry same membership operation to explicitly execute the stored intent.');
|
|
166
|
+
if (!result.success)
|
|
167
|
+
setError(result.error || 'Execution was not admitted.');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (result.membershipMutation?.outcome === 'cancelled') {
|
|
171
|
+
setNotice('Prepared intent discarded locally. It was not dispatched; no server change was made.');
|
|
172
|
+
await refresh(generation);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (result.membershipMutation?.outcome === 'abandoned') {
|
|
176
|
+
setNotice('Abandonment confirmed by the server. This operation cannot apply a membership change.');
|
|
177
|
+
await refresh(generation);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (result.accountMutation?.operation?.workspace)
|
|
181
|
+
setServerWorkspaceId(result.accountMutation.operation.workspace.id);
|
|
182
|
+
if (result.integrationOperation) {
|
|
183
|
+
setIntegrationOperation(result.integrationOperation);
|
|
184
|
+
if (result.integrationOperation.authorizationUrl)
|
|
185
|
+
setNotice('Provider authorization prepared. Continue in your system browser, then check this same operation.');
|
|
186
|
+
}
|
|
187
|
+
if (!result.success)
|
|
188
|
+
throw new Error(result.error || 'Account operation was not confirmed.');
|
|
189
|
+
accepted?.();
|
|
190
|
+
setNotice(input.action === 'invite' ? 'Invitation created by the server. Email delivery is not confirmed here.' : input.action === 'sign-out' && result.serverRevoked === false ? 'Signed out locally. Server revocation was not confirmed.' : 'Account operation acknowledged by the host.');
|
|
191
|
+
}
|
|
192
|
+
await refresh(generation);
|
|
193
|
+
}
|
|
194
|
+
catch (cause) {
|
|
195
|
+
if (epoch.current === generation) {
|
|
196
|
+
setError(cause instanceof Error ? cause.message : 'Account operation failed.');
|
|
197
|
+
if (input?.membershipOperationId)
|
|
198
|
+
setOperations(prior => prior.map(value => value.operationId === input.membershipOperationId && value.outcome === 'pending' ? { ...value, outcome: 'uncertain' } : value));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
if (epoch.current === generation) {
|
|
203
|
+
inFlight.current = false;
|
|
204
|
+
setBusy(false);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
useLayoutEffect(() => {
|
|
209
|
+
setAbandonmentAvailable(false);
|
|
210
|
+
epoch.current++;
|
|
211
|
+
inFlight.current = false;
|
|
212
|
+
setView(null);
|
|
213
|
+
setError(null);
|
|
214
|
+
setNotice(null);
|
|
215
|
+
setServerWorkspaceId('');
|
|
216
|
+
setWorkspaceName('');
|
|
217
|
+
setIntegrationOperation(undefined);
|
|
218
|
+
setNewOwnerId('');
|
|
219
|
+
setEmail('');
|
|
220
|
+
setBusy(false);
|
|
221
|
+
setVisibleCount(50);
|
|
222
|
+
setOperations([]);
|
|
223
|
+
setMembershipAvailable(false);
|
|
224
|
+
operationScope.current = undefined;
|
|
225
|
+
void execute();
|
|
226
|
+
return () => { epoch.current++; };
|
|
227
|
+
}, [workspaceId, readOnly]);
|
|
228
|
+
const current = view?.workspaceId === workspaceId ? view : null;
|
|
229
|
+
useEffect(() => {
|
|
230
|
+
if (current?.status?.state !== 'signing-in')
|
|
231
|
+
return;
|
|
232
|
+
const timer = setInterval(() => { void execute(); }, 2500);
|
|
233
|
+
return () => clearInterval(timer);
|
|
234
|
+
}, [current?.status?.state, workspaceId]);
|
|
235
|
+
const context = { workspaceId, expectedBindingRevision: current?.revision };
|
|
236
|
+
const bound = current?.workspaces.find(w => w.id === current.binding?.serverWorkspaceId);
|
|
237
|
+
const unresolved = operations.some(value => value.outcome === 'preparation-unknown' || value.outcome === 'prepared' || value.outcome === 'pending' || value.outcome === 'uncertain');
|
|
238
|
+
const canManage = !readOnly && !error && !unresolved && membershipAvailable && (bound?.role === 'owner' || bound?.role === 'admin');
|
|
239
|
+
const confirmationAuthority = JSON.stringify([workspaceId, epoch.current, current?.status?.state, current?.status?.account?.id, current?.binding?.serverWorkspaceId, current?.revision, bound?.role, readOnly]);
|
|
240
|
+
useLayoutEffect(() => {
|
|
241
|
+
confirmationController.invalidate();
|
|
242
|
+
setConfirmation(null);
|
|
243
|
+
return () => confirmationController.invalidate();
|
|
244
|
+
}, [confirmationController, confirmationAuthority]);
|
|
245
|
+
const requestConfirmation = (title, description, confirmLabel, request, accepted) => {
|
|
246
|
+
if (readOnly || busy || !current?.revision || current.status?.state !== 'signed-in')
|
|
247
|
+
return;
|
|
248
|
+
setConfirmation(confirmationController.begin({ authority: confirmationAuthority, title, description, confirmLabel, request: Object.freeze({ ...request }), ...(accepted ? { accepted } : {}) }));
|
|
249
|
+
};
|
|
250
|
+
const cancelConfirmation = () => { if (confirmation && confirmationController.cancel(confirmation.id))
|
|
251
|
+
setConfirmation(null); };
|
|
252
|
+
const confirmAction = () => {
|
|
253
|
+
const confirmed = confirmation && confirmationController.confirm(confirmationAuthority, confirmation.id);
|
|
254
|
+
if (confirmed)
|
|
255
|
+
setConfirmation(null);
|
|
256
|
+
if (confirmed && !readOnly && !busy)
|
|
257
|
+
void execute({ ...confirmed.request }, confirmed.accepted);
|
|
258
|
+
};
|
|
259
|
+
const button = 'rounded border border-white/10 px-2 py-1 text-[11px] text-white/70 hover:bg-white/5 disabled:opacity-35';
|
|
260
|
+
const retryMembership = (operationId) => {
|
|
261
|
+
requestConfirmation('Retry membership change', `Execute membership operation ${operationId} with the exact durably stored request and the same operation ID?`, 'Retry operation', { action: 'retry-membership-operation', ...context, membershipOperationId: operationId, intentPhase: 'execute' });
|
|
262
|
+
};
|
|
263
|
+
return _jsxs("div", { className: "space-y-3", "aria-busy": busy, children: [error && _jsx("p", { role: "alert", className: "text-[11px] text-amber-300", children: error }), notice && _jsx("p", { role: "status", className: "text-[11px] text-white/60", children: notice }), _jsx(SettingsCard, { title: "XENO account and workspace authority", children: _jsxs("div", { className: "space-y-2 text-[12px] text-white/65", children: [!current && _jsx("p", { children: busy ? 'Loading account authority...' : 'Account authority has not been loaded.' }), current?.status?.state === 'unconfigured' && _jsx("p", { children: current.status.reason || 'This host has no configured canonical account client.' }), current?.status?.state === 'signed-out' && _jsx("button", { type: "button", className: button, disabled: busy, onClick: () => { void execute({ action: 'begin-sign-in' }); }, children: "Sign in to XENO" }), current?.status?.state === 'signing-in' && _jsx(AccountSignInPrompt, { signIn: current.status.signIn, busy: busy, buttonClass: button, onCancel: () => { void execute({ action: 'cancel-sign-in' }); } }), current?.status?.state === 'signed-in' && _jsxs("div", { className: "space-y-2", children: [_jsx(SettingRow, { icon: UserRound, title: current.status.account?.email || 'Signed-in XENO account', description: `Credentials: ${current.status.persistence}`, children: _jsx("button", { type: "button", className: button, disabled: busy, onClick: () => { void execute({ action: 'sign-out' }); }, children: "Sign out" }) }), _jsxs("div", { className: "space-y-2 rounded border border-white/10 p-2", children: [_jsx("p", { className: "text-[11px] text-white/50", children: "Account inbox" }), !current.inbox.length && _jsx("p", { children: "No pending workspace invitations." }), current.inbox.map(invite => _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("span", { className: "flex-1", children: [invite.workspaceName || invite.workspaceId, " \u00B7 ", invite.role, invite.invitedByName ? ` · invited by ${invite.invitedByName}` : ''] }), _jsx("button", { type: "button", className: button, disabled: busy || readOnly, onClick: () => requestConfirmation('Accept workspace invitation', `Join ${invite.workspaceName || invite.workspaceId} as ${invite.role}?`, 'Accept invitation', { action: 'accept-invite', inviteId: invite.id, expectedAccountId: current.status?.account?.id }), children: "Accept" }), _jsx("button", { type: "button", className: button, disabled: busy || readOnly, onClick: () => requestConfirmation('Decline workspace invitation', `Decline the invitation to ${invite.workspaceName || invite.workspaceId}?`, 'Decline invitation', { action: 'decline-invite', inviteId: invite.id, expectedAccountId: current.status?.account?.id }), children: "Decline" })] }, invite.id))] }), !readOnly && _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("input", { "aria-label": "New server workspace name", value: workspaceName, onChange: event => setWorkspaceName(event.target.value), placeholder: "Team workspace", className: "rounded bg-[#111114] p-2 text-[11px]" }), _jsx("button", { type: "button", className: button, disabled: busy || !workspaceName.trim(), onClick: () => requestConfirmation('Create server workspace', `Create the remote team workspace “${workspaceName.trim()}”? It will not link this local workspace automatically.`, 'Create workspace', { action: 'create-workspace', workspaceName: workspaceName.trim(), expectedAccountId: current.status?.account?.id }, () => setWorkspaceName('')), children: "Create remote workspace" })] }), _jsxs("div", { className: "space-y-2 rounded border border-white/10 p-2", children: [_jsx("p", { className: "text-[11px] text-white/50", children: "Sign-in providers" }), current.integrations.length ? current.integrations.map(item => _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("span", { className: "flex-1", children: [item.provider, " \u00B7 ", item.linked ? 'connected' : item.available ? 'available' : 'unavailable', " \u00B7 scopes: ", item.scopes.join(' ')] }), !item.linked && _jsx("button", { type: "button", className: button, disabled: busy || readOnly || !item.available, onClick: () => requestConfirmation(`Connect ${item.provider}`, `Start ${item.provider} authorization with scopes ${item.scopes.join(' ')}?`, 'Start authorization', { action: 'start-integration', integrationProvider: item.provider, expectedAccountId: current.status?.account?.id }), children: "Connect" })] }, item.provider)) : _jsx("p", { children: "Provider linking is unavailable until the account origin advertises its configured providers." }), integrationOperation && _jsxs("p", { children: ["Latest provider operation: ", integrationOperation.provider, " \u00B7 ", integrationOperation.state, integrationOperation.rejection ? ` · ${integrationOperation.rejection}` : '', ". ", integrationOperation.authorizationUrl?.startsWith('https://') && _jsxs(_Fragment, { children: [_jsx("a", { href: integrationOperation.authorizationUrl, target: "_blank", rel: "noopener noreferrer", children: "Continue provider authorization" }), " "] }), _jsx("button", { type: "button", className: button, disabled: busy, onClick: () => void execute({ action: 'integration-operation', integrationOperationId: integrationOperation.operationId }), children: "Check connection" }), " ", _jsx("button", { type: "button", className: button, disabled: busy || readOnly || !['waiting', 'pending'].includes(integrationOperation.state), onClick: () => requestConfirmation('Cancel provider authorization', 'Cancel this still-waiting provider authorization?', 'Cancel authorization', { action: 'cancel-integration', integrationOperationId: integrationOperation.operationId }), children: "Cancel provider authorization" })] })] }), current.binding ? _jsxs("p", { children: ["Linked to ", bound?.name || current.binding.serverWorkspaceId, ". Server role: ", bound?.role || 'not available', "."] }) : _jsx("p", { children: "This local workspace is not linked to a server workspace." }), !readOnly && _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("select", { "aria-label": "Server workspace", value: serverWorkspaceId, disabled: busy, onChange: event => setServerWorkspaceId(event.target.value), className: "rounded bg-[#111114] p-2", children: [_jsx("option", { value: "", children: "Select an authorized server workspace..." }), current.workspaces.map(w => _jsxs("option", { value: w.id, children: [w.name, " (", w.role, ")"] }, w.id))] }), _jsx("button", { type: "button", className: button, disabled: busy || unresolved || !serverWorkspaceId, onClick: () => { void execute({ action: 'bind', ...context, serverWorkspaceId }); }, children: "Link workspace" }), current.binding && _jsx("button", { type: "button", className: button, disabled: busy || unresolved, onClick: () => { void execute({ action: 'unbind', ...context }); }, children: "Unlink workspace" })] })] }), _jsx("button", { type: "button", className: button, disabled: busy, onClick: () => { void execute(); }, children: "Refresh account" })] }) }), current?.binding && _jsxs(_Fragment, { children: [operations.length > 0 && _jsx(SettingsCard, { title: "Membership operation outcomes", children: _jsx("div", { className: "space-y-2 text-[11px]", children: operations.map(operation => _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("span", { className: "flex-1", children: [operation.action, " \u00B7 ", operation.outcome === 'preparation-unknown' ? `preparation unconfirmed · no execution requested · ${operation.operationId}` : operation.outcome === 'prepared' ? 'prepared locally · not dispatched' : operation.outcome, operation.delivery ? ` · email ${operation.delivery.state}` : ''] }), _jsx("button", { type: "button", className: button, disabled: busy, onClick: () => { void execute({ action: 'membership-operation', ...context, membershipOperationId: operation.operationId, ...(['prepared', 'preparation-unknown'].includes(operation.outcome) ? { intentPhase: 'lookup' } : {}) }); }, children: "Check membership operation" }), (operation.outcome === 'prepared' || operation.outcome === 'pending' || operation.outcome === 'uncertain') && !readOnly && _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: button, disabled: busy, onClick: () => retryMembership(operation.operationId), children: "Retry same membership operation" }), operation.outcome === 'prepared' && _jsx("button", { type: "button", className: button, disabled: busy || !current?.revision, onClick: () => requestConfirmation('Discard prepared membership intent', `Discard locally prepared operation ${operation.operationId}? It has never been admitted or dispatched. This makes no server change.`, 'Discard intent', { action: 'abandon-membership-operation', ...context, membershipOperationId: operation.operationId, intentPhase: 'execute' }), children: "Discard prepared membership intent" }), operation.outcome !== 'prepared' && abandonmentAvailable && _jsx("button", { type: "button", className: button, disabled: busy || !current?.revision, onClick: () => requestConfirmation('Abandon membership change', `Ask the server to abandon operation ${operation.operationId}? This does not undo a committed change. It stays blocked until the server confirms its outcome.`, 'Request abandonment', { action: 'abandon-membership-operation', ...context, membershipOperationId: operation.operationId }), children: "Abandon pending membership change" })] })] }, operation.operationId)) }) }), !membershipAvailable && _jsx("p", { className: "text-[11px] text-amber-300", children: "Durable canonical membership controls are unavailable in this host." }), _jsx(SettingsCard, { title: "Server workspace members", children: _jsxs("div", { className: "space-y-2", children: [_jsx(MembersTable, { members: current.members.slice(0, visibleCount), readonly: busy || !canManage, onUpdateRole: (memberId, role) => { void execute({ action: 'update-member', ...context, memberId, role }); }, onRemove: memberId => { const member = current.members.find(entry => entry.id === memberId); requestConfirmation('Remove workspace member', `Remove ${member?.email || member?.name || memberId} from ${bound?.name || current.binding?.serverWorkspaceId}?`, 'Remove member', { action: 'remove-member', ...context, memberId }); } }), !current.members.length && _jsx("p", { className: "text-[11px] text-white/50", children: error ? 'Member data is unavailable until it can be verified.' : 'The server returned no members.' }), current.members.length > visibleCount && _jsx("button", { type: "button", className: button, onClick: () => setVisibleCount(count => count + 50), children: "Show more members" }), bound?.role === 'owner' && _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("select", { "aria-label": "New workspace owner", className: "rounded bg-[#111114] p-2", value: newOwnerId, disabled: busy || !canManage, onChange: event => setNewOwnerId(event.target.value), children: [_jsx("option", { value: "", children: "Select an existing member..." }), current.members.filter(member => member.userId !== current.status?.account?.id).map(member => _jsx("option", { value: member.userId, children: member.email || member.name || member.userId }, member.id))] }), _jsx("button", { type: "button", className: button, disabled: busy || !canManage || !newOwnerId, onClick: () => requestConfirmation('Transfer workspace ownership', `Transfer ownership of ${bound.name} to ${current.members.find(member => member.userId === newOwnerId)?.email || newOwnerId}? You will become an administrator.`, 'Transfer ownership', { action: 'transfer-owner', ...context, newOwnerId }, () => setNewOwnerId('')), children: "Transfer workspace ownership" })] }), bound && bound.role !== 'owner' && !readOnly && _jsx("button", { type: "button", className: button, disabled: busy || !!error || unresolved || !membershipAvailable, onClick: () => requestConfirmation('Leave server workspace', `Leave ${bound.name}? You will lose its membership.`, 'Leave workspace', { action: 'remove-member', ...context, memberId: current.status?.account?.id }), children: "Leave server workspace" })] }) }), _jsxs(SettingsCard, { title: "Workspace invitations", children: [_jsxs("fieldset", { disabled: busy || !canManage, className: "min-w-0 space-y-2", children: [_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx("input", { "aria-label": "Invitation email", type: "email", value: email, onChange: event => setEmail(event.target.value), placeholder: "collaborator@example.com", className: "rounded bg-[#111114] p-2 text-[11px]" }), _jsxs("select", { "aria-label": "Invitation role", value: role, onChange: event => setRole(event.target.value), className: "rounded bg-[#111114] p-2 text-[11px]", children: [_jsx("option", { value: "viewer", children: "Viewer" }), _jsx("option", { value: "member", children: "Member" }), _jsx("option", { value: "admin", children: "Admin" })] }), _jsx("button", { type: "button", className: button, disabled: !email.trim(), onClick: () => { void execute({ action: 'invite', ...context, email: email.trim(), role }, () => setEmail('')); }, children: "Send invitation" })] }), current.invites.slice(0, visibleCount).map(invite => _jsxs("div", { className: "flex flex-wrap gap-2 text-[11px] text-white/60", children: [_jsxs("span", { className: "flex-1", children: [invite.email, " \u00B7 ", invite.role, " \u00B7 ", invite.status] }), _jsx("button", { type: "button", className: button, onClick: () => { void execute({ action: 'resend-invite', ...context, inviteId: invite.id }); }, children: "Resend invitation" }), _jsx("button", { type: "button", className: button, onClick: () => { void execute({ action: 'revoke-invite', ...context, inviteId: invite.id }); }, children: "Revoke invitation" })] }, invite.id))] }), current.invites.length > visibleCount && _jsx("button", { type: "button", className: button, onClick: () => setVisibleCount(count => count + 50), children: "Show more invitations" })] })] }), _jsx("p", { className: "text-[10px] text-white/40", children: "Public-link sharing and guest access still require their separate server-authorized workflows." }), confirmation && _jsx(InAppConfirmationDialog, { prompt: confirmation, onCancel: cancelConfirmation, onConfirm: confirmAction }, confirmation.id)] });
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=AccountWorkspacePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountWorkspacePanel.js","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AccountWorkspacePanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPermissionRulesPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AgentPermissionRulesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AgentPermissionRulesPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/agent/settings/sections/AgentPermissionRulesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAMtE;AAED,wBAAgB,yBAAyB,IAAI,KAAK,CAAC,YAAY,CA4H9D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { ShieldCheck, ShieldX, Trash2 } from 'lucide-react';
|
|
4
4
|
import { getAgentPlatformBridge } from '../../../../platformBridge.js';
|
|
5
5
|
/** Human-readable scope. Exported for test, and deliberately never "everything". */
|
|
@@ -14,6 +14,8 @@ export function AgentPermissionRulesPanel() {
|
|
|
14
14
|
const [rules, setRules] = useState([]);
|
|
15
15
|
const [error, setError] = useState(null);
|
|
16
16
|
const [loading, setLoading] = useState(true);
|
|
17
|
+
const [revoking, setRevoking] = useState(false);
|
|
18
|
+
const revokeInFlight = useRef(false);
|
|
17
19
|
const refresh = useCallback(async () => {
|
|
18
20
|
try {
|
|
19
21
|
const bridge = getAgentPlatformBridge()?.agent;
|
|
@@ -43,40 +45,53 @@ export function AgentPermissionRulesPanel() {
|
|
|
43
45
|
}, []);
|
|
44
46
|
useEffect(() => { void refresh(); }, [refresh]);
|
|
45
47
|
const revoke = useCallback(async (ruleId) => {
|
|
46
|
-
|
|
47
|
-
if (!bridge?.revokePermissionRule)
|
|
48
|
+
if (revokeInFlight.current)
|
|
48
49
|
return;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
50
|
+
revokeInFlight.current = true;
|
|
51
|
+
setRevoking(true);
|
|
52
|
+
try {
|
|
53
|
+
const bridge = getAgentPlatformBridge()?.agent;
|
|
54
|
+
if (!bridge?.revokePermissionRule)
|
|
55
|
+
throw new Error('This surface cannot revoke host permission rules.');
|
|
56
|
+
/**
|
|
57
|
+
* 🔴 The result was DISCARDED — `success`, `revoked` and `error` all of
|
|
58
|
+
* them — and the list simply refreshed. A revoke that failed showed
|
|
59
|
+
* nothing: the rule stayed in the list with no explanation, and on a
|
|
60
|
+
* PERMISSION control that means a person believing they withdrew a grant
|
|
61
|
+
* that is still in force. This panel already refuses to render a failed
|
|
62
|
+
* READ as "no rules" for exactly that reason; the write had no such care.
|
|
63
|
+
*
|
|
64
|
+
* `success` and `revoked` are separate answers and both are needed.
|
|
65
|
+
* `success` says the call went through; `revoked` says a rule was actually
|
|
66
|
+
* removed. Success-without-revoked means the rule was already gone, which
|
|
67
|
+
* is a fine outcome and a different sentence — the same distinction the
|
|
68
|
+
* landing queue draws between a failed CALL and a refused ENTRY.
|
|
69
|
+
*/
|
|
70
|
+
const result = await bridge.revokePermissionRule({ ruleId });
|
|
71
|
+
/**
|
|
72
|
+
* ⚠️ Refresh FIRST, then report. `refresh` clears the error on a successful
|
|
73
|
+
* READ, so setting the message before it would have wiped every refusal the
|
|
74
|
+
* moment the list came back — a fix that looked right and displayed
|
|
75
|
+
* nothing, which is the bug it was written to remove.
|
|
76
|
+
*/
|
|
77
|
+
await refresh();
|
|
78
|
+
if (!result.success) {
|
|
79
|
+
setError(result.error || 'Could not revoke that permission rule.');
|
|
80
|
+
}
|
|
81
|
+
else if (!result.revoked) {
|
|
82
|
+
setError('That rule was already gone; nothing was revoked.');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (cause) {
|
|
86
|
+
setError(cause instanceof Error ? cause.message : 'Could not revoke that permission rule.');
|
|
73
87
|
}
|
|
74
|
-
|
|
75
|
-
|
|
88
|
+
finally {
|
|
89
|
+
revokeInFlight.current = false;
|
|
90
|
+
setRevoking(false);
|
|
76
91
|
}
|
|
77
92
|
}, [refresh]);
|
|
78
|
-
return (
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
return (_jsxs("div", { className: "space-y-1", "data-testid": "agent-permission-rules", children: [error && _jsxs("div", { role: "alert", className: "text-[10px] text-red-200 px-2 py-3", children: [error, _jsx("button", { type: "button", onClick: () => void refresh(), disabled: revoking, className: "ml-2 underline", children: "Retry read" })] }), loading ? (_jsx("div", { className: "text-[10px] text-white/25 px-2 py-3", children: "Loading permission rules\u2026" })) : rules.length === 0 ? (error ? null : (_jsxs("div", { className: "text-center py-8", children: [_jsx(ShieldCheck, { className: "w-6 h-6 text-white/10 mx-auto mb-2" }), _jsx("p", { className: "text-[10px] text-white/25", children: "No remembered permissions" }), _jsx("p", { className: "text-[9px] text-white/15 mt-1", children: "Choosing \u201Calways\u201D on an agent permission prompt records a rule here" })] }))) : (rules.map((rule) => (_jsxs("div", { className: "flex items-center justify-between gap-2 py-2 px-2 hover:bg-white/[0.02]", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [rule.decision === 'allow'
|
|
94
|
+
? _jsx(ShieldCheck, { className: "w-3.5 h-3.5 text-white/40 shrink-0" })
|
|
95
|
+
: _jsx(ShieldX, { className: "w-3.5 h-3.5 text-white/40 shrink-0" }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "text-[11px] text-white/70 truncate", children: [rule.decision === 'allow' ? 'Always allow' : 'Always deny', " ", describeRuleScope(rule)] }), _jsx("div", { className: "text-[9px] text-white/30 truncate", children: rule.id })] })] }), _jsx("button", { type: "button", disabled: revoking, "aria-label": `Revoke rule ${rule.id}`, onClick: () => { void revoke(rule.id); }, className: "shrink-0 p-1 text-white/40 hover:text-white/80", children: _jsx(Trash2, { className: "w-3.5 h-3.5" }) })] }, rule.id))))] }));
|
|
81
96
|
}
|
|
82
97
|
//# sourceMappingURL=AgentPermissionRulesPanel.js.map
|