@stigmer/react 3.9.0 → 3.11.0
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/access/ManageAccessButton.js +1 -1
- package/access/ManageAccessButton.js.map +1 -1
- package/access/ManageAccessDialog.js +3 -3
- package/access/ManageAccessDialog.js.map +1 -1
- package/action-menu/ActionMenu.js +3 -3
- package/action-menu/ActionMenu.js.map +1 -1
- package/activity/useRecentActivity.d.ts +6 -1
- package/activity/useRecentActivity.d.ts.map +1 -1
- package/activity/useRecentActivity.js +6 -1
- package/activity/useRecentActivity.js.map +1 -1
- package/agent/AgentDetailView.js +21 -21
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/AgentPicker.js +8 -8
- package/agent/AgentPicker.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +3 -3
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.js +6 -6
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent/steps/ReviewStep.js +3 -3
- package/agent/steps/ReviewStep.js.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.js +2 -2
- package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
- package/agent-instance/AgentInstanceList.js +4 -4
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +1 -1
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.js +9 -9
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.js +5 -5
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/attachment/AttachmentChipList.d.ts +16 -4
- package/attachment/AttachmentChipList.d.ts.map +1 -1
- package/attachment/AttachmentChipList.js +103 -37
- package/attachment/AttachmentChipList.js.map +1 -1
- package/attachment/AttachmentImageLightbox.d.ts +39 -0
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -0
- package/attachment/AttachmentImageLightbox.js +57 -0
- package/attachment/AttachmentImageLightbox.js.map +1 -0
- package/attachment/attachment-utils.d.ts +8 -5
- package/attachment/attachment-utils.d.ts.map +1 -1
- package/attachment/attachment-utils.js +8 -5
- package/attachment/attachment-utils.js.map +1 -1
- package/attachment/useObjectUrl.d.ts +15 -0
- package/attachment/useObjectUrl.d.ts.map +1 -0
- package/attachment/useObjectUrl.js +25 -0
- package/attachment/useObjectUrl.js.map +1 -0
- package/billing/AutoRechargeCard.js +2 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.js +6 -6
- package/billing/BillingSection.js.map +1 -1
- package/billing/CreditBalanceCard.js +4 -4
- package/billing/CreditBalanceCard.js.map +1 -1
- package/billing/CreditLedgerTable.js +13 -13
- package/billing/CreditLedgerTable.js.map +1 -1
- package/billing/CreditPackGrid.js +2 -2
- package/billing/CreditPackGrid.js.map +1 -1
- package/billing/LowBalanceBanner.js +4 -4
- package/billing/LowBalanceBanner.js.map +1 -1
- package/billing/PaymentMethodCard.js +2 -2
- package/billing/PaymentMethodCard.js.map +1 -1
- package/button/Button.js +7 -7
- package/button/Button.js.map +1 -1
- package/channel/AgentChannelsPanel.js +12 -12
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/channel/ChannelConversationsDialog.js +6 -6
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.js +2 -2
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.js +13 -13
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ChannelToolCredentials.js +3 -3
- package/channel/ChannelToolCredentials.js.map +1 -1
- package/channel/ConnectSlackDialog.js +13 -13
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +8 -8
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/connect/ServingAppSection.js +5 -5
- package/channel/connect/ServingAppSection.js.map +1 -1
- package/channel/connect/ToolCredentialsSection.js +1 -1
- package/channel/connect/ToolCredentialsSection.js.map +1 -1
- package/channel/connect/VerbatimRefusal.js +1 -1
- package/channel/connect/VerbatimRefusal.js.map +1 -1
- package/channel/connect/icons.js +1 -1
- package/channel/connect/icons.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +3 -3
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/ChannelAppListPanel.js +5 -5
- package/channel-app/ChannelAppListPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.js +6 -6
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.js +7 -7
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +4 -4
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/ConfigureMenu.js +4 -4
- package/composer/ConfigureMenu.js.map +1 -1
- package/composer/ContextChip.js +4 -4
- package/composer/ContextChip.js.map +1 -1
- package/composer/ContextPopover.js +4 -4
- package/composer/ContextPopover.js.map +1 -1
- package/composer/InteractionModePicker.js +5 -5
- package/composer/InteractionModePicker.js.map +1 -1
- package/composer/SessionComposer.js +8 -8
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.js +3 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationAttentionBanner.js +2 -2
- package/conversation/ConversationAttentionBanner.js.map +1 -1
- package/conversation/ConversationComposer.js +2 -2
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationControlBanner.js +5 -5
- package/conversation/ConversationControlBanner.js.map +1 -1
- package/conversation/ConversationListPane.js +12 -12
- package/conversation/ConversationListPane.js.map +1 -1
- package/conversation/ConversationMediaAttachment.d.ts +45 -0
- package/conversation/ConversationMediaAttachment.d.ts.map +1 -0
- package/conversation/ConversationMediaAttachment.js +153 -0
- package/conversation/ConversationMediaAttachment.js.map +1 -0
- package/conversation/ConversationTimelineView.d.ts +18 -1
- package/conversation/ConversationTimelineView.d.ts.map +1 -1
- package/conversation/ConversationTimelineView.js +24 -15
- package/conversation/ConversationTimelineView.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +3 -3
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/conversation/conversationPresentation.d.ts +10 -3
- package/conversation/conversationPresentation.d.ts.map +1 -1
- package/conversation/conversationPresentation.js +10 -3
- package/conversation/conversationPresentation.js.map +1 -1
- package/conversation/index.d.ts +2 -0
- package/conversation/index.d.ts.map +1 -1
- package/conversation/index.js +1 -0
- package/conversation/index.js.map +1 -1
- package/conversation/useConversationMediaUrl.d.ts +65 -0
- package/conversation/useConversationMediaUrl.d.ts.map +1 -0
- package/conversation/useConversationMediaUrl.js +61 -0
- package/conversation/useConversationMediaUrl.js.map +1 -0
- package/cursor-accounts/CursorAccountEditor.js +1 -1
- package/cursor-accounts/CursorAccountEditor.js.map +1 -1
- package/cursor-accounts/CursorAccountsAccessNotice.js +1 -1
- package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +9 -9
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +7 -7
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/cursor-accounts/MemberKeysPanel.js +3 -3
- package/cursor-accounts/MemberKeysPanel.js.map +1 -1
- package/cursor-accounts/badges.js +1 -1
- package/cursor-accounts/badges.js.map +1 -1
- package/dashboard/DashboardFailedRuns.js +4 -4
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/dashboard/DashboardKPICards.js +7 -7
- package/dashboard/DashboardKPICards.js.map +1 -1
- package/dashboard/OperationalDashboard.js +1 -1
- package/dashboard/OperationalDashboard.js.map +1 -1
- package/datastore/CollectionRecordsBrowser.js +10 -10
- package/datastore/CollectionRecordsBrowser.js.map +1 -1
- package/datastore/CollectionSchemaView.js +4 -4
- package/datastore/CollectionSchemaView.js.map +1 -1
- package/datastore/DatastoreDetailView.js +4 -4
- package/datastore/DatastoreDetailView.js.map +1 -1
- package/datastore/DatastoreSyncReport.js +1 -1
- package/datastore/DatastoreSyncReport.js.map +1 -1
- package/datastore/DeleteDatastoreDialog.js +1 -1
- package/datastore/DeleteDatastoreDialog.js.map +1 -1
- package/datastore/FieldValueControl.js +2 -2
- package/datastore/FieldValueControl.js.map +1 -1
- package/datastore/RecordFilterBuilder.js +4 -4
- package/datastore/RecordFilterBuilder.js.map +1 -1
- package/datastore/RecordFormPanel.js +5 -5
- package/datastore/RecordFormPanel.js.map +1 -1
- package/dependency-graph/DependencyGraph.js +1 -1
- package/dependency-graph/DependencyGraph.js.map +1 -1
- package/dependency-graph/DependencyTreeNode.js +8 -8
- package/dependency-graph/DependencyTreeNode.js.map +1 -1
- package/empty-state/EmptyState.js +3 -3
- package/empty-state/EmptyState.js.map +1 -1
- package/empty-state/useEmptyState.js +1 -1
- package/empty-state/useEmptyState.js.map +1 -1
- package/environment/CreateEnvironmentForm.js +2 -2
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.js +4 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentListPanel.js +9 -9
- package/environment/EnvironmentListPanel.js.map +1 -1
- package/environment/EnvironmentPicker.js +4 -4
- package/environment/EnvironmentPicker.js.map +1 -1
- package/environment/EnvironmentVariableEditor.js +17 -17
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/error/ErrorMessage.js +1 -1
- package/error/ErrorMessage.js.map +1 -1
- package/error/SecretFlowErrorGuide.js +1 -1
- package/error/SecretFlowErrorGuide.js.map +1 -1
- package/execution/ApprovalCard.js +8 -8
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactApplyButton.js +4 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ArtifactContentBody.js +3 -3
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactContentRenderer.js +19 -19
- package/execution/ArtifactContentRenderer.js.map +1 -1
- package/execution/ArtifactDocument.js +10 -10
- package/execution/ArtifactDocument.js.map +1 -1
- package/execution/ArtifactFileContent.js +4 -4
- package/execution/ArtifactFileContent.js.map +1 -1
- package/execution/ArtifactPreviewModal.js +11 -11
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ArtifactRowView.js +2 -2
- package/execution/ArtifactRowView.js.map +1 -1
- package/execution/ArtifactsWidget.js +1 -1
- package/execution/ArtifactsWidget.js.map +1 -1
- package/execution/ContextGauge.js +9 -9
- package/execution/ContextGauge.js.map +1 -1
- package/execution/EmptyChangeNotice.js +1 -1
- package/execution/EmptyChangeNotice.js.map +1 -1
- package/execution/ExecutionPhaseBadge.js +10 -10
- package/execution/ExecutionPhaseBadge.js.map +1 -1
- package/execution/ExecutionProgress.js +1 -1
- package/execution/ExecutionProgress.js.map +1 -1
- package/execution/FileChangeProgressBar.js +3 -3
- package/execution/FileChangeProgressBar.js.map +1 -1
- package/execution/FileChangesView.js +5 -5
- package/execution/FileChangesView.js.map +1 -1
- package/execution/FilePathLink.js +6 -6
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewAtoms.js +7 -7
- package/execution/FileReviewAtoms.js.map +1 -1
- package/execution/FileReviewCard.js +18 -18
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FileReviewDock.js +1 -1
- package/execution/FileReviewDock.js.map +1 -1
- package/execution/FollowUpInput.js +3 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/InteractionModeBadge.js +1 -1
- package/execution/InteractionModeBadge.js.map +1 -1
- package/execution/McpToolDetail.js +12 -12
- package/execution/McpToolDetail.js.map +1 -1
- package/execution/MessageAttachments.d.ts +52 -0
- package/execution/MessageAttachments.d.ts.map +1 -0
- package/execution/MessageAttachments.js +142 -0
- package/execution/MessageAttachments.js.map +1 -0
- package/execution/MessageEntry.d.ts +18 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +12 -11
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +15 -2
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +34 -17
- package/execution/MessageThread.js.map +1 -1
- package/execution/PlanArtifactCard.js +8 -8
- package/execution/PlanArtifactCard.js.map +1 -1
- package/execution/PlanCompletionCard.js +2 -2
- package/execution/PlanCompletionCard.js.map +1 -1
- package/execution/PlanDocumentMessage.js +2 -2
- package/execution/PlanDocumentMessage.js.map +1 -1
- package/execution/PlanStreamingCard.js +3 -3
- package/execution/PlanStreamingCard.js.map +1 -1
- package/execution/ResultView.js +17 -17
- package/execution/ResultView.js.map +1 -1
- package/execution/SessionVariablesInput.js +6 -6
- package/execution/SessionVariablesInput.js.map +1 -1
- package/execution/SetupProgress.js +2 -2
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.js +19 -19
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/SummarizationBadge.js +3 -3
- package/execution/SummarizationBadge.js.map +1 -1
- package/execution/SummarizationCard.js +2 -2
- package/execution/SummarizationCard.js.map +1 -1
- package/execution/TerminalSession.js +2 -2
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ThreadSkeleton.js +1 -1
- package/execution/ThreadSkeleton.js.map +1 -1
- package/execution/TodoCard.js +3 -3
- package/execution/TodoCard.js.map +1 -1
- package/execution/TodoList.js +8 -8
- package/execution/TodoList.js.map +1 -1
- package/execution/ToolArgsView.js +4 -4
- package/execution/ToolArgsView.js.map +1 -1
- package/execution/ToolCallDetail.js +4 -4
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallGroup.js +1 -1
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/ToolCallItem.js +16 -16
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.js +9 -9
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/UsageWidget.js +3 -3
- package/execution/UsageWidget.js.map +1 -1
- package/execution/WriteBackCard.js +16 -16
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/WriteBacksWidget.js +1 -1
- package/execution/WriteBacksWidget.js.map +1 -1
- package/execution/index.d.ts +2 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +1 -0
- package/execution/index.js.map +1 -1
- package/execution/tool-rendering-primitives.js +5 -5
- package/execution/tool-rendering-primitives.js.map +1 -1
- package/feedback/StigmerToaster.d.ts.map +1 -1
- package/feedback/StigmerToaster.js +9 -5
- package/feedback/StigmerToaster.js.map +1 -1
- package/file-reference/FileReferenceChipList.js +3 -3
- package/file-reference/FileReferenceChipList.js.map +1 -1
- package/github/GitHubRepoPicker.js +26 -26
- package/github/GitHubRepoPicker.js.map +1 -1
- package/github/decodeGitHubContent.d.ts +10 -5
- package/github/decodeGitHubContent.d.ts.map +1 -1
- package/github/decodeGitHubContent.js +21 -7
- package/github/decodeGitHubContent.js.map +1 -1
- package/github/useGitHubFileReader.d.ts.map +1 -1
- package/github/useGitHubFileReader.js +5 -5
- package/github/useGitHubFileReader.js.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -2
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.js +11 -11
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/PeopleWithAccess.js +4 -4
- package/iam-policy/PeopleWithAccess.js.map +1 -1
- package/iam-policy/PrincipalPicker.js +6 -6
- package/iam-policy/PrincipalPicker.js.map +1 -1
- package/iam-policy/ProviderBadge.js +1 -1
- package/iam-policy/ProviderBadge.js.map +1 -1
- package/iam-policy/RoleSelector.js +4 -4
- package/iam-policy/RoleSelector.js.map +1 -1
- package/iam-policy/SharePanel.js +1 -1
- package/iam-policy/SharePanel.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -6
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +11 -11
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +8 -8
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +16 -16
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/ProviderPicker.js +11 -11
- package/identity-provider/ProviderPicker.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +7 -7
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +4 -4
- package/index.d.ts.map +1 -1
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/inline-edit/InlineEditImage.js +5 -5
- package/inline-edit/InlineEditImage.js.map +1 -1
- package/inline-edit/InlineEditKeyValue.js +3 -3
- package/inline-edit/InlineEditKeyValue.js.map +1 -1
- package/inline-edit/InlineEditResourceList.js +8 -8
- package/inline-edit/InlineEditResourceList.js.map +1 -1
- package/inline-edit/InlineEditSelect.js +8 -8
- package/inline-edit/InlineEditSelect.js.map +1 -1
- package/inline-edit/InlineEditText.js +6 -6
- package/inline-edit/InlineEditText.js.map +1 -1
- package/inline-edit/InlineEditTextarea.js +4 -4
- package/inline-edit/InlineEditTextarea.js.map +1 -1
- package/internal/ApprovalPeekBar.js +3 -3
- package/internal/ApprovalPeekBar.js.map +1 -1
- package/internal/BoundedContent.d.ts +1 -1
- package/internal/BoundedContent.d.ts.map +1 -1
- package/internal/BoundedContent.js +2 -2
- package/internal/BoundedContent.js.map +1 -1
- package/internal/CloudFeatureNotice.js +1 -1
- package/internal/CloudFeatureNotice.js.map +1 -1
- package/internal/DecisionButton.js +6 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/InCardDecisionError.js +1 -1
- package/internal/InCardDecisionError.js.map +1 -1
- package/internal/JumpToLatestButton.js +3 -3
- package/internal/JumpToLatestButton.js.map +1 -1
- package/internal/MermaidDiagram.js +2 -2
- package/internal/MermaidDiagram.js.map +1 -1
- package/internal/Pagination.js +2 -2
- package/internal/Pagination.js.map +1 -1
- package/internal/ResizableSplit.d.ts +28 -6
- package/internal/ResizableSplit.d.ts.map +1 -1
- package/internal/ResizableSplit.js +18 -4
- package/internal/ResizableSplit.js.map +1 -1
- package/internal/RevealToggle.js +2 -2
- package/internal/RevealToggle.js.map +1 -1
- package/internal/ScrollFade.js +2 -2
- package/internal/ScrollFade.js.map +1 -1
- package/internal/VirtualizedThread.js +2 -2
- package/internal/VirtualizedThread.js.map +1 -1
- package/internal/file-icons/index.js +2 -2
- package/internal/file-icons/index.js.map +1 -1
- package/internal/file-tree/FileTreeNode.js +3 -3
- package/internal/file-tree/FileTreeNode.js.map +1 -1
- package/internal/form-primitives.d.ts +15 -0
- package/internal/form-primitives.d.ts.map +1 -1
- package/internal/form-primitives.js +17 -2
- package/internal/form-primitives.js.map +1 -1
- package/internal/markdown-components.js +23 -23
- package/internal/markdown-components.js.map +1 -1
- package/internal/menu.js +5 -5
- package/internal/menu.js.map +1 -1
- package/internal/scroll-area.js +1 -1
- package/internal/scroll-area.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +7 -7
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.js +2 -2
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/tooltip.d.ts.map +1 -1
- package/internal/tooltip.js +4 -6
- package/internal/tooltip.js.map +1 -1
- package/invitation/InvitationCreatedAlert.js +1 -1
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.js +23 -23
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.js +12 -12
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/ResourceCountCard.js +4 -4
- package/library/ResourceCountCard.js.map +1 -1
- package/library/ScopeToggle.js +4 -4
- package/library/ScopeToggle.js.map +1 -1
- package/library/VisibilityOptionRow.d.ts +1 -1
- package/library/VisibilityOptionRow.d.ts.map +1 -1
- package/library/VisibilityOptionRow.js +22 -22
- package/library/VisibilityOptionRow.js.map +1 -1
- package/library/VisibilitySelector.js +5 -5
- package/library/VisibilitySelector.js.map +1 -1
- package/manifest/ApplyManifestDialog.js +6 -6
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/manifest/EditResourceYamlDialog.js +2 -2
- package/manifest/EditResourceYamlDialog.js.map +1 -1
- package/manifest/RedactedSecretsNotice.js +1 -1
- package/manifest/RedactedSecretsNotice.js.map +1 -1
- package/manifest/YamlEditor.js +1 -1
- package/manifest/YamlEditor.js.map +1 -1
- package/mcp-server/McpServerConfigPanel.js +22 -22
- package/mcp-server/McpServerConfigPanel.js.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +43 -17
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +112 -63
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/McpServerPicker.js +16 -16
- package/mcp-server/McpServerPicker.js.map +1 -1
- package/mcp-server/McpToolSelector.js +4 -4
- package/mcp-server/McpToolSelector.js.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -2
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/OAuthCallbackHandler.js +4 -4
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/OAuthRequiredNotice.js +1 -1
- package/mcp-server/OAuthRequiredNotice.js.map +1 -1
- package/mcp-server/StdioSandboxNotice.js +1 -1
- package/mcp-server/StdioSandboxNotice.js.map +1 -1
- package/mcp-server/index.d.ts +1 -1
- package/mcp-server/index.d.ts.map +1 -1
- package/mcp-server/index.js +1 -1
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +4 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +8 -8
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/steps/ReviewStep.js +3 -3
- package/mcp-server/steps/ReviewStep.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +29 -0
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +49 -10
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/models/HarnessSelector.js +8 -8
- package/models/HarnessSelector.js.map +1 -1
- package/models/ModelSelector.js +11 -11
- package/models/ModelSelector.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -4
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +8 -8
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/oauth-app/OAuthAppListPanel.js +6 -6
- package/oauth-app/OAuthAppListPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.js +4 -4
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.js +10 -10
- package/organization/OrgProfilePanel.js.map +1 -1
- package/organization/OrgSwitcher.js +5 -5
- package/organization/OrgSwitcher.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.js +5 -5
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +8 -8
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.js +10 -10
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +2 -2
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/portal-container.d.ts +34 -9
- package/portal-container.d.ts.map +1 -1
- package/portal-container.js +33 -8
- package/portal-container.js.map +1 -1
- package/pricing-governance/BaselineEditor.js +5 -5
- package/pricing-governance/BaselineEditor.js.map +1 -1
- package/pricing-governance/ModelCatalogPanel.js +5 -5
- package/pricing-governance/ModelCatalogPanel.js.map +1 -1
- package/pricing-governance/ModelGovernanceDetail.js +7 -7
- package/pricing-governance/ModelGovernanceDetail.js.map +1 -1
- package/pricing-governance/OperatorAccessNotice.js +1 -1
- package/pricing-governance/OperatorAccessNotice.js.map +1 -1
- package/pricing-governance/PricingGovernanceConsole.js +8 -8
- package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
- package/pricing-governance/PricingGovernancePanel.js +4 -4
- package/pricing-governance/PricingGovernancePanel.js.map +1 -1
- package/pricing-governance/RetireConfirm.js +1 -1
- package/pricing-governance/RetireConfirm.js.map +1 -1
- package/pricing-governance/governance-primitives.js +6 -6
- package/pricing-governance/governance-primitives.js.map +1 -1
- package/resource-creation/CreationPicker.js +7 -7
- package/resource-creation/CreationPicker.js.map +1 -1
- package/resource-creation/StepIndicator.js +4 -4
- package/resource-creation/StepIndicator.js.map +1 -1
- package/resource-creation/TemplateCard.js +15 -15
- package/resource-creation/TemplateCard.js.map +1 -1
- package/resource-creation/TemplateGallery.js +5 -5
- package/resource-creation/TemplateGallery.js.map +1 -1
- package/resource-creation/WizardNav.js +2 -2
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-creation/WizardShell.js +2 -2
- package/resource-creation/WizardShell.js.map +1 -1
- package/resource-detail/ConfirmDialog.js +3 -3
- package/resource-detail/ConfirmDialog.js.map +1 -1
- package/resource-detail/ResourceActionBar.js +2 -2
- package/resource-detail/ResourceActionBar.js.map +1 -1
- package/resource-detail/ResourceDetailShell.js +3 -3
- package/resource-detail/ResourceDetailShell.js.map +1 -1
- package/resource-detail/Section.js +1 -1
- package/resource-detail/Section.js.map +1 -1
- package/resource-workbench/components/BulkActionBar.js +4 -4
- package/resource-workbench/components/BulkActionBar.js.map +1 -1
- package/resource-workbench/components/ColumnHeader.js +3 -3
- package/resource-workbench/components/ColumnHeader.js.map +1 -1
- package/resource-workbench/components/FilterBar.js +3 -3
- package/resource-workbench/components/FilterBar.js.map +1 -1
- package/resource-workbench/components/ResourceAvatar.js +18 -18
- package/resource-workbench/components/ResourceAvatar.js.map +1 -1
- package/resource-workbench/components/ResourceCards.js +2 -2
- package/resource-workbench/components/ResourceCards.js.map +1 -1
- package/resource-workbench/components/ResourceInspector.js +1 -1
- package/resource-workbench/components/ResourceInspector.js.map +1 -1
- package/resource-workbench/components/ResourceList.js +2 -2
- package/resource-workbench/components/ResourceList.js.map +1 -1
- package/resource-workbench/components/ResourceTable.js +5 -5
- package/resource-workbench/components/ResourceTable.js.map +1 -1
- package/resource-workbench/components/ResourceWorkbench.js +11 -11
- package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
- package/resource-workbench/components/SelectionCheckbox.js +1 -1
- package/resource-workbench/components/SelectionCheckbox.js.map +1 -1
- package/resource-workbench/components/StatusBadge.js +16 -16
- package/resource-workbench/components/StatusBadge.js.map +1 -1
- package/resource-workbench/components/ViewSwitcher.js +4 -4
- package/resource-workbench/components/ViewSwitcher.js.map +1 -1
- package/schedule/CadenceField.js +14 -14
- package/schedule/CadenceField.js.map +1 -1
- package/schedule/ScheduleDetailView.js +39 -39
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.js +9 -9
- package/schedule/ScheduleForm.js.map +1 -1
- package/schedule/ScheduleRowActions.js +1 -1
- package/schedule/ScheduleRowActions.js.map +1 -1
- package/schedule/ScheduleRunsTable.js +17 -17
- package/schedule/ScheduleRunsTable.js.map +1 -1
- package/schedule/TimeZoneField.js +5 -5
- package/schedule/TimeZoneField.js.map +1 -1
- package/schedule/scheduleColumns.js +5 -5
- package/schedule/scheduleColumns.js.map +1 -1
- package/session/NewSessionViewer.js +3 -3
- package/session/NewSessionViewer.js.map +1 -1
- package/session/PlanEditor.js +9 -9
- package/session/PlanEditor.js.map +1 -1
- package/session/PlanStreamingDocument.js +2 -2
- package/session/PlanStreamingDocument.js.map +1 -1
- package/session/SessionViewer.js +21 -21
- package/session/SessionViewer.js.map +1 -1
- package/session/SessionViewerLayout.d.ts +11 -8
- package/session/SessionViewerLayout.d.ts.map +1 -1
- package/session/SessionViewerLayout.js +1 -1
- package/session/SessionViewerLayout.js.map +1 -1
- package/session/facets/ArtifactsTab.js +2 -2
- package/session/facets/ArtifactsTab.js.map +1 -1
- package/session/facets/ChangesTab.js +3 -3
- package/session/facets/ChangesTab.js.map +1 -1
- package/session/facets/SetupTab.js +11 -11
- package/session/facets/SetupTab.js.map +1 -1
- package/session/facets/UsageTab.js +1 -1
- package/session/facets/UsageTab.js.map +1 -1
- package/session/useSessionConversation.d.ts +8 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +12 -2
- package/session/useSessionConversation.js.map +1 -1
- package/settings/ApiKeysSection.js +1 -1
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.js +1 -1
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +4 -4
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.js +1 -1
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.js +1 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.js +1 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.js +1 -1
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.js +1 -1
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.js +1 -1
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.js +1 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/AgentShareList.js +5 -5
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +30 -30
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sharing/SharedAgentChat.js +6 -6
- package/sharing/SharedAgentChat.js.map +1 -1
- package/sidebar/SettingsSidebar.js +5 -5
- package/sidebar/SettingsSidebar.js.map +1 -1
- package/sidebar/WorkspaceSidebar.js +13 -13
- package/sidebar/WorkspaceSidebar.js.map +1 -1
- package/sidebar/chrome.js +5 -5
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDetailView.js +13 -13
- package/skill/SkillDetailView.js.map +1 -1
- package/skill/SkillDiffDialog.js +2 -2
- package/skill/SkillDiffDialog.js.map +1 -1
- package/skill/SkillFileBrowser.js +4 -4
- package/skill/SkillFileBrowser.js.map +1 -1
- package/skill/SkillPicker.js +10 -10
- package/skill/SkillPicker.js.map +1 -1
- package/skill/SkillUploader.js +8 -8
- package/skill/SkillUploader.js.map +1 -1
- package/src/__tests__/helpers/compile-sdk-styles.ts +33 -0
- package/src/__tests__/portal-container.test.tsx +97 -0
- package/src/__tests__/preflight-parity.layout.test.tsx +156 -0
- package/src/__tests__/scope-unprefixed.test.ts +86 -0
- package/src/__tests__/styles-border-layer-invariant.test.ts +86 -58
- package/src/__tests__/styles-dist-isolation.test.ts +195 -0
- package/src/__tests__/styles-host-isolation.layout.test.tsx +204 -0
- package/src/access/ManageAccessButton.tsx +3 -3
- package/src/access/ManageAccessDialog.tsx +19 -19
- package/src/action-menu/ActionMenu.tsx +8 -8
- package/src/activity/useRecentActivity.ts +6 -1
- package/src/agent/AgentDetailView.tsx +112 -112
- package/src/agent/AgentPicker.tsx +26 -26
- package/src/agent/steps/CapabilitiesStep.tsx +36 -36
- package/src/agent/steps/IdentityStep.tsx +45 -45
- package/src/agent/steps/ReviewStep.tsx +18 -18
- package/src/agent-instance/AgentInstanceDetailPanel.tsx +45 -45
- package/src/agent-instance/AgentInstanceList.tsx +36 -36
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +35 -35
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +0 -6
- package/src/api-key/ApiKeyCreatedAlert.tsx +15 -15
- package/src/api-key/ApiKeyListPanel.tsx +28 -28
- package/src/api-key/CreateApiKeyForm.tsx +25 -25
- package/src/attachment/AttachmentChipList.tsx +321 -75
- package/src/attachment/AttachmentImageLightbox.tsx +154 -0
- package/src/attachment/__tests__/AttachmentChipList.test.tsx +240 -17
- package/src/attachment/attachment-utils.ts +8 -5
- package/src/attachment/useObjectUrl.ts +28 -0
- package/src/billing/AutoRechargeCard.tsx +26 -26
- package/src/billing/BillingSection.tsx +14 -14
- package/src/billing/CreditBalanceCard.tsx +7 -7
- package/src/billing/CreditLedgerTable.tsx +27 -27
- package/src/billing/CreditPackGrid.tsx +13 -13
- package/src/billing/LowBalanceBanner.tsx +6 -6
- package/src/billing/PaymentMethodCard.tsx +13 -13
- package/src/button/Button.tsx +10 -10
- package/src/button/__tests__/Button.test.tsx +9 -9
- package/src/channel/AgentChannelsPanel.tsx +33 -33
- package/src/channel/ChannelConversationsDialog.tsx +21 -21
- package/src/channel/ChannelCredentialsDialog.tsx +13 -13
- package/src/channel/ChannelTemplatesDialog.tsx +34 -34
- package/src/channel/ChannelToolCredentials.tsx +5 -5
- package/src/channel/ConnectSlackDialog.tsx +48 -48
- package/src/channel/ConnectWhatsAppDialog.tsx +42 -42
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +4 -9
- package/src/channel/connect/ServingAppSection.tsx +14 -14
- package/src/channel/connect/ToolCredentialsSection.tsx +5 -5
- package/src/channel/connect/VerbatimRefusal.tsx +1 -1
- package/src/channel/connect/icons.tsx +1 -1
- package/src/channel-app/ChannelAppDetailPanel.tsx +44 -44
- package/src/channel-app/ChannelAppListPanel.tsx +15 -15
- package/src/channel-app/CreateChannelAppForm.tsx +37 -37
- package/src/channel-app/internal.tsx +21 -21
- package/src/composer/ComposerToolbar.tsx +15 -15
- package/src/composer/ConfigureMenu.tsx +22 -22
- package/src/composer/ContextChip.tsx +12 -12
- package/src/composer/ContextPopover.tsx +8 -8
- package/src/composer/InteractionModePicker.tsx +14 -14
- package/src/composer/SessionComposer.tsx +24 -24
- package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +16 -15
- package/src/composer/__tests__/SessionComposer-serviceTier.test.tsx +2 -7
- package/src/composer/icons.tsx +5 -5
- package/src/conversation/ConversationAttentionBanner.tsx +6 -6
- package/src/conversation/ConversationComposer.tsx +13 -13
- package/src/conversation/ConversationControlBanner.tsx +11 -11
- package/src/conversation/ConversationListPane.tsx +38 -38
- package/src/conversation/ConversationMediaAttachment.tsx +308 -0
- package/src/conversation/ConversationTimelineView.tsx +102 -52
- package/src/conversation/ConversationsWorkbench.tsx +12 -10
- package/src/conversation/__tests__/ConversationComposer.test.tsx +1 -1
- package/src/conversation/__tests__/ConversationTimelineView.test.tsx +233 -6
- package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +67 -1
- package/src/conversation/__tests__/useConversationMediaUrl.test.tsx +66 -0
- package/src/conversation/conversationPresentation.ts +10 -3
- package/src/conversation/index.ts +6 -0
- package/src/conversation/useConversationMediaUrl.ts +121 -0
- package/src/cursor-accounts/CursorAccountEditor.tsx +13 -13
- package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +3 -3
- package/src/cursor-accounts/CursorAccountsConsole.tsx +35 -35
- package/src/cursor-accounts/MemberCoverageTable.tsx +29 -29
- package/src/cursor-accounts/MemberKeysPanel.tsx +17 -17
- package/src/cursor-accounts/badges.tsx +4 -4
- package/src/dashboard/DashboardFailedRuns.tsx +17 -17
- package/src/dashboard/DashboardKPICards.tsx +12 -12
- package/src/dashboard/OperationalDashboard.tsx +2 -2
- package/src/datastore/CollectionRecordsBrowser.tsx +35 -35
- package/src/datastore/CollectionSchemaView.tsx +43 -43
- package/src/datastore/DatastoreDetailView.tsx +18 -18
- package/src/datastore/DatastoreSyncReport.tsx +13 -13
- package/src/datastore/DeleteDatastoreDialog.tsx +21 -21
- package/src/datastore/FieldValueControl.tsx +7 -7
- package/src/datastore/RecordFilterBuilder.tsx +35 -35
- package/src/datastore/RecordFormPanel.tsx +35 -35
- package/src/dependency-graph/DependencyGraph.tsx +6 -6
- package/src/dependency-graph/DependencyTreeNode.tsx +21 -21
- package/src/empty-state/EmptyState.tsx +7 -7
- package/src/empty-state/useEmptyState.ts +1 -1
- package/src/environment/CreateEnvironmentForm.tsx +24 -24
- package/src/environment/EnvVarForm.tsx +40 -40
- package/src/environment/EnvironmentListPanel.tsx +19 -19
- package/src/environment/EnvironmentPicker.tsx +22 -22
- package/src/environment/EnvironmentVariableEditor.tsx +53 -53
- package/src/error/ErrorMessage.tsx +22 -22
- package/src/error/SecretFlowErrorGuide.tsx +19 -19
- package/src/execution/ApprovalCard.tsx +19 -19
- package/src/execution/ArtifactApplyButton.tsx +7 -7
- package/src/execution/ArtifactContentBody.tsx +11 -11
- package/src/execution/ArtifactContentRenderer.tsx +29 -29
- package/src/execution/ArtifactDocument.tsx +22 -22
- package/src/execution/ArtifactFileContent.tsx +6 -6
- package/src/execution/ArtifactPreviewModal.tsx +33 -33
- package/src/execution/ArtifactRowView.tsx +13 -13
- package/src/execution/ArtifactsWidget.tsx +4 -4
- package/src/execution/ContextGauge.tsx +24 -24
- package/src/execution/EmptyChangeNotice.tsx +1 -1
- package/src/execution/ExecutionPhaseBadge.tsx +12 -12
- package/src/execution/ExecutionProgress.tsx +2 -2
- package/src/execution/FileChangeProgressBar.tsx +9 -9
- package/src/execution/FileChangesView.tsx +12 -12
- package/src/execution/FilePathLink.tsx +10 -10
- package/src/execution/FileReviewAtoms.tsx +9 -9
- package/src/execution/FileReviewCard.tsx +37 -37
- package/src/execution/FileReviewDock.tsx +2 -2
- package/src/execution/FollowUpInput.tsx +9 -9
- package/src/execution/InteractionModeBadge.tsx +2 -2
- package/src/execution/McpToolDetail.tsx +28 -28
- package/src/execution/MessageAttachments.tsx +364 -0
- package/src/execution/MessageEntry.tsx +60 -22
- package/src/execution/MessageThread.tsx +72 -32
- package/src/execution/PlanArtifactCard.tsx +22 -22
- package/src/execution/PlanCompletionCard.tsx +10 -10
- package/src/execution/PlanDocumentMessage.tsx +6 -6
- package/src/execution/PlanStreamingCard.tsx +11 -11
- package/src/execution/ResultView.tsx +44 -44
- package/src/execution/SessionVariablesInput.tsx +38 -38
- package/src/execution/SetupProgress.tsx +5 -5
- package/src/execution/SubAgentSection.tsx +42 -42
- package/src/execution/SummarizationBadge.tsx +15 -15
- package/src/execution/SummarizationCard.tsx +11 -11
- package/src/execution/TerminalSession.tsx +7 -7
- package/src/execution/ThreadSkeleton.tsx +10 -10
- package/src/execution/TodoCard.tsx +11 -11
- package/src/execution/TodoList.tsx +13 -13
- package/src/execution/ToolArgsView.tsx +8 -8
- package/src/execution/ToolCallDetail.tsx +7 -7
- package/src/execution/ToolCallGroup.tsx +1 -1
- package/src/execution/ToolCallItem.tsx +28 -28
- package/src/execution/ToolRunGroup.tsx +16 -16
- package/src/execution/UsageWidget.tsx +12 -12
- package/src/execution/WriteBackCard.tsx +30 -30
- package/src/execution/WriteBacksWidget.tsx +4 -4
- package/src/execution/__tests__/ApprovalCard.test.tsx +12 -12
- package/src/execution/__tests__/ArtifactContentRenderer.test.tsx +3 -3
- package/src/execution/__tests__/FileChangesView.test.tsx +2 -2
- package/src/execution/__tests__/FilePathLink.test.tsx +1 -1
- package/src/execution/__tests__/FileReviewDock.test.tsx +1 -1
- package/src/execution/__tests__/MessageEntry-attachments.test.tsx +228 -0
- package/src/execution/__tests__/MessageThread.test.tsx +1 -1
- package/src/execution/__tests__/TerminalSession.test.tsx +1 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +1 -1
- package/src/execution/__tests__/ToolCallGroup.test.tsx +4 -4
- package/src/execution/__tests__/ToolCallItem.test.tsx +9 -9
- package/src/execution/__tests__/ToolRunGroup.test.tsx +6 -6
- package/src/execution/__tests__/WriteBackCard.test.tsx +4 -4
- package/src/execution/__tests__/buildThreadItems-attachments.test.ts +174 -0
- package/src/execution/__tests__/message-entry.test.tsx +8 -8
- package/src/execution/__tests__/thread-memoization.test.ts +2 -2
- package/src/execution/__tests__/thread-skeleton.test.tsx +1 -1
- package/src/execution/__tests__/virtualized-thread.test.tsx +1 -1
- package/src/execution/index.ts +6 -0
- package/src/execution/tool-rendering-primitives.tsx +12 -12
- package/src/feedback/StigmerToaster.tsx +8 -5
- package/src/file-reference/FileReferenceChipList.tsx +5 -5
- package/src/github/GitHubRepoPicker.tsx +60 -60
- package/src/github/__tests__/decodeGitHubContent.test.ts +42 -1
- package/src/github/decodeGitHubContent.ts +22 -5
- package/src/github/useGitHubFileReader.ts +13 -3
- package/src/iam-policy/GrantAccessForm.tsx +11 -11
- package/src/iam-policy/OrgMembersPanel.tsx +48 -48
- package/src/iam-policy/PeopleWithAccess.tsx +23 -23
- package/src/iam-policy/PrincipalPicker.tsx +34 -34
- package/src/iam-policy/ProviderBadge.tsx +2 -2
- package/src/iam-policy/RoleSelector.tsx +9 -9
- package/src/iam-policy/SharePanel.tsx +5 -5
- package/src/identity-provider/CreateIdentityProviderForm.tsx +47 -47
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +73 -73
- package/src/identity-provider/IdentityProviderListPanel.tsx +33 -33
- package/src/identity-provider/IdentityProviderWizard.tsx +72 -72
- package/src/identity-provider/ProviderPicker.tsx +17 -17
- package/src/identity-provider/SsoLoginPrompt.tsx +39 -39
- package/src/index.ts +6 -0
- package/src/inline-edit/InlineEditImage.tsx +26 -26
- package/src/inline-edit/InlineEditKeyValue.tsx +44 -44
- package/src/inline-edit/InlineEditResourceList.tsx +48 -48
- package/src/inline-edit/InlineEditSelect.tsx +22 -22
- package/src/inline-edit/InlineEditText.tsx +29 -29
- package/src/inline-edit/InlineEditTextarea.tsx +27 -27
- package/src/internal/ApprovalPeekBar.tsx +9 -9
- package/src/internal/BoundedContent.tsx +3 -3
- package/src/internal/CloudFeatureNotice.tsx +3 -3
- package/src/internal/DecisionButton.tsx +10 -10
- package/src/internal/InCardDecisionError.tsx +1 -1
- package/src/internal/JumpToLatestButton.tsx +9 -9
- package/src/internal/MermaidDiagram.tsx +5 -5
- package/src/internal/Pagination.tsx +5 -5
- package/src/internal/ResizableSplit.tsx +61 -20
- package/src/internal/RevealToggle.tsx +5 -5
- package/src/internal/ScrollFade.tsx +2 -2
- package/src/internal/VirtualizedThread.tsx +6 -6
- package/src/internal/__tests__/BoundedContent.test.tsx +1 -1
- package/src/internal/__tests__/DecisionButton.test.tsx +14 -14
- package/src/internal/__tests__/ResizableSplit.layout.test.tsx +136 -0
- package/src/internal/__tests__/ResizableSplit.test.tsx +49 -2
- package/src/internal/__tests__/ThreadCardShell.test.tsx +4 -4
- package/src/internal/__tests__/markdown-components.test.tsx +2 -2
- package/src/internal/__tests__/thread-animation.test.tsx +6 -6
- package/src/internal/file-icons/index.tsx +2 -2
- package/src/internal/file-tree/FileTreeNode.tsx +9 -9
- package/src/internal/file-tree/__tests__/FileTreeNode-explorer.test.tsx +1 -1
- package/src/internal/form-primitives.tsx +22 -6
- package/src/internal/markdown-components.tsx +24 -24
- package/src/internal/menu.tsx +18 -18
- package/src/internal/scroll-area.tsx +6 -6
- package/src/internal/thread-card/ThreadCardShell.tsx +10 -10
- package/src/internal/thread-card/glyphs.tsx +3 -3
- package/src/internal/tooltip.tsx +9 -11
- package/src/invitation/InvitationCreatedAlert.tsx +15 -15
- package/src/invitation/InvitationManager.tsx +79 -79
- package/src/invitation/InvitationRedemption.tsx +49 -49
- package/src/library/ResourceCountCard.tsx +7 -7
- package/src/library/ScopeToggle.tsx +7 -7
- package/src/library/VisibilityOptionRow.tsx +30 -30
- package/src/library/VisibilitySelector.tsx +19 -19
- package/src/library/__tests__/VisibilitySelector.test.tsx +0 -6
- package/src/manifest/ApplyManifestDialog.tsx +36 -36
- package/src/manifest/EditResourceYamlDialog.tsx +32 -32
- package/src/manifest/RedactedSecretsNotice.tsx +2 -2
- package/src/manifest/YamlEditor.tsx +1 -1
- package/src/mcp-server/McpServerConfigPanel.tsx +70 -70
- package/src/mcp-server/McpServerConnectDialog.tsx +80 -53
- package/src/mcp-server/McpServerDetailView.tsx +325 -224
- package/src/mcp-server/McpServerPicker.tsx +50 -50
- package/src/mcp-server/McpToolSelector.tsx +26 -26
- package/src/mcp-server/OAuthAppForm.tsx +32 -32
- package/src/mcp-server/OAuthCallbackHandler.tsx +11 -11
- package/src/mcp-server/OAuthRequiredNotice.tsx +3 -3
- package/src/mcp-server/StdioSandboxNotice.tsx +3 -3
- package/src/mcp-server/__tests__/McpServerDetailView.test.tsx +162 -7
- package/src/mcp-server/__tests__/useMcpServerOAuthConnect.test.tsx +159 -0
- package/src/mcp-server/index.ts +4 -1
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +71 -71
- package/src/mcp-server/steps/IdentityTransportStep.tsx +94 -94
- package/src/mcp-server/steps/ReviewStep.tsx +17 -17
- package/src/mcp-server/useMcpServerOAuthConnect.ts +65 -10
- package/src/models/HarnessSelector.tsx +8 -8
- package/src/models/ModelSelector.tsx +58 -58
- package/src/models/__tests__/ModelSelector-serviceTier.test.tsx +2 -7
- package/src/oauth-app/CreateOAuthAppForm.tsx +28 -28
- package/src/oauth-app/OAuthAppDetailPanel.tsx +51 -51
- package/src/oauth-app/OAuthAppListPanel.tsx +14 -14
- package/src/organization/CreateOrganizationForm.tsx +37 -37
- package/src/organization/OrgProfilePanel.tsx +65 -65
- package/src/organization/OrgSwitcher.tsx +33 -33
- package/src/platform-client/CreatePlatformClientForm.tsx +59 -59
- package/src/platform-client/PlatformClientDetailPanel.tsx +107 -107
- package/src/platform-client/PlatformClientListPanel.tsx +38 -38
- package/src/platform-client/PlatformClientSecretAlert.tsx +18 -18
- package/src/portal-container.ts +36 -9
- package/src/pricing-governance/BaselineEditor.tsx +29 -29
- package/src/pricing-governance/ModelCatalogPanel.tsx +28 -28
- package/src/pricing-governance/ModelGovernanceDetail.tsx +35 -35
- package/src/pricing-governance/OperatorAccessNotice.tsx +3 -3
- package/src/pricing-governance/PricingGovernanceConsole.tsx +31 -31
- package/src/pricing-governance/PricingGovernancePanel.tsx +19 -19
- package/src/pricing-governance/RetireConfirm.tsx +7 -7
- package/src/pricing-governance/governance-primitives.tsx +12 -12
- package/src/resource-creation/CreationPicker.tsx +23 -23
- package/src/resource-creation/StepIndicator.tsx +17 -17
- package/src/resource-creation/TemplateCard.tsx +23 -23
- package/src/resource-creation/TemplateGallery.tsx +13 -13
- package/src/resource-creation/WizardNav.tsx +19 -19
- package/src/resource-creation/WizardShell.tsx +7 -7
- package/src/resource-detail/ConfirmDialog.tsx +16 -16
- package/src/resource-detail/ResourceActionBar.tsx +6 -6
- package/src/resource-detail/ResourceDetailShell.tsx +14 -14
- package/src/resource-detail/Section.tsx +10 -10
- package/src/resource-workbench/components/BulkActionBar.tsx +13 -13
- package/src/resource-workbench/components/ColumnHeader.tsx +9 -9
- package/src/resource-workbench/components/FilterBar.tsx +9 -9
- package/src/resource-workbench/components/ResourceAvatar.tsx +19 -19
- package/src/resource-workbench/components/ResourceCards.tsx +8 -8
- package/src/resource-workbench/components/ResourceInspector.tsx +8 -8
- package/src/resource-workbench/components/ResourceList.tsx +7 -7
- package/src/resource-workbench/components/ResourceTable.tsx +12 -12
- package/src/resource-workbench/components/ResourceWorkbench.tsx +42 -42
- package/src/resource-workbench/components/SelectionCheckbox.tsx +2 -2
- package/src/resource-workbench/components/StatusBadge.tsx +17 -17
- package/src/resource-workbench/components/ViewSwitcher.tsx +7 -7
- package/src/schedule/CadenceField.tsx +36 -36
- package/src/schedule/ScheduleDetailView.tsx +105 -105
- package/src/schedule/ScheduleForm.tsx +49 -49
- package/src/schedule/ScheduleRowActions.tsx +4 -4
- package/src/schedule/ScheduleRunsTable.tsx +43 -43
- package/src/schedule/TimeZoneField.tsx +12 -12
- package/src/schedule/__tests__/scheduleCreation.test.tsx +0 -7
- package/src/schedule/scheduleColumns.tsx +7 -7
- package/src/session/NewSessionViewer.tsx +5 -5
- package/src/session/PlanEditor.tsx +37 -37
- package/src/session/PlanStreamingDocument.tsx +8 -8
- package/src/session/SessionViewer.tsx +49 -48
- package/src/session/SessionViewerLayout.tsx +14 -11
- package/src/session/__tests__/NewSessionViewer.test.tsx +4 -4
- package/src/session/__tests__/PlanEditor.test.tsx +2 -2
- package/src/session/__tests__/SessionViewerLayout.test.tsx +20 -8
- package/src/session/__tests__/useSessionConversation.test.tsx +62 -0
- package/src/session/facets/ArtifactsTab.tsx +3 -3
- package/src/session/facets/ChangesTab.tsx +5 -5
- package/src/session/facets/SetupTab.tsx +26 -26
- package/src/session/facets/UsageTab.tsx +2 -2
- package/src/session/useSessionConversation.ts +21 -2
- package/src/settings/ApiKeysSection.tsx +6 -6
- package/src/settings/ChannelAppsSection.tsx +6 -6
- package/src/settings/EnvironmentsSection.tsx +15 -15
- package/src/settings/IdentityProvidersSection.tsx +7 -7
- package/src/settings/InvitationsSection.tsx +4 -4
- package/src/settings/MembersSection.tsx +5 -5
- package/src/settings/OAuthAppsSection.tsx +6 -6
- package/src/settings/OrgProfileSection.tsx +3 -3
- package/src/settings/PlatformClientsSection.tsx +7 -7
- package/src/settings/UsageSection.tsx +3 -3
- package/src/sharing/AgentShareList.tsx +39 -39
- package/src/sharing/ShareAgentDialog.tsx +149 -149
- package/src/sharing/SharedAgentChat.tsx +24 -24
- package/src/sharing/__tests__/AgentShareList.test.tsx +0 -7
- package/src/sidebar/SettingsSidebar.tsx +7 -7
- package/src/sidebar/WorkspaceSidebar.tsx +25 -25
- package/src/sidebar/__tests__/SettingsSidebar.test.tsx +3 -7
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -11
- package/src/sidebar/chrome.tsx +16 -16
- package/src/skill/SkillDetailView.tsx +54 -54
- package/src/skill/SkillDiffDialog.tsx +25 -25
- package/src/skill/SkillFileBrowser.tsx +22 -22
- package/src/skill/SkillPicker.tsx +28 -28
- package/src/skill/SkillUploader.tsx +67 -67
- package/src/styles.css +136 -15
- package/src/switch/Switch.tsx +9 -9
- package/src/switch/__tests__/Switch.test.tsx +3 -3
- package/src/tabs/Tabs.tsx +11 -11
- package/src/usage/AgentBreakdownList.tsx +18 -18
- package/src/usage/CreditRunwayIndicator.tsx +4 -4
- package/src/usage/ExportButton.tsx +8 -8
- package/src/usage/HarnessSplitCard.tsx +14 -14
- package/src/usage/OrgUsagePanel.tsx +71 -71
- package/src/user/UserMenu.tsx +13 -13
- package/src/version-history/DiffFileList.tsx +13 -13
- package/src/version-history/DiffSummary.tsx +3 -3
- package/src/version-history/DiffViewer.tsx +14 -14
- package/src/version-history/MultiFileDiffView.tsx +6 -6
- package/src/version-history/UnifiedDiffView.tsx +4 -4
- package/src/version-history/VersionTimeline.tsx +21 -21
- package/src/version-history/VersionTimelineEntry.tsx +28 -28
- package/src/version-history/__tests__/UnifiedDiffView.test.tsx +2 -2
- package/src/workflow/ApprovalFormBuilder.tsx +48 -48
- package/src/workflow/BranchConditionBuilder.tsx +21 -21
- package/src/workflow/CanvasContextMenu.tsx +10 -10
- package/src/workflow/CanvasTransitionEdge.tsx +16 -16
- package/src/workflow/CostByWorkflowChart.tsx +18 -18
- package/src/workflow/ExecutionActiveTaskIndicator.tsx +13 -13
- package/src/workflow/ExecutionSummaryWidget.tsx +29 -29
- package/src/workflow/ExecutionTrendChart.tsx +25 -25
- package/src/workflow/FailedRunsWidget.tsx +14 -14
- package/src/workflow/PendingApprovalsWidget.tsx +19 -19
- package/src/workflow/TaskConfigForm.tsx +32 -32
- package/src/workflow/TaskPickerPopover.tsx +22 -22
- package/src/workflow/ViewYamlDialog.tsx +12 -12
- package/src/workflow/WorkflowAgentCallTranscript.tsx +15 -15
- package/src/workflow/WorkflowApprovalList.tsx +3 -3
- package/src/workflow/WorkflowArchitectDialog.tsx +80 -80
- package/src/workflow/WorkflowArtifactDocument.tsx +17 -17
- package/src/workflow/WorkflowCanvasEditor.tsx +22 -22
- package/src/workflow/WorkflowCanvasInner.tsx +3 -3
- package/src/workflow/WorkflowCodePreviewGraph.tsx +2 -2
- package/src/workflow/WorkflowDashboard.tsx +2 -2
- package/src/workflow/WorkflowDetailView.tsx +50 -50
- package/src/workflow/WorkflowDiffGraph.tsx +5 -5
- package/src/workflow/WorkflowEditorView.tsx +58 -58
- package/src/workflow/WorkflowExecutionGraph.tsx +15 -15
- package/src/workflow/WorkflowExecutionHeader.tsx +14 -14
- package/src/workflow/WorkflowExecutionPhaseBadge.tsx +11 -11
- package/src/workflow/WorkflowExecutionViewer.tsx +39 -39
- package/src/workflow/WorkflowExplainDialog.tsx +30 -30
- package/src/workflow/WorkflowFileReviewList.tsx +3 -3
- package/src/workflow/WorkflowGraphFullscreenDialog.tsx +11 -11
- package/src/workflow/WorkflowNode.tsx +2 -2
- package/src/workflow/WorkflowNodePopover.tsx +15 -15
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -9
- package/src/workflow/WorkflowOverviewSummary.tsx +12 -12
- package/src/workflow/WorkflowRefinePanel.tsx +49 -49
- package/src/workflow/WorkflowRepairCard.tsx +53 -53
- package/src/workflow/WorkflowRunDialog.tsx +20 -20
- package/src/workflow/WorkflowRunForm.tsx +19 -19
- package/src/workflow/WorkflowTaskApprovalCard.tsx +19 -19
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +23 -23
- package/src/workflow/WorkflowTaskList.tsx +11 -11
- package/src/workflow/WorkflowTaskPalette.tsx +23 -23
- package/src/workflow/WorkflowTaskReviewGate.tsx +10 -10
- package/src/workflow/WorkflowVersionBadge.tsx +7 -7
- package/src/workflow/WorkflowVersionDiffViewer.tsx +24 -24
- package/src/workflow/WorkflowVersionTimeline.tsx +32 -32
- package/src/workflow/WorkflowVersionsTab.tsx +7 -7
- package/src/workflow/__tests__/WorkflowAgentCallTranscript.test.tsx +2 -2
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +6 -6
- package/src/workflow/__tests__/WorkflowTaskApprovalCard.test.tsx +15 -15
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/node-shell.test.ts +2 -0
- package/src/workflow/__tests__/task-type-visual-registry.test.ts +2 -0
- package/src/workflow/diff/DiffSummaryBar.tsx +5 -5
- package/src/workflow/execution-comparison/ComparisonSummaryCards.tsx +11 -11
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -20
- package/src/workflow/execution-comparison/ExecutionComparisonView.tsx +16 -16
- package/src/workflow/execution-comparison/TaskComparisonTable.tsx +44 -44
- package/src/workflow/execution-history/ExecutionFilterBar.tsx +12 -12
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +25 -25
- package/src/workflow/execution-history/FailureAnalysisPanel.tsx +18 -18
- package/src/workflow/execution-history/HealthMetricsStrip.tsx +16 -16
- package/src/workflow/execution-history/WorkflowExecutionHistory.tsx +1 -1
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +3 -3
- package/src/workflow/facets/WorkflowChangesTab.tsx +8 -8
- package/src/workflow/facets/WorkflowUsageTab.tsx +24 -24
- package/src/workflow/inspector/EdgeInspector.tsx +14 -14
- package/src/workflow/inspector/InspectorHeader.tsx +18 -18
- package/src/workflow/inspector/InspectorShell.tsx +6 -6
- package/src/workflow/inspector/NestedTaskList.tsx +11 -11
- package/src/workflow/inspector/SentinelInspector.tsx +3 -3
- package/src/workflow/inspector/WorkflowSummaryPanel.tsx +33 -33
- package/src/workflow/inspector/forms/AgentCallForm.tsx +48 -48
- package/src/workflow/inspector/forms/HttpCallForm.tsx +22 -22
- package/src/workflow/inspector/tabs/AdvancedTab.tsx +12 -12
- package/src/workflow/inspector/tabs/BranchesTab.tsx +36 -36
- package/src/workflow/inspector/tabs/CatchTab.tsx +23 -23
- package/src/workflow/inspector/tabs/ConfigureTab.tsx +3 -3
- package/src/workflow/inspector/tabs/DataTab.tsx +6 -6
- package/src/workflow/inspector/tabs/DocsTab.tsx +11 -11
- package/src/workflow/inspector/tabs/IterationTab.tsx +25 -25
- package/src/workflow/inspector/tabs/RuntimeTab.tsx +16 -16
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +35 -35
- package/src/workflow/instance/RunVisibilityControl.tsx +10 -10
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +45 -45
- package/src/workflow/instance/WorkflowInstanceList.tsx +32 -32
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +0 -6
- package/src/workflow/node-shell/BranchBadge.tsx +9 -9
- package/src/workflow/node-shell/DiffBadge.tsx +4 -4
- package/src/workflow/node-shell/ExecutionBadge.tsx +17 -17
- package/src/workflow/node-shell/NodeActions.tsx +15 -15
- package/src/workflow/node-shell/NodeContent.tsx +9 -9
- package/src/workflow/node-shell/NodeHandles.tsx +5 -5
- package/src/workflow/node-shell/NodeShell.tsx +27 -27
- package/src/workflow/picker/BranchAddPopover.tsx +16 -16
- package/src/workflow/task-detail/StructuredDataViewer.tsx +34 -34
- package/src/workflow/templates/WorkflowTemplateCard.tsx +32 -32
- package/src/workflow/templates/WorkflowTemplateGallery.tsx +13 -13
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +29 -29
- package/src/workflow/thread/WorkflowTaskThread.tsx +36 -36
- package/src/workspace/EditorTabs.tsx +8 -8
- package/src/workspace/ExplorerTree.tsx +17 -17
- package/src/workspace/FileViewer.tsx +139 -30
- package/src/workspace/PanelChip.tsx +4 -4
- package/src/workspace/WorkspaceContentSearch.tsx +26 -26
- package/src/workspace/WorkspaceEditor.tsx +44 -44
- package/src/workspace/WorkspaceFileReader.ts +55 -1
- package/src/workspace/WorkspaceFileSearch.tsx +22 -22
- package/src/workspace/WorkspaceSummary.tsx +6 -6
- package/src/workspace/WorkspaceSurface.tsx +42 -42
- package/src/workspace/__tests__/FileViewer.test.tsx +99 -1
- package/src/workspace/__tests__/WorkspaceContentSearch.test.tsx +5 -5
- package/src/workspace/__tests__/WorkspaceFileSearch.test.tsx +3 -3
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +6 -6
- package/src/workspace/index.ts +2 -0
- package/styles.css +1 -1
- package/switch/Switch.js +2 -2
- package/switch/Switch.js.map +1 -1
- package/tabs/Tabs.js +7 -7
- package/tabs/Tabs.js.map +1 -1
- package/usage/AgentBreakdownList.js +4 -4
- package/usage/AgentBreakdownList.js.map +1 -1
- package/usage/CreditRunwayIndicator.js +1 -1
- package/usage/CreditRunwayIndicator.js.map +1 -1
- package/usage/ExportButton.js +2 -2
- package/usage/ExportButton.js.map +1 -1
- package/usage/HarnessSplitCard.js +6 -6
- package/usage/HarnessSplitCard.js.map +1 -1
- package/usage/OrgUsagePanel.js +15 -15
- package/usage/OrgUsagePanel.js.map +1 -1
- package/user/UserMenu.js +3 -3
- package/user/UserMenu.js.map +1 -1
- package/version-history/DiffFileList.js +8 -8
- package/version-history/DiffFileList.js.map +1 -1
- package/version-history/DiffSummary.js +1 -1
- package/version-history/DiffSummary.js.map +1 -1
- package/version-history/DiffViewer.js +11 -11
- package/version-history/DiffViewer.js.map +1 -1
- package/version-history/MultiFileDiffView.js +2 -2
- package/version-history/MultiFileDiffView.js.map +1 -1
- package/version-history/UnifiedDiffView.js +1 -1
- package/version-history/UnifiedDiffView.js.map +1 -1
- package/version-history/VersionTimeline.js +4 -4
- package/version-history/VersionTimeline.js.map +1 -1
- package/version-history/VersionTimelineEntry.js +9 -9
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/ApprovalFormBuilder.js +15 -15
- package/workflow/ApprovalFormBuilder.js.map +1 -1
- package/workflow/BranchConditionBuilder.js +8 -8
- package/workflow/BranchConditionBuilder.js.map +1 -1
- package/workflow/CanvasContextMenu.js +6 -6
- package/workflow/CanvasContextMenu.js.map +1 -1
- package/workflow/CanvasTransitionEdge.js +11 -11
- package/workflow/CanvasTransitionEdge.js.map +1 -1
- package/workflow/CostByWorkflowChart.js +4 -4
- package/workflow/CostByWorkflowChart.js.map +1 -1
- package/workflow/ExecutionActiveTaskIndicator.js +8 -8
- package/workflow/ExecutionActiveTaskIndicator.js.map +1 -1
- package/workflow/ExecutionSummaryWidget.js +15 -15
- package/workflow/ExecutionSummaryWidget.js.map +1 -1
- package/workflow/ExecutionTrendChart.js +10 -10
- package/workflow/ExecutionTrendChart.js.map +1 -1
- package/workflow/FailedRunsWidget.js +3 -3
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.js +3 -3
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/TaskConfigForm.js +12 -12
- package/workflow/TaskConfigForm.js.map +1 -1
- package/workflow/TaskPickerPopover.js +5 -5
- package/workflow/TaskPickerPopover.js.map +1 -1
- package/workflow/ViewYamlDialog.js +2 -2
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowAgentCallTranscript.js +2 -2
- package/workflow/WorkflowAgentCallTranscript.js.map +1 -1
- package/workflow/WorkflowApprovalList.js +2 -2
- package/workflow/WorkflowApprovalList.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +9 -9
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +7 -7
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +6 -6
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.js +1 -1
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowCodePreviewGraph.js +2 -2
- package/workflow/WorkflowCodePreviewGraph.js.map +1 -1
- package/workflow/WorkflowDashboard.js +1 -1
- package/workflow/WorkflowDashboard.js.map +1 -1
- package/workflow/WorkflowDetailView.js +15 -15
- package/workflow/WorkflowDetailView.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +3 -3
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowEditorView.js +13 -13
- package/workflow/WorkflowEditorView.js.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +6 -6
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionHeader.js +4 -4
- package/workflow/WorkflowExecutionHeader.js.map +1 -1
- package/workflow/WorkflowExecutionPhaseBadge.js +9 -9
- package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +16 -16
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.js +2 -2
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowFileReviewList.js +2 -2
- package/workflow/WorkflowFileReviewList.js.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.js +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
- package/workflow/WorkflowNode.js +1 -1
- package/workflow/WorkflowNode.js.map +1 -1
- package/workflow/WorkflowNodePopover.js +2 -2
- package/workflow/WorkflowNodePopover.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +4 -4
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowOverviewSummary.js +8 -8
- package/workflow/WorkflowOverviewSummary.js.map +1 -1
- package/workflow/WorkflowRefinePanel.js +5 -5
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.js +5 -5
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.js +2 -2
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowRunForm.js +10 -10
- package/workflow/WorkflowRunForm.js.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +8 -8
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowTaskList.js +4 -4
- package/workflow/WorkflowTaskList.js.map +1 -1
- package/workflow/WorkflowTaskPalette.js +5 -5
- package/workflow/WorkflowTaskPalette.js.map +1 -1
- package/workflow/WorkflowTaskReviewGate.js +3 -3
- package/workflow/WorkflowTaskReviewGate.js.map +1 -1
- package/workflow/WorkflowVersionBadge.js +1 -1
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionDiffViewer.js +12 -12
- package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +7 -7
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/WorkflowVersionsTab.js +1 -1
- package/workflow/WorkflowVersionsTab.js.map +1 -1
- package/workflow/diff/DiffSummaryBar.js +2 -2
- package/workflow/diff/DiffSummaryBar.js.map +1 -1
- package/workflow/execution-comparison/ComparisonSummaryCards.js +1 -1
- package/workflow/execution-comparison/ComparisonSummaryCards.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -7
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonView.js +4 -4
- package/workflow/execution-comparison/ExecutionComparisonView.js.map +1 -1
- package/workflow/execution-comparison/TaskComparisonTable.js +22 -22
- package/workflow/execution-comparison/TaskComparisonTable.js.map +1 -1
- package/workflow/execution-history/ExecutionFilterBar.js +5 -5
- package/workflow/execution-history/ExecutionFilterBar.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +11 -11
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/execution-history/FailureAnalysisPanel.js +4 -4
- package/workflow/execution-history/FailureAnalysisPanel.js.map +1 -1
- package/workflow/execution-history/HealthMetricsStrip.js +8 -8
- package/workflow/execution-history/HealthMetricsStrip.js.map +1 -1
- package/workflow/execution-history/WorkflowExecutionHistory.js +1 -1
- package/workflow/execution-history/WorkflowExecutionHistory.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.js +2 -2
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
- package/workflow/facets/WorkflowChangesTab.js +5 -5
- package/workflow/facets/WorkflowChangesTab.js.map +1 -1
- package/workflow/facets/WorkflowUsageTab.js +6 -6
- package/workflow/facets/WorkflowUsageTab.js.map +1 -1
- package/workflow/inspector/EdgeInspector.js +1 -1
- package/workflow/inspector/EdgeInspector.js.map +1 -1
- package/workflow/inspector/InspectorHeader.js +7 -7
- package/workflow/inspector/InspectorHeader.js.map +1 -1
- package/workflow/inspector/InspectorShell.js +2 -2
- package/workflow/inspector/InspectorShell.js.map +1 -1
- package/workflow/inspector/NestedTaskList.js +2 -2
- package/workflow/inspector/NestedTaskList.js.map +1 -1
- package/workflow/inspector/SentinelInspector.js +1 -1
- package/workflow/inspector/SentinelInspector.js.map +1 -1
- package/workflow/inspector/WorkflowSummaryPanel.js +5 -5
- package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
- package/workflow/inspector/forms/AgentCallForm.js +9 -9
- package/workflow/inspector/forms/AgentCallForm.js.map +1 -1
- package/workflow/inspector/forms/HttpCallForm.js +4 -4
- package/workflow/inspector/forms/HttpCallForm.js.map +1 -1
- package/workflow/inspector/tabs/AdvancedTab.js +2 -2
- package/workflow/inspector/tabs/AdvancedTab.js.map +1 -1
- package/workflow/inspector/tabs/BranchesTab.js +6 -6
- package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
- package/workflow/inspector/tabs/CatchTab.js +2 -2
- package/workflow/inspector/tabs/CatchTab.js.map +1 -1
- package/workflow/inspector/tabs/ConfigureTab.js +3 -3
- package/workflow/inspector/tabs/ConfigureTab.js.map +1 -1
- package/workflow/inspector/tabs/DataTab.js +1 -1
- package/workflow/inspector/tabs/DataTab.js.map +1 -1
- package/workflow/inspector/tabs/DocsTab.js +1 -1
- package/workflow/inspector/tabs/DocsTab.js.map +1 -1
- package/workflow/inspector/tabs/IterationTab.js +3 -3
- package/workflow/inspector/tabs/IterationTab.js.map +1 -1
- package/workflow/inspector/tabs/RuntimeTab.js +9 -9
- package/workflow/inspector/tabs/RuntimeTab.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/RunVisibilityControl.js +5 -5
- package/workflow/instance/RunVisibilityControl.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -2
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +4 -4
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/node-shell/BranchBadge.js +3 -3
- package/workflow/node-shell/BranchBadge.js.map +1 -1
- package/workflow/node-shell/DiffBadge.js +4 -4
- package/workflow/node-shell/DiffBadge.js.map +1 -1
- package/workflow/node-shell/ExecutionBadge.js +10 -10
- package/workflow/node-shell/ExecutionBadge.js.map +1 -1
- package/workflow/node-shell/NodeActions.js +3 -3
- package/workflow/node-shell/NodeActions.js.map +1 -1
- package/workflow/node-shell/NodeContent.js +5 -5
- package/workflow/node-shell/NodeContent.js.map +1 -1
- package/workflow/node-shell/NodeHandles.js +5 -5
- package/workflow/node-shell/NodeHandles.js.map +1 -1
- package/workflow/node-shell/NodeShell.js +14 -14
- package/workflow/node-shell/NodeShell.js.map +1 -1
- package/workflow/picker/BranchAddPopover.js +2 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.js +12 -12
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -1
- package/workflow/templates/WorkflowTemplateCard.js +17 -17
- package/workflow/templates/WorkflowTemplateCard.js.map +1 -1
- package/workflow/templates/WorkflowTemplateGallery.js +5 -5
- package/workflow/templates/WorkflowTemplateGallery.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +5 -5
- package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
- package/workflow/thread/WorkflowTaskThread.js +16 -16
- package/workflow/thread/WorkflowTaskThread.js.map +1 -1
- package/workspace/EditorTabs.js +5 -5
- package/workspace/EditorTabs.js.map +1 -1
- package/workspace/ExplorerTree.js +6 -6
- package/workspace/ExplorerTree.js.map +1 -1
- package/workspace/FileViewer.d.ts.map +1 -1
- package/workspace/FileViewer.js +55 -17
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.js +1 -1
- package/workspace/PanelChip.js.map +1 -1
- package/workspace/WorkspaceContentSearch.js +11 -11
- package/workspace/WorkspaceContentSearch.js.map +1 -1
- package/workspace/WorkspaceEditor.js +10 -10
- package/workspace/WorkspaceEditor.js.map +1 -1
- package/workspace/WorkspaceFileReader.d.ts +29 -1
- package/workspace/WorkspaceFileReader.d.ts.map +1 -1
- package/workspace/WorkspaceFileReader.js +42 -0
- package/workspace/WorkspaceFileReader.js.map +1 -1
- package/workspace/WorkspaceFileSearch.js +9 -9
- package/workspace/WorkspaceFileSearch.js.map +1 -1
- package/workspace/WorkspaceSummary.js +3 -3
- package/workspace/WorkspaceSummary.js.map +1 -1
- package/workspace/WorkspaceSurface.js +22 -22
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +1 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -1
- package/workspace/index.js.map +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// Preflight-parity regression suite for form controls (#374).
|
|
2
|
+
//
|
|
3
|
+
// Runs in a real Chromium via `vitest.a11y.config.ts` — the defect under
|
|
4
|
+
// guard is the user agent's OWN default control styling (buttonface
|
|
5
|
+
// background, built-in padding, UA font stack), which only a real browser
|
|
6
|
+
// applies. happy-dom has no UA stylesheet, so it would pass vacuously.
|
|
7
|
+
//
|
|
8
|
+
// The contract: every SDK component is authored against Tailwind's preflight
|
|
9
|
+
// baseline (our consoles run it globally). In a host WITHOUT a preflight —
|
|
10
|
+
// third-party embeds, the packed demo tours — the scoped form-control
|
|
11
|
+
// preflight in `styles.css` must reproduce that baseline under `.stgm`, or
|
|
12
|
+
// every unstyled-by-intent button renders as a grey UA box (the #374
|
|
13
|
+
// screenshots). Like the sibling layout suites (DD-21), this renders against
|
|
14
|
+
// the SHIPPED stylesheet (`dist/styles.css`, rebuilt by `npm run build:css`)
|
|
15
|
+
// and nothing else — exactly what an embed loads.
|
|
16
|
+
//
|
|
17
|
+
// Two directions, both load-bearing:
|
|
18
|
+
// 1. UA defaults neutralized: bare controls show no buttonface box, no UA
|
|
19
|
+
// padding, no UA font.
|
|
20
|
+
// 2. Utilities still win: the preflight lives in `@layer base`, so `bg-*`
|
|
21
|
+
// and `p-*` utilities on themed components must beat it. This half is
|
|
22
|
+
// what fails if the block ever migrates to a layer above `utilities`
|
|
23
|
+
// (the exact mistake that shipped three times with the border reset —
|
|
24
|
+
// see styles-border-layer-invariant.test.ts for the host-compiled twin).
|
|
25
|
+
|
|
26
|
+
import "../../dist/styles.css";
|
|
27
|
+
|
|
28
|
+
import { describe, it, expect, afterEach } from "vitest";
|
|
29
|
+
import { render, cleanup } from "@testing-library/react";
|
|
30
|
+
import type { Stigmer } from "@stigmer/sdk";
|
|
31
|
+
import { StigmerProvider } from "../provider";
|
|
32
|
+
import { Button } from "../button/Button.js";
|
|
33
|
+
import { UNSTYLED_BUTTON } from "../internal/form-primitives.js";
|
|
34
|
+
|
|
35
|
+
afterEach(cleanup);
|
|
36
|
+
|
|
37
|
+
// A minimal client (the provider-container suite's idiom): a null credential
|
|
38
|
+
// keeps the provider's registry fetches non-blocking so rendering is
|
|
39
|
+
// synchronous and never touches the network.
|
|
40
|
+
function makeClient(): Stigmer {
|
|
41
|
+
return {
|
|
42
|
+
baseUrl: "https://example.test",
|
|
43
|
+
getAuthCredential: async () => null,
|
|
44
|
+
fetch: (async () => {
|
|
45
|
+
throw new Error("network disabled in test");
|
|
46
|
+
}) as unknown as typeof globalThis.fetch,
|
|
47
|
+
} as unknown as Stigmer;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Renders `ui` inside the provider, wrapped in a probe `<div>` with a
|
|
52
|
+
* distinctive font so inheritance is detectable: a control that inherits
|
|
53
|
+
* (`font: inherit`) computes to Georgia; one still wearing the UA button
|
|
54
|
+
* font does not.
|
|
55
|
+
*/
|
|
56
|
+
function renderScoped(ui: React.ReactNode): HTMLElement {
|
|
57
|
+
render(
|
|
58
|
+
<StigmerProvider client={makeClient()}>
|
|
59
|
+
<div data-testid="probe" style={{ fontFamily: "Georgia, serif" }}>
|
|
60
|
+
{ui}
|
|
61
|
+
</div>
|
|
62
|
+
</StigmerProvider>,
|
|
63
|
+
);
|
|
64
|
+
return document.querySelector('[data-testid="probe"]') as HTMLElement;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function computed(el: Element): CSSStyleDeclaration {
|
|
68
|
+
return getComputedStyle(el);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const TRANSPARENT = "rgba(0, 0, 0, 0)";
|
|
72
|
+
|
|
73
|
+
describe("scoped form-control preflight (#374)", () => {
|
|
74
|
+
describe("UA defaults are neutralized under .stgm", () => {
|
|
75
|
+
it("a bare button loses the buttonface box, UA padding, and UA font", () => {
|
|
76
|
+
const probe = renderScoped(<button type="button">bare</button>);
|
|
77
|
+
const style = computed(probe.querySelector("button")!);
|
|
78
|
+
|
|
79
|
+
expect(style.backgroundColor, "UA buttonface background must be cleared").toBe(TRANSPARENT);
|
|
80
|
+
// Chromium's UA button padding is 1px 6px — all four sides must be 0.
|
|
81
|
+
expect(
|
|
82
|
+
[style.paddingTop, style.paddingRight, style.paddingBottom, style.paddingLeft],
|
|
83
|
+
"UA button padding must be zeroed",
|
|
84
|
+
).toEqual(["0px", "0px", "0px", "0px"]);
|
|
85
|
+
expect(style.fontFamily, "button font must inherit, not the UA stack").toBe(
|
|
86
|
+
computed(probe).fontFamily,
|
|
87
|
+
);
|
|
88
|
+
expect(style.borderTopLeftRadius).toBe("0px");
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("an unstyled-by-intent tile button (the #371 shape) renders content-only", () => {
|
|
92
|
+
// The exact pattern the issue screenshotted: an image tile whose only
|
|
93
|
+
// classes are UNSTYLED_BUTTON + geometry.
|
|
94
|
+
const probe = renderScoped(
|
|
95
|
+
<button type="button" className={`${UNSTYLED_BUTTON} stg:relative stg:block stg:h-14 stg:w-14 stg:rounded-md`}>
|
|
96
|
+
tile
|
|
97
|
+
</button>,
|
|
98
|
+
);
|
|
99
|
+
const style = computed(probe.querySelector("button")!);
|
|
100
|
+
|
|
101
|
+
expect(style.backgroundColor).toBe(TRANSPARENT);
|
|
102
|
+
expect(style.paddingLeft).toBe("0px");
|
|
103
|
+
expect(style.cursor, "UNSTYLED_BUTTON supplies the pointer cursor").toBe("pointer");
|
|
104
|
+
// Geometry utilities keep working on top of the reset.
|
|
105
|
+
expect(style.width).toBe("56px");
|
|
106
|
+
expect(style.borderTopLeftRadius).not.toBe("0px");
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it("bare input, textarea, and select lose UA backgrounds and inherit the font", () => {
|
|
110
|
+
const probe = renderScoped(
|
|
111
|
+
<>
|
|
112
|
+
<input readOnly value="i" />
|
|
113
|
+
<textarea readOnly value="t" />
|
|
114
|
+
<select defaultValue="o">
|
|
115
|
+
<option value="o">o</option>
|
|
116
|
+
</select>
|
|
117
|
+
</>,
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
for (const tag of ["input", "textarea", "select"] as const) {
|
|
121
|
+
const style = computed(probe.querySelector(tag)!);
|
|
122
|
+
expect(style.backgroundColor, `${tag} UA background must be cleared`).toBe(TRANSPARENT);
|
|
123
|
+
expect(style.fontFamily, `${tag} font must inherit`).toBe(computed(probe).fontFamily);
|
|
124
|
+
}
|
|
125
|
+
expect(
|
|
126
|
+
computed(probe.querySelector("textarea")!).resize,
|
|
127
|
+
"textareas resize vertically only (preflight parity)",
|
|
128
|
+
).toBe("vertical");
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
describe("utilities still beat the preflight (the base-vs-utilities invariant, on the shipped artifact)", () => {
|
|
133
|
+
it("the themed Button keeps its background and padding", () => {
|
|
134
|
+
const probe = renderScoped(<Button variant="primary">go</Button>);
|
|
135
|
+
const style = computed(probe.querySelector("button")!);
|
|
136
|
+
|
|
137
|
+
// `bg-primary` must survive the preflight's background-color:
|
|
138
|
+
// transparent — this is the assertion that fails if the form-control
|
|
139
|
+
// block ever lands in a layer above `utilities`.
|
|
140
|
+
expect(style.backgroundColor, "bg-primary must win over the preflight").not.toBe(
|
|
141
|
+
TRANSPARENT,
|
|
142
|
+
);
|
|
143
|
+
// size "sm" = px-3 py-1.5 → 12px / 6px.
|
|
144
|
+
expect(style.paddingLeft, "p-* utilities must win over the preflight").toBe("12px");
|
|
145
|
+
expect(style.paddingTop).toBe("6px");
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("the ghost Button is transparent by design and stays that way", () => {
|
|
149
|
+
// Ghost sets NO bg-* utility: pre-#374 it silently wore the UA
|
|
150
|
+
// buttonface grey in embeds. Transparent here proves the preflight is
|
|
151
|
+
// what ghost was implicitly depending on all along.
|
|
152
|
+
const probe = renderScoped(<Button variant="ghost">go</Button>);
|
|
153
|
+
expect(computed(probe.querySelector("button")!).backgroundColor).toBe(TRANSPARENT);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
});
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import postcss from "postcss";
|
|
3
|
+
import { scopeUnprefixedSelectors } from "../../scripts/lib/scope-unprefixed";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Fixture-level pins for the build's scoping pass (stage 2 of
|
|
7
|
+
* `scripts/build-styles.ts`). The dist isolation invariant proves the OUTPUT
|
|
8
|
+
* is fully scoped; these pins prove the transform handles each selector shape
|
|
9
|
+
* the way the cascade requires — especially pseudo-element placement, where a
|
|
10
|
+
* guard in the wrong position is invalid CSS that a browser silently drops.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
function transform(css: string): string {
|
|
14
|
+
const root = postcss.parse(css);
|
|
15
|
+
scopeUnprefixedSelectors(root);
|
|
16
|
+
return root.toString();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("scopeUnprefixedSelectors", () => {
|
|
20
|
+
it("scopes unlayered rules (the xyflow tail) on the subject compound", () => {
|
|
21
|
+
expect(transform(".react-flow__node{position:absolute}")).toBe(
|
|
22
|
+
".react-flow__node:where(.stgm, .stgm *){position:absolute}",
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("scopes only the subject of a complex selector", () => {
|
|
27
|
+
expect(transform(".react-flow .react-flow__edge>path{stroke:red}")).toBe(
|
|
28
|
+
".react-flow .react-flow__edge>path:where(.stgm, .stgm *){stroke:red}",
|
|
29
|
+
);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("places the guard BEFORE pseudo-elements (double- and single-colon)", () => {
|
|
33
|
+
expect(transform("*::before{content:''}")).toBe(
|
|
34
|
+
"*:where(.stgm, .stgm *)::before{content:''}",
|
|
35
|
+
);
|
|
36
|
+
// Minifier output uses legacy single-colon spellings.
|
|
37
|
+
expect(transform(".x:before{content:''}")).toBe(
|
|
38
|
+
".x:where(.stgm, .stgm *):before{content:''}",
|
|
39
|
+
);
|
|
40
|
+
expect(transform("::backdrop{--tw-x:0}")).toBe(
|
|
41
|
+
":where(.stgm, .stgm *)::backdrop{--tw-x:0}",
|
|
42
|
+
);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("keeps pseudo-CLASSES inside the guarded compound", () => {
|
|
46
|
+
expect(transform(".react-flow__pane:hover{cursor:grab}")).toBe(
|
|
47
|
+
".react-flow__pane:hover:where(.stgm, .stgm *){cursor:grab}",
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("scopes every alternative of a selector list", () => {
|
|
52
|
+
expect(transform("a,.b{color:red}")).toBe(
|
|
53
|
+
"a:where(.stgm, .stgm *),.b:where(.stgm, .stgm *){color:red}",
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("scopes @layer properties rules (universal --tw-* initial values)", () => {
|
|
58
|
+
expect(
|
|
59
|
+
transform("@layer properties{*,::before{--tw-translate-x:0}}"),
|
|
60
|
+
).toBe(
|
|
61
|
+
"@layer properties{*:where(.stgm, .stgm *),:where(.stgm, .stgm *)::before{--tw-translate-x:0}}",
|
|
62
|
+
);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("leaves named layers other than `properties` untouched (prefix covers them)", () => {
|
|
66
|
+
const stgm = "@layer stgm{.stg\\:flex{display:flex}}";
|
|
67
|
+
expect(transform(stgm)).toBe(stgm);
|
|
68
|
+
const base = "@layer base{.stgm *{border-width:0}}";
|
|
69
|
+
expect(transform(base)).toBe(base);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("leaves keyframe steps untouched", () => {
|
|
73
|
+
const kf = "@keyframes spin{to{transform:rotate(360deg)}}";
|
|
74
|
+
expect(transform(kf)).toBe(kf);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("leaves already-.stgm-scoped unlayered rules untouched", () => {
|
|
78
|
+
const scoped = ".stgm .hljs{color:red}";
|
|
79
|
+
expect(transform(scoped)).toBe(scoped);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("is idempotent", () => {
|
|
83
|
+
const once = transform(".react-flow{direction:ltr}");
|
|
84
|
+
expect(transform(once)).toBe(once);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import postcss, {
|
|
5
|
-
type AtRule,
|
|
6
|
-
type Rule,
|
|
7
|
-
type Container,
|
|
8
|
-
type Document as PostcssDocument,
|
|
9
|
-
} from "postcss";
|
|
10
|
-
import tailwindcss from "@tailwindcss/postcss";
|
|
11
|
-
|
|
12
|
-
// The directory of `styles.css` — `@source` globs and relative `@import`s inside
|
|
13
|
-
// it resolve from here, exactly as they do when a host app compiles it.
|
|
14
|
-
const srcDir = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
2
|
+
import { type AtRule, type Rule, type Container, type Document as PostcssDocument } from "postcss";
|
|
3
|
+
import { compileSdkStylesheet } from "./helpers/compile-sdk-styles";
|
|
15
4
|
|
|
16
5
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* utilities
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
6
|
+
* The border-layer invariant: the `.stgm` preflight-style reset (which zeroes
|
|
7
|
+
* `border-width` on every descendant) must never outrank the `border-*`
|
|
8
|
+
* utilities, or every border inside `.stgm` silently disappears — the defect
|
|
9
|
+
* that shipped twice before this test existed.
|
|
10
|
+
*
|
|
11
|
+
* Since #454 the SDK stylesheet is a self-contained compiled artifact (client
|
|
12
|
+
* apps and hosts consume `dist/styles.css`; nobody recompiles the source), so
|
|
13
|
+
* the cascade under test is the standalone build's own layer order: the reset
|
|
14
|
+
* lives in `base`, the `stg:`-prefixed utilities live in `stgm`, and the
|
|
15
|
+
* `@layer theme, base, components, utilities, stgm` declaration pins
|
|
16
|
+
* `base` below `stgm`. (Pre-#454 this test compiled a simulated host context,
|
|
17
|
+
* because hosts inlined the SDK source into their own Tailwind build and the
|
|
18
|
+
* utilities landed in the HOST's `utilities` layer — that pipeline no longer
|
|
19
|
+
* exists.)
|
|
23
20
|
*/
|
|
24
|
-
async function compileHostContext(): Promise<string> {
|
|
25
|
-
const input = `@import "tailwindcss";\n@import "./styles.css";`;
|
|
26
|
-
const result = await postcss([tailwindcss({ base: srcDir })]).process(input, {
|
|
27
|
-
// A virtual entry inside src/ so `@import "./styles.css"` resolves to the
|
|
28
|
-
// real SDK stylesheet under test.
|
|
29
|
-
from: resolve(srcDir, "__border-layer-probe__.css"),
|
|
30
|
-
});
|
|
31
|
-
return result.css;
|
|
32
|
-
}
|
|
33
21
|
|
|
34
22
|
/** The nearest enclosing `@layer <name>` of a node, or null if unlayered. */
|
|
35
23
|
function enclosingLayer(node: Rule | AtRule): string | null {
|
|
@@ -44,30 +32,31 @@ function enclosingLayer(node: Rule | AtRule): string | null {
|
|
|
44
32
|
return null;
|
|
45
33
|
}
|
|
46
34
|
|
|
47
|
-
describe("styles.css border-layer invariant
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// `@layer` and so cannot prove the border actually *renders*. This compiles
|
|
51
|
-
// the real host-context cascade and asserts the architecture that makes it
|
|
52
|
-
// render: the scoped preflight reset must never outrank the border utilities.
|
|
53
|
-
it("emits the .stgm border reset in `base`, below the `utilities` layer", async () => {
|
|
54
|
-
const css = await compileHostContext();
|
|
55
|
-
const root = postcss.parse(css);
|
|
35
|
+
describe("styles.css border-layer invariant", () => {
|
|
36
|
+
it("emits the .stgm border reset in `base`, below the utilities in `stgm`", async () => {
|
|
37
|
+
const root = await compileSdkStylesheet();
|
|
56
38
|
|
|
57
|
-
// 1) Scanning/generation works: the prominent border-color utility exists
|
|
58
|
-
// (If this regresses, the border would silently
|
|
59
|
-
// --stgm-border default — the dark-mode half of
|
|
39
|
+
// 1) Scanning/generation works: the prominent border-color utility exists,
|
|
40
|
+
// under the #454 prefix. (If this regresses, the border would silently
|
|
41
|
+
// fall back to the faint --stgm-border default — the dark-mode half of
|
|
42
|
+
// the original defect.)
|
|
60
43
|
let prominentRule: Rule | null = null;
|
|
61
44
|
root.walkRules((rule) => {
|
|
62
|
-
if (rule.selector.includes(".border-border-prominent"))
|
|
45
|
+
if (rule.selector.includes(".stg\\:border-border-prominent")) {
|
|
46
|
+
prominentRule = rule;
|
|
47
|
+
}
|
|
63
48
|
});
|
|
64
49
|
expect(
|
|
65
50
|
prominentRule,
|
|
66
|
-
"`.border-border-prominent` was not generated —
|
|
51
|
+
"`.stg\\:border-border-prominent` was not generated — @source scanning or the stg: prefix broke",
|
|
67
52
|
).not.toBeNull();
|
|
53
|
+
expect(
|
|
54
|
+
enclosingLayer(prominentRule!),
|
|
55
|
+
"border utilities must live in @layer stgm (the standalone build's utility layer)",
|
|
56
|
+
).toBe("stgm");
|
|
68
57
|
|
|
69
|
-
// 2) The reset (the rule that zeroes border-width on every .stgm
|
|
70
|
-
// must live in `base`,
|
|
58
|
+
// 2) The reset (the rule that zeroes border-width on every .stgm
|
|
59
|
+
// descendant) must live in `base`, declared before `stgm`.
|
|
71
60
|
let resetRule: Rule | null = null;
|
|
72
61
|
root.walkRules((rule) => {
|
|
73
62
|
if (!rule.selector.includes(".stgm")) return;
|
|
@@ -82,24 +71,63 @@ describe("styles.css border-layer invariant (host-compiled)", () => {
|
|
|
82
71
|
expect(resetRule, "the .stgm border-width:0 reset was not found").not.toBeNull();
|
|
83
72
|
expect(
|
|
84
73
|
enclosingLayer(resetRule!),
|
|
85
|
-
"the .stgm border reset must live in @layer base (
|
|
74
|
+
"the .stgm border reset must live in @layer base (a reset in a layer above the utilities silently zeroes every border inside .stgm)",
|
|
86
75
|
).toBe("base");
|
|
87
76
|
|
|
88
|
-
// 3)
|
|
89
|
-
//
|
|
90
|
-
|
|
77
|
+
// 3) The normative layer order comes from the bare `@layer a, b, c;`
|
|
78
|
+
// declaration at the top of the stylesheet: `base` must precede `stgm`.
|
|
79
|
+
let order: string[] | null = null;
|
|
91
80
|
root.walkAtRules("layer", (at) => {
|
|
92
|
-
if (
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
81
|
+
if (at.nodes) return; // only the bare ordering statement
|
|
82
|
+
const names = at.params.split(",").map((s) => s.trim());
|
|
83
|
+
if (!order && names.includes("base") && names.includes("stgm")) {
|
|
84
|
+
order = names;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
expect(order, "the @layer ordering declaration is missing").not.toBeNull();
|
|
88
|
+
expect(
|
|
89
|
+
order!.indexOf("base"),
|
|
90
|
+
`expected base before stgm in [${order!.join(", ")}]`,
|
|
91
|
+
).toBeLessThan(order!.indexOf("stgm"));
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// The form-control preflight (#374) has the same one dangerous failure mode
|
|
95
|
+
// as the border reset: land it in any layer above the SDK's utilities and
|
|
96
|
+
// it silently overrides every `stg:bg-*`/`stg:p-*` utility on every button
|
|
97
|
+
// in the SDK. Same harness, same invariant — pinned separately because the
|
|
98
|
+
// rule is found by a different fingerprint (background-color on
|
|
99
|
+
// `.stgm button`).
|
|
100
|
+
it("emits the .stgm form-control preflight in `base`, below the utilities in `stgm`", async () => {
|
|
101
|
+
const root = await compileSdkStylesheet();
|
|
102
|
+
|
|
103
|
+
let controlRule: Rule | null = null;
|
|
104
|
+
root.walkRules((rule) => {
|
|
105
|
+
if (!rule.selector.includes(".stgm button")) return;
|
|
106
|
+
const clearsBackground = rule.some(
|
|
107
|
+
(decl) =>
|
|
108
|
+
decl.type === "decl" &&
|
|
109
|
+
decl.prop === "background-color" &&
|
|
110
|
+
decl.value.trim() === "transparent",
|
|
111
|
+
);
|
|
112
|
+
if (clearsBackground) controlRule = rule;
|
|
95
113
|
});
|
|
96
|
-
const baseIdx = layerOrder.indexOf("base");
|
|
97
|
-
const utilitiesIdx = layerOrder.indexOf("utilities");
|
|
98
|
-
expect(baseIdx).toBeGreaterThanOrEqual(0);
|
|
99
|
-
expect(utilitiesIdx).toBeGreaterThanOrEqual(0);
|
|
100
114
|
expect(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
).
|
|
115
|
+
controlRule,
|
|
116
|
+
"the .stgm form-control preflight (background-color: transparent on .stgm button) was not found",
|
|
117
|
+
).not.toBeNull();
|
|
118
|
+
expect(
|
|
119
|
+
enclosingLayer(controlRule!),
|
|
120
|
+
"the .stgm form-control preflight must live in @layer base (a layer above the utilities silently overrides every stg:bg-*/stg:p-* utility on every button in the SDK)",
|
|
121
|
+
).toBe("base");
|
|
122
|
+
|
|
123
|
+
// The block must cover all five control elements, not just button —
|
|
124
|
+
// an accidental selector trim would silently re-expose the UA defaults
|
|
125
|
+
// on inputs/textareas in preflight-less hosts.
|
|
126
|
+
for (const control of ["input", "select", "optgroup", "textarea"]) {
|
|
127
|
+
expect(
|
|
128
|
+
controlRule!.selector,
|
|
129
|
+
`the form-control preflight selector must include .stgm ${control}`,
|
|
130
|
+
).toContain(`.stgm ${control}`);
|
|
131
|
+
}
|
|
104
132
|
});
|
|
105
133
|
});
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import postcss, { type AtRule, type Container, type Rule, type Root } from "postcss";
|
|
3
|
+
import selectorParser from "postcss-selector-parser";
|
|
4
|
+
import { compileSdkStylesheet } from "./helpers/compile-sdk-styles";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The #454 isolation invariant: NOTHING in the shipped SDK stylesheet may
|
|
8
|
+
* match a host application's DOM outside the `.stgm` scope containers.
|
|
9
|
+
*
|
|
10
|
+
* Before this invariant, the stylesheet emitted bare Tailwind utilities
|
|
11
|
+
* (`.relative`, `.grid-cols-1`, `.container`) inside `@layer stgm` — which
|
|
12
|
+
* the SDK's own layer-order declaration pins ABOVE a host's `utilities`
|
|
13
|
+
* layer. Loading the stylesheet silently broke any host element pairing a
|
|
14
|
+
* base utility with a variant override of the same property
|
|
15
|
+
* (`grid-cols-1 @xl:grid-cols-[...]`, `relative max-lg:fixed`) — permanently,
|
|
16
|
+
* regardless of load order. Observed in production (Stigmer Law).
|
|
17
|
+
*
|
|
18
|
+
* Every rule must therefore fall in exactly one of these categories:
|
|
19
|
+
*
|
|
20
|
+
* 1. `stg:`-prefixed — Tailwind utilities under the #454 prefix
|
|
21
|
+
* (`.stg\:flex`). Collision-free by NAME: a host's Tailwind never emits
|
|
22
|
+
* these class names.
|
|
23
|
+
* 2. `.stgm`-anchored — the scope container itself, hand-written
|
|
24
|
+
* `.stgm .hljs-*` rules, and everything carrying the
|
|
25
|
+
* `:where(.stgm, .stgm *)` guard added by the build's scoping pass
|
|
26
|
+
* (xyflow, the `@layer properties` block).
|
|
27
|
+
* 3. `stgm-`-prefixed classes — hand-written component classes
|
|
28
|
+
* (`.stgm-thread-item-enter`) and theme presets (`.stgm-theme-*`).
|
|
29
|
+
* 4. `:root`/`:host` rules whose declarations are ALL namespaced custom
|
|
30
|
+
* properties: `--stgm-*` (the public token contract — deliberately on
|
|
31
|
+
* `:root`, because custom properties resolve by inheritance PROXIMITY:
|
|
32
|
+
* moving the defaults onto `.stgm` would shadow the documented
|
|
33
|
+
* `:root { --stgm-primary: ... }` host override channel) or `--stg-*`
|
|
34
|
+
* (Tailwind theme variables under the prefix).
|
|
35
|
+
*
|
|
36
|
+
* Allowed globals, by name rather than selector:
|
|
37
|
+
* - `@property --tw-*` / `--stg-*` registrations (inherently global;
|
|
38
|
+
* duplicate identical registrations are a no-op).
|
|
39
|
+
* - `@keyframes` (cannot be selector-scoped; Tailwind names like `spin`
|
|
40
|
+
* collide only with identical definitions from the same Tailwind version,
|
|
41
|
+
* and our own animations use `stgm-*` names).
|
|
42
|
+
*
|
|
43
|
+
* This makes the entire leak CLASS a test failure — not just the two
|
|
44
|
+
* symptoms the issue reported.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/** The names of all at-rules enclosing a node, outermost first. */
|
|
48
|
+
function enclosingAtRuleNames(node: Rule | AtRule): string[] {
|
|
49
|
+
const names: string[] = [];
|
|
50
|
+
let parent: Container | undefined = node.parent as Container | undefined;
|
|
51
|
+
while (parent) {
|
|
52
|
+
if (parent.type === "atrule") names.unshift((parent as AtRule).name);
|
|
53
|
+
parent = parent.parent as Container | undefined;
|
|
54
|
+
}
|
|
55
|
+
return names;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Category check for a single selector (one comma-separated alternative).
|
|
60
|
+
* Implemented independently of the build's scoping pass on purpose: the test
|
|
61
|
+
* must not share the code it verifies.
|
|
62
|
+
*/
|
|
63
|
+
function selectorIsIsolated(selector: string): boolean {
|
|
64
|
+
let isolated = false;
|
|
65
|
+
try {
|
|
66
|
+
selectorParser((sel) => {
|
|
67
|
+
sel.walkClasses((cls) => {
|
|
68
|
+
if (
|
|
69
|
+
cls.value.startsWith("stg:") ||
|
|
70
|
+
cls.value === "stgm" ||
|
|
71
|
+
cls.value.startsWith("stgm-")
|
|
72
|
+
) {
|
|
73
|
+
isolated = true;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// `data-stgm-*` attributes are the SDK's public selector namespace
|
|
77
|
+
// (data-stgm-root, data-stgm-portal, data-stgm-color-mode) — a host
|
|
78
|
+
// element matches only by explicitly opting into it.
|
|
79
|
+
sel.walkAttributes((attr) => {
|
|
80
|
+
if (attr.attribute.startsWith("data-stgm-")) isolated = true;
|
|
81
|
+
});
|
|
82
|
+
}).processSync(selector);
|
|
83
|
+
} catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return isolated;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* A rule is isolated when its own selectors are, OR when it is nested inside
|
|
91
|
+
* an isolated rule (`&`-relative selectors cannot match anything the parent
|
|
92
|
+
* does not already scope — e.g. the unminified compile keeps
|
|
93
|
+
* `.stg\:[&>button:hover]:...` utilities as nested `&>button:hover` rules;
|
|
94
|
+
* the shipped minifier flattens these).
|
|
95
|
+
*/
|
|
96
|
+
function ruleIsIsolated(rule: Rule): boolean {
|
|
97
|
+
if (rule.selectors.every(selectorIsIsolated)) return true;
|
|
98
|
+
let parent: Container | undefined = rule.parent as Container | undefined;
|
|
99
|
+
while (parent) {
|
|
100
|
+
if (parent.type === "rule" && (parent as Rule).selectors.every(selectorIsIsolated)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
parent = parent.parent as Container | undefined;
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** `:root` / `:host`-only selector? (Tolerates `:where()`-wrapped forms.) */
|
|
109
|
+
function isRootSelector(selector: string): boolean {
|
|
110
|
+
return selector
|
|
111
|
+
.split(",")
|
|
112
|
+
.every((part) => /^\s*:(root|host|where\(\s*:(root|host)\s*\))\s*$/.test(part.trim()));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function ruleViolations(root: Root): string[] {
|
|
116
|
+
const violations: string[] = [];
|
|
117
|
+
root.walkRules((rule) => {
|
|
118
|
+
const atRules = enclosingAtRuleNames(rule);
|
|
119
|
+
if (atRules.some((n) => n === "keyframes" || n.endsWith("keyframes"))) {
|
|
120
|
+
return; // allowed global (see header)
|
|
121
|
+
}
|
|
122
|
+
if (isRootSelector(rule.selector)) {
|
|
123
|
+
// Category 4: every declaration must be a namespaced custom property.
|
|
124
|
+
rule.walkDecls((decl) => {
|
|
125
|
+
if (!/^--stgm?-/.test(decl.prop)) {
|
|
126
|
+
violations.push(
|
|
127
|
+
`:root rule declares non-namespaced property \`${decl.prop}\` — ` +
|
|
128
|
+
`it would apply to the host's document root`,
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!ruleIsIsolated(rule)) {
|
|
135
|
+
violations.push(
|
|
136
|
+
`unisolated selector \`${rule.selector}\`` +
|
|
137
|
+
(atRules.length > 0 ? ` (inside @${atRules.join(" @")})` : ""),
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return violations;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
describe("styles.css dist isolation invariant (#454)", () => {
|
|
145
|
+
it("emits no selector that can match host DOM outside the .stgm scope", async () => {
|
|
146
|
+
const root = await compileSdkStylesheet();
|
|
147
|
+
|
|
148
|
+
// Sanity: this is a real build, not an empty compile.
|
|
149
|
+
let ruleCount = 0;
|
|
150
|
+
root.walkRules(() => {
|
|
151
|
+
ruleCount++;
|
|
152
|
+
});
|
|
153
|
+
expect(ruleCount).toBeGreaterThan(500);
|
|
154
|
+
|
|
155
|
+
const violations = ruleViolations(root);
|
|
156
|
+
expect(
|
|
157
|
+
violations,
|
|
158
|
+
`the shipped stylesheet leaks into host pages:\n ${violations.slice(0, 20).join("\n ")}` +
|
|
159
|
+
(violations.length > 20 ? `\n ... and ${violations.length - 20} more` : ""),
|
|
160
|
+
).toEqual([]);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("@property registrations stay in the internal variable namespaces", async () => {
|
|
164
|
+
const root = await compileSdkStylesheet();
|
|
165
|
+
const offenders: string[] = [];
|
|
166
|
+
let count = 0;
|
|
167
|
+
root.walkAtRules("property", (at) => {
|
|
168
|
+
count++;
|
|
169
|
+
if (!/^--(tw|stg)-/.test(at.params.trim())) offenders.push(at.params.trim());
|
|
170
|
+
});
|
|
171
|
+
expect(count).toBeGreaterThan(0);
|
|
172
|
+
expect(
|
|
173
|
+
offenders,
|
|
174
|
+
"a global @property registration outside --tw-*/--stg-* could clobber a host-registered property",
|
|
175
|
+
).toEqual([]);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it("negative control: a bare utility selector is detected as a leak", async () => {
|
|
179
|
+
// Prove the walker actually catches the defect class this test exists
|
|
180
|
+
// for: inject the exact shape the pre-#454 stylesheet shipped.
|
|
181
|
+
const root = postcss.parse(
|
|
182
|
+
"@layer stgm{.relative{position:relative}.stg\\:flex{display:flex}}",
|
|
183
|
+
);
|
|
184
|
+
const violations = ruleViolations(root);
|
|
185
|
+
expect(violations).toHaveLength(1);
|
|
186
|
+
expect(violations[0]).toContain(".relative");
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("negative control: non-custom-property declarations on :root are detected", async () => {
|
|
190
|
+
const root = postcss.parse(":root{--stgm-x:1;color:red}");
|
|
191
|
+
const violations = ruleViolations(root);
|
|
192
|
+
expect(violations).toHaveLength(1);
|
|
193
|
+
expect(violations[0]).toContain("color");
|
|
194
|
+
});
|
|
195
|
+
});
|