@burdenoff/fluidgrids-fe-sdk 2026.1029.1 → 2026.1029.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.
Files changed (37) hide show
  1. package/dist/{ExecutionDetailPage-7HG36TA5.js → ExecutionDetailPage-Y4K35GJ7.js} +7 -7
  2. package/dist/{ExecutionsListPage-BRMKDKXX.js → ExecutionsListPage-KC3KRBNS.js} +5 -5
  3. package/dist/{WorkflowBuilder-3UTK6UCR.js → WorkflowBuilder-JXBWQG63.js} +8 -8
  4. package/dist/{WorkflowsList-E2QZ3PI5.js → WorkflowsList-2OYIXGWQ.js} +6 -6
  5. package/dist/{chunk-SQXDNCVE.js → chunk-2U56452G.js} +25 -3
  6. package/dist/{chunk-NS2HLVMY.js → chunk-35SQULD5.js} +1 -1
  7. package/dist/{chunk-BQLXKRHS.js → chunk-5ITN7CKS.js} +1 -1
  8. package/dist/{chunk-DHDD3QWD.js → chunk-6Y6I2ODM.js} +6 -6
  9. package/dist/{chunk-D2OK5D3U.js → chunk-DASEJQ4G.js} +3 -3
  10. package/dist/{chunk-DSFC554Z.js → chunk-E2OQHCFG.js} +325 -24
  11. package/dist/{chunk-NCKRDNMC.js → chunk-EAJB5BNF.js} +1 -1
  12. package/dist/{chunk-ZNNCFDPE.js → chunk-HYFLZNRK.js} +8 -5
  13. package/dist/{chunk-QVQBK2AD.js → chunk-LGGHQ7UE.js} +1 -1
  14. package/dist/{chunk-AYTDVP6K.js → chunk-NM5L7MBJ.js} +3 -3
  15. package/dist/{chunk-PYYRJGGQ.js → chunk-R4SBXQ2K.js} +1 -1
  16. package/dist/{chunk-4RNJVKFL.js → chunk-REY7BCWM.js} +4 -4
  17. package/dist/{chunk-XUUGFWTX.js → chunk-SRE2JVSJ.js} +1 -1
  18. package/dist/{chunk-RKGV5RZH.js → chunk-UZMLMPFJ.js} +1 -1
  19. package/dist/{chunk-T6MF7ZFK.js → chunk-VYH65RLH.js} +1 -1
  20. package/dist/{chunk-BYAFJYMD.js → chunk-WDTO6ATM.js} +1 -1
  21. package/dist/{chunk-JLLCI7VZ.js → chunk-WJ3XAHT2.js} +3 -3
  22. package/dist/{chunk-NVWFBN72.js → chunk-X3LQJLV7.js} +1 -1
  23. package/dist/{chunk-XMWYQCEB.js → chunk-XRHZ3IEL.js} +4 -4
  24. package/dist/{chunk-RQLPLNAK.js → chunk-XTXT4NHE.js} +5 -5
  25. package/dist/{chunk-WMC6DWNU.js → chunk-ZDFDC5YW.js} +1 -1
  26. package/dist/executions.js +9 -9
  27. package/dist/history.js +3 -3
  28. package/dist/index.d.ts +12 -4
  29. package/dist/index.js +30 -30
  30. package/dist/observability.js +4 -4
  31. package/dist/settings.js +5 -5
  32. package/dist/templates.js +7 -7
  33. package/dist/{workflow-builder-BxyapBo5.d.ts → workflow-builder-CZFczcE7.d.ts} +9 -0
  34. package/dist/workflow-builder.d.ts +1 -1
  35. package/dist/workflow-builder.js +9 -9
  36. package/dist/workflows-list.js +6 -6
  37. package/package.json +1 -1
@@ -2,13 +2,13 @@ import { deepClone, applyTemplateInputs } from './chunk-GEMNVFPK.js';
2
2
  import { Input } from './chunk-IEVSFCFS.js';
3
3
  import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter } from './chunk-YXMFRQYV.js';
4
4
  import { Badge as Badge$1, Button } from './chunk-BQXVT32O.js';
5
- import { QuotaExhaustedDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-NVWFBN72.js';
6
- import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard, useRunHistory, RunHistoryView, SignalRunDialog } from './chunk-WMC6DWNU.js';
5
+ import { QuotaExhaustedDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-X3LQJLV7.js';
6
+ import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard, useRunHistory, RunHistoryView, SignalRunDialog } from './chunk-ZDFDC5YW.js';
7
7
  import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
