@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
|
@@ -85,12 +85,64 @@ function readStoredCenterView(): CenterView {
|
|
|
85
85
|
return "thread";
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Whether {@link WorkflowExecutionViewer} offers the execution panel surface.
|
|
90
|
+
*
|
|
91
|
+
* - `"auto"` (default) — the panel and its toggle chip are available.
|
|
92
|
+
* - `"none"` — the panel and chip are absent entirely, and Diagnose is
|
|
93
|
+
* withheld with them (the diagnosis conversation renders inside the
|
|
94
|
+
* panel, so without one the affordance would be a dead end). For hosts
|
|
95
|
+
* whose surrounding surface already renders artifacts/changes/usage.
|
|
96
|
+
*
|
|
97
|
+
* The workflow twin of the session organisms' `SessionPanelMode` — a
|
|
98
|
+
* deliberately separate union, like the panel controllers themselves, so
|
|
99
|
+
* each organism's vocabulary can grow domain-specific modes. A union (not
|
|
100
|
+
* a boolean) so a future mode — e.g. a host-rendered panel fed by the
|
|
101
|
+
* SDK's controller — extends the vocabulary instead of breaking it.
|
|
102
|
+
*/
|
|
103
|
+
export type WorkflowExecutionPanelMode = "auto" | "none";
|
|
104
|
+
|
|
88
105
|
/** Props for {@link WorkflowExecutionViewer}. */
|
|
89
106
|
export interface WorkflowExecutionViewerProps {
|
|
90
107
|
/** ID of the workflow execution to display. */
|
|
91
108
|
readonly executionId: string;
|
|
92
109
|
/** Organization slug — needed for AI diagnosis authorization. */
|
|
93
110
|
readonly org?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Whether the viewer offers the execution panel at all. `"none"` removes
|
|
113
|
+
* the panel AND its toggle chip and withholds the Diagnose action (its
|
|
114
|
+
* conversation renders inside the panel) — for hosts whose surrounding
|
|
115
|
+
* surface already presents the execution's artifacts and usage.
|
|
116
|
+
*
|
|
117
|
+
* @default "auto"
|
|
118
|
+
*/
|
|
119
|
+
readonly panel?: WorkflowExecutionPanelMode;
|
|
120
|
+
/**
|
|
121
|
+
* Initial open state of the execution panel in uncontrolled mode — a
|
|
122
|
+
* docking host that wants the artifacts rail visible from the first paint
|
|
123
|
+
* passes `true`. Ignored when
|
|
124
|
+
* {@link WorkflowExecutionViewerProps.panelOpen} is provided.
|
|
125
|
+
*
|
|
126
|
+
* @default false
|
|
127
|
+
*/
|
|
128
|
+
readonly defaultPanelOpen?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Controlled open state of the execution panel. When provided, the host
|
|
131
|
+
* owns the panel: the chip toggle, Diagnose, and artifact/file-change
|
|
132
|
+
* opens surface through
|
|
133
|
+
* {@link WorkflowExecutionViewerProps.onPanelOpenChange} instead of
|
|
134
|
+
* flipping state, and the panel follows this value. Leave `undefined`
|
|
135
|
+
* for the self-managing default.
|
|
136
|
+
*/
|
|
137
|
+
readonly panelOpen?: boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Called on every panel open/close transition, in BOTH modes — pass it
|
|
140
|
+
* alone (uncontrolled) to simply observe the panel, e.g. widening a
|
|
141
|
+
* docked pane when Diagnose expands it and reclaiming the room on close.
|
|
142
|
+
* See {@link UseWorkflowExecutionPanelOptions.onOpenChange} for the exact
|
|
143
|
+
* request-vs-transition semantics in each mode.
|
|
144
|
+
*/
|
|
145
|
+
readonly onPanelOpenChange?: (open: boolean) => void;
|
|
94
146
|
/**
|
|
95
147
|
* Callback when the user clicks a link to a child agent execution.
|
|
96
148
|
* Receives the AgentExecution ID. The host application is responsible
|
|
@@ -150,6 +202,10 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
150
202
|
onNavigateToWorkflowEditor,
|
|
151
203
|
headerActions,
|
|
152
204
|
nodesDraggable,
|
|
205
|
+
panel: panelMode = "auto",
|
|
206
|
+
defaultPanelOpen,
|
|
207
|
+
panelOpen,
|
|
208
|
+
onPanelOpenChange,
|
|
153
209
|
className,
|
|
154
210
|
}: WorkflowExecutionViewerProps) {
|
|
155
211
|
const {
|
|
@@ -306,11 +362,24 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
306
362
|
],
|
|
307
363
|
);
|
|
308
364
|
|
|
365
|
+
// The one flag every panel affordance keys on: the host opted out
|
|
366
|
+
// (`panel="none"`). Everything the panel touches — the chip, the split's
|
|
367
|
+
// secondary pane, and Diagnose (whose conversation renders inside the
|
|
368
|
+
// panel) — gates on this, so the affordances can never drift apart.
|
|
369
|
+
const panelEnabled = panelMode !== "none";
|
|
370
|
+
|
|
309
371
|
// The execution-level workspace panel (facets + virtual document
|
|
310
372
|
// tabs). The controller lives at the owner level — the editors-store
|
|
311
373
|
// SUBSCRIPTION stays inside ExecutionWorkspacePanel so tab churn re-renders
|
|
312
374
|
// only the panel subtree, never the streaming graph (DD-009/DD-010).
|
|
313
|
-
const panel = useWorkflowExecutionPanel(
|
|
375
|
+
const panel = useWorkflowExecutionPanel({
|
|
376
|
+
// With the panel disabled the controller is pinned controlled-closed
|
|
377
|
+
// and unobserved — airtight inertness, not just hidden UI: no intent
|
|
378
|
+
// can flip state or reach the host's callback.
|
|
379
|
+
open: panelEnabled ? panelOpen : false,
|
|
380
|
+
defaultOpen: defaultPanelOpen,
|
|
381
|
+
onOpenChange: panelEnabled ? onPanelOpenChange : undefined,
|
|
382
|
+
});
|
|
314
383
|
|
|
315
384
|
const [showComparePicker, setShowComparePicker] = useState(false);
|
|
316
385
|
const [compareTargetId, setCompareTargetId] = useState<string | null>(null);
|
|
@@ -344,24 +413,38 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
344
413
|
// Thread view. One always-visible announcer serves both center views.
|
|
345
414
|
const announcement = useExecutionAnnouncements(effectiveTaskStates);
|
|
346
415
|
|
|
347
|
-
//
|
|
348
|
-
//
|
|
349
|
-
//
|
|
350
|
-
// the
|
|
351
|
-
//
|
|
352
|
-
//
|
|
353
|
-
//
|
|
354
|
-
//
|
|
355
|
-
//
|
|
356
|
-
//
|
|
416
|
+
// Boundary-transition snapshot refetches. The snapshot fetch is one-shot
|
|
417
|
+
// (`useWorkflowExecution` never polls), so the stream store's stage
|
|
418
|
+
// transitions are the only live signals that the mount snapshot went
|
|
419
|
+
// stale — the snapshot's own `phase` cannot be the trigger, since it
|
|
420
|
+
// only moves on a refetch (the circularity behind the stale "Pending"
|
|
421
|
+
// header, R1-5). Two transitions matter, one per direction:
|
|
422
|
+
//
|
|
423
|
+
// - ENTERING "complete" (T04, DD-T04-4): while a run streams, the cards'
|
|
424
|
+
// collapsed lines and bodies work from the TRUNCATED event summaries;
|
|
425
|
+
// the full per-task output lands on `status.tasks[]` only when the
|
|
426
|
+
// runner persists the terminal snapshot.
|
|
427
|
+
// - ENTERING "streaming" (oss#571): the store flips connecting→streaming
|
|
428
|
+
// on the FIRST delivered event, so this transition is the "run
|
|
429
|
+
// started" signal for a page that landed on a still-pending execution
|
|
430
|
+
// — without the refetch, the phase badge and the phase-gated
|
|
431
|
+
// Pause/Cancel would freeze at "Pending" for the entire run. It also
|
|
432
|
+
// covers reconnecting→streaming, where the snapshot slept through the
|
|
433
|
+
// outage.
|
|
434
|
+
//
|
|
435
|
+
// Both are TRANSITION-scoped (never fire on mount): a terminal-replay
|
|
436
|
+
// mount starts at "complete" and a mid-run mount starts at "streaming",
|
|
437
|
+
// and each already fetched a fresh snapshot.
|
|
357
438
|
const prevStreamStageRef = useRef(streamState.stage);
|
|
358
439
|
useEffect(() => {
|
|
359
440
|
const prev = prevStreamStageRef.current;
|
|
360
441
|
prevStreamStageRef.current = streamState.stage;
|
|
361
|
-
|
|
442
|
+
const enteredComplete =
|
|
362
443
|
streamState.stage === "complete" &&
|
|
363
|
-
(prev === "streaming" || prev === "reconnecting")
|
|
364
|
-
|
|
444
|
+
(prev === "streaming" || prev === "reconnecting");
|
|
445
|
+
const enteredStreaming =
|
|
446
|
+
streamState.stage === "streaming" && prev !== "streaming";
|
|
447
|
+
if (enteredComplete || enteredStreaming) {
|
|
365
448
|
refetchExecution();
|
|
366
449
|
}
|
|
367
450
|
}, [streamState.stage, refetchExecution]);
|
|
@@ -453,8 +536,11 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
453
536
|
actions={actions}
|
|
454
537
|
// Diagnose opens (or focuses) the singleton diagnosis document tab —
|
|
455
538
|
// the tab itself is the "diagnosis is active" state, so there is no
|
|
456
|
-
// owner-level isDiagnosing boolean to keep in sync (SSOT).
|
|
457
|
-
|
|
539
|
+
// owner-level isDiagnosing boolean to keep in sync (SSOT). A viewer
|
|
540
|
+
// without a panel (panel="none") withholds the action: the
|
|
541
|
+
// conversation renders inside the panel, so offering it would be a
|
|
542
|
+
// dead end.
|
|
543
|
+
onDiagnose={org && panelEnabled ? panel.openDiagnosis : undefined}
|
|
458
544
|
onCompare={handleOpenComparePicker}
|
|
459
545
|
headerActions={
|
|
460
546
|
<>
|
|
@@ -463,12 +549,15 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
463
549
|
Usage facet gives the panel data-independent content (its
|
|
464
550
|
empty state is honest even before any usage accrues). The
|
|
465
551
|
badge stays the artifact count: artifacts are countable
|
|
466
|
-
collateral, usage is a continuous quantity.
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
552
|
+
collateral, usage is a continuous quantity. A viewer without
|
|
553
|
+
a panel (panel="none") has no toggle: it is simply absent. */}
|
|
554
|
+
{panelEnabled && (
|
|
555
|
+
<PanelChip
|
|
556
|
+
isOpen={panel.isOpen}
|
|
557
|
+
onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
|
|
558
|
+
badgeCount={artifacts.length}
|
|
559
|
+
/>
|
|
560
|
+
)}
|
|
472
561
|
</>
|
|
473
562
|
}
|
|
474
563
|
/>
|
|
@@ -599,8 +688,10 @@ export const WorkflowExecutionViewer = memo(function WorkflowExecutionViewer({
|
|
|
599
688
|
secondary={
|
|
600
689
|
// Content unmounts while collapsed (matching the session panel
|
|
601
690
|
// region); the editors store lives on the controller, so open tabs
|
|
602
|
-
// survive a collapse/expand cycle.
|
|
603
|
-
|
|
691
|
+
// survive a collapse/expand cycle. The panelEnabled guard is
|
|
692
|
+
// belt-and-braces beside the pinned-closed controller: with
|
|
693
|
+
// panel="none", isOpen can never be true.
|
|
694
|
+
panel.isOpen && panelEnabled ? (
|
|
604
695
|
<ExecutionWorkspacePanel
|
|
605
696
|
panel={panel}
|
|
606
697
|
executionId={executionId}
|
|
@@ -4,6 +4,8 @@ import { useCallback, useEffect, useRef } from "react";
|
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { useExplainWorkflowFlow, type ExplainPhase } from "./useExplainWorkflowFlow.js";
|
|
6
6
|
import { MessageThread } from "../execution/MessageThread.js";
|
|
7
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
8
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
7
9
|
|
|
8
10
|
/** Props for {@link WorkflowExplainDialog}. */
|
|
9
11
|
export interface WorkflowExplainDialogProps {
|
|
@@ -74,13 +76,12 @@ export function WorkflowExplainDialog({
|
|
|
74
76
|
[onOpenChange],
|
|
75
77
|
);
|
|
76
78
|
|
|
79
|
+
const { copy, copied } = useCopyFeedback();
|
|
77
80
|
const handleCopy = useCallback(() => {
|
|
78
81
|
if (flow.explanation) {
|
|
79
|
-
|
|
80
|
-
/* Clipboard unavailable in some contexts */
|
|
81
|
-
});
|
|
82
|
+
void copy(flow.explanation);
|
|
82
83
|
}
|
|
83
|
-
}, [flow.explanation]);
|
|
84
|
+
}, [copy, flow.explanation]);
|
|
84
85
|
|
|
85
86
|
return (
|
|
86
87
|
<dialog
|
|
@@ -89,7 +90,7 @@ export function WorkflowExplainDialog({
|
|
|
89
90
|
onClick={handleBackdropClick}
|
|
90
91
|
className={cn(
|
|
91
92
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-2xl stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
92
|
-
"stg:backdrop:bg-
|
|
93
|
+
"stg:backdrop:bg-backdrop",
|
|
93
94
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
94
95
|
)}
|
|
95
96
|
>
|
|
@@ -102,7 +103,7 @@ export function WorkflowExplainDialog({
|
|
|
102
103
|
</h3>
|
|
103
104
|
{flow.isStreaming && (
|
|
104
105
|
<span className="stg:inline-flex stg:items-center stg:gap-1.5 stg:text-xs stg:text-muted-foreground">
|
|
105
|
-
<SpinnerIcon />
|
|
106
|
+
<SpinnerIcon size={14} />
|
|
106
107
|
Analyzing…
|
|
107
108
|
</span>
|
|
108
109
|
)}
|
|
@@ -199,7 +200,7 @@ export function WorkflowExplainDialog({
|
|
|
199
200
|
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
200
201
|
)}
|
|
201
202
|
>
|
|
202
|
-
Copy to clipboard
|
|
203
|
+
{copied ? "Copied" : "Copy to clipboard"}
|
|
203
204
|
</button>
|
|
204
205
|
)}
|
|
205
206
|
</div>
|
|
@@ -209,20 +210,3 @@ export function WorkflowExplainDialog({
|
|
|
209
210
|
);
|
|
210
211
|
}
|
|
211
212
|
|
|
212
|
-
function SpinnerIcon({ size = 14 }: { readonly size?: number }) {
|
|
213
|
-
return (
|
|
214
|
-
<svg
|
|
215
|
-
width={size}
|
|
216
|
-
height={size}
|
|
217
|
-
viewBox="0 0 16 16"
|
|
218
|
-
fill="none"
|
|
219
|
-
stroke="currentColor"
|
|
220
|
-
strokeWidth="2"
|
|
221
|
-
strokeLinecap="round"
|
|
222
|
-
className="stg:animate-spin"
|
|
223
|
-
aria-hidden="true"
|
|
224
|
-
>
|
|
225
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
226
|
-
</svg>
|
|
227
|
-
);
|
|
228
|
-
}
|
|
@@ -28,7 +28,7 @@ export const WorkflowNode = memo(function WorkflowNode({
|
|
|
28
28
|
selected,
|
|
29
29
|
}: NodeProps & { data: CanvasTaskNodeData }) {
|
|
30
30
|
const mode = useWorkflowGraphMode();
|
|
31
|
-
const visualSpec = getVisualSpec(data.
|
|
31
|
+
const visualSpec = getVisualSpec(data.kindString);
|
|
32
32
|
const categoryColor = CATEGORY_COLORS[data.category];
|
|
33
33
|
const errorCount = data.errorCount ?? 0;
|
|
34
34
|
const isNested = NESTED_TASK_KINDS.has(data.kindString);
|
|
@@ -38,7 +38,10 @@ export const WorkflowNode = memo(function WorkflowNode({
|
|
|
38
38
|
return (
|
|
39
39
|
<div
|
|
40
40
|
data-visual-class={data.visualClass}
|
|
41
|
-
data-task-kind
|
|
41
|
+
// data-task-kind is a sanctioned e2e/embedding hook meaning "real
|
|
42
|
+
// workflow task kind" — sentinels omit it and are targeted via
|
|
43
|
+
// data-id + data-visual-class instead (oss#581).
|
|
44
|
+
data-task-kind={data.isSentinel ? undefined : data.kindString}
|
|
42
45
|
data-execution-status={executionState?.status}
|
|
43
46
|
data-diff-status={diffState?.status}
|
|
44
47
|
aria-label={buildAriaLabel(data, errorCount, executionState?.status)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
4
4
|
import {
|
|
5
5
|
ReactFlow,
|
|
6
6
|
Controls,
|
|
@@ -96,6 +96,13 @@ function WorkflowOverviewGraphInner({
|
|
|
96
96
|
nodesDraggable: draggable = false,
|
|
97
97
|
className,
|
|
98
98
|
}: WorkflowOverviewGraphProps) {
|
|
99
|
+
// Instance-scoped React Flow id (oss#593): React Flow derives its internal
|
|
100
|
+
// DOM ids (aria descriptions, SVG marker/pattern defs) from this id, so two
|
|
101
|
+
// mounted graphs without explicit ids collide — e.g. the zone-cached detail
|
|
102
|
+
// page renders a hidden copy whose defs hijack the visible copy's url(#…)
|
|
103
|
+
// and aria-describedby references.
|
|
104
|
+
const flowId = useId();
|
|
105
|
+
|
|
99
106
|
const {
|
|
100
107
|
nodes: baseNodes,
|
|
101
108
|
nodesWithSelection,
|
|
@@ -216,6 +223,7 @@ function WorkflowOverviewGraphInner({
|
|
|
216
223
|
<WorkflowGraphModeProvider mode="overview">
|
|
217
224
|
<div ref={containerRef} className={cn("stg:relative stg:h-full stg:w-full", className)}>
|
|
218
225
|
<ReactFlow
|
|
226
|
+
id={flowId}
|
|
219
227
|
nodes={displayNodes}
|
|
220
228
|
edges={edges}
|
|
221
229
|
onNodesChange={draggable ? handleNodesChange : undefined}
|
|
@@ -6,6 +6,7 @@ import { useRefineWorkflowFlow, type RefinePhase } from "./useRefineWorkflowFlow
|
|
|
6
6
|
import { MessageThread } from "../execution/MessageThread.js";
|
|
7
7
|
import { computeUnifiedDiff, type DiffLine } from "./workflow-yaml-diff.js";
|
|
8
8
|
import { WorkflowDiffGraph } from "./WorkflowDiffGraph.js";
|
|
9
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link WorkflowRefinePanel}. */
|
|
11
12
|
export interface WorkflowRefinePanelProps {
|
|
@@ -173,7 +174,7 @@ export function WorkflowRefinePanel({
|
|
|
173
174
|
{/* Starting indicator (before stream connects) */}
|
|
174
175
|
{flow.phase === "starting" && (
|
|
175
176
|
<div className="stg:flex stg:flex-col stg:items-center stg:justify-center stg:gap-2 stg:py-8">
|
|
176
|
-
<SpinnerIcon />
|
|
177
|
+
<SpinnerIcon size={14} />
|
|
177
178
|
<p className="stg:text-xs stg:text-muted-foreground">
|
|
178
179
|
Starting Workflow Architect…
|
|
179
180
|
</p>
|
|
@@ -429,20 +430,3 @@ function CloseIcon() {
|
|
|
429
430
|
);
|
|
430
431
|
}
|
|
431
432
|
|
|
432
|
-
function SpinnerIcon({ size = 14 }: { readonly size?: number }) {
|
|
433
|
-
return (
|
|
434
|
-
<svg
|
|
435
|
-
width={size}
|
|
436
|
-
height={size}
|
|
437
|
-
viewBox="0 0 16 16"
|
|
438
|
-
fill="none"
|
|
439
|
-
stroke="currentColor"
|
|
440
|
-
strokeWidth="2"
|
|
441
|
-
strokeLinecap="round"
|
|
442
|
-
className="stg:animate-spin"
|
|
443
|
-
aria-hidden="true"
|
|
444
|
-
>
|
|
445
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
446
|
-
</svg>
|
|
447
|
-
);
|
|
448
|
-
}
|
|
@@ -6,6 +6,7 @@ import { useDiagnoseExecutionFlow, type DiagnosePhase } from "./useDiagnoseExecu
|
|
|
6
6
|
import { MessageThread } from "../execution/MessageThread.js";
|
|
7
7
|
import { computeUnifiedDiff, type DiffLine } from "./workflow-yaml-diff.js";
|
|
8
8
|
import { WorkflowDiffGraph } from "./WorkflowDiffGraph.js";
|
|
9
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link WorkflowRepairCard}. */
|
|
11
12
|
export interface WorkflowRepairCardProps {
|
|
@@ -160,7 +161,7 @@ export function WorkflowRepairCard({
|
|
|
160
161
|
{/* Starting indicator */}
|
|
161
162
|
{flow.phase === "starting" && !hasConversation && (
|
|
162
163
|
<div className="stg:flex stg:flex-col stg:items-center stg:justify-center stg:gap-2 stg:py-8">
|
|
163
|
-
<SpinnerIcon />
|
|
164
|
+
<SpinnerIcon size={14} />
|
|
164
165
|
<p className="stg:text-xs stg:text-muted-foreground">
|
|
165
166
|
Starting Workflow Architect…
|
|
166
167
|
</p>
|
|
@@ -436,20 +437,3 @@ function CloseIcon() {
|
|
|
436
437
|
);
|
|
437
438
|
}
|
|
438
439
|
|
|
439
|
-
function SpinnerIcon({ size = 14 }: { readonly size?: number }) {
|
|
440
|
-
return (
|
|
441
|
-
<svg
|
|
442
|
-
width={size}
|
|
443
|
-
height={size}
|
|
444
|
-
viewBox="0 0 16 16"
|
|
445
|
-
fill="none"
|
|
446
|
-
stroke="currentColor"
|
|
447
|
-
strokeWidth="2"
|
|
448
|
-
strokeLinecap="round"
|
|
449
|
-
className="stg:animate-spin"
|
|
450
|
-
aria-hidden="true"
|
|
451
|
-
>
|
|
452
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
453
|
-
</svg>
|
|
454
|
-
);
|
|
455
|
-
}
|
|
@@ -6,6 +6,7 @@ import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/ap
|
|
|
6
6
|
import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
|
|
7
7
|
import { useRunWorkflowFlow } from "./useRunWorkflowFlow.js";
|
|
8
8
|
import { WorkflowRunForm } from "./WorkflowRunForm.js";
|
|
9
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link WorkflowRunDialog}. */
|
|
11
12
|
export interface WorkflowRunDialogProps {
|
|
@@ -24,6 +25,16 @@ export interface WorkflowRunDialogProps {
|
|
|
24
25
|
* Passed through to the form's instance picker to control visibility threshold.
|
|
25
26
|
*/
|
|
26
27
|
readonly defaultInstanceId?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Instance to preselect when the dialog opens — wire this from a
|
|
30
|
+
* row-level "Run" action so the form reflects the instance the user
|
|
31
|
+
* clicked. Applied on each open transition (after the form resets);
|
|
32
|
+
* ignored when the id is not in `instances`, so a stale id degrades
|
|
33
|
+
* to the default option. Omit (or pass `null`) for the
|
|
34
|
+
* server-resolved default. Same convention as
|
|
35
|
+
* {@link SessionComposer}'s `initialInstanceId`.
|
|
36
|
+
*/
|
|
37
|
+
readonly initialInstanceId?: string | null;
|
|
27
38
|
/**
|
|
28
39
|
* Called after the execution is created successfully.
|
|
29
40
|
* Receives the execution ID — use for navigation.
|
|
@@ -67,6 +78,7 @@ export function WorkflowRunDialog({
|
|
|
67
78
|
workflow,
|
|
68
79
|
instances,
|
|
69
80
|
defaultInstanceId,
|
|
81
|
+
initialInstanceId,
|
|
70
82
|
onSuccess,
|
|
71
83
|
onError,
|
|
72
84
|
}: WorkflowRunDialogProps) {
|
|
@@ -94,11 +106,27 @@ export function WorkflowRunDialog({
|
|
|
94
106
|
if (!dialog) return;
|
|
95
107
|
if (open && !dialog.open) {
|
|
96
108
|
flow.reset();
|
|
109
|
+
// Preselection must follow reset (reset clears the selection back to
|
|
110
|
+
// the server-resolved default). Guarded against stale ids: an instance
|
|
111
|
+
// deleted between the caller capturing the id and this open falls back
|
|
112
|
+
// to the default option instead of a <select> value with no option.
|
|
113
|
+
if (
|
|
114
|
+
initialInstanceId &&
|
|
115
|
+
instances.some((i) => i.metadata?.id === initialInstanceId)
|
|
116
|
+
) {
|
|
117
|
+
flow.setSelectedInstanceId(initialInstanceId);
|
|
118
|
+
}
|
|
97
119
|
dialog.showModal();
|
|
98
120
|
} else if (!open && dialog.open) {
|
|
99
121
|
dialog.close();
|
|
100
122
|
}
|
|
101
|
-
}, [
|
|
123
|
+
}, [
|
|
124
|
+
open,
|
|
125
|
+
flow.reset,
|
|
126
|
+
flow.setSelectedInstanceId,
|
|
127
|
+
initialInstanceId,
|
|
128
|
+
instances,
|
|
129
|
+
]);
|
|
102
130
|
|
|
103
131
|
const handleDialogCancel = useCallback(
|
|
104
132
|
(e: React.SyntheticEvent) => {
|
|
@@ -127,7 +155,7 @@ export function WorkflowRunDialog({
|
|
|
127
155
|
onClick={handleBackdropClick}
|
|
128
156
|
className={cn(
|
|
129
157
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-lg stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
130
|
-
"stg:backdrop:bg-
|
|
158
|
+
"stg:backdrop:bg-backdrop",
|
|
131
159
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
132
160
|
)}
|
|
133
161
|
>
|
|
@@ -198,7 +226,7 @@ export function WorkflowRunDialog({
|
|
|
198
226
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
199
227
|
)}
|
|
200
228
|
>
|
|
201
|
-
{flow.isSubmitting && <SpinnerIcon />}
|
|
229
|
+
{flow.isSubmitting && <SpinnerIcon size={14} />}
|
|
202
230
|
{flow.isSubmitting ? "Starting…" : "Run Workflow"}
|
|
203
231
|
</button>
|
|
204
232
|
</div>
|
|
@@ -207,24 +235,3 @@ export function WorkflowRunDialog({
|
|
|
207
235
|
);
|
|
208
236
|
}
|
|
209
237
|
|
|
210
|
-
// ---------------------------------------------------------------------------
|
|
211
|
-
// Icons
|
|
212
|
-
// ---------------------------------------------------------------------------
|
|
213
|
-
|
|
214
|
-
function SpinnerIcon() {
|
|
215
|
-
return (
|
|
216
|
-
<svg
|
|
217
|
-
width="14"
|
|
218
|
-
height="14"
|
|
219
|
-
viewBox="0 0 16 16"
|
|
220
|
-
fill="none"
|
|
221
|
-
stroke="currentColor"
|
|
222
|
-
strokeWidth="2"
|
|
223
|
-
strokeLinecap="round"
|
|
224
|
-
className="stg:animate-spin"
|
|
225
|
-
aria-hidden="true"
|
|
226
|
-
>
|
|
227
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
228
|
-
</svg>
|
|
229
|
-
);
|
|
230
|
-
}
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
type TaskDetailApprovalDecision,
|
|
14
14
|
type TaskReviewerView,
|
|
15
15
|
} from "./task-detail/task-approval.js";
|
|
16
|
+
import { SpinnerIcon } from "../internal/thread-card/glyphs.js";
|
|
16
17
|
|
|
17
18
|
/** Props for {@link WorkflowTaskApprovalSummary}. */
|
|
18
19
|
export interface WorkflowTaskApprovalSummaryProps {
|
|
@@ -101,7 +102,7 @@ export const WorkflowTaskApprovalSummary = memo(function WorkflowTaskApprovalSum
|
|
|
101
102
|
{/* Decision header */}
|
|
102
103
|
{isFinalizing ? (
|
|
103
104
|
<div className="stg:flex stg:items-center stg:gap-2 stg:text-xs stg:text-muted-foreground">
|
|
104
|
-
<SpinnerIcon />
|
|
105
|
+
<SpinnerIcon size={12} />
|
|
105
106
|
<span>Decision recorded — finalizing…</span>
|
|
106
107
|
</div>
|
|
107
108
|
) : (
|
|
@@ -315,19 +316,3 @@ function ToneIcon({ tone }: { readonly tone: DecisionTone }) {
|
|
|
315
316
|
);
|
|
316
317
|
}
|
|
317
318
|
|
|
318
|
-
function SpinnerIcon() {
|
|
319
|
-
return (
|
|
320
|
-
<svg
|
|
321
|
-
width="12"
|
|
322
|
-
height="12"
|
|
323
|
-
viewBox="0 0 12 12"
|
|
324
|
-
fill="none"
|
|
325
|
-
stroke="currentColor"
|
|
326
|
-
strokeWidth="1.5"
|
|
327
|
-
className="stg:animate-spin"
|
|
328
|
-
aria-hidden="true"
|
|
329
|
-
>
|
|
330
|
-
<path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
|
|
331
|
-
</svg>
|
|
332
|
-
);
|
|
333
|
-
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { memo
|
|
3
|
+
import { memo } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
6
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
6
7
|
|
|
7
8
|
/** Props for {@link WorkflowVersionBadge}. */
|
|
8
9
|
export interface WorkflowVersionBadgeProps {
|
|
@@ -41,19 +42,9 @@ export const WorkflowVersionBadge = memo(function WorkflowVersionBadge({
|
|
|
41
42
|
isCurrent,
|
|
42
43
|
className,
|
|
43
44
|
}: WorkflowVersionBadgeProps) {
|
|
44
|
-
const
|
|
45
|
+
const { copy, copied } = useCopyFeedback();
|
|
45
46
|
const truncated = versionHash.slice(0, 8);
|
|
46
47
|
|
|
47
|
-
const handleCopy = useCallback(async () => {
|
|
48
|
-
try {
|
|
49
|
-
await navigator.clipboard.writeText(versionHash);
|
|
50
|
-
setCopied(true);
|
|
51
|
-
setTimeout(() => setCopied(false), 1500);
|
|
52
|
-
} catch {
|
|
53
|
-
// Clipboard API may be unavailable in some contexts
|
|
54
|
-
}
|
|
55
|
-
}, [versionHash]);
|
|
56
|
-
|
|
57
48
|
return (
|
|
58
49
|
<span className={cn("stg:inline-flex stg:items-center stg:gap-1.5", className)}>
|
|
59
50
|
{isCurrent && (
|
|
@@ -75,7 +66,7 @@ export const WorkflowVersionBadge = memo(function WorkflowVersionBadge({
|
|
|
75
66
|
render={
|
|
76
67
|
<button
|
|
77
68
|
type="button"
|
|
78
|
-
onClick={
|
|
69
|
+
onClick={() => void copy(versionHash)}
|
|
79
70
|
className={cn(
|
|
80
71
|
"stg:shrink-0 stg:rounded stg:bg-muted stg:px-1.5 stg:py-0.5 stg:font-mono stg:text-[11px] stg:font-medium stg:text-foreground stg:transition-colors",
|
|
81
72
|
"stg:hover:bg-accent-hover",
|
|
@@ -6,6 +6,7 @@ import { useWorkflowVersions } from "./useWorkflowVersions.js";
|
|
|
6
6
|
import { WorkflowVersionBadge } from "./WorkflowVersionBadge.js";
|
|
7
7
|
import type { VersionEntry } from "../version-history/types.js";
|
|
8
8
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
9
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link WorkflowVersionTimeline}. */
|
|
11
12
|
export interface WorkflowVersionTimelineProps {
|
|
@@ -250,31 +251,6 @@ function EmptyState({ className }: { readonly className?: string }) {
|
|
|
250
251
|
);
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
// ---------------------------------------------------------------------------
|
|
254
|
-
// Utilities
|
|
255
|
-
// ---------------------------------------------------------------------------
|
|
256
|
-
|
|
257
|
-
function formatRelativeTime(date: Date): string {
|
|
258
|
-
const now = Date.now();
|
|
259
|
-
const diffMs = now - date.getTime();
|
|
260
|
-
const diffSec = Math.floor(diffMs / 1000);
|
|
261
|
-
const diffMin = Math.floor(diffSec / 60);
|
|
262
|
-
const diffHr = Math.floor(diffMin / 60);
|
|
263
|
-
const diffDays = Math.floor(diffHr / 24);
|
|
264
|
-
|
|
265
|
-
if (diffSec < 60) return "just now";
|
|
266
|
-
if (diffMin < 60) return `${diffMin}m ago`;
|
|
267
|
-
if (diffHr < 24) return `${diffHr}h ago`;
|
|
268
|
-
if (diffDays < 7) return `${diffDays}d ago`;
|
|
269
|
-
if (diffDays < 30) return `${Math.floor(diffDays / 7)}w ago`;
|
|
270
|
-
|
|
271
|
-
return date.toLocaleDateString(undefined, {
|
|
272
|
-
month: "short",
|
|
273
|
-
day: "numeric",
|
|
274
|
-
year: date.getFullYear() !== new Date().getFullYear() ? "numeric" : undefined,
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
|
|
278
254
|
// ---------------------------------------------------------------------------
|
|
279
255
|
// Icons
|
|
280
256
|
// ---------------------------------------------------------------------------
|