@burdenoff/fluidgrids-fe-sdk 2026.1103.1 → 2026.1103.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/dist/{ExecutionDetailPage-XHII23QR.js → ExecutionDetailPage-JRBUIU5J.js} +9 -9
- package/dist/{ExecutionsListPage-GTCSYSC6.js → ExecutionsListPage-RC342VCZ.js} +5 -5
- package/dist/{WorkflowBuilder-E5MFEECZ.js → WorkflowBuilder-TCS4JELN.js} +10 -10
- package/dist/{WorkflowsList-NYSQEZWU.js → WorkflowsList-6ES2EDGZ.js} +6 -6
- package/dist/{agentTools-PA62A53S.js → agentTools-4JT66UQB.js} +3 -3
- package/dist/{chunk-JCHE4V55.js → chunk-52OIBKPO.js} +1 -1
- package/dist/{chunk-QAXP5HON.js → chunk-6WPW42TX.js} +1 -1
- package/dist/chunk-742OIXMP.js +18 -0
- package/dist/{chunk-B2DNUVKW.js → chunk-BP6YPKNK.js} +4 -4
- package/dist/{chunk-DLKGWGRN.js → chunk-BVCMAGLJ.js} +1 -1
- package/dist/{chunk-OR7KZZ2D.js → chunk-EKB3EIIC.js} +1 -1
- package/dist/{chunk-UETHT3KG.js → chunk-G2FPOWN5.js} +1 -1
- package/dist/{chunk-A4XNCGWT.js → chunk-H2KIJEYM.js} +1 -1
- package/dist/{chunk-7SY2SL5Y.js → chunk-ILPQAQB5.js} +5 -5
- package/dist/{chunk-ZTJX5ONT.js → chunk-K6HD5GC7.js} +2 -2
- package/dist/{chunk-6O2B5NAK.js → chunk-LTINUSLK.js} +28 -204
- package/dist/{chunk-XNVYPEBO.js → chunk-LVTOWRAM.js} +2 -2
- package/dist/{chunk-7JLLH4YE.js → chunk-M23H4LSY.js} +3 -3
- package/dist/{chunk-SA474Y5U.js → chunk-MY4HMUWU.js} +3 -3
- package/dist/{chunk-PBCBDSVA.js → chunk-N6XYVO7N.js} +1 -1
- package/dist/{chunk-3Y4266JL.js → chunk-OBWB73Y7.js} +1 -1
- package/dist/{chunk-EFOJEQDS.js → chunk-QXACKASD.js} +1 -1
- package/dist/{chunk-P6IRD5SA.js → chunk-RFOKJE3A.js} +8 -8
- package/dist/{chunk-4XV2DAVO.js → chunk-SHYDX2LO.js} +4 -4
- package/dist/{chunk-4FDMLKLL.js → chunk-SIVS3XSV.js} +1 -1
- package/dist/{chunk-W74MXVFX.js → chunk-SUIH376K.js} +1 -1
- package/dist/{chunk-CXNJKM4D.js → chunk-UH7JKPUF.js} +1 -1
- package/dist/{chunk-DQLSF6GB.js → chunk-UMULDJCK.js} +5 -5
- package/dist/{chunk-BDBSRN2O.js → chunk-UW5GY6LQ.js} +9 -5
- package/dist/{chunk-A7QPQ6MO.js → chunk-VQZEGCRF.js} +1 -1
- package/dist/{chunk-6VODFT2Q.js → chunk-Y7BNGLRI.js} +4 -4
- package/dist/{chunk-TJ2PFY7I.js → chunk-Y7MQ3LYB.js} +1 -1
- package/dist/{chunk-23LYGZ27.js → chunk-YC76QFWZ.js} +353 -7
- package/dist/executions.js +10 -10
- package/dist/history.js +4 -4
- package/dist/index.js +38 -38
- package/dist/{node-detail-view-KET5DNEH.js → node-detail-view-CMQ7DUYM.js} +7 -7
- package/dist/observability.js +4 -4
- package/dist/{quick-config-panel-L6CTZQUG.js → quick-config-panel-NJ72QZPM.js} +4 -4
- package/dist/settings.js +5 -5
- package/dist/templates.js +9 -9
- package/dist/workflow-builder.js +11 -11
- package/dist/workflows-list.js +6 -6
- package/package.json +1 -1
- package/dist/chunk-OUYEMZT6.js +0 -185
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Card, FluidGridsMark } from './chunk-
|
|
1
|
+
import { Card, FluidGridsMark } from './chunk-LTINUSLK.js';
|
|
2
2
|
import { Input } from './chunk-IEVSFCFS.js';
|
|
3
3
|
import { Button } from './chunk-BQXVT32O.js';
|
|
4
|
-
import { useWorkflowDefinition } from './chunk-
|
|
5
|
-
import { FluidGridsProvider, useFlowStore } from './chunk-
|
|
4
|
+
import { useWorkflowDefinition } from './chunk-QXACKASD.js';
|
|
5
|
+
import { FluidGridsProvider, useFlowStore } from './chunk-YC76QFWZ.js';
|
|
6
6
|
import { cn } from './chunk-JL7CASN5.js';
|
|
7
7
|
import { useTr } from './chunk-UULVIT25.js';
|
|
8
8
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mergeStickyNotes, describeOperationError, throwIfResultError } from './chunk-
|
|
1
|
+
import { mergeStickyNotes, describeOperationError, throwIfResultError } from './chunk-YC76QFWZ.js';
|
|
2
2
|
import { WorkflowDefinitionDocument, WorkflowVersionDiffDocument } from './chunk-JTQFBZTV.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
@@ -2,7 +2,7 @@ import { operatorSpec, normaliseAssertRules, describeAssertRuleProblem } from '.
|
|
|
2
2
|
import { useEntityTags, useTagEntity, useUntagEntity } from './chunk-PC3CICOW.js';
|
|
3
3
|
import { notifyFluidGridsAiCreditsUpdated } from './chunk-Y53CVZVV.js';
|
|
4
4
|
import { ErrorType } from './chunk-AOLY5INN.js';
|
|
5
|
-
import { throwIfResultError, isForbiddenError } from './chunk-
|
|
5
|
+
import { throwIfResultError, isForbiddenError } from './chunk-YC76QFWZ.js';
|
|
6
6
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
7
7
|
import { WorkflowProposalDocument, ProposeRunFixDocument, ProposeWorkflowChangeDocument, ApplyWorkflowProposalDocument, RejectWorkflowProposalDocument, CancelWorkflowProposalDocument, WorkflowTestCasesDocument, WorkflowTestRunsDocument, WorkflowTestRunDocument, CreateWorkflowTestCaseDocument, UpdateWorkflowTestCaseDocument, DeleteWorkflowTestCaseDocument, RunWorkflowTestsDocument, CreateWorkflowTestCaseFromRunDocument } from './chunk-JTQFBZTV.js';
|
|
8
8
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useFluidGridsAnalytics, throwIfResultError, emitWorkflowCreated, emitRunStarted, runTriggerFromMode, openRunQuotaUpgradePrompt, emitWorkflowPublished } from './chunk-
|
|
1
|
+
import { useFluidGridsAnalytics, throwIfResultError, emitWorkflowCreated, emitRunStarted, runTriggerFromMode, openRunQuotaUpgradePrompt, emitWorkflowPublished } from './chunk-YC76QFWZ.js';
|
|
2
2
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
3
3
|
import { WorkflowDefinitionsDocument, WorkflowDefinitionDocument, WorkflowVersionsDocument, CreateWorkflowDefinitionDocument, ImportWorkflowDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, DeleteWorkflowDefinitionDocument, DuplicateWorkflowDocument, RestoreWorkflowVersionDocument, TriggerWorkflowDocument, WorkflowRunsDocument, WorkflowRunDocument, DashboardSummaryDocument, ActivateWorkflowDefinitionDocument, DeactivateWorkflowDefinitionDocument } from './chunk-JTQFBZTV.js';
|
|
4
4
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-
|
|
2
|
-
import { useDurableParityRunFields, useRunMetadata, useRunPending, ExecutionStatusBadge, NodeTimeline, RunLogViewer, setRunVersioningOverride } from './chunk-
|
|
3
|
-
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-
|
|
4
|
-
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-
|
|
5
|
-
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-
|
|
6
|
-
import { EntityTagPicker, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-
|
|
1
|
+
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-G2FPOWN5.js';
|
|
2
|
+
import { useDurableParityRunFields, useRunMetadata, useRunPending, ExecutionStatusBadge, NodeTimeline, RunLogViewer, setRunVersioningOverride } from './chunk-K6HD5GC7.js';
|
|
3
|
+
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-6WPW42TX.js';
|
|
4
|
+
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-H2KIJEYM.js';
|
|
5
|
+
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-BVCMAGLJ.js';
|
|
6
|
+
import { EntityTagPicker, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-OBWB73Y7.js';
|
|
7
7
|
import { buildNodeDisplayMap, formatRunVersion } from './chunk-PC3CICOW.js';
|
|
8
8
|
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
9
|
-
import { useWorkflowVersions } from './chunk-
|
|
10
|
-
import { throwIfResultError, useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, useWorkflowTestsEnabled, describeOperationError } from './chunk-
|
|
9
|
+
import { useWorkflowVersions } from './chunk-QXACKASD.js';
|
|
10
|
+
import { throwIfResultError, useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, useWorkflowTestsEnabled, describeOperationError } from './chunk-YC76QFWZ.js';
|
|
11
11
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton } from './chunk-ZUVFD5KV.js';
|
|
12
12
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
13
13
|
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument } from './chunk-JTQFBZTV.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TEMPLATE_STORE_CATEGORIES, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-
|
|
2
|
-
import { QuotaExhaustedDialog } from './chunk-
|
|
1
|
+
import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TEMPLATE_STORE_CATEGORIES, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-LTINUSLK.js';
|
|
2
|
+
import { QuotaExhaustedDialog } from './chunk-SIVS3XSV.js';
|
|
3
3
|
import { templatesControls } from './chunk-FNZZ5JJL.js';
|
|
4
|
-
import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-
|
|
4
|
+
import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-QXACKASD.js';
|
|
5
5
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
6
6
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
7
|
-
import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-
|
|
7
|
+
import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-YC76QFWZ.js';
|
|
8
8
|
import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS } from './chunk-ZUVFD5KV.js';
|
|
9
9
|
import { useTr } from './chunk-UULVIT25.js';
|
|
10
10
|
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-
|
|
1
|
+
import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-YC76QFWZ.js';
|
|
2
2
|
import { ExportWorkflowCodeDocument } from './chunk-JTQFBZTV.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LOG_STREAM_DESTINATIONS, CREATE_LOG_STREAM_DESTINATION, UPDATE_LOG_STREAM_DESTINATION, DELETE_LOG_STREAM_DESTINATION, TEST_LOG_STREAM_DESTINATION, REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS, OBSERVABILITY_DASHBOARD_SUMMARY, OBSERVABILITY_FAILED_RUNS, OBSERVABILITY_DATA_SINKS, OBSERVABILITY_DATA_SINK_DATA } from './chunk-5ERAJC2I.js';
|
|
2
|
-
import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-
|
|
2
|
+
import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-YC76QFWZ.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
5
5
|
import { useCallback, useState, useMemo, useEffect } from 'react';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent, isCreateIntent, CreateWorkflowRefusalDialog, decideMissingWorkflow } from './chunk-
|
|
1
|
+
import { isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent, isCreateIntent, CreateWorkflowRefusalDialog, decideMissingWorkflow } from './chunk-52OIBKPO.js';
|
|
2
2
|
import { registerLiveCanvasHandler } from './chunk-PIKYQE7P.js';
|
|
3
|
-
import { useWorkflowReloadStore, releaseLeaseKeptForReload, useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-
|
|
4
|
-
import { canvasFromDefinition } from './chunk-
|
|
5
|
-
import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-
|
|
6
|
-
import { useFlowStore, refetchStoreNodes, BILLING_PLANS_PATH, codeBuildIdOf, mergeStickyNotes, rememberRevision, blankWorkflowCreateInput, classifyCreateRefusal, useSaveStatusStore, workflowFingerprint, registerWorkflowNodeTypes, throwIfResultError } from './chunk-
|
|
3
|
+
import { useWorkflowReloadStore, releaseLeaseKeptForReload, useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-LTINUSLK.js';
|
|
4
|
+
import { canvasFromDefinition } from './chunk-N6XYVO7N.js';
|
|
5
|
+
import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-QXACKASD.js';
|
|
6
|
+
import { useFlowStore, refetchStoreNodes, BILLING_PLANS_PATH, codeBuildIdOf, mergeStickyNotes, rememberRevision, blankWorkflowCreateInput, classifyCreateRefusal, useSaveStatusStore, workflowFingerprint, registerWorkflowNodeTypes, throwIfResultError } from './chunk-YC76QFWZ.js';
|
|
7
7
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
8
8
|
import { WorkflowDefinitionDocument } from './chunk-JTQFBZTV.js';
|
|
9
9
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CodeEditorField, normalizeCodeLanguage } from './chunk-AASHQI77.js';
|
|
2
|
-
import { asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, isStringOptionList, optionText, coerceNumber, paramsFromOperation, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText } from './chunk-
|
|
2
|
+
import { asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, isStringOptionList, optionText, coerceNumber, paramsFromOperation, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText } from './chunk-Y7MQ3LYB.js';
|
|
3
3
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-GTEBQQ7J.js';
|
|
4
|
-
import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-
|
|
4
|
+
import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-VQZEGCRF.js';
|
|
5
5
|
import { readAssertRulesSetting, rowsFromRules, normaliseAssertRules, ruleFromRow, describeAssertRuleProblem, operatorSpec, ASSERT_OPERATORS, emptyAssertRuleRow } from './chunk-JDLQ6QIB.js';
|
|
6
|
-
import { useFlowStore, isParamVisible, ConnectionSelector, structuredParameterType, FluidGridsContext, ExpressionEditor, formatParameterValue, parseParameterValue, useFluidGridsAnalytics, throwIfResultError, openRunQuotaUpgradePrompt, describeOperationError } from './chunk-
|
|
6
|
+
import { useFlowStore, isParamVisible, ConnectionSelector, structuredParameterType, useRunGuard, FluidGridsContext, ExpressionEditor, formatParameterValue, parseParameterValue, useFluidGridsAnalytics, throwIfResultError, openRunQuotaUpgradePrompt, describeOperationError } from './chunk-YC76QFWZ.js';
|
|
7
7
|
import { useBuilderReadOnly } from './chunk-OCJTTHTS.js';
|
|
8
8
|
import { useRunFromNodeEligibilityQuery, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument } from './chunk-JTQFBZTV.js';
|
|
9
9
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -3822,7 +3822,10 @@ function NodeExecutionActions({
|
|
|
3822
3822
|
setPendingAction(null);
|
|
3823
3823
|
}
|
|
3824
3824
|
};
|
|
3825
|
-
const
|
|
3825
|
+
const stepGuard = useRunGuard(() => {
|
|
3826
|
+
void runAction("execute", () => onExecuteStep(targetNodeId));
|
|
3827
|
+
});
|
|
3828
|
+
const executePending = pendingAction === "execute" || isExecuting || stepGuard.preparing;
|
|
3826
3829
|
const continuePending = pendingAction === "continue";
|
|
3827
3830
|
const continuationLabel = eligibility.action === "retry" ? tr(
|
|
3828
3831
|
"fluidgrids.builder.nodeExecutionActions.retryFromHere",
|
|
@@ -3860,7 +3863,7 @@ function NodeExecutionActions({
|
|
|
3860
3863
|
"data-agent": "confirm",
|
|
3861
3864
|
type: "button",
|
|
3862
3865
|
onClick: () => {
|
|
3863
|
-
void
|
|
3866
|
+
void stepGuard.requestRun();
|
|
3864
3867
|
},
|
|
3865
3868
|
disabled: executePending || continuePending,
|
|
3866
3869
|
title: tr(
|
|
@@ -3913,6 +3916,7 @@ function NodeExecutionActions({
|
|
|
3913
3916
|
}
|
|
3914
3917
|
)
|
|
3915
3918
|
] }),
|
|
3919
|
+
stepGuard.dialog,
|
|
3916
3920
|
!eligibility.eligible && /* @__PURE__ */ jsx(
|
|
3917
3921
|
"p",
|
|
3918
3922
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useAgentDefinitions, useAgentDefinitionList, useConnections, describeOperationError } from './chunk-
|
|
1
|
+
import { useAgentDefinitions, useAgentDefinitionList, useConnections, describeOperationError } from './chunk-YC76QFWZ.js';
|
|
2
2
|
import { useTr } from './chunk-UULVIT25.js';
|
|
3
3
|
import { useState, useCallback, useEffect } from 'react';
|
|
4
4
|
import { Icon } from '@iconify/react';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AgentsTab } from './chunk-
|
|
2
|
-
import { ActionPoliciesTab } from './chunk-
|
|
3
|
-
import { LogStreamingTab } from './chunk-
|
|
1
|
+
import { AgentsTab } from './chunk-VQZEGCRF.js';
|
|
2
|
+
import { ActionPoliciesTab } from './chunk-BVCMAGLJ.js';
|
|
3
|
+
import { LogStreamingTab } from './chunk-UH7JKPUF.js';
|
|
4
4
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
5
|
-
import { useFlowStore, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useSaveStatusStore, findSaveConflict, useDurableParityEnabled, throwIfResultError, describeOperationError, useConnections } from './chunk-
|
|
5
|
+
import { useFlowStore, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useSaveStatusStore, findSaveConflict, useDurableParityEnabled, throwIfResultError, describeOperationError, useConnections } from './chunk-YC76QFWZ.js';
|
|
6
6
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-ZUVFD5KV.js';
|
|
7
7
|
import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
|
|
8
8
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useFlowStore, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-
|
|
1
|
+
import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useFlowStore, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-YC76QFWZ.js';
|
|
2
2
|
import { useBuilderReadOnly } from './chunk-OCJTTHTS.js';
|
|
3
3
|
import { EventRegistrationsDocument } from './chunk-JTQFBZTV.js';
|
|
4
4
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -23,7 +23,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
23
23
|
import { toast } from 'sonner';
|
|
24
24
|
import { nodeCategoryColor, chartSeriesColor, chartSeriesIndex } from '@burdenoff/fe-libs/shared/utils';
|
|
25
25
|
import { gql } from '@apollo/client';
|
|
26
|
-
import { Textarea, Input, Button, Card, Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuItem, DropdownMenuSeparator } from '@burdenoff/fe-libs/ui';
|
|
26
|
+
import { Textarea, Input, Button, Card, Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuItem, DropdownMenuSeparator, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel } from '@burdenoff/fe-libs/ui';
|
|
27
27
|
import * as AdaptiveCards from 'adaptivecards';
|
|
28
28
|
import { formatDistanceToNow } from 'date-fns';
|
|
29
29
|
import { ProviderIcon, ConnectionDialog } from '@burdenoff/fe-libs/connections';
|
|
@@ -33,6 +33,7 @@ import { useEventBus } from '@burdenoff/fe-libs/shared/events';
|
|
|
33
33
|
import { ApolloProvider } from '@apollo/client/react';
|
|
34
34
|
import { useShallow } from 'zustand/shallow';
|
|
35
35
|
import { InfoCircledIcon } from '@radix-ui/react-icons';
|
|
36
|
+
import { Button as Button$1 } from '@burdenoff/fe-libs/button';
|
|
36
37
|
|
|
37
38
|
// src/feature-flags/durable-nodes.ts
|
|
38
39
|
var DURABLE_FUNCTION_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -8674,6 +8675,348 @@ function useNodeExecution() {
|
|
|
8674
8675
|
findTriggerNode
|
|
8675
8676
|
};
|
|
8676
8677
|
}
|
|
8678
|
+
function findEdges(node, connectedEdges) {
|
|
8679
|
+
const outgoingEdges = connectedEdges.filter(
|
|
8680
|
+
(edge) => edge.source === node.id
|
|
8681
|
+
);
|
|
8682
|
+
const incomingEdges = connectedEdges.filter(
|
|
8683
|
+
(edge) => edge.target === node.id
|
|
8684
|
+
);
|
|
8685
|
+
return { outgoingEdges, incomingEdges };
|
|
8686
|
+
}
|
|
8687
|
+
function checkFlowTerminalNode(outgoingEdges, incomingEdges, isTrigger, type) {
|
|
8688
|
+
if (isTrigger) {
|
|
8689
|
+
return outgoingEdges.length >= 1;
|
|
8690
|
+
}
|
|
8691
|
+
switch (type) {
|
|
8692
|
+
case "end" /* END */:
|
|
8693
|
+
return incomingEdges.length >= 1;
|
|
8694
|
+
default:
|
|
8695
|
+
return false;
|
|
8696
|
+
}
|
|
8697
|
+
}
|
|
8698
|
+
function checkLoneNode(outgoingEdges, incomingEdges, isTrigger) {
|
|
8699
|
+
if (isTrigger) {
|
|
8700
|
+
return outgoingEdges.length === 0;
|
|
8701
|
+
}
|
|
8702
|
+
return incomingEdges.length === 0;
|
|
8703
|
+
}
|
|
8704
|
+
function isFlowComplete(nodes, edges) {
|
|
8705
|
+
const connectedEdges = getConnectedEdges(nodes, edges);
|
|
8706
|
+
let isTriggerConnected = false;
|
|
8707
|
+
let hasTriggerNode = false;
|
|
8708
|
+
let hasEndNode = false;
|
|
8709
|
+
let isEndConnected = false;
|
|
8710
|
+
const nodesWithEmptyTarget = [];
|
|
8711
|
+
for (const node of nodes) {
|
|
8712
|
+
if (node.type === STICKY_NOTE_TYPE) continue;
|
|
8713
|
+
const { outgoingEdges, incomingEdges } = findEdges(node, connectedEdges);
|
|
8714
|
+
const isTrigger = isNodeTrigger(node);
|
|
8715
|
+
if (isTrigger) {
|
|
8716
|
+
hasTriggerNode = true;
|
|
8717
|
+
if (checkFlowTerminalNode(
|
|
8718
|
+
outgoingEdges,
|
|
8719
|
+
incomingEdges,
|
|
8720
|
+
true,
|
|
8721
|
+
node.type
|
|
8722
|
+
)) {
|
|
8723
|
+
isTriggerConnected = true;
|
|
8724
|
+
}
|
|
8725
|
+
} else if (node.type === "end" /* END */) {
|
|
8726
|
+
hasEndNode = true;
|
|
8727
|
+
isEndConnected = checkFlowTerminalNode(
|
|
8728
|
+
outgoingEdges,
|
|
8729
|
+
incomingEdges,
|
|
8730
|
+
false,
|
|
8731
|
+
"end" /* END */
|
|
8732
|
+
);
|
|
8733
|
+
}
|
|
8734
|
+
if (checkLoneNode(outgoingEdges, incomingEdges, isTrigger))
|
|
8735
|
+
nodesWithEmptyTarget.push(node);
|
|
8736
|
+
}
|
|
8737
|
+
const hasAnyLoneNode = nodesWithEmptyTarget.length > 0;
|
|
8738
|
+
const isEndValid = !hasEndNode || isEndConnected;
|
|
8739
|
+
return hasTriggerNode && isTriggerConnected && isEndValid && !hasAnyLoneNode;
|
|
8740
|
+
}
|
|
8741
|
+
function useFlowValidator(onValidate) {
|
|
8742
|
+
const [isValidating, setIsValidating] = useState(false);
|
|
8743
|
+
const { getNodes, getEdges } = useReactFlow();
|
|
8744
|
+
const validate = useCallback(async () => {
|
|
8745
|
+
setIsValidating(true);
|
|
8746
|
+
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
8747
|
+
onValidate?.(isFlowComplete(getNodes(), getEdges()));
|
|
8748
|
+
setIsValidating(false);
|
|
8749
|
+
}, [getNodes, getEdges, onValidate]);
|
|
8750
|
+
return [isValidating, validate];
|
|
8751
|
+
}
|
|
8752
|
+
|
|
8753
|
+
// src/builder/lib/save-guards.ts
|
|
8754
|
+
function editingLeaseLocked() {
|
|
8755
|
+
return isLocked(useEditLeaseStore.getState().phase);
|
|
8756
|
+
}
|
|
8757
|
+
function autosaveAllowedFor(workflow) {
|
|
8758
|
+
return useSaveStatusStore.getState().autosaveEnabled && canAutosave(workflow);
|
|
8759
|
+
}
|
|
8760
|
+
function editStateFor(state) {
|
|
8761
|
+
return editStateOf(
|
|
8762
|
+
useSaveStatusStore.getState().baseline,
|
|
8763
|
+
{
|
|
8764
|
+
fingerprint: workflowFingerprint(state.workflow),
|
|
8765
|
+
generation: state.loadGeneration,
|
|
8766
|
+
editRevision: state.editRevision
|
|
8767
|
+
},
|
|
8768
|
+
Date.now()
|
|
8769
|
+
);
|
|
8770
|
+
}
|
|
8771
|
+
function departingSave(state) {
|
|
8772
|
+
const status = useSaveStatusStore.getState();
|
|
8773
|
+
if (status.autosavePaused || editingLeaseLocked()) return null;
|
|
8774
|
+
if (editStateFor(state) !== "dirty") return null;
|
|
8775
|
+
if (!autosaveAllowedFor(state.workflow)) return null;
|
|
8776
|
+
const { nodes, edges } = state.workflow;
|
|
8777
|
+
if (!isFlowComplete(nodes, edges)) return null;
|
|
8778
|
+
return snapshotForSave(state.workflow, state.loadGeneration);
|
|
8779
|
+
}
|
|
8780
|
+
function touchesSavedFields(state, previous) {
|
|
8781
|
+
return state.workflow.nodes !== previous.workflow.nodes || state.workflow.edges !== previous.workflow.edges || state.workflow.name !== previous.workflow.name || state.workflow.alias !== previous.workflow.alias || state.workflow.status !== previous.workflow.status || state.loadGeneration !== previous.loadGeneration;
|
|
8782
|
+
}
|
|
8783
|
+
function unsavedState() {
|
|
8784
|
+
const flow = useFlowStore.getState();
|
|
8785
|
+
const status = useSaveStatusStore.getState();
|
|
8786
|
+
return {
|
|
8787
|
+
// Checked fresh: the dirty flag trails the last edit by a moment.
|
|
8788
|
+
dirty: status.dirty || editStateFor(flow) === "dirty",
|
|
8789
|
+
// A paused autosave (a refused save), or a page someone else is editing
|
|
8790
|
+
// from, does not save on the way out either.
|
|
8791
|
+
autosaveAllowed: autosaveAllowedFor(flow.workflow) && !status.autosavePaused && !editingLeaseLocked(),
|
|
8792
|
+
incomplete: status.incomplete || !isFlowComplete(flow.workflow.nodes, flow.workflow.edges),
|
|
8793
|
+
failed: status.failure !== null
|
|
8794
|
+
};
|
|
8795
|
+
}
|
|
8796
|
+
function leavingLosesChanges() {
|
|
8797
|
+
return leaveNeedsConfirmation(unsavedState());
|
|
8798
|
+
}
|
|
8799
|
+
function runPreparation() {
|
|
8800
|
+
return runPreparationOf(unsavedState());
|
|
8801
|
+
}
|
|
8802
|
+
function savedEverythingBeforeLeaving() {
|
|
8803
|
+
return editStateFor(useFlowStore.getState()) !== "dirty";
|
|
8804
|
+
}
|
|
8805
|
+
function watchLeavingLosesChanges(onChange, delayMs) {
|
|
8806
|
+
let current;
|
|
8807
|
+
let timer;
|
|
8808
|
+
const report = (losesChanges) => {
|
|
8809
|
+
if (losesChanges === current) return;
|
|
8810
|
+
current = losesChanges;
|
|
8811
|
+
onChange(losesChanges);
|
|
8812
|
+
};
|
|
8813
|
+
const settle = () => {
|
|
8814
|
+
timer = void 0;
|
|
8815
|
+
report(leavingLosesChanges());
|
|
8816
|
+
};
|
|
8817
|
+
const settleLater = () => {
|
|
8818
|
+
if (timer) clearTimeout(timer);
|
|
8819
|
+
timer = setTimeout(settle, delayMs);
|
|
8820
|
+
};
|
|
8821
|
+
const settleNow = () => {
|
|
8822
|
+
if (timer) clearTimeout(timer);
|
|
8823
|
+
settle();
|
|
8824
|
+
};
|
|
8825
|
+
settle();
|
|
8826
|
+
const unsubscribeFlow = useFlowStore.subscribe((state, previous) => {
|
|
8827
|
+
if (!touchesSavedFields(state, previous)) return;
|
|
8828
|
+
if (state.loadGeneration === previous.loadGeneration) report(true);
|
|
8829
|
+
settleLater();
|
|
8830
|
+
});
|
|
8831
|
+
const unsubscribeStatus = useSaveStatusStore.subscribe(settleLater);
|
|
8832
|
+
const unsubscribeLease = useEditLeaseStore.subscribe((state, previous) => {
|
|
8833
|
+
if (isLocked(state.phase) !== isLocked(previous.phase)) settleNow();
|
|
8834
|
+
});
|
|
8835
|
+
return () => {
|
|
8836
|
+
unsubscribeFlow();
|
|
8837
|
+
unsubscribeStatus();
|
|
8838
|
+
unsubscribeLease();
|
|
8839
|
+
if (timer) clearTimeout(timer);
|
|
8840
|
+
};
|
|
8841
|
+
}
|
|
8842
|
+
|
|
8843
|
+
// src/builder/hooks/use-builder-save.ts
|
|
8844
|
+
function useManualSave() {
|
|
8845
|
+
const tr = useTr();
|
|
8846
|
+
const { saveToBackend } = useSaveWorkflow();
|
|
8847
|
+
return useCallback(async () => {
|
|
8848
|
+
const { nodes, edges } = useFlowStore.getState().workflow;
|
|
8849
|
+
if (!isFlowComplete(nodes, edges)) {
|
|
8850
|
+
toast.error(
|
|
8851
|
+
tr(
|
|
8852
|
+
"fluidgrids.builder.saveFlowButton.invalidToastTitle",
|
|
8853
|
+
"Flow is invalid"
|
|
8854
|
+
),
|
|
8855
|
+
{
|
|
8856
|
+
description: tr(
|
|
8857
|
+
"fluidgrids.builder.saveFlowButton.invalidToastDescription",
|
|
8858
|
+
"Please check if the flow is complete and has no lone nodes"
|
|
8859
|
+
)
|
|
8860
|
+
}
|
|
8861
|
+
);
|
|
8862
|
+
return false;
|
|
8863
|
+
}
|
|
8864
|
+
return saveToBackend();
|
|
8865
|
+
}, [saveToBackend, tr]);
|
|
8866
|
+
}
|
|
8867
|
+
function useGuardedNavigate() {
|
|
8868
|
+
const navigate = useNavigate();
|
|
8869
|
+
return useCallback(
|
|
8870
|
+
(to, options) => {
|
|
8871
|
+
if (leavingLosesChanges()) {
|
|
8872
|
+
useSaveStatusStore.getState().actions.requestLeave({ to, options });
|
|
8873
|
+
return;
|
|
8874
|
+
}
|
|
8875
|
+
navigate(to, options);
|
|
8876
|
+
},
|
|
8877
|
+
[navigate]
|
|
8878
|
+
);
|
|
8879
|
+
}
|
|
8880
|
+
function useRunGuard(startRun) {
|
|
8881
|
+
const { saveToBackend } = useSaveWorkflow();
|
|
8882
|
+
const [confirmOpen, setConfirmOpen] = useState(false);
|
|
8883
|
+
const [preparing, setPreparing] = useState(false);
|
|
8884
|
+
const requestRun = useCallback(async () => {
|
|
8885
|
+
const preparation = runPreparation();
|
|
8886
|
+
if (preparation === "run") {
|
|
8887
|
+
startRun();
|
|
8888
|
+
return;
|
|
8889
|
+
}
|
|
8890
|
+
if (preparation === "save-first") {
|
|
8891
|
+
setPreparing(true);
|
|
8892
|
+
let saved = false;
|
|
8893
|
+
try {
|
|
8894
|
+
saved = await saveToBackend({ silent: true }) && savedEverythingBeforeLeaving();
|
|
8895
|
+
} finally {
|
|
8896
|
+
setPreparing(false);
|
|
8897
|
+
}
|
|
8898
|
+
if (saved) {
|
|
8899
|
+
startRun();
|
|
8900
|
+
return;
|
|
8901
|
+
}
|
|
8902
|
+
}
|
|
8903
|
+
setConfirmOpen(true);
|
|
8904
|
+
}, [saveToBackend, startRun]);
|
|
8905
|
+
const dialog = /* @__PURE__ */ jsx(
|
|
8906
|
+
UnsavedRunDialog,
|
|
8907
|
+
{
|
|
8908
|
+
open: confirmOpen,
|
|
8909
|
+
onOpenChange: setConfirmOpen,
|
|
8910
|
+
onRunSaved: () => {
|
|
8911
|
+
setConfirmOpen(false);
|
|
8912
|
+
startRun();
|
|
8913
|
+
},
|
|
8914
|
+
onSavedAndRunnable: () => {
|
|
8915
|
+
setConfirmOpen(false);
|
|
8916
|
+
startRun();
|
|
8917
|
+
}
|
|
8918
|
+
}
|
|
8919
|
+
);
|
|
8920
|
+
return { requestRun, preparing, dialog };
|
|
8921
|
+
}
|
|
8922
|
+
function UnsavedRunDialog({
|
|
8923
|
+
open,
|
|
8924
|
+
onOpenChange,
|
|
8925
|
+
onRunSaved,
|
|
8926
|
+
onSavedAndRunnable
|
|
8927
|
+
}) {
|
|
8928
|
+
const tr = useTr();
|
|
8929
|
+
const manualSave = useManualSave();
|
|
8930
|
+
const [version, dbId, status, codeBuildId] = useFlowStore(
|
|
8931
|
+
useShallow((s) => [
|
|
8932
|
+
s.workflow.version,
|
|
8933
|
+
s.workflow.dbId,
|
|
8934
|
+
s.workflow.status,
|
|
8935
|
+
s.workflow.codeBuildId
|
|
8936
|
+
])
|
|
8937
|
+
);
|
|
8938
|
+
const [saving, setSaving] = useState(false);
|
|
8939
|
+
const hasSavedVersion = !!dbId;
|
|
8940
|
+
const runsAfterSave = !hasSavedVersion || savesInPlace({ dbId, status, codeBuildId });
|
|
8941
|
+
const save = useCallback(async () => {
|
|
8942
|
+
setSaving(true);
|
|
8943
|
+
try {
|
|
8944
|
+
const saved = await manualSave();
|
|
8945
|
+
if (!saved) return;
|
|
8946
|
+
if (!runsAfterSave) {
|
|
8947
|
+
onOpenChange(false);
|
|
8948
|
+
return;
|
|
8949
|
+
}
|
|
8950
|
+
if (savedEverythingBeforeLeaving()) onSavedAndRunnable();
|
|
8951
|
+
} finally {
|
|
8952
|
+
setSaving(false);
|
|
8953
|
+
}
|
|
8954
|
+
}, [runsAfterSave, manualSave, onOpenChange, onSavedAndRunnable]);
|
|
8955
|
+
return /* @__PURE__ */ jsx(
|
|
8956
|
+
AlertDialog,
|
|
8957
|
+
{
|
|
8958
|
+
open,
|
|
8959
|
+
onOpenChange: (next) => {
|
|
8960
|
+
if (!next && saving) return;
|
|
8961
|
+
onOpenChange(next);
|
|
8962
|
+
},
|
|
8963
|
+
children: /* @__PURE__ */ jsxs(AlertDialogContent, { "data-testid": "fluidgrids-unsaved-run-dialog", children: [
|
|
8964
|
+
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
8965
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { children: tr(
|
|
8966
|
+
"fluidgrids.builder.runGuard.title",
|
|
8967
|
+
"Run without your unsaved changes?"
|
|
8968
|
+
) }),
|
|
8969
|
+
/* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
|
|
8970
|
+
hasSavedVersion ? tr(
|
|
8971
|
+
"fluidgrids.builder.runGuard.description",
|
|
8972
|
+
"This workflow has changes that are not saved. A run uses the saved version {{version}}, without them.",
|
|
8973
|
+
{ version }
|
|
8974
|
+
) : tr(
|
|
8975
|
+
"fluidgrids.builder.runGuard.descriptionNotSaved",
|
|
8976
|
+
"This workflow has not been saved yet. Save it before you run it."
|
|
8977
|
+
),
|
|
8978
|
+
" ",
|
|
8979
|
+
runsAfterSave ? null : tr(
|
|
8980
|
+
"fluidgrids.builder.runGuard.newVersionHint",
|
|
8981
|
+
"Saving keeps your changes as a new version and opens it; run that version."
|
|
8982
|
+
)
|
|
8983
|
+
] })
|
|
8984
|
+
] }),
|
|
8985
|
+
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
8986
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: saving, children: tr("fluidgrids.builder.runGuard.cancelButton", "Cancel") }),
|
|
8987
|
+
hasSavedVersion && /* @__PURE__ */ jsx(
|
|
8988
|
+
Button$1,
|
|
8989
|
+
{
|
|
8990
|
+
"data-agent": "confirm",
|
|
8991
|
+
variant: "outline",
|
|
8992
|
+
onClick: onRunSaved,
|
|
8993
|
+
disabled: saving,
|
|
8994
|
+
children: tr(
|
|
8995
|
+
"fluidgrids.builder.runGuard.runSavedButton",
|
|
8996
|
+
"Run saved version"
|
|
8997
|
+
)
|
|
8998
|
+
}
|
|
8999
|
+
),
|
|
9000
|
+
/* @__PURE__ */ jsx(
|
|
9001
|
+
Button$1,
|
|
9002
|
+
{
|
|
9003
|
+
"data-agent": "confirm",
|
|
9004
|
+
onClick: () => void save(),
|
|
9005
|
+
disabled: saving,
|
|
9006
|
+
children: saving ? tr("fluidgrids.builder.runGuard.savingButton", "Saving\u2026") : runsAfterSave ? tr(
|
|
9007
|
+
"fluidgrids.builder.runGuard.saveAndRunButton",
|
|
9008
|
+
"Save and run"
|
|
9009
|
+
) : tr(
|
|
9010
|
+
"fluidgrids.builder.runGuard.saveAsNewVersionButton",
|
|
9011
|
+
"Save as new version"
|
|
9012
|
+
)
|
|
9013
|
+
}
|
|
9014
|
+
)
|
|
9015
|
+
] })
|
|
9016
|
+
] })
|
|
9017
|
+
}
|
|
9018
|
+
);
|
|
9019
|
+
}
|
|
8677
9020
|
function buildOperationSeed(type, operationName, existingData) {
|
|
8678
9021
|
const config = NODE_CONFIGS.find((c) => c.type === type);
|
|
8679
9022
|
if (!config) return null;
|
|
@@ -9266,6 +9609,7 @@ var getNodeMetadata = (value) => {
|
|
|
9266
9609
|
console.error("[NodeComponent] Execute step error:", error);
|
|
9267
9610
|
});
|
|
9268
9611
|
}, [executeStep, id]);
|
|
9612
|
+
const stepGuard = useRunGuard(handleExecuteStep);
|
|
9269
9613
|
const missingCredentials = useMemo(() => {
|
|
9270
9614
|
const visibleAdapters = getVisibleConnectionAdapters(
|
|
9271
9615
|
String(value?.type ?? ""),
|
|
@@ -9345,14 +9689,14 @@ var getNodeMetadata = (value) => {
|
|
|
9345
9689
|
executionStatus,
|
|
9346
9690
|
itemCount,
|
|
9347
9691
|
isTrigger,
|
|
9348
|
-
isExecuting: isThisNodeExecuting,
|
|
9692
|
+
isExecuting: isThisNodeExecuting || stepGuard.preparing,
|
|
9349
9693
|
inputHandles,
|
|
9350
9694
|
outputHandles,
|
|
9351
9695
|
isConnectable: typeof isConnectable === "boolean" ? isConnectable : void 0,
|
|
9352
9696
|
onClick: handleCardClick,
|
|
9353
9697
|
onDoubleClick: handleOpenNdv,
|
|
9354
9698
|
onSettings: handleOpenNdv,
|
|
9355
|
-
onExecute:
|
|
9699
|
+
onExecute: () => void stepGuard.requestRun(),
|
|
9356
9700
|
onDelete: readOnly ? void 0 : handleDeleteNode,
|
|
9357
9701
|
infoButton: /* @__PURE__ */ jsx(NodeInfoButtonWithModal, { metadata: nodeInfoMetadata }),
|
|
9358
9702
|
disabled: isDisabled,
|
|
@@ -9369,7 +9713,8 @@ var getNodeMetadata = (value) => {
|
|
|
9369
9713
|
nodeId: id,
|
|
9370
9714
|
adapters: data?.nodeData?.nodeAdapters
|
|
9371
9715
|
}
|
|
9372
|
-
)
|
|
9716
|
+
),
|
|
9717
|
+
stepGuard.dialog
|
|
9373
9718
|
] });
|
|
9374
9719
|
}
|
|
9375
9720
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -9384,9 +9729,9 @@ var getNodeMetadata = (value) => {
|
|
|
9384
9729
|
itemCount,
|
|
9385
9730
|
isTrigger,
|
|
9386
9731
|
accent: roleAccent,
|
|
9387
|
-
isExecuting: isThisNodeExecuting,
|
|
9732
|
+
isExecuting: isThisNodeExecuting || stepGuard.preparing,
|
|
9388
9733
|
onSettings: handleOpenNdv,
|
|
9389
|
-
onExecute:
|
|
9734
|
+
onExecute: () => void stepGuard.requestRun(),
|
|
9390
9735
|
onDelete: readOnly ? void 0 : handleDeleteNode,
|
|
9391
9736
|
infoButton: /* @__PURE__ */ jsx(NodeInfoButtonWithModal, { metadata: nodeInfoMetadata }),
|
|
9392
9737
|
disabled: isDisabled,
|
|
@@ -9441,6 +9786,7 @@ var getNodeMetadata = (value) => {
|
|
|
9441
9786
|
]
|
|
9442
9787
|
}
|
|
9443
9788
|
),
|
|
9789
|
+
stepGuard.dialog,
|
|
9444
9790
|
/* @__PURE__ */ jsx(
|
|
9445
9791
|
AdapterConnectors,
|
|
9446
9792
|
{
|
|
@@ -9791,4 +10137,4 @@ function createNodeWithDefaultData(type, data) {
|
|
|
9791
10137
|
return Object.assign(createNodeData(type, defaultData), data);
|
|
9792
10138
|
}
|
|
9793
10139
|
|
|
9794
|
-
export { AUTOSAVE_DEBOUNCE_MS, AUTOSAVE_RETRY_DELAYS_MS, AVAILABLE_NODES, BILLING_PLANS_PATH, CODE_WORKFLOW_NODE_TYPE, ConnectionFormDialog, ConnectionSelector, DURABLE_FUNCTION_NODE_TYPES, EDIT_SESSION_ID, ExpressionEditor, FLUIDGRIDS_FLAGS, FLUIDGRIDS_FLAG_DEFAULTS, FluidGridsContext, FluidGridsProvider, NODES, NODES_METADATA, NODE_CONFIGS, NODE_OPERATION_DRAG_DATA_FORMAT, NODE_TYPES, NODE_TYPE_DRAG_DATA_FORMAT, NodePropertyPanel, NodeTypeIcon, PHASE_C_FLAGS_OFF, RUNS_QUOTA_NAME, RUN_CONTROL_NODE_TYPES, STICKY_NOTE_TYPE, WORKFLOWS_QUOTA_NAME, WORKFLOW_TEST_NODE_TYPES, bannerOf, blankWorkflowCreateInput, buildOperationSeed, buildStickyNode, builderPathOf, canAutosave, canRenderOperationPanel, canSignalRun, changedSourceFiles, childRunIdOf, classifyCreateRefusal, clearCodeWorkflowDefinitionCache, codeBuildIdOf, components_default, createConfiguredNode, createThenOpen, declaredOutputFields, declaredSignals, defaultSourcePath, describeOperationError, diagnosticsByPath,
|
|
10140
|
+
export { AUTOSAVE_DEBOUNCE_MS, AUTOSAVE_RETRY_DELAYS_MS, AVAILABLE_NODES, BILLING_PLANS_PATH, CODE_WORKFLOW_NODE_TYPE, ConnectionFormDialog, ConnectionSelector, DURABLE_FUNCTION_NODE_TYPES, EDIT_SESSION_ID, ExpressionEditor, FLUIDGRIDS_FLAGS, FLUIDGRIDS_FLAG_DEFAULTS, FluidGridsContext, FluidGridsProvider, NODES, NODES_METADATA, NODE_CONFIGS, NODE_OPERATION_DRAG_DATA_FORMAT, NODE_TYPES, NODE_TYPE_DRAG_DATA_FORMAT, NodePropertyPanel, NodeTypeIcon, PHASE_C_FLAGS_OFF, RUNS_QUOTA_NAME, RUN_CONTROL_NODE_TYPES, STICKY_NOTE_TYPE, WORKFLOWS_QUOTA_NAME, WORKFLOW_TEST_NODE_TYPES, autosaveAllowedFor, bannerOf, blankWorkflowCreateInput, buildOperationSeed, buildStickyNode, builderPathOf, canAutosave, canRenderOperationPanel, canSignalRun, changedSourceFiles, childRunIdOf, classifyCreateRefusal, clearCodeWorkflowDefinitionCache, codeBuildIdOf, components_default, createConfiguredNode, createThenOpen, declaredOutputFields, declaredSignals, defaultSourcePath, departingSave, describeOperationError, diagnosticsByPath, editStateFor, editingLeaseLocked, emitNodeInstalled, emitRunFailed, emitRunLimitHit, emitRunStarted, emitTemplateUsed, emitUpgradeClicked, emitWorkflowCreated, emitWorkflowLimitHit, emitWorkflowPublished, ensureNodeConfigsLoaded, fieldsFromIO, fieldsFromValue, filterPaletteNodes, findQuotaRefusal, findSaveConflict, forgetSessionForReload, formatParameterValue, getNodeDetail, getNodeMetadata, inAppLeaveTarget, interfaceFields, interfaceHandlers, isDurableFunctionNodeType, isEditableSourcePath, isFlowComplete, isForbiddenError, isImageIcon, isLocked, isNodeConfigsInitialized, isNodeTypeHiddenFromPalette, isParamVisible, isQuotaExhaustedFailure, isRunControlNodeType, isTriggerOperation, leaseCallQueue, leavingLosesChanges, listCustomBlocks, liveInternalOperations, loadDefinitionJson, mergeStickyNotes, nodeAccent, nodesOf, onNodeTypesUpdate, openRunQuotaUpgradePrompt, parseParameterValue, parseRawSignalPayload, pathToExpression, payloadFromCardValues, phaseAfterAcquire, phaseAfterTakeOver, projectLanguage, readCodeWorkflowState, readDisplayOptions, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, releasesOnClose, rememberOwnStatusChange, rememberRevision, rememberSessionForReload, resolveInputHandles, resolveNodeOperation, resolveOperationName, resolveOutputHandles, resolvePhaseCFlags, resolveUiSpec, runSignalTargets, runTriggerFromMode, saveIndicatorOf, savedEverythingBeforeLeaving, sessionBeforeReload, shouldReleaseForIdle, signalPayloadCard, sourceLanguageOf, stripSubmitActions, structuredParameterType, subscribeWorkflowSaved, synchronizeOperationUpdate, throwIfResultError, tickAction, touchesSavedFields, useAgentDefinitionList, useAgentDefinitions, useCodeWorkflowInterface, useConnection, useConnections, useConnectionsByProvider, useContinuousOptimisationEnabled, useCreateConnection, useDurableFunctionNodesEnabled, useDurableParityEnabled, useEditLeaseLocked, useEditLeaseStore, useFlowStore, useFlowValidator, useFluidGridsAnalytics, useFluidGridsContext, useFluidGridsFlag, useGuardedNavigate, useInitiateOAuth, useInsertNode, useIsValidConnection, useManualSave, useNodeExecution, useNodeRegistryRevision, usePaletteGates, usePhaseCFlags, useProviders, useRunGuard, useSaveStatusStore, useSaveWorkflow, useSelfHostedWorkersEnabled, useWorkflowTestsEnabled, watchLeavingLosesChanges, workflowFingerprint };
|