@stigmer/react 3.40.1 → 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 +2 -1
- package/access/ManageAccessButton.d.ts +1 -1
- package/access/ManageAccessButton.js +1 -1
- package/access/ManageAccessDialog.d.ts +1 -1
- package/access/ManageAccessDialog.js +2 -2
- package/access/ManageAccessDialog.js.map +1 -1
- package/access/types.d.ts +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/ChangePlanDialog.d.ts.map +1 -1
- package/billing/ChangePlanDialog.js +13 -1
- package/billing/ChangePlanDialog.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.d.ts +33 -0
- package/billing/ProviderKeysSection.d.ts.map +1 -0
- package/billing/ProviderKeysSection.js +143 -0
- package/billing/ProviderKeysSection.js.map +1 -0
- package/billing/UpgradeNotice.d.ts.map +1 -1
- package/billing/UpgradeNotice.js +1 -0
- package/billing/UpgradeNotice.js.map +1 -1
- package/billing/index.d.ts +4 -0
- package/billing/index.d.ts.map +1 -1
- package/billing/index.js +2 -0
- package/billing/index.js.map +1 -1
- package/billing/plan-features.d.ts +3 -2
- package/billing/plan-features.d.ts.map +1 -1
- package/billing/plan-features.js +5 -4
- 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 +67 -0
- package/billing/useProviderKeys.d.ts.map +1 -0
- package/billing/useProviderKeys.js +61 -0
- package/billing/useProviderKeys.js.map +1 -0
- 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/AgentChannelsPanel.d.ts.map +1 -1
- package/channel/AgentChannelsPanel.js +11 -9
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/channel/connect/ServingAppSection.js +1 -1
- package/channel/connect/ServingAppSection.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts +2 -2
- package/channel-app/ChannelAppDetailPanel.js +17 -10
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/ChannelAppListPanel.d.ts +2 -2
- 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/CreateChannelAppForm.js +1 -1
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/copy.d.ts +3 -3
- package/channel-app/copy.js +3 -3
- package/channel-app/internal.d.ts +9 -0
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +9 -0
- package/channel-app/internal.js.map +1 -1
- package/channel-app/slackAppSetup.d.ts +3 -24
- package/channel-app/slackAppSetup.d.ts.map +1 -1
- package/channel-app/slackAppSetup.js +6 -3
- package/channel-app/slackAppSetup.js.map +1 -1
- package/channel-app/whatsappAppSetup.d.ts +3 -27
- package/channel-app/whatsappAppSetup.d.ts.map +1 -1
- package/channel-app/whatsappAppSetup.js +5 -2
- package/channel-app/whatsappAppSetup.js.map +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +5 -9
- package/composer/SessionComposer.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 +3 -2
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/environment/index.d.ts +1 -1
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -1
- package/environment/index.js.map +1 -1
- package/environment/systemEnvVars.d.ts +4 -63
- package/environment/systemEnvVars.d.ts.map +1 -1
- package/environment/systemEnvVars.js +21 -113
- package/environment/systemEnvVars.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/RecalledMemoriesCard.js +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 +5 -4
- 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/useCheckPermission.d.ts +4 -1
- package/iam-policy/useCheckPermission.d.ts.map +1 -1
- package/iam-policy/useCheckPermission.js +4 -1
- package/iam-policy/useCheckPermission.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/useGrantableRoles.d.ts +1 -1
- package/iam-policy/useGrantableRoles.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 +11 -9
- package/iam-policy/useRevokeOrgAccess.d.ts.map +1 -1
- package/iam-policy/useRevokeOrgAccess.js +6 -6
- package/iam-policy/useRevokeOrgAccess.js.map +1 -1
- package/identity-account/AccountPreferencesPanel.d.ts +6 -0
- package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
- package/identity-account/AccountPreferencesPanel.js +35 -3
- package/identity-account/AccountPreferencesPanel.js.map +1 -1
- package/identity-account/useAccountExecutionDefaults.d.ts +1 -1
- package/identity-account/useAccountExecutionDefaults.d.ts.map +1 -1
- package/identity-account/useAccountExecutionDefaults.js +2 -3
- package/identity-account/useAccountExecutionDefaults.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 +4 -4
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- 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/UnknownPublicAddressNotice.d.ts +20 -0
- package/internal/UnknownPublicAddressNotice.d.ts.map +1 -0
- package/internal/UnknownPublicAddressNotice.js +19 -0
- package/internal/UnknownPublicAddressNotice.js.map +1 -0
- package/internal/features.js +2 -2
- package/internal/features.js.map +1 -1
- 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/library/InstanceVisibilitySelector.d.ts +1 -1
- package/library/InstanceVisibilitySelector.d.ts.map +1 -1
- package/library/ResourceVisibilityControl.d.ts +6 -3
- package/library/ResourceVisibilityControl.d.ts.map +1 -1
- package/library/ResourceVisibilityControl.js +7 -4
- package/library/ResourceVisibilityControl.js.map +1 -1
- package/library/VisibilitySelector.d.ts +2 -2
- package/library/VisibilitySelector.d.ts.map +1 -1
- package/library/VisibilitySelector.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 +7 -7
- 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.d.ts +7 -5
- package/licenses/license-format.d.ts.map +1 -1
- package/licenses/license-format.js +2 -4
- package/licenses/license-format.js.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +4 -5
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +5 -7
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/McpServerPicker.d.ts.map +1 -1
- package/mcp-server/McpServerPicker.js +2 -6
- package/mcp-server/McpServerPicker.js.map +1 -1
- package/mcp-server/McpToolSelector.js +1 -1
- package/mcp-server/McpToolSelector.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +14 -25
- package/mcp-server/useMcpServerConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerConnect.js +7 -19
- package/mcp-server/useMcpServerConnect.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +1 -3
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +6 -19
- package/mcp-server/useMcpServerOAuthConnect.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/models/HarnessSelector.d.ts.map +1 -1
- package/models/HarnessSelector.js +1 -2
- package/models/HarnessSelector.js.map +1 -1
- package/models/ModelSelector.d.ts +1 -1
- package/models/ModelSelector.d.ts.map +1 -1
- package/models/ModelSelector.js +1 -7
- package/models/ModelSelector.js.map +1 -1
- package/models/harness.d.ts +10 -6
- package/models/harness.d.ts.map +1 -1
- package/models/harness.js +35 -28
- package/models/harness.js.map +1 -1
- package/models/index.d.ts +1 -1
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.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 +19 -6
- 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/plugin/useMcpServerReadiness.js +2 -2
- package/plugin/useMcpServerReadiness.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-standing/ProviderStandingConsole.js +1 -1
- package/provider.d.ts +31 -2
- package/provider.d.ts.map +1 -1
- package/provider.js +7 -3
- package/provider.js.map +1 -1
- package/public-base-url-context.d.ts +35 -0
- package/public-base-url-context.d.ts.map +1 -0
- package/public-base-url-context.js +63 -0
- package/public-base-url-context.js.map +1 -0
- package/resource-workbench/components/SelectionCheckbox.js +1 -1
- package/resource-workbench/components/SelectionCheckbox.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/useLocalSessionWorker.d.ts +19 -3
- package/session/useLocalSessionWorker.d.ts.map +1 -1
- package/session/useLocalSessionWorker.js +37 -4
- package/session/useLocalSessionWorker.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/ChannelAppsSection.d.ts +4 -4
- package/settings/ChannelAppsSection.js +4 -4
- 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/ProviderKeysSection.d.ts +3 -0
- package/settings/ProviderKeysSection.d.ts.map +1 -0
- package/settings/ProviderKeysSection.js +3 -0
- package/settings/ProviderKeysSection.js.map +1 -0
- 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/settings/index.d.ts +2 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +2 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +14 -9
- 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/sharing/useCanCreateAgentShare.d.ts +3 -1
- package/sharing/useCanCreateAgentShare.d.ts.map +1 -1
- package/sharing/useCanCreateAgentShare.js +5 -3
- package/sharing/useCanCreateAgentShare.js.map +1 -1
- package/sharing/useSaveAgentShare.d.ts +1 -1
- package/sharing/useSaveAgentShare.js +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 +2 -2
- package/src/access/types.ts +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/ChangePlanDialog.tsx +14 -2
- 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 +324 -0
- package/src/billing/UpgradeNotice.tsx +1 -0
- package/src/billing/index.ts +9 -0
- package/src/billing/plan-features.ts +5 -4
- 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 +129 -0
- package/src/billing/useSetAutoRechargeConfig.ts +3 -3
- package/src/billing/useSubscription.ts +7 -7
- package/src/channel/AgentChannelsPanel.tsx +11 -9
- package/src/channel/connect/ServingAppSection.tsx +1 -1
- package/src/channel-app/ChannelAppDetailPanel.tsx +37 -20
- package/src/channel-app/ChannelAppListPanel.tsx +6 -6
- package/src/channel-app/CreateChannelAppForm.tsx +0 -1
- package/src/channel-app/copy.ts +3 -3
- package/src/channel-app/internal.tsx +21 -0
- package/src/channel-app/slackAppSetup.ts +6 -3
- package/src/channel-app/whatsappAppSetup.ts +5 -2
- package/src/composer/SessionComposer.tsx +5 -14
- 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 +5 -5
- package/src/environment/index.ts +1 -7
- package/src/environment/systemEnvVars.ts +21 -133
- package/src/execution/ArtifactFileContent.tsx +3 -2
- package/src/execution/McpToolDetail.tsx +3 -3
- package/src/execution/RecalledMemoriesCard.tsx +1 -1
- 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 +10 -8
- 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/useCheckPermission.ts +4 -1
- package/src/iam-policy/useCreateIamPolicy.ts +1 -1
- package/src/iam-policy/useDeleteIamPolicy.ts +1 -1
- package/src/iam-policy/useGrantableRoles.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 +13 -11
- package/src/identity-account/AccountPreferencesPanel.tsx +60 -13
- package/src/identity-account/useAccountExecutionDefaults.ts +2 -5
- 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 +10 -5
- 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/UnknownPublicAddressNotice.tsx +31 -0
- package/src/internal/features.ts +2 -2
- 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/library/InstanceVisibilitySelector.tsx +1 -1
- package/src/library/ResourceVisibilityControl.tsx +7 -4
- package/src/library/VisibilitySelector.tsx +2 -2
- package/src/licenses/LicenseDetail.tsx +8 -6
- package/src/licenses/LicenseIssueForm.tsx +7 -7
- package/src/licenses/license-draft.ts +4 -4
- package/src/licenses/license-format.ts +12 -8
- package/src/mcp-server/McpServerConnectDialog.tsx +4 -6
- package/src/mcp-server/McpServerDetailView.tsx +7 -10
- package/src/mcp-server/McpServerPicker.tsx +2 -12
- package/src/mcp-server/McpToolSelector.tsx +1 -1
- package/src/mcp-server/useMcpServerConnect.ts +14 -33
- package/src/mcp-server/useMcpServerOAuthConnect.ts +7 -23
- package/src/memory/MemoryListPanel.tsx +4 -4
- package/src/models/HarnessSelector.tsx +1 -3
- package/src/models/ModelSelector.tsx +2 -7
- package/src/models/harness.ts +41 -39
- package/src/models/index.ts +1 -1
- package/src/oauth-app/OAuthAppListPanel.tsx +4 -4
- package/src/organization/OrgPreferencesPanel.tsx +28 -10
- 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/plugin/useMcpServerReadiness.ts +2 -2
- package/src/portal-container.ts +8 -0
- package/src/provider-standing/ProviderStandingConsole.tsx +1 -1
- package/src/provider.tsx +60 -27
- package/src/public-base-url-context.ts +71 -0
- package/src/resource-workbench/components/SelectionCheckbox.tsx +1 -1
- package/src/schedule/ScheduleDetailView.tsx +4 -4
- package/src/session/SessionViewer.tsx +13 -3
- package/src/session/useLocalSessionWorker.ts +35 -4
- package/src/session/useSessionConversation.ts +14 -3
- package/src/settings/ChannelAppsSection.tsx +4 -4
- 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/ProviderKeysSection.tsx +4 -0
- package/src/settings/TeamsSection.tsx +1 -1
- package/src/settings/UsageSection.tsx +1 -1
- package/src/settings/index.ts +2 -0
- package/src/settings/settings-nav.ts +2 -0
- package/src/sharing/ShareAgentDialog.tsx +32 -15
- package/src/sharing/SharedAgentChat.tsx +4 -4
- package/src/sharing/useCanCreateAgentShare.ts +6 -4
- package/src/sharing/useSaveAgentShare.ts +1 -1
- 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/styles.css +14 -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/WorkflowTaskApprovalSummary.tsx +14 -7
- package/src/workflow/WorkflowVersionDiffViewer.tsx +4 -4
- package/src/workflow/WorkflowVersionTimeline.tsx +4 -4
- package/src/workflow/inspector/tabs/BranchesTab.tsx +2 -2
- package/src/workflow/inspector/tabs/CatchTab.tsx +1 -1
- package/src/workflow/inspector/tabs/IterationTab.tsx +1 -1
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +7 -6
- package/src/workflow/task-detail/task-approval.ts +20 -13
- 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/WorkflowTaskApprovalSummary.d.ts +7 -4
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +8 -3
- package/workflow/WorkflowTaskApprovalSummary.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/inspector/tabs/BranchesTab.js +1 -1
- package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
- package/workflow/inspector/tabs/CatchTab.js +1 -1
- package/workflow/inspector/tabs/CatchTab.js.map +1 -1
- package/workflow/inspector/tabs/IterationTab.js +1 -1
- package/workflow/inspector/tabs/IterationTab.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +6 -5
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/task-detail/task-approval.d.ts +13 -11
- package/workflow/task-detail/task-approval.d.ts.map +1 -1
- package/workflow/task-detail/task-approval.js +8 -4
- package/workflow/task-detail/task-approval.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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { useCallback } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { TruncatedText } from "../internal/truncated-text.js";
|
|
6
|
+
import { UnknownPublicAddressNotice } from "../internal/UnknownPublicAddressNotice.js";
|
|
6
7
|
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -89,6 +90,26 @@ export function CopyRow({
|
|
|
89
90
|
);
|
|
90
91
|
}
|
|
91
92
|
|
|
93
|
+
/**
|
|
94
|
+
* The place of a {@link CopyRow} whose URL cannot be built because the
|
|
95
|
+
* server's public address is unknown: the same label, then the shared
|
|
96
|
+
* notice in place of the value and its copy button.
|
|
97
|
+
*/
|
|
98
|
+
export function UnknownAddressRow({
|
|
99
|
+
label,
|
|
100
|
+
subject,
|
|
101
|
+
}: {
|
|
102
|
+
label: string;
|
|
103
|
+
subject: string;
|
|
104
|
+
}) {
|
|
105
|
+
return (
|
|
106
|
+
<div className="stg:space-y-1">
|
|
107
|
+
<p className="stg:text-xs stg:font-medium stg:text-foreground">{label}</p>
|
|
108
|
+
<UnknownPublicAddressNotice subject={subject} />
|
|
109
|
+
</div>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
92
113
|
/** A multi-line copyable value (the app manifest) in a scrollable block. */
|
|
93
114
|
export function CopyBlock({
|
|
94
115
|
label,
|
|
@@ -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
|
|
@@ -53,14 +54,16 @@ export const SLACK_CHANNEL_APP_BOT_EVENTS = [
|
|
|
53
54
|
* The events webhook URL for one ChannelApp: the per-app route the
|
|
54
55
|
* receiver resolves the app's signing secret by.
|
|
55
56
|
*
|
|
56
|
-
* @param apiBaseUrl the
|
|
57
|
+
* @param apiBaseUrl the server's public base URL, absolute (the one
|
|
58
|
+
* `StigmerProvider`'s `publicBaseUrl` names, or the
|
|
59
|
+
* client's `baseUrl` when that is absolute)
|
|
57
60
|
* @param channelAppId the ChannelApp resource id (`chapp_...`)
|
|
58
61
|
*/
|
|
59
62
|
export function slackChannelAppWebhookUrl(
|
|
60
63
|
apiBaseUrl: string,
|
|
61
64
|
channelAppId: string,
|
|
62
65
|
): string {
|
|
63
|
-
return `${apiBaseUrl
|
|
66
|
+
return `${trimTrailing(apiBaseUrl, "/")}/webhook/slack/${channelAppId}`;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
/**
|
|
@@ -77,7 +80,7 @@ export function slackChannelAppRedirectUrl(consoleOrigin?: string): string {
|
|
|
77
80
|
const origin =
|
|
78
81
|
consoleOrigin ??
|
|
79
82
|
(typeof window !== "undefined" ? window.location.origin : "");
|
|
80
|
-
return `${origin
|
|
83
|
+
return `${trimTrailing(origin, "/")}/oauth/slack/callback`;
|
|
81
84
|
}
|
|
82
85
|
|
|
83
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 —
|
|
@@ -36,14 +37,16 @@ export const WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS = ["messages"] as const;
|
|
|
36
37
|
* The events webhook URL for one ChannelApp: the per-app route the
|
|
37
38
|
* receiver resolves the app's secret and verify token by.
|
|
38
39
|
*
|
|
39
|
-
* @param apiBaseUrl the
|
|
40
|
+
* @param apiBaseUrl the server's public base URL, absolute (the one
|
|
41
|
+
* `StigmerProvider`'s `publicBaseUrl` names, or the
|
|
42
|
+
* client's `baseUrl` when that is absolute)
|
|
40
43
|
* @param channelAppId the ChannelApp resource id (`chapp_...`)
|
|
41
44
|
*/
|
|
42
45
|
export function whatsappChannelAppWebhookUrl(
|
|
43
46
|
apiBaseUrl: string,
|
|
44
47
|
channelAppId: string,
|
|
45
48
|
): string {
|
|
46
|
-
return `${apiBaseUrl
|
|
49
|
+
return `${trimTrailing(apiBaseUrl, "/")}/webhook/whatsapp/${channelAppId}`;
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
/**
|
|
@@ -39,11 +39,7 @@ import { FileReferenceChipList } from "../file-reference/FileReferenceChipList.j
|
|
|
39
39
|
import { FILE_REF_MIME } from "../internal/file-tree/index.js";
|
|
40
40
|
import { useSessionEnvPool } from "../environment/useSessionEnvPool.js";
|
|
41
41
|
import { usePersonalEnvironment } from "../environment/usePersonalEnvironment.js";
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
SYSTEM_ENV_VAR_KEYS,
|
|
45
|
-
resolveSystemEnvVarValues,
|
|
46
|
-
} from "../environment/systemEnvVars.js";
|
|
42
|
+
import { SYSTEM_ENV_VAR_KEYS } from "../environment/systemEnvVars.js";
|
|
47
43
|
import { useRenderTracer } from "../internal/dev/index.js";
|
|
48
44
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
49
45
|
import {
|
|
@@ -714,8 +710,6 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
|
|
|
714
710
|
[personalEnv.environment],
|
|
715
711
|
);
|
|
716
712
|
|
|
717
|
-
const stigmer = useStigmer();
|
|
718
|
-
|
|
719
713
|
const pool = useSessionEnvPool({
|
|
720
714
|
personalEnvKeys,
|
|
721
715
|
manualSecrets: sessionVariables?.entries,
|
|
@@ -1025,14 +1019,11 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
|
|
|
1025
1019
|
}
|
|
1026
1020
|
}
|
|
1027
1021
|
|
|
1022
|
+
// Only what the page collected for this run: the platform's own keys
|
|
1023
|
+
// are filled in the runner, below every value a user saved
|
|
1024
|
+
// (systemEnvVars.ts header, stigmer/stigmer#1446).
|
|
1028
1025
|
const env: Record<string, EnvVarInput> = {};
|
|
1029
1026
|
|
|
1030
|
-
// System env vars first (lowest priority) — auto-resolved from
|
|
1031
|
-
// the Stigmer client's connection context so MCP servers and
|
|
1032
|
-
// agents can reach the backend without manual user input.
|
|
1033
|
-
const systemVars = await resolveSystemEnvVarValues(stigmer);
|
|
1034
|
-
Object.assign(env, systemVars);
|
|
1035
|
-
|
|
1036
1027
|
if (
|
|
1037
1028
|
agentSetup.state.status === "ready" &&
|
|
1038
1029
|
agentSetup.state.resolution.mode === "oneTime"
|
|
@@ -1108,7 +1099,7 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
|
|
|
1108
1099
|
fileRefs.clear();
|
|
1109
1100
|
}
|
|
1110
1101
|
},
|
|
1111
|
-
[onSubmit, effective,
|
|
1102
|
+
[onSubmit, effective, agentSetup.state, mcpSetup.pendingRuntimeEnv, sessionVariables, enableAttachments, attachments, personalEnv, showInteractionModePicker, interactionMode],
|
|
1112
1103
|
);
|
|
1113
1104
|
|
|
1114
1105
|
const composer = useComposer({
|
|
@@ -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);
|
|
@@ -17,10 +17,8 @@ import type { DashboardSummary } from "./types.js";
|
|
|
17
17
|
|
|
18
18
|
/** Options for {@link useDashboardSummary}. */
|
|
19
19
|
export interface UseDashboardSummaryOptions {
|
|
20
|
-
/**
|
|
20
|
+
/** The organization whose execution summaries and usage report to read. */
|
|
21
21
|
readonly org: string | null | undefined;
|
|
22
|
-
/** Organization ID (metadata.id) for the usage report. */
|
|
23
|
-
readonly orgId: string | null | undefined;
|
|
24
22
|
/** Refetch interval in milliseconds. @default 60_000 */
|
|
25
23
|
readonly refetchInterval?: number;
|
|
26
24
|
}
|
|
@@ -66,7 +64,7 @@ export function useDashboardSummary(
|
|
|
66
64
|
|
|
67
65
|
const dateRange = useMemo(() => dateRangeFromPreset("7d"), []);
|
|
68
66
|
const { report: orgUsage, isLoading: usageLoading, error: usageError, refetch: usageRefetch } =
|
|
69
|
-
useOrgUsageReport(options.
|
|
67
|
+
useOrgUsageReport(options.org ?? null, dateRange);
|
|
70
68
|
|
|
71
69
|
const isLoading = wfLoading || agLoading || usageLoading;
|
|
72
70
|
const error = wfError ?? agError ?? usageError;
|
|
@@ -10,6 +10,7 @@ import { EditResourceYamlDialog } from "../manifest/EditResourceYamlDialog.js";
|
|
|
10
10
|
import { useEnvironmentList } from "./useEnvironmentList.js";
|
|
11
11
|
import { EnvironmentVariableEditor } from "./EnvironmentVariableEditor.js";
|
|
12
12
|
import { isShareRestrictedEnvironment } from "./shareRestriction.js";
|
|
13
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
13
14
|
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Public API
|
|
@@ -132,10 +133,9 @@ export function EnvironmentListPanel({
|
|
|
132
133
|
|
|
133
134
|
if (isLoading) {
|
|
134
135
|
return (
|
|
135
|
-
<
|
|
136
|
+
<LoadingRegion
|
|
136
137
|
className={cn("stg:space-y-2", className)}
|
|
137
|
-
|
|
138
|
-
aria-label="Loading environments"
|
|
138
|
+
label="Loading environments"
|
|
139
139
|
>
|
|
140
140
|
{Array.from({ length: 2 }, (_, i) => (
|
|
141
141
|
<div
|
|
@@ -143,7 +143,7 @@ export function EnvironmentListPanel({
|
|
|
143
143
|
className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
|
|
144
144
|
/>
|
|
145
145
|
))}
|
|
146
|
-
</
|
|
146
|
+
</LoadingRegion>
|
|
147
147
|
);
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -18,6 +18,7 @@ import { useUpdateEnvironmentVariables } from "./useUpdateEnvironmentVariables.j
|
|
|
18
18
|
import { useRemoveEnvironmentVariables } from "./useRemoveEnvironmentVariables.js";
|
|
19
19
|
import { useRevealSecretValue } from "./useRevealSecretValue.js";
|
|
20
20
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
21
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
21
22
|
|
|
22
23
|
// ---------------------------------------------------------------------------
|
|
23
24
|
// Public API
|
|
@@ -152,10 +153,9 @@ export function EnvironmentVariableEditor({
|
|
|
152
153
|
|
|
153
154
|
if (isLoading) {
|
|
154
155
|
return (
|
|
155
|
-
<
|
|
156
|
+
<LoadingRegion
|
|
156
157
|
className={cn("stg:space-y-2", className)}
|
|
157
|
-
|
|
158
|
-
aria-label="Loading variables"
|
|
158
|
+
label="Loading variables"
|
|
159
159
|
>
|
|
160
160
|
{Array.from({ length: 3 }, (_, i) => (
|
|
161
161
|
<div
|
|
@@ -164,7 +164,7 @@ export function EnvironmentVariableEditor({
|
|
|
164
164
|
style={{ width: `${85 - i * 10}%` }}
|
|
165
165
|
/>
|
|
166
166
|
))}
|
|
167
|
-
</
|
|
167
|
+
</LoadingRegion>
|
|
168
168
|
);
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -586,7 +586,7 @@ function AddVariableForm({
|
|
|
586
586
|
checked={isSecret}
|
|
587
587
|
onChange={(e) => setIsSecret(e.target.checked)}
|
|
588
588
|
disabled={isAdding}
|
|
589
|
-
className="stg:
|
|
589
|
+
className="stg:size-3"
|
|
590
590
|
/>
|
|
591
591
|
Secret
|
|
592
592
|
</label>
|
package/src/environment/index.ts
CHANGED
|
@@ -41,13 +41,7 @@ export type {
|
|
|
41
41
|
SessionEnvPoolInput,
|
|
42
42
|
UseSessionEnvPoolReturn,
|
|
43
43
|
} from "./useSessionEnvPool.js";
|
|
44
|
-
export {
|
|
45
|
-
SYSTEM_ENV_VAR_KEYS,
|
|
46
|
-
toGrpcAddress,
|
|
47
|
-
buildSystemEnvVars,
|
|
48
|
-
resolveSystemEnvVarValues,
|
|
49
|
-
resolveDeclaredSystemEnvVars,
|
|
50
|
-
} from "./systemEnvVars.js";
|
|
44
|
+
export { SYSTEM_ENV_VAR_KEYS } from "./systemEnvVars.js";
|
|
51
45
|
export { EnvironmentPicker } from "./EnvironmentPicker.js";
|
|
52
46
|
export type { EnvironmentPickerProps } from "./EnvironmentPicker.js";
|
|
53
47
|
export { useToolCredentialsReadiness } from "./useToolCredentialsReadiness.js";
|
|
@@ -1,143 +1,31 @@
|
|
|
1
|
-
import type { EnvVarInput, Stigmer } from "@stigmer/sdk";
|
|
2
|
-
|
|
3
1
|
// ---------------------------------------------------------------------------
|
|
4
2
|
// Well-known Stigmer platform environment variable keys
|
|
5
3
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
4
|
+
// A platform value comes from the component that knows it, fills only a key
|
|
5
|
+
// that is still missing, and reaches only a server that declares it
|
|
6
|
+
// (stigmer/stigmer#1446). The page is not that component for any key, so
|
|
7
|
+
// this SDK supplies none: a value it wrote into a run's runtime env would
|
|
8
|
+
// sit in the top merge layer, above every value a user saved, and a run
|
|
9
|
+
// whose agent declares no env would carry it into the agent's shell.
|
|
10
|
+
//
|
|
11
|
+
// STIGMER_SERVER_ADDRESS is the one key the platform fills. The runner
|
|
12
|
+
// writes it for a server that declares it and holds no value: from the
|
|
13
|
+
// server's public address, which the server hands every sandbox it
|
|
14
|
+
// provisions, or for a stdio child from the endpoint the runner dials
|
|
15
|
+
// itself (backend/services/runner, the platform-server-address module).
|
|
16
|
+
//
|
|
17
|
+
// STIGMER_API_KEY is not a platform key. A server that calls the Stigmer
|
|
18
|
+
// API declares it like any other secret, and its user saves an API key for
|
|
19
|
+
// it; nothing hands a user-defined server the signed-in user's bearer.
|
|
11
20
|
// ---------------------------------------------------------------------------
|
|
12
21
|
|
|
13
|
-
const STIGMER_SERVER_ADDRESS = "STIGMER_SERVER_ADDRESS";
|
|
14
|
-
const STIGMER_API_KEY = "STIGMER_API_KEY";
|
|
15
|
-
|
|
16
22
|
/**
|
|
17
|
-
* Environment variable keys
|
|
18
|
-
*
|
|
23
|
+
* Environment variable keys the platform fills itself, so the setup hooks
|
|
24
|
+
* never prompt a user for them and the credential forms never ask for them.
|
|
19
25
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* values into runtime env at submit time.
|
|
23
|
-
*
|
|
24
|
-
* Platform builders who manage setup hooks directly can use this
|
|
25
|
-
* set to extend their own `poolKeys`.
|
|
26
|
+
* Platform builders who manage setup hooks directly can use this set to
|
|
27
|
+
* extend their own `poolKeys`.
|
|
26
28
|
*/
|
|
27
29
|
export const SYSTEM_ENV_VAR_KEYS: ReadonlySet<string> = new Set([
|
|
28
|
-
STIGMER_SERVER_ADDRESS,
|
|
29
|
-
STIGMER_API_KEY,
|
|
30
|
+
"STIGMER_SERVER_ADDRESS",
|
|
30
31
|
]);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Convert an HTTP(S) base URL to a gRPC host:port address.
|
|
34
|
-
*
|
|
35
|
-
* The Stigmer server serves both gRPC and gRPC-Web on the same
|
|
36
|
-
* endpoint, so stripping the protocol and extracting host:port
|
|
37
|
-
* produces a valid gRPC dial target.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* toGrpcAddress("http://localhost:7234") // "localhost:7234"
|
|
42
|
-
* toGrpcAddress("https://api.stigmer.ai") // "api.stigmer.ai:443"
|
|
43
|
-
* toGrpcAddress("https://api.stigmer.ai:8443") // "api.stigmer.ai:8443"
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
export function toGrpcAddress(httpUrl: string): string {
|
|
47
|
-
try {
|
|
48
|
-
const url = new URL(httpUrl);
|
|
49
|
-
const host = url.hostname;
|
|
50
|
-
const port =
|
|
51
|
-
url.port || (url.protocol === "https:" ? "443" : "80");
|
|
52
|
-
return `${host}:${port}`;
|
|
53
|
-
} catch {
|
|
54
|
-
return httpUrl;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Build system env var entries from raw connection parameters.
|
|
60
|
-
*
|
|
61
|
-
* Pure function — no side effects, no async. Suitable for unit
|
|
62
|
-
* testing without a live Stigmer client.
|
|
63
|
-
*
|
|
64
|
-
* @param baseUrl - The Stigmer client's base URL (HTTP).
|
|
65
|
-
* @param credential - Current auth credential, or `null` for
|
|
66
|
-
* unauthenticated (OSS) backends. When `null`, a placeholder
|
|
67
|
-
* value is used so the MCP server env var is always populated.
|
|
68
|
-
*/
|
|
69
|
-
export function buildSystemEnvVars(
|
|
70
|
-
baseUrl: string,
|
|
71
|
-
credential: string | null,
|
|
72
|
-
): Record<string, EnvVarInput> {
|
|
73
|
-
return {
|
|
74
|
-
[STIGMER_SERVER_ADDRESS]: {
|
|
75
|
-
value: toGrpcAddress(baseUrl),
|
|
76
|
-
isSecret: false,
|
|
77
|
-
description:
|
|
78
|
-
"Auto-resolved from the current Stigmer connection.",
|
|
79
|
-
},
|
|
80
|
-
[STIGMER_API_KEY]: {
|
|
81
|
-
value: credential || "unused",
|
|
82
|
-
isSecret: true,
|
|
83
|
-
description:
|
|
84
|
-
"Auto-resolved from the current Stigmer auth context.",
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Resolve system env var values from a live {@link Stigmer} client.
|
|
91
|
-
*
|
|
92
|
-
* Calls {@link Stigmer.getAuthCredential} to obtain the current
|
|
93
|
-
* credential, then delegates to {@link buildSystemEnvVars}.
|
|
94
|
-
*
|
|
95
|
-
* Intended for use at session submit time — the returned values
|
|
96
|
-
* are injected into `runtimeEnv` at the **lowest priority** so
|
|
97
|
-
* any user-provided values (personal env, manual secrets) win.
|
|
98
|
-
*/
|
|
99
|
-
export async function resolveSystemEnvVarValues(
|
|
100
|
-
stigmer: Stigmer,
|
|
101
|
-
): Promise<Record<string, EnvVarInput>> {
|
|
102
|
-
const credential = await stigmer.getAuthCredential();
|
|
103
|
-
return buildSystemEnvVars(stigmer.baseUrl, credential);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Resolve only the system env vars that the target resource actually
|
|
108
|
-
* declares in its environment specification.
|
|
109
|
-
*
|
|
110
|
-
* System vars (`STIGMER_SERVER_ADDRESS`, `STIGMER_API_KEY`) should
|
|
111
|
-
* only be injected when the resource needs them — blindly injecting
|
|
112
|
-
* them causes `runtime_env` to be non-empty on the wire, which
|
|
113
|
-
* changes the backend's missing-credential tolerance semantics.
|
|
114
|
-
*
|
|
115
|
-
* @param stigmer - Live Stigmer client for credential resolution.
|
|
116
|
-
* @param declaredEnvKeys - The set of env var keys the target
|
|
117
|
-
* resource declares (e.g., `Object.keys(mcpServer.spec.env)`).
|
|
118
|
-
* Only system vars whose keys appear here are included.
|
|
119
|
-
* @returns Filtered system env vars (may be empty).
|
|
120
|
-
*/
|
|
121
|
-
export async function resolveDeclaredSystemEnvVars(
|
|
122
|
-
stigmer: Stigmer,
|
|
123
|
-
declaredEnvKeys: ReadonlySet<string> | readonly string[],
|
|
124
|
-
): Promise<Record<string, EnvVarInput>> {
|
|
125
|
-
const keys =
|
|
126
|
-
declaredEnvKeys instanceof Set
|
|
127
|
-
? declaredEnvKeys
|
|
128
|
-
: new Set(declaredEnvKeys);
|
|
129
|
-
|
|
130
|
-
const hasDeclared = [...SYSTEM_ENV_VAR_KEYS].some((k) => keys.has(k));
|
|
131
|
-
if (!hasDeclared) {
|
|
132
|
-
return {};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const all = await resolveSystemEnvVarValues(stigmer);
|
|
136
|
-
const filtered: Record<string, EnvVarInput> = {};
|
|
137
|
-
for (const [key, value] of Object.entries(all)) {
|
|
138
|
-
if (keys.has(key)) {
|
|
139
|
-
filtered[key] = value;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return filtered;
|
|
143
|
-
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// unavailable / text). Domain: execution (data-model-agnostic).
|
|
5
5
|
|
|
6
6
|
import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
|
|
7
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
7
8
|
|
|
8
9
|
/** Props for {@link ArtifactFileContent}. */
|
|
9
10
|
export interface ArtifactFileContentProps {
|
|
@@ -44,7 +45,7 @@ export function ArtifactFileContent({
|
|
|
44
45
|
}: ArtifactFileContentProps) {
|
|
45
46
|
if (isLoading) {
|
|
46
47
|
return (
|
|
47
|
-
<
|
|
48
|
+
<LoadingRegion className="stg:space-y-2 stg:p-4" label="Loading content">
|
|
48
49
|
{SKELETON_LINE_WIDTHS.map((width, i) => (
|
|
49
50
|
<div
|
|
50
51
|
key={i}
|
|
@@ -53,7 +54,7 @@ export function ArtifactFileContent({
|
|
|
53
54
|
aria-hidden="true"
|
|
54
55
|
/>
|
|
55
56
|
))}
|
|
56
|
-
</
|
|
57
|
+
</LoadingRegion>
|
|
57
58
|
);
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -19,6 +19,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
|
|
|
19
19
|
import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
|
|
20
20
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
21
21
|
import { useToolOutputContent } from "./useToolOutputContent.js";
|
|
22
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
22
23
|
|
|
23
24
|
/** Props for {@link McpToolDetail}. */
|
|
24
25
|
export interface McpToolDetailProps {
|
|
@@ -115,10 +116,9 @@ function McpOffloadedImage({ storageKey }: { readonly storageKey: string }) {
|
|
|
115
116
|
}
|
|
116
117
|
if (!url) {
|
|
117
118
|
return (
|
|
118
|
-
<
|
|
119
|
+
<LoadingRegion
|
|
119
120
|
className="stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted"
|
|
120
|
-
|
|
121
|
-
aria-label="Loading image output"
|
|
121
|
+
label="Loading image output"
|
|
122
122
|
/>
|
|
123
123
|
);
|
|
124
124
|
}
|
|
@@ -90,7 +90,7 @@ export const RecalledMemoriesCard = memo(function RecalledMemoriesCard({
|
|
|
90
90
|
onClick={() => setExpanded((prev) => !prev)}
|
|
91
91
|
className={cn(
|
|
92
92
|
"stg:flex stg:w-full stg:items-center stg:gap-3 stg:px-3 stg:py-2 stg:text-left",
|
|
93
|
-
"stg:text-xs stg:text-muted-foreground hover:
|
|
93
|
+
"stg:text-xs stg:text-muted-foreground stg:hover:text-foreground",
|
|
94
94
|
)}
|
|
95
95
|
>
|
|
96
96
|
<MemoryIcon />
|
|
@@ -25,6 +25,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
|
|
|
25
25
|
import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
|
|
26
26
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
27
27
|
import { useToolOutputContent } from "./useToolOutputContent.js";
|
|
28
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
28
29
|
|
|
29
30
|
/** Props for {@link ResultView}. */
|
|
30
31
|
export interface ResultViewProps {
|
|
@@ -509,10 +510,9 @@ function OutputRefImage({ storageKey, className }: { storageKey: string; classNa
|
|
|
509
510
|
}
|
|
510
511
|
if (!url) {
|
|
511
512
|
return (
|
|
512
|
-
<
|
|
513
|
+
<LoadingRegion
|
|
513
514
|
className={cn("stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted", className)}
|
|
514
|
-
|
|
515
|
-
aria-label="Loading image output"
|
|
515
|
+
label="Loading image output"
|
|
516
516
|
/>
|
|
517
517
|
);
|
|
518
518
|
}
|
|
@@ -128,7 +128,7 @@ export function TerminalTail({
|
|
|
128
128
|
const combined = [stdout, stderr]
|
|
129
129
|
.filter((s): s is string => Boolean(s))
|
|
130
130
|
.join("\n")
|
|
131
|
-
.
|
|
131
|
+
.trimEnd();
|
|
132
132
|
const lines = combined ? normalize(combined).split("\n") : [];
|
|
133
133
|
const tail = lines.slice(-TAIL_LINE_LIMIT);
|
|
134
134
|
const hiddenCount = lines.length - tail.length;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { LoadingRegion } from "../internal/LoadingRegion.js";
|
|
4
5
|
|
|
5
6
|
/** Props for {@link ThreadSkeleton}. */
|
|
6
7
|
export interface ThreadSkeletonProps {
|
|
@@ -30,10 +31,9 @@ const AI_LINE_WIDTHS = [
|
|
|
30
31
|
*/
|
|
31
32
|
export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
|
|
32
33
|
return (
|
|
33
|
-
<
|
|
34
|
+
<LoadingRegion
|
|
34
35
|
className={cn("stg:flex stg:flex-col stg:gap-4 stg:pt-6 stg:pb-4", className)}
|
|
35
|
-
|
|
36
|
-
aria-label="Loading conversation"
|
|
36
|
+
label="Loading conversation"
|
|
37
37
|
>
|
|
38
38
|
<div className="stg:animate-pulse stg:space-y-4">
|
|
39
39
|
{/* Turn 1: Human bubble */}
|
|
@@ -68,6 +68,6 @@ export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
|
|
|
68
68
|
))}
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
|
-
</
|
|
71
|
+
</LoadingRegion>
|
|
72
72
|
);
|
|
73
73
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
2
|
+
import { trimTrailing } from "../internal/trim.js";
|
|
2
3
|
|
|
3
4
|
const PLATFORM_PREFIX = ".stigmer/";
|
|
4
5
|
const PLATFORM_DIR_NAME = ".stigmer";
|
|
@@ -71,7 +72,7 @@ export interface DisplayPath {
|
|
|
71
72
|
*/
|
|
72
73
|
export function splitDisplayPath(path: string): DisplayPath {
|
|
73
74
|
if (!path) return { dir: "", base: "" };
|
|
74
|
-
const trimmed = path
|
|
75
|
+
const trimmed = trimTrailing(path, "/");
|
|
75
76
|
const idx = trimmed.lastIndexOf("/");
|
|
76
77
|
if (idx < 0) return { dir: "", base: trimmed };
|
|
77
78
|
const base = trimmed.slice(idx + 1);
|
|
@@ -239,7 +240,7 @@ function matchWorkspaceEntry(
|
|
|
239
240
|
|
|
240
241
|
function joinLocalPath(base: string, rel: string): string {
|
|
241
242
|
if (!rel) return base;
|
|
242
|
-
const cleanBase = base
|
|
243
|
+
const cleanBase = trimTrailing(base, "/");
|
|
243
244
|
const cleanRel = rel.replace(/^\/+/, "");
|
|
244
245
|
return `${cleanBase}/${cleanRel}`;
|
|
245
246
|
}
|