@stigmer/react 3.12.1 → 3.12.3
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/ManageAccessDialog.d.ts.map +1 -1
- package/access/ManageAccessDialog.js +8 -19
- package/access/ManageAccessDialog.js.map +1 -1
- package/activity/format-relative-time.d.ts +11 -9
- package/activity/format-relative-time.d.ts.map +1 -1
- package/activity/format-relative-time.js +11 -9
- package/activity/format-relative-time.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +5 -2
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +6 -5
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +15 -20
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +12 -20
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +3 -23
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +6 -10
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/approval-defaults-context.d.ts +47 -0
- package/approval-defaults-context.d.ts.map +1 -0
- package/approval-defaults-context.js +27 -0
- package/approval-defaults-context.js.map +1 -0
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
- package/attachment/AttachmentImageLightbox.js +8 -23
- package/attachment/AttachmentImageLightbox.js.map +1 -1
- package/attachment/index.d.ts +2 -0
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +1 -0
- package/attachment/index.js.map +1 -1
- package/attachment/vision-preflight.d.ts +113 -0
- package/attachment/vision-preflight.d.ts.map +1 -0
- package/attachment/vision-preflight.js +143 -0
- package/attachment/vision-preflight.js.map +1 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +3 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +3 -2
- package/billing/BillingSection.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +6 -21
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +10 -21
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +7 -22
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +10 -23
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +10 -23
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/useChannelSessions.d.ts.map +1 -1
- package/channel/useChannelSessions.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +8 -5
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +12 -7
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.d.ts +0 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +5 -10
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +2 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +120 -13
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.d.ts +0 -1
- package/composer/icons.d.ts.map +1 -1
- package/composer/icons.js +0 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationAttentionBanner.d.ts +23 -6
- package/conversation/ConversationAttentionBanner.d.ts.map +1 -1
- package/conversation/ConversationAttentionBanner.js +25 -10
- package/conversation/ConversationAttentionBanner.js.map +1 -1
- package/conversation/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +28 -8
- package/conversation/ConversationListPane.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +1 -1
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +3 -14
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -14
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/environment/CreateEnvironmentForm.d.ts.map +1 -1
- package/environment/CreateEnvironmentForm.js +4 -8
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.d.ts.map +1 -1
- package/environment/EnvVarForm.js +2 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +5 -7
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +13 -3
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +11 -17
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ExecutionErrorNotice.d.ts +36 -0
- package/execution/ExecutionErrorNotice.d.ts.map +1 -0
- package/execution/ExecutionErrorNotice.js +39 -0
- package/execution/ExecutionErrorNotice.js.map +1 -0
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +5 -8
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +1 -6
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FollowUpInput.d.ts.map +1 -1
- package/execution/FollowUpInput.js +1 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/LivenessStatusLine.d.ts +40 -0
- package/execution/LivenessStatusLine.d.ts.map +1 -0
- package/execution/LivenessStatusLine.js +34 -0
- package/execution/LivenessStatusLine.js.map +1 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +31 -3
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +25 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -36
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +1 -1
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +9 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/TerminalSession.d.ts +30 -0
- package/execution/TerminalSession.d.ts.map +1 -1
- package/execution/TerminalSession.js +37 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +9 -0
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +16 -0
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts +23 -7
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +120 -35
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.d.ts.map +1 -1
- package/execution/ToolRunGroup.js +11 -11
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +5 -20
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/index.d.ts +7 -3
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +4 -2
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +93 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +141 -5
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +32 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +10 -2
- package/execution/tool-presenter.js.map +1 -1
- package/execution/useArtifactInspection.d.ts.map +1 -1
- package/execution/useArtifactInspection.js +4 -7
- package/execution/useArtifactInspection.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -4
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +3 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +7 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -9
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +17 -26
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -4
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +8 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +5 -6
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +1 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/DialogShell.d.ts +77 -0
- package/internal/DialogShell.d.ts.map +1 -0
- package/internal/DialogShell.js +77 -0
- package/internal/DialogShell.js.map +1 -0
- package/internal/SpinnerIcon.d.ts +22 -0
- package/internal/SpinnerIcon.d.ts.map +1 -0
- package/internal/SpinnerIcon.js +23 -0
- package/internal/SpinnerIcon.js.map +1 -0
- package/internal/select-element-text.d.ts +11 -0
- package/internal/select-element-text.d.ts.map +1 -0
- package/internal/select-element-text.js +19 -0
- package/internal/select-element-text.js.map +1 -0
- package/internal/thread-card/ThreadCardShell.d.ts +27 -10
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +11 -5
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.d.ts +11 -2
- package/internal/thread-card/glyphs.d.ts.map +1 -1
- package/internal/thread-card/glyphs.js +9 -3
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/thread-card/index.d.ts +1 -1
- package/internal/thread-card/index.d.ts.map +1 -1
- package/internal/thread-card/index.js.map +1 -1
- package/internal/useCopyFeedback.d.ts +28 -0
- package/internal/useCopyFeedback.d.ts.map +1 -0
- package/internal/useCopyFeedback.js +40 -0
- package/internal/useCopyFeedback.js.map +1 -0
- package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
- package/invitation/InvitationCreatedAlert.js +12 -19
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +14 -21
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +2 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +16 -27
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.d.ts.map +1 -1
- package/manifest/ApplyManifestDialog.js +7 -17
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/manifest/EditResourceYamlDialog.d.ts.map +1 -1
- package/manifest/EditResourceYamlDialog.js +3 -19
- package/manifest/EditResourceYamlDialog.js.map +1 -1
- package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
- package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
- package/mcp-server/DefinitionDriftNotice.js +52 -0
- package/mcp-server/DefinitionDriftNotice.js.map +1 -0
- package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +8 -20
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +50 -28
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/OAuthAppForm.d.ts.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -4
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +39 -0
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
- package/mcp-server/internal/definitionDrift.js +122 -0
- package/mcp-server/internal/definitionDrift.js.map +1 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
- package/mcp-server/internal/mcpServerToInput.js +3 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +5 -4
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +1 -1
- package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
- package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
- package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
- package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
- package/models/ModelRegistryContext.d.ts +7 -1
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.js +9 -1
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +88 -6
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +133 -27
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +7 -1
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -5
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +5 -6
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.d.ts.map +1 -1
- package/organization/CreateOrganizationForm.js +5 -9
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +7 -16
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +5 -6
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +6 -7
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -4
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +18 -25
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +34 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +14 -7
- package/provider.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +2 -4
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/ConfirmDialog.d.ts +2 -3
- package/resource-detail/ConfirmDialog.d.ts.map +1 -1
- package/resource-detail/ConfirmDialog.js +8 -20
- package/resource-detail/ConfirmDialog.js.map +1 -1
- package/resource-detail/useCopyResource.d.ts +4 -3
- package/resource-detail/useCopyResource.d.ts.map +1 -1
- package/resource-detail/useCopyResource.js +10 -19
- package/resource-detail/useCopyResource.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -4
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +6 -7
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/NewSessionViewer.d.ts +52 -2
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +21 -6
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +63 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +43 -17
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +17 -0
- package/session/audience.d.ts.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/run-config.d.ts +50 -0
- package/session/run-config.d.ts.map +1 -0
- package/session/run-config.js +15 -0
- package/session/run-config.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +11 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +29 -2
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +7 -7
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +2 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +18 -4
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +33 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +37 -2
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +44 -10
- package/session/useSessionPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts.map +1 -1
- package/settings/ApiKeysSection.js +3 -2
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts.map +1 -1
- package/settings/ChannelAppsSection.js +3 -2
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +5 -3
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.d.ts.map +1 -1
- package/settings/IdentityProvidersSection.js +3 -2
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.d.ts.map +1 -1
- package/settings/InvitationsSection.js +3 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.d.ts.map +1 -1
- package/settings/MembersSection.js +3 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.d.ts.map +1 -1
- package/settings/OAuthAppsSection.js +3 -2
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.d.ts.map +1 -1
- package/settings/OrgProfileSection.js +3 -2
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +3 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +3 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +19 -26
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sidebar/chrome.d.ts +3 -4
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +5 -4
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDiffDialog.d.ts.map +1 -1
- package/skill/SkillDiffDialog.js +5 -21
- package/skill/SkillDiffDialog.js.map +1 -1
- package/src/access/ManageAccessDialog.tsx +14 -28
- package/src/activity/format-relative-time.ts +11 -9
- package/src/agent/steps/CapabilitiesStep.tsx +6 -3
- package/src/agent/steps/IdentityStep.tsx +19 -12
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +29 -33
- package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
- package/src/api-key/ApiKeyListPanel.tsx +3 -39
- package/src/api-key/CreateApiKeyForm.tsx +12 -26
- package/src/approval-defaults-context.ts +56 -0
- package/src/attachment/AttachmentImageLightbox.tsx +13 -36
- package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
- package/src/attachment/index.ts +12 -0
- package/src/attachment/vision-preflight.ts +236 -0
- package/src/billing/AutoRechargeCard.tsx +5 -4
- package/src/billing/BillingSection.tsx +4 -3
- package/src/channel/ChannelConversationsDialog.tsx +14 -29
- package/src/channel/ChannelCredentialsDialog.tsx +19 -29
- package/src/channel/ChannelTemplatesDialog.tsx +16 -31
- package/src/channel/ConnectSlackDialog.tsx +19 -31
- package/src/channel/ConnectWhatsAppDialog.tsx +19 -31
- package/src/channel/useChannelSessions.ts +3 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
- package/src/channel-app/CreateChannelAppForm.tsx +17 -12
- package/src/channel-app/internal.tsx +5 -25
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +160 -13
- package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
- package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
- package/src/composer/icons.tsx +0 -18
- package/src/conversation/ConversationAttentionBanner.tsx +64 -19
- package/src/conversation/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +46 -20
- package/src/conversation/ConversationsWorkbench.tsx +1 -0
- package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +76 -2
- package/src/conversation/__tests__/ConversationListPane.test.tsx +15 -4
- package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
- package/src/dashboard/DashboardFailedRuns.tsx +2 -12
- package/src/environment/CreateEnvironmentForm.tsx +8 -27
- package/src/environment/EnvVarForm.tsx +2 -18
- package/src/environment/EnvironmentVariableEditor.tsx +5 -21
- package/src/execution/ApprovalCard.tsx +23 -2
- package/src/execution/ArtifactApplyButton.tsx +2 -17
- package/src/execution/ArtifactPreviewModal.tsx +15 -27
- package/src/execution/ExecutionErrorNotice.tsx +99 -0
- package/src/execution/FilePathLink.tsx +5 -9
- package/src/execution/FileReviewCard.tsx +1 -20
- package/src/execution/FollowUpInput.tsx +1 -16
- package/src/execution/LivenessStatusLine.tsx +59 -0
- package/src/execution/MessageEntry.tsx +136 -25
- package/src/execution/MessageThread.tsx +84 -83
- package/src/execution/SetupProgress.tsx +5 -1
- package/src/execution/SubAgentSection.tsx +9 -20
- package/src/execution/TerminalSession.tsx +97 -10
- package/src/execution/ToolCallDetail.tsx +19 -0
- package/src/execution/ToolCallItem.tsx +175 -44
- package/src/execution/ToolRunGroup.tsx +30 -32
- package/src/execution/WriteBackCard.tsx +5 -24
- package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
- package/src/execution/__tests__/MessageThread.test.tsx +97 -0
- package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
- package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
- package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
- package/src/execution/__tests__/intent-title.test.tsx +221 -0
- package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +11 -2
- package/src/execution/tool-categories.ts +195 -9
- package/src/execution/tool-presenter.ts +44 -2
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/iam-policy/GrantAccessForm.tsx +2 -18
- package/src/iam-policy/OrgMembersPanel.tsx +3 -19
- package/src/iam-policy/RoleSelector.tsx +8 -1
- package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
- package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
- package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
- package/src/index.ts +26 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/DialogShell.tsx +169 -0
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/DialogShell.test.tsx +223 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/select-element-text.ts +17 -0
- package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
- package/src/internal/thread-card/glyphs.tsx +24 -3
- package/src/internal/thread-card/index.ts +1 -0
- package/src/internal/useCopyFeedback.ts +61 -0
- package/src/invitation/InvitationCreatedAlert.tsx +10 -18
- package/src/invitation/InvitationManager.tsx +23 -34
- package/src/invitation/InvitationRedemption.tsx +2 -18
- package/src/library/useExportResource.ts +15 -29
- package/src/manifest/ApplyManifestDialog.tsx +8 -26
- package/src/manifest/EditResourceYamlDialog.tsx +4 -31
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +15 -29
- package/src/mcp-server/McpServerDetailView.tsx +69 -49
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
- package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
- package/src/mcp-server/internal/definitionDrift.ts +158 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
- package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
- package/src/mcp-server/useMcpServerConnect.ts +1 -1
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/models/ModelRegistryContext.ts +7 -1
- package/src/models/ModelSelector.tsx +37 -0
- package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
- package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
- package/src/models/index.ts +2 -2
- package/src/models/registry.ts +196 -29
- package/src/models/useModelRegistry.ts +10 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
- package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
- package/src/organization/CreateOrganizationForm.tsx +10 -29
- package/src/organization/OrgProfilePanel.tsx +13 -44
- package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
- package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
- package/src/platform-client/PlatformClientListPanel.tsx +2 -18
- package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
- package/src/provider.tsx +76 -33
- package/src/resource-creation/WizardNav.tsx +2 -18
- package/src/resource-detail/ConfirmDialog.tsx +9 -30
- package/src/resource-detail/useCopyResource.ts +17 -23
- package/src/schedule/ScheduleDetailView.tsx +2 -18
- package/src/schedule/ScheduleForm.tsx +19 -34
- package/src/session/NewSessionViewer.tsx +85 -7
- package/src/session/SessionViewer.tsx +120 -17
- package/src/session/__tests__/audienceWiring.test.tsx +76 -0
- package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
- package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
- package/src/session/__tests__/useSessionPanel.test.ts +114 -0
- package/src/session/audience.ts +18 -0
- package/src/session/index.ts +2 -1
- package/src/session/run-config.ts +59 -0
- package/src/session/useNewSessionFlow.ts +39 -2
- package/src/session/useSessionConversation.ts +10 -8
- package/src/session/useSessionPageFlow.ts +51 -10
- package/src/session/useSessionPanel.ts +91 -10
- package/src/settings/ApiKeysSection.tsx +4 -3
- package/src/settings/ChannelAppsSection.tsx +4 -3
- package/src/settings/EnvironmentsSection.tsx +8 -5
- package/src/settings/IdentityProvidersSection.tsx +4 -3
- package/src/settings/InvitationsSection.tsx +4 -2
- package/src/settings/MembersSection.tsx +4 -2
- package/src/settings/OAuthAppsSection.tsx +4 -3
- package/src/settings/OrgProfileSection.tsx +4 -3
- package/src/settings/PlatformClientsSection.tsx +4 -3
- package/src/settings/UsageSection.tsx +4 -2
- package/src/sharing/ShareAgentDialog.tsx +33 -37
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +13 -36
- package/src/styles.css +43 -0
- package/src/version-history/VersionTimelineEntry.tsx +1 -21
- package/src/workflow/FailedRunsWidget.tsx +2 -9
- package/src/workflow/PendingApprovalsWidget.tsx +2 -9
- package/src/workflow/ViewYamlDialog.tsx +21 -55
- package/src/workflow/WorkflowArchitectDialog.tsx +17 -68
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
- package/src/workflow/WorkflowExplainDialog.tsx +18 -60
- package/src/workflow/WorkflowGraphFullscreenDialog.tsx +14 -26
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
- package/src/workflow/WorkflowRefinePanel.tsx +2 -18
- package/src/workflow/WorkflowRepairCard.tsx +2 -18
- package/src/workflow/WorkflowRunDialog.tsx +23 -70
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
- package/src/workflow/WorkflowVersionBadge.tsx +4 -13
- package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
- package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -41
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +14 -27
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +18 -28
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useWorkflowCanvas.ts +114 -11
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +1 -23
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -11
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -11
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/ViewYamlDialog.d.ts.map +1 -1
- package/workflow/ViewYamlDialog.js +14 -49
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +10 -33
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +5 -8
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +1 -1
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.d.ts +4 -2
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
- package/workflow/WorkflowCanvasInner.js +7 -3
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +6 -2
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +23 -6
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +10 -28
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.d.ts.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.js +11 -17
- package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +8 -2
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
- package/workflow/WorkflowRefinePanel.js +2 -4
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.d.ts.map +1 -1
- package/workflow/WorkflowRepairCard.js +2 -4
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +14 -35
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +2 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +4 -13
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +1 -26
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +14 -40
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/index.d.ts +1 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +7 -20
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
- package/workflow/picker/BranchAddPopover.js +3 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +10 -22
- package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useWorkflowCanvas.d.ts +5 -1
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +99 -13
- package/workflow/useWorkflowCanvas.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +46 -13
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback
|
|
3
|
+
import { useCallback } from "react";
|
|
4
4
|
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
5
5
|
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { DialogShell } from "../internal/DialogShell.js";
|
|
6
7
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
7
8
|
import { formatArtifactSize } from "./artifact-utils.js";
|
|
8
9
|
import { ArtifactContentBody } from "./ArtifactContentBody.js";
|
|
@@ -253,37 +254,24 @@ export function ArtifactPreviewModal({
|
|
|
253
254
|
onImplement,
|
|
254
255
|
className,
|
|
255
256
|
}: ArtifactPreviewModalProps) {
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const dialog = dialogRef.current;
|
|
260
|
-
if (!dialog) return;
|
|
261
|
-
|
|
262
|
-
if (open && !dialog.open) {
|
|
263
|
-
dialog.showModal();
|
|
264
|
-
} else if (!open && dialog.open) {
|
|
265
|
-
dialog.close();
|
|
266
|
-
}
|
|
267
|
-
}, [open]);
|
|
268
|
-
|
|
269
|
-
const handleCancel = useCallback(
|
|
270
|
-
(e: React.SyntheticEvent) => {
|
|
271
|
-
e.preventDefault();
|
|
272
|
-
onClose();
|
|
257
|
+
const handleOpenChange = useCallback(
|
|
258
|
+
(nextOpen: boolean) => {
|
|
259
|
+
if (!nextOpen) onClose();
|
|
273
260
|
},
|
|
274
261
|
[onClose],
|
|
275
262
|
);
|
|
276
263
|
|
|
277
264
|
return (
|
|
278
|
-
<
|
|
279
|
-
|
|
280
|
-
|
|
265
|
+
<DialogShell
|
|
266
|
+
open={open}
|
|
267
|
+
onOpenChange={handleOpenChange}
|
|
268
|
+
width="3xl"
|
|
281
269
|
aria-label={`Preview ${artifact.name}`}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
)}
|
|
270
|
+
// Background surface is deliberate for content previews. The
|
|
271
|
+
// previously hardcoded ::backdrop color (bg-black/50 — it escaped the
|
|
272
|
+
// #652 fence via the arbitrary-variant spelling) now rides the
|
|
273
|
+
// shell's token backdrop.
|
|
274
|
+
className={cn("stg:bg-background stg:text-foreground stg:outline-none", className)}
|
|
287
275
|
>
|
|
288
276
|
{open && (
|
|
289
277
|
<ArtifactPreviewContent
|
|
@@ -296,7 +284,7 @@ export function ArtifactPreviewModal({
|
|
|
296
284
|
onImplement={onImplement}
|
|
297
285
|
/>
|
|
298
286
|
)}
|
|
299
|
-
</
|
|
287
|
+
</DialogShell>
|
|
300
288
|
);
|
|
301
289
|
}
|
|
302
290
|
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Recognizes a recoverable *interruption* (worker reaped / heartbeat timeout /
|
|
8
|
+
* stall) as opposed to a genuine application failure. The runner stamps these
|
|
9
|
+
* with a stable signature ("[StallTimeoutError]", "Execution interrupted",
|
|
10
|
+
* "Retry or resume."), and the workflow auto-resumes them while recovery cycles
|
|
11
|
+
* remain; by the time one reaches the UI as terminal it is resumable from the
|
|
12
|
+
* session's persisted harness_state_id rather than a dead end.
|
|
13
|
+
*/
|
|
14
|
+
function isInterruptedError(error: string): boolean {
|
|
15
|
+
return /\[StallTimeoutError\]|execution interrupted|retry or resume/i.test(error);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Props for {@link ExecutionErrorNotice} and its MessageThread slot. */
|
|
19
|
+
export interface ExecutionErrorNoticeProps {
|
|
20
|
+
/** The server-reported failure reason (`AgentExecutionStatus.error`), raw. */
|
|
21
|
+
readonly error: string;
|
|
22
|
+
/**
|
|
23
|
+
* The originating user message, resent verbatim on retry. Absent when the
|
|
24
|
+
* failed execution has no resendable prompt — the retry affordance is
|
|
25
|
+
* hidden in that case.
|
|
26
|
+
*/
|
|
27
|
+
readonly retryMessage?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Resends {@link retryMessage}; the server continues from the session's
|
|
30
|
+
* persisted harness_state_id. Retry renders only when both this handler
|
|
31
|
+
* and {@link retryMessage} are present.
|
|
32
|
+
*/
|
|
33
|
+
readonly onRetry?: (message: string) => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Renders the server-reported failure reason (`AgentExecutionStatus.error`)
|
|
38
|
+
* for an execution that died — typically before producing any messages. The
|
|
39
|
+
* reason can be a long Temporal error, so it is clamped by default with a
|
|
40
|
+
* Show more / Show less toggle.
|
|
41
|
+
*
|
|
42
|
+
* A genuine failure renders as a destructive alert with a Retry. A *recoverable
|
|
43
|
+
* interruption* renders as a neutral notice with a Resume — both resend the
|
|
44
|
+
* originating message, which the server continues from the session's persisted
|
|
45
|
+
* harness_state_id (the same data path; the framing differs so an interruption
|
|
46
|
+
* never looks like a dead-end crash).
|
|
47
|
+
*
|
|
48
|
+
* Slot-overridable via `MessageThreadSlots.ExecutionErrorNotice`. An override
|
|
49
|
+
* receives the raw reason and the retry wiring and owns its own presentation —
|
|
50
|
+
* including whether to reproduce the interruption-vs-failure framing, which is
|
|
51
|
+
* an internal heuristic of this built-in, not part of the slot contract.
|
|
52
|
+
*/
|
|
53
|
+
export function ExecutionErrorNotice({
|
|
54
|
+
error,
|
|
55
|
+
retryMessage,
|
|
56
|
+
onRetry,
|
|
57
|
+
}: ExecutionErrorNoticeProps) {
|
|
58
|
+
const [expanded, setExpanded] = useState(false);
|
|
59
|
+
const canRetry = !!onRetry && !!retryMessage;
|
|
60
|
+
const interrupted = isInterruptedError(error);
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<div
|
|
64
|
+
role={interrupted ? "status" : "alert"}
|
|
65
|
+
className={cn(
|
|
66
|
+
"stg:mx-4 stg:flex stg:flex-col stg:gap-1.5 stg:rounded-md stg:px-3 stg:py-2",
|
|
67
|
+
interrupted ? "stg:bg-muted" : "stg:bg-destructive-subtle",
|
|
68
|
+
)}
|
|
69
|
+
>
|
|
70
|
+
<p
|
|
71
|
+
className={cn(
|
|
72
|
+
"stg:text-xs stg:whitespace-pre-wrap stg:break-words",
|
|
73
|
+
interrupted ? "stg:text-foreground" : "stg:text-destructive",
|
|
74
|
+
!expanded && "stg:line-clamp-3",
|
|
75
|
+
)}
|
|
76
|
+
>
|
|
77
|
+
{error}
|
|
78
|
+
</p>
|
|
79
|
+
<div className="stg:flex stg:items-center stg:gap-3 stg:text-xs">
|
|
80
|
+
<button
|
|
81
|
+
type="button"
|
|
82
|
+
onClick={() => setExpanded((v) => !v)}
|
|
83
|
+
className="stg:font-medium stg:text-muted-foreground stg:underline-offset-2 stg:hover:underline stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring"
|
|
84
|
+
>
|
|
85
|
+
{expanded ? "Show less" : "Show more"}
|
|
86
|
+
</button>
|
|
87
|
+
{canRetry && (
|
|
88
|
+
<button
|
|
89
|
+
type="button"
|
|
90
|
+
onClick={() => onRetry!(retryMessage!)}
|
|
91
|
+
className="stg:font-medium stg:text-foreground stg:underline-offset-2 stg:hover:underline stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring"
|
|
92
|
+
>
|
|
93
|
+
{interrupted ? "Resume" : "Retry"}
|
|
94
|
+
</button>
|
|
95
|
+
)}
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useContext, useMemo
|
|
3
|
+
import { useCallback, useContext, useMemo } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
6
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
6
7
|
import { FilePathContext } from "./FilePathContext.js";
|
|
7
8
|
import { resolvePathAction, splitDisplayPath } from "./file-path-resolver.js";
|
|
8
9
|
|
|
@@ -28,8 +29,6 @@ export interface FilePathLinkProps {
|
|
|
28
29
|
readonly className?: string;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
const COPIED_FEEDBACK_MS = 2000;
|
|
32
|
-
|
|
33
32
|
/**
|
|
34
33
|
* Interactive file path display that replaces inert `<span>` path
|
|
35
34
|
* text in tool call rendering.
|
|
@@ -62,7 +61,7 @@ export function FilePathLink({
|
|
|
62
61
|
className,
|
|
63
62
|
}: FilePathLinkProps) {
|
|
64
63
|
const { workspaceEntries, onFilePathClick } = useContext(FilePathContext);
|
|
65
|
-
const
|
|
64
|
+
const { copy, copied } = useCopyFeedback();
|
|
66
65
|
|
|
67
66
|
const resolved = useMemo(
|
|
68
67
|
() => resolvePathAction(path, workspaceEntries),
|
|
@@ -80,11 +79,8 @@ export function FilePathLink({
|
|
|
80
79
|
|
|
81
80
|
const handleCopy = useCallback(() => {
|
|
82
81
|
const value = resolved.action === "copy" ? resolved.value : path;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
|
|
86
|
-
});
|
|
87
|
-
}, [resolved, path]);
|
|
82
|
+
void copy(value);
|
|
83
|
+
}, [resolved, path, copy]);
|
|
88
84
|
|
|
89
85
|
const handleClick = useCallback(
|
|
90
86
|
(e: React.MouseEvent) => {
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
fileReviewability,
|
|
29
29
|
type FileReviewability,
|
|
30
30
|
} from "./file-review-status.js";
|
|
31
|
+
import { SpinnerIcon } from "../internal/thread-card/glyphs.js";
|
|
31
32
|
|
|
32
33
|
/** A stable empty set so the default `submittingDecisionKeys` keeps a constant ref. */
|
|
33
34
|
const NO_KEYS: ReadonlySet<string> = new Set();
|
|
@@ -1063,23 +1064,3 @@ function bulkLabels(
|
|
|
1063
1064
|
return { approve: `${approveVerb} all`, reject: "Reject all" };
|
|
1064
1065
|
}
|
|
1065
1066
|
|
|
1066
|
-
// ---------------------------------------------------------------------------
|
|
1067
|
-
// Inline SVG icon
|
|
1068
|
-
// ---------------------------------------------------------------------------
|
|
1069
|
-
|
|
1070
|
-
function SpinnerIcon() {
|
|
1071
|
-
return (
|
|
1072
|
-
<svg
|
|
1073
|
-
width="10"
|
|
1074
|
-
height="10"
|
|
1075
|
-
viewBox="0 0 12 12"
|
|
1076
|
-
fill="none"
|
|
1077
|
-
stroke="currentColor"
|
|
1078
|
-
strokeWidth="1.5"
|
|
1079
|
-
className="stg:animate-spin"
|
|
1080
|
-
aria-hidden="true"
|
|
1081
|
-
>
|
|
1082
|
-
<path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
|
|
1083
|
-
</svg>
|
|
1084
|
-
);
|
|
1085
|
-
}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from "react";
|
|
10
10
|
import { cn } from "@stigmer/theme";
|
|
11
11
|
import { ModelSelector } from "../models/ModelSelector.js";
|
|
12
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
12
13
|
|
|
13
14
|
/** Props for {@link FollowUpInput}. */
|
|
14
15
|
export interface FollowUpInputProps {
|
|
@@ -204,19 +205,3 @@ function ArrowUpIcon() {
|
|
|
204
205
|
);
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
function SpinnerIcon() {
|
|
208
|
-
return (
|
|
209
|
-
<svg
|
|
210
|
-
width="16"
|
|
211
|
-
height="16"
|
|
212
|
-
viewBox="0 0 16 16"
|
|
213
|
-
fill="none"
|
|
214
|
-
stroke="currentColor"
|
|
215
|
-
strokeWidth="2"
|
|
216
|
-
strokeLinecap="round"
|
|
217
|
-
className="stg:animate-spin"
|
|
218
|
-
>
|
|
219
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
220
|
-
</svg>
|
|
221
|
-
);
|
|
222
|
-
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
|
|
6
|
+
/** Props for {@link LivenessStatusLine}. */
|
|
7
|
+
export interface LivenessStatusLineProps {
|
|
8
|
+
/**
|
|
9
|
+
* The status copy. Defaults to `"Working…"` — deliberately generic: the
|
|
10
|
+
* thread has no model-authored account of what the agent is doing between
|
|
11
|
+
* visible events (that seam is stigmer#276), so the line claims only what
|
|
12
|
+
* is provably true.
|
|
13
|
+
*/
|
|
14
|
+
readonly label?: string;
|
|
15
|
+
/** Additional CSS class names for the root container. */
|
|
16
|
+
readonly className?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The thread's ambient-liveness anchor (stigmer#277): a quiet one-line status
|
|
21
|
+
* at the bottom of the thread while an execution is live but nothing else on
|
|
22
|
+
* screen is visibly moving — the exact stretches (model generation between
|
|
23
|
+
* tool calls) where users conclude the agent died and reach for a restart.
|
|
24
|
+
*
|
|
25
|
+
* The label carries the shared `stgm-shimmer-label` sweep, the same treatment
|
|
26
|
+
* as a running tool row's title and the thinking indicator, so "alive" reads
|
|
27
|
+
* identically everywhere. {@link MessageThread} emits it only while the
|
|
28
|
+
* active execution is `IN_PROGRESS` with no running tool call, no live
|
|
29
|
+
* sub-agent, and no pending approval — when a gate is waiting on the *user*,
|
|
30
|
+
* shimmering "Working…" would be a lie, and when a tool is running, its own
|
|
31
|
+
* row carries the sweep. It disappears the moment the execution settles
|
|
32
|
+
* (phase-driven, DD-009 — never inferred from the stream going quiet).
|
|
33
|
+
*
|
|
34
|
+
* Replaceable via {@link MessageThreadSlots.LivenessStatusLine} (the
|
|
35
|
+
* SetupProgress precedent) for hosts that want their own liveness voice.
|
|
36
|
+
*
|
|
37
|
+
* All visual properties flow through `--stgm-*` tokens.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <LivenessStatusLine />
|
|
42
|
+
* <LivenessStatusLine label="Reviewing your data…" />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export const LivenessStatusLine = memo(function LivenessStatusLine({
|
|
46
|
+
label = "Working\u2026",
|
|
47
|
+
className,
|
|
48
|
+
}: LivenessStatusLineProps) {
|
|
49
|
+
return (
|
|
50
|
+
<div
|
|
51
|
+
role="status"
|
|
52
|
+
aria-label={label}
|
|
53
|
+
data-cursor-target="liveness-status-line"
|
|
54
|
+
className={cn("stg:flex stg:items-center stg:px-4 stg:py-1.5", className)}
|
|
55
|
+
>
|
|
56
|
+
<span className="stg:text-xs stgm-shimmer-label">{label}</span>
|
|
57
|
+
</div>
|
|
58
|
+
);
|
|
59
|
+
});
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
import { PlanDocumentMessage } from "./PlanDocumentMessage.js";
|
|
21
21
|
import { useRenderTracer } from "../internal/dev/index.js";
|
|
22
22
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
23
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
23
24
|
|
|
24
25
|
/** Props for {@link MessageEntry}. */
|
|
25
26
|
export interface MessageEntryProps {
|
|
@@ -192,29 +193,29 @@ function HumanMessage({
|
|
|
192
193
|
/>
|
|
193
194
|
)}
|
|
194
195
|
<p className="stg:text-sm stg:text-foreground stg:whitespace-pre-wrap">{content}</p>
|
|
195
|
-
{
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
"
|
|
206
|
-
|
|
207
|
-
"
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
196
|
+
{/* The hover-revealed action cluster on the bubble's shoulder: copy is
|
|
197
|
+
always offered (the message text is the content), edit only when the
|
|
198
|
+
host wired the callback. */}
|
|
199
|
+
<div className="stg:absolute stg:-top-2.5 stg:-right-2.5 stg:flex stg:gap-1">
|
|
200
|
+
<CopyMessageButton text={content} variant="bubble" />
|
|
201
|
+
{onEdit && (
|
|
202
|
+
<Tooltip>
|
|
203
|
+
<TooltipTrigger
|
|
204
|
+
render={
|
|
205
|
+
<button
|
|
206
|
+
type="button"
|
|
207
|
+
onClick={onEdit}
|
|
208
|
+
aria-label="Edit message"
|
|
209
|
+
className={BUBBLE_ACTION_CLASSES}
|
|
210
|
+
/>
|
|
211
|
+
}
|
|
212
|
+
>
|
|
213
|
+
<EditIcon />
|
|
214
|
+
</TooltipTrigger>
|
|
215
|
+
<TooltipContent side="top">Edit</TooltipContent>
|
|
216
|
+
</Tooltip>
|
|
217
|
+
)}
|
|
218
|
+
</div>
|
|
218
219
|
</div>
|
|
219
220
|
);
|
|
220
221
|
}
|
|
@@ -269,7 +270,7 @@ function AiMessage({
|
|
|
269
270
|
role="article"
|
|
270
271
|
aria-label="AI response"
|
|
271
272
|
aria-busy={isStreaming}
|
|
272
|
-
className={cn("stg:px-4 stg:py-3", className)}
|
|
273
|
+
className={cn("stg:group stg:px-4 stg:py-3", className)}
|
|
273
274
|
>
|
|
274
275
|
<div className="stgm-prose">
|
|
275
276
|
<Streamdown
|
|
@@ -280,10 +281,118 @@ function AiMessage({
|
|
|
280
281
|
{markdown}
|
|
281
282
|
</Streamdown>
|
|
282
283
|
</div>
|
|
284
|
+
{/* The quiet per-message actions row (issue #278). Height is reserved
|
|
285
|
+
whenever it renders, so the hover reveal never shifts the prose; it
|
|
286
|
+
appears only once the message settles — a streaming message's text
|
|
287
|
+
is still changing, so a copy would race the content. Copies the
|
|
288
|
+
display markdown (fence-unwrapped), i.e. what the reader sees. */}
|
|
289
|
+
{!isStreaming && markdown.trim().length > 0 && (
|
|
290
|
+
<div className="stg:mt-1 stg:flex stg:h-6 stg:items-center">
|
|
291
|
+
<CopyMessageButton text={markdown} variant="quiet" />
|
|
292
|
+
</div>
|
|
293
|
+
)}
|
|
283
294
|
</div>
|
|
284
295
|
);
|
|
285
296
|
}
|
|
286
297
|
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
// Per-message copy affordance (issue #278)
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
|
|
302
|
+
// The floating circular action on a human bubble's shoulder — shared by the
|
|
303
|
+
// copy and edit buttons so the cluster reads as one control family.
|
|
304
|
+
const BUBBLE_ACTION_CLASSES = cn(
|
|
305
|
+
"stg:inline-flex stg:h-7 stg:w-7 stg:items-center stg:justify-center stg:rounded-full",
|
|
306
|
+
"stg:border stg:border-border stg:bg-card stg:text-muted-foreground stg:shadow-sm stg:transition",
|
|
307
|
+
"stg:hover:text-foreground stg:hover:bg-accent-hover",
|
|
308
|
+
"stg:opacity-0 stg:group-hover:opacity-100 stg:focus-visible:opacity-100",
|
|
309
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
310
|
+
);
|
|
311
|
+
|
|
312
|
+
// The quiet in-flow variant for AI prose: no border or fill, one contrast
|
|
313
|
+
// step below the reading text (`muted-foreground-subtle`, rising to
|
|
314
|
+
// `muted-foreground` on hover) — findable when wanted, invisible while
|
|
315
|
+
// reading. The same hover/focus reveal keeps both variants keyboard-reachable.
|
|
316
|
+
const QUIET_ACTION_CLASSES = cn(
|
|
317
|
+
"stg:inline-flex stg:h-6 stg:w-6 stg:items-center stg:justify-center stg:rounded-md",
|
|
318
|
+
"stg:text-muted-foreground-subtle stg:transition",
|
|
319
|
+
"stg:hover:text-muted-foreground stg:hover:bg-accent-hover",
|
|
320
|
+
"stg:opacity-0 stg:group-hover:opacity-100 stg:focus-visible:opacity-100",
|
|
321
|
+
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* The per-message copy control: writes the message's text to the clipboard
|
|
326
|
+
* and flips to a check for the feedback window. `variant` selects the visual
|
|
327
|
+
* home — `"bubble"` joins the human bubble's floating action cluster,
|
|
328
|
+
* `"quiet"` sits in the AI message's reserved actions row.
|
|
329
|
+
*/
|
|
330
|
+
function CopyMessageButton({
|
|
331
|
+
text,
|
|
332
|
+
variant,
|
|
333
|
+
}: {
|
|
334
|
+
text: string;
|
|
335
|
+
variant: "bubble" | "quiet";
|
|
336
|
+
}) {
|
|
337
|
+
const { copy, copied } = useCopyFeedback();
|
|
338
|
+
return (
|
|
339
|
+
<Tooltip>
|
|
340
|
+
<TooltipTrigger
|
|
341
|
+
render={
|
|
342
|
+
<button
|
|
343
|
+
type="button"
|
|
344
|
+
onClick={() => void copy(text)}
|
|
345
|
+
aria-label={copied ? "Copied" : "Copy message"}
|
|
346
|
+
className={
|
|
347
|
+
variant === "bubble" ? BUBBLE_ACTION_CLASSES : QUIET_ACTION_CLASSES
|
|
348
|
+
}
|
|
349
|
+
/>
|
|
350
|
+
}
|
|
351
|
+
>
|
|
352
|
+
{copied ? <CheckIcon /> : <CopyMessageIcon />}
|
|
353
|
+
</TooltipTrigger>
|
|
354
|
+
<TooltipContent side="top">{copied ? "Copied" : "Copy"}</TooltipContent>
|
|
355
|
+
</Tooltip>
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function CopyMessageIcon() {
|
|
360
|
+
return (
|
|
361
|
+
<svg
|
|
362
|
+
width="13"
|
|
363
|
+
height="13"
|
|
364
|
+
viewBox="0 0 24 24"
|
|
365
|
+
fill="none"
|
|
366
|
+
stroke="currentColor"
|
|
367
|
+
strokeWidth="2"
|
|
368
|
+
strokeLinecap="round"
|
|
369
|
+
strokeLinejoin="round"
|
|
370
|
+
aria-hidden="true"
|
|
371
|
+
>
|
|
372
|
+
<rect x="9" y="9" width="13" height="13" rx="2" />
|
|
373
|
+
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
|
|
374
|
+
</svg>
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
function CheckIcon() {
|
|
379
|
+
return (
|
|
380
|
+
<svg
|
|
381
|
+
width="13"
|
|
382
|
+
height="13"
|
|
383
|
+
viewBox="0 0 24 24"
|
|
384
|
+
fill="none"
|
|
385
|
+
stroke="currentColor"
|
|
386
|
+
strokeWidth="2"
|
|
387
|
+
strokeLinecap="round"
|
|
388
|
+
strokeLinejoin="round"
|
|
389
|
+
aria-hidden="true"
|
|
390
|
+
>
|
|
391
|
+
<path d="M20 6 9 17l-5-5" />
|
|
392
|
+
</svg>
|
|
393
|
+
);
|
|
394
|
+
}
|
|
395
|
+
|
|
287
396
|
const THINKING_PREVIEW_LENGTH = 80;
|
|
288
397
|
|
|
289
398
|
function ThinkingMessage({
|
|
@@ -320,7 +429,9 @@ function ThinkingMessage({
|
|
|
320
429
|
)}
|
|
321
430
|
>
|
|
322
431
|
<ThinkingIcon isStreaming={isStreaming} />
|
|
323
|
-
|
|
432
|
+
{/* Live reasoning carries the ambient-liveness sweep (stigmer#277) —
|
|
433
|
+
the words themselves signal activity, not just the icon. */}
|
|
434
|
+
<span className={cn("stg:min-w-0 stg:truncate", isStreaming && "stgm-shimmer-label")}>
|
|
324
435
|
{isStreaming && !hasContent
|
|
325
436
|
? "Thinking..."
|
|
326
437
|
: expanded
|