8
- import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-XUUGFWTX.js';
9
- import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-BQLXKRHS.js';
8
+ import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-SRE2JVSJ.js';
9
+ import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-5ITN7CKS.js';
10
10
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
11
- import { NODE_CONFIGS, createConfiguredNode, resolveOutputHandles, resolveInputHandles, isNodeConfigsInitialized, useFlowStore, getNodeDetail, useSaveStatusStore, isNodeTypeHiddenFromPalette, liveInternalOperations, resolveNodeOperation, readDisplayOptions, parseParameterValue, canAutosave, STICKY_NOTE_TYPE, isNodeTrigger, resolveUiSpec, RUNS_QUOTA_NAME, throwIfResultError, BILLING_PLANS_PATH, emitUpgradeClicked, FluidGridsContext, emitWorkflowCreated, emitTemplateUsed, ensureNodeConfigsLoaded, registerWorkflowNodeTypes, emitNodeInstalled, useNodeExecution, useDurableFunctionNodesEnabled, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, useIsValidConnection, refetchStoreNodes, AVAILABLE_NODES, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, CODE_WORKFLOW_NODE_TYPE, fieldsFromValue, filterPaletteNodes, useFluidGridsAnalytics, useSaveWorkflow, workflowFingerprint, buildStickyNode, useNodeRegistryRevision, fieldsFromIO, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, readCodeWorkflowState, useCodeWorkflowInterface, clearCodeWorkflowDefinitionCache, isParamVisible, ConnectionSelector, structuredParameterType, nodeAccent, NodeTypeIcon, NODES_METADATA, useConnections, ConnectionFormDialog, useFluidGridsFlag, FLUIDGRIDS_FLAGS, SdkPermissionButton, saveIndicatorOf, inAppLeaveTarget, declaredOutputFields, subscribeWorkflowSaved, pathToExpression, diagnosticsByPath, interfaceHandlers, declaredSignals, ExpressionEditor, toCodeMirrorDiagnostics, formatParameterValue, leaveNeedsConfirmation, buildOperationSeed, snapshotForSave, editStateOf, childRunIdOf, defaultSourcePath, describeOperationError, projectLanguage, changedSourceFiles, isEditableSourcePath, sourceLanguageOf, interfaceFields, isImageIcon, NODES, synchronizeOperationUpdate, NodePropertyPanel, openRunQuotaUpgradePrompt, isTriggerOperation, canRenderOperationPanel, resolveOperationName, AUTOSAVE_RETRY_DELAYS_MS, AUTOSAVE_DEBOUNCE_MS } from './chunk-SQXDNCVE.js';
11
+ import { NODE_CONFIGS, createConfiguredNode, resolveOutputHandles, resolveInputHandles, isNodeConfigsInitialized, useFlowStore, getNodeDetail, useSaveStatusStore, isNodeTypeHiddenFromPalette, liveInternalOperations, resolveNodeOperation, readDisplayOptions, parseParameterValue, canAutosave, STICKY_NOTE_TYPE, isNodeTrigger, resolveUiSpec, RUNS_QUOTA_NAME, throwIfResultError, BILLING_PLANS_PATH, emitUpgradeClicked, FluidGridsContext, emitWorkflowCreated, emitTemplateUsed, ensureNodeConfigsLoaded, registerWorkflowNodeTypes, emitNodeInstalled, useNodeExecution, useDurableFunctionNodesEnabled, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, useIsValidConnection, refetchStoreNodes, AVAILABLE_NODES, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, CODE_WORKFLOW_NODE_TYPE, SdkPermissionButton, FLUIDGRIDS_PERMISSIONS, fieldsFromValue, filterPaletteNodes, useFluidGridsAnalytics, useSaveWorkflow, workflowFingerprint, buildStickyNode, useNodeRegistryRevision, fieldsFromIO, useFluidGridsPermission, readCodeWorkflowState, useCodeWorkflowInterface, clearCodeWorkflowDefinitionCache, isParamVisible, ConnectionSelector, structuredParameterType, nodeAccent, NodeTypeIcon, NODES_METADATA, useConnections, ConnectionFormDialog, useFluidGridsFlag, FLUIDGRIDS_FLAGS, saveIndicatorOf, inAppLeaveTarget, declaredOutputFields, subscribeWorkflowSaved, pathToExpression, diagnosticsByPath, interfaceHandlers, declaredSignals, ExpressionEditor, toCodeMirrorDiagnostics, formatParameterValue, leaveNeedsConfirmation, buildOperationSeed, snapshotForSave, editStateOf, childRunIdOf, defaultSourcePath, describeOperationError, projectLanguage, changedSourceFiles, isEditableSourcePath, sourceLanguageOf, interfaceFields, isImageIcon, NODES, synchronizeOperationUpdate, NodePropertyPanel, openRunQuotaUpgradePrompt, isTriggerOperation, canRenderOperationPanel, runPreparationOf, resolveOperationName, savesInPlace, AUTOSAVE_RETRY_DELAYS_MS, AUTOSAVE_DEBOUNCE_MS } from './chunk-2U56452G.js';
12
12
  import { cn } from './chunk-JL7CASN5.js';
13
13
  import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
14
14
  import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
@@ -1246,6 +1246,17 @@ function useImportWorkflowTemplate() {
1246
1246
  error: error62
1247
1247
  };
1248
1248
  }
1249
+
1250
+ // src/hooks/store/store-context-headers.ts
1251
+ function storeContextHeaders(input2) {
1252
+ const headers = {};
1253
+ if (input2.organizationId) headers["x-organization-id"] = input2.organizationId;
1254
+ if (input2.workspaceId) headers["x-workspace-id"] = input2.workspaceId;
1255
+ if (input2.workspaceToken) {
1256
+ headers["x-workspace-authorization"] = `Bearer ${input2.workspaceToken}`;
1257
+ }
1258
+ return headers;
1259
+ }
1249
1260
  function useStoreNodes(options = {}) {
1250
1261
  const client = useGlobalStoreClient();
1251
1262
  const context = useContext(FluidGridsContext);
@@ -1266,13 +1277,11 @@ function useStoreNodes(options = {}) {
1266
1277
  offset: 0
1267
1278
  }
1268
1279
  };
