@stigmer/react 3.41.0 → 3.41.1-dev.20261003133619.g58ac1f23a411
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/README.md +1 -1
- package/access/ManageAccessButton.d.ts +1 -1
- package/access/ManageAccessButton.js +1 -1
- package/access/ManageAccessDialog.js +1 -1
- package/access/ManageAccessDialog.js.map +1 -1
- package/agent/AgentDetailView.d.ts.map +1 -1
- package/agent/AgentDetailView.js +2 -1
- package/agent/AgentDetailView.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +2 -1
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
- package/attachment/AttachmentImageLightbox.js.map +1 -1
- package/billing/AutoRechargeCard.d.ts +3 -3
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +4 -4
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +7 -6
- package/billing/BillingSection.js.map +1 -1
- package/billing/CreditLedgerTable.d.ts +3 -3
- package/billing/CreditLedgerTable.d.ts.map +1 -1
- package/billing/CreditLedgerTable.js +3 -3
- package/billing/CreditLedgerTable.js.map +1 -1
- package/billing/CreditPackGrid.d.ts +1 -1
- package/billing/CreditPackGrid.js +1 -1
- package/billing/PaymentMethodCard.d.ts +1 -1
- package/billing/PaymentMethodCard.js +1 -1
- package/billing/PlanSection.d.ts +3 -3
- package/billing/PlanSection.d.ts.map +1 -1
- package/billing/PlanSection.js +4 -3
- package/billing/PlanSection.js.map +1 -1
- package/billing/ProviderKeysSection.js +13 -13
- package/billing/ProviderKeysSection.js.map +1 -1
- package/billing/plan-features.js +1 -1
- package/billing/plan-features.js.map +1 -1
- package/billing/useBillingAccount.d.ts +4 -4
- package/billing/useBillingAccount.d.ts.map +1 -1
- package/billing/useBillingAccount.js +7 -7
- package/billing/useBillingAccount.js.map +1 -1
- package/billing/useBillingUsageReport.d.ts +4 -4
- package/billing/useBillingUsageReport.d.ts.map +1 -1
- package/billing/useBillingUsageReport.js +7 -7
- package/billing/useBillingUsageReport.js.map +1 -1
- package/billing/useChangePlan.d.ts +2 -2
- package/billing/useChangePlan.d.ts.map +1 -1
- package/billing/useChangePlan.js +4 -4
- package/billing/useChangePlan.js.map +1 -1
- package/billing/useCreateBillingPortalSession.d.ts +2 -2
- package/billing/useCreateBillingPortalSession.d.ts.map +1 -1
- package/billing/useCreateBillingPortalSession.js +3 -3
- package/billing/useCreateBillingPortalSession.js.map +1 -1
- package/billing/useCreateCheckoutSession.d.ts +2 -2
- package/billing/useCreateCheckoutSession.d.ts.map +1 -1
- package/billing/useCreateCheckoutSession.js +2 -2
- package/billing/useCreateCheckoutSession.js.map +1 -1
- package/billing/useCreatePaymentMethodSetupSession.d.ts +1 -1
- package/billing/useCreatePaymentMethodSetupSession.d.ts.map +1 -1
- package/billing/useCreatePaymentMethodSetupSession.js +2 -2
- package/billing/useCreatePaymentMethodSetupSession.js.map +1 -1
- package/billing/useCreditLedger.d.ts +4 -4
- package/billing/useCreditLedger.d.ts.map +1 -1
- package/billing/useCreditLedger.js +7 -7
- package/billing/useCreditLedger.js.map +1 -1
- package/billing/useCustomerModelPricing.d.ts +4 -4
- package/billing/useCustomerModelPricing.d.ts.map +1 -1
- package/billing/useCustomerModelPricing.js +6 -6
- package/billing/useCustomerModelPricing.js.map +1 -1
- package/billing/useEntitlements.d.ts +2 -2
- package/billing/useEntitlements.d.ts.map +1 -1
- package/billing/useEntitlements.js +4 -4
- package/billing/useEntitlements.js.map +1 -1
- package/billing/usePeriodEstimate.d.ts +1 -1
- package/billing/usePeriodEstimate.d.ts.map +1 -1
- package/billing/usePeriodEstimate.js +3 -3
- package/billing/usePeriodEstimate.js.map +1 -1
- package/billing/useProviderKeys.d.ts +5 -5
- package/billing/useProviderKeys.d.ts.map +1 -1
- package/billing/useProviderKeys.js +7 -7
- package/billing/useProviderKeys.js.map +1 -1
- package/billing/useSetAutoRechargeConfig.d.ts +2 -2
- package/billing/useSetAutoRechargeConfig.d.ts.map +1 -1
- package/billing/useSetAutoRechargeConfig.js +2 -2
- package/billing/useSetAutoRechargeConfig.js.map +1 -1
- package/billing/useSubscription.d.ts +3 -3
- package/billing/useSubscription.d.ts.map +1 -1
- package/billing/useSubscription.js +7 -7
- package/billing/useSubscription.js.map +1 -1
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppListPanel.js +2 -1
- package/channel-app/ChannelAppListPanel.js.map +1 -1
- package/channel-app/slackAppSetup.d.ts +0 -23
- package/channel-app/slackAppSetup.d.ts.map +1 -1
- package/channel-app/slackAppSetup.js +3 -2
- package/channel-app/slackAppSetup.js.map +1 -1
- package/channel-app/whatsappAppSetup.d.ts +0 -26
- package/channel-app/whatsappAppSetup.d.ts.map +1 -1
- package/channel-app/whatsappAppSetup.js +2 -1
- package/channel-app/whatsappAppSetup.js.map +1 -1
- package/cursor-accounts/CursorAccountEditor.js +3 -3
- package/cursor-accounts/CursorAccountEditor.js.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +3 -3
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/dashboard/OperationalDashboard.d.ts +1 -4
- package/dashboard/OperationalDashboard.d.ts.map +1 -1
- package/dashboard/OperationalDashboard.js +1 -3
- package/dashboard/OperationalDashboard.js.map +1 -1
- package/dashboard/useDashboardSummary.d.ts +1 -3
- package/dashboard/useDashboardSummary.d.ts.map +1 -1
- package/dashboard/useDashboardSummary.js +1 -1
- package/dashboard/useDashboardSummary.js.map +1 -1
- package/environment/EnvironmentListPanel.d.ts.map +1 -1
- package/environment/EnvironmentListPanel.js +2 -1
- package/environment/EnvironmentListPanel.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +2 -1
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts.map +1 -1
- package/execution/ArtifactFileContent.js +2 -1
- package/execution/ArtifactFileContent.js.map +1 -1
- package/execution/McpToolDetail.d.ts.map +1 -1
- package/execution/McpToolDetail.js +2 -1
- package/execution/McpToolDetail.js.map +1 -1
- package/execution/ResultView.d.ts.map +1 -1
- package/execution/ResultView.js +2 -1
- package/execution/ResultView.js.map +1 -1
- package/execution/TerminalSession.js +1 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ThreadSkeleton.d.ts.map +1 -1
- package/execution/ThreadSkeleton.js +2 -1
- package/execution/ThreadSkeleton.js.map +1 -1
- package/execution/file-path-resolver.d.ts.map +1 -1
- package/execution/file-path-resolver.js +3 -2
- package/execution/file-path-resolver.js.map +1 -1
- package/execution/sandbox-path-normalizer.d.ts +0 -11
- package/execution/sandbox-path-normalizer.d.ts.map +1 -1
- package/execution/sandbox-path-normalizer.js +2 -1
- package/execution/sandbox-path-normalizer.js.map +1 -1
- package/github/parseGitUrl.d.ts.map +1 -1
- package/github/parseGitUrl.js +16 -4
- package/github/parseGitUrl.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts +3 -3
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +3 -3
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts +3 -3
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +4 -3
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/PeopleWithAccess.d.ts +2 -2
- package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
- package/iam-policy/PeopleWithAccess.js +2 -2
- package/iam-policy/PeopleWithAccess.js.map +1 -1
- package/iam-policy/PrincipalPicker.d.ts +2 -2
- package/iam-policy/PrincipalPicker.d.ts.map +1 -1
- package/iam-policy/PrincipalPicker.js +2 -2
- package/iam-policy/PrincipalPicker.js.map +1 -1
- package/iam-policy/SharePanel.d.ts +3 -3
- package/iam-policy/SharePanel.d.ts.map +1 -1
- package/iam-policy/SharePanel.js +3 -3
- package/iam-policy/SharePanel.js.map +1 -1
- package/iam-policy/useCreateIamPolicy.d.ts +1 -1
- package/iam-policy/useCreateIamPolicy.js +1 -1
- package/iam-policy/useDeleteIamPolicy.d.ts +1 -1
- package/iam-policy/useDeleteIamPolicy.js +1 -1
- package/iam-policy/useGranteeCandidates.d.ts +3 -3
- package/iam-policy/useGranteeCandidates.d.ts.map +1 -1
- package/iam-policy/useGranteeCandidates.js +2 -2
- package/iam-policy/useGranteeCandidates.js.map +1 -1
- package/iam-policy/useOwnerAssignment.d.ts +2 -2
- package/iam-policy/useOwnerAssignment.d.ts.map +1 -1
- package/iam-policy/useOwnerAssignment.js +3 -3
- package/iam-policy/useOwnerAssignment.js.map +1 -1
- package/iam-policy/usePrincipalsCount.d.ts +4 -4
- package/iam-policy/usePrincipalsCount.d.ts.map +1 -1
- package/iam-policy/usePrincipalsCount.js +7 -7
- package/iam-policy/usePrincipalsCount.js.map +1 -1
- package/iam-policy/useResourceAccess.d.ts +1 -1
- package/iam-policy/useResourceAccess.js +1 -1
- package/iam-policy/useRevokeOrgAccess.d.ts +1 -1
- package/iam-policy/useRevokeOrgAccess.d.ts.map +1 -1
- package/iam-policy/useRevokeOrgAccess.js +2 -2
- package/iam-policy/useRevokeOrgAccess.js.map +1 -1
- package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
- package/identity-account/AccountPreferencesPanel.js +2 -1
- package/identity-account/AccountPreferencesPanel.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +4 -4
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -1
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +1 -1
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +2 -1
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/identity-provider/useIdentityProviderList.d.ts +2 -2
- package/identity-provider/useIdentityProviderList.js +2 -2
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/inline-edit/InlineEditImage.d.ts +4 -0
- package/inline-edit/InlineEditImage.d.ts.map +1 -1
- package/inline-edit/InlineEditImage.js +12 -11
- package/inline-edit/InlineEditImage.js.map +1 -1
- package/inline-edit/InlineEditText.d.ts +4 -0
- package/inline-edit/InlineEditText.d.ts.map +1 -1
- package/inline-edit/InlineEditText.js +12 -11
- package/inline-edit/InlineEditText.js.map +1 -1
- package/inline-edit/InlineEditTextarea.d.ts +4 -0
- package/inline-edit/InlineEditTextarea.d.ts.map +1 -1
- package/inline-edit/InlineEditTextarea.js +11 -16
- package/inline-edit/InlineEditTextarea.js.map +1 -1
- package/inline-edit/useInlineDraft.d.ts +26 -0
- package/inline-edit/useInlineDraft.d.ts.map +1 -0
- package/inline-edit/useInlineDraft.js +61 -0
- package/inline-edit/useInlineDraft.js.map +1 -0
- package/internal/DialogShell.d.ts +21 -0
- package/internal/DialogShell.d.ts.map +1 -1
- package/internal/DialogShell.js +51 -4
- package/internal/DialogShell.js.map +1 -1
- package/internal/LoadingRegion.d.ts +35 -0
- package/internal/LoadingRegion.d.ts.map +1 -0
- package/internal/LoadingRegion.js +33 -0
- package/internal/LoadingRegion.js.map +1 -0
- package/internal/markdown-components.d.ts.map +1 -1
- package/internal/markdown-components.js +18 -4
- package/internal/markdown-components.js.map +1 -1
- package/internal/trim.d.ts +7 -0
- package/internal/trim.d.ts.map +1 -0
- package/internal/trim.js +12 -0
- package/internal/trim.js.map +1 -0
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +2 -1
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +5 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/invitation/useInvitationPreview.d.ts +1 -1
- package/invitation/useInvitationPreview.js +1 -1
- package/licenses/LicenseDetail.d.ts.map +1 -1
- package/licenses/LicenseDetail.js +3 -3
- package/licenses/LicenseDetail.js.map +1 -1
- package/licenses/LicenseIssueForm.js +6 -6
- package/licenses/LicenseIssueForm.js.map +1 -1
- package/licenses/license-draft.d.ts +1 -1
- package/licenses/license-draft.d.ts.map +1 -1
- package/licenses/license-draft.js +3 -3
- package/licenses/license-draft.js.map +1 -1
- package/licenses/license-format.js +1 -1
- package/licenses/license-format.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +2 -1
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/memory/MemoryListPanel.d.ts.map +1 -1
- package/memory/MemoryListPanel.js +2 -1
- package/memory/MemoryListPanel.js.map +1 -1
- package/oauth-app/OAuthAppListPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppListPanel.js +2 -1
- package/oauth-app/OAuthAppListPanel.js.map +1 -1
- package/organization/OrgPreferencesPanel.d.ts +3 -3
- package/organization/OrgPreferencesPanel.d.ts.map +1 -1
- package/organization/OrgPreferencesPanel.js +6 -5
- package/organization/OrgPreferencesPanel.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts +3 -3
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +8 -7
- package/organization/OrgProfilePanel.js.map +1 -1
- package/organization/index.d.ts +1 -0
- package/organization/index.d.ts.map +1 -1
- package/organization/index.js +1 -0
- package/organization/index.js.map +1 -1
- package/organization/useFollowSessionOrganization.d.ts +9 -0
- package/organization/useFollowSessionOrganization.d.ts.map +1 -0
- package/organization/useFollowSessionOrganization.js +52 -0
- package/organization/useFollowSessionOrganization.js.map +1 -0
- package/package.json +5 -5
- package/plan-catalog/plan-draft.js +3 -3
- package/plan-catalog/plan-draft.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -1
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/plugin/PluginDetailView.d.ts.map +1 -1
- package/plugin/PluginDetailView.js +2 -1
- package/plugin/PluginDetailView.js.map +1 -1
- package/portal-container.d.ts +8 -0
- package/portal-container.d.ts.map +1 -1
- package/portal-container.js +8 -0
- package/portal-container.js.map +1 -1
- package/provider.d.ts +4 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +4 -1
- package/provider.js.map +1 -1
- package/public-base-url-context.d.ts.map +1 -1
- package/public-base-url-context.js +2 -1
- package/public-base-url-context.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -1
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +7 -2
- package/session/SessionViewer.js.map +1 -1
- package/session/useSessionConversation.d.ts +10 -1
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +5 -3
- package/session/useSessionConversation.js.map +1 -1
- package/settings/EnvironmentsSection.d.ts.map +1 -1
- package/settings/EnvironmentsSection.js +2 -1
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/MembersSection.js +2 -2
- package/settings/MembersSection.js.map +1 -1
- package/settings/OrgPreferencesSection.js +1 -1
- package/settings/OrgPreferencesSection.js.map +1 -1
- package/settings/OrgProfileSection.js +1 -1
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/TeamsSection.js +1 -1
- package/settings/TeamsSection.js.map +1 -1
- package/settings/UsageSection.js +1 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +2 -1
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sharing/SharedAgentChat.d.ts.map +1 -1
- package/sharing/SharedAgentChat.js +2 -1
- package/sharing/SharedAgentChat.js.map +1 -1
- package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
- package/sidebar/WorkspaceSidebar.js +2 -1
- package/sidebar/WorkspaceSidebar.js.map +1 -1
- package/skill/SkillDetailView.d.ts.map +1 -1
- package/skill/SkillDetailView.js +2 -1
- package/skill/SkillDetailView.js.map +1 -1
- package/skill/SkillDiffDialog.d.ts.map +1 -1
- package/skill/SkillDiffDialog.js +2 -1
- package/skill/SkillDiffDialog.js.map +1 -1
- package/skill/SkillFileBrowser.d.ts.map +1 -1
- package/skill/SkillFileBrowser.js +2 -1
- package/skill/SkillFileBrowser.js.map +1 -1
- package/src/access/ManageAccessButton.tsx +1 -1
- package/src/access/ManageAccessDialog.tsx +1 -1
- package/src/agent/AgentDetailView.tsx +4 -4
- package/src/api-key/ApiKeyListPanel.tsx +4 -4
- package/src/attachment/AttachmentImageLightbox.tsx +3 -4
- package/src/billing/AutoRechargeCard.tsx +5 -5
- package/src/billing/BillingSection.tsx +10 -9
- package/src/billing/CreditLedgerTable.tsx +4 -4
- package/src/billing/CreditPackGrid.tsx +1 -1
- package/src/billing/PaymentMethodCard.tsx +1 -1
- package/src/billing/PlanSection.tsx +6 -5
- package/src/billing/ProviderKeysSection.tsx +15 -15
- package/src/billing/plan-features.ts +1 -1
- package/src/billing/useBillingAccount.ts +7 -7
- package/src/billing/useBillingUsageReport.ts +7 -7
- package/src/billing/useChangePlan.ts +6 -6
- package/src/billing/useCreateBillingPortalSession.ts +4 -4
- package/src/billing/useCreateCheckoutSession.ts +3 -3
- package/src/billing/useCreatePaymentMethodSetupSession.ts +3 -3
- package/src/billing/useCreditLedger.ts +7 -7
- package/src/billing/useCustomerModelPricing.ts +7 -7
- package/src/billing/useEntitlements.ts +5 -5
- package/src/billing/usePeriodEstimate.ts +4 -4
- package/src/billing/useProviderKeys.ts +12 -12
- package/src/billing/useSetAutoRechargeConfig.ts +3 -3
- package/src/billing/useSubscription.ts +7 -7
- package/src/channel-app/ChannelAppListPanel.tsx +4 -4
- package/src/channel-app/slackAppSetup.ts +3 -2
- package/src/channel-app/whatsappAppSetup.ts +2 -1
- package/src/cursor-accounts/CursorAccountEditor.tsx +3 -3
- package/src/cursor-accounts/CursorAccountsConsole.tsx +5 -5
- package/src/dashboard/OperationalDashboard.tsx +1 -6
- package/src/dashboard/useDashboardSummary.ts +2 -4
- package/src/environment/EnvironmentListPanel.tsx +4 -4
- package/src/environment/EnvironmentVariableEditor.tsx +4 -4
- package/src/execution/ArtifactFileContent.tsx +3 -2
- package/src/execution/McpToolDetail.tsx +3 -3
- package/src/execution/ResultView.tsx +3 -3
- package/src/execution/TerminalSession.tsx +1 -1
- package/src/execution/ThreadSkeleton.tsx +4 -4
- package/src/execution/file-path-resolver.ts +3 -2
- package/src/execution/sandbox-path-normalizer.ts +2 -1
- package/src/github/parseGitUrl.ts +13 -4
- package/src/iam-policy/GrantAccessForm.tsx +4 -4
- package/src/iam-policy/OrgMembersPanel.tsx +7 -7
- package/src/iam-policy/PeopleWithAccess.tsx +3 -3
- package/src/iam-policy/PrincipalPicker.tsx +3 -3
- package/src/iam-policy/SharePanel.tsx +4 -4
- package/src/iam-policy/useCreateIamPolicy.ts +1 -1
- package/src/iam-policy/useDeleteIamPolicy.ts +1 -1
- package/src/iam-policy/useGranteeCandidates.ts +3 -3
- package/src/iam-policy/useOwnerAssignment.ts +3 -3
- package/src/iam-policy/usePrincipalsCount.ts +7 -7
- package/src/iam-policy/useResourceAccess.ts +1 -1
- package/src/iam-policy/useRevokeOrgAccess.ts +3 -3
- package/src/identity-account/AccountPreferencesPanel.tsx +4 -4
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +3 -9
- package/src/identity-provider/IdentityProviderListPanel.tsx +4 -4
- package/src/identity-provider/IdentityProviderWizard.tsx +1 -1
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -5
- package/src/identity-provider/useIdentityProviderList.ts +2 -2
- package/src/index.ts +1 -0
- package/src/inline-edit/InlineEditImage.tsx +13 -11
- package/src/inline-edit/InlineEditText.tsx +13 -11
- package/src/inline-edit/InlineEditTextarea.tsx +12 -16
- package/src/inline-edit/useInlineDraft.ts +85 -0
- package/src/internal/DialogShell.tsx +80 -3
- package/src/internal/LoadingRegion.tsx +46 -0
- package/src/internal/loading-region-markup.json +71 -0
- package/src/internal/markdown-components.tsx +15 -4
- package/src/internal/trim.ts +10 -0
- package/src/invitation/InvitationManager.tsx +4 -4
- package/src/invitation/InvitationRedemption.tsx +7 -7
- package/src/invitation/useInvitationPreview.ts +1 -1
- package/src/licenses/LicenseDetail.tsx +8 -6
- package/src/licenses/LicenseIssueForm.tsx +6 -6
- package/src/licenses/license-draft.ts +4 -4
- package/src/licenses/license-format.ts +1 -1
- package/src/mcp-server/McpServerDetailView.tsx +4 -4
- package/src/memory/MemoryListPanel.tsx +4 -4
- package/src/oauth-app/OAuthAppListPanel.tsx +4 -4
- package/src/organization/OrgPreferencesPanel.tsx +9 -9
- package/src/organization/OrgProfilePanel.tsx +12 -12
- package/src/organization/index.ts +1 -0
- package/src/organization/useFollowSessionOrganization.ts +54 -0
- package/src/plan-catalog/plan-draft.ts +3 -3
- package/src/platform-client/PlatformClientListPanel.tsx +4 -4
- package/src/plugin/PluginDetailView.tsx +3 -2
- package/src/portal-container.ts +8 -0
- package/src/provider.tsx +4 -1
- package/src/public-base-url-context.ts +2 -1
- package/src/schedule/ScheduleDetailView.tsx +4 -4
- package/src/session/SessionViewer.tsx +13 -3
- package/src/session/useSessionConversation.ts +14 -3
- package/src/settings/EnvironmentsSection.tsx +3 -2
- package/src/settings/MembersSection.tsx +3 -3
- package/src/settings/OrgPreferencesSection.tsx +1 -1
- package/src/settings/OrgProfileSection.tsx +1 -1
- package/src/settings/TeamsSection.tsx +1 -1
- package/src/settings/UsageSection.tsx +1 -1
- package/src/sharing/ShareAgentDialog.tsx +2 -1
- package/src/sharing/SharedAgentChat.tsx +4 -4
- package/src/sidebar/WorkspaceSidebar.tsx +3 -2
- package/src/skill/SkillDetailView.tsx +4 -4
- package/src/skill/SkillDiffDialog.tsx +4 -4
- package/src/skill/SkillFileBrowser.tsx +4 -4
- package/src/team/TeamDetailPanel.tsx +3 -3
- package/src/team/TeamListPanel.tsx +3 -2
- package/src/team/TeamMembersPanel.tsx +3 -3
- package/src/usage/OrgUsagePanel.tsx +9 -9
- package/src/usage/useExportCSV.ts +9 -9
- package/src/usage/useOrgUsageReport.ts +7 -7
- package/src/version-history/VersionTimeline.tsx +4 -4
- package/src/workflow/WorkflowVersionDiffViewer.tsx +4 -4
- package/src/workflow/WorkflowVersionTimeline.tsx +4 -4
- package/src/workflow/useDiagnoseExecutionFlow.ts +23 -18
- package/src/workflow/useExplainWorkflowFlow.ts +7 -3
- package/src/workflow/useRefineWorkflowFlow.ts +17 -10
- package/src/workflow/useWorkflowArchitectFlow.ts +7 -3
- package/src/workspace/ExplorerTree.tsx +4 -8
- package/src/workspace/FileViewer.tsx +4 -5
- package/styles.css +1 -1
- package/team/TeamDetailPanel.d.ts +2 -2
- package/team/TeamDetailPanel.d.ts.map +1 -1
- package/team/TeamDetailPanel.js +2 -2
- package/team/TeamDetailPanel.js.map +1 -1
- package/team/TeamListPanel.d.ts.map +1 -1
- package/team/TeamListPanel.js +2 -1
- package/team/TeamListPanel.js.map +1 -1
- package/team/TeamMembersPanel.d.ts +2 -2
- package/team/TeamMembersPanel.d.ts.map +1 -1
- package/team/TeamMembersPanel.js +2 -2
- package/team/TeamMembersPanel.js.map +1 -1
- package/usage/OrgUsagePanel.d.ts +3 -3
- package/usage/OrgUsagePanel.d.ts.map +1 -1
- package/usage/OrgUsagePanel.js +6 -5
- package/usage/OrgUsagePanel.js.map +1 -1
- package/usage/useExportCSV.d.ts +2 -2
- package/usage/useExportCSV.d.ts.map +1 -1
- package/usage/useExportCSV.js +9 -9
- package/usage/useExportCSV.js.map +1 -1
- package/usage/useOrgUsageReport.d.ts +4 -4
- package/usage/useOrgUsageReport.d.ts.map +1 -1
- package/usage/useOrgUsageReport.js +7 -7
- package/usage/useOrgUsageReport.js.map +1 -1
- package/version-history/VersionTimeline.d.ts.map +1 -1
- package/version-history/VersionTimeline.js +2 -1
- package/version-history/VersionTimeline.js.map +1 -1
- package/workflow/WorkflowVersionDiffViewer.d.ts.map +1 -1
- package/workflow/WorkflowVersionDiffViewer.js +2 -1
- package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +2 -1
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -1
- package/workflow/useDiagnoseExecutionFlow.js +23 -18
- package/workflow/useDiagnoseExecutionFlow.js.map +1 -1
- package/workflow/useExplainWorkflowFlow.d.ts.map +1 -1
- package/workflow/useExplainWorkflowFlow.js +7 -3
- package/workflow/useExplainWorkflowFlow.js.map +1 -1
- package/workflow/useRefineWorkflowFlow.d.ts.map +1 -1
- package/workflow/useRefineWorkflowFlow.js +14 -10
- package/workflow/useRefineWorkflowFlow.js.map +1 -1
- package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -1
- package/workflow/useWorkflowArchitectFlow.js +7 -3
- package/workflow/useWorkflowArchitectFlow.js.map +1 -1
- package/workspace/ExplorerTree.d.ts.map +1 -1
- package/workspace/ExplorerTree.js +2 -5
- package/workspace/ExplorerTree.js.map +1 -1
- package/workspace/FileViewer.d.ts.map +1 -1
- package/workspace/FileViewer.js +2 -1
- package/workspace/FileViewer.js.map +1 -1
|
@@ -17,10 +17,8 @@ import type { DashboardSummary } from "./types.js";
|
|
|
17
17
|
|
|
18
18
|
/** Options for {@link useDashboardSummary}. */
|
|
19
19
|
export interface UseDashboardSummaryOptions {
|
|
20
|
-
/**
|
|
20
|
+
/** The organization whose execution summaries and usage report to read. */
|
|
21
21
|
readonly org: string | null | undefined;
|
|
22
|
-
/** Organization ID (metadata.id) for the usage report. */
|
|
23
|
-
readonly orgId: string | null | undefined;
|
|
24
22
|
/** Refetch interval in milliseconds. @default 60_000 */
|
|
25
23
|
readonly refetchInterval?: number;
|
|
26
24
|
}
|
|
@@ -66,7 +64,7 @@ export function useDashboardSummary(
|
|
|
66
64
|
|
|
67
65
|
const dateRange = useMemo(() => dateRangeFromPreset("7d"), []);
|
|
68
66
|
const { report: orgUsage, isLoading: usageLoading, error: usageError, refetch: usageRefetch } =
|
|
69
|
-
useOrgUsageReport(options.
|
|
67
|
+
useOrgUsageReport(options.org ?? null, dateRange);
|
|
70
68
|
|
|
71
69
|
const isLoading = wfLoading || agLoading || usageLoading;
|
|
72
70
|
const error = wfError ?? agError ?? usageError;
|
|
@@ -10,6 +10,7 @@ import { EditResourceYamlDialog } from "../manifest/EditResourceYamlDialog.js";
|
|
|
10
10
|
import { useEnvironmentList } from "./useEnvironmentList.js";
|
|
11
11
|
import { EnvironmentVariableEditor } from "./EnvironmentVariableEditor.js";
|
|
12
12
|
import { isShareRestrictedEnvironment } from "./shareRestriction.js";
|
|
13
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
13
14
|
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Public API
|
|
@@ -132,10 +133,9 @@ export function EnvironmentListPanel({
|
|
|
132
133
|
|
|
133
134
|
if (isLoading) {
|
|
134
135
|
return (
|
|
135
|
-
<
|
|
136
|
+
<LoadingRegion
|
|
136
137
|
className={cn("stg:space-y-2", className)}
|
|
137
|
-
|
|
138
|
-
aria-label="Loading environments"
|
|
138
|
+
label="Loading environments"
|
|
139
139
|
>
|
|
140
140
|
{Array.from({ length: 2 }, (_, i) => (
|
|
141
141
|
<div
|
|
@@ -143,7 +143,7 @@ export function EnvironmentListPanel({
|
|
|
143
143
|
className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
|
|
144
144
|
/>
|
|
145
145
|
))}
|
|
146
|
-
</
|
|
146
|
+
</LoadingRegion>
|
|
147
147
|
);
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -18,6 +18,7 @@ import { useUpdateEnvironmentVariables } from "./useUpdateEnvironmentVariables.j
|
|
|
18
18
|
import { useRemoveEnvironmentVariables } from "./useRemoveEnvironmentVariables.js";
|
|
19
19
|
import { useRevealSecretValue } from "./useRevealSecretValue.js";
|
|
20
20
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
21
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
21
22
|
|
|
22
23
|
// ---------------------------------------------------------------------------
|
|
23
24
|
// Public API
|
|
@@ -152,10 +153,9 @@ export function EnvironmentVariableEditor({
|
|
|
152
153
|
|
|
153
154
|
if (isLoading) {
|
|
154
155
|
return (
|
|
155
|
-
<
|
|
156
|
+
<LoadingRegion
|
|
156
157
|
className={cn("stg:space-y-2", className)}
|
|
157
|
-
|
|
158
|
-
aria-label="Loading variables"
|
|
158
|
+
label="Loading variables"
|
|
159
159
|
>
|
|
160
160
|
{Array.from({ length: 3 }, (_, i) => (
|
|
161
161
|
<div
|
|
@@ -164,7 +164,7 @@ export function EnvironmentVariableEditor({
|
|
|
164
164
|
style={{ width: `${85 - i * 10}%` }}
|
|
165
165
|
/>
|
|
166
166
|
))}
|
|
167
|
-
</
|
|
167
|
+
</LoadingRegion>
|
|
168
168
|
);
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// unavailable / text). Domain: execution (data-model-agnostic).
|
|
5
5
|
|
|
6
6
|
import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
|
|
7
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
7
8
|
|
|
8
9
|
/** Props for {@link ArtifactFileContent}. */
|
|
9
10
|
export interface ArtifactFileContentProps {
|
|
@@ -44,7 +45,7 @@ export function ArtifactFileContent({
|
|
|
44
45
|
}: ArtifactFileContentProps) {
|
|
45
46
|
if (isLoading) {
|
|
46
47
|
return (
|
|
47
|
-
<
|
|
48
|
+
<LoadingRegion className="stg:space-y-2 stg:p-4" label="Loading content">
|
|
48
49
|
{SKELETON_LINE_WIDTHS.map((width, i) => (
|
|
49
50
|
<div
|
|
50
51
|
key={i}
|
|
@@ -53,7 +54,7 @@ export function ArtifactFileContent({
|
|
|
53
54
|
aria-hidden="true"
|
|
54
55
|
/>
|
|
55
56
|
))}
|
|
56
|
-
</
|
|
57
|
+
</LoadingRegion>
|
|
57
58
|
);
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -19,6 +19,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
|
|
|
19
19
|
import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
|
|
20
20
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
21
21
|
import { useToolOutputContent } from "./useToolOutputContent.js";
|
|
22
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
22
23
|
|
|
23
24
|
/** Props for {@link McpToolDetail}. */
|
|
24
25
|
export interface McpToolDetailProps {
|
|
@@ -115,10 +116,9 @@ function McpOffloadedImage({ storageKey }: { readonly storageKey: string }) {
|
|
|
115
116
|
}
|
|
116
117
|
if (!url) {
|
|
117
118
|
return (
|
|
118
|
-
<
|
|
119
|
+
<LoadingRegion
|
|
119
120
|
className="stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted"
|
|
120
|
-
|
|
121
|
-
aria-label="Loading image output"
|
|
121
|
+
label="Loading image output"
|
|
122
122
|
/>
|
|
123
123
|
);
|
|
124
124
|
}
|
|
@@ -25,6 +25,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
|
|
|
25
25
|
import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
|
|
26
26
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
27
27
|
import { useToolOutputContent } from "./useToolOutputContent.js";
|
|
28
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
28
29
|
|
|
29
30
|
/** Props for {@link ResultView}. */
|
|
30
31
|
export interface ResultViewProps {
|
|
@@ -509,10 +510,9 @@ function OutputRefImage({ storageKey, className }: { storageKey: string; classNa
|
|
|
509
510
|
}
|
|
510
511
|
if (!url) {
|
|
511
512
|
return (
|
|
512
|
-
<
|
|
513
|
+
<LoadingRegion
|
|
513
514
|
className={cn("stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted", className)}
|
|
514
|
-
|
|
515
|
-
aria-label="Loading image output"
|
|
515
|
+
label="Loading image output"
|
|
516
516
|
/>
|
|
517
517
|
);
|
|
518
518
|
}
|
|
@@ -128,7 +128,7 @@ export function TerminalTail({
|
|
|
128
128
|
const combined = [stdout, stderr]
|
|
129
129
|
.filter((s): s is string => Boolean(s))
|
|
130
130
|
.join("\n")
|
|
131
|
-
.
|
|
131
|
+
.trimEnd();
|
|
132
132
|
const lines = combined ? normalize(combined).split("\n") : [];
|
|
133
133
|
const tail = lines.slice(-TAIL_LINE_LIMIT);
|
|
134
134
|
const hiddenCount = lines.length - tail.length;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
4
5
|
|
|
5
6
|
/** Props for {@link ThreadSkeleton}. */
|
|
6
7
|
export interface ThreadSkeletonProps {
|
|
@@ -30,10 +31,9 @@ const AI_LINE_WIDTHS = [
|
|
|
30
31
|
*/
|
|
31
32
|
export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
|
|
32
33
|
return (
|
|
33
|
-
<
|
|
34
|
+
<LoadingRegion
|
|
34
35
|
className={cn("stg:flex stg:flex-col stg:gap-4 stg:pt-6 stg:pb-4", className)}
|
|
35
|
-
|
|
36
|
-
aria-label="Loading conversation"
|
|
36
|
+
label="Loading conversation"
|
|
37
37
|
>
|
|
38
38
|
<div className="stg:animate-pulse stg:space-y-4">
|
|
39
39
|
{/* Turn 1: Human bubble */}
|
|
@@ -68,6 +68,6 @@ export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
|
|
|
68
68
|
))}
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
|
-
</
|
|
71
|
+
</LoadingRegion>
|
|
72
72
|
);
|
|
73
73
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
2
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
2
3
|
|
|
3
4
|
const PLATFORM_PREFIX = ".stigmer/";
|
|
4
5
|
const PLATFORM_DIR_NAME = ".stigmer";
|
|
@@ -71,7 +72,7 @@ export interface DisplayPath {
|
|
|
71
72
|
*/
|
|
72
73
|
export function splitDisplayPath(path: string): DisplayPath {
|
|
73
74
|
if (!path) return { dir: "", base: "" };
|
|
74
|
-
const trimmed = path
|
|
75
|
+
const trimmed = trimTrailing(path, "/");
|
|
75
76
|
const idx = trimmed.lastIndexOf("/");
|
|
76
77
|
if (idx < 0) return { dir: "", base: trimmed };
|
|
77
78
|
const base = trimmed.slice(idx + 1);
|
|
@@ -239,7 +240,7 @@ function matchWorkspaceEntry(
|
|
|
239
240
|
|
|
240
241
|
function joinLocalPath(base: string, rel: string): string {
|
|
241
242
|
if (!rel) return base;
|
|
242
|
-
const cleanBase = base
|
|
243
|
+
const cleanBase = trimTrailing(base, "/");
|
|
243
244
|
const cleanRel = rel.replace(/^\/+/, "");
|
|
244
245
|
return `${cleanBase}/${cleanRel}`;
|
|
245
246
|
}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Replace absolute sandbox workspace paths with workspace-relative
|
|
@@ -49,7 +50,7 @@ export function normalizeSandboxPaths(
|
|
|
49
50
|
): string {
|
|
50
51
|
if (!text || !workspaceRoot) return text;
|
|
51
52
|
|
|
52
|
-
const wsRoot = workspaceRoot
|
|
53
|
+
const wsRoot = trimTrailing(workspaceRoot, "/");
|
|
53
54
|
|
|
54
55
|
// 1) Strip workspace root prefix (with trailing slash) → workspace-relative
|
|
55
56
|
text = replaceAll(text, wsRoot + "/", "");
|
|
@@ -9,7 +9,7 @@ export interface ParsedGitRepo {
|
|
|
9
9
|
readonly repo: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const GITHUB_HOST = "github.com";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Extract the owner and repository name from a GitHub URL.
|
|
@@ -22,7 +22,16 @@ const GITHUB_URL_RE = /github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/;
|
|
|
22
22
|
* Returns `null` for non-GitHub or unparseable URLs.
|
|
23
23
|
*/
|
|
24
24
|
export function parseGitUrl(url: string): ParsedGitRepo | null {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
// Read by position rather than by a pattern: the lazy repository group of
|
|
26
|
+
// `github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$` backtracks on a long input.
|
|
27
|
+
const at = url.indexOf(GITHUB_HOST);
|
|
28
|
+
if (at === -1) return null;
|
|
29
|
+
const separator = url[at + GITHUB_HOST.length];
|
|
30
|
+
if (separator !== "/" && separator !== ":") return null;
|
|
31
|
+
const parts = url.slice(at + GITHUB_HOST.length + 1).split("/");
|
|
32
|
+
if (parts.length !== 2) return null;
|
|
33
|
+
const [owner, name] = parts as [string, string];
|
|
34
|
+
const repo = name.endsWith(".git") ? name.slice(0, -".git".length) : name;
|
|
35
|
+
if (owner === "" || repo === "" || repo.includes(".")) return null;
|
|
36
|
+
return { owner, repo };
|
|
28
37
|
}
|
|
@@ -45,7 +45,7 @@ export interface GrantAccessFormProps {
|
|
|
45
45
|
* Organization whose people (and teams) can be granted access. Drives
|
|
46
46
|
* the {@link PrincipalPicker} typeahead.
|
|
47
47
|
*/
|
|
48
|
-
readonly
|
|
48
|
+
readonly org: string;
|
|
49
49
|
/**
|
|
50
50
|
* Offer the organization's teams beside its people. Set it where the
|
|
51
51
|
* resource can be shared with a team (`useShareFlow().canShareWithTeams`).
|
|
@@ -72,7 +72,7 @@ export interface GrantAccessFormProps {
|
|
|
72
72
|
* resourceKind={ApiResourceKind.agent}
|
|
73
73
|
* resourceKindString="agent"
|
|
74
74
|
* resourceId={agentId}
|
|
75
|
-
*
|
|
75
|
+
* org={org}
|
|
76
76
|
* includeTeams={share.canShareWithTeams}
|
|
77
77
|
* onGranted={() => share.refetch()}
|
|
78
78
|
* onCancel={() => setShowForm(false)}
|
|
@@ -83,7 +83,7 @@ export function GrantAccessForm({
|
|
|
83
83
|
resourceKind,
|
|
84
84
|
resourceKindString,
|
|
85
85
|
resourceId,
|
|
86
|
-
|
|
86
|
+
org,
|
|
87
87
|
includeTeams = false,
|
|
88
88
|
excludeGrantees,
|
|
89
89
|
onGranted,
|
|
@@ -150,7 +150,7 @@ export function GrantAccessForm({
|
|
|
150
150
|
<form onSubmit={handleSubmit} className={cn("stg:space-y-3", className)}>
|
|
151
151
|
<div className="stg:space-y-3">
|
|
152
152
|
<PrincipalPicker
|
|
153
|
-
|
|
153
|
+
org={org}
|
|
154
154
|
value={grantee}
|
|
155
155
|
onChange={chooseGrantee}
|
|
156
156
|
includeTeams={includeTeams}
|
|
@@ -26,6 +26,7 @@ import { useDeleteIamPolicy } from "./useDeleteIamPolicy.js";
|
|
|
26
26
|
import { RoleSelector } from "./RoleSelector.js";
|
|
27
27
|
import { ProviderBadge } from "./ProviderBadge.js";
|
|
28
28
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
29
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
29
30
|
|
|
30
31
|
// ---------------------------------------------------------------------------
|
|
31
32
|
// Public API
|
|
@@ -34,7 +35,7 @@ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
|
34
35
|
/** Props for {@link OrgMembersPanel}. */
|
|
35
36
|
export interface OrgMembersPanelProps {
|
|
36
37
|
/** Organization ID (`metadata.id`) whose members to manage. */
|
|
37
|
-
readonly
|
|
38
|
+
readonly org: string;
|
|
38
39
|
/** Exposed refetch for parent-triggered refresh. */
|
|
39
40
|
readonly onRefetchRef?: (refetch: () => void) => void;
|
|
40
41
|
/** Additional CSS class names for the root container. */
|
|
@@ -71,11 +72,11 @@ export interface OrgMembersPanelProps {
|
|
|
71
72
|
*
|
|
72
73
|
* @example
|
|
73
74
|
* ```tsx
|
|
74
|
-
* <OrgMembersPanel
|
|
75
|
+
* <OrgMembersPanel org={activeOrg.metadata.id} />
|
|
75
76
|
* ```
|
|
76
77
|
*/
|
|
77
78
|
export function OrgMembersPanel({
|
|
78
|
-
orgId,
|
|
79
|
+
org: orgId,
|
|
79
80
|
onRefetchRef,
|
|
80
81
|
className,
|
|
81
82
|
}: OrgMembersPanelProps) {
|
|
@@ -127,10 +128,9 @@ export function OrgMembersPanel({
|
|
|
127
128
|
|
|
128
129
|
if (isLoading) {
|
|
129
130
|
return (
|
|
130
|
-
<
|
|
131
|
+
<LoadingRegion
|
|
131
132
|
className={cn("stg:space-y-2", className)}
|
|
132
|
-
|
|
133
|
-
aria-label="Loading members"
|
|
133
|
+
label="Loading members"
|
|
134
134
|
>
|
|
135
135
|
{Array.from({ length: 3 }, (_, i) => (
|
|
136
136
|
<div
|
|
@@ -138,7 +138,7 @@ export function OrgMembersPanel({
|
|
|
138
138
|
className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
|
|
139
139
|
/>
|
|
140
140
|
))}
|
|
141
|
-
</
|
|
141
|
+
</LoadingRegion>
|
|
142
142
|
);
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -42,7 +42,7 @@ export interface PeopleWithAccessProps {
|
|
|
42
42
|
* Organization the resource belongs to (`metadata.org`). Drives the
|
|
43
43
|
* people-and-teams typeahead in the grant form.
|
|
44
44
|
*/
|
|
45
|
-
readonly
|
|
45
|
+
readonly org: string;
|
|
46
46
|
/** Additional CSS class names for the root container. */
|
|
47
47
|
readonly className?: string;
|
|
48
48
|
}
|
|
@@ -72,7 +72,7 @@ export function PeopleWithAccess({
|
|
|
72
72
|
resource,
|
|
73
73
|
resourceKindString,
|
|
74
74
|
resourceKind,
|
|
75
|
-
|
|
75
|
+
org,
|
|
76
76
|
className,
|
|
77
77
|
}: PeopleWithAccessProps) {
|
|
78
78
|
const {
|
|
@@ -155,7 +155,7 @@ export function PeopleWithAccess({
|
|
|
155
155
|
resourceKind={resourceKind}
|
|
156
156
|
resourceKindString={resourceKindString}
|
|
157
157
|
resourceId={resource.id}
|
|
158
|
-
|
|
158
|
+
org={org}
|
|
159
159
|
includeTeams={canShareWithTeams}
|
|
160
160
|
excludeGrantees={existingGrantees}
|
|
161
161
|
onGranted={() => {
|
|
@@ -37,7 +37,7 @@ export type SelectedGrantee = GranteeCandidate;
|
|
|
37
37
|
/** Props for {@link PrincipalPicker}. */
|
|
38
38
|
export interface PrincipalPickerProps {
|
|
39
39
|
/** Organization whose people (and teams) are selectable. */
|
|
40
|
-
readonly
|
|
40
|
+
readonly org: string;
|
|
41
41
|
/** Currently selected grantee, or `null`. Controlled. */
|
|
42
42
|
readonly value: SelectedGrantee | null;
|
|
43
43
|
/** Fired when the selection changes. */
|
|
@@ -73,7 +73,7 @@ export interface PrincipalPickerProps {
|
|
|
73
73
|
* All visual properties flow through `--stgm-*` design tokens.
|
|
74
74
|
*/
|
|
75
75
|
export function PrincipalPicker({
|
|
76
|
-
|
|
76
|
+
org,
|
|
77
77
|
value,
|
|
78
78
|
onChange,
|
|
79
79
|
includeTeams = false,
|
|
@@ -85,7 +85,7 @@ export function PrincipalPicker({
|
|
|
85
85
|
}: PrincipalPickerProps) {
|
|
86
86
|
const listboxId = useId();
|
|
87
87
|
const { people, teams, isLoading, error } = useGranteeCandidates({
|
|
88
|
-
|
|
88
|
+
org: org || null,
|
|
89
89
|
includeTeams,
|
|
90
90
|
});
|
|
91
91
|
|
|
@@ -17,7 +17,7 @@ export interface SharePanelProps {
|
|
|
17
17
|
* Organization the resource belongs to (`metadata.org`). Drives the
|
|
18
18
|
* org-member typeahead in the grant form.
|
|
19
19
|
*/
|
|
20
|
-
readonly
|
|
20
|
+
readonly org: string;
|
|
21
21
|
/** Fired when the user closes the panel. */
|
|
22
22
|
readonly onClose?: () => void;
|
|
23
23
|
/** Additional CSS class names for the root container. */
|
|
@@ -42,7 +42,7 @@ export interface SharePanelProps {
|
|
|
42
42
|
* resource={{ kind: "session", id: sessionId, resourceKind: ApiResourceKind.session }}
|
|
43
43
|
* resourceKindString="session"
|
|
44
44
|
* resourceKind={ApiResourceKind.session}
|
|
45
|
-
*
|
|
45
|
+
* org={org}
|
|
46
46
|
* onClose={() => setOpen(false)}
|
|
47
47
|
* />
|
|
48
48
|
* ```
|
|
@@ -51,7 +51,7 @@ export function SharePanel({
|
|
|
51
51
|
resource,
|
|
52
52
|
resourceKindString,
|
|
53
53
|
resourceKind,
|
|
54
|
-
|
|
54
|
+
org,
|
|
55
55
|
onClose,
|
|
56
56
|
className,
|
|
57
57
|
}: SharePanelProps) {
|
|
@@ -85,7 +85,7 @@ export function SharePanel({
|
|
|
85
85
|
resource={resource}
|
|
86
86
|
resourceKindString={resourceKindString}
|
|
87
87
|
resourceKind={resourceKind}
|
|
88
|
-
|
|
88
|
+
org={org}
|
|
89
89
|
/>
|
|
90
90
|
</div>
|
|
91
91
|
);
|
|
@@ -33,7 +33,7 @@ export interface UseCreateIamPolicyReturn {
|
|
|
33
33
|
*
|
|
34
34
|
* await create({
|
|
35
35
|
* principal: { kind: "identity_account", id: accountId },
|
|
36
|
-
* resource: { kind: "organization", id:
|
|
36
|
+
* resource: { kind: "organization", id: org },
|
|
37
37
|
* relation: "admin",
|
|
38
38
|
* });
|
|
39
39
|
* ```
|
|
@@ -32,7 +32,7 @@ export interface UseDeleteIamPolicyReturn {
|
|
|
32
32
|
*
|
|
33
33
|
* await remove({
|
|
34
34
|
* principal: { kind: "identity_account", id: accountId },
|
|
35
|
-
* resource: { kind: "organization", id:
|
|
35
|
+
* resource: { kind: "organization", id: org },
|
|
36
36
|
* relation: "admin",
|
|
37
37
|
* });
|
|
38
38
|
* ```
|
|
@@ -49,7 +49,7 @@ export type GranteeCandidate = PersonCandidate | TeamCandidate;
|
|
|
49
49
|
/** Options for {@link useGranteeCandidates}. */
|
|
50
50
|
export interface UseGranteeCandidatesOptions {
|
|
51
51
|
/** The organization whose people (and teams) are offered, or `null` to skip. */
|
|
52
|
-
readonly
|
|
52
|
+
readonly org: string | null;
|
|
53
53
|
/** Offer the organization's teams too. Pass `false` where teams cannot be granted. */
|
|
54
54
|
readonly includeTeams: boolean;
|
|
55
55
|
}
|
|
@@ -70,13 +70,13 @@ export interface UseGranteeCandidatesReturn {
|
|
|
70
70
|
* @example
|
|
71
71
|
* ```tsx
|
|
72
72
|
* const { people, teams } = useGranteeCandidates({
|
|
73
|
-
*
|
|
73
|
+
* org,
|
|
74
74
|
* includeTeams: share.canShareWithTeams,
|
|
75
75
|
* });
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
78
|
export function useGranteeCandidates({
|
|
79
|
-
orgId,
|
|
79
|
+
org: orgId,
|
|
80
80
|
includeTeams,
|
|
81
81
|
}: UseGranteeCandidatesOptions): UseGranteeCandidatesReturn {
|
|
82
82
|
const access = useResourceAccess(orgId ? { kind: "organization", id: orgId } : null);
|
|
@@ -26,11 +26,11 @@ export interface UseOwnerAssignmentReturn {
|
|
|
26
26
|
* change asks the same question here. Fails open, like every capability
|
|
27
27
|
* gate: the server refuses whatever this lets through.
|
|
28
28
|
*
|
|
29
|
-
* @param
|
|
29
|
+
* @param org - The organization's id, or `null` to skip the check.
|
|
30
30
|
*/
|
|
31
|
-
export function useOwnerAssignment(
|
|
31
|
+
export function useOwnerAssignment(org: string | null): UseOwnerAssignmentReturn {
|
|
32
32
|
const { allowed } = useCheckPermission(
|
|
33
|
-
|
|
33
|
+
org ? { kind: "organization", id: org } : null,
|
|
34
34
|
"can_assign_roles",
|
|
35
35
|
);
|
|
36
36
|
return {
|
|
@@ -33,33 +33,33 @@ export interface UsePrincipalsCountReturn {
|
|
|
33
33
|
* `isPlatformClientAccount` (from `@stigmer/sdk`) marks, as
|
|
34
34
|
* `OrgMembersPanel` does.
|
|
35
35
|
*
|
|
36
|
-
* Pass `null` as `
|
|
36
|
+
* Pass `null` as `org` to skip fetching (stable no-op).
|
|
37
37
|
*
|
|
38
|
-
* @param
|
|
38
|
+
* @param org - Organization ID, or `null` to skip.
|
|
39
39
|
* @param principalKind - Kind of principals to count. Defaults to `"identity_account"`.
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
42
|
* ```tsx
|
|
43
|
-
* const { count, isLoading } = usePrincipalsCount(
|
|
43
|
+
* const { count, isLoading } = usePrincipalsCount(org);
|
|
44
44
|
* // count = 5
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
47
|
export function usePrincipalsCount(
|
|
48
|
-
|
|
48
|
+
org: string | null,
|
|
49
49
|
principalKind: string = "identity_account",
|
|
50
50
|
): UsePrincipalsCountReturn {
|
|
51
51
|
const stigmer = useStigmer();
|
|
52
52
|
|
|
53
53
|
const { data: count, isLoading, isRefetching, error, refetch } = useFetch(
|
|
54
|
-
|
|
54
|
+
org
|
|
55
55
|
? () =>
|
|
56
56
|
stigmer.iamPolicy
|
|
57
57
|
.getPrincipalsCount(
|
|
58
|
-
create(GetPrincipalsCountInputSchema, {
|
|
58
|
+
create(GetPrincipalsCountInputSchema, { org, principalKind }),
|
|
59
59
|
)
|
|
60
60
|
.then((r) => r.count)
|
|
61
61
|
: null,
|
|
62
|
-
[
|
|
62
|
+
[org, principalKind, stigmer],
|
|
63
63
|
0,
|
|
64
64
|
);
|
|
65
65
|
|
|
@@ -17,7 +17,7 @@ export interface UseRevokeOrgAccessReturn {
|
|
|
17
17
|
* operation. What they created stays with the organization; it is
|
|
18
18
|
* theirs again only if they are invited back.
|
|
19
19
|
*/
|
|
20
|
-
readonly revoke: (accountId: string,
|
|
20
|
+
readonly revoke: (accountId: string, org: string) => Promise<void>;
|
|
21
21
|
/** `true` while the revoke request is in flight. */
|
|
22
22
|
readonly isRevoking: boolean;
|
|
23
23
|
/** Error from the last failed revoke, or `null` when healthy. */
|
|
@@ -51,7 +51,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
|
|
|
51
51
|
const clearError = useCallback(() => setError(null), []);
|
|
52
52
|
|
|
53
53
|
const revoke = useCallback(
|
|
54
|
-
async (accountId: string,
|
|
54
|
+
async (accountId: string, org: string): Promise<void> => {
|
|
55
55
|
setIsRevoking(true);
|
|
56
56
|
setError(null);
|
|
57
57
|
|
|
@@ -59,7 +59,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
|
|
|
59
59
|
await stigmer.iamPolicy.revokeOrgAccess(
|
|
60
60
|
create(RevokeOrgAccessInputSchema, {
|
|
61
61
|
identityAccountId: accountId,
|
|
62
|
-
|
|
62
|
+
org,
|
|
63
63
|
}),
|
|
64
64
|
);
|
|
65
65
|
} catch (err) {
|
|
@@ -21,6 +21,7 @@ import { MemoryEnabledRow } from "../internal/MemoryEnabledRow.js";
|
|
|
21
21
|
import { StandingContextField } from "../internal/StandingContextField.js";
|
|
22
22
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
23
23
|
import { Switch } from "../switch/Switch.js";
|
|
24
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
24
25
|
|
|
25
26
|
/** Props for {@link AccountPreferencesPanel}. */
|
|
26
27
|
export interface AccountPreferencesPanelProps {
|
|
@@ -232,14 +233,13 @@ export function AccountPreferencesPanel({
|
|
|
232
233
|
|
|
233
234
|
if (isFetching && !account) {
|
|
234
235
|
return (
|
|
235
|
-
<
|
|
236
|
+
<LoadingRegion
|
|
236
237
|
className={cn("stg:space-y-4", className)}
|
|
237
|
-
|
|
238
|
-
aria-label="Loading account preferences"
|
|
238
|
+
label="Loading account preferences"
|
|
239
239
|
>
|
|
240
240
|
<div className="stg:bg-muted-subtle stg:h-28 stg:animate-pulse stg:rounded" />
|
|
241
241
|
<div className="stg:bg-muted-subtle stg:h-8 stg:w-32 stg:animate-pulse stg:rounded" />
|
|
242
|
-
</
|
|
242
|
+
</LoadingRegion>
|
|
243
243
|
);
|
|
244
244
|
}
|
|
245
245
|
|
|
@@ -136,8 +136,8 @@ export function IdentityProviderDetailPanel({
|
|
|
136
136
|
clearError();
|
|
137
137
|
try {
|
|
138
138
|
// Full-spec-replace safety: spread the complete mapped input and
|
|
139
|
-
// override only the edited fields, so
|
|
140
|
-
//
|
|
139
|
+
// override only the edited fields, so a spec field the form does
|
|
140
|
+
// not list survives the save. Fields the form clears
|
|
141
141
|
// (SSO providers have no JIT settings) are set to undefined
|
|
142
142
|
// explicitly — omitting them would carry the stale mapped value.
|
|
143
143
|
const updated = await update({
|
|
@@ -289,7 +289,7 @@ export function IdentityProviderDetailPanel({
|
|
|
289
289
|
value={userinfoEndpoint}
|
|
290
290
|
onChange={setUserinfoEndpoint}
|
|
291
291
|
placeholder="https://example.com/userinfo"
|
|
292
|
-
hint="Optional
|
|
292
|
+
hint="Optional. Read only when Stigmer creates an account from a token with no email claim"
|
|
293
293
|
disabled={isUpdating}
|
|
294
294
|
/>
|
|
295
295
|
|
|
@@ -421,12 +421,6 @@ function ViewMode({
|
|
|
421
421
|
hint="Share this URL with your team members to sign in via SSO"
|
|
422
422
|
/>
|
|
423
423
|
)}
|
|
424
|
-
{(spec?.rateLimitBudget ?? 0) > 0 && (
|
|
425
|
-
<Field
|
|
426
|
-
label="Rate limit"
|
|
427
|
-
value={`${spec!.rateLimitBudget} req/min`}
|
|
428
|
-
/>
|
|
429
|
-
)}
|
|
430
424
|
|
|
431
425
|
{/* JIT provisioning fields */}
|
|
432
426
|
{!spec?.isSsoProvider && spec?.autoProvisionAccounts && (
|