@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
|
@@ -144,7 +144,12 @@ const CONVERSATION_COLUMN_CLASS = "stg:mx-auto stg:w-full stg:max-w-3xl";
|
|
|
144
144
|
export interface SessionViewerProps {
|
|
145
145
|
/** Session ID to load and display. */
|
|
146
146
|
readonly sessionId: string;
|
|
147
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Organization slug to act in until the session has loaded. After that
|
|
149
|
+
* the viewer acts in the session's own organization (`session.metadata.org`),
|
|
150
|
+
* whatever this prop says: a turn in a session belongs to that session's
|
|
151
|
+
* organization.
|
|
152
|
+
*/
|
|
148
153
|
readonly org: string;
|
|
149
154
|
/**
|
|
150
155
|
* GitHub connection state. Platform-specific — web passes
|
|
@@ -384,7 +389,7 @@ export interface SessionViewerProps {
|
|
|
384
389
|
*/
|
|
385
390
|
export function SessionViewer({
|
|
386
391
|
sessionId,
|
|
387
|
-
org,
|
|
392
|
+
org: orgProp,
|
|
388
393
|
gitHubConnection,
|
|
389
394
|
enableGitHub = true,
|
|
390
395
|
enableLocal = false,
|
|
@@ -410,13 +415,18 @@ export function SessionViewer({
|
|
|
410
415
|
}: SessionViewerProps) {
|
|
411
416
|
const flow = useSessionPageFlow({
|
|
412
417
|
sessionId,
|
|
413
|
-
org,
|
|
418
|
+
org: orgProp,
|
|
414
419
|
getRuntimeEnv,
|
|
415
420
|
audience,
|
|
416
421
|
runConfig,
|
|
417
422
|
accountDefaults,
|
|
418
423
|
});
|
|
419
424
|
const { conv } = flow;
|
|
425
|
+
// Everything org-scoped below acts in the session's own organization once
|
|
426
|
+
// it has loaded (the pickers, artifacts, plan actions and the reply), so a
|
|
427
|
+
// session opened while another organization is active never files its
|
|
428
|
+
// turns there (stigmer/stigmer#1580).
|
|
429
|
+
const org = conv.org;
|
|
420
430
|
const isGuest = audience === "guest";
|
|
421
431
|
// A pinned model makes the picker a dead control (the pin wins over any
|
|
422
432
|
// choice it could offer), so the pin forces it hidden; the guest strip
|
|
@@ -161,6 +161,15 @@ export interface SendFollowUpOptions {
|
|
|
161
161
|
export interface UseSessionConversationReturn {
|
|
162
162
|
/** The session object, or null while loading. */
|
|
163
163
|
readonly session: Session | null;
|
|
164
|
+
/**
|
|
165
|
+
* The organization this conversation's turns are filed under: the
|
|
166
|
+
* session's own (`session.metadata.org`) once it has loaded, the `org`
|
|
167
|
+
* argument until then. A turn in a session belongs to that session's
|
|
168
|
+
* organization, and the server refuses any other (stigmer/stigmer#1580),
|
|
169
|
+
* so every org-scoped control of a session surface reads this value
|
|
170
|
+
* rather than the caller's active organization.
|
|
171
|
+
*/
|
|
172
|
+
readonly org: string;
|
|
164
173
|
/**
|
|
165
174
|
* Executions in terminal phases, in chronological order.
|
|
166
175
|
*
|
|
@@ -373,7 +382,7 @@ export interface UseSessionConversationReturn {
|
|
|
373
382
|
* locally, so it is safe in every environment.
|
|
374
383
|
*
|
|
375
384
|
* @param sessionId - Session to display and converse in. Pass `null` to skip.
|
|
376
|
-
* @param org - Organization slug
|
|
385
|
+
* @param org - Organization slug to act in until the session has loaded; after that the session's own organization is used (the returned `org`).
|
|
377
386
|
*
|
|
378
387
|
* @example
|
|
379
388
|
* ```tsx
|
|
@@ -433,6 +442,7 @@ export function useSessionConversation(
|
|
|
433
442
|
clearError: clearCreateError,
|
|
434
443
|
} = useCreateAgentExecution();
|
|
435
444
|
const { update: updateSession } = useUpdateSession();
|
|
445
|
+
const turnOrg = session?.metadata?.org || org;
|
|
436
446
|
const {
|
|
437
447
|
submitApproval: rawSubmitApproval,
|
|
438
448
|
submittingToolCallIds,
|
|
@@ -667,7 +677,7 @@ export function useSessionConversation(
|
|
|
667
677
|
}
|
|
668
678
|
|
|
669
679
|
const result = await create({
|
|
670
|
-
org,
|
|
680
|
+
org: turnOrg,
|
|
671
681
|
sessionId,
|
|
672
682
|
message,
|
|
673
683
|
modelName: options?.modelName,
|
|
@@ -698,7 +708,7 @@ export function useSessionConversation(
|
|
|
698
708
|
}
|
|
699
709
|
}
|
|
700
710
|
},
|
|
701
|
-
[sessionId, session,
|
|
711
|
+
[sessionId, session, turnOrg, stigmer, create, updateSession, refetch, refetchSession],
|
|
702
712
|
);
|
|
703
713
|
|
|
704
714
|
const retryLastSend = useCallback(() => {
|
|
@@ -763,6 +773,7 @@ export function useSessionConversation(
|
|
|
763
773
|
|
|
764
774
|
return {
|
|
765
775
|
session,
|
|
776
|
+
org: turnOrg,
|
|
766
777
|
completedExecutions,
|
|
767
778
|
activeStreamExecution,
|
|
768
779
|
activePhase,
|
|
@@ -7,6 +7,7 @@ import { EnvironmentVariableEditor } from "../environment/EnvironmentVariableEdi
|
|
|
7
7
|
import { EnvironmentListPanel } from "../environment/EnvironmentListPanel.js";
|
|
8
8
|
import { CreateEnvironmentForm } from "../environment/CreateEnvironmentForm.js";
|
|
9
9
|
import { useActiveOrgSlug } from "../organization/OrgProvider.js";
|
|
10
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
10
11
|
|
|
11
12
|
const ENV_EXCLUDE_LABELS: Record<string, string>[] = [
|
|
12
13
|
{ "stigmer.ai/personal": "true" },
|
|
@@ -152,7 +153,7 @@ function EnvironmentsCard({ org }: { org: string }) {
|
|
|
152
153
|
|
|
153
154
|
function SkeletonRows({ count }: { count: number }) {
|
|
154
155
|
return (
|
|
155
|
-
<
|
|
156
|
+
<LoadingRegion className="stg:space-y-2" label="Loading">
|
|
156
157
|
{Array.from({ length: count }, (_, i) => (
|
|
157
158
|
<div
|
|
158
159
|
key={i}
|
|
@@ -160,6 +161,6 @@ function SkeletonRows({ count }: { count: number }) {
|
|
|
160
161
|
style={{ width: `${85 - i * 10}%` }}
|
|
161
162
|
/>
|
|
162
163
|
))}
|
|
163
|
-
</
|
|
164
|
+
</LoadingRegion>
|
|
164
165
|
);
|
|
165
166
|
}
|
|
@@ -24,7 +24,7 @@ export function MembersSection() {
|
|
|
24
24
|
ApiResourceKind.invitation,
|
|
25
25
|
);
|
|
26
26
|
const idpAvailable = useResourceAvailable(ApiResourceKind.identity_provider);
|
|
27
|
-
const
|
|
27
|
+
const org = activeOrg?.metadata?.id ?? "";
|
|
28
28
|
const orgSlug = activeOrg?.metadata?.slug ?? "";
|
|
29
29
|
|
|
30
30
|
const { identityProviders } = useIdentityProviderList(
|
|
@@ -57,7 +57,7 @@ export function MembersSection() {
|
|
|
57
57
|
)}
|
|
58
58
|
</p>
|
|
59
59
|
|
|
60
|
-
{!
|
|
60
|
+
{!org ? (
|
|
61
61
|
<p className="stg:text-muted-foreground stg:py-4 stg:text-center stg:text-xs">
|
|
62
62
|
Select an organization to manage members.
|
|
63
63
|
</p>
|
|
@@ -72,7 +72,7 @@ export function MembersSection() {
|
|
|
72
72
|
</p>
|
|
73
73
|
</div>
|
|
74
74
|
)}
|
|
75
|
-
<OrgMembersPanel
|
|
75
|
+
<OrgMembersPanel org={org} />
|
|
76
76
|
</>
|
|
77
77
|
)}
|
|
78
78
|
</section>
|
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
} from "./useSaveAgentShare.js";
|
|
42
42
|
import { useRotateShareLink } from "./useRotateShareLink.js";
|
|
43
43
|
import { useShareToolReadiness } from "./useShareToolReadiness.js";
|
|
44
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
44
45
|
|
|
45
46
|
/** Maximum length of each visitor message (proto: `string.max_len = 300`). */
|
|
46
47
|
const MAX_MESSAGE_LENGTH = 300;
|
|
@@ -1521,7 +1522,7 @@ function buildDeveloperSnippet(
|
|
|
1521
1522
|
org: string,
|
|
1522
1523
|
slug: string,
|
|
1523
1524
|
): string {
|
|
1524
|
-
const baseUrl = JSON.stringify(apiBaseUrl
|
|
1525
|
+
const baseUrl = JSON.stringify(trimTrailing(apiBaseUrl, "/"));
|
|
1525
1526
|
return [
|
|
1526
1527
|
`import { createPlatformClientAuth } from "@stigmer/sdk/node";`,
|
|
1527
1528
|
``,
|
|
@@ -7,6 +7,7 @@ import { NewSessionViewer } from "../session/NewSessionViewer.js";
|
|
|
7
7
|
import { SessionViewer } from "../session/SessionViewer.js";
|
|
8
8
|
import { useSharedAgentProfile } from "./useSharedAgentProfile.js";
|
|
9
9
|
import type { SharingAudience } from "./useSaveAgentShare.js";
|
|
10
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
10
11
|
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
// Public API
|
|
@@ -123,13 +124,12 @@ export function SharedAgentChat({
|
|
|
123
124
|
|
|
124
125
|
if (isLoading) {
|
|
125
126
|
return (
|
|
126
|
-
<
|
|
127
|
+
<LoadingRegion
|
|
127
128
|
className={cn("stg:flex stg:h-full stg:w-full stg:items-center stg:justify-center", className)}
|
|
128
|
-
|
|
129
|
-
aria-label="Loading agent"
|
|
129
|
+
label="Loading agent"
|
|
130
130
|
>
|
|
131
131
|
<LoadingSkeleton />
|
|
132
|
-
</
|
|
132
|
+
</LoadingRegion>
|
|
133
133
|
);
|
|
134
134
|
}
|
|
135
135
|
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
sectionLabelClassName,
|
|
32
32
|
} from "./chrome.js";
|
|
33
33
|
import type { RenderSidebarLink } from "./types.js";
|
|
34
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
34
35
|
|
|
35
36
|
// ---------------------------------------------------------------------------
|
|
36
37
|
// Public API
|
|
@@ -433,7 +434,7 @@ function cnActivityRow(active: boolean): string {
|
|
|
433
434
|
|
|
434
435
|
function RecentsSkeletons() {
|
|
435
436
|
return (
|
|
436
|
-
<
|
|
437
|
+
<LoadingRegion className="stg:space-y-2 stg:px-2" label="Loading sessions">
|
|
437
438
|
{Array.from({ length: 5 }, (_, i) => (
|
|
438
439
|
<div
|
|
439
440
|
key={i}
|
|
@@ -441,7 +442,7 @@ function RecentsSkeletons() {
|
|
|
441
442
|
style={{ width: `${70 + Math.sin(i * 1.5) * 20}%` }}
|
|
442
443
|
/>
|
|
443
444
|
))}
|
|
444
|
-
</
|
|
445
|
+
</LoadingRegion>
|
|
445
446
|
);
|
|
446
447
|
}
|
|
447
448
|
|
|
@@ -28,6 +28,7 @@ import { VersionTimeline } from "../version-history/VersionTimeline.js";
|
|
|
28
28
|
import { SkillDiffDialog, type SkillDiffDialogState } from "./SkillDiffDialog.js";
|
|
29
29
|
import { ManagedByPluginNotice } from "../plugin/ManagedByPluginNotice.js";
|
|
30
30
|
import { useManagingPlugin } from "../plugin/useManagingPlugin.js";
|
|
31
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
31
32
|
|
|
32
33
|
const CONTENT_TAB: TabItem = { id: "content", label: "Content" };
|
|
33
34
|
const VERSIONS_TAB: TabItem = { id: "versions", label: "Versions" };
|
|
@@ -650,10 +651,9 @@ function SkillSection({
|
|
|
650
651
|
|
|
651
652
|
function LoadingSkeleton({ className }: { readonly className?: string }) {
|
|
652
653
|
return (
|
|
653
|
-
<
|
|
654
|
+
<LoadingRegion
|
|
654
655
|
className={cn("stg:flex stg:flex-col stg:gap-6", className)}
|
|
655
|
-
|
|
656
|
-
aria-label="Loading skill details"
|
|
656
|
+
label="Loading skill details"
|
|
657
657
|
>
|
|
658
658
|
<div className="stg:flex stg:items-start stg:gap-3">
|
|
659
659
|
<div className="stg:mt-1 stg:size-6 stg:shrink-0 stg:animate-pulse stg:rounded stg:bg-muted" />
|
|
@@ -677,7 +677,7 @@ function LoadingSkeleton({ className }: { readonly className?: string }) {
|
|
|
677
677
|
style={{ height: "64px" }}
|
|
678
678
|
/>
|
|
679
679
|
</div>
|
|
680
|
-
</
|
|
680
|
+
</LoadingRegion>
|
|
681
681
|
);
|
|
682
682
|
}
|
|
683
683
|
|
|
@@ -6,6 +6,7 @@ import { DialogShell } from "../internal/DialogShell.js";
|
|
|
6
6
|
import { useSkillDiff } from "./useSkillDiff.js";
|
|
7
7
|
import { MultiFileDiffView } from "../version-history/MultiFileDiffView.js";
|
|
8
8
|
import { ErrorMessage } from "../error/ErrorMessage.js";
|
|
9
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
9
10
|
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
11
12
|
// Public types
|
|
@@ -129,10 +130,9 @@ export function SkillDiffDialog({ state, onClose }: SkillDiffDialogProps) {
|
|
|
129
130
|
|
|
130
131
|
function DiffSkeleton() {
|
|
131
132
|
return (
|
|
132
|
-
<
|
|
133
|
+
<LoadingRegion
|
|
133
134
|
className="stg:flex stg:flex-col stg:gap-4"
|
|
134
|
-
|
|
135
|
-
aria-label="Loading diff"
|
|
135
|
+
label="Loading diff"
|
|
136
136
|
>
|
|
137
137
|
<div className="stg:flex stg:items-center stg:gap-2">
|
|
138
138
|
<div className="stg:h-4 stg:w-36 stg:animate-pulse stg:rounded stg:bg-muted" />
|
|
@@ -147,7 +147,7 @@ function DiffSkeleton() {
|
|
|
147
147
|
<div className="stg:h-4 stg:flex-1 stg:animate-pulse stg:rounded stg:bg-muted" />
|
|
148
148
|
</div>
|
|
149
149
|
))}
|
|
150
|
-
</
|
|
150
|
+
</LoadingRegion>
|
|
151
151
|
);
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -7,6 +7,7 @@ import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
|
7
7
|
import { MARKDOWN_COMPONENTS, REMARK_PLUGINS, stripFrontmatter } from "../internal/markdown-components.js";
|
|
8
8
|
import { buildFileTree, FileTreeNode } from "../internal/file-tree/index.js";
|
|
9
9
|
import { useSkillArtifact } from "./useSkillArtifact.js";
|
|
10
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
10
11
|
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
// Public types
|
|
@@ -79,10 +80,9 @@ export function SkillFileBrowser({
|
|
|
79
80
|
|
|
80
81
|
if (isLoading) {
|
|
81
82
|
return (
|
|
82
|
-
<
|
|
83
|
+
<LoadingRegion
|
|
83
84
|
className={cn("stg:rounded-lg stg:border stg:border-border", className)}
|
|
84
|
-
|
|
85
|
-
aria-label="Loading skill package files"
|
|
85
|
+
label="Loading skill package files"
|
|
86
86
|
>
|
|
87
87
|
<div className="stg:p-4">
|
|
88
88
|
<div className="stg:h-3 stg:w-32 stg:animate-pulse stg:rounded stg:bg-muted" />
|
|
@@ -101,7 +101,7 @@ export function SkillFileBrowser({
|
|
|
101
101
|
</div>
|
|
102
102
|
</div>
|
|
103
103
|
</div>
|
|
104
|
-
</
|
|
104
|
+
</LoadingRegion>
|
|
105
105
|
);
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -30,7 +30,7 @@ import { useDeleteTeam, useUpdateTeam } from "./useTeamMutations.js";
|
|
|
30
30
|
export interface TeamDetailPanelProps {
|
|
31
31
|
readonly team: Team;
|
|
32
32
|
/** The organization's id (`metadata.id`), whose members can be added. */
|
|
33
|
-
readonly
|
|
33
|
+
readonly org: string;
|
|
34
34
|
/** Fired with the saved team after an edit. */
|
|
35
35
|
readonly onUpdated?: (team: Team) => void;
|
|
36
36
|
/** Fired after the team is deleted. */
|
|
@@ -47,7 +47,7 @@ export interface TeamDetailPanelProps {
|
|
|
47
47
|
*/
|
|
48
48
|
export function TeamDetailPanel({
|
|
49
49
|
team,
|
|
50
|
-
|
|
50
|
+
org,
|
|
51
51
|
onUpdated,
|
|
52
52
|
onDeleted,
|
|
53
53
|
onBack,
|
|
@@ -112,7 +112,7 @@ export function TeamDetailPanel({
|
|
|
112
112
|
)}
|
|
113
113
|
|
|
114
114
|
<section aria-label="Members">
|
|
115
|
-
<TeamMembersPanel teamId={teamId}
|
|
115
|
+
<TeamMembersPanel teamId={teamId} org={org} />
|
|
116
116
|
</section>
|
|
117
117
|
|
|
118
118
|
<PermissionGate resource={gate} relation="can_delete">
|
|
@@ -15,6 +15,7 @@ import { ChevronRight, UsersRound } from "lucide-react";
|
|
|
15
15
|
import { cn } from "@stigmer/theme";
|
|
16
16
|
import { getUserMessage } from "@stigmer/sdk";
|
|
17
17
|
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
18
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
18
19
|
|
|
19
20
|
/** Props for {@link TeamListPanel}. */
|
|
20
21
|
export interface TeamListPanelProps {
|
|
@@ -47,11 +48,11 @@ export function TeamListPanel({
|
|
|
47
48
|
}: TeamListPanelProps) {
|
|
48
49
|
if (isLoading) {
|
|
49
50
|
return (
|
|
50
|
-
<
|
|
51
|
+
<LoadingRegion className={cn("stg:space-y-2", className)} label="Loading teams">
|
|
51
52
|
{Array.from({ length: 2 }, (_, i) => (
|
|
52
53
|
<div key={i} className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg" />
|
|
53
54
|
))}
|
|
54
|
-
</
|
|
55
|
+
</LoadingRegion>
|
|
55
56
|
);
|
|
56
57
|
}
|
|
57
58
|
|
|
@@ -32,7 +32,7 @@ export interface TeamMembersPanelProps {
|
|
|
32
32
|
/** The team's id (`metadata.id`). */
|
|
33
33
|
readonly teamId: string;
|
|
34
34
|
/** The organization's id (`metadata.id`), whose members can be added. */
|
|
35
|
-
readonly
|
|
35
|
+
readonly org: string;
|
|
36
36
|
readonly className?: string;
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ export interface TeamMembersPanelProps {
|
|
|
42
42
|
*
|
|
43
43
|
* All visual properties flow through `--stgm-*` design tokens.
|
|
44
44
|
*/
|
|
45
|
-
export function TeamMembersPanel({ teamId,
|
|
45
|
+
export function TeamMembersPanel({ teamId, org, className }: TeamMembersPanelProps) {
|
|
46
46
|
const team = useMemo(
|
|
47
47
|
() => ({ kind: "team", id: teamId, resourceKind: ApiResourceKind.team }),
|
|
48
48
|
[teamId],
|
|
@@ -131,7 +131,7 @@ export function TeamMembersPanel({ teamId, orgId, className }: TeamMembersPanelP
|
|
|
131
131
|
<PermissionGate resource={grantGate} relation="can_grant_access">
|
|
132
132
|
<div className="stg:mt-4 stg:flex stg:items-end stg:gap-2 stg:border-t stg:border-border stg:pt-4">
|
|
133
133
|
<PrincipalPicker
|
|
134
|
-
|
|
134
|
+
org={org}
|
|
135
135
|
value={adding}
|
|
136
136
|
onChange={setAdding}
|
|
137
137
|
excludeGrantees={members}
|
|
@@ -22,6 +22,7 @@ import { AgentBreakdownList } from "./AgentBreakdownList.js";
|
|
|
22
22
|
import { HarnessSplitCard } from "./HarnessSplitCard.js";
|
|
23
23
|
import { ExportButton } from "./ExportButton.js";
|
|
24
24
|
import { useExportCSV } from "./useExportCSV.js";
|
|
25
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
25
26
|
|
|
26
27
|
// ---------------------------------------------------------------------------
|
|
27
28
|
// Public API
|
|
@@ -30,7 +31,7 @@ import { useExportCSV } from "./useExportCSV.js";
|
|
|
30
31
|
/** Props for {@link OrgUsagePanel}. */
|
|
31
32
|
export interface OrgUsagePanelProps {
|
|
32
33
|
/** Organization ID (`metadata.id`) to fetch usage for. */
|
|
33
|
-
readonly
|
|
34
|
+
readonly org: string;
|
|
34
35
|
/** Additional CSS class names for the root container. */
|
|
35
36
|
readonly className?: string;
|
|
36
37
|
}
|
|
@@ -47,22 +48,21 @@ export interface OrgUsagePanelProps {
|
|
|
47
48
|
*
|
|
48
49
|
* @example
|
|
49
50
|
* ```tsx
|
|
50
|
-
* <OrgUsagePanel
|
|
51
|
+
* <OrgUsagePanel org={activeOrg.metadata.id} />
|
|
51
52
|
* ```
|
|
52
53
|
*/
|
|
53
|
-
export function OrgUsagePanel({
|
|
54
|
+
export function OrgUsagePanel({ org, className }: OrgUsagePanelProps) {
|
|
54
55
|
const [preset, setPreset] = useState<DateRangePreset>("30d");
|
|
55
56
|
const dateRange = dateRangeFromPreset(preset);
|
|
56
|
-
const { report, isLoading, error } = useOrgUsageReport(
|
|
57
|
-
const { exportCSV, isExporting } = useExportCSV(report,
|
|
57
|
+
const { report, isLoading, error } = useOrgUsageReport(org, dateRange);
|
|
58
|
+
const { exportCSV, isExporting } = useExportCSV(report, org);
|
|
58
59
|
const daysInRange = Number.parseInt(preset, 10);
|
|
59
60
|
|
|
60
61
|
if (isLoading) {
|
|
61
62
|
return (
|
|
62
|
-
<
|
|
63
|
+
<LoadingRegion
|
|
63
64
|
className={cn("stg:space-y-4", className)}
|
|
64
|
-
|
|
65
|
-
aria-label="Loading usage data"
|
|
65
|
+
label="Loading usage data"
|
|
66
66
|
>
|
|
67
67
|
<div className="stg:flex stg:gap-2">
|
|
68
68
|
{DATE_RANGE_PRESETS.map((p) => (
|
|
@@ -81,7 +81,7 @@ export function OrgUsagePanel({ orgId, className }: OrgUsagePanelProps) {
|
|
|
81
81
|
))}
|
|
82
82
|
</div>
|
|
83
83
|
<div className="stg:h-40 stg:animate-pulse stg:rounded-lg stg:bg-muted-subtle" />
|
|
84
|
-
</
|
|
84
|
+
</LoadingRegion>
|
|
85
85
|
);
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -24,11 +24,11 @@ export interface UseExportCSVReturn {
|
|
|
24
24
|
* - `model_breakdown` — one row per model with calls, tokens, cost
|
|
25
25
|
*
|
|
26
26
|
* @param report - The org usage report data (from `useOrgUsageReport`).
|
|
27
|
-
* @param
|
|
27
|
+
* @param org - Organization ID for the filename.
|
|
28
28
|
*/
|
|
29
29
|
export function useExportCSV(
|
|
30
30
|
report: GetOrgUsageReportOutput | null,
|
|
31
|
-
|
|
31
|
+
org: string,
|
|
32
32
|
): UseExportCSVReturn {
|
|
33
33
|
const [isExporting, setIsExporting] = useState(false);
|
|
34
34
|
|
|
@@ -39,15 +39,15 @@ export function useExportCSV(
|
|
|
39
39
|
|
|
40
40
|
try {
|
|
41
41
|
const { csv, filename } = format === "daily_summary"
|
|
42
|
-
? buildDailySummaryCSV(report,
|
|
43
|
-
: buildModelBreakdownCSV(report,
|
|
42
|
+
? buildDailySummaryCSV(report, org)
|
|
43
|
+
: buildModelBreakdownCSV(report, org);
|
|
44
44
|
|
|
45
45
|
downloadTextFile(csv, filename, "text/csv");
|
|
46
46
|
} finally {
|
|
47
47
|
setIsExporting(false);
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
|
-
[report,
|
|
50
|
+
[report, org],
|
|
51
51
|
);
|
|
52
52
|
|
|
53
53
|
return { exportCSV, isExporting };
|
|
@@ -55,7 +55,7 @@ export function useExportCSV(
|
|
|
55
55
|
|
|
56
56
|
function buildDailySummaryCSV(
|
|
57
57
|
report: GetOrgUsageReportOutput,
|
|
58
|
-
|
|
58
|
+
org: string,
|
|
59
59
|
): { csv: string; filename: string } {
|
|
60
60
|
const header = "Date,Executions,Tokens,Cost (USD)";
|
|
61
61
|
const rows = report.dailyCosts.map((entry) => {
|
|
@@ -65,13 +65,13 @@ function buildDailySummaryCSV(
|
|
|
65
65
|
|
|
66
66
|
return {
|
|
67
67
|
csv: [header, ...rows].join("\n"),
|
|
68
|
-
filename: `${
|
|
68
|
+
filename: `${org}-daily-usage.csv`,
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
function buildModelBreakdownCSV(
|
|
73
73
|
report: GetOrgUsageReportOutput,
|
|
74
|
-
|
|
74
|
+
org: string,
|
|
75
75
|
): { csv: string; filename: string } {
|
|
76
76
|
const header =
|
|
77
77
|
"Model,Provider,Calls,Input Tokens,Output Tokens,Cache Read Tokens,Cache Write Tokens,Cost (USD)";
|
|
@@ -91,7 +91,7 @@ function buildModelBreakdownCSV(
|
|
|
91
91
|
|
|
92
92
|
return {
|
|
93
93
|
csv: [header, ...rows].join("\n"),
|
|
94
|
-
filename: `${
|
|
94
|
+
filename: `${org}-model-usage.csv`,
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -39,16 +39,16 @@ export interface UseOrgUsageReportReturn {
|
|
|
39
39
|
* org ID and date range. The server returns aggregated totals, a
|
|
40
40
|
* per-model breakdown, the top agents by cost, and a daily cost trend.
|
|
41
41
|
*
|
|
42
|
-
* Pass `null` as `
|
|
42
|
+
* Pass `null` as `org` to skip fetching (stable no-op). Call
|
|
43
43
|
* `refetch()` to re-query manually.
|
|
44
44
|
*
|
|
45
|
-
* @param
|
|
45
|
+
* @param org - Organization ID, or `null` to skip.
|
|
46
46
|
* @param dateRange - Closed date range (YYYY-MM-DD strings).
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```tsx
|
|
50
50
|
* const range = dateRangeFromPreset("30d");
|
|
51
|
-
* const { report, isLoading, error } = useOrgUsageReport(
|
|
51
|
+
* const { report, isLoading, error } = useOrgUsageReport(org, range);
|
|
52
52
|
*
|
|
53
53
|
* if (isLoading) return <Skeleton />;
|
|
54
54
|
* if (error) return <ErrorMessage error={error} />;
|
|
@@ -59,23 +59,23 @@ export interface UseOrgUsageReportReturn {
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
export function useOrgUsageReport(
|
|
62
|
-
|
|
62
|
+
org: string | null,
|
|
63
63
|
dateRange: DateRange,
|
|
64
64
|
): UseOrgUsageReportReturn {
|
|
65
65
|
const stigmer = useStigmer();
|
|
66
66
|
|
|
67
67
|
const { data: report, isLoading, isRefetching, error, refetch } = useFetch(
|
|
68
|
-
|
|
68
|
+
org
|
|
69
69
|
? () =>
|
|
70
70
|
stigmer.agentExecution.getOrgUsageReport(
|
|
71
71
|
create(GetOrgUsageReportInputSchema, {
|
|
72
|
-
|
|
72
|
+
org,
|
|
73
73
|
fromDate: dateRange.from,
|
|
74
74
|
toDate: dateRange.to,
|
|
75
75
|
}),
|
|
76
76
|
)
|
|
77
77
|
: null,
|
|
78
|
-
[
|
|
78
|
+
[org, dateRange.from, dateRange.to, stigmer],
|
|
79
79
|
null as GetOrgUsageReportOutput | null,
|
|
80
80
|
);
|
|
81
81
|
|
|
@@ -4,6 +4,7 @@ import { useCallback, useState } from "react";
|
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import type { VersionTimelineProps } from "./types.js";
|
|
6
6
|
import { VersionTimelineEntry } from "./VersionTimelineEntry.js";
|
|
7
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Accessible vertical timeline for version history.
|
|
@@ -163,10 +164,9 @@ function CompareIcon({ className }: { readonly className?: string }) {
|
|
|
163
164
|
|
|
164
165
|
function TimelineSkeleton({ className }: { readonly className?: string }) {
|
|
165
166
|
return (
|
|
166
|
-
<
|
|
167
|
+
<LoadingRegion
|
|
167
168
|
className={cn("stg:flex stg:flex-col stg:gap-4 stg:pt-2", className)}
|
|
168
|
-
|
|
169
|
-
aria-label="Loading version history"
|
|
169
|
+
label="Loading version history"
|
|
170
170
|
>
|
|
171
171
|
{[1, 2, 3].map((i) => (
|
|
172
172
|
<div key={i} className="stg:flex stg:gap-3">
|
|
@@ -183,7 +183,7 @@ function TimelineSkeleton({ className }: { readonly className?: string }) {
|
|
|
183
183
|
</div>
|
|
184
184
|
</div>
|
|
185
185
|
))}
|
|
186
|
-
</
|
|
186
|
+
</LoadingRegion>
|
|
187
187
|
);
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
4
|
import { useWorkflowVersionDiff } from "./useWorkflowVersionDiff.js";
|
|
5
5
|
import type { DiffLine } from "./workflow-yaml-diff.js";
|
|
6
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
6
7
|
|
|
7
8
|
/** Props for {@link WorkflowVersionDiffViewer}. */
|
|
8
9
|
export interface WorkflowVersionDiffViewerProps {
|
|
@@ -163,13 +164,12 @@ function DiffLineRow({
|
|
|
163
164
|
|
|
164
165
|
function DiffSkeleton({ className }: { readonly className?: string }) {
|
|
165
166
|
return (
|
|
166
|
-
<
|
|
167
|
+
<LoadingRegion
|
|
167
168
|
className={cn(
|
|
168
169
|
"stg:overflow-hidden stg:rounded-lg stg:border stg:border-border",
|
|
169
170
|
className,
|
|
170
171
|
)}
|
|
171
|
-
|
|
172
|
-
aria-label="Loading diff"
|
|
172
|
+
label="Loading diff"
|
|
173
173
|
>
|
|
174
174
|
<div className="stg:border-b stg:border-border stg:bg-muted stg:px-3 stg:py-2">
|
|
175
175
|
<div className="stg:h-4 stg:w-48 stg:animate-pulse stg:rounded stg:bg-muted-foreground/20" />
|
|
@@ -185,7 +185,7 @@ function DiffSkeleton({ className }: { readonly className?: string }) {
|
|
|
185
185
|
</div>
|
|
186
186
|
))}
|
|
187
187
|
</div>
|
|
188
|
-
</
|
|
188
|
+
</LoadingRegion>
|
|
189
189
|
);
|
|
190
190
|
}
|
|
191
191
|
|