@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
|
@@ -93,38 +93,38 @@ export function ConversationComposer({
|
|
|
93
93
|
|
|
94
94
|
if (disabledReason !== null) {
|
|
95
95
|
return (
|
|
96
|
-
<div className={cn("border-t border-border px-4 py-3", className)}>
|
|
97
|
-
<p className="text-center text-xs text-muted-foreground">{disabledReason}</p>
|
|
96
|
+
<div className={cn("stg:border-t stg:border-border stg:px-4 stg:py-3", className)}>
|
|
97
|
+
<p className="stg:text-center stg:text-xs stg:text-muted-foreground">{disabledReason}</p>
|
|
98
98
|
</div>
|
|
99
99
|
);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
return (
|
|
103
|
-
<div className={cn("border-t border-border px-4 py-3", className)}>
|
|
103
|
+
<div className={cn("stg:border-t stg:border-border stg:px-4 stg:py-3", className)}>
|
|
104
104
|
{/* The persistent forecast sits above the transient send-outcome
|
|
105
105
|
notice: the notice is the more recent event and belongs closest
|
|
106
106
|
to the input it reacts to. */}
|
|
107
107
|
{hasAdvisory && (
|
|
108
108
|
<p
|
|
109
109
|
id={advisoryId}
|
|
110
|
-
className="mb-2 flex items-start gap-1.5 rounded-md bg-status-degraded-subtle px-2.5 py-1.5 text-xs text-status-degraded"
|
|
110
|
+
className="stg:mb-2 stg:flex stg:items-start stg:gap-1.5 stg:rounded-md stg:bg-status-degraded-subtle stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-status-degraded"
|
|
111
111
|
>
|
|
112
|
-
<TriangleAlert aria-hidden="true" className="mt-0.5 size-3.5 shrink-0" />
|
|
113
|
-
<span className="min-w-0">{advisory}</span>
|
|
112
|
+
<TriangleAlert aria-hidden="true" className="stg:mt-0.5 stg:size-3.5 stg:shrink-0" />
|
|
113
|
+
<span className="stg:min-w-0">{advisory}</span>
|
|
114
114
|
</p>
|
|
115
115
|
)}
|
|
116
116
|
{notice && (
|
|
117
117
|
<p
|
|
118
118
|
className={cn(
|
|
119
|
-
"mb-2 text-xs",
|
|
120
|
-
notice.kind === "queued" ? "text-muted-foreground" : "text-destructive",
|
|
119
|
+
"stg:mb-2 stg:text-xs",
|
|
120
|
+
notice.kind === "queued" ? "stg:text-muted-foreground" : "stg:text-destructive",
|
|
121
121
|
)}
|
|
122
122
|
role="status"
|
|
123
123
|
>
|
|
124
124
|
{notice.text}
|
|
125
125
|
</p>
|
|
126
126
|
)}
|
|
127
|
-
<div className="flex items-end gap-2">
|
|
127
|
+
<div className="stg:flex stg:items-end stg:gap-2">
|
|
128
128
|
<textarea
|
|
129
129
|
{...composer.textareaProps}
|
|
130
130
|
rows={1}
|
|
@@ -132,9 +132,9 @@ export function ConversationComposer({
|
|
|
132
132
|
aria-label="Reply to the customer"
|
|
133
133
|
aria-describedby={hasAdvisory ? advisoryId : undefined}
|
|
134
134
|
className={cn(
|
|
135
|
-
"min-h-9 flex-1 resize-none rounded-md border border-border bg-background",
|
|
136
|
-
"px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground-faint",
|
|
137
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
135
|
+
"stg:min-h-9 stg:flex-1 stg:resize-none stg:rounded-md stg:border stg:border-border stg:bg-background",
|
|
136
|
+
"stg:px-3 stg:py-2 stg:text-sm stg:text-foreground stg:placeholder:text-muted-foreground-faint",
|
|
137
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
138
138
|
)}
|
|
139
139
|
/>
|
|
140
140
|
<Button
|
|
@@ -147,7 +147,7 @@ export function ConversationComposer({
|
|
|
147
147
|
{/* The house in-flight glyph (the session composer's pattern):
|
|
148
148
|
the spinner replaces the Send icon so the button itself
|
|
149
149
|
reports progress, not just its label. */}
|
|
150
|
-
{isSending ? <SpinnerIcon /> : <Send aria-hidden="true" className="size-4" />}
|
|
150
|
+
{isSending ? <SpinnerIcon /> : <Send aria-hidden="true" className="stg:size-4" />}
|
|
151
151
|
{isSending ? "Sending…" : "Send"}
|
|
152
152
|
</Button>
|
|
153
153
|
</div>
|
|
@@ -92,16 +92,16 @@ export function ConversationControlBanner({
|
|
|
92
92
|
return (
|
|
93
93
|
<div
|
|
94
94
|
className={cn(
|
|
95
|
-
"border-b border-border px-4 py-2",
|
|
96
|
-
humanHeld ? "bg-primary-subtle" : "bg-muted-faint",
|
|
95
|
+
"stg:border-b stg:border-border stg:px-4 stg:py-2",
|
|
96
|
+
humanHeld ? "stg:bg-primary-subtle" : "stg:bg-muted-faint",
|
|
97
97
|
className,
|
|
98
98
|
)}
|
|
99
99
|
>
|
|
100
|
-
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
101
|
-
<p className="flex items-center gap-1.5 text-sm text-foreground">
|
|
100
|
+
<div className="stg:flex stg:flex-wrap stg:items-center stg:justify-between stg:gap-2">
|
|
101
|
+
<p className="stg:flex stg:items-center stg:gap-1.5 stg:text-sm stg:text-foreground">
|
|
102
102
|
{humanHeld ? (
|
|
103
103
|
<>
|
|
104
|
-
<User aria-hidden="true" className="size-4 text-muted-foreground" />
|
|
104
|
+
<User aria-hidden="true" className="stg:size-4 stg:text-muted-foreground" />
|
|
105
105
|
{heldByMe
|
|
106
106
|
? "You have this conversation — the agent is quiet until you hand it back."
|
|
107
107
|
: currentIdentityAccountId !== undefined
|
|
@@ -114,15 +114,15 @@ export function ConversationControlBanner({
|
|
|
114
114
|
</>
|
|
115
115
|
) : (
|
|
116
116
|
<>
|
|
117
|
-
<Bot aria-hidden="true" className="size-4 text-muted-foreground" />
|
|
117
|
+
<Bot aria-hidden="true" className="stg:size-4 stg:text-muted-foreground" />
|
|
118
118
|
The agent is serving this conversation.
|
|
119
119
|
</>
|
|
120
120
|
)}
|
|
121
121
|
</p>
|
|
122
122
|
|
|
123
123
|
{confirmingHandBack ? (
|
|
124
|
-
<div className="flex items-center gap-2">
|
|
125
|
-
<span className="text-xs text-destructive">
|
|
124
|
+
<div className="stg:flex stg:items-center stg:gap-2">
|
|
125
|
+
<span className="stg:text-xs stg:text-destructive">
|
|
126
126
|
The customer's last message has no reply — the agent stays
|
|
127
127
|
quiet until they write again.
|
|
128
128
|
</span>
|
|
@@ -157,14 +157,14 @@ export function ConversationControlBanner({
|
|
|
157
157
|
{pendingCommands.has("handBack") ? "Handing back…" : "Hand back to agent"}
|
|
158
158
|
</Button>
|
|
159
159
|
) : (
|
|
160
|
-
<div className="flex items-center gap-2">
|
|
160
|
+
<div className="stg:flex stg:items-center stg:gap-2">
|
|
161
161
|
{!supportsStaffReplies && (
|
|
162
162
|
// Visible text, never a native title (F-18): a disabled
|
|
163
163
|
// Button swallows hover (disabled:pointer-events-none) and
|
|
164
164
|
// leaves the tab order, so a title on it is unreachable by
|
|
165
165
|
// every input method. Kept short — the composer's own
|
|
166
166
|
// notice already explains the missing staff reply lane.
|
|
167
|
-
<span className="text-xs text-muted-foreground">
|
|
167
|
+
<span className="stg:text-xs stg:text-muted-foreground">
|
|
168
168
|
This channel's provider has no staff send lane yet — a
|
|
169
169
|
takeover would silence the agent with no way to reply.
|
|
170
170
|
</span>
|
|
@@ -186,7 +186,7 @@ export function ConversationControlBanner({
|
|
|
186
186
|
</div>
|
|
187
187
|
|
|
188
188
|
{error && (
|
|
189
|
-
<p className="mt-1 text-xs text-destructive">{getUserMessage(error)}</p>
|
|
189
|
+
<p className="stg:mt-1 stg:text-xs stg:text-destructive">{getUserMessage(error)}</p>
|
|
190
190
|
)}
|
|
191
191
|
</div>
|
|
192
192
|
);
|
|
@@ -120,16 +120,16 @@ export function ConversationListPane({
|
|
|
120
120
|
return (
|
|
121
121
|
<div
|
|
122
122
|
aria-label="Conversation list"
|
|
123
|
-
className={cn("flex min-h-0 flex-col", className)}
|
|
123
|
+
className={cn("stg:flex stg:min-h-0 stg:flex-col", className)}
|
|
124
124
|
>
|
|
125
125
|
{(onFilterChange !== undefined || channels.length > 1) && (
|
|
126
|
-
<div className="flex flex-col gap-2 border-b border-border px-3 py-2">
|
|
126
|
+
<div className="stg:flex stg:flex-col stg:gap-2 stg:border-b stg:border-border stg:px-3 stg:py-2">
|
|
127
127
|
{onFilterChange !== undefined && (
|
|
128
128
|
<ConversationFilterToggle value={filter} onChange={onFilterChange} />
|
|
129
129
|
)}
|
|
130
130
|
{channels.length > 1 && (
|
|
131
131
|
<>
|
|
132
|
-
<label className="sr-only" htmlFor="stgm-conversation-channel-filter">
|
|
132
|
+
<label className="stg:sr-only" htmlFor="stgm-conversation-channel-filter">
|
|
133
133
|
Filter by channel
|
|
134
134
|
</label>
|
|
135
135
|
<select
|
|
@@ -137,9 +137,9 @@ export function ConversationListPane({
|
|
|
137
137
|
value={channelFilter}
|
|
138
138
|
onChange={(e) => onChannelFilterChange(e.target.value)}
|
|
139
139
|
className={cn(
|
|
140
|
-
"w-full rounded-md border border-border bg-background px-2 py-1.5",
|
|
141
|
-
"text-sm text-foreground",
|
|
142
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
140
|
+
"stg:w-full stg:rounded-md stg:border stg:border-border stg:bg-background stg:px-2 stg:py-1.5",
|
|
141
|
+
"stg:text-sm stg:text-foreground",
|
|
142
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
143
143
|
)}
|
|
144
144
|
>
|
|
145
145
|
<option value="">All channels</option>
|
|
@@ -154,18 +154,18 @@ export function ConversationListPane({
|
|
|
154
154
|
</div>
|
|
155
155
|
)}
|
|
156
156
|
|
|
157
|
-
<div className="min-h-0 flex-1 overflow-y-auto p-2">
|
|
157
|
+
<div className="stg:min-h-0 stg:flex-1 stg:overflow-y-auto stg:p-2">
|
|
158
158
|
{isLoading ? (
|
|
159
159
|
<ListSkeleton />
|
|
160
160
|
) : error ? (
|
|
161
|
-
<p className="px-2 py-6 text-center text-sm text-destructive">
|
|
161
|
+
<p className="stg:px-2 stg:py-6 stg:text-center stg:text-sm stg:text-destructive">
|
|
162
162
|
{getUserMessage(error)}
|
|
163
163
|
</p>
|
|
164
164
|
) : conversations.length === 0 ? (
|
|
165
165
|
channels.length === 0 ? (
|
|
166
166
|
<EmptyState
|
|
167
167
|
variant="first-use"
|
|
168
|
-
icon={<MessageSquare className="size-8" />}
|
|
168
|
+
icon={<MessageSquare className="stg:size-8" />}
|
|
169
169
|
title="No channels to watch"
|
|
170
170
|
description="Conversations arrive through an agent's channels. Connect a channel — or ask a channel owner for access — and customer conversations appear here."
|
|
171
171
|
/>
|
|
@@ -175,14 +175,14 @@ export function ConversationListPane({
|
|
|
175
175
|
// to an org with a full inbox and nothing needing a person.
|
|
176
176
|
<EmptyState
|
|
177
177
|
variant="first-use"
|
|
178
|
-
icon={<MessageSquare className="size-8" />}
|
|
178
|
+
icon={<MessageSquare className="stg:size-8" />}
|
|
179
179
|
title="Nothing needs a human right now"
|
|
180
180
|
description="Conversations appear here when the agent asks for attention, or when a human-held conversation has a customer message awaiting a reply."
|
|
181
181
|
/>
|
|
182
182
|
) : (
|
|
183
183
|
<EmptyState
|
|
184
184
|
variant="first-use"
|
|
185
|
-
icon={<MessageSquare className="size-8" />}
|
|
185
|
+
icon={<MessageSquare className="stg:size-8" />}
|
|
186
186
|
title="No conversations yet"
|
|
187
187
|
description="When a customer messages one of your channels, their conversation appears here."
|
|
188
188
|
/>
|
|
@@ -192,7 +192,7 @@ export function ConversationListPane({
|
|
|
192
192
|
{/* One context-only provider arms every row's attention
|
|
193
193
|
tooltip (the WorkspaceSidebar recents-list precedent). */}
|
|
194
194
|
<TooltipProvider>
|
|
195
|
-
<ul className="space-y-0.5">
|
|
195
|
+
<ul className="stg:space-y-0.5">
|
|
196
196
|
{conversations.map((conversation) => (
|
|
197
197
|
<ConversationRow
|
|
198
198
|
key={`${conversation.agentChannelId}:${conversation.conversationKey}`}
|
|
@@ -216,7 +216,7 @@ export function ConversationListPane({
|
|
|
216
216
|
</ul>
|
|
217
217
|
</TooltipProvider>
|
|
218
218
|
{hasMore && (
|
|
219
|
-
<div className="flex justify-center py-2">
|
|
219
|
+
<div className="stg:flex stg:justify-center stg:py-2">
|
|
220
220
|
<Button
|
|
221
221
|
variant="ghost"
|
|
222
222
|
size="xs"
|
|
@@ -299,7 +299,7 @@ function ConversationFilterToggle({
|
|
|
299
299
|
<div
|
|
300
300
|
role="radiogroup"
|
|
301
301
|
aria-label="Conversation filter"
|
|
302
|
-
className="inline-flex self-start rounded-md bg-muted p-0.5"
|
|
302
|
+
className="stg:inline-flex stg:self-start stg:rounded-md stg:bg-muted stg:p-0.5"
|
|
303
303
|
>
|
|
304
304
|
{FILTER_OPTIONS.map((option, index) => {
|
|
305
305
|
const isSelected = value === option.value;
|
|
@@ -317,11 +317,11 @@ function ConversationFilterToggle({
|
|
|
317
317
|
onClick={() => handleSelect(option.value)}
|
|
318
318
|
onKeyDown={(e) => handleKeyDown(e, index)}
|
|
319
319
|
className={cn(
|
|
320
|
-
"inline-flex cursor-pointer items-center rounded-sm px-2 py-1 text-xs font-medium transition-colors",
|
|
321
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
320
|
+
"stg:inline-flex stg:cursor-pointer stg:items-center stg:rounded-sm stg:px-2 stg:py-1 stg:text-xs stg:font-medium stg:transition-colors",
|
|
321
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
322
322
|
isSelected
|
|
323
|
-
? "bg-background text-foreground shadow-sm"
|
|
324
|
-
: "text-muted-foreground hover:text-foreground",
|
|
323
|
+
? "stg:bg-background stg:text-foreground stg:shadow-sm"
|
|
324
|
+
: "stg:text-muted-foreground stg:hover:text-foreground",
|
|
325
325
|
)}
|
|
326
326
|
>
|
|
327
327
|
{option.label}
|
|
@@ -364,17 +364,17 @@ const ConversationRow = memo(function ConversationRow({
|
|
|
364
364
|
onClick={() => onSelect(conversation)}
|
|
365
365
|
aria-current={isSelected ? "true" : undefined}
|
|
366
366
|
className={cn(
|
|
367
|
-
"flex w-full items-center gap-2.5 rounded-md px-2.5 py-2 text-left",
|
|
368
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
369
|
-
isSelected ? "bg-primary-subtle" : "hover:bg-accent",
|
|
367
|
+
"stg:flex stg:w-full stg:items-center stg:gap-2.5 stg:rounded-md stg:px-2.5 stg:py-2 stg:text-left",
|
|
368
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
369
|
+
isSelected ? "stg:bg-primary-subtle" : "stg:hover:bg-accent",
|
|
370
370
|
)}
|
|
371
371
|
>
|
|
372
|
-
<div className="min-w-0 flex-1">
|
|
373
|
-
<div className="flex items-center gap-1.5">
|
|
372
|
+
<div className="stg:min-w-0 stg:flex-1">
|
|
373
|
+
<div className="stg:flex stg:items-center stg:gap-1.5">
|
|
374
374
|
{/* No truncation title on the label (F-18): the full name
|
|
375
375
|
renders in the open conversation's header, so a native
|
|
376
376
|
tooltip here added noise without adding reach. */}
|
|
377
|
-
<p className="truncate text-sm font-medium text-foreground">{label}</p>
|
|
377
|
+
<p className="stg:truncate stg:text-sm stg:font-medium stg:text-foreground">{label}</p>
|
|
378
378
|
{conversation.needsAttention && (
|
|
379
379
|
// The reason rides the house tooltip (F-18). The trigger
|
|
380
380
|
// renders as a span — it sits INSIDE the row button, so a
|
|
@@ -383,12 +383,12 @@ const ConversationRow = memo(function ConversationRow({
|
|
|
383
383
|
// accessible name. The full reason is also always visible
|
|
384
384
|
// in the open conversation's attention banner.
|
|
385
385
|
<Tooltip>
|
|
386
|
-
<TooltipTrigger render={<span className="shrink-0" />}>
|
|
386
|
+
<TooltipTrigger render={<span className="stg:shrink-0" />}>
|
|
387
387
|
<TriangleAlert
|
|
388
388
|
aria-hidden="true"
|
|
389
|
-
className="size-3.5 text-destructive"
|
|
389
|
+
className="stg:size-3.5 stg:text-destructive"
|
|
390
390
|
/>
|
|
391
|
-
<span className="sr-only">
|
|
391
|
+
<span className="stg:sr-only">
|
|
392
392
|
{conversation.attentionReason
|
|
393
393
|
? `Needs attention: ${conversation.attentionReason}`
|
|
394
394
|
: "Needs attention"}
|
|
@@ -401,21 +401,21 @@ const ConversationRow = memo(function ConversationRow({
|
|
|
401
401
|
)}
|
|
402
402
|
</div>
|
|
403
403
|
{contact !== null && (
|
|
404
|
-
<p className="mt-0.5 truncate text-xs text-muted-foreground-faint">
|
|
404
|
+
<p className="stg:mt-0.5 stg:truncate stg:text-xs stg:text-muted-foreground-faint">
|
|
405
405
|
{contact}
|
|
406
406
|
</p>
|
|
407
407
|
)}
|
|
408
408
|
{humanHeld && (
|
|
409
|
-
<p className="mt-0.5 flex items-center gap-1 text-xs text-muted-foreground">
|
|
410
|
-
<User aria-hidden="true" className="size-3" />
|
|
409
|
+
<p className="stg:mt-0.5 stg:flex stg:items-center stg:gap-1 stg:text-xs stg:text-muted-foreground">
|
|
410
|
+
<User aria-hidden="true" className="stg:size-3" />
|
|
411
411
|
Human has the conversation
|
|
412
412
|
</p>
|
|
413
413
|
)}
|
|
414
414
|
</div>
|
|
415
415
|
{(lastActivity !== null || awaiting !== null) && (
|
|
416
|
-
<span className="flex shrink-0 flex-col items-end gap-1">
|
|
416
|
+
<span className="stg:flex stg:shrink-0 stg:flex-col stg:items-end stg:gap-1">
|
|
417
417
|
{lastActivity && (
|
|
418
|
-
<span className="text-xs text-muted-foreground-faint">
|
|
418
|
+
<span className="stg:text-xs stg:text-muted-foreground-faint">
|
|
419
419
|
{formatRelativeTime(lastActivity, now)}
|
|
420
420
|
</span>
|
|
421
421
|
)}
|
|
@@ -426,15 +426,15 @@ const ConversationRow = memo(function ConversationRow({
|
|
|
426
426
|
// agent will not answer, a person must — muted when the
|
|
427
427
|
// agent does. No tooltip and no tab stop (the F-18
|
|
428
428
|
// discipline); the sr-only text is the accessible meaning.
|
|
429
|
-
<span className="flex">
|
|
429
|
+
<span className="stg:flex">
|
|
430
430
|
<span
|
|
431
431
|
aria-hidden="true"
|
|
432
432
|
className={cn(
|
|
433
|
-
"size-2 rounded-full",
|
|
434
|
-
awaiting === "strong" ? "bg-primary" : "bg-muted-foreground",
|
|
433
|
+
"stg:size-2 stg:rounded-full",
|
|
434
|
+
awaiting === "strong" ? "stg:bg-primary" : "stg:bg-muted-foreground",
|
|
435
435
|
)}
|
|
436
436
|
/>
|
|
437
|
-
<span className="sr-only">
|
|
437
|
+
<span className="stg:sr-only">
|
|
438
438
|
{awaiting === "strong"
|
|
439
439
|
? "Customer awaiting reply — the conversation is human-held"
|
|
440
440
|
: "Customer awaiting reply"}
|
|
@@ -450,9 +450,9 @@ const ConversationRow = memo(function ConversationRow({
|
|
|
450
450
|
|
|
451
451
|
function ListSkeleton() {
|
|
452
452
|
return (
|
|
453
|
-
<div className="space-y-1 p-1" aria-hidden="true">
|
|
453
|
+
<div className="stg:space-y-1 stg:p-1" aria-hidden="true">
|
|
454
454
|
{[1, 2, 3, 4].map((i) => (
|
|
455
|
-
<div key={i} className="h-11 animate-pulse rounded-md bg-muted-faint" />
|
|
455
|
+
<div key={i} className="stg:h-11 stg:animate-pulse stg:rounded-md stg:bg-muted-faint" />
|
|
456
456
|
))}
|
|
457
457
|
</div>
|
|
458
458
|
);
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
|
+
import { create } from "@bufbuild/protobuf";
|
|
5
|
+
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { getUserMessage } from "@stigmer/sdk";
|
|
7
|
+
import type { ConversationMediaRef } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
|
|
8
|
+
import { GetConversationMediaDownloadUrlInputSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
|
|
9
|
+
import { AttachmentImageLightbox } from "../attachment/AttachmentImageLightbox.js";
|
|
10
|
+
import { formatFileSize } from "../attachment/attachment-utils.js";
|
|
11
|
+
import { UNSTYLED_BUTTON } from "../internal/form-primitives.js";
|
|
12
|
+
import { toError } from "../internal/toError.js";
|
|
13
|
+
import { useStigmer } from "../hooks.js";
|
|
14
|
+
import { useConversationMediaUrl } from "./useConversationMediaUrl.js";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The full address of one timeline item's media — what
|
|
18
|
+
* `getMediaDownloadUrl` is addressed by. The storage key deliberately
|
|
19
|
+
* never rides the wire (whatsapp-media DD-001 D4); the server resolves
|
|
20
|
+
* it from its own row, so this address is all a client ever holds.
|
|
21
|
+
*/
|
|
22
|
+
export interface ConversationMediaAddress {
|
|
23
|
+
/** AgentChannel the conversation belongs to. */
|
|
24
|
+
readonly agentChannelId: string;
|
|
25
|
+
/** Conversation key within the channel (WhatsApp: the customer's wa_id). */
|
|
26
|
+
readonly conversationKey: string;
|
|
27
|
+
/** The timeline item carrying the media (its item_id, e.g. `"wa:<wamid>"`). */
|
|
28
|
+
readonly itemId: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Props for {@link ConversationMediaAttachment}. */
|
|
32
|
+
export interface ConversationMediaAttachmentProps {
|
|
33
|
+
/** The item's media reference (filename, content type, size). */
|
|
34
|
+
readonly media: ConversationMediaRef;
|
|
35
|
+
/** Where to fetch the bytes from. */
|
|
36
|
+
readonly address: ConversationMediaAddress;
|
|
37
|
+
/** Additional CSS classes for the container. */
|
|
38
|
+
readonly className?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* One inbound timeline item's ingested media (stigmer/stigmer#367):
|
|
43
|
+
* images as a WhatsApp-style inline thumbnail (click opens the shared
|
|
44
|
+
* {@link AttachmentImageLightbox}), everything else as a document chip
|
|
45
|
+
* (filename + size, click opens the file in a new tab).
|
|
46
|
+
*
|
|
47
|
+
* This component calls `useStigmer()`, so it must only be MOUNTED when
|
|
48
|
+
* the timeline view holds a conversation address — that conditional
|
|
49
|
+
* mount is what keeps `ConversationTimelineView` renderable without a
|
|
50
|
+
* `StigmerProvider` (its presentational contract; see the view's
|
|
51
|
+
* `agentChannelId` prop).
|
|
52
|
+
*
|
|
53
|
+
* Deliberately a sibling of the execution thread's `MessageAttachments`,
|
|
54
|
+
* not a reuse of it: that row renders storage-key-addressed artifacts of
|
|
55
|
+
* an execution the viewer owns, while this one renders
|
|
56
|
+
* conversation-viewer-scoped media addressed by timeline position — the
|
|
57
|
+
* two read paths have different trust models (DD-001 D4) and different
|
|
58
|
+
* bubble treatments (chat thumbnail vs. attachment chip row).
|
|
59
|
+
*/
|
|
60
|
+
export function ConversationMediaAttachment({
|
|
61
|
+
media,
|
|
62
|
+
address,
|
|
63
|
+
className,
|
|
64
|
+
}: ConversationMediaAttachmentProps) {
|
|
65
|
+
const isImage = media.contentType.startsWith("image/");
|
|
66
|
+
return isImage ? (
|
|
67
|
+
<MediaImageThumbnail media={media} address={address} className={className} />
|
|
68
|
+
) : (
|
|
69
|
+
<MediaDocumentChip media={media} address={address} className={className} />
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Display name for the media: the ingest-recorded filename (documents
|
|
75
|
+
* keep the provider's name; camera images get a platform-synthesized
|
|
76
|
+
* one, so this is never empty in practice), with a defensive fallback.
|
|
77
|
+
*/
|
|
78
|
+
function displayName(media: ConversationMediaRef): string {
|
|
79
|
+
return media.filename || "attachment";
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// Image — WhatsApp-style inline thumbnail, click-to-open lightbox
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* A bounded preview frame in the bubble, minted from the item address at
|
|
88
|
+
* view time. The frame is fixed-size for BOTH the pulse placeholder and
|
|
89
|
+
* the loaded image, so the load causes no layout shift (the
|
|
90
|
+
* content-agnostic auto-scroll then needs no special case). If the URL
|
|
91
|
+
* can't be minted (revoked media, transient API failure, the server's
|
|
92
|
+
* uniform NOT_FOUND), the treatment degrades to the document chip —
|
|
93
|
+
* never a broken-image glyph (the `MessageAttachments` precedent).
|
|
94
|
+
*/
|
|
95
|
+
function MediaImageThumbnail({
|
|
96
|
+
media,
|
|
97
|
+
address,
|
|
98
|
+
className,
|
|
99
|
+
}: {
|
|
100
|
+
readonly media: ConversationMediaRef;
|
|
101
|
+
readonly address: ConversationMediaAddress;
|
|
102
|
+
readonly className?: string;
|
|
103
|
+
}) {
|
|
104
|
+
const { url, error } = useConversationMediaUrl(
|
|
105
|
+
address.agentChannelId,
|
|
106
|
+
address.conversationKey,
|
|
107
|
+
address.itemId,
|
|
108
|
+
);
|
|
109
|
+
const [previewOpen, setPreviewOpen] = useState(false);
|
|
110
|
+
const name = displayName(media);
|
|
111
|
+
|
|
112
|
+
if (error) {
|
|
113
|
+
return <MediaDocumentChip media={media} address={address} className={className} />;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<>
|
|
118
|
+
{/* UNSTYLED_BUTTON adds the pointer cursor — the media thumbnail
|
|
119
|
+
carries no other clickability cue. */}
|
|
120
|
+
<button
|
|
121
|
+
type="button"
|
|
122
|
+
onClick={() => setPreviewOpen(true)}
|
|
123
|
+
aria-label={`Preview ${name}`}
|
|
124
|
+
className={cn(
|
|
125
|
+
UNSTYLED_BUTTON,
|
|
126
|
+
"stg:block stg:rounded-md stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
127
|
+
className,
|
|
128
|
+
)}
|
|
129
|
+
>
|
|
130
|
+
<span className="stg:relative stg:block stg:h-40 stg:w-56 stg:max-w-full stg:overflow-hidden stg:rounded-md">
|
|
131
|
+
{url ? (
|
|
132
|
+
<img
|
|
133
|
+
src={url}
|
|
134
|
+
alt=""
|
|
135
|
+
aria-hidden="true"
|
|
136
|
+
loading="lazy"
|
|
137
|
+
className="stg:h-full stg:w-full stg:object-cover"
|
|
138
|
+
/>
|
|
139
|
+
) : (
|
|
140
|
+
// Pulse placeholder while the presigned URL is minted; same
|
|
141
|
+
// footprint as the image, so no layout shift.
|
|
142
|
+
<span
|
|
143
|
+
className="stg:block stg:h-full stg:w-full stg:animate-pulse stg:bg-muted"
|
|
144
|
+
aria-hidden="true"
|
|
145
|
+
/>
|
|
146
|
+
)}
|
|
147
|
+
</span>
|
|
148
|
+
</button>
|
|
149
|
+
{previewOpen && (
|
|
150
|
+
<AttachmentImageLightbox
|
|
151
|
+
src={url}
|
|
152
|
+
filename={name}
|
|
153
|
+
open
|
|
154
|
+
onClose={() => setPreviewOpen(false)}
|
|
155
|
+
/>
|
|
156
|
+
)}
|
|
157
|
+
</>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
// Document — compact chip, click-to-open in a new tab
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The compact treatment for documents (and the degraded arm for images
|
|
167
|
+
* whose URL failed): file glyph, filename, size. A click mints a FRESH
|
|
168
|
+
* URL — presigned URLs expire, so the stable item address is the thing
|
|
169
|
+
* to hold, not a URL (the `useArtifactDownload` rationale) — and opens
|
|
170
|
+
* it in a new tab: the media contract presigns inline disposition only,
|
|
171
|
+
* so the browser previews what it can (PDFs) and downloads the rest.
|
|
172
|
+
* A failed mint reports below the chip in the surface's own error
|
|
173
|
+
* grammar (DD-006 — never a silent dead click).
|
|
174
|
+
*/
|
|
175
|
+
function MediaDocumentChip({
|
|
176
|
+
media,
|
|
177
|
+
address,
|
|
178
|
+
className,
|
|
179
|
+
}: {
|
|
180
|
+
readonly media: ConversationMediaRef;
|
|
181
|
+
readonly address: ConversationMediaAddress;
|
|
182
|
+
readonly className?: string;
|
|
183
|
+
}) {
|
|
184
|
+
const { open, isOpening, error } = useOpenConversationMedia(address);
|
|
185
|
+
const name = displayName(media);
|
|
186
|
+
const size = media.sizeBytes > BigInt(0)
|
|
187
|
+
? // WhatsApp caps media far below 2^53 bytes, so the narrowing is exact.
|
|
188
|
+
formatFileSize(Number(media.sizeBytes))
|
|
189
|
+
: null;
|
|
190
|
+
|
|
191
|
+
return (
|
|
192
|
+
<div className={className}>
|
|
193
|
+
<span
|
|
194
|
+
title={name}
|
|
195
|
+
className="stg:inline-flex stg:max-w-[240px] stg:items-center stg:rounded-md stg:bg-muted-subtle stg:px-2 stg:py-1 stg:text-xs stg:text-foreground"
|
|
196
|
+
>
|
|
197
|
+
<button
|
|
198
|
+
type="button"
|
|
199
|
+
onClick={() => void open()}
|
|
200
|
+
disabled={isOpening}
|
|
201
|
+
aria-label={`Open ${name}`}
|
|
202
|
+
className={cn(
|
|
203
|
+
UNSTYLED_BUTTON,
|
|
204
|
+
"stg:flex stg:min-w-0 stg:items-center stg:gap-1.5 stg:rounded-sm stg:hover:text-accent-foreground stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
205
|
+
isOpening && "stg:opacity-70",
|
|
206
|
+
)}
|
|
207
|
+
>
|
|
208
|
+
<FileGlyph />
|
|
209
|
+
<span className="stg:min-w-0 stg:truncate">{name}</span>
|
|
210
|
+
{size !== null && (
|
|
211
|
+
<span className="stg:shrink-0 stg:text-muted-foreground">{size}</span>
|
|
212
|
+
)}
|
|
213
|
+
</button>
|
|
214
|
+
</span>
|
|
215
|
+
{error !== null && (
|
|
216
|
+
<p className="stg:mt-1 stg:break-words stg:text-xs stg:text-destructive">
|
|
217
|
+
{getUserMessage(error)}
|
|
218
|
+
</p>
|
|
219
|
+
)}
|
|
220
|
+
</div>
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Click → mint fresh URL → open in a new tab. Kept local to this file:
|
|
226
|
+
* unlike {@link useConversationMediaUrl} (render data), an open is a
|
|
227
|
+
* user action — and it must complete within the browser's
|
|
228
|
+
* user-activation window, which the single fast unary mint does.
|
|
229
|
+
*/
|
|
230
|
+
function useOpenConversationMedia(address: ConversationMediaAddress): {
|
|
231
|
+
readonly open: () => Promise<void>;
|
|
232
|
+
readonly isOpening: boolean;
|
|
233
|
+
readonly error: Error | null;
|
|
234
|
+
} {
|
|
235
|
+
const stigmer = useStigmer();
|
|
236
|
+
const [isOpening, setIsOpening] = useState(false);
|
|
237
|
+
const [error, setError] = useState<Error | null>(null);
|
|
238
|
+
|
|
239
|
+
const open = useCallback(async () => {
|
|
240
|
+
if (isOpening) return;
|
|
241
|
+
setIsOpening(true);
|
|
242
|
+
setError(null);
|
|
243
|
+
try {
|
|
244
|
+
const result = await stigmer.agentChannel.getMediaDownloadUrl(
|
|
245
|
+
create(GetConversationMediaDownloadUrlInputSchema, {
|
|
246
|
+
agentChannelId: address.agentChannelId,
|
|
247
|
+
conversationKey: address.conversationKey,
|
|
248
|
+
itemId: address.itemId,
|
|
249
|
+
}),
|
|
250
|
+
);
|
|
251
|
+
if (result.url) {
|
|
252
|
+
openInNewTab(result.url);
|
|
253
|
+
}
|
|
254
|
+
} catch (err) {
|
|
255
|
+
setError(toError(err));
|
|
256
|
+
} finally {
|
|
257
|
+
setIsOpening(false);
|
|
258
|
+
}
|
|
259
|
+
}, [stigmer, address.agentChannelId, address.conversationKey, address.itemId, isOpening]);
|
|
260
|
+
|
|
261
|
+
return useMemo(() => ({ open, isOpening, error }), [open, isOpening, error]);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Open a URL in a new tab via a transient anchor click (the
|
|
266
|
+
* `triggerBrowserDownload` shape, minus the `download` hint — the URL's
|
|
267
|
+
* disposition is inline and cross-origin anchors ignore the attribute
|
|
268
|
+
* anyway). Falls back to `window.open` in non-DOM environments.
|
|
269
|
+
*/
|
|
270
|
+
function openInNewTab(url: string): void {
|
|
271
|
+
if (typeof document === "undefined") {
|
|
272
|
+
if (typeof window !== "undefined") {
|
|
273
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
274
|
+
}
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const anchor = document.createElement("a");
|
|
278
|
+
anchor.href = url;
|
|
279
|
+
anchor.rel = "noopener noreferrer";
|
|
280
|
+
anchor.target = "_blank";
|
|
281
|
+
document.body.appendChild(anchor);
|
|
282
|
+
anchor.click();
|
|
283
|
+
document.body.removeChild(anchor);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Generic document glyph — the same geometry as the attachment chips'
|
|
288
|
+
* icon so the surfaces read as one family.
|
|
289
|
+
*/
|
|
290
|
+
function FileGlyph() {
|
|
291
|
+
return (
|
|
292
|
+
<svg
|
|
293
|
+
width="10"
|
|
294
|
+
height="10"
|
|
295
|
+
viewBox="0 0 14 14"
|
|
296
|
+
fill="none"
|
|
297
|
+
stroke="currentColor"
|
|
298
|
+
strokeWidth="1.5"
|
|
299
|
+
strokeLinecap="round"
|
|
300
|
+
strokeLinejoin="round"
|
|
301
|
+
className="stg:shrink-0 stg:text-muted-foreground"
|
|
302
|
+
aria-hidden="true"
|
|
303
|
+
>
|
|
304
|
+
<path d="M8 1H4C3.45 1 3 1.45 3 2V12C3 12.55 3.45 13 4 13H10C10.55 13 11 12.55 11 12V4L8 1Z" />
|
|
305
|
+
<path d="M8 1V4H11" />
|
|
306
|
+
</svg>
|
|
307
|
+
);
|
|
308
|
+
}
|