@stigmer/react 3.12.3 → 3.12.5
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/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +2 -1
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.js +2 -1
- package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +2 -1
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/attachment/AttachmentChipList.js +16 -6
- package/attachment/AttachmentChipList.js.map +1 -1
- package/attachment/index.d.ts +1 -1
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js.map +1 -1
- package/attachment/useAttachments.d.ts +51 -8
- package/attachment/useAttachments.d.ts.map +1 -1
- package/attachment/useAttachments.js +74 -3
- package/attachment/useAttachments.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +2 -1
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +2 -1
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +2 -1
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/connect/ServingAppSection.d.ts.map +1 -1
- package/channel/connect/ServingAppSection.js +2 -1
- package/channel/connect/ServingAppSection.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +2 -1
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +17 -10
- package/composer/SessionComposer.js.map +1 -1
- package/conversation/ConversationComposer.d.ts +19 -3
- package/conversation/ConversationComposer.d.ts.map +1 -1
- package/conversation/ConversationComposer.js +4 -4
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +2 -1
- package/conversation/ConversationListPane.js.map +1 -1
- package/conversation/ConversationTemplatePickerDialog.d.ts +63 -0
- package/conversation/ConversationTemplatePickerDialog.d.ts.map +1 -0
- package/conversation/ConversationTemplatePickerDialog.js +151 -0
- package/conversation/ConversationTemplatePickerDialog.js.map +1 -0
- package/conversation/ConversationTimelineView.d.ts.map +1 -1
- package/conversation/ConversationTimelineView.js +2 -1
- package/conversation/ConversationTimelineView.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +16 -5
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/conversation/index.d.ts +3 -1
- package/conversation/index.d.ts.map +1 -1
- package/conversation/index.js +1 -0
- package/conversation/index.js.map +1 -1
- package/conversation/useConversationParticipation.d.ts +41 -4
- package/conversation/useConversationParticipation.d.ts.map +1 -1
- package/conversation/useConversationParticipation.js +13 -2
- package/conversation/useConversationParticipation.js.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +2 -1
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -1
- package/cursor-accounts/MemberKeysPanel.js +2 -1
- package/cursor-accounts/MemberKeysPanel.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -1
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/dependency-graph/DependencyGraph.d.ts.map +1 -1
- package/dependency-graph/DependencyGraph.js +2 -1
- package/dependency-graph/DependencyGraph.js.map +1 -1
- package/dependency-graph/DependencyTreeNode.d.ts.map +1 -1
- package/dependency-graph/DependencyTreeNode.js +2 -1
- package/dependency-graph/DependencyTreeNode.js.map +1 -1
- package/environment/EnvironmentPicker.d.ts.map +1 -1
- package/environment/EnvironmentPicker.js +2 -1
- package/environment/EnvironmentPicker.js.map +1 -1
- package/error/SecretFlowErrorGuide.d.ts.map +1 -1
- package/error/SecretFlowErrorGuide.js +2 -1
- package/error/SecretFlowErrorGuide.js.map +1 -1
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +2 -1
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactsWidget.d.ts.map +1 -1
- package/execution/ArtifactsWidget.js +2 -1
- package/execution/ArtifactsWidget.js.map +1 -1
- package/execution/FileChangeProgressBar.d.ts.map +1 -1
- package/execution/FileChangeProgressBar.js +2 -1
- package/execution/FileChangeProgressBar.js.map +1 -1
- package/execution/TodoList.d.ts.map +1 -1
- package/execution/TodoList.js +2 -1
- package/execution/TodoList.js.map +1 -1
- package/execution/WriteBacksWidget.d.ts.map +1 -1
- package/execution/WriteBacksWidget.js +2 -1
- package/execution/WriteBacksWidget.js.map +1 -1
- package/execution/tool-categories.d.ts +5 -22
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +8 -38
- package/execution/tool-categories.js.map +1 -1
- package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
- package/iam-policy/PeopleWithAccess.js +2 -1
- package/iam-policy/PeopleWithAccess.js.map +1 -1
- package/iam-policy/PrincipalPicker.d.ts.map +1 -1
- package/iam-policy/PrincipalPicker.js +2 -1
- package/iam-policy/PrincipalPicker.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +2 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-account/AccountPreferencesPanel.d.ts +35 -0
- package/identity-account/AccountPreferencesPanel.d.ts.map +1 -0
- package/identity-account/AccountPreferencesPanel.js +187 -0
- package/identity-account/AccountPreferencesPanel.js.map +1 -0
- package/identity-account/index.d.ts +8 -0
- package/identity-account/index.d.ts.map +1 -1
- package/identity-account/index.js +4 -0
- package/identity-account/index.js.map +1 -1
- package/identity-account/useAccountExecutionDefaults.d.ts +36 -0
- package/identity-account/useAccountExecutionDefaults.d.ts.map +1 -0
- package/identity-account/useAccountExecutionDefaults.js +46 -0
- package/identity-account/useAccountExecutionDefaults.js.map +1 -0
- package/identity-account/useMyIdentityAccount.d.ts +55 -0
- package/identity-account/useMyIdentityAccount.d.ts.map +1 -0
- package/identity-account/useMyIdentityAccount.js +37 -0
- package/identity-account/useMyIdentityAccount.js.map +1 -0
- package/identity-account/useUpdateIdentityAccount.d.ts +42 -0
- package/identity-account/useUpdateIdentityAccount.d.ts.map +1 -0
- package/identity-account/useUpdateIdentityAccount.js +53 -0
- package/identity-account/useUpdateIdentityAccount.js.map +1 -0
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +2 -1
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +2 -1
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +2 -1
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/index.d.ts +14 -10
- package/index.d.ts.map +1 -1
- package/index.js +11 -5
- package/index.js.map +1 -1
- package/internal/StandingContextField.d.ts +37 -0
- package/internal/StandingContextField.d.ts.map +1 -0
- package/internal/StandingContextField.js +24 -0
- package/internal/StandingContextField.js.map +1 -0
- package/internal/element-resets.d.ts +17 -0
- package/internal/element-resets.d.ts.map +1 -0
- package/internal/element-resets.js +32 -0
- package/internal/element-resets.js.map +1 -0
- package/internal/file-tree/FileTreeNode.d.ts.map +1 -1
- package/internal/file-tree/FileTreeNode.js +2 -1
- package/internal/file-tree/FileTreeNode.js.map +1 -1
- package/internal/markdown-components.d.ts +7 -0
- package/internal/markdown-components.d.ts.map +1 -1
- package/internal/markdown-components.js +15 -5
- package/internal/markdown-components.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +2 -1
- package/invitation/InvitationManager.js.map +1 -1
- package/library/InstanceVisibilitySelector.d.ts.map +1 -1
- package/library/InstanceVisibilitySelector.js +9 -2
- package/library/InstanceVisibilitySelector.js.map +1 -1
- package/library/ResourceVisibilityControl.d.ts +13 -3
- package/library/ResourceVisibilityControl.d.ts.map +1 -1
- package/library/ResourceVisibilityControl.js +33 -5
- package/library/ResourceVisibilityControl.js.map +1 -1
- package/library/VisibilityOptionRow.d.ts +6 -0
- package/library/VisibilityOptionRow.d.ts.map +1 -1
- package/library/VisibilityOptionRow.js +11 -1
- package/library/VisibilityOptionRow.js.map +1 -1
- package/library/VisibilitySelector.d.ts.map +1 -1
- package/library/VisibilitySelector.js +14 -2
- package/library/VisibilitySelector.js.map +1 -1
- package/library/index.d.ts +4 -2
- package/library/index.d.ts.map +1 -1
- package/library/index.js +2 -1
- package/library/index.js.map +1 -1
- package/library/useCanSetPublicVisibility.d.ts +30 -0
- package/library/useCanSetPublicVisibility.d.ts.map +1 -0
- package/library/useCanSetPublicVisibility.js +41 -0
- package/library/useCanSetPublicVisibility.js.map +1 -0
- package/library/visibilityLevels.d.ts +32 -1
- package/library/visibilityLevels.d.ts.map +1 -1
- package/library/visibilityLevels.js +34 -14
- package/library/visibilityLevels.js.map +1 -1
- package/manifest/ApplyManifestDialog.d.ts.map +1 -1
- package/manifest/ApplyManifestDialog.js +2 -1
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +2 -1
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +8 -5
- package/mcp-server/useMcpServerConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerConnect.js +2 -1
- package/mcp-server/useMcpServerConnect.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +7 -2
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts +2 -2
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +13 -4
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +32 -5
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/OrgPreferencesPanel.d.ts +32 -0
- package/organization/OrgPreferencesPanel.d.ts.map +1 -0
- package/organization/OrgPreferencesPanel.js +90 -0
- package/organization/OrgPreferencesPanel.js.map +1 -0
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +5 -4
- package/organization/OrgProfilePanel.js.map +1 -1
- package/organization/index.d.ts +2 -0
- package/organization/index.d.ts.map +1 -1
- package/organization/index.js +1 -0
- package/organization/index.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +2 -1
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +2 -1
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/pricing-governance/BaselineEditor.d.ts.map +1 -1
- package/pricing-governance/BaselineEditor.js +2 -1
- package/pricing-governance/BaselineEditor.js.map +1 -1
- package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -1
- package/pricing-governance/PricingGovernanceConsole.js +2 -1
- package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
- package/provider-standing/ProviderStandingAccessNotice.d.ts +11 -0
- package/provider-standing/ProviderStandingAccessNotice.d.ts.map +1 -0
- package/provider-standing/ProviderStandingAccessNotice.js +14 -0
- package/provider-standing/ProviderStandingAccessNotice.js.map +1 -0
- package/provider-standing/ProviderStandingConsole.d.ts +24 -0
- package/provider-standing/ProviderStandingConsole.d.ts.map +1 -0
- package/provider-standing/ProviderStandingConsole.js +98 -0
- package/provider-standing/ProviderStandingConsole.js.map +1 -0
- package/provider-standing/index.d.ts +6 -0
- package/provider-standing/index.d.ts.map +1 -0
- package/provider-standing/index.js +6 -0
- package/provider-standing/index.js.map +1 -0
- package/provider-standing/useProviderStanding.d.ts +34 -0
- package/provider-standing/useProviderStanding.d.ts.map +1 -0
- package/provider-standing/useProviderStanding.js +26 -0
- package/provider-standing/useProviderStanding.js.map +1 -0
- package/provider.d.ts +12 -0
- package/provider.d.ts.map +1 -1
- package/provider.js +12 -0
- package/provider.js.map +1 -1
- package/resource-creation/StepIndicator.d.ts.map +1 -1
- package/resource-creation/StepIndicator.js +2 -1
- package/resource-creation/StepIndicator.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +3 -2
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleRunsTable.d.ts.map +1 -1
- package/schedule/ScheduleRunsTable.js +2 -1
- package/schedule/ScheduleRunsTable.js.map +1 -1
- package/session/NewSessionViewer.d.ts +10 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +2 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/facets/ArtifactsTab.d.ts.map +1 -1
- package/session/facets/ArtifactsTab.js +2 -1
- package/session/facets/ArtifactsTab.js.map +1 -1
- package/session/facets/ChangesTab.d.ts.map +1 -1
- package/session/facets/ChangesTab.js +2 -1
- package/session/facets/ChangesTab.js.map +1 -1
- package/session/facets/UsageTab.d.ts +10 -3
- package/session/facets/UsageTab.d.ts.map +1 -1
- package/session/facets/UsageTab.js +42 -6
- package/session/facets/UsageTab.js.map +1 -1
- package/session/index.d.ts +1 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/useNewSessionFlow.d.ts +27 -1
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +45 -8
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionUsage.d.ts +25 -0
- package/session/useSessionUsage.d.ts.map +1 -1
- package/session/useSessionUsage.js +11 -0
- package/session/useSessionUsage.js.map +1 -1
- package/settings/AccountPreferencesSection.d.ts +3 -0
- package/settings/AccountPreferencesSection.d.ts.map +1 -0
- package/settings/AccountPreferencesSection.js +10 -0
- package/settings/AccountPreferencesSection.js.map +1 -0
- package/settings/OrgPreferencesSection.d.ts +3 -0
- package/settings/OrgPreferencesSection.d.ts.map +1 -0
- package/settings/OrgPreferencesSection.js +13 -0
- package/settings/OrgPreferencesSection.js.map +1 -0
- package/settings/index.d.ts +2 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +2 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +23 -1
- package/settings/settings-nav.js.map +1 -1
- package/settings/useSettingsNavGroups.d.ts.map +1 -1
- package/settings/useSettingsNavGroups.js +4 -1
- package/settings/useSettingsNavGroups.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/sidebar/WorkspaceSidebar.d.ts.map +1 -1
- package/sidebar/WorkspaceSidebar.js +2 -1
- package/sidebar/WorkspaceSidebar.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/skill/internal/fetchAndUnpackArtifact.d.ts +1 -1
- package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -1
- package/skill/internal/fetchAndUnpackArtifact.js +47 -3
- package/skill/internal/fetchAndUnpackArtifact.js.map +1 -1
- package/skill/useSkillDiff.d.ts.map +1 -1
- package/skill/useSkillDiff.js +7 -1
- package/skill/useSkillDiff.js.map +1 -1
- package/skill/useSkillUpload.d.ts.map +1 -1
- package/skill/useSkillUpload.js +22 -4
- package/skill/useSkillUpload.js.map +1 -1
- package/src/__tests__/bare-host-resets.layout.test.tsx +184 -0
- package/src/agent/steps/IdentityStep.tsx +2 -1
- package/src/agent-instance/AgentInstanceDetailPanel.tsx +2 -1
- package/src/api-key/CreateApiKeyForm.tsx +2 -1
- package/src/attachment/AttachmentChipList.tsx +19 -8
- package/src/attachment/__tests__/AttachmentChipList.test.tsx +12 -0
- package/src/attachment/__tests__/useAttachments.test.ts +293 -0
- package/src/attachment/index.ts +1 -0
- package/src/attachment/useAttachments.ts +143 -11
- package/src/channel/ChannelConversationsDialog.tsx +2 -1
- package/src/channel/ChannelTemplatesDialog.tsx +2 -1
- package/src/channel/ConnectSlackDialog.tsx +2 -1
- package/src/channel/connect/ServingAppSection.tsx +2 -1
- package/src/channel-app/CreateChannelAppForm.tsx +2 -1
- package/src/composer/SessionComposer.tsx +23 -14
- package/src/conversation/ConversationComposer.tsx +38 -4
- package/src/conversation/ConversationListPane.tsx +2 -5
- package/src/conversation/ConversationTemplatePickerDialog.tsx +441 -0
- package/src/conversation/ConversationTimelineView.tsx +2 -1
- package/src/conversation/ConversationsWorkbench.tsx +40 -4
- package/src/conversation/__tests__/ConversationComposer.test.tsx +56 -1
- package/src/conversation/__tests__/ConversationTemplatePickerDialog.test.tsx +224 -0
- package/src/conversation/__tests__/useConversationParticipation.test.tsx +45 -4
- package/src/conversation/index.ts +4 -0
- package/src/conversation/useConversationParticipation.ts +58 -6
- package/src/cursor-accounts/CursorAccountsConsole.tsx +2 -1
- package/src/cursor-accounts/MemberKeysPanel.tsx +2 -1
- package/src/dashboard/DashboardFailedRuns.tsx +2 -1
- package/src/dependency-graph/DependencyGraph.tsx +2 -1
- package/src/dependency-graph/DependencyTreeNode.tsx +2 -1
- package/src/environment/EnvironmentPicker.tsx +2 -1
- package/src/error/SecretFlowErrorGuide.tsx +3 -2
- package/src/execution/ArtifactContentBody.tsx +2 -1
- package/src/execution/ArtifactsWidget.tsx +2 -1
- package/src/execution/FileChangeProgressBar.tsx +2 -1
- package/src/execution/TodoList.tsx +2 -1
- package/src/execution/WriteBacksWidget.tsx +2 -1
- package/src/execution/tool-categories.ts +17 -41
- package/src/iam-policy/PeopleWithAccess.tsx +2 -1
- package/src/iam-policy/PrincipalPicker.tsx +2 -0
- package/src/iam-policy/RoleSelector.tsx +2 -1
- package/src/identity-account/AccountPreferencesPanel.tsx +446 -0
- package/src/identity-account/__tests__/AccountPreferencesPanel.test.tsx +233 -0
- package/src/identity-account/__tests__/useAccountExecutionDefaults.test.tsx +116 -0
- package/src/identity-account/__tests__/useMyIdentityAccount.test.tsx +121 -0
- package/src/identity-account/index.ts +11 -0
- package/src/identity-account/useAccountExecutionDefaults.ts +63 -0
- package/src/identity-account/useMyIdentityAccount.ts +75 -0
- package/src/identity-account/useUpdateIdentityAccount.ts +73 -0
- package/src/identity-provider/CreateIdentityProviderForm.tsx +2 -1
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +2 -1
- package/src/identity-provider/IdentityProviderWizard.tsx +2 -1
- package/src/index.ts +37 -2
- package/src/internal/StandingContextField.tsx +92 -0
- package/src/internal/element-resets.ts +33 -0
- package/src/internal/file-tree/FileTreeNode.tsx +2 -1
- package/src/internal/markdown-components.tsx +15 -5
- package/src/invitation/InvitationManager.tsx +3 -2
- package/src/library/InstanceVisibilitySelector.tsx +9 -2
- package/src/library/ResourceVisibilityControl.tsx +46 -13
- package/src/library/VisibilityOptionRow.tsx +28 -6
- package/src/library/VisibilitySelector.tsx +14 -2
- package/src/library/__tests__/VisibilitySelector.test.tsx +48 -1
- package/src/library/__tests__/visibilityLevels.test.ts +67 -1
- package/src/library/index.ts +6 -1
- package/src/library/useCanSetPublicVisibility.ts +56 -0
- package/src/library/visibilityLevels.ts +65 -14
- package/src/manifest/ApplyManifestDialog.tsx +2 -1
- package/src/mcp-server/__tests__/useMcpServerConnect.asyncLane.test.tsx +117 -0
- package/src/mcp-server/steps/IdentityTransportStep.tsx +3 -2
- package/src/mcp-server/useMcpServerConnect.ts +9 -6
- package/src/mcp-server/useMcpServerOAuthConnect.ts +7 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +58 -3
- package/src/oauth-app/OAuthAppDetailPanel.tsx +84 -3
- package/src/organization/OrgPreferencesPanel.tsx +221 -0
- package/src/organization/OrgProfilePanel.tsx +5 -4
- package/src/organization/__tests__/OrgPreferencesPanel.test.tsx +145 -0
- package/src/organization/__tests__/OrgProfilePanel.test.tsx +108 -0
- package/src/organization/index.ts +2 -0
- package/src/platform-client/CreatePlatformClientForm.tsx +4 -3
- package/src/platform-client/PlatformClientDetailPanel.tsx +4 -3
- package/src/pricing-governance/BaselineEditor.tsx +3 -2
- package/src/pricing-governance/PricingGovernanceConsole.tsx +2 -1
- package/src/provider-standing/ProviderStandingAccessNotice.tsx +36 -0
- package/src/provider-standing/ProviderStandingConsole.tsx +216 -0
- package/src/provider-standing/__tests__/ProviderStandingConsole.test.tsx +143 -0
- package/src/provider-standing/index.ts +8 -0
- package/src/provider-standing/useProviderStanding.ts +50 -0
- package/src/provider.tsx +12 -0
- package/src/resource-creation/StepIndicator.tsx +2 -1
- package/src/schedule/ScheduleDetailView.tsx +3 -2
- package/src/schedule/ScheduleRunsTable.tsx +2 -1
- package/src/session/NewSessionViewer.tsx +12 -0
- package/src/session/__tests__/UsageTab.test.tsx +136 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +151 -0
- package/src/session/__tests__/useSessionUsage.test.ts +19 -0
- package/src/session/facets/ArtifactsTab.tsx +2 -1
- package/src/session/facets/ChangesTab.tsx +2 -1
- package/src/session/facets/UsageTab.tsx +98 -6
- package/src/session/index.ts +1 -0
- package/src/session/useNewSessionFlow.ts +76 -9
- package/src/session/useSessionUsage.ts +37 -0
- package/src/settings/AccountPreferencesSection.tsx +25 -0
- package/src/settings/OrgPreferencesSection.tsx +35 -0
- package/src/settings/__tests__/settings-nav.test.ts +27 -0
- package/src/settings/__tests__/useSettingsNavGroups.test.tsx +11 -1
- package/src/settings/index.ts +2 -0
- package/src/settings/settings-nav.ts +25 -0
- package/src/settings/useSettingsNavGroups.ts +8 -1
- package/src/sharing/ShareAgentDialog.tsx +2 -1
- package/src/sidebar/WorkspaceSidebar.tsx +2 -1
- package/src/skill/SkillFileBrowser.tsx +2 -1
- package/src/skill/__tests__/SkillFileBrowser.test.tsx +10 -2
- package/src/skill/__tests__/fetchAndUnpackArtifact.test.ts +90 -0
- package/src/skill/__tests__/useSkillUpload.test.ts +69 -0
- package/src/skill/internal/fetchAndUnpackArtifact.ts +54 -4
- package/src/skill/useSkillDiff.ts +7 -1
- package/src/skill/useSkillUpload.ts +25 -6
- package/src/workflow/ApprovalFormBuilder.tsx +5 -27
- package/src/workflow/FailedRunsWidget.tsx +2 -1
- package/src/workflow/PendingApprovalsWidget.tsx +2 -1
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +2 -1
- package/src/workflow/facets/WorkflowUsageTab.tsx +2 -1
- package/src/workflow/inspector/WorkflowSummaryPanel.tsx +2 -1
- package/src/workflow/inspector/tabs/BranchesTab.tsx +2 -1
- package/src/workflow/inspector/tabs/IterationTab.tsx +2 -1
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workspace/ExplorerTree.tsx +2 -1
- package/src/workspace/WorkspaceContentSearch.tsx +2 -1
- package/src/workspace/WorkspaceFileSearch.tsx +2 -1
- package/src/workspace/WorkspaceSummary.tsx +2 -1
- package/styles.css +1 -1
- package/workflow/ApprovalFormBuilder.d.ts.map +1 -1
- package/workflow/ApprovalFormBuilder.js +8 -5
- package/workflow/ApprovalFormBuilder.js.map +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -1
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -1
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.js +2 -1
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -1
- package/workflow/facets/WorkflowUsageTab.js +2 -1
- package/workflow/facets/WorkflowUsageTab.js.map +1 -1
- package/workflow/inspector/WorkflowSummaryPanel.d.ts.map +1 -1
- package/workflow/inspector/WorkflowSummaryPanel.js +2 -1
- package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
- package/workflow/inspector/tabs/BranchesTab.d.ts.map +1 -1
- package/workflow/inspector/tabs/BranchesTab.js +2 -1
- package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
- package/workflow/inspector/tabs/IterationTab.d.ts.map +1 -1
- package/workflow/inspector/tabs/IterationTab.js +2 -1
- package/workflow/inspector/tabs/IterationTab.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workspace/ExplorerTree.d.ts.map +1 -1
- package/workspace/ExplorerTree.js +2 -1
- package/workspace/ExplorerTree.js.map +1 -1
- package/workspace/WorkspaceContentSearch.d.ts.map +1 -1
- package/workspace/WorkspaceContentSearch.js +2 -1
- package/workspace/WorkspaceContentSearch.js.map +1 -1
- package/workspace/WorkspaceFileSearch.d.ts.map +1 -1
- package/workspace/WorkspaceFileSearch.js +2 -1
- package/workspace/WorkspaceFileSearch.js.map +1 -1
- package/workspace/WorkspaceSummary.d.ts.map +1 -1
- package/workspace/WorkspaceSummary.js +2 -1
- package/workspace/WorkspaceSummary.js.map +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import type { IdentityAccountInput } from "@stigmer/sdk";
|
|
5
|
+
import type { IdentityAccount } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/api_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { toError } from "../internal/toError.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useUpdateIdentityAccount}. */
|
|
10
|
+
export interface UseUpdateIdentityAccountReturn {
|
|
11
|
+
/** Submit an {@link IdentityAccountInput} to update an identity account. Resolves with the updated resource. */
|
|
12
|
+
readonly update: (input: IdentityAccountInput) => Promise<IdentityAccount>;
|
|
13
|
+
/** `true` while the update request is in flight. */
|
|
14
|
+
readonly isUpdating: boolean;
|
|
15
|
+
/** Error from the last failed update, or `null` when healthy. */
|
|
16
|
+
readonly error: Error | null;
|
|
17
|
+
/** Reset `error` to `null`. */
|
|
18
|
+
readonly clearError: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Mutation hook that wraps `identityAccount.update()` with loading and
|
|
23
|
+
* error state.
|
|
24
|
+
*
|
|
25
|
+
* The update RPC is a full-spec replacement addressed by `org` + `slug`
|
|
26
|
+
* (the generated input carries no id). Build the input from the loaded
|
|
27
|
+
* resource with `toIdentityAccountUpdateInput` from `@stigmer/sdk` and
|
|
28
|
+
* override only the fields being edited — sending a partial input wipes
|
|
29
|
+
* the unsent spec fields. The same rule applies INSIDE nested messages:
|
|
30
|
+
* override `preferences` by spreading the mapper's complete value first,
|
|
31
|
+
* or the untouched preference fields wipe.
|
|
32
|
+
*
|
|
33
|
+
* Self-service: a user can always update their own account (`can_edit`
|
|
34
|
+
* via the self-ownership relationship written at account creation).
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* const { update, isUpdating, error } = useUpdateIdentityAccount();
|
|
39
|
+
*
|
|
40
|
+
* const mapped = toIdentityAccountUpdateInput(account);
|
|
41
|
+
* await update({
|
|
42
|
+
* ...mapped,
|
|
43
|
+
* preferences: { ...mapped.preferences, standingContext: "Keep answers terse." },
|
|
44
|
+
* });
|
|
45
|
+
* refetch(); // re-sync the editor
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function useUpdateIdentityAccount(): UseUpdateIdentityAccountReturn {
|
|
49
|
+
const stigmer = useStigmer();
|
|
50
|
+
const [isUpdating, setIsUpdating] = useState(false);
|
|
51
|
+
const [error, setError] = useState<Error | null>(null);
|
|
52
|
+
|
|
53
|
+
const clearError = useCallback(() => setError(null), []);
|
|
54
|
+
|
|
55
|
+
const update = useCallback(
|
|
56
|
+
async (input: IdentityAccountInput): Promise<IdentityAccount> => {
|
|
57
|
+
setIsUpdating(true);
|
|
58
|
+
setError(null);
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
return await stigmer.identityAccount.update(input);
|
|
62
|
+
} catch (err) {
|
|
63
|
+
setError(toError(err));
|
|
64
|
+
throw err;
|
|
65
|
+
} finally {
|
|
66
|
+
setIsUpdating(false);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
[stigmer],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
return { update, isUpdating, error, clearError };
|
|
73
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { type FormEvent, useCallback, useId, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
|
|
5
6
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
7
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
7
8
|
import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
@@ -388,7 +389,7 @@ function JitSection({
|
|
|
388
389
|
}
|
|
389
390
|
|
|
390
391
|
return (
|
|
391
|
-
<fieldset className="stg:space-y-2.5" disabled={disabled}>
|
|
392
|
+
<fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-2.5")} disabled={disabled}>
|
|
392
393
|
<hr className="stg:border-border-muted" />
|
|
393
394
|
<legend className="stg:text-xs stg:font-medium stg:text-foreground">
|
|
394
395
|
JIT provisioning
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { type FormEvent, useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
|
|
5
6
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
7
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
7
8
|
import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
@@ -674,7 +675,7 @@ function JitEditSection({
|
|
|
674
675
|
}
|
|
675
676
|
|
|
676
677
|
return (
|
|
677
|
-
<fieldset className="stg:space-y-2.5" disabled={disabled}>
|
|
678
|
+
<fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-2.5")} disabled={disabled}>
|
|
678
679
|
<hr className="stg:border-border-muted" />
|
|
679
680
|
<legend className="stg:text-xs stg:font-medium stg:text-foreground">
|
|
680
681
|
JIT provisioning
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { type FormEvent, useCallback, useId, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
|
|
5
6
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
7
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
7
8
|
import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
@@ -838,7 +839,7 @@ function JitProvisioningSection({
|
|
|
838
839
|
}
|
|
839
840
|
|
|
840
841
|
return (
|
|
841
|
-
<fieldset className="stg:space-y-2.5" disabled={disabled}>
|
|
842
|
+
<fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-2.5")} disabled={disabled}>
|
|
842
843
|
<hr className="stg:border-border-muted" />
|
|
843
844
|
<legend className="stg:text-xs stg:font-medium stg:text-foreground">
|
|
844
845
|
JIT provisioning
|
package/src/index.ts
CHANGED
|
@@ -196,6 +196,7 @@ export type {
|
|
|
196
196
|
UseSessionFileChangesReturn,
|
|
197
197
|
ModelCostEntry,
|
|
198
198
|
UseSessionUsageReturn,
|
|
199
|
+
ExecutionUsageEntry,
|
|
199
200
|
UseAgentRefFromSessionReturn,
|
|
200
201
|
UseNewSessionFlowOptions,
|
|
201
202
|
UseNewSessionFlowReturn,
|
|
@@ -501,6 +502,7 @@ export {
|
|
|
501
502
|
visionPreflightMessage,
|
|
502
503
|
} from "./attachment/index.js";
|
|
503
504
|
export type {
|
|
505
|
+
AddFilesOptions,
|
|
504
506
|
AttachmentPhase,
|
|
505
507
|
AttachmentEntry,
|
|
506
508
|
AssessVisionPreflightOptions,
|
|
@@ -832,13 +834,23 @@ export type {
|
|
|
832
834
|
ToolCredentialsReadiness,
|
|
833
835
|
} from "./environment/index.js";
|
|
834
836
|
|
|
835
|
-
// Identity Account — gate hook
|
|
837
|
+
// Identity Account — gate hook, self-account data/mutation hooks, the
|
|
838
|
+
// account preferences editor, and the composer-seeding execution defaults
|
|
836
839
|
export {
|
|
837
840
|
useIdentityAccountGate,
|
|
841
|
+
useMyIdentityAccount,
|
|
842
|
+
useAccountExecutionDefaults,
|
|
843
|
+
useUpdateIdentityAccount,
|
|
844
|
+
AccountPreferencesPanel,
|
|
838
845
|
} from "./identity-account/index.js";
|
|
839
846
|
export type {
|
|
840
847
|
IdentityAccountGateState,
|
|
841
848
|
UseIdentityAccountGateReturn,
|
|
849
|
+
UseMyIdentityAccountOptions,
|
|
850
|
+
UseMyIdentityAccountReturn,
|
|
851
|
+
AccountExecutionDefaults,
|
|
852
|
+
UseUpdateIdentityAccountReturn,
|
|
853
|
+
AccountPreferencesPanelProps,
|
|
842
854
|
} from "./identity-account/index.js";
|
|
843
855
|
|
|
844
856
|
// IAM Policy — data hooks, behavior hooks, headless hook, and styled components for access management
|
|
@@ -920,6 +932,7 @@ export {
|
|
|
920
932
|
useUpdateOrganization,
|
|
921
933
|
CreateOrganizationForm,
|
|
922
934
|
OrgProfilePanel,
|
|
935
|
+
OrgPreferencesPanel,
|
|
923
936
|
OrgSwitcher,
|
|
924
937
|
} from "./organization/index.js";
|
|
925
938
|
export type {
|
|
@@ -932,6 +945,7 @@ export type {
|
|
|
932
945
|
UseUpdateOrganizationReturn,
|
|
933
946
|
CreateOrganizationFormProps,
|
|
934
947
|
OrgProfilePanelProps,
|
|
948
|
+
OrgPreferencesPanelProps,
|
|
935
949
|
OrgSwitcherProps,
|
|
936
950
|
} from "./organization/index.js";
|
|
937
951
|
|
|
@@ -1042,6 +1056,18 @@ export type {
|
|
|
1042
1056
|
CursorAccountEditorProps,
|
|
1043
1057
|
} from "./cursor-accounts/index.js";
|
|
1044
1058
|
|
|
1059
|
+
// Provider standing — read-only platform-operator view of the platform's
|
|
1060
|
+
// LLM provider account health (canary-probe verdicts, cloud#447)
|
|
1061
|
+
export {
|
|
1062
|
+
useProviderStanding,
|
|
1063
|
+
ProviderStandingConsole,
|
|
1064
|
+
ProviderStandingAccessNotice,
|
|
1065
|
+
} from "./provider-standing/index.js";
|
|
1066
|
+
export type {
|
|
1067
|
+
UseProviderStandingReturn,
|
|
1068
|
+
ProviderStandingConsoleProps,
|
|
1069
|
+
} from "./provider-standing/index.js";
|
|
1070
|
+
|
|
1045
1071
|
// Settings — navigation structure + section components shared across app shells
|
|
1046
1072
|
export {
|
|
1047
1073
|
SETTINGS_NAV_GROUPS,
|
|
@@ -1052,6 +1078,8 @@ export type { SettingsNavItem, SettingsNavGroup } from "./settings/index.js";
|
|
|
1052
1078
|
export { ApiKeysSection } from "./settings/index.js";
|
|
1053
1079
|
export { MembersSection } from "./settings/index.js";
|
|
1054
1080
|
export { OrgProfileSection } from "./settings/index.js";
|
|
1081
|
+
export { OrgPreferencesSection } from "./settings/index.js";
|
|
1082
|
+
export { AccountPreferencesSection } from "./settings/index.js";
|
|
1055
1083
|
export { EnvironmentsSection } from "./settings/index.js";
|
|
1056
1084
|
export { InvitationsSection } from "./settings/index.js";
|
|
1057
1085
|
export { IdentityProvidersSection } from "./settings/index.js";
|
|
@@ -1322,6 +1350,7 @@ export {
|
|
|
1322
1350
|
ConversationControlBanner,
|
|
1323
1351
|
ConversationAttentionBanner,
|
|
1324
1352
|
ConversationComposer,
|
|
1353
|
+
ConversationTemplatePickerDialog,
|
|
1325
1354
|
useConversation,
|
|
1326
1355
|
useConversationList,
|
|
1327
1356
|
useConversationMediaUrl,
|
|
@@ -1351,6 +1380,8 @@ export type {
|
|
|
1351
1380
|
ConversationControlBannerProps,
|
|
1352
1381
|
ConversationAttentionBannerProps,
|
|
1353
1382
|
ConversationComposerProps,
|
|
1383
|
+
ConversationTemplatePickerDialogProps,
|
|
1384
|
+
ConversationReplyPayload,
|
|
1354
1385
|
UseConversationOptions,
|
|
1355
1386
|
UseConversationReturn,
|
|
1356
1387
|
UseConversationListOptions,
|
|
@@ -1409,9 +1440,11 @@ export {
|
|
|
1409
1440
|
VisibilitySelector,
|
|
1410
1441
|
VisibilityBadge,
|
|
1411
1442
|
blueprintVisibilityLevels,
|
|
1412
|
-
|
|
1443
|
+
instanceVisibilityLevels,
|
|
1444
|
+
PUBLIC_LOCKED_REASON,
|
|
1413
1445
|
visibilityLabel,
|
|
1414
1446
|
useUpdateVisibility,
|
|
1447
|
+
useCanSetPublicVisibility,
|
|
1415
1448
|
} from "./library/index.js";
|
|
1416
1449
|
export type {
|
|
1417
1450
|
ScopeToggleProps,
|
|
@@ -1431,8 +1464,10 @@ export type {
|
|
|
1431
1464
|
VisibilityBadgeProps,
|
|
1432
1465
|
VisibilityLevelOption,
|
|
1433
1466
|
BlueprintVisibilityLevelsContext,
|
|
1467
|
+
InstanceVisibilityLevelsContext,
|
|
1434
1468
|
VisibilityResourceKind,
|
|
1435
1469
|
UseUpdateVisibilityReturn,
|
|
1470
|
+
UseCanSetPublicVisibilityReturn,
|
|
1436
1471
|
} from "./library/index.js";
|
|
1437
1472
|
|
|
1438
1473
|
// Manifest — kind-agnostic YAML edit/apply (editor, hooks, dialogs)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Both `OrganizationPreferences.standing_context` and
|
|
8
|
+
* `IdentityAccountPreferences.standing_context` pin `max_len = 2000`
|
|
9
|
+
* (buf.validate, spec.proto in each package).
|
|
10
|
+
*/
|
|
11
|
+
export const STANDING_CONTEXT_MAX_LEN = 2000;
|
|
12
|
+
/** Show the remaining-characters counter once within this margin. */
|
|
13
|
+
const COUNTER_THRESHOLD = 200;
|
|
14
|
+
|
|
15
|
+
/** Props for {@link StandingContextField}. */
|
|
16
|
+
export interface StandingContextFieldProps {
|
|
17
|
+
/** DOM id for the textarea (label association). */
|
|
18
|
+
readonly id: string;
|
|
19
|
+
/** Current field value. */
|
|
20
|
+
readonly value: string;
|
|
21
|
+
/** Fired with the new value on every edit. */
|
|
22
|
+
readonly onChange: (value: string) => void;
|
|
23
|
+
/** Disables editing while a save is in flight. */
|
|
24
|
+
readonly disabled?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Renders the field as read-only (still selectable/copyable) for
|
|
27
|
+
* viewers without edit permission.
|
|
28
|
+
*/
|
|
29
|
+
readonly readOnly?: boolean;
|
|
30
|
+
/** Example text shown when the field is empty. */
|
|
31
|
+
readonly placeholder?: string;
|
|
32
|
+
/** Helper line rendered under the textarea. */
|
|
33
|
+
readonly helperText?: ReactNode;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Shared textarea for declared-preference standing context — the one
|
|
38
|
+
* free-text field both the organization and account preference editors
|
|
39
|
+
* render. Owns the proto length cap and the remaining-characters
|
|
40
|
+
* counter; the parent panel owns label, load/save, and dirty state.
|
|
41
|
+
*
|
|
42
|
+
* Internal to `@stigmer/react` — the public surface is the panels.
|
|
43
|
+
*/
|
|
44
|
+
export function StandingContextField({
|
|
45
|
+
id,
|
|
46
|
+
value,
|
|
47
|
+
onChange,
|
|
48
|
+
disabled,
|
|
49
|
+
readOnly,
|
|
50
|
+
placeholder,
|
|
51
|
+
helperText,
|
|
52
|
+
}: StandingContextFieldProps) {
|
|
53
|
+
const remaining = STANDING_CONTEXT_MAX_LEN - value.length;
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<div className="stg:space-y-1">
|
|
57
|
+
<label
|
|
58
|
+
htmlFor={id}
|
|
59
|
+
className="stg:text-xs stg:font-medium stg:text-foreground"
|
|
60
|
+
>
|
|
61
|
+
Standing context
|
|
62
|
+
</label>
|
|
63
|
+
<textarea
|
|
64
|
+
id={id}
|
|
65
|
+
value={value}
|
|
66
|
+
onChange={(e) => onChange(e.target.value)}
|
|
67
|
+
maxLength={STANDING_CONTEXT_MAX_LEN}
|
|
68
|
+
rows={6}
|
|
69
|
+
disabled={disabled}
|
|
70
|
+
readOnly={readOnly}
|
|
71
|
+
placeholder={readOnly ? undefined : placeholder}
|
|
72
|
+
className={cn(
|
|
73
|
+
"stg:w-full stg:resize-y stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground",
|
|
74
|
+
"stg:placeholder:text-muted-foreground",
|
|
75
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring",
|
|
76
|
+
"stg:disabled:pointer-events-none stg:disabled:opacity-50",
|
|
77
|
+
readOnly && "stg:bg-muted-subtle stg:text-muted-foreground",
|
|
78
|
+
)}
|
|
79
|
+
/>
|
|
80
|
+
{helperText && (
|
|
81
|
+
<p className="stg:text-[0.65rem] stg:text-muted-foreground">
|
|
82
|
+
{helperText}
|
|
83
|
+
</p>
|
|
84
|
+
)}
|
|
85
|
+
{!readOnly && remaining <= COUNTER_THRESHOLD && (
|
|
86
|
+
<p className="stg:text-[0.65rem] stg:text-muted-foreground">
|
|
87
|
+
{remaining} characters left
|
|
88
|
+
</p>
|
|
89
|
+
)}
|
|
90
|
+
</div>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Per-element UA-default resets for preflight-less hosts (#695).
|
|
3
|
+
// Internal — never exported from the package barrel.
|
|
4
|
+
//
|
|
5
|
+
// Why these are per-component classes and NOT stylesheet rules: the #374
|
|
6
|
+
// scoped form-control preflight in `styles.css` could reset every button
|
|
7
|
+
// under `.stgm` because UA control chrome is never wanted. Lists are
|
|
8
|
+
// different — "UI list" vs "content list" is a semantic distinction CSS
|
|
9
|
+
// scoping cannot express. The documented quickstart wraps the host's whole
|
|
10
|
+
// app in `StigmerProvider`, so a `.stgm ul { list-style: none }` rule would
|
|
11
|
+
// strip the bullets off the HOST's own content. Every SDK-rendered UI list
|
|
12
|
+
// therefore declares its own reset (enforced by the `stigmer/require-list-reset`
|
|
13
|
+
// lint rule); markdown-rendered content lists instead declare their bullets
|
|
14
|
+
// explicitly (`stg:list-disc stg:pl-5 ...` in markdown-components.tsx).
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* UA-default reset for a UI `<ul>`/`<ol>` (no bullets, no indent, no
|
|
19
|
+
* margins). Without it, a host that ships no global CSS reset renders list
|
|
20
|
+
* markers and ~40px of `padding-inline-start` on every SDK list — invisible
|
|
21
|
+
* on first-party surfaces (console, desktop, docs tours all ship global
|
|
22
|
+
* resets), broken in exactly the third-party embeds the SDK exists for.
|
|
23
|
+
* Spacing utilities (`stg:space-y-*`, `stg:p-*`) compose on top.
|
|
24
|
+
*/
|
|
25
|
+
export const UNSTYLED_LIST = "stg:m-0 stg:list-none stg:p-0";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* UA-default reset for `<fieldset>` (margin-inline, padding, and
|
|
29
|
+
* `min-inline-size: min-content` — the last one silently breaks flex/grid
|
|
30
|
+
* shrinking). The UA border is already cleared by the `.stgm *` border reset
|
|
31
|
+
* in `styles.css`, so it is not repeated here.
|
|
32
|
+
*/
|
|
33
|
+
export const UNSTYLED_FIELDSET = "stg:m-0 stg:min-w-0 stg:p-0";
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useState, type DragEvent } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_LIST } from "../element-resets.js";
|
|
5
6
|
import { FileTypeIcon, FolderTypeIcon } from "../file-icons/index.js";
|
|
6
7
|
import type { TreeNode } from "./tree-node.js";
|
|
7
8
|
|
|
@@ -151,7 +152,7 @@ export function FileTreeNode({
|
|
|
151
152
|
{isFolder && expanded && node.children && (
|
|
152
153
|
<ul
|
|
153
154
|
role="group"
|
|
154
|
-
className={cn(indentGuides && "stg:ml-3 stg:border-l stg:border-border")}
|
|
155
|
+
className={cn(UNSTYLED_LIST, indentGuides && "stg:ml-3 stg:border-l stg:border-border")}
|
|
155
156
|
>
|
|
156
157
|
{node.children.map((child) => (
|
|
157
158
|
<FileTreeNode
|
|
@@ -152,12 +152,19 @@ function extractMermaidSource(children: ReactNode): string | null {
|
|
|
152
152
|
* ensuring correct rendering in both the Stigmer Console and third-party
|
|
153
153
|
* host applications with custom themes.
|
|
154
154
|
*
|
|
155
|
+
* Margin-bearing elements (`p`, `ul`, `ol`, `pre`, `blockquote`) declare
|
|
156
|
+
* their top margin (`stg:mt-0`) and blockquote its inline margins
|
|
157
|
+
* explicitly: the spacing rhythm here is authored via `mb-*` on the
|
|
158
|
+
* assumption that UA base margins are zero, which is only true when the
|
|
159
|
+
* host ships a global reset — preflight-less embeds otherwise stack
|
|
160
|
+
* `margin-top: 1em` (and 40px blockquote indents) on top (#695).
|
|
161
|
+
*
|
|
155
162
|
* Used by `MessageEntry` (chat messages) and `SkillDetailView` (SKILL.md).
|
|
156
163
|
*/
|
|
157
164
|
export const MARKDOWN_COMPONENTS: Components = {
|
|
158
165
|
p({ children, ...props }: MdProps<"p">) {
|
|
159
166
|
return (
|
|
160
|
-
<p className="stg:text-sm stg:text-foreground stg:mb-3 stg:last:mb-0 stg:leading-relaxed stg:break-words" {...props}>
|
|
167
|
+
<p className="stg:text-sm stg:text-foreground stg:mt-0 stg:mb-3 stg:last:mb-0 stg:leading-relaxed stg:break-words" {...props}>
|
|
161
168
|
{children}
|
|
162
169
|
</p>
|
|
163
170
|
);
|
|
@@ -211,7 +218,7 @@ export const MARKDOWN_COMPONENTS: Components = {
|
|
|
211
218
|
|
|
212
219
|
ul({ children, ...props }: MdProps<"ul">) {
|
|
213
220
|
return (
|
|
214
|
-
<ul className="stg:list-disc stg:pl-5 stg:mb-3 stg:last:mb-0 stg:space-y-1 stg:text-sm stg:text-foreground" {...props}>
|
|
221
|
+
<ul className="stg:list-disc stg:pl-5 stg:mt-0 stg:mb-3 stg:last:mb-0 stg:space-y-1 stg:text-sm stg:text-foreground" {...props}>
|
|
215
222
|
{children}
|
|
216
223
|
</ul>
|
|
217
224
|
);
|
|
@@ -219,7 +226,7 @@ export const MARKDOWN_COMPONENTS: Components = {
|
|
|
219
226
|
|
|
220
227
|
ol({ children, ...props }: MdProps<"ol">) {
|
|
221
228
|
return (
|
|
222
|
-
<ol className="stg:list-decimal stg:pl-5 stg:mb-3 stg:last:mb-0 stg:space-y-1 stg:text-sm stg:text-foreground" {...props}>
|
|
229
|
+
<ol className="stg:list-decimal stg:pl-5 stg:mt-0 stg:mb-3 stg:last:mb-0 stg:space-y-1 stg:text-sm stg:text-foreground" {...props}>
|
|
223
230
|
{children}
|
|
224
231
|
</ol>
|
|
225
232
|
);
|
|
@@ -245,7 +252,7 @@ export const MARKDOWN_COMPONENTS: Components = {
|
|
|
245
252
|
|
|
246
253
|
return (
|
|
247
254
|
<pre
|
|
248
|
-
className="stg:mb-3 stg:last:mb-0 stg:overflow-x-auto stg:rounded-md stg:bg-muted stg:p-3"
|
|
255
|
+
className="stg:mt-0 stg:mb-3 stg:last:mb-0 stg:overflow-x-auto stg:rounded-md stg:bg-muted stg:p-3"
|
|
249
256
|
{...props}
|
|
250
257
|
>
|
|
251
258
|
{children}
|
|
@@ -293,9 +300,12 @@ export const MARKDOWN_COMPONENTS: Components = {
|
|
|
293
300
|
},
|
|
294
301
|
|
|
295
302
|
blockquote({ children, ...props }: MdProps<"blockquote">) {
|
|
303
|
+
// mx-0 matters as much as mt-0 here: UA blockquote margin is `1em 40px`,
|
|
304
|
+
// so a preflight-less host renders a double indent on BOTH sides on top
|
|
305
|
+
// of the border-l + pl-4 treatment.
|
|
296
306
|
return (
|
|
297
307
|
<blockquote
|
|
298
|
-
className="stg:border-l-2 stg:border-border stg:
|
|
308
|
+
className="stg:border-l-2 stg:border-border stg:mx-0 stg:mt-0 stg:mb-3 stg:pl-4 stg:last:mb-0 stg:text-muted-foreground stg:italic"
|
|
299
309
|
{...props}
|
|
300
310
|
>
|
|
301
311
|
{children}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useId, useState, type FormEvent } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
|
|
5
6
|
import {
|
|
6
7
|
getUserMessage,
|
|
7
8
|
iamRoleDisplayName,
|
|
@@ -302,7 +303,7 @@ function CreateInvitationForm({
|
|
|
302
303
|
/>
|
|
303
304
|
|
|
304
305
|
{/* Expiry */}
|
|
305
|
-
<fieldset className="stg:space-y-1.5">
|
|
306
|
+
<fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-1.5")}>
|
|
306
307
|
<legend className="stg:text-xs stg:font-medium stg:text-foreground">
|
|
307
308
|
Expires in
|
|
308
309
|
</legend>
|
|
@@ -324,7 +325,7 @@ function CreateInvitationForm({
|
|
|
324
325
|
</fieldset>
|
|
325
326
|
|
|
326
327
|
{/* Redemption mode */}
|
|
327
|
-
<fieldset className="stg:space-y-1.5">
|
|
328
|
+
<fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-1.5")}>
|
|
328
329
|
<legend className="stg:text-xs stg:font-medium stg:text-foreground">
|
|
329
330
|
Usage limit
|
|
330
331
|
</legend>
|
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
VisibilitySelector,
|
|
6
6
|
type VisibilitySelectorMode,
|
|
7
7
|
} from "./VisibilitySelector.js";
|
|
8
|
-
import {
|
|
8
|
+
import { useCanSetPublicVisibility } from "./useCanSetPublicVisibility.js";
|
|
9
|
+
import { instanceVisibilityLevels } from "./visibilityLevels.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link InstanceVisibilitySelector}. */
|
|
11
12
|
export interface InstanceVisibilitySelectorProps {
|
|
@@ -69,10 +70,16 @@ export function InstanceVisibilitySelector({
|
|
|
69
70
|
disabled = false,
|
|
70
71
|
className,
|
|
71
72
|
}: InstanceVisibilitySelectorProps) {
|
|
73
|
+
// Public is operator-granted in the cloud edition; the hook resolves the
|
|
74
|
+
// caller's grant here so every consumer (create dialogs, list rows) gets
|
|
75
|
+
// the locked Public row without wiring anything.
|
|
76
|
+
const canSetPublic = useCanSetPublicVisibility();
|
|
72
77
|
return (
|
|
73
78
|
<VisibilitySelector
|
|
74
79
|
visibility={visibility}
|
|
75
|
-
options={
|
|
80
|
+
options={instanceVisibilityLevels({
|
|
81
|
+
canSetPublicVisibility: canSetPublic.allowed,
|
|
82
|
+
})}
|
|
76
83
|
onVisibilityChange={onVisibilityChange}
|
|
77
84
|
mode={mode}
|
|
78
85
|
isPending={isPending}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useCallback } from "react";
|
|
4
|
-
import
|
|
4
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
5
5
|
import { useDeploymentMode } from "../deployment-mode.js";
|
|
6
6
|
import { PermissionGate } from "../iam-policy/PermissionGate.js";
|
|
7
7
|
import { useSsoProvider } from "../identity-provider/useSsoProvider.js";
|
|
8
|
+
import { useCanSetPublicVisibility } from "./useCanSetPublicVisibility.js";
|
|
8
9
|
import { VisibilityBadge, VisibilitySelector } from "./VisibilitySelector.js";
|
|
9
10
|
import {
|
|
10
11
|
blueprintVisibilityLevels,
|
|
11
12
|
environmentVisibilityLevels,
|
|
12
|
-
|
|
13
|
+
instanceVisibilityLevels,
|
|
13
14
|
} from "./visibilityLevels.js";
|
|
14
15
|
import {
|
|
15
16
|
useUpdateVisibility,
|
|
@@ -85,9 +86,19 @@ export interface ResourceVisibilityControlProps {
|
|
|
85
86
|
* the org boundary. In `local` mode there are no levels to choose (the
|
|
86
87
|
* OSS backend is single-user), so the control degrades to a badge.
|
|
87
88
|
*
|
|
89
|
+
* The Public level is operator-gated in the cloud edition (publishing is a
|
|
90
|
+
* curation decision): for callers without `can_set_public_visibility`
|
|
91
|
+
* ({@link useCanSetPublicVisibility}) the option renders locked with copy
|
|
92
|
+
* naming the path forward. The same permission opens the operator takedown
|
|
93
|
+
* lane — on a currently-public resource, an operator gets the interactive
|
|
94
|
+
* selector even without resource `can_edit`, so noisy public resources can
|
|
95
|
+
* be un-published directly from the console (every offered move off PUBLIC
|
|
96
|
+
* is a downgrade, which the backend allows operators unilaterally).
|
|
97
|
+
*
|
|
88
98
|
* The backend remains the enforcer (`ValidateVisibilityStep` rejects
|
|
89
|
-
* platform without an IdP
|
|
90
|
-
*
|
|
99
|
+
* platform without an IdP; `AuthorizeVisibilityTransitionStep` gates the
|
|
100
|
+
* PUBLIC level); the gates here only prevent offering an option that is
|
|
101
|
+
* guaranteed to fail.
|
|
91
102
|
*/
|
|
92
103
|
export function ResourceVisibilityControl({
|
|
93
104
|
kind,
|
|
@@ -99,6 +110,7 @@ export function ResourceVisibilityControl({
|
|
|
99
110
|
}: ResourceVisibilityControlProps) {
|
|
100
111
|
const { updateVisibility, isPending } = useUpdateVisibility(kind, resourceId);
|
|
101
112
|
const deploymentMode = useDeploymentMode();
|
|
113
|
+
const canSetPublic = useCanSetPublicVisibility();
|
|
102
114
|
|
|
103
115
|
const isInstance = INSTANCE_KINDS.has(kind);
|
|
104
116
|
const isEnvironment = kind === "environment";
|
|
@@ -113,10 +125,13 @@ export function ResourceVisibilityControl({
|
|
|
113
125
|
const options = isEnvironment
|
|
114
126
|
? environmentVisibilityLevels(deploymentMode)
|
|
115
127
|
: isInstance
|
|
116
|
-
?
|
|
128
|
+
? instanceVisibilityLevels({
|
|
129
|
+
canSetPublicVisibility: canSetPublic.allowed,
|
|
130
|
+
})
|
|
117
131
|
: blueprintVisibilityLevels({
|
|
118
132
|
deploymentMode,
|
|
119
133
|
hasIdentityProvider: ssoProvider !== null,
|
|
134
|
+
canSetPublicVisibility: canSetPublic.allowed,
|
|
120
135
|
});
|
|
121
136
|
|
|
122
137
|
const handleChange = useCallback(
|
|
@@ -141,6 +156,31 @@ export function ResourceVisibilityControl({
|
|
|
141
156
|
return badge;
|
|
142
157
|
}
|
|
143
158
|
|
|
159
|
+
const selector = (
|
|
160
|
+
<VisibilitySelector
|
|
161
|
+
visibility={visibility}
|
|
162
|
+
options={options}
|
|
163
|
+
onVisibilityChange={handleChange}
|
|
164
|
+
isPending={isPending}
|
|
165
|
+
ariaLabel={isInstance ? "Instance visibility" : "Resource visibility"}
|
|
166
|
+
className={className}
|
|
167
|
+
/>
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
// Operator takedown lane: on a currently-public resource, a caller holding
|
|
171
|
+
// can_set_public_visibility gets the control without resource can_edit —
|
|
172
|
+
// every offered move is a downgrade off PUBLIC, which the backend allows
|
|
173
|
+
// operators unilaterally (AuthorizeVisibilityTransitionStep), so no
|
|
174
|
+
// offered action can fail authorization. Scoped to the public state on
|
|
175
|
+
// purpose: on non-public foreign resources most transitions would be
|
|
176
|
+
// denied, and publishing those stays a request-to-operator flow.
|
|
177
|
+
if (
|
|
178
|
+
canSetPublic.allowed &&
|
|
179
|
+
visibility === ApiResourceVisibility.visibility_public
|
|
180
|
+
) {
|
|
181
|
+
return selector;
|
|
182
|
+
}
|
|
183
|
+
|
|
144
184
|
return (
|
|
145
185
|
<PermissionGate
|
|
146
186
|
resource={{ kind: FGA_KIND[kind], id: resourceId }}
|
|
@@ -148,14 +188,7 @@ export function ResourceVisibilityControl({
|
|
|
148
188
|
fallback={badge}
|
|
149
189
|
loading={badge}
|
|
150
190
|
>
|
|
151
|
-
|
|
152
|
-
visibility={visibility}
|
|
153
|
-
options={options}
|
|
154
|
-
onVisibilityChange={handleChange}
|
|
155
|
-
isPending={isPending}
|
|
156
|
-
ariaLabel={isInstance ? "Instance visibility" : "Resource visibility"}
|
|
157
|
-
className={className}
|
|
158
|
-
/>
|
|
191
|
+
{selector}
|
|
159
192
|
</PermissionGate>
|
|
160
193
|
);
|
|
161
194
|
}
|