@stigmer/react 3.12.0 → 3.12.2
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 +7 -2
- 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 +10 -2
- 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/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 +5 -4
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +9 -4
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +5 -4
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +9 -4
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +9 -4
- 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/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +3 -2
- package/conversation/ConversationListPane.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/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.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 +20 -6
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +102 -29
- 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 +6 -2
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +3 -1
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +42 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +38 -4
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +17 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +4 -1
- 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/execution/useCreateAgentExecution.d.ts +3 -2
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.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/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/isUnimplemented.d.ts +17 -0
- package/internal/isUnimplemented.d.ts.map +1 -0
- package/internal/isUnimplemented.js +26 -0
- package/internal/isUnimplemented.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.js +1 -1
- package/manifest/EditResourceYamlDialog.js +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.js +8 -4
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +47 -14
- 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/useMcpServerCredentials.d.ts +38 -10
- package/mcp-server/useMcpServerCredentials.d.ts.map +1 -1
- package/mcp-server/useMcpServerCredentials.js +50 -7
- package/mcp-server/useMcpServerCredentials.js.map +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/mcp-server/useOrgOAuthApp.d.ts +22 -0
- package/mcp-server/useOrgOAuthApp.d.ts.map +1 -1
- package/mcp-server/useOrgOAuthApp.js +39 -7
- package/mcp-server/useOrgOAuthApp.js.map +1 -1
- 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.js +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 +11 -9
- 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 +18 -7
- 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.js +1 -1
- package/skill/useSkillVersions.d.ts.map +1 -1
- package/skill/useSkillVersions.js +1 -9
- package/skill/useSkillVersions.js.map +1 -1
- package/src/access/ManageAccessDialog.tsx +10 -4
- 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 +17 -8
- 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/__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 +8 -4
- package/src/channel/ChannelCredentialsDialog.tsx +14 -4
- package/src/channel/ChannelTemplatesDialog.tsx +8 -4
- package/src/channel/ConnectSlackDialog.tsx +14 -4
- package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
- 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/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +4 -3
- 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/ArtifactApplyButton.tsx +2 -17
- 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 +157 -37
- 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__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +8 -2
- package/src/execution/tool-categories.ts +72 -8
- package/src/execution/tool-presenter.ts +22 -1
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/execution/useCreateAgentExecution.ts +3 -2
- 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 +23 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/isUnimplemented.ts +26 -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 +1 -1
- package/src/manifest/EditResourceYamlDialog.tsx +1 -1
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +30 -12
- package/src/mcp-server/McpServerDetailView.tsx +58 -26
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +103 -5
- package/src/mcp-server/__tests__/byoaEditionDegradation.test.tsx +323 -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__/useMcpServerCredentials.test.tsx +306 -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/useMcpServerCredentials.ts +87 -19
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/mcp-server/useOrgOAuthApp.ts +54 -8
- 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 +1 -1
- 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 +14 -10
- 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 +28 -10
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +1 -1
- package/src/skill/useSkillVersions.ts +1 -11
- 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 +7 -22
- package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +39 -7
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionGraph.tsx +26 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +115 -24
- package/src/workflow/WorkflowExplainDialog.tsx +8 -24
- package/src/workflow/WorkflowNode.tsx +5 -2
- 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 +31 -24
- 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__/WorkflowExecutionViewer.reconciliation.test.tsx +48 -1
- package/src/workflow/__tests__/WorkflowNode.test.tsx +93 -0
- package/src/workflow/__tests__/WorkflowRunDialog.test.tsx +127 -0
- package/src/workflow/__tests__/graph-history.test.ts +103 -0
- package/src/workflow/__tests__/overview-graph.test.ts +17 -0
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useCanvasKeyboardShortcuts.undo.test.ts +115 -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__/useWorkflowCanvas.undo.test.tsx +133 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +17 -8
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/instance/useDeleteWorkflowInstance.ts +9 -4
- package/src/workflow/layout/registry-dimensions.ts +2 -5
- package/src/workflow/node-shell/NodeShell.tsx +4 -0
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/task-type-visual-registry.ts +5 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useCanvasKeyboardShortcuts.ts +33 -3
- package/src/workflow/useGraphHistory.ts +22 -41
- package/src/workflow/useWorkflowCanvas.ts +126 -21
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/src/workflow/useWorkflowSave.ts +2 -15
- package/src/workflow/workflow-graph-conversions.ts +25 -3
- 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 +7 -23
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +7 -11
- 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 +31 -6
- 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/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +27 -1
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +49 -18
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +6 -8
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowNode.d.ts.map +1 -1
- package/workflow/WorkflowNode.js +2 -2
- package/workflow/WorkflowNode.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 +11 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +18 -9
- 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 +7 -15
- 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 +10 -2
- 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/instance/useDeleteWorkflowInstance.d.ts +9 -4
- package/workflow/instance/useDeleteWorkflowInstance.d.ts.map +1 -1
- package/workflow/instance/useDeleteWorkflowInstance.js +4 -2
- package/workflow/instance/useDeleteWorkflowInstance.js.map +1 -1
- package/workflow/layout/registry-dimensions.d.ts.map +1 -1
- package/workflow/layout/registry-dimensions.js +2 -5
- package/workflow/layout/registry-dimensions.js.map +1 -1
- package/workflow/node-shell/NodeShell.js +1 -1
- package/workflow/node-shell/NodeShell.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/task-type-visual-registry.d.ts.map +1 -1
- package/workflow/task-type-visual-registry.js +5 -3
- package/workflow/task-type-visual-registry.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useCanvasKeyboardShortcuts.d.ts +15 -4
- package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -1
- package/workflow/useCanvasKeyboardShortcuts.js +25 -4
- package/workflow/useCanvasKeyboardShortcuts.js.map +1 -1
- package/workflow/useGraphHistory.d.ts +16 -9
- package/workflow/useGraphHistory.d.ts.map +1 -1
- package/workflow/useGraphHistory.js +19 -33
- package/workflow/useGraphHistory.js.map +1 -1
- package/workflow/useWorkflowCanvas.d.ts +6 -4
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +115 -23
- 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
- package/workflow/useWorkflowSave.d.ts.map +1 -1
- package/workflow/useWorkflowSave.js +2 -15
- package/workflow/useWorkflowSave.js.map +1 -1
- package/workflow/workflow-graph-conversions.d.ts +19 -1
- package/workflow/workflow-graph-conversions.d.ts.map +1 -1
- package/workflow/workflow-graph-conversions.js +17 -3
- package/workflow/workflow-graph-conversions.js.map +1 -1
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Provider and context
|
|
2
2
|
export { StigmerProvider, type StigmerProviderProps } from "./provider.js";
|
|
3
|
+
export { type ApprovalDefaults } from "./approval-defaults-context.js";
|
|
3
4
|
export { StigmerContext } from "./context.js";
|
|
4
5
|
|
|
5
6
|
// Runner adapter
|
|
@@ -39,7 +40,9 @@ export {
|
|
|
39
40
|
modelKey,
|
|
40
41
|
parseModelKey,
|
|
41
42
|
fetchModelRegistry,
|
|
43
|
+
fetchModelRegistryDocument,
|
|
42
44
|
parseRegistryJson,
|
|
45
|
+
parseRegistryDocument,
|
|
43
46
|
useModelRegistry,
|
|
44
47
|
ModelRegistryContext,
|
|
45
48
|
ModelSelector,
|
|
@@ -51,6 +54,7 @@ export {
|
|
|
51
54
|
} from "./models/index.js";
|
|
52
55
|
export type {
|
|
53
56
|
ModelInfo,
|
|
57
|
+
ModelRegistryDocument,
|
|
54
58
|
ModelRegistryState,
|
|
55
59
|
ParsedModelKey,
|
|
56
60
|
Provider,
|
|
@@ -60,6 +64,7 @@ export type {
|
|
|
60
64
|
ModelSelectorProps,
|
|
61
65
|
HarnessSelectorProps,
|
|
62
66
|
HarnessOption,
|
|
67
|
+
VisionLimits,
|
|
63
68
|
} from "./models/index.js";
|
|
64
69
|
|
|
65
70
|
// Workspace — behavior hooks and styled components
|
|
@@ -215,6 +220,7 @@ export type {
|
|
|
215
220
|
ExecutionTargetOption,
|
|
216
221
|
RuntimeEnvProvider,
|
|
217
222
|
SessionAudience,
|
|
223
|
+
SessionPanelMode,
|
|
218
224
|
SetupTabProps,
|
|
219
225
|
SetupTabMutationCallbacks,
|
|
220
226
|
} from "./session/index.js";
|
|
@@ -257,6 +263,7 @@ export {
|
|
|
257
263
|
ExecutionPhaseBadge,
|
|
258
264
|
InteractionModeBadge,
|
|
259
265
|
SetupProgress,
|
|
266
|
+
LivenessStatusLine,
|
|
260
267
|
ExecutionProgress,
|
|
261
268
|
TodoList,
|
|
262
269
|
TodoCard,
|
|
@@ -279,6 +286,7 @@ export {
|
|
|
279
286
|
ResultView,
|
|
280
287
|
summarizeResultView,
|
|
281
288
|
TerminalSession,
|
|
289
|
+
TerminalTail,
|
|
282
290
|
useToolPresentation,
|
|
283
291
|
registerToolPresenter,
|
|
284
292
|
getToolPresenter,
|
|
@@ -296,6 +304,7 @@ export {
|
|
|
296
304
|
SubAgentSection,
|
|
297
305
|
MessageEntry,
|
|
298
306
|
MessageThread,
|
|
307
|
+
ExecutionErrorNotice,
|
|
299
308
|
ThreadSkeleton,
|
|
300
309
|
FollowUpInput,
|
|
301
310
|
ApprovalCard,
|
|
@@ -380,6 +389,7 @@ export type {
|
|
|
380
389
|
ExecutionPhaseBadgeProps,
|
|
381
390
|
InteractionModeBadgeProps,
|
|
382
391
|
SetupProgressProps,
|
|
392
|
+
LivenessStatusLineProps,
|
|
383
393
|
ExecutionProgressProps,
|
|
384
394
|
TodoListProps,
|
|
385
395
|
TodoCardProps,
|
|
@@ -398,6 +408,7 @@ export type {
|
|
|
398
408
|
ToolCallDetailProps,
|
|
399
409
|
ResultViewProps,
|
|
400
410
|
TerminalSessionProps,
|
|
411
|
+
TerminalTailProps,
|
|
401
412
|
ToolPresentation,
|
|
402
413
|
ToolPresenter,
|
|
403
414
|
ToolDisclosure,
|
|
@@ -409,6 +420,8 @@ export type {
|
|
|
409
420
|
SubAgentSectionProps,
|
|
410
421
|
MessageEntryProps,
|
|
411
422
|
MessageThreadProps,
|
|
423
|
+
MessageThreadSlots,
|
|
424
|
+
ExecutionErrorNoticeProps,
|
|
412
425
|
ThreadContentColumn,
|
|
413
426
|
ThreadSkeletonProps,
|
|
414
427
|
FollowUpInputProps,
|
|
@@ -466,13 +479,14 @@ export type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agent
|
|
|
466
479
|
export { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
467
480
|
|
|
468
481
|
// Attachment — file upload behavior hook, styled chip list, clipboard paste,
|
|
469
|
-
//
|
|
482
|
+
// vision-resolution image preparation, and vision preflight warnings
|
|
470
483
|
export {
|
|
471
484
|
useAttachments,
|
|
472
485
|
AttachmentChipList,
|
|
473
486
|
MAX_ATTACHMENT_BYTES,
|
|
474
487
|
MAX_VISION_LONG_EDGE_PX,
|
|
475
488
|
MAX_VISION_PIXELS,
|
|
489
|
+
assessVisionPreflight,
|
|
476
490
|
detectContentType,
|
|
477
491
|
exceedsVisionResolution,
|
|
478
492
|
extractClipboardFiles,
|
|
@@ -481,15 +495,22 @@ export {
|
|
|
481
495
|
prepareImageForVision,
|
|
482
496
|
uniquifyFilename,
|
|
483
497
|
validateAttachmentSize,
|
|
498
|
+
visionPreflightMessage,
|
|
484
499
|
} from "./attachment/index.js";
|
|
485
500
|
export type {
|
|
486
501
|
AttachmentPhase,
|
|
487
502
|
AttachmentEntry,
|
|
503
|
+
AssessVisionPreflightOptions,
|
|
488
504
|
ClipboardFilesSource,
|
|
489
505
|
UseAttachmentsOptions,
|
|
490
506
|
UseAttachmentsReturn,
|
|
491
507
|
AttachmentChipListProps,
|
|
492
508
|
VisionFitSize,
|
|
509
|
+
VisionPreflight,
|
|
510
|
+
VisionPreflightAttachment,
|
|
511
|
+
VisionPreflightMessageOptions,
|
|
512
|
+
VisionPreflightReason,
|
|
513
|
+
VisionPreflightWarning,
|
|
493
514
|
} from "./attachment/index.js";
|
|
494
515
|
|
|
495
516
|
// File Reference — workspace file-reference behavior hook and styled chip list
|
|
@@ -1868,6 +1889,7 @@ export type {
|
|
|
1868
1889
|
WorkflowTaskListProps,
|
|
1869
1890
|
WorkflowDetailViewProps,
|
|
1870
1891
|
WorkflowExecutionViewerProps,
|
|
1892
|
+
WorkflowExecutionPanelMode,
|
|
1871
1893
|
WorkflowExecutionHeaderProps,
|
|
1872
1894
|
WorkflowExecutionPanelController,
|
|
1873
1895
|
UseWorkflowExecutionPanelOptions,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { SpinnerIcon } from "../internal/thread-card/glyphs.js";
|
|
4
5
|
|
|
5
6
|
/** The visual weight of a {@link DecisionButton}. */
|
|
6
7
|
export type DecisionVariant = "primary" | "ghost" | "danger";
|
|
@@ -106,23 +107,3 @@ export function DecisionButton({
|
|
|
106
107
|
);
|
|
107
108
|
}
|
|
108
109
|
|
|
109
|
-
// ---------------------------------------------------------------------------
|
|
110
|
-
// Inline SVG icon
|
|
111
|
-
// ---------------------------------------------------------------------------
|
|
112
|
-
|
|
113
|
-
function SpinnerIcon() {
|
|
114
|
-
return (
|
|
115
|
-
<svg
|
|
116
|
-
width="10"
|
|
117
|
-
height="10"
|
|
118
|
-
viewBox="0 0 12 12"
|
|
119
|
-
fill="none"
|
|
120
|
-
stroke="currentColor"
|
|
121
|
-
strokeWidth="1.5"
|
|
122
|
-
className="stg:animate-spin"
|
|
123
|
-
aria-hidden="true"
|
|
124
|
-
>
|
|
125
|
-
<path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
|
|
126
|
-
</svg>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { cn } from "@stigmer/theme";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The SDK's canonical in-flight spinner: a three-quarter arc on a 16×16
|
|
5
|
+
* grid, colored by `currentColor` so the consumer's text token drives it
|
|
6
|
+
* (never hardcoded values — Dont-Do #3). Extracted from ~33 identical
|
|
7
|
+
* per-component copies (stigmer-cloud#270); new busy states import this
|
|
8
|
+
* instead of pasting another one.
|
|
9
|
+
*
|
|
10
|
+
* `size` is the rendered box; the glyph scales from the same viewBox, so
|
|
11
|
+
* every size renders the identical shape. Decorative by contract
|
|
12
|
+
* (`aria-hidden`) — pair it with visible or `sr-only` text when the busy
|
|
13
|
+
* state itself must be announced.
|
|
14
|
+
*
|
|
15
|
+
* The thread-card rows deliberately use a finer quarter-arc micro-glyph
|
|
16
|
+
* instead — see `internal/thread-card/glyphs.tsx`.
|
|
17
|
+
*
|
|
18
|
+
* @internal Not part of the public API.
|
|
19
|
+
*/
|
|
20
|
+
export function SpinnerIcon({
|
|
21
|
+
size = 16,
|
|
22
|
+
className,
|
|
23
|
+
}: {
|
|
24
|
+
readonly size?: number;
|
|
25
|
+
readonly className?: string;
|
|
26
|
+
} = {}) {
|
|
27
|
+
return (
|
|
28
|
+
<svg
|
|
29
|
+
width={size}
|
|
30
|
+
height={size}
|
|
31
|
+
viewBox="0 0 16 16"
|
|
32
|
+
fill="none"
|
|
33
|
+
stroke="currentColor"
|
|
34
|
+
strokeWidth="2"
|
|
35
|
+
strokeLinecap="round"
|
|
36
|
+
className={cn("stg:animate-spin", className)}
|
|
37
|
+
aria-hidden="true"
|
|
38
|
+
>
|
|
39
|
+
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
40
|
+
</svg>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Contract tests for the shared thread-card shell (T05/T06): the chrome
|
|
2
|
-
//
|
|
3
|
-
// (`expand` / `none` — `select` died with the Inspect
|
|
4
|
-
// with their ARIA semantics, and the nested-button keydown
|
|
5
|
-
// consuming threads pin their own compositions; this file
|
|
6
|
-
// share.
|
|
2
|
+
// tiers (card / nested divider row / quiet unboxed line, gate accent), the
|
|
3
|
+
// header gestures (`expand` / `none` — `select` died with the Inspect
|
|
4
|
+
// drill-down, T06) with their ARIA semantics, and the nested-button keydown
|
|
5
|
+
// guard. The two consuming threads pin their own compositions; this file
|
|
6
|
+
// pins what they share.
|
|
7
7
|
|
|
8
8
|
import { describe, it, expect, vi, afterEach } from "vitest";
|
|
9
9
|
import { render, screen, fireEvent, cleanup } from "@testing-library/react";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
afterEach(cleanup);
|
|
17
17
|
|
|
18
18
|
describe("ThreadCardShell chrome", () => {
|
|
19
|
-
it("renders a bordered card by default
|
|
19
|
+
it("renders a bordered card by default, a divider row when nested, and no chrome when quiet", () => {
|
|
20
20
|
const { rerender, container } = render(
|
|
21
21
|
<ThreadCardShell cursorTarget="row">
|
|
22
22
|
<ThreadCardHeader>content</ThreadCardHeader>
|
|
@@ -27,12 +27,22 @@ describe("ThreadCardShell chrome", () => {
|
|
|
27
27
|
expect(root().className).toContain("stg:border-border-prominent");
|
|
28
28
|
|
|
29
29
|
rerender(
|
|
30
|
-
<ThreadCardShell cursorTarget="row"
|
|
30
|
+
<ThreadCardShell cursorTarget="row" variant="row">
|
|
31
31
|
<ThreadCardHeader>content</ThreadCardHeader>
|
|
32
32
|
</ThreadCardShell>,
|
|
33
33
|
);
|
|
34
34
|
expect(root().className).toContain("stg:border-b");
|
|
35
35
|
expect(root().className).not.toContain("stg:border-border-prominent");
|
|
36
|
+
|
|
37
|
+
rerender(
|
|
38
|
+
<ThreadCardShell cursorTarget="row" variant="quiet">
|
|
39
|
+
<ThreadCardHeader>content</ThreadCardHeader>
|
|
40
|
+
</ThreadCardShell>,
|
|
41
|
+
);
|
|
42
|
+
// The quiet tier is an unboxed line: no card border, no divider.
|
|
43
|
+
expect(root().className).not.toContain("stg:border-border-prominent");
|
|
44
|
+
expect(root().className).not.toContain("stg:border-b");
|
|
45
|
+
expect(root().className).not.toContain("stg:rounded-lg");
|
|
36
46
|
});
|
|
37
47
|
|
|
38
48
|
it("carries the gate accent", () => {
|
|
@@ -44,6 +54,19 @@ describe("ThreadCardShell chrome", () => {
|
|
|
44
54
|
const root = container.querySelector('[data-cursor-target="row"]') as HTMLElement;
|
|
45
55
|
expect(root.className).toContain("stg:border-l-warning");
|
|
46
56
|
});
|
|
57
|
+
|
|
58
|
+
it("never draws the gate accent on a quiet shell — escalation is the caller's job", () => {
|
|
59
|
+
// The quiet tier deliberately ignores `accent`: a gated row must be
|
|
60
|
+
// escalated to variant="card" by its component, never rendered as an
|
|
61
|
+
// accented bare line (see ThreadCardVariant).
|
|
62
|
+
const { container } = render(
|
|
63
|
+
<ThreadCardShell cursorTarget="row" variant="quiet" accent="warning">
|
|
64
|
+
<ThreadCardHeader>content</ThreadCardHeader>
|
|
65
|
+
</ThreadCardShell>,
|
|
66
|
+
);
|
|
67
|
+
const root = container.querySelector('[data-cursor-target="row"]') as HTMLElement;
|
|
68
|
+
expect(root.className).not.toContain("stg:border-l-warning");
|
|
69
|
+
});
|
|
47
70
|
});
|
|
48
71
|
|
|
49
72
|
describe("ThreadCardHeader gestures", () => {
|
|
@@ -102,4 +125,17 @@ describe("ThreadCardBody", () => {
|
|
|
102
125
|
render(<ThreadCardBody id="detail-1">body</ThreadCardBody>);
|
|
103
126
|
expect(document.getElementById("detail-1")?.textContent).toBe("body");
|
|
104
127
|
});
|
|
128
|
+
|
|
129
|
+
it("swaps the card padding for a left rail when the body is quiet-contained", () => {
|
|
130
|
+
const { rerender } = render(<ThreadCardBody id="detail-1">body</ThreadCardBody>);
|
|
131
|
+
const el = () => document.getElementById("detail-1")!;
|
|
132
|
+
expect(el().className).not.toContain("stg:border-l-2");
|
|
133
|
+
|
|
134
|
+
rerender(
|
|
135
|
+
<ThreadCardBody id="detail-1" rail>
|
|
136
|
+
body
|
|
137
|
+
</ThreadCardBody>,
|
|
138
|
+
);
|
|
139
|
+
expect(el().className).toContain("stg:border-l-2");
|
|
140
|
+
});
|
|
105
141
|
});
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { describe, expect, it, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { act, renderHook } from "@testing-library/react";
|
|
3
|
+
import { useCopyFeedback } from "../useCopyFeedback";
|
|
4
|
+
|
|
5
|
+
describe("useCopyFeedback", () => {
|
|
6
|
+
let writeText: ReturnType<typeof vi.fn>;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
vi.useFakeTimers();
|
|
10
|
+
writeText = vi.fn().mockResolvedValue(undefined);
|
|
11
|
+
vi.stubGlobal("navigator", { clipboard: { writeText } });
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
vi.unstubAllGlobals();
|
|
16
|
+
vi.useRealTimers();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("resolves true and flashes `copied` for a successful write", async () => {
|
|
20
|
+
const { result } = renderHook(() => useCopyFeedback());
|
|
21
|
+
|
|
22
|
+
let outcome: boolean | undefined;
|
|
23
|
+
await act(async () => {
|
|
24
|
+
outcome = await result.current.copy("hello");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
expect(outcome).toBe(true);
|
|
28
|
+
expect(writeText).toHaveBeenCalledWith("hello");
|
|
29
|
+
expect(result.current.copied).toBe(true);
|
|
30
|
+
|
|
31
|
+
act(() => {
|
|
32
|
+
vi.advanceTimersByTime(2000);
|
|
33
|
+
});
|
|
34
|
+
expect(result.current.copied).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("resolves false and never claims `copied` for a rejected write", async () => {
|
|
38
|
+
writeText.mockRejectedValue(new Error("denied"));
|
|
39
|
+
const { result } = renderHook(() => useCopyFeedback());
|
|
40
|
+
|
|
41
|
+
let outcome: boolean | undefined;
|
|
42
|
+
await act(async () => {
|
|
43
|
+
outcome = await result.current.copy("secret");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
expect(outcome).toBe(false);
|
|
47
|
+
expect(result.current.copied).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("restarts the feedback window on a rapid second copy", async () => {
|
|
51
|
+
const { result } = renderHook(() => useCopyFeedback());
|
|
52
|
+
|
|
53
|
+
await act(async () => {
|
|
54
|
+
await result.current.copy("one");
|
|
55
|
+
});
|
|
56
|
+
act(() => {
|
|
57
|
+
vi.advanceTimersByTime(1500);
|
|
58
|
+
});
|
|
59
|
+
await act(async () => {
|
|
60
|
+
await result.current.copy("two");
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// 1.5s into the second window: still showing feedback.
|
|
64
|
+
act(() => {
|
|
65
|
+
vi.advanceTimersByTime(1500);
|
|
66
|
+
});
|
|
67
|
+
expect(result.current.copied).toBe(true);
|
|
68
|
+
|
|
69
|
+
act(() => {
|
|
70
|
+
vi.advanceTimersByTime(500);
|
|
71
|
+
});
|
|
72
|
+
expect(result.current.copied).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("does not set state after unmount when the timer would fire", async () => {
|
|
76
|
+
const errorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
77
|
+
const { result, unmount } = renderHook(() => useCopyFeedback());
|
|
78
|
+
|
|
79
|
+
await act(async () => {
|
|
80
|
+
await result.current.copy("bye");
|
|
81
|
+
});
|
|
82
|
+
unmount();
|
|
83
|
+
act(() => {
|
|
84
|
+
vi.advanceTimersByTime(2000);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// React warns on setState-after-unmount via console.error; silence means
|
|
88
|
+
// the unmount cleanup cleared the pending timer.
|
|
89
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
90
|
+
errorSpy.mockRestore();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect gRPC/Connect UNIMPLEMENTED (code 12) from any error the SDK
|
|
3
|
+
* client can throw.
|
|
4
|
+
*
|
|
5
|
+
* UNIMPLEMENTED is how the shared SDK discovers edition capabilities:
|
|
6
|
+
* the OSS server deliberately leaves hosted-only RPCs unimplemented
|
|
7
|
+
* (e.g. the org-OAuth-app override surface, stigmer/stigmer#558), and
|
|
8
|
+
* hooks probe for it to degrade gracefully instead of surfacing an
|
|
9
|
+
* error. The SDK's generated CODE_MAP does not include Unimplemented —
|
|
10
|
+
* a `StigmerError` wrapping one reports `code: "unknown"` — so
|
|
11
|
+
* detection must go through `connectCode` (or the message shapes used
|
|
12
|
+
* by transports that never produce a structured error).
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export function isUnimplemented(err: unknown): boolean {
|
|
17
|
+
if (!err || typeof err !== "object") return false;
|
|
18
|
+
if (
|
|
19
|
+
"connectCode" in err &&
|
|
20
|
+
(err as { connectCode: unknown }).connectCode === 12
|
|
21
|
+
) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
const msg = (err as { message?: string }).message ?? "";
|
|
25
|
+
return msg.includes("[unimplemented]") || msg.includes("UNIMPLEMENTED");
|
|
26
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select an element's text content, replacing any existing selection.
|
|
3
|
+
*
|
|
4
|
+
* The honest fallback for one-time secret reveals (API keys, invite URLs,
|
|
5
|
+
* client secrets) when the clipboard write is rejected (insecure context,
|
|
6
|
+
* denied permission): instead of claiming "Copied" for a copy that didn't
|
|
7
|
+
* happen, the revealed value is selected so the user can copy it manually.
|
|
8
|
+
* Pair with `useCopyFeedback` — branch on its `copy()` result.
|
|
9
|
+
*/
|
|
10
|
+
export function selectElementText(el: HTMLElement): void {
|
|
11
|
+
const selection = window.getSelection();
|
|
12
|
+
if (!selection) return;
|
|
13
|
+
const range = document.createRange();
|
|
14
|
+
range.selectNodeContents(el);
|
|
15
|
+
selection.removeAllRanges();
|
|
16
|
+
selection.addRange(range);
|
|
17
|
+
}
|
|
@@ -14,7 +14,8 @@ import { ChevronIcon } from "./glyphs.js";
|
|
|
14
14
|
* Three pieces, composed via children (slots-as-children, never a
|
|
15
15
|
* mega-prop card — each thread's composition stays explicit):
|
|
16
16
|
*
|
|
17
|
-
* - {@link ThreadCardShell} — the chrome: bordered card
|
|
17
|
+
* - {@link ThreadCardShell} — the chrome tier: bordered card, nested divider
|
|
18
|
+
* row, or quiet unboxed line ({@link ThreadCardVariant}), plus the
|
|
18
19
|
* pending-gate accent.
|
|
19
20
|
* - {@link ThreadCardHeader} — the one-line header region with a
|
|
20
21
|
* primary gesture: `expand` (summary rows, `aria-expanded`, appends
|
|
@@ -41,15 +42,25 @@ import { ChevronIcon } from "./glyphs.js";
|
|
|
41
42
|
// Shell — the card chrome
|
|
42
43
|
// ---------------------------------------------------------------------------
|
|
43
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The chrome tier of a thread row (the density axis at the shell level):
|
|
47
|
+
*
|
|
48
|
+
* - `"card"` — a self-contained bordered card (the default).
|
|
49
|
+
* - `"row"` — a divider-separated row for rows nested inside a container
|
|
50
|
+
* that already provides the frame (e.g. an expanded `ToolRunGroup` fold),
|
|
51
|
+
* avoiding a card-in-a-card.
|
|
52
|
+
* - `"quiet"` — no chrome at all: an unboxed line for metadata-only rows
|
|
53
|
+
* whose header IS the complete information (reads, listings, thoughts).
|
|
54
|
+
* The gate accent is deliberately not drawn in this tier — a row carrying
|
|
55
|
+
* an accent must be escalated to `"card"` by the caller, never rendered
|
|
56
|
+
* as an accented bare line.
|
|
57
|
+
*/
|
|
58
|
+
export type ThreadCardVariant = "card" | "row" | "quiet";
|
|
59
|
+
|
|
44
60
|
/** Props for {@link ThreadCardShell}. */
|
|
45
61
|
export interface ThreadCardShellProps {
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
* border). Set to `false` when nested inside a container that already
|
|
49
|
-
* provides the border — e.g. the folded `ToolRunGroup` chip — where the
|
|
50
|
-
* row degrades to a divider-separated row to avoid a card-in-a-card.
|
|
51
|
-
*/
|
|
52
|
-
readonly bordered?: boolean;
|
|
62
|
+
/** The chrome tier — see {@link ThreadCardVariant}. Defaults to `"card"`. */
|
|
63
|
+
readonly variant?: ThreadCardVariant;
|
|
53
64
|
/**
|
|
54
65
|
* A restrained left accent for a row awaiting a human decision —
|
|
55
66
|
* `"warning"` for ordinary gates, `"destructive"` for delete gates.
|
|
@@ -64,25 +75,31 @@ export interface ThreadCardShellProps {
|
|
|
64
75
|
readonly children: ReactNode;
|
|
65
76
|
}
|
|
66
77
|
|
|
78
|
+
const VARIANT_CHROME: Record<Exclude<ThreadCardVariant, "card">, string> = {
|
|
79
|
+
row: "stg:border-b stg:border-border-muted stg:last:border-b-0",
|
|
80
|
+
quiet: "",
|
|
81
|
+
};
|
|
82
|
+
|
|
67
83
|
/** The thread card's outer chrome. See the module doc for the full contract. */
|
|
68
84
|
export function ThreadCardShell({
|
|
69
|
-
|
|
85
|
+
variant = "card",
|
|
70
86
|
accent = null,
|
|
71
87
|
cursorTarget,
|
|
72
88
|
className,
|
|
73
89
|
ref,
|
|
74
90
|
children,
|
|
75
91
|
}: ThreadCardShellProps) {
|
|
76
|
-
const chrome =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
const chrome =
|
|
93
|
+
variant === "card"
|
|
94
|
+
? cn(
|
|
95
|
+
// border-prominent (not border): a transparent card needs a line the
|
|
96
|
+
// eye actually catches — the default border token is white at 14%
|
|
97
|
+
// opacity, which vanishes on the dark thread surface.
|
|
98
|
+
"stg:rounded-lg stg:border stg:border-border-prominent stg:overflow-hidden",
|
|
99
|
+
accent === "warning" && "stg:border-l-2 stg:border-l-warning",
|
|
100
|
+
accent === "destructive" && "stg:border-l-2 stg:border-l-destructive",
|
|
101
|
+
)
|
|
102
|
+
: VARIANT_CHROME[variant];
|
|
86
103
|
|
|
87
104
|
return (
|
|
88
105
|
<div ref={ref} data-cursor-target={cursorTarget} className={cn(chrome, className)}>
|
|
@@ -176,13 +193,28 @@ export interface ThreadCardBodyProps {
|
|
|
176
193
|
readonly id?: string;
|
|
177
194
|
/** Rendered as `data-cursor-target` for e2e targeting. */
|
|
178
195
|
readonly cursorTarget?: string;
|
|
196
|
+
/**
|
|
197
|
+
* Body containment for a `"quiet"` shell: with no card border around it, a
|
|
198
|
+
* disclosed body needs its own boundary — a light left rail (the
|
|
199
|
+
* `ThinkingMessage` expanded-state precedent) instead of the card's padding
|
|
200
|
+
* box. Ignored for card/row shells, whose frame already bounds the body.
|
|
201
|
+
*/
|
|
202
|
+
readonly rail?: boolean;
|
|
179
203
|
readonly children: ReactNode;
|
|
180
204
|
}
|
|
181
205
|
|
|
182
206
|
/** The thread card's body padding contract. */
|
|
183
|
-
export function ThreadCardBody({ id, cursorTarget, children }: ThreadCardBodyProps) {
|
|
207
|
+
export function ThreadCardBody({ id, cursorTarget, rail = false, children }: ThreadCardBodyProps) {
|
|
184
208
|
return (
|
|
185
|
-
<div
|
|
209
|
+
<div
|
|
210
|
+
id={id}
|
|
211
|
+
data-cursor-target={cursorTarget}
|
|
212
|
+
className={
|
|
213
|
+
rail
|
|
214
|
+
? "stg:ml-1.5 stg:border-l-2 stg:border-border-muted stg:py-1 stg:pl-3 stg:pr-2.5"
|
|
215
|
+
: "stg:px-2.5 stg:pb-2.5 stg:pt-1"
|
|
216
|
+
}
|
|
217
|
+
>
|
|
186
218
|
{children}
|
|
187
219
|
</div>
|
|
188
220
|
);
|
|
@@ -13,10 +13,31 @@ import { cn } from "@stigmer/theme";
|
|
|
13
13
|
* @internal Not part of the public API.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Quarter-arc spinner for an in-flight item. Deliberately finer than the
|
|
18
|
+
* SDK-wide `internal/SpinnerIcon` (1.5 stroke on a 12 grid vs 2 on 16) —
|
|
19
|
+
* the micro-row weight this vocabulary is built around. Card-adjacent
|
|
20
|
+
* surfaces that used to carry their own copies (tool-run groups, file
|
|
21
|
+
* review, decision buttons) size it up via `size` instead.
|
|
22
|
+
*/
|
|
23
|
+
export function SpinnerIcon({
|
|
24
|
+
size = 10,
|
|
25
|
+
className,
|
|
26
|
+
}: {
|
|
27
|
+
readonly size?: number;
|
|
28
|
+
readonly className?: string;
|
|
29
|
+
} = {}) {
|
|
18
30
|
return (
|
|
19
|
-
<svg
|
|
31
|
+
<svg
|
|
32
|
+
width={size}
|
|
33
|
+
height={size}
|
|
34
|
+
viewBox="0 0 12 12"
|
|
35
|
+
fill="none"
|
|
36
|
+
stroke="currentColor"
|
|
37
|
+
strokeWidth="1.5"
|
|
38
|
+
className={cn("stg:animate-spin", className)}
|
|
39
|
+
aria-hidden="true"
|
|
40
|
+
>
|
|
20
41
|
<path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
|
|
21
42
|
</svg>
|
|
22
43
|
);
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
|
|
5
|
+
/** How long the transient `copied` flag stays true after a successful copy. */
|
|
6
|
+
const COPIED_FEEDBACK_MS = 2000;
|
|
7
|
+
|
|
8
|
+
/** Return value of {@link useCopyFeedback}. */
|
|
9
|
+
export interface UseCopyFeedbackReturn {
|
|
10
|
+
/**
|
|
11
|
+
* Write `text` to the clipboard. Resolves `true` when the write landed and
|
|
12
|
+
* `false` when it was rejected (insecure context, denied permission); a
|
|
13
|
+
* rejected write leaves `copied` false so the affordance never claims a
|
|
14
|
+
* copy that didn't happen. Callers with a manual fallback (e.g. selecting
|
|
15
|
+
* the on-screen text for a hand copy) branch on the result; plain
|
|
16
|
+
* affordances can ignore it.
|
|
17
|
+
*/
|
|
18
|
+
readonly copy: (text: string) => Promise<boolean>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* `true` for a brief window after a successful copy (drives "Copied"
|
|
22
|
+
* affordance feedback), then resets automatically.
|
|
23
|
+
*/
|
|
24
|
+
readonly copied: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Behavior hook for the copy-with-feedback shape: write locally-held text to
|
|
29
|
+
* the clipboard and flash a transient `copied` flag for the affordance swap.
|
|
30
|
+
*
|
|
31
|
+
* This is the fetch-free sibling of `useArtifactCopy` (which resolves remote
|
|
32
|
+
* artifact bytes at click time); use it wherever the text to copy is already
|
|
33
|
+
* in hand — message content, identifiers, code blocks. One implementation
|
|
34
|
+
* keeps the feedback window and the unmount-safety identical across surfaces.
|
|
35
|
+
*/
|
|
36
|
+
export function useCopyFeedback(): UseCopyFeedbackReturn {
|
|
37
|
+
const [copied, setCopied] = useState(false);
|
|
38
|
+
|
|
39
|
+
// Clear the pending "copied" timer on unmount so a resolved copy never sets
|
|
40
|
+
// state on an unmounted component.
|
|
41
|
+
const copiedTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
return () => {
|
|
44
|
+
if (copiedTimer.current !== null) clearTimeout(copiedTimer.current);
|
|
45
|
+
};
|
|
46
|
+
}, []);
|
|
47
|
+
|
|
48
|
+
const copy = useCallback(async (text: string) => {
|
|
49
|
+
try {
|
|
50
|
+
await navigator.clipboard.writeText(text);
|
|
51
|
+
} catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
setCopied(true);
|
|
55
|
+
if (copiedTimer.current !== null) clearTimeout(copiedTimer.current);
|
|
56
|
+
copiedTimer.current = setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
|
|
57
|
+
return true;
|
|
58
|
+
}, []);
|
|
59
|
+
|
|
60
|
+
return useMemo(() => ({ copy, copied }), [copy, copied]);
|
|
61
|
+
}
|