@stigmer/react 3.12.0 → 3.12.2
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/access/ManageAccessDialog.d.ts.map +1 -1
- package/access/ManageAccessDialog.js +7 -2
- package/access/ManageAccessDialog.js.map +1 -1
- package/activity/format-relative-time.d.ts +11 -9
- package/activity/format-relative-time.d.ts.map +1 -1
- package/activity/format-relative-time.js +11 -9
- package/activity/format-relative-time.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +5 -2
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +6 -5
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +10 -2
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +12 -20
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +3 -23
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +6 -10
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/approval-defaults-context.d.ts +47 -0
- package/approval-defaults-context.d.ts.map +1 -0
- package/approval-defaults-context.js +27 -0
- package/approval-defaults-context.js.map +1 -0
- package/attachment/index.d.ts +2 -0
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +1 -0
- package/attachment/index.js.map +1 -1
- package/attachment/vision-preflight.d.ts +113 -0
- package/attachment/vision-preflight.d.ts.map +1 -0
- package/attachment/vision-preflight.js +143 -0
- package/attachment/vision-preflight.js.map +1 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +3 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +3 -2
- package/billing/BillingSection.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +5 -4
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +9 -4
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +5 -4
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +9 -4
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +9 -4
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/useChannelSessions.d.ts.map +1 -1
- package/channel/useChannelSessions.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +8 -5
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +12 -7
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.d.ts +0 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +5 -10
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +2 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +120 -13
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.d.ts +0 -1
- package/composer/icons.d.ts.map +1 -1
- package/composer/icons.js +0 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +3 -2
- package/conversation/ConversationListPane.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +3 -14
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -14
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/environment/CreateEnvironmentForm.d.ts.map +1 -1
- package/environment/CreateEnvironmentForm.js +4 -8
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.d.ts.map +1 -1
- package/environment/EnvVarForm.js +2 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +5 -7
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ExecutionErrorNotice.d.ts +36 -0
- package/execution/ExecutionErrorNotice.d.ts.map +1 -0
- package/execution/ExecutionErrorNotice.js +39 -0
- package/execution/ExecutionErrorNotice.js.map +1 -0
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +5 -8
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +1 -6
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FollowUpInput.d.ts.map +1 -1
- package/execution/FollowUpInput.js +1 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/LivenessStatusLine.d.ts +40 -0
- package/execution/LivenessStatusLine.d.ts.map +1 -0
- package/execution/LivenessStatusLine.js +34 -0
- package/execution/LivenessStatusLine.js.map +1 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +31 -3
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +25 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -36
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +1 -1
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +9 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/TerminalSession.d.ts +30 -0
- package/execution/TerminalSession.d.ts.map +1 -1
- package/execution/TerminalSession.js +37 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +9 -0
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +16 -0
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts +20 -6
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +102 -29
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.d.ts.map +1 -1
- package/execution/ToolRunGroup.js +11 -11
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +5 -20
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/index.d.ts +6 -2
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +3 -1
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +42 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +38 -4
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +17 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +4 -1
- package/execution/tool-presenter.js.map +1 -1
- package/execution/useArtifactInspection.d.ts.map +1 -1
- package/execution/useArtifactInspection.js +4 -7
- package/execution/useArtifactInspection.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +3 -2
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -4
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +3 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +7 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -9
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +17 -26
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -4
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +8 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +5 -6
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +1 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/SpinnerIcon.d.ts +22 -0
- package/internal/SpinnerIcon.d.ts.map +1 -0
- package/internal/SpinnerIcon.js +23 -0
- package/internal/SpinnerIcon.js.map +1 -0
- package/internal/isUnimplemented.d.ts +17 -0
- package/internal/isUnimplemented.d.ts.map +1 -0
- package/internal/isUnimplemented.js +26 -0
- package/internal/isUnimplemented.js.map +1 -0
- package/internal/select-element-text.d.ts +11 -0
- package/internal/select-element-text.d.ts.map +1 -0
- package/internal/select-element-text.js +19 -0
- package/internal/select-element-text.js.map +1 -0
- package/internal/thread-card/ThreadCardShell.d.ts +27 -10
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +11 -5
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.d.ts +11 -2
- package/internal/thread-card/glyphs.d.ts.map +1 -1
- package/internal/thread-card/glyphs.js +9 -3
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/thread-card/index.d.ts +1 -1
- package/internal/thread-card/index.d.ts.map +1 -1
- package/internal/thread-card/index.js.map +1 -1
- package/internal/useCopyFeedback.d.ts +28 -0
- package/internal/useCopyFeedback.d.ts.map +1 -0
- package/internal/useCopyFeedback.js +40 -0
- package/internal/useCopyFeedback.js.map +1 -0
- package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
- package/invitation/InvitationCreatedAlert.js +12 -19
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +14 -21
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +2 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +16 -27
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.js +1 -1
- package/manifest/EditResourceYamlDialog.js +1 -1
- package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
- package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
- package/mcp-server/DefinitionDriftNotice.js +52 -0
- package/mcp-server/DefinitionDriftNotice.js.map +1 -0
- package/mcp-server/McpServerConnectDialog.js +8 -4
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +47 -14
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/OAuthAppForm.d.ts.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -4
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +39 -0
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
- package/mcp-server/internal/definitionDrift.js +122 -0
- package/mcp-server/internal/definitionDrift.js.map +1 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
- package/mcp-server/internal/mcpServerToInput.js +3 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +5 -4
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +1 -1
- package/mcp-server/useMcpServerCredentials.d.ts +38 -10
- package/mcp-server/useMcpServerCredentials.d.ts.map +1 -1
- package/mcp-server/useMcpServerCredentials.js +50 -7
- package/mcp-server/useMcpServerCredentials.js.map +1 -1
- package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
- package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
- package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
- package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
- package/mcp-server/useOrgOAuthApp.d.ts +22 -0
- package/mcp-server/useOrgOAuthApp.d.ts.map +1 -1
- package/mcp-server/useOrgOAuthApp.js +39 -7
- package/mcp-server/useOrgOAuthApp.js.map +1 -1
- package/models/ModelRegistryContext.d.ts +7 -1
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.js +9 -1
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +88 -6
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +133 -27
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +7 -1
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -5
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +5 -6
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.d.ts.map +1 -1
- package/organization/CreateOrganizationForm.js +5 -9
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +7 -16
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +5 -6
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +6 -7
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -4
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +18 -25
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +34 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +14 -7
- package/provider.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +2 -4
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/ConfirmDialog.js +1 -1
- package/resource-detail/useCopyResource.d.ts +4 -3
- package/resource-detail/useCopyResource.d.ts.map +1 -1
- package/resource-detail/useCopyResource.js +10 -19
- package/resource-detail/useCopyResource.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -4
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +6 -7
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/NewSessionViewer.d.ts +52 -2
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +21 -6
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +63 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +43 -17
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +17 -0
- package/session/audience.d.ts.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/run-config.d.ts +50 -0
- package/session/run-config.d.ts.map +1 -0
- package/session/run-config.js +15 -0
- package/session/run-config.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +11 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +29 -2
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +11 -9
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +2 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +18 -4
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +33 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +37 -2
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +44 -10
- package/session/useSessionPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts.map +1 -1
- package/settings/ApiKeysSection.js +3 -2
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts.map +1 -1
- package/settings/ChannelAppsSection.js +3 -2
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +5 -3
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.d.ts.map +1 -1
- package/settings/IdentityProvidersSection.js +3 -2
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.d.ts.map +1 -1
- package/settings/InvitationsSection.js +3 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.d.ts.map +1 -1
- package/settings/MembersSection.js +3 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.d.ts.map +1 -1
- package/settings/OAuthAppsSection.js +3 -2
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.d.ts.map +1 -1
- package/settings/OrgProfileSection.js +3 -2
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +3 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +3 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +18 -7
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sidebar/chrome.d.ts +3 -4
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +5 -4
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDiffDialog.js +1 -1
- package/skill/useSkillVersions.d.ts.map +1 -1
- package/skill/useSkillVersions.js +1 -9
- package/skill/useSkillVersions.js.map +1 -1
- package/src/access/ManageAccessDialog.tsx +10 -4
- package/src/activity/format-relative-time.ts +11 -9
- package/src/agent/steps/CapabilitiesStep.tsx +6 -3
- package/src/agent/steps/IdentityStep.tsx +19 -12
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
- package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
- package/src/api-key/ApiKeyListPanel.tsx +3 -39
- package/src/api-key/CreateApiKeyForm.tsx +12 -26
- package/src/approval-defaults-context.ts +56 -0
- package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
- package/src/attachment/index.ts +12 -0
- package/src/attachment/vision-preflight.ts +236 -0
- package/src/billing/AutoRechargeCard.tsx +5 -4
- package/src/billing/BillingSection.tsx +4 -3
- package/src/channel/ChannelConversationsDialog.tsx +8 -4
- package/src/channel/ChannelCredentialsDialog.tsx +14 -4
- package/src/channel/ChannelTemplatesDialog.tsx +8 -4
- package/src/channel/ConnectSlackDialog.tsx +14 -4
- package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
- package/src/channel/useChannelSessions.ts +3 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
- package/src/channel-app/CreateChannelAppForm.tsx +17 -12
- package/src/channel-app/internal.tsx +5 -25
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +160 -13
- package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
- package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
- package/src/composer/icons.tsx +0 -18
- package/src/conversation/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +4 -3
- package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
- package/src/dashboard/DashboardFailedRuns.tsx +2 -12
- package/src/environment/CreateEnvironmentForm.tsx +8 -27
- package/src/environment/EnvVarForm.tsx +2 -18
- package/src/environment/EnvironmentVariableEditor.tsx +5 -21
- package/src/execution/ArtifactApplyButton.tsx +2 -17
- package/src/execution/ExecutionErrorNotice.tsx +99 -0
- package/src/execution/FilePathLink.tsx +5 -9
- package/src/execution/FileReviewCard.tsx +1 -20
- package/src/execution/FollowUpInput.tsx +1 -16
- package/src/execution/LivenessStatusLine.tsx +59 -0
- package/src/execution/MessageEntry.tsx +136 -25
- package/src/execution/MessageThread.tsx +84 -83
- package/src/execution/SetupProgress.tsx +5 -1
- package/src/execution/SubAgentSection.tsx +9 -20
- package/src/execution/TerminalSession.tsx +97 -10
- package/src/execution/ToolCallDetail.tsx +19 -0
- package/src/execution/ToolCallItem.tsx +157 -37
- package/src/execution/ToolRunGroup.tsx +30 -32
- package/src/execution/WriteBackCard.tsx +5 -24
- package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
- package/src/execution/__tests__/MessageThread.test.tsx +97 -0
- package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
- package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
- package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
- package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +8 -2
- package/src/execution/tool-categories.ts +72 -8
- package/src/execution/tool-presenter.ts +22 -1
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/execution/useCreateAgentExecution.ts +3 -2
- package/src/iam-policy/GrantAccessForm.tsx +2 -18
- package/src/iam-policy/OrgMembersPanel.tsx +3 -19
- package/src/iam-policy/RoleSelector.tsx +8 -1
- package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
- package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
- package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
- package/src/index.ts +23 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/isUnimplemented.ts +26 -0
- package/src/internal/select-element-text.ts +17 -0
- package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
- package/src/internal/thread-card/glyphs.tsx +24 -3
- package/src/internal/thread-card/index.ts +1 -0
- package/src/internal/useCopyFeedback.ts +61 -0
- package/src/invitation/InvitationCreatedAlert.tsx +10 -18
- package/src/invitation/InvitationManager.tsx +23 -34
- package/src/invitation/InvitationRedemption.tsx +2 -18
- package/src/library/useExportResource.ts +15 -29
- package/src/manifest/ApplyManifestDialog.tsx +1 -1
- package/src/manifest/EditResourceYamlDialog.tsx +1 -1
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +30 -12
- package/src/mcp-server/McpServerDetailView.tsx +58 -26
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +103 -5
- package/src/mcp-server/__tests__/byoaEditionDegradation.test.tsx +323 -0
- package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
- package/src/mcp-server/__tests__/useMcpServerCredentials.test.tsx +306 -0
- package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
- package/src/mcp-server/internal/definitionDrift.ts +158 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
- package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
- package/src/mcp-server/useMcpServerConnect.ts +1 -1
- package/src/mcp-server/useMcpServerCredentials.ts +87 -19
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/mcp-server/useOrgOAuthApp.ts +54 -8
- package/src/models/ModelRegistryContext.ts +7 -1
- package/src/models/ModelSelector.tsx +37 -0
- package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
- package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
- package/src/models/index.ts +2 -2
- package/src/models/registry.ts +196 -29
- package/src/models/useModelRegistry.ts +10 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
- package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
- package/src/organization/CreateOrganizationForm.tsx +10 -29
- package/src/organization/OrgProfilePanel.tsx +13 -44
- package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
- package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
- package/src/platform-client/PlatformClientListPanel.tsx +2 -18
- package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
- package/src/provider.tsx +76 -33
- package/src/resource-creation/WizardNav.tsx +2 -18
- package/src/resource-detail/ConfirmDialog.tsx +1 -1
- package/src/resource-detail/useCopyResource.ts +17 -23
- package/src/schedule/ScheduleDetailView.tsx +2 -18
- package/src/schedule/ScheduleForm.tsx +19 -34
- package/src/session/NewSessionViewer.tsx +85 -7
- package/src/session/SessionViewer.tsx +120 -17
- package/src/session/__tests__/audienceWiring.test.tsx +76 -0
- package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
- package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
- package/src/session/__tests__/useSessionPanel.test.ts +114 -0
- package/src/session/audience.ts +18 -0
- package/src/session/index.ts +2 -1
- package/src/session/run-config.ts +59 -0
- package/src/session/useNewSessionFlow.ts +39 -2
- package/src/session/useSessionConversation.ts +14 -10
- package/src/session/useSessionPageFlow.ts +51 -10
- package/src/session/useSessionPanel.ts +91 -10
- package/src/settings/ApiKeysSection.tsx +4 -3
- package/src/settings/ChannelAppsSection.tsx +4 -3
- package/src/settings/EnvironmentsSection.tsx +8 -5
- package/src/settings/IdentityProvidersSection.tsx +4 -3
- package/src/settings/InvitationsSection.tsx +4 -2
- package/src/settings/MembersSection.tsx +4 -2
- package/src/settings/OAuthAppsSection.tsx +4 -3
- package/src/settings/OrgProfileSection.tsx +4 -3
- package/src/settings/PlatformClientsSection.tsx +4 -3
- package/src/settings/UsageSection.tsx +4 -2
- package/src/sharing/ShareAgentDialog.tsx +28 -10
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +1 -1
- package/src/skill/useSkillVersions.ts +1 -11
- package/src/styles.css +43 -0
- package/src/version-history/VersionTimelineEntry.tsx +1 -21
- package/src/workflow/FailedRunsWidget.tsx +2 -9
- package/src/workflow/PendingApprovalsWidget.tsx +2 -9
- package/src/workflow/ViewYamlDialog.tsx +7 -22
- package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +39 -7
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionGraph.tsx +26 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +115 -24
- package/src/workflow/WorkflowExplainDialog.tsx +8 -24
- package/src/workflow/WorkflowNode.tsx +5 -2
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
- package/src/workflow/WorkflowRefinePanel.tsx +2 -18
- package/src/workflow/WorkflowRepairCard.tsx +2 -18
- package/src/workflow/WorkflowRunDialog.tsx +31 -24
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
- package/src/workflow/WorkflowVersionBadge.tsx +4 -13
- package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +48 -1
- package/src/workflow/__tests__/WorkflowNode.test.tsx +93 -0
- package/src/workflow/__tests__/WorkflowRunDialog.test.tsx +127 -0
- package/src/workflow/__tests__/graph-history.test.ts +103 -0
- package/src/workflow/__tests__/overview-graph.test.ts +17 -0
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useCanvasKeyboardShortcuts.undo.test.ts +115 -0
- package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
- package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
- package/src/workflow/__tests__/useWorkflowCanvas.undo.test.tsx +133 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +17 -8
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/instance/useDeleteWorkflowInstance.ts +9 -4
- package/src/workflow/layout/registry-dimensions.ts +2 -5
- package/src/workflow/node-shell/NodeShell.tsx +4 -0
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/task-type-visual-registry.ts +5 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useCanvasKeyboardShortcuts.ts +33 -3
- package/src/workflow/useGraphHistory.ts +22 -41
- package/src/workflow/useWorkflowCanvas.ts +126 -21
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/src/workflow/useWorkflowSave.ts +2 -15
- package/src/workflow/workflow-graph-conversions.ts +25 -3
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +1 -23
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -11
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -11
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/ViewYamlDialog.d.ts.map +1 -1
- package/workflow/ViewYamlDialog.js +7 -23
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +7 -11
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +5 -8
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +31 -6
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.d.ts +4 -2
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
- package/workflow/WorkflowCanvasInner.js +7 -3
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +6 -2
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +27 -1
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +49 -18
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +6 -8
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowNode.d.ts.map +1 -1
- package/workflow/WorkflowNode.js +2 -2
- package/workflow/WorkflowNode.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +8 -2
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
- package/workflow/WorkflowRefinePanel.js +2 -4
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.d.ts.map +1 -1
- package/workflow/WorkflowRepairCard.js +2 -4
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.d.ts +11 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +18 -9
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +2 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +4 -13
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +1 -26
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/index.d.ts +1 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +10 -2
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/instance/useDeleteWorkflowInstance.d.ts +9 -4
- package/workflow/instance/useDeleteWorkflowInstance.d.ts.map +1 -1
- package/workflow/instance/useDeleteWorkflowInstance.js +4 -2
- package/workflow/instance/useDeleteWorkflowInstance.js.map +1 -1
- package/workflow/layout/registry-dimensions.d.ts.map +1 -1
- package/workflow/layout/registry-dimensions.js +2 -5
- package/workflow/layout/registry-dimensions.js.map +1 -1
- package/workflow/node-shell/NodeShell.js +1 -1
- package/workflow/node-shell/NodeShell.js.map +1 -1
- package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
- package/workflow/picker/BranchAddPopover.js +3 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/task-type-visual-registry.d.ts.map +1 -1
- package/workflow/task-type-visual-registry.js +5 -3
- package/workflow/task-type-visual-registry.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useCanvasKeyboardShortcuts.d.ts +15 -4
- package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -1
- package/workflow/useCanvasKeyboardShortcuts.js +25 -4
- package/workflow/useCanvasKeyboardShortcuts.js.map +1 -1
- package/workflow/useGraphHistory.d.ts +16 -9
- package/workflow/useGraphHistory.d.ts.map +1 -1
- package/workflow/useGraphHistory.js +19 -33
- package/workflow/useGraphHistory.js.map +1 -1
- package/workflow/useWorkflowCanvas.d.ts +6 -4
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +115 -23
- package/workflow/useWorkflowCanvas.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +46 -13
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
- package/workflow/useWorkflowSave.d.ts.map +1 -1
- package/workflow/useWorkflowSave.js +2 -15
- package/workflow/useWorkflowSave.js.map +1 -1
- package/workflow/workflow-graph-conversions.d.ts +19 -1
- package/workflow/workflow-graph-conversions.d.ts.map +1 -1
- package/workflow/workflow-graph-conversions.js +17 -3
- package/workflow/workflow-graph-conversions.js.map +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { useCallback, useRef } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { selectElementText } from "../internal/select-element-text.js";
|
|
6
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
5
7
|
|
|
6
8
|
// ---------------------------------------------------------------------------
|
|
7
9
|
// Public API
|
|
@@ -47,24 +49,14 @@ export function InvitationCreatedAlert({
|
|
|
47
49
|
onDismiss,
|
|
48
50
|
className,
|
|
49
51
|
}: InvitationCreatedAlertProps) {
|
|
50
|
-
const
|
|
52
|
+
const { copy, copied } = useCopyFeedback();
|
|
53
|
+
const revealRef = useRef<HTMLElement>(null);
|
|
51
54
|
|
|
52
55
|
const handleCopy = useCallback(async () => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
} catch {
|
|
58
|
-
const el = document.getElementById("stgm-invite-url-reveal");
|
|
59
|
-
if (el) {
|
|
60
|
-
const selection = window.getSelection();
|
|
61
|
-
const range = document.createRange();
|
|
62
|
-
range.selectNodeContents(el);
|
|
63
|
-
selection?.removeAllRanges();
|
|
64
|
-
selection?.addRange(range);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}, [inviteUrl]);
|
|
56
|
+
if (await copy(inviteUrl)) return;
|
|
57
|
+
// Rejected write: select the revealed URL so the user can copy manually.
|
|
58
|
+
if (revealRef.current) selectElementText(revealRef.current);
|
|
59
|
+
}, [copy, inviteUrl]);
|
|
68
60
|
|
|
69
61
|
return (
|
|
70
62
|
<div
|
|
@@ -99,7 +91,7 @@ export function InvitationCreatedAlert({
|
|
|
99
91
|
|
|
100
92
|
<div className="stg:flex stg:items-center stg:gap-2">
|
|
101
93
|
<code
|
|
102
|
-
|
|
94
|
+
ref={revealRef}
|
|
103
95
|
className={cn(
|
|
104
96
|
"stg:min-w-0 stg:flex-1 stg:select-all stg:truncate stg:rounded-md",
|
|
105
97
|
"stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useState, type FormEvent } from "react";
|
|
3
|
+
import { useCallback, useId, useState, type FormEvent } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import {
|
|
6
6
|
getUserMessage,
|
|
@@ -17,6 +17,8 @@ import { useRevokeInvitation } from "./useRevokeInvitation.js";
|
|
|
17
17
|
import { InvitationCreatedAlert } from "./InvitationCreatedAlert.js";
|
|
18
18
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
19
19
|
import { RoleSelector } from "../iam-policy/RoleSelector.js";
|
|
20
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
21
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
20
22
|
|
|
21
23
|
// ---------------------------------------------------------------------------
|
|
22
24
|
// Public API
|
|
@@ -230,6 +232,7 @@ function CreateInvitationForm({
|
|
|
230
232
|
onCancel: () => void;
|
|
231
233
|
}) {
|
|
232
234
|
const { create, isCreating, error, clearError } = useCreateInvitation();
|
|
235
|
+
const baseId = useId();
|
|
233
236
|
|
|
234
237
|
const [label, setLabel] = useState("");
|
|
235
238
|
const [role, setRole] = useState<IamRole>(IamRole.viewer);
|
|
@@ -266,14 +269,14 @@ function CreateInvitationForm({
|
|
|
266
269
|
{/* Label */}
|
|
267
270
|
<div className="stg:space-y-1">
|
|
268
271
|
<label
|
|
269
|
-
htmlFor=
|
|
272
|
+
htmlFor={`${baseId}-label`}
|
|
270
273
|
className="stg:text-xs stg:font-medium stg:text-foreground"
|
|
271
274
|
>
|
|
272
275
|
Label{" "}
|
|
273
276
|
<span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
|
|
274
277
|
</label>
|
|
275
278
|
<input
|
|
276
|
-
id=
|
|
279
|
+
id={`${baseId}-label`}
|
|
277
280
|
type="text"
|
|
278
281
|
value={label}
|
|
279
282
|
onChange={(e) => setLabel(e.target.value)}
|
|
@@ -304,9 +307,12 @@ function CreateInvitationForm({
|
|
|
304
307
|
Expires in
|
|
305
308
|
</legend>
|
|
306
309
|
<div className="stg:flex stg:flex-wrap stg:gap-2">
|
|
310
|
+
{/* Radio-group names are minted per mount: a hardcoded name would
|
|
311
|
+
merge two mounted forms into one keyboard group. */}
|
|
307
312
|
{EXPIRY_OPTIONS.map(({ value, label: optLabel }) => (
|
|
308
313
|
<ExpiryRadio
|
|
309
314
|
key={value}
|
|
315
|
+
name={`${baseId}-expiry`}
|
|
310
316
|
value={value}
|
|
311
317
|
label={optLabel}
|
|
312
318
|
checked={expiry === value}
|
|
@@ -324,6 +330,7 @@ function CreateInvitationForm({
|
|
|
324
330
|
</legend>
|
|
325
331
|
<div className="stg:flex stg:flex-wrap stg:gap-2">
|
|
326
332
|
<RedemptionRadio
|
|
333
|
+
name={`${baseId}-redemption`}
|
|
327
334
|
value="unlimited"
|
|
328
335
|
label="Unlimited"
|
|
329
336
|
description="Anyone with the link can join"
|
|
@@ -332,6 +339,7 @@ function CreateInvitationForm({
|
|
|
332
339
|
onChange={setRedemptionMode}
|
|
333
340
|
/>
|
|
334
341
|
<RedemptionRadio
|
|
342
|
+
name={`${baseId}-redemption`}
|
|
335
343
|
value="single"
|
|
336
344
|
label="Single use"
|
|
337
345
|
description="One person only"
|
|
@@ -358,7 +366,7 @@ function CreateInvitationForm({
|
|
|
358
366
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
359
367
|
)}
|
|
360
368
|
>
|
|
361
|
-
{isCreating && <SpinnerIcon />}
|
|
369
|
+
{isCreating && <SpinnerIcon size={12} />}
|
|
362
370
|
Create invite link
|
|
363
371
|
</button>
|
|
364
372
|
|
|
@@ -398,7 +406,7 @@ function InvitationRow({
|
|
|
398
406
|
onCancelRevoke: () => void;
|
|
399
407
|
onRevoked: () => void;
|
|
400
408
|
}) {
|
|
401
|
-
const
|
|
409
|
+
const { copy, copied } = useCopyFeedback();
|
|
402
410
|
|
|
403
411
|
const id = invitation.metadata?.id ?? "";
|
|
404
412
|
const label = invitation.spec?.label || invitation.metadata?.name || "Unnamed invite";
|
|
@@ -410,15 +418,9 @@ function InvitationRow({
|
|
|
410
418
|
const expiresAt = invitation.spec?.expiresAt;
|
|
411
419
|
const isActive = state === InvitationState.active;
|
|
412
420
|
|
|
413
|
-
const handleCopy = useCallback(
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
setCopied(true);
|
|
417
|
-
setTimeout(() => setCopied(false), 2000);
|
|
418
|
-
} catch {
|
|
419
|
-
// silently fail — copy is a convenience, not critical
|
|
420
|
-
}
|
|
421
|
-
}, [token, buildInviteUrl]);
|
|
421
|
+
const handleCopy = useCallback(() => {
|
|
422
|
+
void copy(buildInviteUrl(token));
|
|
423
|
+
}, [copy, token, buildInviteUrl]);
|
|
422
424
|
|
|
423
425
|
if (isRevoking) {
|
|
424
426
|
return (
|
|
@@ -572,7 +574,7 @@ function RevokeConfirmation({
|
|
|
572
574
|
"stg:disabled:pointer-events-none stg:disabled:opacity-50",
|
|
573
575
|
)}
|
|
574
576
|
>
|
|
575
|
-
{isRevoking && <SpinnerIcon />}
|
|
577
|
+
{isRevoking && <SpinnerIcon size={12} />}
|
|
576
578
|
Revoke
|
|
577
579
|
</button>
|
|
578
580
|
<button
|
|
@@ -638,12 +640,14 @@ const STATE_BADGE_CONFIG: Record<InvitationState, { label: string; className: st
|
|
|
638
640
|
// ---------------------------------------------------------------------------
|
|
639
641
|
|
|
640
642
|
function ExpiryRadio({
|
|
643
|
+
name,
|
|
641
644
|
value,
|
|
642
645
|
label,
|
|
643
646
|
checked,
|
|
644
647
|
disabled,
|
|
645
648
|
onChange,
|
|
646
649
|
}: {
|
|
650
|
+
name: string;
|
|
647
651
|
value: ExpiryOption;
|
|
648
652
|
label: string;
|
|
649
653
|
checked: boolean;
|
|
@@ -662,7 +666,7 @@ function ExpiryRadio({
|
|
|
662
666
|
>
|
|
663
667
|
<input
|
|
664
668
|
type="radio"
|
|
665
|
-
name=
|
|
669
|
+
name={name}
|
|
666
670
|
value={value}
|
|
667
671
|
checked={checked}
|
|
668
672
|
disabled={disabled}
|
|
@@ -675,6 +679,7 @@ function ExpiryRadio({
|
|
|
675
679
|
}
|
|
676
680
|
|
|
677
681
|
function RedemptionRadio({
|
|
682
|
+
name,
|
|
678
683
|
value,
|
|
679
684
|
label,
|
|
680
685
|
description,
|
|
@@ -682,6 +687,7 @@ function RedemptionRadio({
|
|
|
682
687
|
disabled,
|
|
683
688
|
onChange,
|
|
684
689
|
}: {
|
|
690
|
+
name: string;
|
|
685
691
|
value: RedemptionMode;
|
|
686
692
|
label: string;
|
|
687
693
|
description: string;
|
|
@@ -701,7 +707,7 @@ function RedemptionRadio({
|
|
|
701
707
|
>
|
|
702
708
|
<input
|
|
703
709
|
type="radio"
|
|
704
|
-
name=
|
|
710
|
+
name={name}
|
|
705
711
|
value={value}
|
|
706
712
|
checked={checked}
|
|
707
713
|
disabled={disabled}
|
|
@@ -836,20 +842,3 @@ function RevokeIcon() {
|
|
|
836
842
|
);
|
|
837
843
|
}
|
|
838
844
|
|
|
839
|
-
function SpinnerIcon() {
|
|
840
|
-
return (
|
|
841
|
-
<svg
|
|
842
|
-
width="12"
|
|
843
|
-
height="12"
|
|
844
|
-
viewBox="0 0 16 16"
|
|
845
|
-
fill="none"
|
|
846
|
-
stroke="currentColor"
|
|
847
|
-
strokeWidth="2"
|
|
848
|
-
strokeLinecap="round"
|
|
849
|
-
className="stg:animate-spin"
|
|
850
|
-
aria-hidden="true"
|
|
851
|
-
>
|
|
852
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
853
|
-
</svg>
|
|
854
|
-
);
|
|
855
|
-
}
|
|
@@ -7,6 +7,7 @@ import type { Invitation } from "@stigmer/protos/ai/stigmer/iam/invitation/v1/ap
|
|
|
7
7
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
8
8
|
import { useInvitationPreview } from "./useInvitationPreview.js";
|
|
9
9
|
import { useRedeemInvitation } from "./useRedeemInvitation.js";
|
|
10
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
10
11
|
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
// Public API
|
|
@@ -261,7 +262,7 @@ export function InvitationRedemption({
|
|
|
261
262
|
"stg:transition-colors",
|
|
262
263
|
)}
|
|
263
264
|
>
|
|
264
|
-
{isRedeeming && <SpinnerIcon />}
|
|
265
|
+
{isRedeeming && <SpinnerIcon size={14} />}
|
|
265
266
|
{isRedeeming ? "Accepting\u2026" : "Accept Invitation"}
|
|
266
267
|
</button>
|
|
267
268
|
{redeemError && (
|
|
@@ -442,20 +443,3 @@ function SuccessIcon() {
|
|
|
442
443
|
);
|
|
443
444
|
}
|
|
444
445
|
|
|
445
|
-
function SpinnerIcon() {
|
|
446
|
-
return (
|
|
447
|
-
<svg
|
|
448
|
-
width="14"
|
|
449
|
-
height="14"
|
|
450
|
-
viewBox="0 0 16 16"
|
|
451
|
-
fill="none"
|
|
452
|
-
stroke="currentColor"
|
|
453
|
-
strokeWidth="2"
|
|
454
|
-
strokeLinecap="round"
|
|
455
|
-
className="stg:animate-spin"
|
|
456
|
-
aria-hidden="true"
|
|
457
|
-
>
|
|
458
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
459
|
-
</svg>
|
|
460
|
-
);
|
|
461
|
-
}
|
|
@@ -8,6 +8,7 @@ import type { Schedule } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/ap
|
|
|
8
8
|
import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
|
|
9
9
|
import { serializeManifest } from "@stigmer/sdk";
|
|
10
10
|
import { toast } from "../feedback/toast.js";
|
|
11
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
11
12
|
import { serializeWorkflowYaml } from "../workflow/serialize-workflow-yaml.js";
|
|
12
13
|
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
@@ -98,17 +99,25 @@ export function useExportResource({
|
|
|
98
99
|
return resource.metadata?.slug || resource.metadata?.name || "resource";
|
|
99
100
|
}, [resource]);
|
|
100
101
|
|
|
102
|
+
const { copy: copyText } = useCopyFeedback();
|
|
103
|
+
|
|
101
104
|
const copyYaml = useCallback(async () => {
|
|
102
105
|
if (!yaml) return;
|
|
103
|
-
await
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
if (await copyText(yaml)) {
|
|
107
|
+
toast.success("YAML copied to clipboard");
|
|
108
|
+
} else {
|
|
109
|
+
toast.error("Couldn't copy YAML");
|
|
110
|
+
}
|
|
111
|
+
}, [copyText, yaml]);
|
|
106
112
|
|
|
107
113
|
const copyJson = useCallback(async () => {
|
|
108
114
|
if (!json) return;
|
|
109
|
-
await
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
if (await copyText(json)) {
|
|
116
|
+
toast.success("JSON copied to clipboard");
|
|
117
|
+
} else {
|
|
118
|
+
toast.error("Couldn't copy JSON");
|
|
119
|
+
}
|
|
120
|
+
}, [copyText, json]);
|
|
112
121
|
|
|
113
122
|
const downloadYaml = useCallback(() => {
|
|
114
123
|
if (!yaml) return;
|
|
@@ -126,29 +135,6 @@ export function useExportResource({
|
|
|
126
135
|
);
|
|
127
136
|
}
|
|
128
137
|
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
// Clipboard
|
|
131
|
-
// ---------------------------------------------------------------------------
|
|
132
|
-
|
|
133
|
-
async function copyToClipboard(text: string): Promise<void> {
|
|
134
|
-
try {
|
|
135
|
-
await navigator.clipboard.writeText(text);
|
|
136
|
-
} catch {
|
|
137
|
-
fallbackCopy(text);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function fallbackCopy(text: string): void {
|
|
142
|
-
const textarea = document.createElement("textarea");
|
|
143
|
-
textarea.value = text;
|
|
144
|
-
textarea.style.position = "fixed";
|
|
145
|
-
textarea.style.opacity = "0";
|
|
146
|
-
document.body.appendChild(textarea);
|
|
147
|
-
textarea.select();
|
|
148
|
-
document.execCommand("copy");
|
|
149
|
-
document.body.removeChild(textarea);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
138
|
// ---------------------------------------------------------------------------
|
|
153
139
|
// File download
|
|
154
140
|
// ---------------------------------------------------------------------------
|
|
@@ -156,7 +156,7 @@ export function ApplyManifestDialog({
|
|
|
156
156
|
onCancel={handleCancel}
|
|
157
157
|
className={cn(
|
|
158
158
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-3xl stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
159
|
-
"stg:backdrop:bg-
|
|
159
|
+
"stg:backdrop:bg-backdrop",
|
|
160
160
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
161
161
|
)}
|
|
162
162
|
>
|
|
@@ -116,7 +116,7 @@ export function EditResourceYamlDialog({
|
|
|
116
116
|
onCancel={handleCancel}
|
|
117
117
|
className={cn(
|
|
118
118
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-3xl stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
119
|
-
"stg:backdrop:bg-
|
|
119
|
+
"stg:backdrop:bg-backdrop",
|
|
120
120
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
121
121
|
)}
|
|
122
122
|
>
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@stigmer/theme";
|
|
4
|
+
import type { McpServerDefinitionDrift } from "./useMcpServerDefinitionDrift.js";
|
|
5
|
+
import type { DriftFieldId } from "./internal/definitionDrift.js";
|
|
6
|
+
|
|
7
|
+
/** Props for {@link DefinitionDriftNotice}. */
|
|
8
|
+
export interface DefinitionDriftNoticeProps {
|
|
9
|
+
/**
|
|
10
|
+
* The detected drift from {@link useMcpServerDefinitionDrift}, or
|
|
11
|
+
* `null`. The notice renders `null` when there is no drift.
|
|
12
|
+
*/
|
|
13
|
+
readonly drift: McpServerDefinitionDrift | null;
|
|
14
|
+
/** Applies the marketplace configuration and re-runs discovery. */
|
|
15
|
+
readonly onRefresh: () => void;
|
|
16
|
+
/** `true` while the refresh (update + re-discovery) is in flight. */
|
|
17
|
+
readonly isRefreshing: boolean;
|
|
18
|
+
/** Additional CSS class names for the root container. */
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Human-readable labels for the drifted field groups. */
|
|
23
|
+
const DRIFT_FIELD_LABELS: Record<DriftFieldId, string> = {
|
|
24
|
+
transport: "connection type",
|
|
25
|
+
endpoint: "endpoint URL",
|
|
26
|
+
headers: "request headers",
|
|
27
|
+
queryParams: "query parameters",
|
|
28
|
+
timeout: "request timeout",
|
|
29
|
+
command: "launch command",
|
|
30
|
+
workingDirectory: "working directory",
|
|
31
|
+
environmentVariables: "environment variables",
|
|
32
|
+
authentication: "authentication",
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Tells the owner of an org-owned MCP server that its connection-defining
|
|
37
|
+
* configuration differs from the current marketplace definition, and
|
|
38
|
+
* offers a one-click refresh (stigmer/stigmer#228).
|
|
39
|
+
*
|
|
40
|
+
* Without this notice, a server copied before a template fix is stranded
|
|
41
|
+
* forever: the user sees only downstream symptoms ("Token expired", 401s)
|
|
42
|
+
* with no indication that the root cause is a stale definition and no
|
|
43
|
+
* recovery path short of hand-editing YAML. This surfaces the actual
|
|
44
|
+
* state and pairs it with the action that fixes it (Nielsen: visibility
|
|
45
|
+
* of system status; error recovery).
|
|
46
|
+
*
|
|
47
|
+
* The copy says the configuration **differs** — never "was updated" —
|
|
48
|
+
* because the marketplace counterpart is matched by slug, and a
|
|
49
|
+
* hand-made server that happens to share a marketplace name must not be
|
|
50
|
+
* told a false history. Naming the differing fields keeps the claim
|
|
51
|
+
* verifiable, and the refresh explicitly promises what it preserves.
|
|
52
|
+
*
|
|
53
|
+
* Self-gating: renders `null` unless drift was detected. Callers render
|
|
54
|
+
* it unconditionally next to the other connection notices, mirroring
|
|
55
|
+
* {@link OAuthRequiredNotice}.
|
|
56
|
+
*
|
|
57
|
+
* All visual properties flow through `--stgm-*` design tokens. No
|
|
58
|
+
* Console-specific dependencies — safe for platform-builder embedding.
|
|
59
|
+
*/
|
|
60
|
+
export function DefinitionDriftNotice({
|
|
61
|
+
drift,
|
|
62
|
+
onRefresh,
|
|
63
|
+
isRefreshing,
|
|
64
|
+
className,
|
|
65
|
+
}: DefinitionDriftNoticeProps) {
|
|
66
|
+
if (!drift) return null;
|
|
67
|
+
|
|
68
|
+
const fieldList = drift.changedFields
|
|
69
|
+
.map((id) => DRIFT_FIELD_LABELS[id])
|
|
70
|
+
.join(", ");
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<div
|
|
74
|
+
role="status"
|
|
75
|
+
className={cn(
|
|
76
|
+
"stg:bg-muted-subtle stg:text-muted-foreground stg:flex stg:items-start stg:gap-2.5 stg:rounded-lg stg:border stg:border-transparent stg:px-4 stg:py-3",
|
|
77
|
+
className,
|
|
78
|
+
)}
|
|
79
|
+
>
|
|
80
|
+
<RefreshIcon className="stg:mt-0.5 stg:size-4 stg:shrink-0" />
|
|
81
|
+
<div className="stg:flex-1">
|
|
82
|
+
<p className="stg:text-xs stg:leading-relaxed">
|
|
83
|
+
This server's configuration differs from the current
|
|
84
|
+
marketplace definition ({fieldList}). Refreshing applies the
|
|
85
|
+
marketplace configuration and re-runs discovery — your enabled
|
|
86
|
+
tools and approval pins are kept.
|
|
87
|
+
</p>
|
|
88
|
+
<button
|
|
89
|
+
type="button"
|
|
90
|
+
onClick={onRefresh}
|
|
91
|
+
disabled={isRefreshing}
|
|
92
|
+
data-cursor-target="definition-drift-refresh"
|
|
93
|
+
className="stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover stg:mt-2 stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-[11px] stg:font-medium stg:disabled:opacity-60"
|
|
94
|
+
>
|
|
95
|
+
{isRefreshing ? "Refreshing…" : "Refresh configuration"}
|
|
96
|
+
</button>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function RefreshIcon({ className }: { readonly className?: string }) {
|
|
103
|
+
return (
|
|
104
|
+
<svg
|
|
105
|
+
width="16"
|
|
106
|
+
height="16"
|
|
107
|
+
viewBox="0 0 16 16"
|
|
108
|
+
fill="none"
|
|
109
|
+
stroke="currentColor"
|
|
110
|
+
strokeWidth="1.5"
|
|
111
|
+
strokeLinecap="round"
|
|
112
|
+
strokeLinejoin="round"
|
|
113
|
+
className={className}
|
|
114
|
+
aria-hidden="true"
|
|
115
|
+
>
|
|
116
|
+
<path d="M13.5 8a5.5 5.5 0 1 1-1.61-3.89" />
|
|
117
|
+
<path d="M13.5 2v3h-3" />
|
|
118
|
+
</svg>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
@@ -124,7 +124,7 @@ export function McpServerConnectDialog({
|
|
|
124
124
|
onClick={handleBackdropClick}
|
|
125
125
|
className={cn(
|
|
126
126
|
"stg:m-auto stg:max-h-[85vh] stg:w-full stg:max-w-md stg:overflow-visible stg:rounded-lg stg:border stg:border-border stg:bg-card stg:p-0 stg:text-foreground stg:shadow-lg",
|
|
127
|
-
"stg:backdrop:bg-
|
|
127
|
+
"stg:backdrop:bg-backdrop",
|
|
128
128
|
className,
|
|
129
129
|
)}
|
|
130
130
|
>
|
|
@@ -344,6 +344,7 @@ function ConnectDialogContent({
|
|
|
344
344
|
onSignIn={handleOAuthSignIn}
|
|
345
345
|
isVendorApprovalBlocked={creds.isVendorApprovalBlocked}
|
|
346
346
|
isVendorApprovalPending={creds.isVendorApprovalPending}
|
|
347
|
+
isOrgOAuthApp={creds.isOrgOAuthApp}
|
|
347
348
|
manualEntrySupported={creds.manualEntrySupported}
|
|
348
349
|
canBringOwnApp={creds.canBringOwnApp}
|
|
349
350
|
vendorApprovalDocsUrl={creds.vendorApprovalDocsUrl}
|
|
@@ -459,6 +460,7 @@ function OAuthSection({
|
|
|
459
460
|
onSignIn,
|
|
460
461
|
isVendorApprovalBlocked,
|
|
461
462
|
isVendorApprovalPending,
|
|
463
|
+
isOrgOAuthApp,
|
|
462
464
|
manualEntrySupported,
|
|
463
465
|
canBringOwnApp,
|
|
464
466
|
vendorApprovalDocsUrl,
|
|
@@ -471,6 +473,14 @@ function OAuthSection({
|
|
|
471
473
|
readonly onSignIn: () => void;
|
|
472
474
|
readonly isVendorApprovalBlocked: boolean;
|
|
473
475
|
readonly isVendorApprovalPending: boolean;
|
|
476
|
+
/**
|
|
477
|
+
* `true` when the org's own BYOA OAuth app is the effective one. The
|
|
478
|
+
* vendor-approval block describes the PLATFORM app, so it neither
|
|
479
|
+
* disables sign-in nor warrants the blocked notice when the org's own
|
|
480
|
+
* app is what sign-in will use (the caller-side org-override gate the
|
|
481
|
+
* notice's contract expects).
|
|
482
|
+
*/
|
|
483
|
+
readonly isOrgOAuthApp: boolean;
|
|
474
484
|
readonly manualEntrySupported: boolean;
|
|
475
485
|
readonly canBringOwnApp: boolean;
|
|
476
486
|
readonly vendorApprovalDocsUrl: string | null;
|
|
@@ -502,7 +512,9 @@ function OAuthSection({
|
|
|
502
512
|
<button
|
|
503
513
|
type="button"
|
|
504
514
|
onClick={onSignIn}
|
|
505
|
-
disabled={
|
|
515
|
+
disabled={
|
|
516
|
+
disabled || isInProgress || (isVendorApprovalBlocked && !isOrgOAuthApp)
|
|
517
|
+
}
|
|
506
518
|
className={cn(
|
|
507
519
|
"stg:inline-flex stg:w-full stg:items-center stg:justify-center stg:gap-2 stg:rounded-md stg:px-4 stg:py-2 stg:text-sm stg:font-medium",
|
|
508
520
|
"stg:bg-primary stg:text-primary-foreground",
|
|
@@ -512,17 +524,23 @@ function OAuthSection({
|
|
|
512
524
|
)}
|
|
513
525
|
>
|
|
514
526
|
{isInProgress && <LoadingSpinner size="sm" />}
|
|
515
|
-
{isInProgress
|
|
527
|
+
{isInProgress
|
|
528
|
+
? (phaseLabel[phase] ?? "Connecting...")
|
|
529
|
+
: isOrgOAuthApp
|
|
530
|
+
? "Sign in with your app"
|
|
531
|
+
: "Sign in with OAuth"}
|
|
516
532
|
</button>
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
533
|
+
{!isOrgOAuthApp && (
|
|
534
|
+
<VendorApprovalBlockedNotice
|
|
535
|
+
blocked={isVendorApprovalBlocked}
|
|
536
|
+
pending={isVendorApprovalPending}
|
|
537
|
+
manualEntrySupported={manualEntrySupported}
|
|
538
|
+
canBringOwnApp={canBringOwnApp}
|
|
539
|
+
docsUrl={vendorApprovalDocsUrl}
|
|
540
|
+
onBringOwnApp={onOpenDetails}
|
|
541
|
+
className="stg:rounded-md stg:border stg:border-amber-500/20"
|
|
542
|
+
/>
|
|
543
|
+
)}
|
|
526
544
|
{onSwitchToManual && (
|
|
527
545
|
<button
|
|
528
546
|
type="button"
|