1269
- const contextHeaders = {};
1270
- if (organizationId) {
1271
- contextHeaders["x-organization-id"] = organizationId;
1272
- }
1273
- if (workspaceId) {
1274
- contextHeaders["x-workspace-id"] = workspaceId;
1275
- }
1280
+ const contextHeaders = storeContextHeaders({
1281
+ organizationId,
1282
+ workspaceId,
1283
+ workspaceToken: getFluidGridsConfig().workspaceToken
1284
+ });
1276
1285
  const { data, loading, error: error62, fetchMore, refetch } = useQuery(BrowseWorkflowNodesDocument, {
1277
1286
  client,
1278
1287
  variables: { input: input2 },
@@ -21769,16 +21778,22 @@ function departingSave(state) {
21769
21778
  function touchesSavedFields(state, previous) {
21770
21779
  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;
21771
21780
  }
21772
- function leavingLosesChanges() {
21781
+ function unsavedState() {
21773
21782
  const flow = useFlowStore.getState();
21774
21783
  const status = useSaveStatusStore.getState();
21775
- return leaveNeedsConfirmation({
21784
+ return {
21776
21785
  // Checked fresh: the dirty flag trails the last edit by a moment.
21777
21786
  dirty: status.dirty || editStateFor(flow) === "dirty",
21778
21787
  autosaveAllowed: autosaveAllowedFor(flow.workflow),
21779
21788
  incomplete: status.incomplete || !isFlowComplete(flow.workflow.nodes, flow.workflow.edges),
21780
21789
  failed: status.failure !== null
21781
- });
21790
+ };
21791
+ }
21792
+ function leavingLosesChanges() {
21793
+ return leaveNeedsConfirmation(unsavedState());
21794
+ }
21795
+ function runPreparation() {
21796
+ return runPreparationOf(unsavedState());
21782
21797
  }
21783
21798
  function savedEverythingBeforeLeaving() {
21784
21799
  return editStateFor(useFlowStore.getState()) !== "dirty";
@@ -40857,8 +40872,14 @@ function NodeDetailView() {
40857
40872
  outputFields
40858
40873
  } = config2;
40859
40874
  const [tab, setTab] = useState(
40860
- "parameters"
40875
+ () => ndv?.tab ?? "parameters"
40861
40876
  );
40877
+ const requestedTab = ndv?.tab ? `${ndv.nodeId}:${ndv.tab}` : void 0;
40878
+ const [shownRequest, setShownRequest] = useState(requestedTab);
40879
+ if (requestedTab !== shownRequest) {
40880
+ setShownRequest(requestedTab);
40881
+ if (ndv?.tab) setTab(ndv.tab);
40882
+ }
40862
40883
  const durableEnabled = useDurableFunctionNodesEnabled();
40863
40884
  const isCodeWorkflow = durableEnabled && node2?.type === CODE_WORKFLOW_NODE_TYPE;
40864
40885
  const [outputView, setOutputView] = useState("schema");
@@ -42454,13 +42475,24 @@ function FailedStatus({ className, compact }) {
42454
42475
  }
42455
42476
  function useUnsavedHint() {
42456
42477
  const tr = useTr();
42457
- const [dbId, status] = useFlowStore(
42458
- useShallow((s) => [s.workflow.dbId, s.workflow.status])
42478
+ const [dbId, status, codeBuildId] = useFlowStore(
42479
+ useShallow((s) => [
42480
+ s.workflow.dbId,
42481
+ s.workflow.status,
42482
+ s.workflow.codeBuildId
42483
+ ])
42459
42484
  );
42460
42485
  const [autosaveEnabled, incomplete] = useSaveStatusStore(
42461
42486
  useShallow((s) => [s.autosaveEnabled, s.incomplete])
42462
42487
  );
42463
- if (!canAutosave({ dbId, status })) {
42488
+ if (codeBuildId) {
42489
+ return tr(
42490
+ "fluidgrids.builder.saveStatus.unsavedCodeVersionHint",
42491
+ "This version runs code and never changes. Save ({{shortcut}}) to keep your changes as a new version.",
42492
+ { shortcut: SAVE_SHORTCUT }
42493
+ );
42494
+ }
42495
+ if (!canAutosave({ dbId, status, codeBuildId })) {
42464
42496
  return tr(
42465
42497
  "fluidgrids.builder.saveStatus.unsavedVersionHint",
42466
42498
  "This version is not a draft. Save ({{shortcut}}) to keep your changes as a new draft version.",
@@ -42563,6 +42595,7 @@ function SaveStatusIndicator({
42563
42595
  var SaveFlowButton = ({ className }) => {
42564
42596
  const tr = useTr();
42565
42597
  const { saveToBackend, isSaving } = useSaveWorkflow();
42598
+ const runsCode = useFlowStore((s) => !!s.workflow.codeBuildId);
42566
42599
  const [isValidating, validateFlow] = useFlowValidator(async (isValid) => {
42567
42600
  if (isValid) {
42568
42601
  await saveToBackend();
@@ -42604,7 +42637,10 @@ var SaveFlowButton = ({ className }) => {
42604
42637
  className: cn$1("flex gap-4", className),
42605
42638
  children: [
42606
42639
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:save-28-filled" }),
42607
- isSaving ? tr("fluidgrids.builder.saveFlowButton.savingLabel", "Saving...") : tr("fluidgrids.builder.saveFlowButton.saveLabel", "Save")
42640
+ isSaving ? tr("fluidgrids.builder.saveFlowButton.savingLabel", "Saving...") : runsCode ? tr(
42641
+ "fluidgrids.builder.saveFlowButton.saveAsNewVersionLabel",
42642
+ "Save as new version"
42643
+ ) : tr("fluidgrids.builder.saveFlowButton.saveLabel", "Save")
42608
42644
  ]
42609
42645
  }
42610
42646
  )
@@ -42700,7 +42736,7 @@ function TriggerDataDialog({
42700
42736
  ),
42701
42737
  parseError && /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--color-status-error-text)]", children: parseError }),
42702
42738
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
42703
- "This data is available to nodes as trigger input. For example, a Botlit node expects",
42739
+ "This data is available to nodes as trigger input. For example, a BotManor node expects",
42704
42740
  " ",
42705
42741
  /* @__PURE__ */ jsx("code", { className: "bg-muted px-1 rounded", children: "message" }),
42706
42742
  " and",
@@ -42742,6 +42778,146 @@ function TriggerDataDialog({
42742
42778
  ] })
42743
42779
  ] }) });
42744
42780
  }
42781
+ function useRunGuard(startRun) {
42782
+ const { saveToBackend } = useSaveWorkflow();
42783
+ const [confirmOpen, setConfirmOpen] = useState(false);
42784
+ const [preparing, setPreparing] = useState(false);
42785
+ const requestRun = useCallback(async () => {
42786
+ const preparation = runPreparation();
42787
+ if (preparation === "run") {
42788
+ startRun();
42789
+ return;
42790
+ }
42791
+ if (preparation === "save-first") {
42792
+ setPreparing(true);
42793
+ let saved = false;
42794
+ try {
42795
+ saved = await saveToBackend({ silent: true }) && savedEverythingBeforeLeaving();
42796
+ } finally {
42797
+ setPreparing(false);
42798
+ }
42799
+ if (saved) {
42800
+ startRun();
42801
+ return;
42802
+ }
42803
+ }
42804
+ setConfirmOpen(true);
42805
+ }, [saveToBackend, startRun]);
42806
+ const dialog = /* @__PURE__ */ jsx(
42807
+ UnsavedRunDialog,
42808
+ {
42809
+ open: confirmOpen,
42810
+ onOpenChange: setConfirmOpen,
42811
+ onRunSaved: () => {
42812
+ setConfirmOpen(false);
42813
+ startRun();
42814
+ },
42815
+ onSavedAndRunnable: () => {
42816
+ setConfirmOpen(false);
42817
+ startRun();
42818
+ }
42819
+ }
42820
+ );
42821
+ return { requestRun, preparing, dialog };
42822
+ }
42823
+ function UnsavedRunDialog({
42824
+ open: open2,
42825
+ onOpenChange,
42826
+ onRunSaved,
42827
+ onSavedAndRunnable
42828
+ }) {
42829
+ const tr = useTr();
42830
+ const manualSave = useManualSave();
42831
+ const [version2, dbId, status, codeBuildId] = useFlowStore(
42832
+ useShallow((s) => [
42833
+ s.workflow.version,
42834
+ s.workflow.dbId,
42835
+ s.workflow.status,
42836
+ s.workflow.codeBuildId
42837
+ ])
42838
+ );
42839
+ const [saving, setSaving] = useState(false);
42840
+ const hasSavedVersion = !!dbId;
42841
+ const runsAfterSave = !hasSavedVersion || savesInPlace({ dbId, status, codeBuildId });
42842
+ const save = useCallback(async () => {
42843
+ setSaving(true);
42844
+ try {
42845
+ const saved = await manualSave();
42846
+ if (!saved) return;
42847
+ if (!runsAfterSave) {
42848
+ onOpenChange(false);
42849
+ return;
42850
+ }
42851
+ if (savedEverythingBeforeLeaving()) onSavedAndRunnable();
42852
+ } finally {
42853
+ setSaving(false);
42854
+ }
42855
+ }, [runsAfterSave, manualSave, onOpenChange, onSavedAndRunnable]);
42856
+ return /* @__PURE__ */ jsx(
42857
+ AlertDialog,
42858
+ {
42859
+ open: open2,
42860
+ onOpenChange: (next) => {
42861
+ if (!next && saving) return;
42862
+ onOpenChange(next);
42863
+ },
42864
+ children: /* @__PURE__ */ jsxs(AlertDialogContent, { "data-testid": "fluidgrids-unsaved-run-dialog", children: [
42865
+ /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
42866
+ /* @__PURE__ */ jsx(AlertDialogTitle, { children: tr(
42867
+ "fluidgrids.builder.runGuard.title",
42868
+ "Run without your unsaved changes?"
42869
+ ) }),
42870
+ /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
42871
+ hasSavedVersion ? tr(
42872
+ "fluidgrids.builder.runGuard.description",
42873
+ "This workflow has changes that are not saved. A run uses the saved version {{version}}, without them.",
42874
+ { version: version2 }
42875
+ ) : tr(
42876
+ "fluidgrids.builder.runGuard.descriptionNotSaved",
42877
+ "This workflow has not been saved yet. Save it before you run it."
42878
+ ),
42879
+ " ",
42880
+ runsAfterSave ? null : tr(
42881
+ "fluidgrids.builder.runGuard.newVersionHint",
42882
+ "Saving keeps your changes as a new version and opens it; run that version."
42883
+ )
42884
+ ] })
42885
+ ] }),
42886
+ /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
42887
+ /* @__PURE__ */ jsx(AlertDialogCancel, { disabled: saving, children: tr("fluidgrids.builder.runGuard.cancelButton", "Cancel") }),
42888
+ hasSavedVersion && /* @__PURE__ */ jsx(
42889
+ Button$2,
42890
+ {
42891
+ "data-agent": "confirm",
42892
+ variant: "outline",
42893
+ onClick: onRunSaved,
42894
+ disabled: saving,
42895
+ children: tr(
42896
+ "fluidgrids.builder.runGuard.runSavedButton",
42897
+ "Run saved version"
42898
+ )
42899
+ }
42900
+ ),
42901
+ /* @__PURE__ */ jsx(
42902
+ Button$2,
42903
+ {
42904
+ "data-agent": "confirm",
42905
+ onClick: () => void save(),
42906
+ disabled: saving,
42907
+ children: saving ? tr("fluidgrids.builder.runGuard.savingButton", "Saving\u2026") : runsAfterSave ? tr(
42908
+ "fluidgrids.builder.runGuard.saveAndRunButton",
42909
+ "Save and run"
42910
+ ) : tr(
42911
+ "fluidgrids.builder.runGuard.saveAsNewVersionButton",
42912
+ "Save as new version"
42913
+ )
42914
+ }
42915
+ )
42916
+ ] })
42917
+ ] })
42918
+ }
42919
+ );
42920
+ }
42745
42921
  var ExecuteWorkflowButton = ({
42746
42922
  className
42747
42923
  }) => {
@@ -42790,9 +42966,11 @@ var ExecuteWorkflowButton = ({
42790
42966
  },
42791
42967
  [executeFullWorkflow, tr]
42792
42968
  );
42969
+ const openTriggerDialog = useCallback(() => setDialogOpen(true), []);
42970
+ const runGuard = useRunGuard(openTriggerDialog);
42793
42971
  const [isValidating, validateFlow] = useFlowValidator(async (isValid) => {
42794
42972
  if (isValid) {
42795
- setDialogOpen(true);
42973
+ await runGuard.requestRun();
42796
42974
  } else {
42797
42975
  toast.error(
42798
42976
  tr(
@@ -42822,7 +43000,7 @@ var ExecuteWorkflowButton = ({
42822
43000
  {
42823
43001
  "data-agent": "confirm",
42824
43002
  onClick: validateFlow,
42825
- disabled: isValidating || isExecuting,
43003
+ disabled: isValidating || isExecuting || runGuard.preparing,
42826
43004
  variant: "default",
42827
43005
  size: "sm",
42828
43006
  className: cn$1(
@@ -42834,7 +43012,7 @@ var ExecuteWorkflowButton = ({
42834
43012
  isExecuting ? tr(
42835
43013
  "fluidgrids.builder.executeWorkflowButton.runningLabel",
42836
43014
  "Running..."
42837
- ) : isValidating ? tr(
43015
+ ) : isValidating || runGuard.preparing ? tr(
42838
43016
  "fluidgrids.builder.executeWorkflowButton.validatingLabel",
42839
43017
  "Validating..."
42840
43018
  ) : tr("fluidgrids.builder.executeWorkflowButton.runLabel", "Run")
@@ -42843,6 +43021,7 @@ var ExecuteWorkflowButton = ({
42843
43021
  )
42844
43022
  }
42845
43023
  ),
43024
+ runGuard.dialog,
42846
43025
  /* @__PURE__ */ jsx(
42847
43026
  TriggerDataDialog,
42848
43027
  {
@@ -46950,6 +47129,127 @@ function BuilderHeader() {
46950
47129
  }
46951
47130
  );
46952
47131
  }
47132
+ function useCodeWorkflowNodeId() {
47133
+ return useFlowStore(
47134
+ (s) => s.workflow.nodes.find((node2) => node2.type === CODE_WORKFLOW_NODE_TYPE)?.id
47135
+ );
47136
+ }
47137
+ function CodeVersionNotice() {
47138
+ const tr = useTr();
47139
+ const [codeBuildId, version2] = useFlowStore(
47140
+ useShallow((s) => [s.workflow.codeBuildId, s.workflow.version])
47141
+ );
47142
+ const openNdv = useFlowStore((s) => s.actions.ndv.open);
47143
+ const dirty = useSaveStatusStore((s) => s.dirty);
47144
+ const saving = useSaveStatusStore((s) => s.saving);
47145
+ const manualSave = useManualSave();
47146
+ const durableEnabled = useDurableFunctionNodesEnabled();
47147
+ const codeNodeId = useCodeWorkflowNodeId();
47148
+ const editSource = useCallback(() => {
47149
+ if (!codeNodeId) return;
47150
+ openNdv({
47151
+ nodeId: codeNodeId,
47152
+ type: CODE_WORKFLOW_NODE_TYPE,
47153
+ tab: "source"
47154
+ });
47155
+ }, [codeNodeId, openNdv]);
47156
+ if (!codeBuildId) return null;
47157
+ const canEditSource = durableEnabled && !!codeNodeId;
47158
+ return /* @__PURE__ */ jsxs(
47159
+ "div",
47160
+ {
47161
+ role: "note",
47162
+ "data-testid": "fluidgrids-code-version-notice",
47163
+ className: "flex flex-wrap items-start gap-x-3 gap-y-2 border-b border-[var(--color-status-info-border)] bg-[var(--color-status-info-bg-subtle)] px-4 py-2 text-sm text-[var(--color-status-info-text)]",
47164
+ children: [
47165
+ /* @__PURE__ */ jsx(Icon, { icon: "mynaui:lock", className: "mt-0.5 size-4 shrink-0", "aria-hidden": true }),
47166
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 basis-64", children: [
47167
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: tr(
47168
+ "fluidgrids.builder.codeVersionNotice.title",
47169
+ "Version {{version}} runs code and is read-only",
47170
+ { version: version2 }
47171
+ ) }),
47172
+ /* @__PURE__ */ jsxs("p", { className: "text-xs", children: [
47173
+ tr(
47174
+ "fluidgrids.builder.codeVersionNotice.reason",
47175
+ "A version that runs code never changes, so its runs always have the code they started with."
47176
+ ),
47177
+ " ",
47178
+ canEditSource ? tr(
47179
+ "fluidgrids.builder.codeVersionNotice.howToEditWithSource",
47180
+ "Change the code in the Source tab of the Code Workflow node or with fluidgrids push. Canvas changes are kept as a new version with the same code when you save."
47181
+ ) : tr(
47182
+ "fluidgrids.builder.codeVersionNotice.howToEdit",
47183
+ "Change the code with fluidgrids push. Canvas changes are kept as a new version with the same code when you save."
47184
+ )
47185
+ ] }),
47186
+ /* @__PURE__ */ jsx(
47187
+ "p",
47188
+ {
47189
+ className: "mt-0.5 truncate font-mono text-[11px]",
47190
+ title: codeBuildId,
47191
+ children: tr(
47192
+ "fluidgrids.builder.codeVersionNotice.build",
47193
+ "Build {{buildId}}",
47194
+ {
47195
+ buildId: codeBuildId
47196
+ }
47197
+ )
47198
+ }
47199
+ )
47200
+ ] }),
47201
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
47202
+ canEditSource && /* @__PURE__ */ jsxs(
47203
+ Button$1,
47204
+ {
47205
+ "data-agent": "confirm",
47206
+ variant: "outline",
47207
+ size: "sm",
47208
+ onClick: editSource,
47209
+ children: [
47210
+ /* @__PURE__ */ jsx(Icon, { icon: "mynaui:code", className: "mr-1 size-4", "aria-hidden": true }),
47211
+ tr(
47212
+ "fluidgrids.builder.codeVersionNotice.editSource",
47213
+ "Edit source"
47214
+ )
47215
+ ]
47216
+ }
47217
+ ),
47218
+ /* @__PURE__ */ jsx(
47219
+ SdkPermissionButton,
47220
+ {
47221
+ permission: [
47222
+ FLUIDGRIDS_PERMISSIONS.WORKFLOW_UPDATE,
47223
+ FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE
47224
+ ],
47225
+ deniedTooltip: tr(
47226
+ "fluidgrids.builder.saveFlowButton.permissionDeniedTooltip",
47227
+ "You don't have permission to save workflows"
47228
+ ),
47229
+ children: /* @__PURE__ */ jsx(
47230
+ Button$1,
47231
+ {
47232
+ "data-agent": "confirm",
47233
+ size: "sm",
47234
+ onClick: () => void manualSave(),
47235
+ disabled: !dirty || saving,
47236
+ title: dirty ? void 0 : tr(
47237
+ "fluidgrids.builder.codeVersionNotice.nothingToSave",
47238
+ "Change the canvas first; there is nothing to save yet."
47239
+ ),
47240
+ children: saving ? tr("fluidgrids.builder.codeVersionNotice.saving", "Saving\u2026") : tr(
47241
+ "fluidgrids.builder.codeVersionNotice.saveAsNewVersion",
47242
+ "Save as new version"
47243
+ )
47244
+ }
47245
+ )
47246
+ }
47247
+ )
47248
+ ] })
47249
+ ]
47250
+ }
47251
+ );
47252
+ }
46953
47253
  var edgeTypes2 = {
46954
47254
  deletable: CustomDeletableEdge
46955
47255
  };
@@ -47074,6 +47374,7 @@ var FlowBuilder = ({ readOnly = false }) => {
47074
47374
  );
47075
47375
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full w-full overflow-hidden", children: [
47076
47376
  !isReadOnly && /* @__PURE__ */ jsx(BuilderHeader, {}),
47377
+ !isReadOnly && /* @__PURE__ */ jsx(CodeVersionNotice, {}),
47077
47378
  /* @__PURE__ */ jsx(BuilderSaveController, { readOnly: isReadOnly }),
47078
47379
  /* @__PURE__ */ jsxs(
47079
47380
  "div",
@@ -1,4 +1,4 @@
1
- import { validateDateRange } from './chunk-RKGV5RZH.js';
1
+ import { validateDateRange } from './chunk-UZMLMPFJ.js';
2
2
  import { useAvailableTags } from './chunk-5GD6OXYW.js';
3
3
  import { executionsControls } from './chunk-D3UWK7GY.js';
4
4
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
@@ -1,7 +1,7 @@
1
- import { isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent, isCreateIntent, CreateWorkflowRefusalDialog, decideMissingWorkflow } from './chunk-QVQBK2AD.js';
2
- import { useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-DSFC554Z.js';
3
- import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-XUUGFWTX.js';
4
- import { useFlowStore, refetchStoreNodes, BILLING_PLANS_PATH, mergeStickyNotes, blankWorkflowCreateInput, classifyCreateRefusal } from './chunk-SQXDNCVE.js';
1
+ import { isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent, isCreateIntent, CreateWorkflowRefusalDialog, decideMissingWorkflow } from './chunk-LGGHQ7UE.js';
2
+ import { useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-E2OQHCFG.js';
3
+ import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-SRE2JVSJ.js';
4
+ import { useFlowStore, refetchStoreNodes, BILLING_PLANS_PATH, codeBuildIdOf, mergeStickyNotes, blankWorkflowCreateInput, classifyCreateRefusal } from './chunk-2U56452G.js';
5
5
  import { useTr } from './chunk-UULVIT25.js';
6
6
  import { useLocation, useNavigate, useParams } from 'react-router';
7
7
  import { toast } from 'sonner';
@@ -268,7 +268,10 @@ function WorkflowItem({
268
268
  name: result?.name ?? "",
269
269
  alias: result?.alias ?? "",
270
270
  dbId: result?.id ?? "",
271
- status: result?.status ?? "DRAFT"
271
+ status: result?.status ?? "DRAFT",
272
+ // A version that runs code is immutable; saves keep edits as a
273
+ // new version (spec code-first 06 §1).
274
+ codeBuildId: codeBuildIdOf(result?.definitionJson)
272
275
  };
273
276
  fetchedWorkflowRef.current = workflowState;
274
277
  let requiredNodeTypes = [];
@@ -1,4 +1,4 @@
1
- import { QuotaExhaustedDialog } from './chunk-NVWFBN72.js';
1
+ import { QuotaExhaustedDialog } from './chunk-X3LQJLV7.js';
2
2
  import { useTr } from './chunk-UULVIT25.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -1,6 +1,6 @@
1
- import { FailureTriagePanel } from './chunk-PYYRJGGQ.js';
2
- import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-T6MF7ZFK.js';
3
- import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-SQXDNCVE.js';
1
+ import { FailureTriagePanel } from './chunk-R4SBXQ2K.js';
2
+ import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-VYH65RLH.js';
3
+ import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-2U56452G.js';
4
4
  import { useTr } from './chunk-UULVIT25.js';
5
5
  import { useState, useMemo, useEffect } from 'react';
6
6
  import { Icon } from '@iconify/react';
@@ -1,4 +1,4 @@
1
- import { throwIfResultError } from './chunk-SQXDNCVE.js';
1
+ import { throwIfResultError } from './chunk-2U56452G.js';
2
2
  import { RunFailureClustersDocument, DismissRunFailureClusterDocument, RunFailureTriageSettingsDocument, SetRunFailureTriageEnabledDocument, FgTriageFailedRunsDocument } from './chunk-7PP6CRXS.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
4
  import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
@@ -1,10 +1,10 @@
1
- import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard } from './chunk-DSFC554Z.js';
2
- import { QuotaExhaustedDialog } from './chunk-NVWFBN72.js';
3
- import { useWorkflowDefinitions, useDuplicateWorkflow } from './chunk-XUUGFWTX.js';
1
+ import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard } from './chunk-E2OQHCFG.js';
2
+ import { QuotaExhaustedDialog } from './chunk-X3LQJLV7.js';
3
+ import { useWorkflowDefinitions, useDuplicateWorkflow } from './chunk-SRE2JVSJ.js';
4
4
  import { templatesControls } from './chunk-D3UWK7GY.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-SQXDNCVE.js';
7
+ import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-2U56452G.js';
8
8
  import { useTr } from './chunk-UULVIT25.js';
9
9
  import { useState, useEffect, useMemo, useCallback } from 'react';
10
10
  import { useParams, useNavigate } from 'react-router';
@@ -1,4 +1,4 @@
1
- import { useFluidGridsAnalytics, throwIfResultError, emitWorkflowCreated, emitRunStarted, runTriggerFromMode, openRunQuotaUpgradePrompt, emitWorkflowPublished } from './chunk-SQXDNCVE.js';
1
+ import { useFluidGridsAnalytics, throwIfResultError, emitWorkflowCreated, emitRunStarted, runTriggerFromMode, openRunQuotaUpgradePrompt, emitWorkflowPublished } from './chunk-2U56452G.js';
2
2
  import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
3
3
  import { WorkflowDefinitionsDocument, WorkflowDefinitionDocument, WorkflowVersionsDocument, CreateWorkflowDefinitionDocument, ImportWorkflowDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, DeleteWorkflowDefinitionDocument, DuplicateWorkflowDocument, RestoreWorkflowVersionDocument, TriggerWorkflowDocument, WorkflowRunsDocument, WorkflowRunDocument, DashboardSummaryDocument, ActivateWorkflowDefinitionDocument, DeactivateWorkflowDefinitionDocument } from './chunk-7PP6CRXS.js';
4
4
  import { useTr } from './chunk-UULVIT25.js';
@@ -1,5 +1,5 @@
1
1
  import { REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS } from './chunk-5ERAJC2I.js';
2
- import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-SQXDNCVE.js';
2
+ import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-2U56452G.js';
3
3
  import { useExecutionsStore } from './chunk-CY6KX4RG.js';
4
4
  import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-7PP6CRXS.js';
5
5
  import { useTr } from './chunk-UULVIT25.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-SQXDNCVE.js';
2
+ import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-2U56452G.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,4 +1,4 @@
1
- import { useWorkflowDefinitions } from './chunk-XUUGFWTX.js';
1
+ import { useWorkflowDefinitions } from './chunk-SRE2JVSJ.js';
2
2
  import { historyControls } from './chunk-D3UWK7GY.js';
3
3
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
4
4
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
@@ -1,8 +1,8 @@
1
- import { Card, FluidGridsMark } from './chunk-DSFC554Z.js';
1
+ import { Card, FluidGridsMark } from './chunk-E2OQHCFG.js';
2
2
  import { Input } from './chunk-IEVSFCFS.js';
3
3
  import { Button } from './chunk-BQXVT32O.js';
4
- import { useWorkflowDefinition } from './chunk-XUUGFWTX.js';
5
- import { FluidGridsProvider, useFlowStore } from './chunk-SQXDNCVE.js';
4
+ import { useWorkflowDefinition } from './chunk-SRE2JVSJ.js';
5
+ import { FluidGridsProvider, useFlowStore } from './chunk-2U56452G.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 { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-SQXDNCVE.js';
1
+ import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-2U56452G.js';
2
2
  import { ExportWorkflowCodeDocument } from './chunk-7PP6CRXS.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
4
  import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
@@ -1,8 +1,8 @@
1
- import { ActionPoliciesTab } from './chunk-NS2HLVMY.js';
2
- import { LogStreamingTab } from './chunk-T6MF7ZFK.js';
3
- import { AgentsTab } from './chunk-BQLXKRHS.js';
1
+ import { ActionPoliciesTab } from './chunk-35SQULD5.js';
2
+ import { LogStreamingTab } from './chunk-VYH65RLH.js';
3
+ import { AgentsTab } from './chunk-5ITN7CKS.js';
4
4
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
5
- import { useFlowStore, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useSaveStatusStore, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, throwIfResultError, describeOperationError, useConnections } from './chunk-SQXDNCVE.js';
5
+ import { useFlowStore, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useSaveStatusStore, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, throwIfResultError, describeOperationError, useConnections } from './chunk-2U56452G.js';
6
6
  import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
7
7
  import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
8
8
  import { useWorkflowDefinitionQuery, useUpdateWorkflowDefinitionMutation, useWorkflowDefinitionsQuery } from './chunk-7PP6CRXS.js';
@@ -1,11 +1,11 @@
1
- import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-QVQBK2AD.js';
2
- import { useExecutions } from './chunk-RKGV5RZH.js';
3
- import { useExportWorkflowAs, downloadWorkflowExport, importAcceptAttribute, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-NVWFBN72.js';
4
- import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-XUUGFWTX.js';
1
+ import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-LGGHQ7UE.js';
2
+ import { useExecutions } from './chunk-UZMLMPFJ.js';
3
+ import { useExportWorkflowAs, downloadWorkflowExport, importAcceptAttribute, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-X3LQJLV7.js';
4
+ import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-SRE2JVSJ.js';
5
5
  import { workflowsListControls } from './chunk-D3UWK7GY.js';
6
6
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
7
7
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
8
- import { createThenOpen, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useFluidGridsFlag, FLUIDGRIDS_FLAGS, SdkPermissionButton, BILLING_PLANS_PATH, describeOperationError, useFlowStore, SdkPermissionGate, isQuotaExhaustedFailure } from './chunk-SQXDNCVE.js';
8
+ import { createThenOpen, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useFluidGridsFlag, FLUIDGRIDS_FLAGS, SdkPermissionButton, BILLING_PLANS_PATH, describeOperationError, useFlowStore, SdkPermissionGate, isQuotaExhaustedFailure } from './chunk-2U56452G.js';
9
9
  import { useTr } from './chunk-UULVIT25.js';
10
10
  import { useState, useRef, useCallback, useMemo } from 'react';
11
11
  import { useNavigate } from 'react-router';
@@ -1,6 +1,6 @@
1
1
  import { useEntityTags, useTagEntity, useUntagEntity } from './chunk-5GD6OXYW.js';
2
2
  import { notifyFluidGridsAiCreditsUpdated } from './chunk-Y53CVZVV.js';
3
- import { throwIfResultError, describeOperationError, signalPayloadCard, components_default, payloadFromCardValues, parseRawSignalPayload } from './chunk-SQXDNCVE.js';
3
+ import { throwIfResultError, describeOperationError, signalPayloadCard, components_default, payloadFromCardValues, parseRawSignalPayload } from './chunk-2U56452G.js';
4
4
  import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
5
5
  import { TerminateWorkflowRunDocument, WorkflowRunHistoryDocument, RunEventAppendedDocument, WorkflowProposalDocument, ProposeRunFixDocument, ProposeWorkflowChangeDocument, ApplyWorkflowProposalDocument, RejectWorkflowProposalDocument, CancelWorkflowProposalDocument, DurableRunFieldsDocument, WorkflowRunDeterminismStatusDocument, WorkflowRunStackTraceDocument, SignalWorkflowRunDocument } from './chunk-7PP6CRXS.js';
6
6
  import { useTr } from './chunk-UULVIT25.js';