@stigmer/react 3.12.1 → 3.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/access/ManageAccessDialog.d.ts.map +1 -1
- package/access/ManageAccessDialog.js +8 -19
- package/access/ManageAccessDialog.js.map +1 -1
- package/activity/format-relative-time.d.ts +11 -9
- package/activity/format-relative-time.d.ts.map +1 -1
- package/activity/format-relative-time.js +11 -9
- package/activity/format-relative-time.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +5 -2
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +6 -5
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +15 -20
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +12 -20
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +3 -23
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +6 -10
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/approval-defaults-context.d.ts +47 -0
- package/approval-defaults-context.d.ts.map +1 -0
- package/approval-defaults-context.js +27 -0
- package/approval-defaults-context.js.map +1 -0
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
- package/attachment/AttachmentImageLightbox.js +8 -23
- package/attachment/AttachmentImageLightbox.js.map +1 -1
- package/attachment/index.d.ts +2 -0
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +1 -0
- package/attachment/index.js.map +1 -1
- package/attachment/vision-preflight.d.ts +113 -0
- package/attachment/vision-preflight.d.ts.map +1 -0
- package/attachment/vision-preflight.js +143 -0
- package/attachment/vision-preflight.js.map +1 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +3 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +3 -2
- package/billing/BillingSection.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +6 -21
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +10 -21
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +7 -22
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +10 -23
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +10 -23
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/useChannelSessions.d.ts.map +1 -1
- package/channel/useChannelSessions.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +8 -5
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +12 -7
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.d.ts +0 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +5 -10
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +2 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +120 -13
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.d.ts +0 -1
- package/composer/icons.d.ts.map +1 -1
- package/composer/icons.js +0 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationAttentionBanner.d.ts +23 -6
- package/conversation/ConversationAttentionBanner.d.ts.map +1 -1
- package/conversation/ConversationAttentionBanner.js +25 -10
- package/conversation/ConversationAttentionBanner.js.map +1 -1
- package/conversation/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +28 -8
- package/conversation/ConversationListPane.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +1 -1
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +3 -14
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -14
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/environment/CreateEnvironmentForm.d.ts.map +1 -1
- package/environment/CreateEnvironmentForm.js +4 -8
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.d.ts.map +1 -1
- package/environment/EnvVarForm.js +2 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +5 -7
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +13 -3
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +11 -17
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ExecutionErrorNotice.d.ts +36 -0
- package/execution/ExecutionErrorNotice.d.ts.map +1 -0
- package/execution/ExecutionErrorNotice.js +39 -0
- package/execution/ExecutionErrorNotice.js.map +1 -0
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +5 -8
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +1 -6
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FollowUpInput.d.ts.map +1 -1
- package/execution/FollowUpInput.js +1 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/LivenessStatusLine.d.ts +40 -0
- package/execution/LivenessStatusLine.d.ts.map +1 -0
- package/execution/LivenessStatusLine.js +34 -0
- package/execution/LivenessStatusLine.js.map +1 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +31 -3
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +25 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -36
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +1 -1
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +9 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/TerminalSession.d.ts +30 -0
- package/execution/TerminalSession.d.ts.map +1 -1
- package/execution/TerminalSession.js +37 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +9 -0
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +16 -0
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts +23 -7
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +120 -35
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.d.ts.map +1 -1
- package/execution/ToolRunGroup.js +11 -11
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +5 -20
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/index.d.ts +7 -3
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +4 -2
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +93 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +141 -5
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +32 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +10 -2
- package/execution/tool-presenter.js.map +1 -1
- package/execution/useArtifactInspection.d.ts.map +1 -1
- package/execution/useArtifactInspection.js +4 -7
- package/execution/useArtifactInspection.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -4
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +3 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +7 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -9
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +17 -26
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -4
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +8 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +5 -6
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +1 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/DialogShell.d.ts +77 -0
- package/internal/DialogShell.d.ts.map +1 -0
- package/internal/DialogShell.js +77 -0
- package/internal/DialogShell.js.map +1 -0
- package/internal/SpinnerIcon.d.ts +22 -0
- package/internal/SpinnerIcon.d.ts.map +1 -0
- package/internal/SpinnerIcon.js +23 -0
- package/internal/SpinnerIcon.js.map +1 -0
- package/internal/select-element-text.d.ts +11 -0
- package/internal/select-element-text.d.ts.map +1 -0
- package/internal/select-element-text.js +19 -0
- package/internal/select-element-text.js.map +1 -0
- package/internal/thread-card/ThreadCardShell.d.ts +27 -10
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +11 -5
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.d.ts +11 -2
- package/internal/thread-card/glyphs.d.ts.map +1 -1
- package/internal/thread-card/glyphs.js +9 -3
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/thread-card/index.d.ts +1 -1
- package/internal/thread-card/index.d.ts.map +1 -1
- package/internal/thread-card/index.js.map +1 -1
- package/internal/useCopyFeedback.d.ts +28 -0
- package/internal/useCopyFeedback.d.ts.map +1 -0
- package/internal/useCopyFeedback.js +40 -0
- package/internal/useCopyFeedback.js.map +1 -0
- package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
- package/invitation/InvitationCreatedAlert.js +12 -19
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +14 -21
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +2 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +16 -27
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.d.ts.map +1 -1
- package/manifest/ApplyManifestDialog.js +7 -17
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/manifest/EditResourceYamlDialog.d.ts.map +1 -1
- package/manifest/EditResourceYamlDialog.js +3 -19
- package/manifest/EditResourceYamlDialog.js.map +1 -1
- package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
- package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
- package/mcp-server/DefinitionDriftNotice.js +52 -0
- package/mcp-server/DefinitionDriftNotice.js.map +1 -0
- package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +8 -20
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +50 -28
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/OAuthAppForm.d.ts.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -4
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +39 -0
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
- package/mcp-server/internal/definitionDrift.js +122 -0
- package/mcp-server/internal/definitionDrift.js.map +1 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
- package/mcp-server/internal/mcpServerToInput.js +3 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +5 -4
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +1 -1
- package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
- package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
- package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
- package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
- package/models/ModelRegistryContext.d.ts +7 -1
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.js +9 -1
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +88 -6
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +133 -27
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +7 -1
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -5
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +5 -6
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.d.ts.map +1 -1
- package/organization/CreateOrganizationForm.js +5 -9
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +7 -16
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +5 -6
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +6 -7
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -4
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +18 -25
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +34 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +14 -7
- package/provider.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +2 -4
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/ConfirmDialog.d.ts +2 -3
- package/resource-detail/ConfirmDialog.d.ts.map +1 -1
- package/resource-detail/ConfirmDialog.js +8 -20
- package/resource-detail/ConfirmDialog.js.map +1 -1
- package/resource-detail/useCopyResource.d.ts +4 -3
- package/resource-detail/useCopyResource.d.ts.map +1 -1
- package/resource-detail/useCopyResource.js +10 -19
- package/resource-detail/useCopyResource.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -4
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +6 -7
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/NewSessionViewer.d.ts +52 -2
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +21 -6
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +63 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +43 -17
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +17 -0
- package/session/audience.d.ts.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/run-config.d.ts +50 -0
- package/session/run-config.d.ts.map +1 -0
- package/session/run-config.js +15 -0
- package/session/run-config.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +11 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +29 -2
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +7 -7
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +2 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +18 -4
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +33 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +37 -2
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +44 -10
- package/session/useSessionPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts.map +1 -1
- package/settings/ApiKeysSection.js +3 -2
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts.map +1 -1
- package/settings/ChannelAppsSection.js +3 -2
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +5 -3
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.d.ts.map +1 -1
- package/settings/IdentityProvidersSection.js +3 -2
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.d.ts.map +1 -1
- package/settings/InvitationsSection.js +3 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.d.ts.map +1 -1
- package/settings/MembersSection.js +3 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.d.ts.map +1 -1
- package/settings/OAuthAppsSection.js +3 -2
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.d.ts.map +1 -1
- package/settings/OrgProfileSection.js +3 -2
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +3 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +3 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +19 -26
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sidebar/chrome.d.ts +3 -4
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +5 -4
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDiffDialog.d.ts.map +1 -1
- package/skill/SkillDiffDialog.js +5 -21
- package/skill/SkillDiffDialog.js.map +1 -1
- package/src/access/ManageAccessDialog.tsx +14 -28
- package/src/activity/format-relative-time.ts +11 -9
- package/src/agent/steps/CapabilitiesStep.tsx +6 -3
- package/src/agent/steps/IdentityStep.tsx +19 -12
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +29 -33
- package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
- package/src/api-key/ApiKeyListPanel.tsx +3 -39
- package/src/api-key/CreateApiKeyForm.tsx +12 -26
- package/src/approval-defaults-context.ts +56 -0
- package/src/attachment/AttachmentImageLightbox.tsx +13 -36
- package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
- package/src/attachment/index.ts +12 -0
- package/src/attachment/vision-preflight.ts +236 -0
- package/src/billing/AutoRechargeCard.tsx +5 -4
- package/src/billing/BillingSection.tsx +4 -3
- package/src/channel/ChannelConversationsDialog.tsx +14 -29
- package/src/channel/ChannelCredentialsDialog.tsx +19 -29
- package/src/channel/ChannelTemplatesDialog.tsx +16 -31
- package/src/channel/ConnectSlackDialog.tsx +19 -31
- package/src/channel/ConnectWhatsAppDialog.tsx +19 -31
- package/src/channel/useChannelSessions.ts +3 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
- package/src/channel-app/CreateChannelAppForm.tsx +17 -12
- package/src/channel-app/internal.tsx +5 -25
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +160 -13
- package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
- package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
- package/src/composer/icons.tsx +0 -18
- package/src/conversation/ConversationAttentionBanner.tsx +64 -19
- package/src/conversation/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +46 -20
- package/src/conversation/ConversationsWorkbench.tsx +1 -0
- package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +76 -2
- package/src/conversation/__tests__/ConversationListPane.test.tsx +15 -4
- package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
- package/src/dashboard/DashboardFailedRuns.tsx +2 -12
- package/src/environment/CreateEnvironmentForm.tsx +8 -27
- package/src/environment/EnvVarForm.tsx +2 -18
- package/src/environment/EnvironmentVariableEditor.tsx +5 -21
- package/src/execution/ApprovalCard.tsx +23 -2
- package/src/execution/ArtifactApplyButton.tsx +2 -17
- package/src/execution/ArtifactPreviewModal.tsx +15 -27
- package/src/execution/ExecutionErrorNotice.tsx +99 -0
- package/src/execution/FilePathLink.tsx +5 -9
- package/src/execution/FileReviewCard.tsx +1 -20
- package/src/execution/FollowUpInput.tsx +1 -16
- package/src/execution/LivenessStatusLine.tsx +59 -0
- package/src/execution/MessageEntry.tsx +136 -25
- package/src/execution/MessageThread.tsx +84 -83
- package/src/execution/SetupProgress.tsx +5 -1
- package/src/execution/SubAgentSection.tsx +9 -20
- package/src/execution/TerminalSession.tsx +97 -10
- package/src/execution/ToolCallDetail.tsx +19 -0
- package/src/execution/ToolCallItem.tsx +175 -44
- package/src/execution/ToolRunGroup.tsx +30 -32
- package/src/execution/WriteBackCard.tsx +5 -24
- package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
- package/src/execution/__tests__/MessageThread.test.tsx +97 -0
- package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
- package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
- package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
- package/src/execution/__tests__/intent-title.test.tsx +221 -0
- package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +11 -2
- package/src/execution/tool-categories.ts +195 -9
- package/src/execution/tool-presenter.ts +44 -2
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/iam-policy/GrantAccessForm.tsx +2 -18
- package/src/iam-policy/OrgMembersPanel.tsx +3 -19
- package/src/iam-policy/RoleSelector.tsx +8 -1
- package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
- package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
- package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
- package/src/index.ts +26 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/DialogShell.tsx +169 -0
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/DialogShell.test.tsx +223 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/select-element-text.ts +17 -0
- package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
- package/src/internal/thread-card/glyphs.tsx +24 -3
- package/src/internal/thread-card/index.ts +1 -0
- package/src/internal/useCopyFeedback.ts +61 -0
- package/src/invitation/InvitationCreatedAlert.tsx +10 -18
- package/src/invitation/InvitationManager.tsx +23 -34
- package/src/invitation/InvitationRedemption.tsx +2 -18
- package/src/library/useExportResource.ts +15 -29
- package/src/manifest/ApplyManifestDialog.tsx +8 -26
- package/src/manifest/EditResourceYamlDialog.tsx +4 -31
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +15 -29
- package/src/mcp-server/McpServerDetailView.tsx +69 -49
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
- package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
- package/src/mcp-server/internal/definitionDrift.ts +158 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
- package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
- package/src/mcp-server/useMcpServerConnect.ts +1 -1
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/models/ModelRegistryContext.ts +7 -1
- package/src/models/ModelSelector.tsx +37 -0
- package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
- package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
- package/src/models/index.ts +2 -2
- package/src/models/registry.ts +196 -29
- package/src/models/useModelRegistry.ts +10 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
- package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
- package/src/organization/CreateOrganizationForm.tsx +10 -29
- package/src/organization/OrgProfilePanel.tsx +13 -44
- package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
- package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
- package/src/platform-client/PlatformClientListPanel.tsx +2 -18
- package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
- package/src/provider.tsx +76 -33
- package/src/resource-creation/WizardNav.tsx +2 -18
- package/src/resource-detail/ConfirmDialog.tsx +9 -30
- package/src/resource-detail/useCopyResource.ts +17 -23
- package/src/schedule/ScheduleDetailView.tsx +2 -18
- package/src/schedule/ScheduleForm.tsx +19 -34
- package/src/session/NewSessionViewer.tsx +85 -7
- package/src/session/SessionViewer.tsx +120 -17
- package/src/session/__tests__/audienceWiring.test.tsx +76 -0
- package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
- package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
- package/src/session/__tests__/useSessionPanel.test.ts +114 -0
- package/src/session/audience.ts +18 -0
- package/src/session/index.ts +2 -1
- package/src/session/run-config.ts +59 -0
- package/src/session/useNewSessionFlow.ts +39 -2
- package/src/session/useSessionConversation.ts +10 -8
- package/src/session/useSessionPageFlow.ts +51 -10
- package/src/session/useSessionPanel.ts +91 -10
- package/src/settings/ApiKeysSection.tsx +4 -3
- package/src/settings/ChannelAppsSection.tsx +4 -3
- package/src/settings/EnvironmentsSection.tsx +8 -5
- package/src/settings/IdentityProvidersSection.tsx +4 -3
- package/src/settings/InvitationsSection.tsx +4 -2
- package/src/settings/MembersSection.tsx +4 -2
- package/src/settings/OAuthAppsSection.tsx +4 -3
- package/src/settings/OrgProfileSection.tsx +4 -3
- package/src/settings/PlatformClientsSection.tsx +4 -3
- package/src/settings/UsageSection.tsx +4 -2
- package/src/sharing/ShareAgentDialog.tsx +33 -37
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +13 -36
- package/src/styles.css +43 -0
- package/src/version-history/VersionTimelineEntry.tsx +1 -21
- package/src/workflow/FailedRunsWidget.tsx +2 -9
- package/src/workflow/PendingApprovalsWidget.tsx +2 -9
- package/src/workflow/ViewYamlDialog.tsx +21 -55
- package/src/workflow/WorkflowArchitectDialog.tsx +17 -68
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
- package/src/workflow/WorkflowExplainDialog.tsx +18 -60
- package/src/workflow/WorkflowGraphFullscreenDialog.tsx +14 -26
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
- package/src/workflow/WorkflowRefinePanel.tsx +2 -18
- package/src/workflow/WorkflowRepairCard.tsx +2 -18
- package/src/workflow/WorkflowRunDialog.tsx +23 -70
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
- package/src/workflow/WorkflowVersionBadge.tsx +4 -13
- package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
- package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -41
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +14 -27
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +18 -28
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useWorkflowCanvas.ts +114 -11
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +1 -23
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -11
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -11
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/ViewYamlDialog.d.ts.map +1 -1
- package/workflow/ViewYamlDialog.js +14 -49
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +10 -33
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +5 -8
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +1 -1
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.d.ts +4 -2
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
- package/workflow/WorkflowCanvasInner.js +7 -3
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +6 -2
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +23 -6
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +10 -28
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.d.ts.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.js +11 -17
- package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +8 -2
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
- package/workflow/WorkflowRefinePanel.js +2 -4
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.d.ts.map +1 -1
- package/workflow/WorkflowRepairCard.js +2 -4
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +14 -35
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +2 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +4 -13
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +1 -26
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +14 -40
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/index.d.ts +1 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +7 -20
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
- package/workflow/picker/BranchAddPopover.js +3 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +10 -22
- package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useWorkflowCanvas.d.ts +5 -1
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +99 -13
- package/workflow/useWorkflowCanvas.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +46 -13
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
Edge,
|
|
8
8
|
OnNodesChange,
|
|
9
9
|
OnEdgesChange,
|
|
10
|
+
OnNodeDrag,
|
|
10
11
|
Connection,
|
|
11
12
|
IsValidConnection,
|
|
12
13
|
} from "@xyflow/react";
|
|
@@ -67,6 +68,20 @@ import type { LayoutEngine } from "./layout/index.js";
|
|
|
67
68
|
import { serializeSelection, pasteClipboard } from "./clipboard.js";
|
|
68
69
|
import type { ClipboardEntry } from "./clipboard.js";
|
|
69
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Serializes a graph model to canonical YAML, or `null` if serialization
|
|
73
|
+
* fails. graphToYaml is total on models produced by yamlToGraph (its sort is
|
|
74
|
+
* cycle-protected and unknown kinds fall back to `unknown_N`), so `null` is
|
|
75
|
+
* a defensive outcome, not an expected one.
|
|
76
|
+
*/
|
|
77
|
+
function serializeGraphOrNull(model: WorkflowGraphModel): string | null {
|
|
78
|
+
try {
|
|
79
|
+
return graphToYaml(model);
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
70
85
|
/** Selection state for the canvas inspector. */
|
|
71
86
|
export interface CanvasSelection {
|
|
72
87
|
readonly type: "node" | "edge";
|
|
@@ -90,6 +105,10 @@ export interface UseWorkflowCanvasReturn {
|
|
|
90
105
|
readonly edges: Edge[];
|
|
91
106
|
readonly onNodesChange: OnNodesChange;
|
|
92
107
|
readonly onEdgesChange: OnEdgesChange;
|
|
108
|
+
/** Marks the model snapshot an in-flight drag started from. */
|
|
109
|
+
readonly onNodeDragStart: OnNodeDrag;
|
|
110
|
+
/** Records a completed node drag into the command history (oss#602). */
|
|
111
|
+
readonly onNodeDragStop: OnNodeDrag;
|
|
93
112
|
readonly onConnect: (connection: Connection) => void;
|
|
94
113
|
readonly isValidConnection: IsValidConnection;
|
|
95
114
|
readonly onDrop: (event: React.DragEvent) => void;
|
|
@@ -175,6 +194,10 @@ export function useWorkflowCanvas(
|
|
|
175
194
|
const [error, setError] = useState<string | null>(null);
|
|
176
195
|
const [selection, setSelection] = useState<CanvasSelection | null>(null);
|
|
177
196
|
const initialModelRef = useRef<WorkflowGraphModel | null>(null);
|
|
197
|
+
// Serialized form of the baseline model, kept in lockstep with
|
|
198
|
+
// initialModelRef. Dirty tracking compares serializations, not references —
|
|
199
|
+
// see the "Dirty tracking" section below for why.
|
|
200
|
+
const initialYamlRef = useRef<string | null>(null);
|
|
178
201
|
|
|
179
202
|
const [nodes, setNodes, onNodesChangeRaw] = useNodesState([] as Node[]);
|
|
180
203
|
const [edges, setEdges, onEdgesChangeRaw] = useEdgesState([] as Edge[]);
|
|
@@ -201,6 +224,7 @@ export function useWorkflowCanvas(
|
|
|
201
224
|
setNodes([]);
|
|
202
225
|
setEdges([]);
|
|
203
226
|
initialModelRef.current = null;
|
|
227
|
+
initialYamlRef.current = null;
|
|
204
228
|
return;
|
|
205
229
|
}
|
|
206
230
|
|
|
@@ -209,6 +233,10 @@ export function useWorkflowCanvas(
|
|
|
209
233
|
const laidOut = applyDagreLayout(parsed);
|
|
210
234
|
history.reset(laidOut);
|
|
211
235
|
initialModelRef.current = laidOut;
|
|
236
|
+
// Baseline is the canonical re-serialization, not the incoming string:
|
|
237
|
+
// dirty comparisons must be canonical-vs-canonical, immune to cosmetic
|
|
238
|
+
// formatting differences in host-provided YAML.
|
|
239
|
+
initialYamlRef.current = serializeGraphOrNull(laidOut);
|
|
212
240
|
setError(null);
|
|
213
241
|
|
|
214
242
|
const elements = toReactFlowElements(laidOut);
|
|
@@ -219,6 +247,7 @@ export function useWorkflowCanvas(
|
|
|
219
247
|
setNodes([]);
|
|
220
248
|
setEdges([]);
|
|
221
249
|
initialModelRef.current = null;
|
|
250
|
+
initialYamlRef.current = null;
|
|
222
251
|
}
|
|
223
252
|
}, [yaml]);
|
|
224
253
|
|
|
@@ -252,6 +281,63 @@ export function useWorkflowCanvas(
|
|
|
252
281
|
[onNodesChangeRaw],
|
|
253
282
|
);
|
|
254
283
|
|
|
284
|
+
// During a drag, React Flow streams position changes into RF state only
|
|
285
|
+
// (via onNodesChange above); the model still holds the pre-drag
|
|
286
|
+
// positions. At drag stop, the completed gesture is recorded as ONE
|
|
287
|
+
// MoveNodesCommand — the auto-layout precedent — so drags survive
|
|
288
|
+
// later syncFromModel calls and are undoable (oss#602).
|
|
289
|
+
//
|
|
290
|
+
// The ref detects mid-drag model mutations: the keyboard undo listener
|
|
291
|
+
// and the host's YAML prop are both reachable while the mouse is down,
|
|
292
|
+
// and either one rebuilds the canvas from a model this drag never saw —
|
|
293
|
+
// recording the drag on top of that would fight the mutation.
|
|
294
|
+
const dragStartModelRef = useRef<WorkflowGraphModel | null>(null);
|
|
295
|
+
|
|
296
|
+
const onNodeDragStart: OnNodeDrag = useCallback(() => {
|
|
297
|
+
dragStartModelRef.current = history.currentModel;
|
|
298
|
+
}, [history.currentModel]);
|
|
299
|
+
|
|
300
|
+
const onNodeDragStop: OnNodeDrag = useCallback(
|
|
301
|
+
(_event, _node, draggedNodes) => {
|
|
302
|
+
const model = history.currentModel;
|
|
303
|
+
const startModel = dragStartModelRef.current;
|
|
304
|
+
dragStartModelRef.current = null;
|
|
305
|
+
if (!startModel || model !== startModel) return;
|
|
306
|
+
|
|
307
|
+
const oldPositions: { id: string; x: number; y: number }[] = [];
|
|
308
|
+
const newPositions: { id: string; x: number; y: number }[] = [];
|
|
309
|
+
for (const dragged of draggedNodes) {
|
|
310
|
+
const modelNode = model.nodes.find((n) => n.id === dragged.id);
|
|
311
|
+
if (!modelNode) continue;
|
|
312
|
+
oldPositions.push({
|
|
313
|
+
id: modelNode.id,
|
|
314
|
+
x: modelNode.position.x,
|
|
315
|
+
y: modelNode.position.y,
|
|
316
|
+
});
|
|
317
|
+
newPositions.push({
|
|
318
|
+
id: dragged.id,
|
|
319
|
+
x: dragged.position.x,
|
|
320
|
+
y: dragged.position.y,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const hasChanges = newPositions.some((np, i) => {
|
|
325
|
+
const op = oldPositions[i];
|
|
326
|
+
return Math.abs(op.x - np.x) > 0.5 || Math.abs(op.y - np.y) > 0.5;
|
|
327
|
+
});
|
|
328
|
+
if (!hasChanges) return;
|
|
329
|
+
|
|
330
|
+
// Record-only dispatch — deliberately NOT the syncing dispatch().
|
|
331
|
+
// React Flow already renders the dragged positions, so here the
|
|
332
|
+
// model catches up to the canvas (everywhere else the model leads
|
|
333
|
+
// and syncFromModel makes the canvas follow). Rebuilding the node
|
|
334
|
+
// array would be a visual no-op that wipes React Flow's `selected`
|
|
335
|
+
// flags at the end of every drag, breaking consecutive group drags.
|
|
336
|
+
history.dispatch(new MoveNodesCommand(oldPositions, newPositions));
|
|
337
|
+
},
|
|
338
|
+
[history.currentModel, history.dispatch],
|
|
339
|
+
);
|
|
340
|
+
|
|
255
341
|
const onEdgesChange: OnEdgesChange = useCallback(
|
|
256
342
|
(changes) => {
|
|
257
343
|
onEdgesChangeRaw(changes);
|
|
@@ -387,6 +473,7 @@ export function useWorkflowCanvas(
|
|
|
387
473
|
};
|
|
388
474
|
history.reset(bootstrapModel);
|
|
389
475
|
initialModelRef.current = bootstrapModel;
|
|
476
|
+
initialYamlRef.current = serializeGraphOrNull(bootstrapModel);
|
|
390
477
|
|
|
391
478
|
const autoEdge = {
|
|
392
479
|
id: generateEdgeId(),
|
|
@@ -1096,20 +1183,33 @@ export function useWorkflowCanvas(
|
|
|
1096
1183
|
}, [history.redo, syncFromModel]);
|
|
1097
1184
|
|
|
1098
1185
|
// ---------------------------------------------------------------------------
|
|
1099
|
-
// Dirty tracking:
|
|
1186
|
+
// Dirty tracking: serialization comparison (oss#609)
|
|
1187
|
+
//
|
|
1188
|
+
// Dirty means "saving would change the document". Node positions are not
|
|
1189
|
+
// part of the serialized YAML (dagre recomputes them on every load), so a
|
|
1190
|
+
// position-only edit session (drags, auto-layout) must NOT read as dirty:
|
|
1191
|
+
// its save would round-trip byte-identical YAML, and because hosts reset
|
|
1192
|
+
// the baseline by feeding saved YAML back through the `yaml` prop (whose
|
|
1193
|
+
// re-parse effect is string-change gated), a reference-based flag could
|
|
1194
|
+
// never clear afterwards — an armed Save button that saving cannot disarm.
|
|
1195
|
+
// graphToYaml is total on parsed models (cycle-protected sort, unknown-kind
|
|
1196
|
+
// fallback) and O(nodes+edges), cheap enough to compare per model change.
|
|
1100
1197
|
// ---------------------------------------------------------------------------
|
|
1101
1198
|
|
|
1102
1199
|
const graph = history.currentModel.nodes.length > 0 ? history.currentModel : null;
|
|
1103
|
-
const
|
|
1200
|
+
const currentYaml = useMemo(
|
|
1201
|
+
() => (graph ? serializeGraphOrNull(graph) : null),
|
|
1202
|
+
[graph],
|
|
1203
|
+
);
|
|
1204
|
+
// Reference comparison remains as the fallback for the defensive case where
|
|
1205
|
+
// serialization failed (null); failing dirty-side keeps Save reachable.
|
|
1206
|
+
const isDirty =
|
|
1207
|
+
initialModelRef.current !== null &&
|
|
1208
|
+
(currentYaml !== null && initialYamlRef.current !== null
|
|
1209
|
+
? currentYaml !== initialYamlRef.current
|
|
1210
|
+
: graph !== initialModelRef.current);
|
|
1104
1211
|
|
|
1105
|
-
const serializeToYaml = useCallback((): string | null =>
|
|
1106
|
-
if (!graph) return null;
|
|
1107
|
-
try {
|
|
1108
|
-
return graphToYaml(graph);
|
|
1109
|
-
} catch {
|
|
1110
|
-
return null;
|
|
1111
|
-
}
|
|
1112
|
-
}, [graph]);
|
|
1212
|
+
const serializeToYaml = useCallback((): string | null => currentYaml, [currentYaml]);
|
|
1113
1213
|
|
|
1114
1214
|
return useMemo(
|
|
1115
1215
|
() => ({
|
|
@@ -1117,6 +1217,8 @@ export function useWorkflowCanvas(
|
|
|
1117
1217
|
edges,
|
|
1118
1218
|
onNodesChange,
|
|
1119
1219
|
onEdgesChange,
|
|
1220
|
+
onNodeDragStart,
|
|
1221
|
+
onNodeDragStop,
|
|
1120
1222
|
onConnect,
|
|
1121
1223
|
isValidConnection,
|
|
1122
1224
|
onDrop,
|
|
@@ -1174,7 +1276,8 @@ export function useWorkflowCanvas(
|
|
|
1174
1276
|
getSelectedNodeIds,
|
|
1175
1277
|
}),
|
|
1176
1278
|
[
|
|
1177
|
-
nodes, edges, onNodesChange, onEdgesChange,
|
|
1279
|
+
nodes, edges, onNodesChange, onEdgesChange, onNodeDragStart,
|
|
1280
|
+
onNodeDragStop, onConnect,
|
|
1178
1281
|
isValidConnection, onDrop, onDragOver, onNodesDelete, onEdgesDelete,
|
|
1179
1282
|
selection, selectNode, selectEdge, clearSelection, autoLayout,
|
|
1180
1283
|
undo, redo, history.canUndo, history.canRedo, isDirty, graph, error,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// State + actions for the workflow execution viewer's WorkspaceSurface panel.
|
|
4
4
|
// Domain: workflow (the lean analog of session/useSessionPanel).
|
|
5
5
|
|
|
6
|
-
import { useCallback, useMemo, useState } from "react";
|
|
6
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
7
7
|
import type { Artifact } from "@stigmer/protos/ai/stigmer/agentic/artifact/v1/api_pb";
|
|
8
8
|
import type { FileChange } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
9
9
|
import {
|
|
@@ -50,7 +50,11 @@ export function workflowArtifactTabPath(artifact: Artifact): string {
|
|
|
50
50
|
export interface WorkflowExecutionPanelController {
|
|
51
51
|
/** The open-editor group store; subscribe with `useWorkspaceEditors`. */
|
|
52
52
|
readonly editorsStore: WorkspaceEditorsStore;
|
|
53
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Whether the panel is expanded or collapsed to the chip. In controlled
|
|
55
|
+
* mode ({@link UseWorkflowExecutionPanelOptions.open}) this mirrors the
|
|
56
|
+
* host's value.
|
|
57
|
+
*/
|
|
54
58
|
readonly isOpen: boolean;
|
|
55
59
|
/** The active rail view id (an injected facet — `"artifacts"` today). */
|
|
56
60
|
readonly view: string;
|
|
@@ -119,6 +123,38 @@ export interface UseWorkflowExecutionPanelOptions {
|
|
|
119
123
|
* @default "artifacts"
|
|
120
124
|
*/
|
|
121
125
|
readonly defaultView?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Controlled open state. When provided, the host owns whether the panel is
|
|
128
|
+
* expanded: internal open intents (the chip toggle, Diagnose, an
|
|
129
|
+
* artifact/file-change/file open) no longer flip state themselves — they
|
|
130
|
+
* surface through {@link UseWorkflowExecutionPanelOptions.onOpenChange}
|
|
131
|
+
* and the panel follows this value. Leave `undefined` for the
|
|
132
|
+
* self-managing default. The same seam `useSessionPanel` carries (#651);
|
|
133
|
+
* kept domain-local, like the controllers themselves.
|
|
134
|
+
*/
|
|
135
|
+
readonly open?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Initial open state in uncontrolled mode. Ignored when
|
|
138
|
+
* {@link UseWorkflowExecutionPanelOptions.open} is provided.
|
|
139
|
+
*
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
142
|
+
readonly defaultOpen?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Called on every effective open/close transition — in BOTH modes,
|
|
145
|
+
* matching `useSessionPanel`'s convention (and departing from
|
|
146
|
+
* `useDetailTabs`'s DD-T05A-001 for the same principled reason): this
|
|
147
|
+
* panel opens ITSELF (`openDiagnosis`, `openArtifact`, `openFileChange`,
|
|
148
|
+
* `openFile` all expand a collapsed panel), and an embedding host that
|
|
149
|
+
* must react to those moments — widen a dock, make room for a diagnosis
|
|
150
|
+
* conversation — has no other seam. Passing only this callback observes
|
|
151
|
+
* the panel without controlling it.
|
|
152
|
+
*
|
|
153
|
+
* In controlled mode this fires once per open/close REQUEST (the host may
|
|
154
|
+
* decline by not updating `open` — a later identical request re-fires); in
|
|
155
|
+
* uncontrolled mode it fires once per actual transition.
|
|
156
|
+
*/
|
|
157
|
+
readonly onOpenChange?: (open: boolean) => void;
|
|
122
158
|
}
|
|
123
159
|
|
|
124
160
|
/**
|
|
@@ -126,13 +162,59 @@ export interface UseWorkflowExecutionPanelOptions {
|
|
|
126
162
|
*/
|
|
127
163
|
export function useWorkflowExecutionPanel({
|
|
128
164
|
defaultView = "artifacts",
|
|
165
|
+
open,
|
|
166
|
+
defaultOpen = false,
|
|
167
|
+
onOpenChange,
|
|
129
168
|
}: UseWorkflowExecutionPanelOptions = {}): WorkflowExecutionPanelController {
|
|
130
169
|
const editorsStore = useWorkspaceEditorsStoreRef();
|
|
131
|
-
|
|
170
|
+
|
|
171
|
+
// Uncontrolled-by-default / controlled-when-`open`-is-provided (React's own
|
|
172
|
+
// value/defaultValue convention — presence of the value prop decides, so an
|
|
173
|
+
// observe-only host can pass just `onOpenChange`). Same shape as
|
|
174
|
+
// `useSessionPanel`; re-transcribed rather than extracted because the
|
|
175
|
+
// controllers are deliberately not shared (see the interface doc above).
|
|
176
|
+
const isControlled = open !== undefined;
|
|
177
|
+
const [internalIsOpen, setInternalIsOpen] = useState(defaultOpen);
|
|
178
|
+
const isOpen = isControlled ? open : internalIsOpen;
|
|
179
|
+
|
|
180
|
+
// Latest-ref idiom: the host's callback and the mode/value mirrors live in
|
|
181
|
+
// refs so `requestOpenChange` — and every action callback built on it —
|
|
182
|
+
// stays referentially stable regardless of how the host authored
|
|
183
|
+
// `onOpenChange` (DD-010: an inline lambda must not churn the memoized
|
|
184
|
+
// controller and re-render the panel subtree).
|
|
185
|
+
const onOpenChangeRef = useRef(onOpenChange);
|
|
186
|
+
onOpenChangeRef.current = onOpenChange;
|
|
187
|
+
const isControlledRef = useRef(isControlled);
|
|
188
|
+
isControlledRef.current = isControlled;
|
|
189
|
+
const isOpenRef = useRef(isOpen);
|
|
190
|
+
isOpenRef.current = isOpen;
|
|
191
|
+
|
|
192
|
+
// The single seam every open/close intent routes through — the chip
|
|
193
|
+
// toggle, Diagnose, artifact/file-change/file opens, and the surface's
|
|
194
|
+
// collapse affordance. Uncontrolled: apply + notify (the ref is updated
|
|
195
|
+
// eagerly so two same-tick intents produce one notification). Controlled:
|
|
196
|
+
// notify only — the host owns the state, and the panel follows the `open`
|
|
197
|
+
// prop; the ref is NOT updated, so a declined request stays re-fireable.
|
|
198
|
+
const requestOpenChange = useCallback((next: boolean) => {
|
|
199
|
+
if (isOpenRef.current === next) return;
|
|
200
|
+
if (!isControlledRef.current) {
|
|
201
|
+
isOpenRef.current = next;
|
|
202
|
+
setInternalIsOpen(next);
|
|
203
|
+
}
|
|
204
|
+
onOpenChangeRef.current?.(next);
|
|
205
|
+
}, []);
|
|
206
|
+
|
|
132
207
|
const [view, setViewState] = useState(defaultView);
|
|
133
208
|
|
|
134
|
-
const openPanel = useCallback(
|
|
135
|
-
|
|
209
|
+
const openPanel = useCallback(
|
|
210
|
+
() => requestOpenChange(true),
|
|
211
|
+
[requestOpenChange],
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
const closePanel = useCallback(
|
|
215
|
+
() => requestOpenChange(false),
|
|
216
|
+
[requestOpenChange],
|
|
217
|
+
);
|
|
136
218
|
|
|
137
219
|
const setView = useCallback((viewId: string) => setViewState(viewId), []);
|
|
138
220
|
|
|
@@ -141,15 +223,15 @@ export function useWorkflowExecutionPanel({
|
|
|
141
223
|
DIAGNOSIS_DOCUMENT_ENTRY_ID,
|
|
142
224
|
DIAGNOSIS_DOCUMENT_PATH,
|
|
143
225
|
);
|
|
144
|
-
|
|
145
|
-
}, [editorsStore]);
|
|
226
|
+
requestOpenChange(true);
|
|
227
|
+
}, [editorsStore, requestOpenChange]);
|
|
146
228
|
|
|
147
229
|
const openFile = useCallback(
|
|
148
230
|
(entryId: string, path: string, options?: OpenFileOptions) => {
|
|
149
231
|
editorsStore.openPreview(entryId, path, options);
|
|
150
|
-
|
|
232
|
+
requestOpenChange(true);
|
|
151
233
|
},
|
|
152
|
-
[editorsStore],
|
|
234
|
+
[editorsStore, requestOpenChange],
|
|
153
235
|
);
|
|
154
236
|
|
|
155
237
|
const openArtifact = useCallback(
|
|
@@ -158,9 +240,9 @@ export function useWorkflowExecutionPanel({
|
|
|
158
240
|
ARTIFACT_DOCUMENT_ENTRY_ID,
|
|
159
241
|
workflowArtifactTabPath(artifact),
|
|
160
242
|
);
|
|
161
|
-
|
|
243
|
+
requestOpenChange(true);
|
|
162
244
|
},
|
|
163
|
-
[editorsStore],
|
|
245
|
+
[editorsStore, requestOpenChange],
|
|
164
246
|
);
|
|
165
247
|
|
|
166
248
|
const pinArtifact = useCallback(
|
|
@@ -179,9 +261,9 @@ export function useWorkflowExecutionPanel({
|
|
|
179
261
|
FILE_CHANGE_DOCUMENT_ENTRY_ID,
|
|
180
262
|
fileChangeTabPath(change),
|
|
181
263
|
);
|
|
182
|
-
|
|
264
|
+
requestOpenChange(true);
|
|
183
265
|
},
|
|
184
|
-
[editorsStore],
|
|
266
|
+
[editorsStore, requestOpenChange],
|
|
185
267
|
);
|
|
186
268
|
|
|
187
269
|
const pinFileChange = useCallback(
|