@stigmer/react 3.41.0 → 3.41.1-dev.20261003094357.g39d6aa748646
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
|
@@ -41,13 +41,13 @@ export interface UseBillingAccountReturn {
|
|
|
41
41
|
* the embedded `CreditBalance` with available, reserved,
|
|
42
42
|
* promotional, and purchased breakdowns.
|
|
43
43
|
*
|
|
44
|
-
* Pass `null` as `
|
|
44
|
+
* Pass `null` as `org` to skip fetching (stable no-op).
|
|
45
45
|
*
|
|
46
|
-
* @param
|
|
46
|
+
* @param org - Organization ID, or `null` to skip.
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```tsx
|
|
50
|
-
* const { account, isLoading, error } = useBillingAccount(
|
|
50
|
+
* const { account, isLoading, error } = useBillingAccount(org);
|
|
51
51
|
*
|
|
52
52
|
* if (isLoading) return <Skeleton />;
|
|
53
53
|
* if (error) return <ErrorMessage error={error} />;
|
|
@@ -57,17 +57,17 @@ export interface UseBillingAccountReturn {
|
|
|
57
57
|
* ```
|
|
58
58
|
*/
|
|
59
59
|
export function useBillingAccount(
|
|
60
|
-
|
|
60
|
+
org: string | null,
|
|
61
61
|
options?: UseBillingAccountOptions,
|
|
62
62
|
): UseBillingAccountReturn {
|
|
63
63
|
const stigmer = useStigmer();
|
|
64
64
|
|
|
65
65
|
const { data: account, isLoading, isRefetching, error, refetch } = useFetch(
|
|
66
|
-
|
|
66
|
+
org
|
|
67
67
|
? () =>
|
|
68
|
-
stigmer.billing.getOrCreateBillingAccount(
|
|
68
|
+
stigmer.billing.getOrCreateBillingAccount(org)
|
|
69
69
|
: null,
|
|
70
|
-
[
|
|
70
|
+
[org, stigmer],
|
|
71
71
|
null as BillingAccount | null,
|
|
72
72
|
{ refetchOnWindowFocus: options?.refetchOnWindowFocus ?? false },
|
|
73
73
|
);
|
|
@@ -26,16 +26,16 @@ export interface UseBillingUsageReportReturn {
|
|
|
26
26
|
* Returns total provider cost, total billable amount, execution and LLM
|
|
27
27
|
* call counts, and a per-model breakdown with cost tier attribution.
|
|
28
28
|
*
|
|
29
|
-
* Pass `null` as `
|
|
29
|
+
* Pass `null` as `org` to skip fetching (stable no-op).
|
|
30
30
|
*
|
|
31
|
-
* @param
|
|
31
|
+
* @param org - Organization ID, or `null` to skip.
|
|
32
32
|
* @param startTime - Start of the reporting period.
|
|
33
33
|
* @param endTime - End of the reporting period.
|
|
34
34
|
*
|
|
35
35
|
* @example
|
|
36
36
|
* ```tsx
|
|
37
37
|
* const { report, isLoading } = useBillingUsageReport(
|
|
38
|
-
*
|
|
38
|
+
* org,
|
|
39
39
|
* new Date("2026-05-01"),
|
|
40
40
|
* new Date("2026-05-31"),
|
|
41
41
|
* );
|
|
@@ -47,7 +47,7 @@ export interface UseBillingUsageReportReturn {
|
|
|
47
47
|
* ```
|
|
48
48
|
*/
|
|
49
49
|
export function useBillingUsageReport(
|
|
50
|
-
|
|
50
|
+
org: string | null,
|
|
51
51
|
startTime: Date,
|
|
52
52
|
endTime: Date,
|
|
53
53
|
): UseBillingUsageReportReturn {
|
|
@@ -57,15 +57,15 @@ export function useBillingUsageReport(
|
|
|
57
57
|
const endKey = endTime.toISOString();
|
|
58
58
|
|
|
59
59
|
const { data: report, isLoading, isRefetching, error, refetch } = useFetch(
|
|
60
|
-
|
|
60
|
+
org
|
|
61
61
|
? () =>
|
|
62
62
|
stigmer.billing.getBillingUsageReport({
|
|
63
|
-
|
|
63
|
+
org,
|
|
64
64
|
startTime,
|
|
65
65
|
endTime,
|
|
66
66
|
})
|
|
67
67
|
: null,
|
|
68
|
-
[
|
|
68
|
+
[org, startKey, endKey, stigmer],
|
|
69
69
|
null as BillingUsageReportResponse | null,
|
|
70
70
|
);
|
|
71
71
|
|
|
@@ -24,7 +24,7 @@ export interface UseChangePlanReturn {
|
|
|
24
24
|
* {@link useCreatePaymentMethodSetupSession}). Resolves with the
|
|
25
25
|
* subscription as it stands after the change.
|
|
26
26
|
*/
|
|
27
|
-
readonly changePlan: (
|
|
27
|
+
readonly changePlan: (org: string, planId: string) => Promise<Subscription>;
|
|
28
28
|
/** `true` while a change is in flight. */
|
|
29
29
|
readonly isSubmitting: boolean;
|
|
30
30
|
/** Error from the last failed attempt, or `null` when healthy. */
|
|
@@ -45,11 +45,11 @@ export function useChangePlan(): UseChangePlanReturn {
|
|
|
45
45
|
const [error, setError] = useState<Error | null>(null);
|
|
46
46
|
|
|
47
47
|
const changePlan = useCallback(
|
|
48
|
-
async (
|
|
48
|
+
async (org: string, planId: string): Promise<Subscription> => {
|
|
49
49
|
setIsSubmitting(true);
|
|
50
50
|
setError(null);
|
|
51
51
|
try {
|
|
52
|
-
return await stigmer.subscription.changePlan(create(ChangePlanInputSchema, {
|
|
52
|
+
return await stigmer.subscription.changePlan(create(ChangePlanInputSchema, { org, planId }));
|
|
53
53
|
} catch (e) {
|
|
54
54
|
const err = toError(e);
|
|
55
55
|
setError(err);
|
|
@@ -75,7 +75,7 @@ export interface UseCancelSubscriptionReturn {
|
|
|
75
75
|
* of the current period and is on Free after it; nothing it built is
|
|
76
76
|
* deleted. Choosing the same plan again before then resumes it.
|
|
77
77
|
*/
|
|
78
|
-
readonly cancel: (
|
|
78
|
+
readonly cancel: (org: string) => Promise<Subscription>;
|
|
79
79
|
/** `true` while a cancel is in flight. */
|
|
80
80
|
readonly isSubmitting: boolean;
|
|
81
81
|
/** Error from the last failed attempt, or `null` when healthy. */
|
|
@@ -94,11 +94,11 @@ export function useCancelSubscription(): UseCancelSubscriptionReturn {
|
|
|
94
94
|
const [error, setError] = useState<Error | null>(null);
|
|
95
95
|
|
|
96
96
|
const cancel = useCallback(
|
|
97
|
-
async (
|
|
97
|
+
async (org: string): Promise<Subscription> => {
|
|
98
98
|
setIsSubmitting(true);
|
|
99
99
|
setError(null);
|
|
100
100
|
try {
|
|
101
|
-
return await stigmer.subscription.cancel(create(CancelSubscriptionInputSchema, {
|
|
101
|
+
return await stigmer.subscription.cancel(create(CancelSubscriptionInputSchema, { org }));
|
|
102
102
|
} catch (e) {
|
|
103
103
|
const err = toError(e);
|
|
104
104
|
setError(err);
|
|
@@ -15,7 +15,7 @@ export interface UseCreateBillingPortalSessionReturn {
|
|
|
15
15
|
* portal returns to `redirect.returnUrl` when given, else to the page
|
|
16
16
|
* the person is on.
|
|
17
17
|
*/
|
|
18
|
-
readonly openPortal: (
|
|
18
|
+
readonly openPortal: (org: string) => Promise<void>;
|
|
19
19
|
/** `true` while the portal session is being created. */
|
|
20
20
|
readonly isLoading: boolean;
|
|
21
21
|
/** Error from the last failed attempt, or `null` when healthy. */
|
|
@@ -36,7 +36,7 @@ export interface UseCreateBillingPortalSessionReturn {
|
|
|
36
36
|
* ```tsx
|
|
37
37
|
* const { openPortal, isLoading } = useCreateBillingPortalSession();
|
|
38
38
|
*
|
|
39
|
-
* <button onClick={() => openPortal(
|
|
39
|
+
* <button onClick={() => openPortal(org)} disabled={isLoading}>
|
|
40
40
|
* Manage payment methods
|
|
41
41
|
* </button>
|
|
42
42
|
* ```
|
|
@@ -53,7 +53,7 @@ export function useCreateBillingPortalSession(
|
|
|
53
53
|
const clearError = useCallback(() => setError(null), []);
|
|
54
54
|
|
|
55
55
|
const openPortal = useCallback(
|
|
56
|
-
async (
|
|
56
|
+
async (org: string): Promise<void> => {
|
|
57
57
|
setIsLoading(true);
|
|
58
58
|
setError(null);
|
|
59
59
|
|
|
@@ -66,7 +66,7 @@ export function useCreateBillingPortalSession(
|
|
|
66
66
|
: "";
|
|
67
67
|
|
|
68
68
|
const response = await stigmer.billing.createBillingPortalSession({
|
|
69
|
-
|
|
69
|
+
org,
|
|
70
70
|
returnUrl,
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -9,7 +9,7 @@ import { leaveForStripe, type BillingRedirect } from "./redirect.js";
|
|
|
9
9
|
/** Parameters for {@link useCreateCheckoutSession}'s `createSession` callback. */
|
|
10
10
|
export interface CreateCheckoutSessionInput {
|
|
11
11
|
/** Organization purchasing credits. */
|
|
12
|
-
readonly
|
|
12
|
+
readonly org: string;
|
|
13
13
|
/** Credit pack to purchase: its id, e.g. "starter", "growth" or "team" (the pack named Scale). */
|
|
14
14
|
readonly packId: string;
|
|
15
15
|
/** URL to redirect to after successful payment. */
|
|
@@ -54,7 +54,7 @@ export interface UseCreateCheckoutSessionReturn {
|
|
|
54
54
|
*
|
|
55
55
|
* const handleBuy = () => {
|
|
56
56
|
* createSession({
|
|
57
|
-
*
|
|
57
|
+
* org,
|
|
58
58
|
* packId: "growth",
|
|
59
59
|
* successUrl: `${window.location.origin}/settings/billing?checkout=success`,
|
|
60
60
|
* cancelUrl: `${window.location.origin}/settings/billing`,
|
|
@@ -81,7 +81,7 @@ export function useCreateCheckoutSession(
|
|
|
81
81
|
|
|
82
82
|
try {
|
|
83
83
|
const response = await stigmer.billing.createCreditCheckoutSession({
|
|
84
|
-
|
|
84
|
+
org: input.org,
|
|
85
85
|
packId: input.packId,
|
|
86
86
|
successUrl: input.successUrl,
|
|
87
87
|
cancelUrl: input.cancelUrl,
|
|
@@ -14,7 +14,7 @@ export interface UseCreatePaymentMethodSetupSessionReturn {
|
|
|
14
14
|
* page can reopen that choice), or without a query when they leave.
|
|
15
15
|
* The saved card becomes the organization's default for every invoice.
|
|
16
16
|
*/
|
|
17
|
-
readonly addPaymentMethod: (
|
|
17
|
+
readonly addPaymentMethod: (org: string, planId?: string) => Promise<void>;
|
|
18
18
|
/** `true` while the setup session is being created. */
|
|
19
19
|
readonly isSubmitting: boolean;
|
|
20
20
|
/** Error from the last failed attempt, or `null` when healthy. */
|
|
@@ -41,7 +41,7 @@ export function useCreatePaymentMethodSetupSession(
|
|
|
41
41
|
const [error, setError] = useState<Error | null>(null);
|
|
42
42
|
|
|
43
43
|
const addPaymentMethod = useCallback(
|
|
44
|
-
async (
|
|
44
|
+
async (org: string, planId?: string): Promise<void> => {
|
|
45
45
|
setIsSubmitting(true);
|
|
46
46
|
setError(null);
|
|
47
47
|
try {
|
|
@@ -51,7 +51,7 @@ export function useCreatePaymentMethodSetupSession(
|
|
|
51
51
|
success.set("plan", planId);
|
|
52
52
|
}
|
|
53
53
|
const response = await stigmer.billing.createPaymentMethodSetupSession({
|
|
54
|
-
|
|
54
|
+
org,
|
|
55
55
|
successUrl: `${billingPage}?${success.toString()}`,
|
|
56
56
|
cancelUrl: billingPage,
|
|
57
57
|
});
|
|
@@ -48,14 +48,14 @@ export interface UseCreditLedgerOptions {
|
|
|
48
48
|
* filtering. Returns the entries and total page count for building
|
|
49
49
|
* pagination controls.
|
|
50
50
|
*
|
|
51
|
-
* Pass `null` as `
|
|
51
|
+
* Pass `null` as `org` to skip fetching (stable no-op).
|
|
52
52
|
*
|
|
53
|
-
* @param
|
|
53
|
+
* @param org - Organization ID, or `null` to skip.
|
|
54
54
|
* @param options - Pagination and filter options.
|
|
55
55
|
*
|
|
56
56
|
* @example
|
|
57
57
|
* ```tsx
|
|
58
|
-
* const { ledger, isLoading } = useCreditLedger(
|
|
58
|
+
* const { ledger, isLoading } = useCreditLedger(org, { pageNum: 1 });
|
|
59
59
|
*
|
|
60
60
|
* if (isLoading) return <Skeleton />;
|
|
61
61
|
* if (!ledger) return null;
|
|
@@ -64,7 +64,7 @@ export interface UseCreditLedgerOptions {
|
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
66
|
export function useCreditLedger(
|
|
67
|
-
|
|
67
|
+
org: string | null,
|
|
68
68
|
options: UseCreditLedgerOptions = {},
|
|
69
69
|
): UseCreditLedgerReturn {
|
|
70
70
|
const stigmer = useStigmer();
|
|
@@ -73,10 +73,10 @@ export function useCreditLedger(
|
|
|
73
73
|
const typeFilterKey = typeFilter?.join(",") ?? "";
|
|
74
74
|
|
|
75
75
|
const { data: ledger, isLoading, isRefetching, error, refetch } = useFetch(
|
|
76
|
-
|
|
76
|
+
org
|
|
77
77
|
? () =>
|
|
78
78
|
stigmer.billing.getCreditLedger({
|
|
79
|
-
|
|
79
|
+
org,
|
|
80
80
|
// The SDK page number is 0-based (matches the proto/backend); the
|
|
81
81
|
// hook's pageNum is 1-based for ergonomic UI controls.
|
|
82
82
|
page: { num: pageNum - 1, size: pageSize },
|
|
@@ -84,7 +84,7 @@ export function useCreditLedger(
|
|
|
84
84
|
view,
|
|
85
85
|
})
|
|
86
86
|
: null,
|
|
87
|
-
[
|
|
87
|
+
[org, pageNum, pageSize, typeFilterKey, view, stigmer],
|
|
88
88
|
null as CreditLedgerResponse | null,
|
|
89
89
|
);
|
|
90
90
|
|
|
@@ -27,15 +27,15 @@ export interface UseCustomerModelPricingReturn {
|
|
|
27
27
|
* billing policy markup already applied, organized by harness
|
|
28
28
|
* and cost tier.
|
|
29
29
|
*
|
|
30
|
-
* Pass `null` as `
|
|
30
|
+
* Pass `null` as `org` to skip fetching (stable no-op).
|
|
31
31
|
* Pass `undefined` to fetch default pricing (no org override).
|
|
32
32
|
*
|
|
33
|
-
* @param
|
|
33
|
+
* @param org - Organization ID for org-specific overrides,
|
|
34
34
|
* `undefined` for default pricing, or `null` to skip.
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```tsx
|
|
38
|
-
* const { pricing, isLoading } = useCustomerModelPricing(
|
|
38
|
+
* const { pricing, isLoading } = useCustomerModelPricing(org);
|
|
39
39
|
*
|
|
40
40
|
* if (isLoading) return <Skeleton />;
|
|
41
41
|
* if (!pricing) return null;
|
|
@@ -46,20 +46,20 @@ export interface UseCustomerModelPricingReturn {
|
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
48
|
export function useCustomerModelPricing(
|
|
49
|
-
|
|
49
|
+
org: string | undefined | null,
|
|
50
50
|
): UseCustomerModelPricingReturn {
|
|
51
51
|
const stigmer = useStigmer();
|
|
52
52
|
|
|
53
|
-
const skip =
|
|
53
|
+
const skip = org === null;
|
|
54
54
|
|
|
55
55
|
const { data: pricing, isLoading, isRefetching, error, refetch } = useFetch(
|
|
56
56
|
skip
|
|
57
57
|
? null
|
|
58
58
|
: () =>
|
|
59
59
|
stigmer.billing.getCustomerModelPricing(
|
|
60
|
-
|
|
60
|
+
org ? { org } : undefined,
|
|
61
61
|
),
|
|
62
|
-
[
|
|
62
|
+
[org, stigmer],
|
|
63
63
|
null as CustomerModelPricingResponse | null,
|
|
64
64
|
);
|
|
65
65
|
|
|
@@ -50,19 +50,19 @@ export interface UseEntitlementsReturn {
|
|
|
50
50
|
*
|
|
51
51
|
* @example
|
|
52
52
|
* ```tsx
|
|
53
|
-
* const { allows } = useEntitlements(
|
|
53
|
+
* const { allows } = useEntitlements(org);
|
|
54
54
|
* if (allows(Feature.teams) === false) return <UpgradeNotice feature={Feature.teams} />;
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
57
|
export function useEntitlements(
|
|
58
|
-
|
|
58
|
+
org: string | null,
|
|
59
59
|
options?: UseEntitlementsOptions,
|
|
60
60
|
): UseEntitlementsReturn {
|
|
61
61
|
const stigmer = useStigmer();
|
|
62
|
-
const enabled = (options?.enabled ?? true) &&
|
|
62
|
+
const enabled = (options?.enabled ?? true) && org !== null && org !== "";
|
|
63
63
|
const { data: entitlements, isLoading, error, refetch } = useFetch(
|
|
64
|
-
enabled &&
|
|
65
|
-
[enabled,
|
|
64
|
+
enabled && org ? () => stigmer.subscription.getEntitlements(create(GetEntitlementsInputSchema, { org })) : null,
|
|
65
|
+
[enabled, org, stigmer],
|
|
66
66
|
null as GetEntitlementsOutput | null,
|
|
67
67
|
{ refetchOnWindowFocus: true },
|
|
68
68
|
);
|
|
@@ -44,14 +44,14 @@ export interface UsePeriodEstimateReturn {
|
|
|
44
44
|
* Cloud-only; the caller needs `can_view_billing` on the organization.
|
|
45
45
|
*/
|
|
46
46
|
export function usePeriodEstimate(
|
|
47
|
-
|
|
47
|
+
org: string | null,
|
|
48
48
|
options?: UsePeriodEstimateOptions,
|
|
49
49
|
): UsePeriodEstimateReturn {
|
|
50
50
|
const stigmer = useStigmer();
|
|
51
|
-
const enabled = (options?.enabled ?? true) &&
|
|
51
|
+
const enabled = (options?.enabled ?? true) && org !== null && org !== "";
|
|
52
52
|
const { data: estimate, isLoading, error, refetch } = useFetch(
|
|
53
|
-
enabled &&
|
|
54
|
-
[enabled,
|
|
53
|
+
enabled && org ? () => stigmer.subscription.getPeriodEstimate(create(GetPeriodEstimateInputSchema, { org })) : null,
|
|
54
|
+
[enabled, org, stigmer],
|
|
55
55
|
null as PeriodEstimate | null,
|
|
56
56
|
{ refetchOnWindowFocus: true },
|
|
57
57
|
);
|
|
@@ -44,22 +44,22 @@ export interface UseProviderKeysReturn {
|
|
|
44
44
|
* four characters, who saved it and when, when it last served a call, and
|
|
45
45
|
* whether the organization's plan still lets it be used. A managed
|
|
46
46
|
* organization's list includes its integrator's keys for the providers it
|
|
47
|
-
* holds none of (`
|
|
47
|
+
* holds none of (`inheritedFromOrg`). Every member may read it
|
|
48
48
|
* (`can_view_billing`).
|
|
49
49
|
*
|
|
50
50
|
* Cloud-only.
|
|
51
51
|
*
|
|
52
52
|
* @example
|
|
53
53
|
* ```tsx
|
|
54
|
-
* const { keys } = useProviderKeys(
|
|
54
|
+
* const { keys } = useProviderKeys(org);
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
export function useProviderKeys(
|
|
57
|
+
export function useProviderKeys(org: string | null, options?: UseProviderKeysOptions): UseProviderKeysReturn {
|
|
58
58
|
const stigmer = useStigmer();
|
|
59
|
-
const enabled = (options?.enabled ?? true) &&
|
|
59
|
+
const enabled = (options?.enabled ?? true) && org !== null && org !== "";
|
|
60
60
|
const { data, isLoading, error, refetch } = useFetch(
|
|
61
|
-
enabled &&
|
|
62
|
-
[enabled,
|
|
61
|
+
enabled && org ? () => stigmer.providerkey.list(create(ListProviderKeysInputSchema, { org })) : null,
|
|
62
|
+
[enabled, org, stigmer],
|
|
63
63
|
null as { readonly keys: readonly ProviderKey[] } | null,
|
|
64
64
|
);
|
|
65
65
|
const keys = data?.keys ?? null;
|
|
@@ -75,9 +75,9 @@ export interface UseProviderKeyActionsReturn {
|
|
|
75
75
|
* organization's plan does not include bring-your-own provider keys.
|
|
76
76
|
* Resolves with the saved key, without its secret.
|
|
77
77
|
*/
|
|
78
|
-
readonly setKey: (
|
|
78
|
+
readonly setKey: (org: string, provider: ProviderKeyProvider, apiKey: string) => Promise<ProviderKey>;
|
|
79
79
|
/** Remove the organization's key for a provider; allowed on every plan. */
|
|
80
|
-
readonly removeKey: (
|
|
80
|
+
readonly removeKey: (org: string, provider: ProviderKeyProvider) => Promise<ProviderKey>;
|
|
81
81
|
/** `true` while a save or a removal is in flight. */
|
|
82
82
|
readonly isSubmitting: boolean;
|
|
83
83
|
/** Error from the last failed attempt, or `null` when healthy. */
|
|
@@ -111,13 +111,13 @@ export function useProviderKeyActions(): UseProviderKeyActionsReturn {
|
|
|
111
111
|
}, []);
|
|
112
112
|
|
|
113
113
|
const setKey = useCallback(
|
|
114
|
-
(
|
|
115
|
-
run(() => stigmer.providerkey.set(create(SetProviderKeyInputSchema, {
|
|
114
|
+
(org: string, provider: ProviderKeyProvider, apiKey: string) =>
|
|
115
|
+
run(() => stigmer.providerkey.set(create(SetProviderKeyInputSchema, { org, provider, apiKey }))),
|
|
116
116
|
[run, stigmer.providerkey],
|
|
117
117
|
);
|
|
118
118
|
const removeKey = useCallback(
|
|
119
|
-
(
|
|
120
|
-
run(() => stigmer.providerkey.delete(create(DeleteProviderKeyInputSchema, {
|
|
119
|
+
(org: string, provider: ProviderKeyProvider) =>
|
|
120
|
+
run(() => stigmer.providerkey.delete(create(DeleteProviderKeyInputSchema, { org, provider }))),
|
|
121
121
|
[run, stigmer.providerkey],
|
|
122
122
|
);
|
|
123
123
|
const clearError = useCallback(() => setError(null), []);
|
|
@@ -8,7 +8,7 @@ import type { BillingAccount } from "@stigmer/protos/ai/stigmer/billing/v1/billi
|
|
|
8
8
|
/** Input for {@link useSetAutoRechargeConfig}. */
|
|
9
9
|
export interface SetAutoRechargeConfigInput {
|
|
10
10
|
/** Organization ID to configure auto-recharge for. */
|
|
11
|
-
readonly
|
|
11
|
+
readonly org: string;
|
|
12
12
|
/** Whether auto-recharge is enabled. */
|
|
13
13
|
readonly enabled: boolean;
|
|
14
14
|
/** Trigger threshold in micro-USD. */
|
|
@@ -46,7 +46,7 @@ export interface UseSetAutoRechargeConfigReturn {
|
|
|
46
46
|
* const { setConfig, isSubmitting, error } = useSetAutoRechargeConfig();
|
|
47
47
|
*
|
|
48
48
|
* await setConfig({
|
|
49
|
-
*
|
|
49
|
+
* org,
|
|
50
50
|
* enabled: true,
|
|
51
51
|
* thresholdMicros: BigInt(5_000_000),
|
|
52
52
|
* rechargeAmountMicros: BigInt(50_000_000),
|
|
@@ -68,7 +68,7 @@ export function useSetAutoRechargeConfig(): UseSetAutoRechargeConfigReturn {
|
|
|
68
68
|
|
|
69
69
|
try {
|
|
70
70
|
const account = await stigmer.billing.setAutoRechargeConfig({
|
|
71
|
-
|
|
71
|
+
org: input.org,
|
|
72
72
|
enabled: input.enabled,
|
|
73
73
|
thresholdMicros: input.thresholdMicros,
|
|
74
74
|
rechargeAmountMicros: input.rechargeAmountMicros,
|
|
@@ -4,7 +4,7 @@ import { useMemo } from "react";
|
|
|
4
4
|
import { create } from "@bufbuild/protobuf";
|
|
5
5
|
import { isNotFound } from "@stigmer/sdk";
|
|
6
6
|
import type { Subscription } from "@stigmer/protos/ai/stigmer/billing/subscription/v1/api_pb";
|
|
7
|
-
import {
|
|
7
|
+
import { GetSubscriptionForOrgInputSchema } from "@stigmer/protos/ai/stigmer/billing/subscription/v1/io_pb";
|
|
8
8
|
import { useStigmer } from "../hooks.js";
|
|
9
9
|
import { useFetch } from "../internal/useFetch.js";
|
|
10
10
|
|
|
@@ -34,7 +34,7 @@ export interface UseSubscriptionReturn {
|
|
|
34
34
|
* this hook reads that as `null`, because never subscribed is a state (the
|
|
35
35
|
* Free plan), not a failure.
|
|
36
36
|
*
|
|
37
|
-
* Pass `null` as `
|
|
37
|
+
* Pass `null` as `org` to skip fetching. Refetches when the window
|
|
38
38
|
* regains focus, so a plan changed in another window, or a card saved in
|
|
39
39
|
* the system browser, shows on return.
|
|
40
40
|
*
|
|
@@ -42,16 +42,16 @@ export interface UseSubscriptionReturn {
|
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
44
|
* ```tsx
|
|
45
|
-
* const { subscription } = useSubscription(
|
|
45
|
+
* const { subscription } = useSubscription(org);
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
|
-
export function useSubscription(
|
|
48
|
+
export function useSubscription(org: string | null): UseSubscriptionReturn {
|
|
49
49
|
const stigmer = useStigmer();
|
|
50
50
|
const { data: subscription, isLoading, isRefetching, error, refetch } = useFetch(
|
|
51
|
-
|
|
51
|
+
org
|
|
52
52
|
? () =>
|
|
53
53
|
stigmer.subscription
|
|
54
|
-
.
|
|
54
|
+
.getForOrg(create(GetSubscriptionForOrgInputSchema, { org }))
|
|
55
55
|
.catch((err: unknown) => {
|
|
56
56
|
if (isNotFound(err)) {
|
|
57
57
|
return null;
|
|
@@ -59,7 +59,7 @@ export function useSubscription(orgId: string | null): UseSubscriptionReturn {
|
|
|
59
59
|
throw err;
|
|
60
60
|
})
|
|
61
61
|
: null,
|
|
62
|
-
[
|
|
62
|
+
[org, stigmer],
|
|
63
63
|
null as Subscription | null,
|
|
64
64
|
{ refetchOnWindowFocus: true },
|
|
65
65
|
);
|
|
@@ -7,6 +7,7 @@ import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
|
7
7
|
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
8
8
|
import { channelProviderOf } from "../channel/providers.js";
|
|
9
9
|
import { useChannelAppList } from "./useChannelAppList.js";
|
|
10
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
10
11
|
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
// Public API
|
|
@@ -69,15 +70,14 @@ export function ChannelAppListPanel({
|
|
|
69
70
|
|
|
70
71
|
if (isLoading) {
|
|
71
72
|
return (
|
|
72
|
-
<
|
|
73
|
+
<LoadingRegion
|
|
73
74
|
className={cn("stg:space-y-2", className)}
|
|
74
|
-
|
|
75
|
-
aria-label="Loading channel apps"
|
|
75
|
+
label="Loading channel apps"
|
|
76
76
|
>
|
|
77
77
|
{Array.from({ length: 2 }, (_, i) => (
|
|
78
78
|
<div key={i} className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg" />
|
|
79
79
|
))}
|
|
80
|
-
</
|
|
80
|
+
</LoadingRegion>
|
|
81
81
|
);
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* the webhook URL — paste it into the app's Event Subscriptions (or
|
|
22
22
|
* re-apply the completed manifest).
|
|
23
23
|
*/
|
|
24
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* The bot scopes every Stigmer channel app requests — the platform app's
|
|
@@ -62,7 +63,7 @@ export function slackChannelAppWebhookUrl(
|
|
|
62
63
|
apiBaseUrl: string,
|
|
63
64
|
channelAppId: string,
|
|
64
65
|
): string {
|
|
65
|
-
return `${apiBaseUrl
|
|
66
|
+
return `${trimTrailing(apiBaseUrl, "/")}/webhook/slack/${channelAppId}`;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
/**
|
|
@@ -79,7 +80,7 @@ export function slackChannelAppRedirectUrl(consoleOrigin?: string): string {
|
|
|
79
80
|
const origin =
|
|
80
81
|
consoleOrigin ??
|
|
81
82
|
(typeof window !== "undefined" ? window.location.origin : "");
|
|
82
|
-
return `${origin
|
|
83
|
+
return `${trimTrailing(origin, "/")}/oauth/slack/callback`;
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
/** Inputs for {@link buildSlackChannelAppManifest}. */
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* show the webhook URL — paste it and the verify token into the
|
|
25
25
|
* app's WhatsApp webhook configuration.
|
|
26
26
|
*/
|
|
27
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
30
|
* The webhook fields every Stigmer WhatsApp channel app subscribes to —
|
|
@@ -45,7 +46,7 @@ export function whatsappChannelAppWebhookUrl(
|
|
|
45
46
|
apiBaseUrl: string,
|
|
46
47
|
channelAppId: string,
|
|
47
48
|
): string {
|
|
48
|
-
return `${apiBaseUrl
|
|
49
|
+
return `${trimTrailing(apiBaseUrl, "/")}/webhook/whatsapp/${channelAppId}`;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
/**
|
|
@@ -68,7 +68,7 @@ export function CursorAccountEditor({
|
|
|
68
68
|
!(initial?.onDemandUsageDisabled ?? false),
|
|
69
69
|
);
|
|
70
70
|
const [orgIdsText, setOrgIdsText] = useState(
|
|
71
|
-
(initial?.
|
|
71
|
+
(initial?.orgs ?? []).join("\n"),
|
|
72
72
|
);
|
|
73
73
|
// Unlike the admin key, the invite link round-trips readable (the
|
|
74
74
|
// server decrypts it on read — operators must be able to copy it), so
|
|
@@ -90,10 +90,10 @@ export function CursorAccountEditor({
|
|
|
90
90
|
adminApiKey: adminApiKey.trim(),
|
|
91
91
|
enabled,
|
|
92
92
|
// is_platform_default is deprecated (DD-008): the shared pool is
|
|
93
|
-
// derived from empty
|
|
93
|
+
// derived from empty orgs, so current clients never write it.
|
|
94
94
|
onDemandUsageDisabled: !onDemandEnabled,
|
|
95
95
|
teamInviteLink: teamInviteLink.trim(),
|
|
96
|
-
|
|
96
|
+
orgs: orgIdsText
|
|
97
97
|
.split(/[\s,]+/)
|
|
98
98
|
.map((s) => s.trim())
|
|
99
99
|
.filter((s) => s !== ""),
|
|
@@ -224,16 +224,16 @@ function AccountRow({
|
|
|
224
224
|
<span className="stg:block stg:truncate stg:font-medium stg:text-foreground">
|
|
225
225
|
{account.displayName}
|
|
226
226
|
</span>
|
|
227
|
-
{/* Account class is DERIVED from
|
|
227
|
+
{/* Account class is DERIVED from orgs: no org
|
|
228
228
|
assignment means the account belongs to the shared pool. */}
|
|
229
|
-
{account.
|
|
229
|
+
{account.orgs.length === 0 && (
|
|
230
230
|
<span className="stg:block stg:text-[11px] stg:text-muted-foreground">
|
|
231
231
|
shared pool
|
|
232
232
|
</span>
|
|
233
233
|
)}
|
|
234
234
|
</span>
|
|
235
235
|
<span className="stg:text-muted-foreground">
|
|
236
|
-
{account.
|
|
236
|
+
{account.orgs.length > 0 ? account.orgs.length : "—"}
|
|
237
237
|
</span>
|
|
238
238
|
<span>
|
|
239
239
|
<StateBadge
|
|
@@ -408,8 +408,8 @@ function AccountDetail({
|
|
|
408
408
|
{account.displayName}
|
|
409
409
|
</h3>
|
|
410
410
|
<p className="stg:text-[11px] stg:text-muted-foreground">
|
|
411
|
-
{account.
|
|
412
|
-
? `Dedicated to ${account.
|
|
411
|
+
{account.orgs.length > 0
|
|
412
|
+
? `Dedicated to ${account.orgs.length} org(s): ${account.orgs.join(", ")}`
|
|
413
413
|
: "Shared pool — serves every org with no dedicated account"}
|
|
414
414
|
{" · "}
|
|
415
415
|
{account.enabled ? "enabled" : "disabled"}
|
|
@@ -11,10 +11,8 @@ import { DashboardFailedRuns } from "./DashboardFailedRuns.js";
|
|
|
11
11
|
import type { DashboardFailedRun } from "./types.js";
|
|
12
12
|
|
|
13
13
|
export interface OperationalDashboardProps {
|
|
14
|
-
/**
|
|
14
|
+
/** The organization whose executions, approvals and usage the dashboard shows. */
|
|
15
15
|
readonly org: string | null | undefined;
|
|
16
|
-
/** Organization ID (metadata.id) for the usage report. */
|
|
17
|
-
readonly orgId: string | null | undefined;
|
|
18
16
|
/** Called when the user clicks "Review" on a pending approval. */
|
|
19
17
|
readonly onApprovalClick?: (executionId: string) => void;
|
|
20
18
|
/** Called when the user clicks "View" on a failed execution. */
|
|
@@ -37,7 +35,6 @@ export interface OperationalDashboardProps {
|
|
|
37
35
|
* ```tsx
|
|
38
36
|
* <OperationalDashboard
|
|
39
37
|
* org="acme"
|
|
40
|
-
* orgId={activeOrg?.metadata?.id}
|
|
41
38
|
* onApprovalClick={(id) => navigate(`/executions/${id}`)}
|
|
42
39
|
* onFailedRunClick={(id, type) => navigate(`/executions/${id}`)}
|
|
43
40
|
* />
|
|
@@ -47,14 +44,12 @@ export interface OperationalDashboardProps {
|
|
|
47
44
|
*/
|
|
48
45
|
export const OperationalDashboard = memo(function OperationalDashboard({
|
|
49
46
|
org,
|
|
50
|
-
orgId,
|
|
51
47
|
onApprovalClick,
|
|
52
48
|
onFailedRunClick,
|
|
53
49
|
className,
|
|
54
50
|
}: OperationalDashboardProps) {
|
|
55
51
|
const summaryOptions: UseDashboardSummaryOptions = {
|
|
56
52
|
org,
|
|
57
|
-
orgId,
|
|
58
53
|
refetchInterval: 60_000,
|
|
59
54
|
};
|
|
60
55
|
const { summary, isLoading: summaryLoading } = useDashboardSummary(summaryOptions);
|