@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
|
@@ -28,9 +28,11 @@ import {
|
|
|
28
28
|
import { MessageThread, type MessageThreadSlots } from "../MessageThread";
|
|
29
29
|
import type { MessageEntryProps } from "../MessageEntry";
|
|
30
30
|
import type { ApprovalCardProps } from "../ApprovalCard";
|
|
31
|
+
import type { ExecutionErrorNoticeProps } from "../ExecutionErrorNotice";
|
|
31
32
|
import type { TodoCardProps } from "../TodoCard";
|
|
32
33
|
import type { TodoRowProps } from "../TodoList";
|
|
33
34
|
import type { SetupProgressProps } from "../SetupProgress";
|
|
35
|
+
import type { LivenessStatusLineProps } from "../LivenessStatusLine";
|
|
34
36
|
import type { PlanCompletionCardProps } from "../PlanCompletionCard";
|
|
35
37
|
import type { PlanArtifactCardProps } from "../PlanArtifactCard";
|
|
36
38
|
import type { PlanStreamingCardProps } from "../PlanStreamingCard";
|
|
@@ -110,6 +112,7 @@ function makeExecution(opts: {
|
|
|
110
112
|
todos?: Record<string, { content: string; status: TodoStatus }>;
|
|
111
113
|
pendingApprovalToolCallId?: string;
|
|
112
114
|
planArtifactName?: string;
|
|
115
|
+
error?: string;
|
|
113
116
|
}): AgentExecution {
|
|
114
117
|
const exec = create(AgentExecutionSchema);
|
|
115
118
|
|
|
@@ -128,6 +131,9 @@ function makeExecution(opts: {
|
|
|
128
131
|
|
|
129
132
|
const status = create(AgentExecutionStatusSchema);
|
|
130
133
|
status.phase = opts.phase ?? ExecutionPhase.EXECUTION_COMPLETED;
|
|
134
|
+
if (opts.error) {
|
|
135
|
+
status.error = opts.error;
|
|
136
|
+
}
|
|
131
137
|
|
|
132
138
|
const aiMsg = create(AgentMessageSchema);
|
|
133
139
|
aiMsg.type = MessageType.MESSAGE_AI;
|
|
@@ -312,6 +318,28 @@ describe("MessageThread slots", () => {
|
|
|
312
318
|
expect(screen.getByTestId("custom-setup").textContent).toBe("waiting");
|
|
313
319
|
});
|
|
314
320
|
|
|
321
|
+
it("renders the LivenessStatusLine slot while the execution is live between events", () => {
|
|
322
|
+
const CustomLiveness = ({ label }: LivenessStatusLineProps) => (
|
|
323
|
+
<div data-testid="custom-liveness">{label ?? "custom-live"}</div>
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
const exec = makeExecution({
|
|
327
|
+
id: "e-live",
|
|
328
|
+
phase: ExecutionPhase.EXECUTION_IN_PROGRESS,
|
|
329
|
+
aiContent: "thinking about it",
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
render(
|
|
333
|
+
<MessageThread
|
|
334
|
+
executions={[]}
|
|
335
|
+
activeStreamExecution={exec}
|
|
336
|
+
slots={{ LivenessStatusLine: CustomLiveness }}
|
|
337
|
+
/>,
|
|
338
|
+
);
|
|
339
|
+
|
|
340
|
+
expect(screen.getByTestId("custom-liveness").textContent).toBe("custom-live");
|
|
341
|
+
});
|
|
342
|
+
|
|
315
343
|
it("renders the PlanCompletionCard slot for an artifact-less completed Plan turn", () => {
|
|
316
344
|
const CustomCompletion = ({ onImplement }: PlanCompletionCardProps) => (
|
|
317
345
|
<button type="button" data-testid="custom-completion" onClick={onImplement}>
|
|
@@ -390,6 +418,70 @@ describe("MessageThread slots", () => {
|
|
|
390
418
|
);
|
|
391
419
|
});
|
|
392
420
|
|
|
421
|
+
it("renders the ExecutionErrorNotice slot with the retry wiring intact", () => {
|
|
422
|
+
const onRetryExecution = vi.fn();
|
|
423
|
+
const CustomNotice = ({ error, retryMessage, onRetry }: ExecutionErrorNoticeProps) => (
|
|
424
|
+
<div data-testid="custom-error-notice">
|
|
425
|
+
<span>{error}</span>
|
|
426
|
+
{onRetry && retryMessage && (
|
|
427
|
+
<button type="button" onClick={() => onRetry(retryMessage)}>
|
|
428
|
+
switch engine and retry
|
|
429
|
+
</button>
|
|
430
|
+
)}
|
|
431
|
+
</div>
|
|
432
|
+
);
|
|
433
|
+
|
|
434
|
+
render(
|
|
435
|
+
<MessageThread
|
|
436
|
+
executions={[
|
|
437
|
+
makeExecution({
|
|
438
|
+
id: "e-failed",
|
|
439
|
+
specMessage: "prompt text",
|
|
440
|
+
phase: ExecutionPhase.EXECUTION_FAILED,
|
|
441
|
+
error: "model capacity exhausted",
|
|
442
|
+
}),
|
|
443
|
+
]}
|
|
444
|
+
onRetryExecution={onRetryExecution}
|
|
445
|
+
slots={{ ExecutionErrorNotice: CustomNotice }}
|
|
446
|
+
/>,
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
const notice = screen.getByTestId("custom-error-notice");
|
|
450
|
+
expect(notice.textContent).toContain("model capacity exhausted");
|
|
451
|
+
// The built-in's clamp toggle must not render alongside the override.
|
|
452
|
+
expect(screen.queryByRole("button", { name: "Show more" })).toBeNull();
|
|
453
|
+
|
|
454
|
+
// The slot's retry contract is identical to the built-in's: it resends
|
|
455
|
+
// the originating message.
|
|
456
|
+
fireEvent.click(screen.getByRole("button", { name: "switch engine and retry" }));
|
|
457
|
+
expect(onRetryExecution).toHaveBeenCalledWith("prompt text");
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
it("falls back to the built-in ExecutionErrorNotice when the slot is omitted", () => {
|
|
461
|
+
const onRetryExecution = vi.fn();
|
|
462
|
+
|
|
463
|
+
render(
|
|
464
|
+
<MessageThread
|
|
465
|
+
executions={[
|
|
466
|
+
makeExecution({
|
|
467
|
+
id: "e-failed",
|
|
468
|
+
specMessage: "prompt text",
|
|
469
|
+
phase: ExecutionPhase.EXECUTION_FAILED,
|
|
470
|
+
error: "model capacity exhausted",
|
|
471
|
+
}),
|
|
472
|
+
]}
|
|
473
|
+
onRetryExecution={onRetryExecution}
|
|
474
|
+
/>,
|
|
475
|
+
);
|
|
476
|
+
|
|
477
|
+
// The built-in renders as a destructive alert with clamp + Retry.
|
|
478
|
+
const alert = screen.getByRole("alert");
|
|
479
|
+
expect(alert.textContent).toContain("model capacity exhausted");
|
|
480
|
+
expect(screen.getByRole("button", { name: "Show more" })).toBeTruthy();
|
|
481
|
+
fireEvent.click(screen.getByRole("button", { name: "Retry" }));
|
|
482
|
+
expect(onRetryExecution).toHaveBeenCalledWith("prompt text");
|
|
483
|
+
});
|
|
484
|
+
|
|
393
485
|
// -------------------------------------------------------------------------
|
|
394
486
|
// Backward compatibility and memo guarantees
|
|
395
487
|
// -------------------------------------------------------------------------
|
|
@@ -78,8 +78,9 @@ describe("useToolPresentation", () => {
|
|
|
78
78
|
|
|
79
79
|
describe("disclosure", () => {
|
|
80
80
|
it("keeps known compact tools as summary", () => {
|
|
81
|
-
// Shell/edit/write are intentionally excluded —
|
|
82
|
-
// categories (output / diff is
|
|
81
|
+
// Shell/edit/write are intentionally excluded — shell is the `tail`
|
|
82
|
+
// category and edit/write are `preview` categories (output / diff is
|
|
83
|
+
// the information), asserted separately below.
|
|
83
84
|
for (const name of ["Read", "Grep", "Glob"]) {
|
|
84
85
|
const tc = makeToolCall({ name, args: { path: "/x", command: "ls", pattern: "p" } });
|
|
85
86
|
const { result } = renderHook(() => useToolPresentation(tc));
|
|
@@ -98,11 +99,25 @@ describe("useToolPresentation", () => {
|
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
|
|
101
|
-
it("
|
|
102
|
+
it("gives shell the tail disclosure (live preview, dimmed-tail settle)", () => {
|
|
102
103
|
const tc = makeToolCall({ name: "Shell", args: { command: "ls" }, result: "files" });
|
|
103
104
|
const { result } = renderHook(() => useToolPresentation(tc));
|
|
104
105
|
expect(result.current.category).toBe("shell");
|
|
105
|
-
expect(result.current.disclosure).toBe("
|
|
106
|
+
expect(result.current.disclosure).toBe("tail");
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it("lets a host restore the always-expanded shell preview via the registry", () => {
|
|
110
|
+
// The one-line opt-out for hosts that prefer the pre-tail behaviour.
|
|
111
|
+
const dispose = registerToolPresenter(ToolKind.SHELL, {
|
|
112
|
+
disclosure: () => "preview",
|
|
113
|
+
});
|
|
114
|
+
try {
|
|
115
|
+
const tc = makeToolCall({ name: "Shell", args: { command: "ls" }, result: "files" });
|
|
116
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
117
|
+
expect(result.current.disclosure).toBe("preview");
|
|
118
|
+
} finally {
|
|
119
|
+
dispose();
|
|
120
|
+
}
|
|
106
121
|
});
|
|
107
122
|
|
|
108
123
|
it("foregrounds MCP tools as preview", () => {
|
|
@@ -140,6 +155,28 @@ describe("useToolPresentation", () => {
|
|
|
140
155
|
});
|
|
141
156
|
});
|
|
142
157
|
|
|
158
|
+
describe("chrome", () => {
|
|
159
|
+
it("quiets metadata-only categories and keeps content-bearing ones as cards", () => {
|
|
160
|
+
const quiet = makeToolCall({ name: "Read", args: { path: "/x" } });
|
|
161
|
+
const card = makeToolCall({ name: "Shell", args: { command: "ls" }, result: "files" });
|
|
162
|
+
expect(renderHook(() => useToolPresentation(quiet)).result.current.chrome).toBe("quiet");
|
|
163
|
+
expect(renderHook(() => useToolPresentation(card)).result.current.chrome).toBe("card");
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it("lets a registered presenter restore the boxed look for a kind", () => {
|
|
167
|
+
const dispose = registerToolPresenter(ToolKind.FILE_READ, {
|
|
168
|
+
chrome: () => "card",
|
|
169
|
+
});
|
|
170
|
+
try {
|
|
171
|
+
const tc = makeToolCall({ name: "Read", args: { path: "/x" } });
|
|
172
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
173
|
+
expect(result.current.chrome).toBe("card");
|
|
174
|
+
} finally {
|
|
175
|
+
dispose();
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
|
|
143
180
|
describe("runGroupable", () => {
|
|
144
181
|
it("folds read-only repetitive categories", () => {
|
|
145
182
|
for (const name of ["Read", "Grep", "Glob"]) {
|
package/src/execution/index.ts
CHANGED
|
@@ -127,6 +127,9 @@ export type { InteractionModeBadgeProps } from "./InteractionModeBadge.js";
|
|
|
127
127
|
export { SetupProgress } from "./SetupProgress.js";
|
|
128
128
|
export type { SetupProgressProps } from "./SetupProgress.js";
|
|
129
129
|
|
|
130
|
+
export { LivenessStatusLine } from "./LivenessStatusLine.js";
|
|
131
|
+
export type { LivenessStatusLineProps } from "./LivenessStatusLine.js";
|
|
132
|
+
|
|
130
133
|
export { ToolCallGroup } from "./ToolCallGroup.js";
|
|
131
134
|
export type { ToolCallGroupProps } from "./ToolCallGroup.js";
|
|
132
135
|
|
|
@@ -154,8 +157,8 @@ export type { ToolArgsViewProps } from "./ToolArgsView.js";
|
|
|
154
157
|
export { ResultView, summarizeResultView } from "./ResultView.js";
|
|
155
158
|
export type { ResultViewProps } from "./ResultView.js";
|
|
156
159
|
|
|
157
|
-
export { TerminalSession } from "./TerminalSession.js";
|
|
158
|
-
export type { TerminalSessionProps } from "./TerminalSession.js";
|
|
160
|
+
export { TerminalSession, TerminalTail } from "./TerminalSession.js";
|
|
161
|
+
export type { TerminalSessionProps, TerminalTailProps } from "./TerminalSession.js";
|
|
159
162
|
|
|
160
163
|
export {
|
|
161
164
|
useToolPresentation,
|
|
@@ -204,6 +207,9 @@ export type {
|
|
|
204
207
|
ThreadContentColumn,
|
|
205
208
|
} from "./MessageThread.js";
|
|
206
209
|
|
|
210
|
+
export { ExecutionErrorNotice } from "./ExecutionErrorNotice.js";
|
|
211
|
+
export type { ExecutionErrorNoticeProps } from "./ExecutionErrorNotice.js";
|
|
212
|
+
|
|
207
213
|
export { ThreadSkeleton } from "./ThreadSkeleton.js";
|
|
208
214
|
export type { ThreadSkeletonProps } from "./ThreadSkeleton.js";
|
|
209
215
|
|
|
@@ -36,16 +36,67 @@ export type ToolCategory =
|
|
|
36
36
|
* `Search … 2 matches`). The full detail is one click away.
|
|
37
37
|
* - `"preview"` — the row renders its result body **always** (no card chevron),
|
|
38
38
|
* because the one-liner cannot convey what happened so the content itself IS
|
|
39
|
-
* the information (
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* the information (an MCP result such as a screenshot, a fetched page, a
|
|
40
|
+
* web-search answer, or an unrecognised tool's output). The body's own
|
|
41
|
+
* in-place reveal expands it beyond the height budget.
|
|
42
|
+
* - `"tail"` — live like `"preview"`, settled like a teaser: while the tool
|
|
43
|
+
* runs (or awaits approval) the full body streams in view; once it settles
|
|
44
|
+
* successfully the row collapses to a dimmed tail of its last output lines —
|
|
45
|
+
* at-a-glance evidence that it ran and what it printed last — expanding on
|
|
46
|
+
* demand via the header chevron. A settled *failure* stays open: error
|
|
47
|
+
* output is content, not context. Shell is the canonical tail category — a
|
|
48
|
+
* working session's compile/validate loops would otherwise dominate the
|
|
49
|
+
* transcript at full contrast (Cursor's chat is the reference UX).
|
|
42
50
|
*
|
|
43
51
|
* This is the *disclosure* axis (how much of a result to show); it is
|
|
44
52
|
* orthogonal to {@link isRunGroupableCategory} (whether consecutive same-kind
|
|
45
53
|
* calls fold into one chip). A category can be result-rich but never folded
|
|
46
54
|
* (`shell`), or foldable but never previewed (`read`).
|
|
47
55
|
*/
|
|
48
|
-
export type ToolDisclosure = "summary" | "preview";
|
|
56
|
+
export type ToolDisclosure = "summary" | "preview" | "tail";
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* How much *chrome* a tool row carries in the thread — the density axis,
|
|
60
|
+
* orthogonal to {@link ToolDisclosure} (how much of the result to show).
|
|
61
|
+
*
|
|
62
|
+
* - `"card"` — a self-contained bordered card. For content-bearing rows
|
|
63
|
+
* (shell, edit, fetch, MCP), where the body is real evidence worth a frame.
|
|
64
|
+
* - `"quiet"` — an unboxed single text line, no border, no card. For
|
|
65
|
+
* metadata-only rows (read / list / search / think) whose label + argument
|
|
66
|
+
* already tell the whole story: a 4 ms directory listing must not shout as
|
|
67
|
+
* loudly as a 3-minute shell run (Cursor's chat is the reference UX — prose
|
|
68
|
+
* with quiet evidence attached, not a stack of equally-loud widgets).
|
|
69
|
+
*
|
|
70
|
+
* This is the *settled default*. A row escalates to `"card"` regardless of
|
|
71
|
+
* category while it carries something the quiet line cannot: a pending
|
|
72
|
+
* approval gate (a decision surface) or a failure (error output is content).
|
|
73
|
+
* That escalation is owned by the component layer and is deliberately not
|
|
74
|
+
* override-able — a gate must never render without its frame.
|
|
75
|
+
*/
|
|
76
|
+
export type ToolChrome = "card" | "quiet";
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Categories whose settled summary row IS the complete information, rendered
|
|
80
|
+
* as quiet unboxed lines by default. Mirrors {@link RUN_GROUPABLE_CATEGORIES}
|
|
81
|
+
* plus `think` (a thought's row reads like narration, not evidence) — the
|
|
82
|
+
* same low-signal set, on the chrome axis instead of the folding axis.
|
|
83
|
+
*/
|
|
84
|
+
const QUIET_CATEGORIES: ReadonlySet<ToolCategory> = new Set<ToolCategory>([
|
|
85
|
+
"read",
|
|
86
|
+
"list",
|
|
87
|
+
"search",
|
|
88
|
+
"think",
|
|
89
|
+
]);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Returns the default {@link ToolChrome} for a presentation category.
|
|
93
|
+
* Consumers can override per {@link ToolKind} via {@link registerToolPresenter}
|
|
94
|
+
* (`chrome: () => "card"` to restore the boxed look for a kind), exactly like
|
|
95
|
+
* the disclosure axis.
|
|
96
|
+
*/
|
|
97
|
+
export function defaultChromeForCategory(category: ToolCategory): ToolChrome {
|
|
98
|
+
return QUIET_CATEGORIES.has(category) ? "quiet" : "card";
|
|
99
|
+
}
|
|
49
100
|
|
|
50
101
|
/**
|
|
51
102
|
* Categories whose result is foregrounded as a persistent bounded preview by
|
|
@@ -60,7 +111,6 @@ export type ToolDisclosure = "summary" | "preview";
|
|
|
60
111
|
* under control even in turns with many edits.
|
|
61
112
|
*/
|
|
62
113
|
const PREVIEW_CATEGORIES: ReadonlySet<ToolCategory> = new Set<ToolCategory>([
|
|
63
|
-
"shell",
|
|
64
114
|
"edit",
|
|
65
115
|
"write",
|
|
66
116
|
"mcp",
|
|
@@ -69,6 +119,18 @@ const PREVIEW_CATEGORIES: ReadonlySet<ToolCategory> = new Set<ToolCategory>([
|
|
|
69
119
|
"unknown",
|
|
70
120
|
]);
|
|
71
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Categories that stream in full while live but settle to a dimmed tail of
|
|
124
|
+
* their last output lines (see the `"tail"` arm of {@link ToolDisclosure}).
|
|
125
|
+
* Today that is shell alone: its output is evidence worth keeping at a
|
|
126
|
+
* glance, but rarely worth reading line by line once the command succeeded.
|
|
127
|
+
* Consumers can restore the always-expanded preview per kind via
|
|
128
|
+
* {@link registerToolPresenter} (`disclosure: () => "preview"`).
|
|
129
|
+
*/
|
|
130
|
+
const TAIL_CATEGORIES: ReadonlySet<ToolCategory> = new Set<ToolCategory>([
|
|
131
|
+
"shell",
|
|
132
|
+
]);
|
|
133
|
+
|
|
72
134
|
/**
|
|
73
135
|
* Low-signal categories whose consecutive runs fold into a single collapsible
|
|
74
136
|
* "Read 5 files" chip in the thread. These are the read-only, repetitive
|
|
@@ -84,13 +146,15 @@ const RUN_GROUPABLE_CATEGORIES: ReadonlySet<ToolCategory> = new Set<ToolCategory
|
|
|
84
146
|
|
|
85
147
|
/**
|
|
86
148
|
* Returns the default inline {@link ToolDisclosure} for a presentation
|
|
87
|
-
* category. This is the headless policy behind the thread's "
|
|
88
|
-
* preview for
|
|
89
|
-
* consumers can override per {@link ToolKind} via
|
|
149
|
+
* category. This is the headless policy behind the thread's "collapse settled
|
|
150
|
+
* shell to a dimmed tail, keep a live preview for MCP/unknown, keep generic
|
|
151
|
+
* tools compact" behaviour; consumers can override per {@link ToolKind} via
|
|
152
|
+
* {@link registerToolPresenter}.
|
|
90
153
|
*/
|
|
91
154
|
export function defaultDisclosureForCategory(
|
|
92
155
|
category: ToolCategory,
|
|
93
156
|
): ToolDisclosure {
|
|
157
|
+
if (TAIL_CATEGORIES.has(category)) return "tail";
|
|
94
158
|
return PREVIEW_CATEGORIES.has(category) ? "preview" : "summary";
|
|
95
159
|
}
|
|
96
160
|
|
|
@@ -19,10 +19,11 @@ import type { ToolResultView } from "@stigmer/sdk";
|
|
|
19
19
|
import {
|
|
20
20
|
resolveToolCategoryFromCall,
|
|
21
21
|
extractPrimaryArg,
|
|
22
|
+
defaultChromeForCategory,
|
|
22
23
|
defaultDisclosureForCategory,
|
|
23
24
|
isRunGroupableCategory,
|
|
24
25
|
} from "./tool-categories.js";
|
|
25
|
-
import type { ToolCategory, ToolDisclosure } from "./tool-categories.js";
|
|
26
|
+
import type { ToolCategory, ToolChrome, ToolDisclosure } from "./tool-categories.js";
|
|
26
27
|
import { summarizeResultView } from "./ResultView.js";
|
|
27
28
|
|
|
28
29
|
/** Optional per-kind overrides for label, summary, disclosure, and run-grouping. */
|
|
@@ -37,6 +38,15 @@ export interface ToolPresenter {
|
|
|
37
38
|
* (`() => "preview"`) without forking the components.
|
|
38
39
|
*/
|
|
39
40
|
readonly disclosure?: (toolCall: ToolCall, result: ToolResultView) => ToolDisclosure;
|
|
41
|
+
/**
|
|
42
|
+
* Overrides the default chrome tier — quiet unboxed line vs bordered card
|
|
43
|
+
* (see {@link ToolChrome}). Use to restore the boxed look for a kind
|
|
44
|
+
* (`() => "card"`) or to quiet a chatty custom tool (`() => "quiet"`).
|
|
45
|
+
* A pending approval gate or a failure always escalates the row to a card
|
|
46
|
+
* regardless of this override — a decision surface and error output must
|
|
47
|
+
* never render frameless.
|
|
48
|
+
*/
|
|
49
|
+
readonly chrome?: (toolCall: ToolCall, result: ToolResultView) => ToolChrome;
|
|
40
50
|
/**
|
|
41
51
|
* Overrides whether consecutive same-kind calls fold into one collapsible
|
|
42
52
|
* "Read 5 files" chip. Use to fold a chatty custom tool (`() => true`) or to
|
|
@@ -127,6 +137,13 @@ export interface ToolPresentation {
|
|
|
127
137
|
* default.
|
|
128
138
|
*/
|
|
129
139
|
readonly disclosure: ToolDisclosure;
|
|
140
|
+
/**
|
|
141
|
+
* Default chrome tier for this tool — `"quiet"` renders an unboxed line,
|
|
142
|
+
* `"card"` a bordered card (see {@link ToolChrome}). A pending gate or a
|
|
143
|
+
* failure escalates to `"card"` in the component layer; this is the
|
|
144
|
+
* *settled* default.
|
|
145
|
+
*/
|
|
146
|
+
readonly chrome: ToolChrome;
|
|
130
147
|
/**
|
|
131
148
|
* Whether consecutive same-kind calls fold into one collapsible chip — the
|
|
132
149
|
* run-grouping axis, orthogonal to {@link disclosure}. See
|
|
@@ -155,6 +172,9 @@ export function useToolPresentation(toolCall: ToolCall): ToolPresentation {
|
|
|
155
172
|
const disclosure =
|
|
156
173
|
override?.disclosure?.(toolCall, result) ??
|
|
157
174
|
defaultDisclosureForCategory(categoryInfo.category);
|
|
175
|
+
const chrome =
|
|
176
|
+
override?.chrome?.(toolCall, result) ??
|
|
177
|
+
defaultChromeForCategory(categoryInfo.category);
|
|
158
178
|
const runGroupable =
|
|
159
179
|
override?.runGroupable?.(toolCall) ??
|
|
160
180
|
isRunGroupableCategory(categoryInfo.category);
|
|
@@ -167,6 +187,7 @@ export function useToolPresentation(toolCall: ToolCall): ToolPresentation {
|
|
|
167
187
|
result,
|
|
168
188
|
resultSummary,
|
|
169
189
|
disclosure,
|
|
190
|
+
chrome,
|
|
170
191
|
runGroupable,
|
|
171
192
|
};
|
|
172
193
|
}, [toolCall]);
|
|
@@ -12,8 +12,7 @@ import {
|
|
|
12
12
|
useApplyResource,
|
|
13
13
|
type ApplyResourceResult,
|
|
14
14
|
} from "../library/useApplyResource.js";
|
|
15
|
-
|
|
16
|
-
const COPIED_FEEDBACK_MS = 2000;
|
|
15
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
17
16
|
|
|
18
17
|
/** Options for {@link useArtifactInspection}. */
|
|
19
18
|
export interface UseArtifactInspectionOptions {
|
|
@@ -198,14 +197,11 @@ export function useArtifactInspection(
|
|
|
198
197
|
|
|
199
198
|
// --- Copy -----------------------------------------------------------------
|
|
200
199
|
|
|
201
|
-
const
|
|
200
|
+
const { copy: copyToClipboard, copied } = useCopyFeedback();
|
|
202
201
|
const copy = useCallback(() => {
|
|
203
202
|
if (!content) return;
|
|
204
|
-
void
|
|
205
|
-
|
|
206
|
-
setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
|
|
207
|
-
});
|
|
208
|
-
}, [content]);
|
|
203
|
+
void copyToClipboard(content);
|
|
204
|
+
}, [content, copyToClipboard]);
|
|
209
205
|
|
|
210
206
|
return useMemo(
|
|
211
207
|
() => ({
|
|
@@ -94,8 +94,9 @@ export interface SharedAgentExecutionFields {
|
|
|
94
94
|
*
|
|
95
95
|
* Values are injected into the agent sandbox for this execution only
|
|
96
96
|
* and deleted when the execution completes. They take the highest
|
|
97
|
-
* merge priority, overriding
|
|
98
|
-
*
|
|
97
|
+
* merge priority, overriding Environment values bound via the
|
|
98
|
+
* instance. Keys must be declared in the agent's env declarations
|
|
99
|
+
* (a whitelist, not a value source) or they are dropped.
|
|
99
100
|
*
|
|
100
101
|
* Use this for B2B integrations where per-call credentials are
|
|
101
102
|
* injected at runtime, or for one-off secrets that should not persist.
|
|
@@ -12,6 +12,7 @@ import { getUserMessage, iamRoleToString } from "@stigmer/sdk";
|
|
|
12
12
|
import { useCreateIamPolicy } from "./useCreateIamPolicy.js";
|
|
13
13
|
import { RoleSelector } from "./RoleSelector.js";
|
|
14
14
|
import { PrincipalPicker, type SelectedPrincipal } from "./PrincipalPicker.js";
|
|
15
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
15
16
|
|
|
16
17
|
/** Props for {@link GrantAccessForm}. */
|
|
17
18
|
export interface GrantAccessFormProps {
|
|
@@ -151,7 +152,7 @@ export function GrantAccessForm({
|
|
|
151
152
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
152
153
|
)}
|
|
153
154
|
>
|
|
154
|
-
{isCreating && <SpinnerIcon />}
|
|
155
|
+
{isCreating && <SpinnerIcon size={12} />}
|
|
155
156
|
Grant access
|
|
156
157
|
</button>
|
|
157
158
|
|
|
@@ -174,20 +175,3 @@ export function GrantAccessForm({
|
|
|
174
175
|
);
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
function SpinnerIcon() {
|
|
178
|
-
return (
|
|
179
|
-
<svg
|
|
180
|
-
width="12"
|
|
181
|
-
height="12"
|
|
182
|
-
viewBox="0 0 16 16"
|
|
183
|
-
fill="none"
|
|
184
|
-
stroke="currentColor"
|
|
185
|
-
strokeWidth="2"
|
|
186
|
-
strokeLinecap="round"
|
|
187
|
-
className="stg:animate-spin"
|
|
188
|
-
aria-hidden="true"
|
|
189
|
-
>
|
|
190
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
191
|
-
</svg>
|
|
192
|
-
);
|
|
193
|
-
}
|
|
@@ -24,6 +24,7 @@ import { useCreateIamPolicy } from "./useCreateIamPolicy.js";
|
|
|
24
24
|
import { useDeleteIamPolicy } from "./useDeleteIamPolicy.js";
|
|
25
25
|
import { RoleSelector } from "./RoleSelector.js";
|
|
26
26
|
import { ProviderBadge } from "./ProviderBadge.js";
|
|
27
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
27
28
|
|
|
28
29
|
// ---------------------------------------------------------------------------
|
|
29
30
|
// Public API
|
|
@@ -368,7 +369,7 @@ function RemoveConfirmation({
|
|
|
368
369
|
"stg:disabled:pointer-events-none stg:disabled:opacity-50",
|
|
369
370
|
)}
|
|
370
371
|
>
|
|
371
|
-
{isRevoking && <SpinnerIcon />}
|
|
372
|
+
{isRevoking && <SpinnerIcon size={12} />}
|
|
372
373
|
Remove
|
|
373
374
|
</button>
|
|
374
375
|
<button
|
|
@@ -499,7 +500,7 @@ function ChangeRoleRow({
|
|
|
499
500
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
500
501
|
)}
|
|
501
502
|
>
|
|
502
|
-
{isWorking && <SpinnerIcon />}
|
|
503
|
+
{isWorking && <SpinnerIcon size={12} />}
|
|
503
504
|
{isWorking ? "Changing role…" : "Confirm"}
|
|
504
505
|
</button>
|
|
505
506
|
<button
|
|
@@ -562,20 +563,3 @@ function TrashIcon() {
|
|
|
562
563
|
);
|
|
563
564
|
}
|
|
564
565
|
|
|
565
|
-
function SpinnerIcon() {
|
|
566
|
-
return (
|
|
567
|
-
<svg
|
|
568
|
-
width="12"
|
|
569
|
-
height="12"
|
|
570
|
-
viewBox="0 0 16 16"
|
|
571
|
-
fill="none"
|
|
572
|
-
stroke="currentColor"
|
|
573
|
-
strokeWidth="2"
|
|
574
|
-
strokeLinecap="round"
|
|
575
|
-
className="stg:animate-spin"
|
|
576
|
-
aria-hidden="true"
|
|
577
|
-
>
|
|
578
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
579
|
-
</svg>
|
|
580
|
-
);
|
|
581
|
-
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import { useId } from "react";
|
|
3
4
|
import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
4
5
|
import type { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
5
6
|
import { cn } from "@stigmer/theme";
|
|
@@ -47,6 +48,12 @@ export function RoleSelector({
|
|
|
47
48
|
disabled = false,
|
|
48
49
|
className,
|
|
49
50
|
}: RoleSelectorProps) {
|
|
51
|
+
// Instance-scoped radio-group name (oss#593): a hardcoded name would make
|
|
52
|
+
// every mounted RoleSelector share ONE radio group — with two copies on a
|
|
53
|
+
// page (e.g. zone-cached detail pages), keyboard selection escapes into
|
|
54
|
+
// the other, possibly aria-hidden, copy.
|
|
55
|
+
const groupName = useId();
|
|
56
|
+
|
|
50
57
|
const { options, selected: internalSelected, select } = useRoleSelector(
|
|
51
58
|
kind,
|
|
52
59
|
defaultRole,
|
|
@@ -84,7 +91,7 @@ export function RoleSelector({
|
|
|
84
91
|
>
|
|
85
92
|
<input
|
|
86
93
|
type="radio"
|
|
87
|
-
name=
|
|
94
|
+
name={groupName}
|
|
88
95
|
value={opt.value}
|
|
89
96
|
checked={isChecked}
|
|
90
97
|
disabled={disabled}
|