@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
|
@@ -3,18 +3,15 @@
|
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
4
|
import { create } from "@bufbuild/protobuf";
|
|
5
5
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
|
-
import { StigmerError } from "@stigmer/sdk";
|
|
7
6
|
import {
|
|
8
7
|
ListSkillVersionsInputSchema,
|
|
9
8
|
type SkillVersionEntry as ProtoSkillVersionEntry,
|
|
10
9
|
} from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
|
|
11
10
|
import { useStigmer } from "../hooks.js";
|
|
11
|
+
import { isUnimplemented } from "../internal/isUnimplemented.js";
|
|
12
12
|
import { useFetch } from "../internal/useFetch.js";
|
|
13
13
|
import type { VersionEntry } from "../version-history/types.js";
|
|
14
14
|
|
|
15
|
-
// gRPC/Connect Code.Unimplemented = 12
|
|
16
|
-
const CODE_UNIMPLEMENTED = 12;
|
|
17
|
-
|
|
18
15
|
// ---------------------------------------------------------------------------
|
|
19
16
|
// Public types
|
|
20
17
|
// ---------------------------------------------------------------------------
|
|
@@ -156,10 +153,3 @@ function mapProtoToVersionEntry(proto: ProtoSkillVersionEntry): VersionEntry {
|
|
|
156
153
|
};
|
|
157
154
|
}
|
|
158
155
|
|
|
159
|
-
// ---------------------------------------------------------------------------
|
|
160
|
-
// Error detection
|
|
161
|
-
// ---------------------------------------------------------------------------
|
|
162
|
-
|
|
163
|
-
function isUnimplemented(err: unknown): boolean {
|
|
164
|
-
return err instanceof StigmerError && err.connectCode === CODE_UNIMPLEMENTED;
|
|
165
|
-
}
|
package/src/styles.css
CHANGED
|
@@ -331,6 +331,40 @@
|
|
|
331
331
|
animation: stgm-running-pulse 2s ease-in-out infinite;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
+
/* Ambient liveness (stigmer#277): a left-to-right light sweep across the
|
|
335
|
+
text of whatever is currently in flight — a running tool's label, the
|
|
336
|
+
thinking indicator, the thread's bottom status line. The sweep rides the
|
|
337
|
+
WORDS describing the current activity (not a spinner beside them), so
|
|
338
|
+
the screen is never still while the agent is alive.
|
|
339
|
+
|
|
340
|
+
Token-driven: the text settles to the muted base with a foreground-
|
|
341
|
+
colored band sweeping through, which reads correctly in both color
|
|
342
|
+
modes and every preset. background-clip:text needs the -webkit- prefix
|
|
343
|
+
in Safari; the transparent fill is what lets the gradient show through
|
|
344
|
+
the glyphs. */
|
|
345
|
+
@keyframes stgm-shimmer {
|
|
346
|
+
to {
|
|
347
|
+
background-position: -200% 0;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.stgm-shimmer-label {
|
|
352
|
+
background-image: linear-gradient(
|
|
353
|
+
90deg,
|
|
354
|
+
var(--stgm-muted-foreground) 0%,
|
|
355
|
+
var(--stgm-muted-foreground) 35%,
|
|
356
|
+
var(--stgm-foreground) 50%,
|
|
357
|
+
var(--stgm-muted-foreground) 65%,
|
|
358
|
+
var(--stgm-muted-foreground) 100%
|
|
359
|
+
);
|
|
360
|
+
background-size: 200% 100%;
|
|
361
|
+
background-position: 0 0;
|
|
362
|
+
-webkit-background-clip: text;
|
|
363
|
+
background-clip: text;
|
|
364
|
+
color: transparent;
|
|
365
|
+
animation: stgm-shimmer 2s linear infinite;
|
|
366
|
+
}
|
|
367
|
+
|
|
334
368
|
@media (prefers-reduced-motion: reduce) {
|
|
335
369
|
.stgm {
|
|
336
370
|
--stgm-motion-duration: 0ms;
|
|
@@ -344,6 +378,15 @@
|
|
|
344
378
|
animation-iteration-count: 1 !important;
|
|
345
379
|
transition-duration: 0.01ms !important;
|
|
346
380
|
}
|
|
381
|
+
|
|
382
|
+
/* The shimmer is pure decoration: under reduced motion the label drops
|
|
383
|
+
the clipped gradient entirely and reads as ordinary text (DD-015) —
|
|
384
|
+
a frozen gradient band would look like a rendering glitch. */
|
|
385
|
+
.stgm-shimmer-label {
|
|
386
|
+
background-image: none;
|
|
387
|
+
color: inherit;
|
|
388
|
+
animation: none;
|
|
389
|
+
}
|
|
347
390
|
}
|
|
348
391
|
}
|
|
349
392
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
4
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
5
5
|
import type { VersionTimelineEntryProps } from "./types.js";
|
|
6
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* A single row in a version timeline.
|
|
@@ -205,27 +206,6 @@ function GitProvenanceRow({
|
|
|
205
206
|
// Utilities
|
|
206
207
|
// ---------------------------------------------------------------------------
|
|
207
208
|
|
|
208
|
-
function formatRelativeTime(date: Date): string {
|
|
209
|
-
const now = Date.now();
|
|
210
|
-
const diffMs = now - date.getTime();
|
|
211
|
-
const diffSec = Math.floor(diffMs / 1000);
|
|
212
|
-
const diffMin = Math.floor(diffSec / 60);
|
|
213
|
-
const diffHr = Math.floor(diffMin / 60);
|
|
214
|
-
const diffDays = Math.floor(diffHr / 24);
|
|
215
|
-
|
|
216
|
-
if (diffSec < 60) return "just now";
|
|
217
|
-
if (diffMin < 60) return `${diffMin}m ago`;
|
|
218
|
-
if (diffHr < 24) return `${diffHr}h ago`;
|
|
219
|
-
if (diffDays < 7) return `${diffDays}d ago`;
|
|
220
|
-
if (diffDays < 30) return `${Math.floor(diffDays / 7)}w ago`;
|
|
221
|
-
|
|
222
|
-
return date.toLocaleDateString(undefined, {
|
|
223
|
-
month: "short",
|
|
224
|
-
day: "numeric",
|
|
225
|
-
year: date.getFullYear() !== new Date().getFullYear() ? "numeric" : undefined,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
209
|
function normalizeGitUrl(url: string): string | null {
|
|
230
210
|
if (!url) return null;
|
|
231
211
|
const cleaned = url.replace(/\.git$/, "");
|
|
@@ -4,6 +4,7 @@ import { memo } from "react";
|
|
|
4
4
|
import type { WorkflowExecution } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
5
5
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
6
|
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
7
8
|
|
|
8
9
|
export interface FailedRunsWidgetProps {
|
|
9
10
|
/** Recent failed executions to display. */
|
|
@@ -14,14 +15,6 @@ export interface FailedRunsWidgetProps {
|
|
|
14
15
|
readonly className?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
function formatTimeAgo(date: Date): string {
|
|
18
|
-
const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
|
|
19
|
-
if (seconds < 60) return "just now";
|
|
20
|
-
if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;
|
|
21
|
-
if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`;
|
|
22
|
-
return `${Math.floor(seconds / 86400)}d ago`;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
18
|
/**
|
|
26
19
|
* Dashboard widget showing recent failed workflow executions.
|
|
27
20
|
*
|
|
@@ -85,7 +78,7 @@ export const FailedRunsWidget = memo(function FailedRunsWidget({
|
|
|
85
78
|
</p>
|
|
86
79
|
{failedDate && (
|
|
87
80
|
<p className="stg:mt-0.5 stg:text-xs stg:text-muted-foreground">
|
|
88
|
-
{
|
|
81
|
+
{formatRelativeTime(failedDate)}
|
|
89
82
|
</p>
|
|
90
83
|
)}
|
|
91
84
|
</div>
|
|
@@ -4,6 +4,7 @@ import { memo } from "react";
|
|
|
4
4
|
import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
|
|
5
5
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
6
6
|
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
7
8
|
|
|
8
9
|
export interface PendingApprovalsWidgetProps {
|
|
9
10
|
readonly approvals: readonly PendingApproval[];
|
|
@@ -14,14 +15,6 @@ export interface PendingApprovalsWidgetProps {
|
|
|
14
15
|
readonly className?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
function formatTimeAgo(date: Date): string {
|
|
18
|
-
const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
|
|
19
|
-
if (seconds < 60) return "just now";
|
|
20
|
-
if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;
|
|
21
|
-
if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`;
|
|
22
|
-
return `${Math.floor(seconds / 86400)}d ago`;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
18
|
/**
|
|
26
19
|
* Dashboard widget showing pending human_input approvals.
|
|
27
20
|
*
|
|
@@ -98,7 +91,7 @@ export const PendingApprovalsWidget = memo(function PendingApprovalsWidget({
|
|
|
98
91
|
<p className="stg:mt-0.5 stg:truncate stg:text-xs stg:text-muted-foreground">
|
|
99
92
|
Task: {approval.taskName}
|
|
100
93
|
{requestedAt && (
|
|
101
|
-
<> · {
|
|
94
|
+
<> · {formatRelativeTime(requestedAt)}</>
|
|
102
95
|
)}
|
|
103
96
|
</p>
|
|
104
97
|
</div>
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { memo, useCallback, useEffect, useRef
|
|
3
|
+
import { memo, useCallback, useEffect, useRef } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import type { WorkflowGraphModel } from "./workflow-graph-model.js";
|
|
6
6
|
import { taskToYaml } from "./inspector/task-to-yaml.js";
|
|
7
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
7
8
|
|
|
8
9
|
/** Props for {@link ViewYamlDialog}. */
|
|
9
10
|
export interface ViewYamlDialogProps {
|
|
@@ -32,7 +33,7 @@ export const ViewYamlDialog = memo(function ViewYamlDialog({
|
|
|
32
33
|
onClose,
|
|
33
34
|
}: ViewYamlDialogProps) {
|
|
34
35
|
const dialogRef = useRef<HTMLDialogElement>(null);
|
|
35
|
-
const
|
|
36
|
+
const { copy, copied } = useCopyFeedback();
|
|
36
37
|
|
|
37
38
|
const node = nodeId && graph
|
|
38
39
|
? graph.nodes.find((n) => n.id === nodeId) ?? null
|
|
@@ -58,25 +59,9 @@ export const ViewYamlDialog = memo(function ViewYamlDialog({
|
|
|
58
59
|
return () => dialog.removeEventListener("close", handleClose);
|
|
59
60
|
}, [onClose]);
|
|
60
61
|
|
|
61
|
-
const handleCopy = useCallback(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
setCopied(true);
|
|
65
|
-
setTimeout(() => setCopied(false), 2000);
|
|
66
|
-
} catch {
|
|
67
|
-
// Fallback for environments without clipboard API
|
|
68
|
-
const textarea = document.createElement("textarea");
|
|
69
|
-
textarea.value = yaml;
|
|
70
|
-
textarea.style.position = "fixed";
|
|
71
|
-
textarea.style.opacity = "0";
|
|
72
|
-
document.body.appendChild(textarea);
|
|
73
|
-
textarea.select();
|
|
74
|
-
document.execCommand("copy");
|
|
75
|
-
document.body.removeChild(textarea);
|
|
76
|
-
setCopied(true);
|
|
77
|
-
setTimeout(() => setCopied(false), 2000);
|
|
78
|
-
}
|
|
79
|
-
}, [yaml]);
|
|
62
|
+
const handleCopy = useCallback(() => {
|
|
63
|
+
void copy(yaml);
|
|
64
|
+
}, [copy, yaml]);
|
|
80
65
|
|
|
81
66
|
const handleBackdropClick = useCallback(
|
|
82
67
|
(e: React.MouseEvent<HTMLDialogElement>) => {
|
|
@@ -92,7 +77,7 @@ export const ViewYamlDialog = memo(function ViewYamlDialog({
|
|
|
92
77
|
ref={dialogRef}
|
|
93
78
|
className={cn(
|
|
94
79
|
"stgm stg:m-auto stg:max-h-[80vh] stg:w-full stg:max-w-lg stg:rounded-lg stg:border stg:border-[var(--stgm-border,#e5e5e5)] stg:bg-[var(--stgm-background,#fff)] stg:p-0 stg:shadow-xl",
|
|
95
|
-
"stg:backdrop:bg-
|
|
80
|
+
"stg:backdrop:bg-backdrop",
|
|
96
81
|
)}
|
|
97
82
|
onClick={handleBackdropClick}
|
|
98
83
|
aria-label={node ? `YAML for ${node.taskName}` : "View YAML"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import {
|
|
6
6
|
useWorkflowArchitectFlow,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from "./useWorkflowArchitectFlow.js";
|
|
9
9
|
import { MessageThread } from "../execution/MessageThread.js";
|
|
10
10
|
import { WorkflowDiffGraph } from "./WorkflowDiffGraph.js";
|
|
11
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
11
12
|
|
|
12
13
|
/** Props for {@link WorkflowArchitectDialog}. */
|
|
13
14
|
export interface WorkflowArchitectDialogProps {
|
|
@@ -119,7 +120,7 @@ export function WorkflowArchitectDialog({
|
|
|
119
120
|
onClick={handleBackdropClick}
|
|
120
121
|
className={cn(
|
|
121
122
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-3xl stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
122
|
-
"stg:backdrop:bg-
|
|
123
|
+
"stg:backdrop:bg-backdrop",
|
|
123
124
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
124
125
|
)}
|
|
125
126
|
>
|
|
@@ -176,6 +177,7 @@ function InputPhase({
|
|
|
176
177
|
readonly flow: ReturnType<typeof useWorkflowArchitectFlow>;
|
|
177
178
|
readonly onClose: () => void;
|
|
178
179
|
}) {
|
|
180
|
+
const promptId = useId();
|
|
179
181
|
return (
|
|
180
182
|
<>
|
|
181
183
|
<div className="stg:border-b stg:border-border stg:px-6 stg:py-4">
|
|
@@ -200,7 +202,7 @@ function InputPhase({
|
|
|
200
202
|
|
|
201
203
|
<div className="stg:flex stg:flex-col stg:gap-1">
|
|
202
204
|
<label
|
|
203
|
-
htmlFor=
|
|
205
|
+
htmlFor={promptId}
|
|
204
206
|
className="stg:text-xs stg:font-medium stg:text-foreground"
|
|
205
207
|
>
|
|
206
208
|
Description
|
|
@@ -209,7 +211,7 @@ function InputPhase({
|
|
|
209
211
|
</span>
|
|
210
212
|
</label>
|
|
211
213
|
<textarea
|
|
212
|
-
id=
|
|
214
|
+
id={promptId}
|
|
213
215
|
value={flow.prompt}
|
|
214
216
|
onChange={(e) => flow.setPrompt(e.target.value)}
|
|
215
217
|
placeholder="e.g., A workflow that enriches customer data using my data-agent, validates the output, and sends a Slack notification on failure"
|
|
@@ -279,7 +281,7 @@ function StreamingPhase({
|
|
|
279
281
|
Workflow Architect
|
|
280
282
|
</h3>
|
|
281
283
|
<span className="stg:inline-flex stg:items-center stg:gap-1.5 stg:text-xs stg:text-muted-foreground">
|
|
282
|
-
<SpinnerIcon />
|
|
284
|
+
<SpinnerIcon size={14} />
|
|
283
285
|
{flow.phase === "starting" ? "Starting…" : "Working…"}
|
|
284
286
|
</span>
|
|
285
287
|
</div>
|
|
@@ -436,7 +438,7 @@ function ResultPhase({
|
|
|
436
438
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
437
439
|
)}
|
|
438
440
|
>
|
|
439
|
-
{isApplying && <SpinnerIcon />}
|
|
441
|
+
{isApplying && <SpinnerIcon size={14} />}
|
|
440
442
|
{isApplying ? "Creating…" : "Create Workflow"}
|
|
441
443
|
</button>
|
|
442
444
|
</div>
|
|
@@ -502,24 +504,3 @@ function ErrorPhase({
|
|
|
502
504
|
);
|
|
503
505
|
}
|
|
504
506
|
|
|
505
|
-
// ---------------------------------------------------------------------------
|
|
506
|
-
// Shared components
|
|
507
|
-
// ---------------------------------------------------------------------------
|
|
508
|
-
|
|
509
|
-
function SpinnerIcon({ size = 14 }: { readonly size?: number }) {
|
|
510
|
-
return (
|
|
511
|
-
<svg
|
|
512
|
-
width={size}
|
|
513
|
-
height={size}
|
|
514
|
-
viewBox="0 0 16 16"
|
|
515
|
-
fill="none"
|
|
516
|
-
stroke="currentColor"
|
|
517
|
-
strokeWidth="2"
|
|
518
|
-
strokeLinecap="round"
|
|
519
|
-
className="stg:animate-spin"
|
|
520
|
-
aria-hidden="true"
|
|
521
|
-
>
|
|
522
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
523
|
-
</svg>
|
|
524
|
-
);
|
|
525
|
-
}
|
|
@@ -3,16 +3,15 @@
|
|
|
3
3
|
// Editor-area document rendering one workflow Artifact resource's content.
|
|
4
4
|
// Domain: workflow (the Artifact-resource counterpart of execution/ArtifactDocument).
|
|
5
5
|
|
|
6
|
-
import { useCallback
|
|
6
|
+
import { useCallback } from "react";
|
|
7
7
|
import type { Artifact } from "@stigmer/protos/ai/stigmer/agentic/artifact/v1/api_pb";
|
|
8
8
|
import { cn } from "@stigmer/theme";
|
|
9
9
|
import { ArtifactFileContent } from "../execution/ArtifactFileContent.js";
|
|
10
10
|
import { formatArtifactSize } from "../execution/artifact-utils.js";
|
|
11
11
|
import { useArtifactContentById } from "../execution/useArtifactContentById.js";
|
|
12
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
12
13
|
import { useWorkflowArtifactDownload } from "./useWorkflowArtifactDownload.js";
|
|
13
14
|
|
|
14
|
-
const COPIED_FEEDBACK_MS = 2000;
|
|
15
|
-
|
|
16
15
|
/** Props for {@link WorkflowArtifactDocument}. */
|
|
17
16
|
export interface WorkflowArtifactDocumentProps {
|
|
18
17
|
/** The workflow artifact to render. */
|
|
@@ -78,14 +77,11 @@ export function WorkflowArtifactDocument({
|
|
|
78
77
|
|
|
79
78
|
const { download, isDownloading } = useWorkflowArtifactDownload();
|
|
80
79
|
|
|
81
|
-
const
|
|
80
|
+
const { copy: copyToClipboard, copied } = useCopyFeedback();
|
|
82
81
|
const copy = useCallback(() => {
|
|
83
82
|
if (!content) return;
|
|
84
|
-
void
|
|
85
|
-
|
|
86
|
-
setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
|
|
87
|
-
});
|
|
88
|
-
}, [content]);
|
|
83
|
+
void copyToClipboard(content);
|
|
84
|
+
}, [content, copyToClipboard]);
|
|
89
85
|
|
|
90
86
|
const showCopy = content !== null;
|
|
91
87
|
|
|
@@ -87,7 +87,7 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
87
87
|
layoutEngine,
|
|
88
88
|
}: WorkflowCanvasEditorProps) {
|
|
89
89
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
90
|
-
const canvas = useWorkflowCanvas(yaml,
|
|
90
|
+
const canvas = useWorkflowCanvas(yaml, { layoutEngine: layoutEngine ?? undefined });
|
|
91
91
|
const [paletteCollapsed, setPaletteCollapsed] = useState(false);
|
|
92
92
|
const togglePalette = useCallback(() => setPaletteCollapsed((p) => !p), []);
|
|
93
93
|
|
|
@@ -161,8 +161,35 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
161
161
|
copySelection: canvas.copySelection,
|
|
162
162
|
pasteAtCenter: canvas.pasteAtCenter,
|
|
163
163
|
cutSelection: canvas.cutSelection,
|
|
164
|
+
undo: canvas.undo,
|
|
165
|
+
redo: canvas.redo,
|
|
164
166
|
});
|
|
165
167
|
|
|
168
|
+
// All canvas shortcuts are gated on focus being inside the container,
|
|
169
|
+
// but React Flow's pane prevents default on mousedown, so pane clicks
|
|
170
|
+
// never move focus into it on their own — without this, Cmd+Z (etc.)
|
|
171
|
+
// after a pane interaction silently does nothing (oss#588). Focusing
|
|
172
|
+
// unconditionally also commits-and-blurs an inspector field when the
|
|
173
|
+
// user clicks back into the canvas. Scoped to the canvas column so
|
|
174
|
+
// palette and inspector clicks keep their native focus flow; when the
|
|
175
|
+
// press lands on a real focusable (node, toolbar button, picker
|
|
176
|
+
// input), the default mousedown focus takes over right after.
|
|
177
|
+
const handleCanvasPointerDownCapture = useCallback(() => {
|
|
178
|
+
containerRef.current?.focus({ preventScroll: true });
|
|
179
|
+
}, []);
|
|
180
|
+
|
|
181
|
+
// Deleting the focused node drops DOM focus to <body> when React Flow
|
|
182
|
+
// unmounts the element, disarming every canvas shortcut at exactly the
|
|
183
|
+
// moment the user reaches for Cmd+Z (oss#588). Return focus to the
|
|
184
|
+
// container after any node deletion so undo stays reachable.
|
|
185
|
+
const handleNodesDelete = useCallback(
|
|
186
|
+
(deleted: Parameters<typeof canvas.onNodesDelete>[0]) => {
|
|
187
|
+
canvas.onNodesDelete(deleted);
|
|
188
|
+
containerRef.current?.focus({ preventScroll: true });
|
|
189
|
+
},
|
|
190
|
+
[canvas.onNodesDelete],
|
|
191
|
+
);
|
|
192
|
+
|
|
166
193
|
useEffect(() => {
|
|
167
194
|
onDirtyChange?.(canvas.isDirty);
|
|
168
195
|
}, [canvas.isDirty, onDirtyChange]);
|
|
@@ -239,10 +266,10 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
239
266
|
|
|
240
267
|
const handleContextMenuDeleteNode = useCallback(
|
|
241
268
|
(nodeId: string) => {
|
|
242
|
-
|
|
269
|
+
handleNodesDelete([{ id: nodeId } as import("@xyflow/react").Node]);
|
|
243
270
|
setContextMenu(null);
|
|
244
271
|
},
|
|
245
|
-
[
|
|
272
|
+
[handleNodesDelete],
|
|
246
273
|
);
|
|
247
274
|
|
|
248
275
|
const handleContextMenuDuplicateNode = useCallback(
|
|
@@ -371,6 +398,9 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
371
398
|
const handleContextMenuDeleteSelection = useCallback(() => {
|
|
372
399
|
canvas.deleteSelection();
|
|
373
400
|
setContextMenu(null);
|
|
401
|
+
// Same focus restoration as handleNodesDelete — the selection may
|
|
402
|
+
// include the focused node element.
|
|
403
|
+
containerRef.current?.focus({ preventScroll: true });
|
|
374
404
|
}, [canvas.deleteSelection]);
|
|
375
405
|
|
|
376
406
|
const handleSelectionContextMenu = useCallback(
|
|
@@ -475,9 +505,9 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
475
505
|
|
|
476
506
|
const handleDeleteNode = useCallback(
|
|
477
507
|
(nodeId: string) => {
|
|
478
|
-
|
|
508
|
+
handleNodesDelete([{ id: nodeId } as import("@xyflow/react").Node]);
|
|
479
509
|
},
|
|
480
|
-
[
|
|
510
|
+
[handleNodesDelete],
|
|
481
511
|
);
|
|
482
512
|
|
|
483
513
|
const handleDuplicateNode = useCallback(
|
|
@@ -580,7 +610,7 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
580
610
|
|
|
581
611
|
{showPalette && !paletteCollapsed && <WorkflowTaskPalette />}
|
|
582
612
|
|
|
583
|
-
<div className="stg:relative stg:flex-1">
|
|
613
|
+
<div className="stg:relative stg:flex-1" onPointerDownCapture={handleCanvasPointerDownCapture}>
|
|
584
614
|
{showPalette && (
|
|
585
615
|
<PaletteToggle
|
|
586
616
|
collapsed={paletteCollapsed}
|
|
@@ -606,6 +636,8 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
606
636
|
edges={canvas.edges}
|
|
607
637
|
onNodesChange={canvas.onNodesChange}
|
|
608
638
|
onEdgesChange={canvas.onEdgesChange}
|
|
639
|
+
onNodeDragStart={canvas.onNodeDragStart}
|
|
640
|
+
onNodeDragStop={canvas.onNodeDragStop}
|
|
609
641
|
onNodeClick={handleNodeClick}
|
|
610
642
|
onEdgeClick={handleEdgeClick}
|
|
611
643
|
onPaneClick={handlePaneClick}
|
|
@@ -613,7 +645,7 @@ const WorkflowCanvasEditorInner = memo(function WorkflowCanvasEditorInner({
|
|
|
613
645
|
isValidConnection={canvas.isValidConnection}
|
|
614
646
|
onDrop={canvas.onDrop}
|
|
615
647
|
onDragOver={canvas.onDragOver}
|
|
616
|
-
onNodesDelete={
|
|
648
|
+
onNodesDelete={handleNodesDelete}
|
|
617
649
|
onEdgesDelete={canvas.onEdgesDelete}
|
|
618
650
|
onNodeContextMenu={handleNodeContextMenu}
|
|
619
651
|
onEdgeContextMenu={handleEdgeContextMenu}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useMemo } from "react";
|
|
3
|
+
import { useId, useMemo } from "react";
|
|
4
4
|
import {
|
|
5
5
|
ReactFlow,
|
|
6
6
|
Controls,
|
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
Edge,
|
|
16
16
|
OnNodesChange,
|
|
17
17
|
OnEdgesChange,
|
|
18
|
+
OnNodeDrag,
|
|
18
19
|
OnConnect,
|
|
19
20
|
IsValidConnection,
|
|
20
21
|
} from "@xyflow/react";
|
|
@@ -29,6 +30,8 @@ interface WorkflowCanvasInnerProps {
|
|
|
29
30
|
edges: Edge[];
|
|
30
31
|
onNodesChange: OnNodesChange;
|
|
31
32
|
onEdgesChange: OnEdgesChange;
|
|
33
|
+
onNodeDragStart: OnNodeDrag;
|
|
34
|
+
onNodeDragStop: OnNodeDrag;
|
|
32
35
|
onNodeClick: (event: React.MouseEvent, node: Node) => void;
|
|
33
36
|
onEdgeClick: (event: React.MouseEvent, edge: Edge) => void;
|
|
34
37
|
onPaneClick: () => void;
|
|
@@ -72,6 +75,8 @@ export function WorkflowCanvasInner({
|
|
|
72
75
|
edges,
|
|
73
76
|
onNodesChange,
|
|
74
77
|
onEdgesChange,
|
|
78
|
+
onNodeDragStart,
|
|
79
|
+
onNodeDragStop,
|
|
75
80
|
onNodeClick,
|
|
76
81
|
onEdgeClick,
|
|
77
82
|
onPaneClick,
|
|
@@ -87,6 +92,11 @@ export function WorkflowCanvasInner({
|
|
|
87
92
|
onSelectionContextMenu,
|
|
88
93
|
nodeErrors,
|
|
89
94
|
}: WorkflowCanvasInnerProps) {
|
|
95
|
+
// Instance-scoped React Flow id (oss#593): React Flow derives its internal
|
|
96
|
+
// DOM ids (aria descriptions, SVG marker/pattern defs) from this id, so two
|
|
97
|
+
// mounted graphs without explicit ids collide.
|
|
98
|
+
const flowId = useId();
|
|
99
|
+
|
|
90
100
|
const enrichedNodes = useMemo(() => {
|
|
91
101
|
if (!nodeErrors || nodeErrors.size === 0) return nodes;
|
|
92
102
|
return nodes.map((node) => {
|
|
@@ -109,10 +119,13 @@ export function WorkflowCanvasInner({
|
|
|
109
119
|
|
|
110
120
|
return (
|
|
111
121
|
<ReactFlow
|
|
122
|
+
id={flowId}
|
|
112
123
|
nodes={enrichedNodes}
|
|
113
124
|
edges={edges}
|
|
114
125
|
onNodesChange={onNodesChange}
|
|
115
126
|
onEdgesChange={onEdgesChange}
|
|
127
|
+
onNodeDragStart={onNodeDragStart}
|
|
128
|
+
onNodeDragStop={onNodeDragStop}
|
|
116
129
|
onNodeClick={onNodeClick}
|
|
117
130
|
onEdgeClick={onEdgeClick}
|
|
118
131
|
onPaneClick={onPaneClick}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { memo, useCallback, useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { memo, useCallback, useEffect, useId, useMemo, useRef } from "react";
|
|
4
4
|
import {
|
|
5
5
|
ReactFlow,
|
|
6
6
|
Controls,
|
|
@@ -73,6 +73,11 @@ function WorkflowDiffGraphInner({
|
|
|
73
73
|
onTaskClick,
|
|
74
74
|
className,
|
|
75
75
|
}: WorkflowDiffGraphProps) {
|
|
76
|
+
// Instance-scoped React Flow id (oss#593): React Flow derives its internal
|
|
77
|
+
// DOM ids (aria descriptions, SVG marker/pattern defs) from this id, so two
|
|
78
|
+
// mounted graphs without explicit ids collide.
|
|
79
|
+
const flowId = useId();
|
|
80
|
+
|
|
76
81
|
const {
|
|
77
82
|
nodes,
|
|
78
83
|
edges,
|
|
@@ -146,6 +151,7 @@ function WorkflowDiffGraphInner({
|
|
|
146
151
|
</div>
|
|
147
152
|
)}
|
|
148
153
|
<ReactFlow
|
|
154
|
+
id={flowId}
|
|
149
155
|
nodes={nodesWithSelection}
|
|
150
156
|
edges={edges}
|
|
151
157
|
nodeTypes={nodeTypes}
|
|
@@ -152,6 +152,7 @@ function WorkflowExecutionGraphInner({
|
|
|
152
152
|
const [didInitialFit, setDidInitialFit] = useState(false);
|
|
153
153
|
const isInitializedRef = useRef(false);
|
|
154
154
|
const didFitGuardRef = useRef(false);
|
|
155
|
+
const containerRef = useRef<HTMLDivElement | null>(null);
|
|
155
156
|
|
|
156
157
|
// ── Ephemeral drag positions ───────────────────────────────────────
|
|
157
158
|
// Resets when the execution changes (navigating to a different run).
|
|
@@ -188,6 +189,14 @@ function WorkflowExecutionGraphInner({
|
|
|
188
189
|
|
|
189
190
|
const performInitialFit = useCallback(() => {
|
|
190
191
|
if (didFitGuardRef.current) return;
|
|
192
|
+
// A CSS-hidden mount (the execution viewer keeps BOTH center views
|
|
193
|
+
// mounted with the inactive one `display:none`) measures 0×0 —
|
|
194
|
+
// `fitView` against that computes a degenerate transform that never
|
|
195
|
+
// self-corrects, so the first toggle to Graph would show an
|
|
196
|
+
// apparently empty canvas (oss#571). Defer: the ResizeObserver below
|
|
197
|
+
// re-attempts on the hidden→visible transition.
|
|
198
|
+
const el = containerRef.current;
|
|
199
|
+
if (!el || el.offsetWidth === 0 || el.offsetHeight === 0) return;
|
|
191
200
|
didFitGuardRef.current = true;
|
|
192
201
|
fitView({ padding: 0.15, duration: getAnimationDuration(300) });
|
|
193
202
|
setDidInitialFit(true);
|
|
@@ -209,6 +218,22 @@ function WorkflowExecutionGraphInner({
|
|
|
209
218
|
}
|
|
210
219
|
}, [nodes.length, performInitialFit]);
|
|
211
220
|
|
|
221
|
+
// The deferred-fit path for hidden mounts: when the container gains
|
|
222
|
+
// real dimensions (first reveal, or a late layout pass), run the
|
|
223
|
+
// pending initial fit. One-shot — `performInitialFit` self-guards, so
|
|
224
|
+
// user pan/zoom is never overridden by later resizes.
|
|
225
|
+
useEffect(() => {
|
|
226
|
+
const el = containerRef.current;
|
|
227
|
+
if (!el || typeof ResizeObserver === "undefined") return;
|
|
228
|
+
const observer = new ResizeObserver(() => {
|
|
229
|
+
if (isInitializedRef.current && nodes.length > 0) {
|
|
230
|
+
performInitialFit();
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
observer.observe(el);
|
|
234
|
+
return () => observer.disconnect();
|
|
235
|
+
}, [nodes.length, performInitialFit]);
|
|
236
|
+
|
|
212
237
|
// Derive active task name stably from taskStates (not from nodes array — DD-010)
|
|
213
238
|
const activeTaskInfo = useActiveTaskName(taskStates);
|
|
214
239
|
const isTerminal = executionPhase != null && TERMINAL_EXECUTION_PHASES.has(executionPhase);
|
|
@@ -276,7 +301,7 @@ function WorkflowExecutionGraphInner({
|
|
|
276
301
|
|
|
277
302
|
return (
|
|
278
303
|
<WorkflowGraphModeProvider mode="execution">
|
|
279
|
-
<div className={cn("stg:relative stg:h-full stg:w-full", className)}>
|
|
304
|
+
<div ref={containerRef} className={cn("stg:relative stg:h-full stg:w-full", className)}>
|
|
280
305
|
{versionMismatch && (
|
|
281
306
|
<div className="stg:absolute stg:left-3 stg:right-3 stg:top-3 stg:z-50 stg:rounded-md stg:border stg:border-[var(--stgm-warning,#f59e0b)]/30 stg:bg-[var(--stgm-warning,#f59e0b)]/5 stg:px-3 stg:py-2 stg:text-xs stg:text-[var(--stgm-foreground,#1a1a2e)]">
|
|
282
307
|
{versionMismatch}
|