@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,69 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { renderHook, act } from "@testing-library/react";
|
|
3
|
+
import { zipSync, strToU8 } from "fflate";
|
|
4
|
+
import { useSkillUpload } from "../useSkillUpload";
|
|
5
|
+
|
|
6
|
+
const SKILL_MD = "---\nname: my-skill\ndescription: A test skill\n---\n# My Skill\n";
|
|
7
|
+
|
|
8
|
+
/** Build a real ZIP (fflate, the same library the hook unpacks with) as a File. */
|
|
9
|
+
function zipFile(files: Record<string, Uint8Array>): File {
|
|
10
|
+
return new File([zipSync(files)], "skill.zip", { type: "application/zip" });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async function process(files: Record<string, Uint8Array>) {
|
|
14
|
+
const { result } = renderHook(() => useSkillUpload());
|
|
15
|
+
await act(() => result.current.processFile(zipFile(files)));
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("useSkillUpload", () => {
|
|
20
|
+
it("accepts a root SKILL.md and produces a preview", async () => {
|
|
21
|
+
const result = await process({
|
|
22
|
+
"SKILL.md": strToU8(SKILL_MD),
|
|
23
|
+
"references/schema.md": strToU8("# Schema"),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
expect(result.current.validationError).toBeNull();
|
|
27
|
+
expect(result.current.preview?.name).toBe("my-skill");
|
|
28
|
+
expect(result.current.preview?.description).toBe("A test skill");
|
|
29
|
+
expect(result.current.artifact).not.toBeNull();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// The layout contract is root-only on both editions (DD-018, #452). The
|
|
33
|
+
// preview exists to catch the "zipped the folder instead of its contents"
|
|
34
|
+
// mistake BEFORE upload — accepting nested here and failing at push is the
|
|
35
|
+
// exact confusion issue #684 pins.
|
|
36
|
+
it("rejects a nested-only SKILL.md with the zip-the-contents hint", async () => {
|
|
37
|
+
const result = await process({
|
|
38
|
+
"my-skill/SKILL.md": strToU8(SKILL_MD),
|
|
39
|
+
"my-skill/references/schema.md": strToU8("# Schema"),
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
expect(result.current.preview).toBeNull();
|
|
43
|
+
expect(result.current.artifact).toBeNull();
|
|
44
|
+
expect(result.current.validationError).toBe(
|
|
45
|
+
"Found my-skill/SKILL.md — SKILL.md must be at the archive root. " +
|
|
46
|
+
"Zip the skill folder's contents, not the folder itself.",
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("detects a deeply nested SKILL.md for the hint (any depth, server parity)", async () => {
|
|
51
|
+
const result = await process({
|
|
52
|
+
"wrapper/my-skill/SKILL.md": strToU8(SKILL_MD),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
expect(result.current.preview).toBeNull();
|
|
56
|
+
expect(result.current.validationError).toContain("Found wrapper/my-skill/SKILL.md");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("rejects an archive with no SKILL.md anywhere with the plain root-level message", async () => {
|
|
60
|
+
const result = await process({
|
|
61
|
+
"README.md": strToU8("# Not a skill"),
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
expect(result.current.preview).toBeNull();
|
|
65
|
+
expect(result.current.validationError).toBe(
|
|
66
|
+
"ZIP must contain a SKILL.md file at the root level",
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { create } from "@bufbuild/protobuf";
|
|
2
2
|
import { GetArtifactRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
|
|
3
|
-
import type
|
|
3
|
+
import { isUnimplemented, type Stigmer } from "@stigmer/sdk";
|
|
4
4
|
import type { SkillFileEntry } from "../useSkillUpload.js";
|
|
5
5
|
|
|
6
6
|
/** Unpacked artifact: file entries for browsing + content map for reading. */
|
|
@@ -20,11 +20,10 @@ export async function fetchAndUnpackArtifact(
|
|
|
20
20
|
stigmer: Stigmer,
|
|
21
21
|
artifactStorageKey: string,
|
|
22
22
|
): Promise<UnpackedArtifact> {
|
|
23
|
-
const
|
|
24
|
-
const response = await stigmer.skill.getArtifact(request);
|
|
23
|
+
const artifact = await fetchArtifactBytes(stigmer, artifactStorageKey);
|
|
25
24
|
|
|
26
25
|
const { unzipSync, strFromU8 } = await import("fflate");
|
|
27
|
-
const unzipped = unzipSync(
|
|
26
|
+
const unzipped = unzipSync(artifact);
|
|
28
27
|
|
|
29
28
|
const entries = Object.entries(unzipped);
|
|
30
29
|
const files: SkillFileEntry[] = entries.map(([path, data]) => ({
|
|
@@ -49,3 +48,54 @@ export async function fetchAndUnpackArtifact(
|
|
|
49
48
|
|
|
50
49
|
return { files, contentMap };
|
|
51
50
|
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Fetch the artifact ZIP bytes, URL-first (the transfer lane, stigmer#675):
|
|
54
|
+
* the bytes ride HTTP, so any valid skill (up to the 100MB limit) is
|
|
55
|
+
* fetchable — the unary `getArtifact` RPC is capped at the server's 10MB
|
|
56
|
+
* gRPC message limit.
|
|
57
|
+
*
|
|
58
|
+
* Fallbacks to the unary lane, deliberately wider than the runner's
|
|
59
|
+
* mint-Unimplemented-only contract because this code runs in a browser:
|
|
60
|
+
*
|
|
61
|
+
* - `Unimplemented` from the mint — a pre-transfer-lane server (the code
|
|
62
|
+
* clients key their fallback on, same as every other lane client).
|
|
63
|
+
* - A failed HTTP fetch of the minted URL — in a browser this is how a
|
|
64
|
+
* missing bucket CORS policy surfaces (an opaque `TypeError`,
|
|
65
|
+
* indistinguishable from a network failure). The unary lane was the
|
|
66
|
+
* status quo and still serves everything under the message cap, so
|
|
67
|
+
* degrading beats breaking the console; the warn keeps it observable.
|
|
68
|
+
*/
|
|
69
|
+
async function fetchArtifactBytes(
|
|
70
|
+
stigmer: Stigmer,
|
|
71
|
+
artifactStorageKey: string,
|
|
72
|
+
): Promise<Uint8Array> {
|
|
73
|
+
const request = create(GetArtifactRequestSchema, { artifactStorageKey });
|
|
74
|
+
|
|
75
|
+
let minted;
|
|
76
|
+
try {
|
|
77
|
+
minted = await stigmer.skill.getArtifactDownloadUrl(request);
|
|
78
|
+
} catch (err) {
|
|
79
|
+
if (isUnimplemented(err)) {
|
|
80
|
+
const response = await stigmer.skill.getArtifact(request);
|
|
81
|
+
return response.artifact;
|
|
82
|
+
}
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const doFetch = stigmer.fetch ?? globalThis.fetch;
|
|
88
|
+
const resp = await doFetch(minted.url);
|
|
89
|
+
if (!resp.ok) {
|
|
90
|
+
throw new Error(`artifact download failed with HTTP ${resp.status}`);
|
|
91
|
+
}
|
|
92
|
+
return new Uint8Array(await resp.arrayBuffer());
|
|
93
|
+
} catch (err) {
|
|
94
|
+
console.warn(
|
|
95
|
+
"[stigmer] skill artifact download URL fetch failed (bucket CORS not provisioned for this origin?) — falling back to the unary lane",
|
|
96
|
+
err,
|
|
97
|
+
);
|
|
98
|
+
const response = await stigmer.skill.getArtifact(request);
|
|
99
|
+
return response.artifact;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -21,7 +21,13 @@ export interface UseSkillDiffReturn {
|
|
|
21
21
|
readonly error: Error | null;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Maximum COMBINED unpacked text of both artifacts (10 MB) — a browser
|
|
26
|
+
* memory guard on holding and diffing two extracted file trees, NOT a
|
|
27
|
+
* transport limit. The transfer lane (stigmer#675) removed the download
|
|
28
|
+
* cap, so arbitrarily large valid skills can be *fetched*; what stays
|
|
29
|
+
* bounded is what this hook is willing to diff in tab memory.
|
|
30
|
+
*/
|
|
25
31
|
const MAX_ARTIFACT_BYTES = 10 * 1024 * 1024;
|
|
26
32
|
|
|
27
33
|
// ---------------------------------------------------------------------------
|
|
@@ -129,10 +129,16 @@ export function useSkillUpload(): UseSkillUploadReturn {
|
|
|
129
129
|
if (abortRef.current !== callId) return;
|
|
130
130
|
|
|
131
131
|
const entries = Object.entries(unzipped);
|
|
132
|
-
const skillMdEntry =
|
|
132
|
+
const skillMdEntry = findRootSkillMd(entries);
|
|
133
133
|
|
|
134
134
|
if (!skillMdEntry) {
|
|
135
|
-
|
|
135
|
+
const nestedPath = findNestedSkillMd(entries);
|
|
136
|
+
setValidationError(
|
|
137
|
+
nestedPath
|
|
138
|
+
? `Found ${nestedPath} — SKILL.md must be at the archive root. ` +
|
|
139
|
+
"Zip the skill folder's contents, not the folder itself."
|
|
140
|
+
: "ZIP must contain a SKILL.md file at the root level",
|
|
141
|
+
);
|
|
136
142
|
return;
|
|
137
143
|
}
|
|
138
144
|
|
|
@@ -207,12 +213,25 @@ function isZip(bytes: Uint8Array): boolean {
|
|
|
207
213
|
);
|
|
208
214
|
}
|
|
209
215
|
|
|
210
|
-
|
|
216
|
+
/**
|
|
217
|
+
* The layout contract is root-only on both editions (DD-018, #452): the
|
|
218
|
+
* server rejects an archive whose only SKILL.md is nested, so the preview
|
|
219
|
+
* must too — accepting it here converts a clear pre-upload error into a
|
|
220
|
+
* confusing post-upload rejection (issue #684).
|
|
221
|
+
*/
|
|
222
|
+
function findRootSkillMd(
|
|
211
223
|
entries: [string, Uint8Array][],
|
|
212
224
|
): [string, Uint8Array] | undefined {
|
|
213
|
-
return entries.find(
|
|
214
|
-
|
|
215
|
-
|
|
225
|
+
return entries.find(([path]) => path === "SKILL.md");
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Detect the "zipped the folder instead of its contents" mistake so the
|
|
230
|
+
* error can say what to do. Any-depth suffix match, mirroring the server's
|
|
231
|
+
* nested-occurrence detection (skill/storage/zip_extractor.go).
|
|
232
|
+
*/
|
|
233
|
+
function findNestedSkillMd(entries: [string, Uint8Array][]): string | undefined {
|
|
234
|
+
return entries.find(([path]) => path.endsWith("/SKILL.md"))?.[0];
|
|
216
235
|
}
|
|
217
236
|
|
|
218
237
|
function parseFrontmatter(content: string): Record<string, unknown> | null {
|
|
@@ -24,11 +24,15 @@ interface FormFieldEntry {
|
|
|
24
24
|
enumValues: string;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
// HUMAN_INPUT_TIMEOUT_ESCALATE is deliberately absent: the proto declares it
|
|
28
|
+
// but no runtime exists, and the server validator refuses it at apply
|
|
29
|
+
// (stigmer/stigmer#779). The old option also wrote an `escalation_task` field
|
|
30
|
+
// that HumanInputTaskConfig never had, so every config it produced failed
|
|
31
|
+
// the server's strict decode.
|
|
27
32
|
const TIMEOUT_POLICY_OPTIONS = [
|
|
28
33
|
{ value: "HUMAN_INPUT_TIMEOUT_FAIL", label: "Fail — task errors on timeout" },
|
|
29
34
|
{ value: "HUMAN_INPUT_TIMEOUT_APPROVE", label: "Auto-approve — proceed as approved" },
|
|
30
35
|
{ value: "HUMAN_INPUT_TIMEOUT_DENY", label: "Auto-deny — proceed as denied" },
|
|
31
|
-
{ value: "HUMAN_INPUT_TIMEOUT_ESCALATE", label: "Escalate — branch to escalation task" },
|
|
32
36
|
] as const;
|
|
33
37
|
|
|
34
38
|
const TIMEOUT_UNITS = [
|
|
@@ -107,8 +111,6 @@ export const ApprovalFormBuilder = memo(function ApprovalFormBuilder({
|
|
|
107
111
|
<TimeoutSection
|
|
108
112
|
timeout={typeof cfg.timeout === "number" ? cfg.timeout : 0}
|
|
109
113
|
onTimeout={typeof cfg.on_timeout === "string" ? cfg.on_timeout : ""}
|
|
110
|
-
escalationTask={typeof cfg.escalation_task === "string" ? cfg.escalation_task : ""}
|
|
111
|
-
allTaskNames={allTaskNames}
|
|
112
114
|
onUpdateConfig={onUpdateConfig}
|
|
113
115
|
/>
|
|
114
116
|
<StringListSection
|
|
@@ -619,14 +621,10 @@ function FormFieldRow({
|
|
|
619
621
|
function TimeoutSection({
|
|
620
622
|
timeout,
|
|
621
623
|
onTimeout,
|
|
622
|
-
escalationTask,
|
|
623
|
-
allTaskNames,
|
|
624
624
|
onUpdateConfig,
|
|
625
625
|
}: {
|
|
626
626
|
timeout: number;
|
|
627
627
|
onTimeout: string;
|
|
628
|
-
escalationTask: string;
|
|
629
|
-
allTaskNames: readonly string[];
|
|
630
628
|
onUpdateConfig: (fieldPath: string, value: unknown) => void;
|
|
631
629
|
}) {
|
|
632
630
|
const bestUnit = useMemo(() => {
|
|
@@ -665,8 +663,6 @@ function TimeoutSection({
|
|
|
665
663
|
[timeout, unit, onUpdateConfig],
|
|
666
664
|
);
|
|
667
665
|
|
|
668
|
-
const isEscalate = onTimeout === "HUMAN_INPUT_TIMEOUT_ESCALATE";
|
|
669
|
-
|
|
670
666
|
return (
|
|
671
667
|
<CollapsibleSection title="Timeout">
|
|
672
668
|
<div className="stg:flex stg:items-center stg:gap-1">
|
|
@@ -710,24 +706,6 @@ function TimeoutSection({
|
|
|
710
706
|
</div>
|
|
711
707
|
)}
|
|
712
708
|
|
|
713
|
-
{isEscalate && (
|
|
714
|
-
<div className="stg:mt-1.5 stg:flex stg:flex-col stg:gap-1">
|
|
715
|
-
<label className="stg:text-[10px] stg:text-[var(--stgm-muted-foreground,#737373)]">
|
|
716
|
-
Escalation task
|
|
717
|
-
</label>
|
|
718
|
-
<select
|
|
719
|
-
value={escalationTask}
|
|
720
|
-
onChange={(e) => onUpdateConfig("escalation_task", e.target.value || undefined)}
|
|
721
|
-
className={cn(smallInputClass)}
|
|
722
|
-
aria-label="Escalation target task"
|
|
723
|
-
>
|
|
724
|
-
<option value="">— Select escalation task —</option>
|
|
725
|
-
{allTaskNames.map((name) => (
|
|
726
|
-
<option key={name} value={name}>{name}</option>
|
|
727
|
-
))}
|
|
728
|
-
</select>
|
|
729
|
-
</div>
|
|
730
|
-
)}
|
|
731
709
|
</CollapsibleSection>
|
|
732
710
|
);
|
|
733
711
|
}
|
|
@@ -4,6 +4,7 @@ import { memo } from "react";
|
|
|
4
4
|
import type { WorkflowExecution } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
5
5
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
6
|
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
7
8
|
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
8
9
|
|
|
9
10
|
export interface FailedRunsWidgetProps {
|
|
@@ -54,7 +55,7 @@ export const FailedRunsWidget = memo(function FailedRunsWidget({
|
|
|
54
55
|
No recent failures
|
|
55
56
|
</p>
|
|
56
57
|
) : (
|
|
57
|
-
<ul className="stg:space-y-2" role="list">
|
|
58
|
+
<ul className={cn(UNSTYLED_LIST, "stg:space-y-2")} role="list">
|
|
58
59
|
{executions.map((exec) => {
|
|
59
60
|
const id = exec.metadata?.id;
|
|
60
61
|
const name =
|
|
@@ -4,6 +4,7 @@ import { memo } from "react";
|
|
|
4
4
|
import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
|
|
5
5
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
6
|
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
7
8
|
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
8
9
|
|
|
9
10
|
export interface PendingApprovalsWidgetProps {
|
|
@@ -65,7 +66,7 @@ export const PendingApprovalsWidget = memo(function PendingApprovalsWidget({
|
|
|
65
66
|
No approvals pending
|
|
66
67
|
</p>
|
|
67
68
|
) : (
|
|
68
|
-
<ul className="stg:space-y-2" role="list">
|
|
69
|
+
<ul className={cn(UNSTYLED_LIST, "stg:space-y-2")} role="list">
|
|
69
70
|
{approvals.map((approval) => {
|
|
70
71
|
const requestedAt = approval.requestedAt
|
|
71
72
|
? timestampDate(approval.requestedAt)
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import type { Artifact } from "@stigmer/protos/ai/stigmer/agentic/artifact/v1/api_pb";
|
|
7
7
|
import { useMemo } from "react";
|
|
8
|
+
import { UNSTYLED_LIST } from "../../internal/element-resets.js";
|
|
8
9
|
import { ArtifactRowView } from "../../execution/ArtifactRowView.js";
|
|
9
10
|
import type { ArtifactRowItem } from "../../execution/artifact-row-item.js";
|
|
10
11
|
import { deriveWorkflowArtifactItems } from "../deriveWorkflowArtifactItems.js";
|
|
@@ -55,7 +56,7 @@ export function WorkflowArtifactsTab({
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
return (
|
|
58
|
-
<ul role="list" className=
|
|
59
|
+
<ul role="list" className={`${UNSTYLED_LIST} stg:flex stg:flex-col`}>
|
|
59
60
|
{entries.map(({ artifact, item }) => (
|
|
60
61
|
<WorkflowArtifactRow
|
|
61
62
|
key={artifact.metadata?.id ?? item.name}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { useMemo } from "react";
|
|
7
7
|
import { cn } from "@stigmer/theme";
|
|
8
|
+
import { UNSTYLED_LIST } from "../../internal/element-resets.js";
|
|
8
9
|
import type {
|
|
9
10
|
DerivedCostSummary,
|
|
10
11
|
DerivedTaskState,
|
|
@@ -72,7 +73,7 @@ export function WorkflowUsageTab({
|
|
|
72
73
|
<h3 className="stg:px-2 stg:text-xs stg:font-semibold stg:uppercase stg:tracking-wider stg:text-muted-foreground">
|
|
73
74
|
By task
|
|
74
75
|
</h3>
|
|
75
|
-
<ul role="list" className="stg:flex stg:flex-col">
|
|
76
|
+
<ul role="list" className={cn(UNSTYLED_LIST, "stg:flex stg:flex-col")}>
|
|
76
77
|
{items.map((item) => (
|
|
77
78
|
<UsageRow key={item.taskName} item={item} />
|
|
78
79
|
))}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { memo, useMemo, useState, useCallback } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_LIST } from "../../internal/element-resets.js";
|
|
5
6
|
import type { WorkflowGraphModel, WorkflowGraphBudget, WorkflowGraphEnvVar } from "../workflow-graph-model.js";
|
|
6
7
|
import { START_NODE_ID, END_NODE_ID } from "../workflow-graph-model.js";
|
|
7
8
|
import { CATEGORY_DISPLAY_NAMES } from "../canvas-constants.js";
|
|
@@ -155,7 +156,7 @@ function ValidationSection({
|
|
|
155
156
|
</button>
|
|
156
157
|
|
|
157
158
|
{expanded && (
|
|
158
|
-
<ul className="stg:flex stg:flex-col stg:gap-1" role="list">
|
|
159
|
+
<ul className={cn(UNSTYLED_LIST, "stg:flex stg:flex-col stg:gap-1")} role="list">
|
|
159
160
|
{Array.from(errors.entries()).map(([nodeId, nodeErrors]) =>
|
|
160
161
|
nodeErrors.map((error, i) => (
|
|
161
162
|
<li
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_FIELDSET } from "../../../internal/element-resets.js";
|
|
5
6
|
import {
|
|
6
7
|
Tooltip,
|
|
7
8
|
TooltipContent,
|
|
@@ -283,7 +284,7 @@ function ForkBranches({
|
|
|
283
284
|
return (
|
|
284
285
|
<div className="stg:flex stg:flex-col stg:gap-3 stg:px-3 stg:py-3">
|
|
285
286
|
{/* Join policy */}
|
|
286
|
-
<fieldset>
|
|
287
|
+
<fieldset className={UNSTYLED_FIELDSET}>
|
|
287
288
|
<legend className="stg:text-xs stg:font-semibold stg:text-[var(--stgm-foreground,#1a1a2e)] stg:mb-1.5">
|
|
288
289
|
Join policy
|
|
289
290
|
</legend>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useState, useMemo } from "react";
|
|
4
|
+
import { UNSTYLED_FIELDSET } from "../../../internal/element-resets.js";
|
|
4
5
|
import type { WorkflowGraphNode } from "../../workflow-graph-model.js";
|
|
5
6
|
import type { InspectorMutations } from "../types.js";
|
|
6
7
|
|
|
@@ -177,7 +178,7 @@ export const IterationTab = memo(function IterationTab({
|
|
|
177
178
|
|
|
178
179
|
{/* Error policy */}
|
|
179
180
|
{parallelism > 0 && (
|
|
180
|
-
<fieldset>
|
|
181
|
+
<fieldset className={UNSTYLED_FIELDSET}>
|
|
181
182
|
<legend className="stg:text-[10px] stg:font-medium stg:text-[var(--stgm-muted-foreground,#737373)] stg:mb-1.5">
|
|
182
183
|
Error policy
|
|
183
184
|
</legend>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_LIST } from "../../internal/element-resets.js";
|
|
5
6
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
7
|
import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
|
|
7
8
|
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
@@ -263,7 +264,7 @@ export function WorkflowInstanceDetailPanel({
|
|
|
263
264
|
{(spec?.environmentRefs?.length ?? 0) === 0 ? (
|
|
264
265
|
<p className="stg:text-xs stg:text-muted-foreground">No environments bound.</p>
|
|
265
266
|
) : (
|
|
266
|
-
<ol className="stg:space-y-1">
|
|
267
|
+
<ol className={cn(UNSTYLED_LIST, "stg:space-y-1")}>
|
|
267
268
|
{spec!.environmentRefs.map((ref, idx) => (
|
|
268
269
|
<li key={`${ref.slug}-${idx}`} className="stg:flex stg:items-center stg:gap-2 stg:text-sm">
|
|
269
270
|
<span className="stg:text-xs stg:text-muted-foreground stg:w-4 stg:text-right">{idx + 1}.</span>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
5
6
|
import { FileTreeNode } from "../internal/file-tree/index.js";
|
|
6
7
|
import type { SelectedWorkspaceFile } from "../internal/store/index.js";
|
|
7
8
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
@@ -231,7 +232,7 @@ function ExplorerRootBody({
|
|
|
231
232
|
return (
|
|
232
233
|
<>
|
|
233
234
|
<nav aria-label={`File tree for ${entryName}`}>
|
|
234
|
-
<ul className="stg:py-0.5 stg:pl-1.5" role="tree">
|
|
235
|
+
<ul className={cn(UNSTYLED_LIST, "stg:py-0.5 stg:pl-1.5")} role="tree">
|
|
235
236
|
{tree.map((node) => (
|
|
236
237
|
<FileTreeNode
|
|
237
238
|
key={node.path}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
type ReactNode,
|
|
12
12
|
} from "react";
|
|
13
13
|
import { cn } from "@stigmer/theme";
|
|
14
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
14
15
|
import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
|
|
15
16
|
import type {
|
|
16
17
|
WorkspaceContentMatch,
|
|
@@ -235,7 +236,7 @@ export function WorkspaceContentSearch({
|
|
|
235
236
|
<MessageState>No files containing “{trimmed}”.</MessageState>
|
|
236
237
|
) : (
|
|
237
238
|
<>
|
|
238
|
-
<ul id={listboxId} role="listbox" aria-label="Search results" className="stg:py-0.5">
|
|
239
|
+
<ul id={listboxId} role="listbox" aria-label="Search results" className={cn(UNSTYLED_LIST, "stg:py-0.5")}>
|
|
239
240
|
{renderRows({
|
|
240
241
|
groups,
|
|
241
242
|
query: trimmed,
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
type KeyboardEvent,
|
|
11
11
|
} from "react";
|
|
12
12
|
import { cn } from "@stigmer/theme";
|
|
13
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
13
14
|
import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
|
|
14
15
|
import type { WorkspaceFileLister } from "./WorkspaceFileLister.js";
|
|
15
16
|
import type { SelectedWorkspaceFile } from "../internal/store/workspace-file-selection-store.js";
|
|
@@ -210,7 +211,7 @@ export function WorkspaceFileSearch({
|
|
|
210
211
|
id={listboxId}
|
|
211
212
|
role="listbox"
|
|
212
213
|
aria-label="Search results"
|
|
213
|
-
className="stg:py-0.5"
|
|
214
|
+
className={cn(UNSTYLED_LIST, "stg:py-0.5")}
|
|
214
215
|
>
|
|
215
216
|
{renderRows({
|
|
216
217
|
groups,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
4
4
|
import type { WorkspaceSource } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
5
5
|
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
6
7
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
7
8
|
import { TruncatedText } from "../internal/truncated-text.js";
|
|
8
9
|
|
|
@@ -43,7 +44,7 @@ export function WorkspaceSummary({
|
|
|
43
44
|
if (entries.length === 0) return null;
|
|
44
45
|
|
|
45
46
|
return (
|
|
46
|
-
<ul className={cn("stg:space-y-1.5", className)} aria-label="Workspace entries">
|
|
47
|
+
<ul className={cn(UNSTYLED_LIST, "stg:space-y-1.5", className)} aria-label="Workspace entries">
|
|
47
48
|
{entries.map((entry) => (
|
|
48
49
|
<li key={entry.name} className="stg:text-xs">
|
|
49
50
|
<div className="stg:flex stg:items-center stg:gap-1.5 stg:font-medium">
|