@burdenoff/fluidgrids-fe-sdk 2026.1111.13 → 2026.1111.14

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 (30) hide show
  1. package/dist/{ExecutionDetailPage-CDkJeeu2.js → ExecutionDetailPage-itor_whl.js} +4 -4
  2. package/dist/{FluidGridsProvider-CDZjKmfD.js → FluidGridsProvider-B30VcLdX.js} +236 -17
  3. package/dist/{HistoryPage-DnVGN_72.js → HistoryPage-DueEld8g.js} +1 -1
  4. package/dist/{InsightsPage-CGRpZtGu.js → InsightsPage-DQ7KCR9h.js} +2 -2
  5. package/dist/{ManagedAiPolicyAuthority-DbJBledZ.js → ManagedAiPolicyAuthority-C0YPTJMS.js} +2 -2
  6. package/dist/{MissingNodesInstallModal-Ca4f--lw.js → MissingNodesInstallModal-Cj31oMDX.js} +1 -1
  7. package/dist/{TemplateConfigurationModal-ChQsXf0-.js → TemplateConfigurationModal-BAPCG8y-.js} +1 -1
  8. package/dist/{TemplateDetailPanel-C0YiVdub.js → TemplateDetailPanel-CZ1uxEQL.js} +1 -1
  9. package/dist/{TemplatesPage-QXtq6mI3.js → TemplatesPage-DWdgZnIH.js} +4 -4
  10. package/dist/{WorkflowSearchRedirect-B4nHALJg.js → WorkflowSearchRedirect-C8vhSZK9.js} +32 -49
  11. package/dist/{WorkflowShareDialog-ByTSWwwR.js → WorkflowShareDialog-DnBQA3V6.js} +1 -1
  12. package/dist/{WorkflowsList-B9F2e8M6.js → WorkflowsList-74jjJFsJ.js} +4 -4
  13. package/dist/{agentTools-C0g2OWvI.js → agentTools-D5AW7zHn.js} +2 -2
  14. package/dist/{canvasNoteTools-BUWY18XK.js → canvasNoteTools-BqQTTCll.js} +2 -2
  15. package/dist/executions.js +1 -1
  16. package/dist/{flow-builder-BvCQAGDR.js → flow-builder-BR8p5tXG.js} +52 -62
  17. package/dist/history.js +1 -1
  18. package/dist/index.js +16 -16
  19. package/dist/{node-detail-view-CPD_NSZc.js → node-detail-view-Dnhqdn8C.js} +3 -3
  20. package/dist/observability.js +1 -1
  21. package/dist/{quick-config-panel-DHkYGaCL.js → quick-config-panel-C4tSpCrt.js} +2 -2
  22. package/dist/settings.js +1 -1
  23. package/dist/templates.js +1 -1
  24. package/dist/{useExecutions-BqoD7XWi.js → useExecutions-CNEN1ENQ.js} +1 -1
  25. package/dist/{useObservability-Cs-5_NHh.js → useObservability-CmFFXmKb.js} +1 -1
  26. package/dist/{useRunHistory-CEL-CIz-.js → useRunHistory-DhU_mrzF.js} +1 -1
  27. package/dist/{useWorkflows-Bwpvfdgv.js → useWorkflows-D01LC39Y.js} +1 -1
  28. package/dist/workflow-builder.js +2 -2
  29. package/dist/workflows-list.js +1 -1
  30. package/package.json +1 -1
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { Dr as WorkflowDefinitionDocument, Oi as getFluidGridsClient, Ui as throwIfResultError, oa as __exportAll, qi as getFluidGridsConfig } from "./node-endpoint-configs-DHFGA5MQ.js";
3
- import { Ct as classifyCreateRefusal, Dt as useSaveStatusStore, G as paramsFromOperation, Jt as codeBuildIdOf, On as useCanvasEdges, P as createConfiguredNode, Qt as workflowFingerprint, Sn as BILLING_PLANS_PATH, Wt as rememberRevision, f as refetchStoreNodes, l as ensureNodeTypesLoaded, m as registerWorkflowNodeTypes, n as FluidGridsProvider, o as NODE_CONFIGS, p as registerNodeManifests, sn as resolveNodeOperation, xt as blankWorkflowCreateInput } from "./FluidGridsProvider-CDZjKmfD.js";
3
+ import { At as useSaveStatusStore, Et as classifyCreateRefusal, J as paramsFromOperation, L as createConfiguredNode, Tn as BILLING_PLANS_PATH, Zt as codeBuildIdOf, g as registerWorkflowNodeTypes, h as registerNodeManifests, jn as useCanvasEdges, m as refetchStoreNodes, n as FluidGridsProvider, o as NODE_CONFIGS, qt as rememberRevision, tn as workflowFingerprint, u as ensureNodeTypesLoaded, un as resolveNodeOperation, wt as blankWorkflowCreateInput } from "./FluidGridsProvider-B30VcLdX.js";
4
4
  import { F as mergeStickyNotes, H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
5
5
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
6
- import { H as useInstalledNodes, R as buildNodeCheck, St as Input, gt as Card, h as useWorkflowReloadStore, ht as FluidGridsMark, m as releaseLeaseKeptForReload, mt as useNodeSelectedEvent, t as FlowBuilderPage, z as buildRequiredNodeTypes } from "./flow-builder-BvCQAGDR.js";
6
+ import { B as getWorkflowNodeTypes, Ct as Input, R as buildNodeCheck, U as useInstalledNodes, _t as Card, gt as FluidGridsMark, h as useWorkflowReloadStore, ht as useNodeSelectedEvent, m as releaseLeaseKeptForReload, t as FlowBuilderPage, z as buildRequiredNodeTypes } from "./flow-builder-BR8p5tXG.js";
7
7
  import { t as cn } from "./cn-QqidFIgr.js";
8
8
  import { i as Button } from "./PublishCustomNodeAction-D2F7oN0S.js";
9
- import { l as useLazyWorkflowDefinition, m as useWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-Bwpvfdgv.js";
10
- import { O as CreateWorkflowRefusalDialog } from "./WorkflowShareDialog-ByTSWwwR.js";
9
+ import { l as useLazyWorkflowDefinition, m as useWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-D01LC39Y.js";
10
+ import { O as CreateWorkflowRefusalDialog } from "./WorkflowShareDialog-DnBQA3V6.js";
11
11
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
12
12
  import { t as canvasFromDefinition } from "./definition-canvas--3MPHoP-.js";
13
13
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
@@ -1626,7 +1626,7 @@ function GuidedTourStarter({ ready }) {
1626
1626
  }
1627
1627
 
1628
1628
  // src/builder/app/workflow/work/page.tsx
1629
- const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Ca4f--lw.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1629
+ const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Cj31oMDX.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1630
1630
  function WorkflowItem({ readonly = false }) {
1631
1631
  if (readonly) {
1632
1632
  const queryParams = new URLSearchParams(window.location.search);
@@ -1673,7 +1673,6 @@ function WorkflowItem({ readonly = false }) {
1673
1673
  const fetchedWorkflowRef = useRef(null);
1674
1674
  const loadSeqRef = useRef(0);
1675
1675
  const { installedAppIds } = useInstalledNodes();
1676
- const [pendingWorkflow, setPendingWorkflow] = useState(null);
1677
1676
  const [nodeCheck, setNodeCheck] = useState(null);
1678
1677
  const [configModalOpen, setConfigModalOpen] = useState(false);
1679
1678
  const [installing, setInstalling] = useState(false);
@@ -1689,15 +1688,14 @@ function WorkflowItem({ readonly = false }) {
1689
1688
  trRef.current = tr;
1690
1689
  });
1691
1690
  const handleInstallConfirm = useCallback(async () => {
1692
- if (!pendingWorkflow) return;
1693
1691
  const nodesToInstall = (nodeCheck?.missing ?? []).filter((n) => !!n.storeProductId);
1694
1692
  const failed = [];
1695
1693
  if (nodesToInstall.length > 0) {
1696
1694
  setInstalling(true);
1697
1695
  setInstallErrors([]);
1698
1696
  try {
1699
- const { getGlobalStoreClient } = await import("./FluidGridsProvider-CDZjKmfD.js").then((n) => n.dr);
1700
- const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-CDZjKmfD.js").then((n) => n._);
1697
+ const { getGlobalStoreClient } = await import("./FluidGridsProvider-B30VcLdX.js").then((n) => n.mr);
1698
+ const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-B30VcLdX.js").then((n) => n.y);
1701
1699
  const { getFluidGridsConfig } = await import("./node-endpoint-configs-DHFGA5MQ.js").then((n) => n.Ki);
1702
1700
  const storeClient = getGlobalStoreClient();
1703
1701
  const cfg = getFluidGridsConfig();
@@ -1724,6 +1722,7 @@ function WorkflowItem({ readonly = false }) {
1724
1722
  }
1725
1723
  }
1726
1724
  await refetchStoreNodes();
1725
+ await ensureNodeTypesLoaded(nodesToInstall.map((n) => n.nodeType));
1727
1726
  } finally {
1728
1727
  setInstalling(false);
1729
1728
  setInstallProgress(null);
@@ -1735,17 +1734,12 @@ function WorkflowItem({ readonly = false }) {
1735
1734
  }
1736
1735
  setInstallErrors([]);
1737
1736
  setConfigModalOpen(false);
1738
- setWorkflow(pendingWorkflow);
1739
- setPendingWorkflow(null);
1740
1737
  setNodeCheck(null);
1741
- }, [pendingWorkflow, nodeCheck]);
1738
+ }, [nodeCheck]);
1742
1739
  const handleSkipInstall = useCallback(() => {
1743
- if (!pendingWorkflow) return;
1744
1740
  setConfigModalOpen(false);
1745
- setWorkflow(pendingWorkflow);
1746
- setPendingWorkflow(null);
1747
1741
  setNodeCheck(null);
1748
- }, [pendingWorkflow]);
1742
+ }, []);
1749
1743
  const newWorkflow = useMemo(() => ({
1750
1744
  id: id ?? "",
1751
1745
  workflowKey: id ?? "",
@@ -1778,10 +1772,24 @@ function WorkflowItem({ readonly = false }) {
1778
1772
  if (pendingReloadRef.current === target) pendingReloadRef.current = null;
1779
1773
  return true;
1780
1774
  };
1775
+ const offerMissingNodes = (nodes) => {
1776
+ buildRequiredNodeTypes(nodes).then((requiredNodeTypes) => {
1777
+ if (!mounted || requiredNodeTypes.length === 0) return;
1778
+ const check = doNodeCheckRef.current(requiredNodeTypes);
1779
+ if (check.missing.length > 0 || check.missingPaid.length > 0) {
1780
+ setNodeCheck(check);
1781
+ setConfigModalOpen(true);
1782
+ }
1783
+ }).catch((error) => {
1784
+ console.warn("[WorkflowItem] Missing-nodes check failed:", error);
1785
+ });
1786
+ };
1781
1787
  const loadWorkflow = async () => {
1782
1788
  try {
1783
1789
  resetWorkflow();
1784
1790
  if (mounted) setNotFound(false);
1791
+ if (mounted) setConfigModalOpen(false);
1792
+ if (mounted) setNodeCheck(null);
1785
1793
  if (mounted) setLoadError(null);
1786
1794
  if (mounted) setReloadFailed(false);
1787
1795
  if (version && mounted) setIsLoading(true);
@@ -1796,26 +1804,12 @@ function WorkflowItem({ readonly = false }) {
1796
1804
  nodes: manifest.nodes ?? [],
1797
1805
  edges: manifest.edges ?? []
1798
1806
  };
1799
- let requiredNodeTypes = [];
1800
- try {
1801
- requiredNodeTypes = await buildRequiredNodeTypes(sharedWorkflow.nodes);
1802
- } catch {}
1803
1807
  if (mounted) {
1804
1808
  localStorage.removeItem("pendingSharedWorkflow");
1805
- if (requiredNodeTypes.length > 0) {
1806
- const check = doNodeCheckRef.current(requiredNodeTypes);
1807
- if (check.missing.length > 0 || check.missingPaid.length > 0) {
1808
- setPendingWorkflow(sharedWorkflow);
1809
- setNodeCheck(check);
1810
- setConfigModalOpen(true);
1811
- setIsLoading(false);
1812
- fromSharedLoadedRef.current = true;
1813
- return;
1814
- }
1815
- }
1816
1809
  setWorkflow(sharedWorkflow);
1817
1810
  setIsLoading(false);
1818
1811
  fromSharedLoadedRef.current = true;
1812
+ offerMissingNodes(sharedWorkflow.nodes);
1819
1813
  }
1820
1814
  return;
1821
1815
  } catch (e) {
@@ -1857,7 +1851,6 @@ function WorkflowItem({ readonly = false }) {
1857
1851
  }
1858
1852
  const freshCreate = createIntentRef.current && !creatingRef.current && !fetchedCopy() && !loadRunId;
1859
1853
  const result = freshCreate ? null : await getWorkflow(id, void 0, version);
1860
- if (result?.nodeManifests) registerNodeManifests(result.nodeManifests);
1861
1854
  const definitionJson = result?.definitionJson;
1862
1855
  const defData = definitionJson?.data ?? (definitionJson?.nodes ? definitionJson : void 0);
1863
1856
  if (defData) {
@@ -1874,21 +1867,11 @@ function WorkflowItem({ readonly = false }) {
1874
1867
  codeBuildId: codeBuildIdOf(result?.definitionJson)
1875
1868
  };
1876
1869
  if (recordFetched(workflowState)) rememberRevision(result?.id, result?.revision);
1877
- let requiredNodeTypes = [];
1878
- try {
1879
- requiredNodeTypes = await buildRequiredNodeTypes(workflowState.nodes);
1880
- } catch {}
1881
- if (mounted && requiredNodeTypes.length > 0) {
1882
- const check = doNodeCheckRef.current(requiredNodeTypes);
1883
- if (check.missing.length > 0 || check.missingPaid.length > 0) {
1884
- setPendingWorkflow(workflowState);
1885
- setNodeCheck(check);
1886
- setConfigModalOpen(true);
1887
- setIsLoading(false);
1888
- return;
1889
- }
1870
+ if (Array.isArray(result?.nodeManifests)) registerNodeManifests(result.nodeManifests, getWorkflowNodeTypes(workflowState.nodes));
1871
+ if (mounted) {
1872
+ setWorkflow(workflowState);
1873
+ offerMissingNodes(workflowState.nodes);
1890
1874
  }
1891
- if (mounted) setWorkflow(workflowState);
1892
1875
  return;
1893
1876
  }
1894
1877
  if (mounted) {
@@ -2054,14 +2037,14 @@ function WorkflowItem({ readonly = false }) {
2054
2037
  onBack: () => navigate("../list")
2055
2038
  });
2056
2039
  return /* @__PURE__ */ jsxs(Fragment, { children: [
2057
- configModalOpen && pendingWorkflow && /* @__PURE__ */ jsx(Suspense, {
2040
+ configModalOpen && workflow && /* @__PURE__ */ jsx(Suspense, {
2058
2041
  fallback: null,
2059
2042
  children: /* @__PURE__ */ jsx(LazyMissingNodesInstallModal, {
2060
2043
  open: configModalOpen,
2061
2044
  onOpenChange: (open) => {
2062
2045
  if (!open) handleSkipInstall();
2063
2046
  },
2064
- workflowName: pendingWorkflow.name,
2047
+ workflowName: workflow.name,
2065
2048
  nodeCheckResult: nodeCheck,
2066
2049
  onConfirm: handleInstallConfirm,
2067
2050
  onSkip: handleSkipInstall,
@@ -2085,7 +2068,7 @@ function WorkflowItem({ readonly = false }) {
2085
2068
  }),
2086
2069
  workflow && !isLoading && /* @__PURE__ */ jsx(FlowBuilderPage, { workflow }),
2087
2070
  workflow && !isLoading && /* @__PURE__ */ jsx(AssistantLiveCanvasHost, {}),
2088
- /* @__PURE__ */ jsx(GuidedTourStarter, { ready: Boolean(workflow && !isLoading) })
2071
+ /* @__PURE__ */ jsx(GuidedTourStarter, { ready: Boolean(workflow && !isLoading && !configModalOpen) })
2089
2072
  ] });
2090
2073
  }
2091
2074
 
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { Bi as describeOperationError, Nn as ShareWorkflowDocument, Oi as getFluidGridsClient, Ui as throwIfResultError, ft as ExportWorkflowCodeDocument, ui as WorkflowSharingDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
3
- import { gn as emitUpgradeClicked, ln as useFluidGridsAnalytics, vn as emitWorkflowLimitHit, wn as WORKFLOWS_QUOTA_NAME } from "./FluidGridsProvider-CDZjKmfD.js";
3
+ import { Dn as WORKFLOWS_QUOTA_NAME, fn as useFluidGridsAnalytics, xn as emitWorkflowLimitHit, yn as emitUpgradeClicked } from "./FluidGridsProvider-B30VcLdX.js";
4
4
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
5
5
  import { CF as WorkflowExportFormat, Fd as FidelityLevel, JF as WorkflowShareRole, hF as WorkflowAccess, nI as WorkflowVisibility, qF as WorkflowSharePrincipalType } from "./graphql-types-XcDLtFwU.js";
6
6
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-Bwpvfdgv.js";
3
- import { Bn as FLUIDGRIDS_FLAGS, Dn as isQuotaExhaustedFailure, Jn as useFluidGridsFlag, Sn as BILLING_PLANS_PATH, t as FluidGridsContext, wt as createThenOpen } from "./FluidGridsProvider-CDZjKmfD.js";
4
- import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-ByTSWwwR.js";
2
+ import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-D01LC39Y.js";
3
+ import { An as isQuotaExhaustedFailure, Dt as createThenOpen, Tn as BILLING_PLANS_PATH, Un as FLUIDGRIDS_FLAGS, Zn as useFluidGridsFlag, t as FluidGridsContext } from "./FluidGridsProvider-B30VcLdX.js";
4
+ import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-DnBQA3V6.js";
5
5
  import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
6
6
  import { CF as WorkflowExportFormat, gF as WorkflowAccessFilter, hI as FLUIDGRIDS_PERMISSIONS, vI as SdkPermissionButton, xI as useFluidGridsPermission, yI as SdkPermissionGate } from "./graphql-types-XcDLtFwU.js";
7
7
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
8
8
  import { $t as RenameWorkflowFolderDocument, Bi as describeOperationError, Et as MoveWorkflowFolderDocument, K as DeleteWorkflowFolderDocument, M as CreateWorkflowFolderDocument, N as CreateWorkflowProjectDocument, Oi as getFluidGridsClient, Pr as WorkflowFoldersDocument, Ui as throwIfResultError, Ur as WorkflowProjectsDocument, _ as BulkMoveWorkflowsToFolderDocument, en as RenameWorkflowProjectDocument, g as BulkDeleteWorkflowsDocument, h as BulkAssignWorkflowsToProjectDocument, oa as __exportAll, q as DeleteWorkflowProjectDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
9
- import { a as useExecutions } from "./useExecutions-BqoD7XWi.js";
9
+ import { a as useExecutions } from "./useExecutions-CNEN1ENQ.js";
10
10
  import { a as firstWorkflowProgress, i as builderPathFor, r as GUIDED_TOUR_STATE } from "./firstWorkflow-C_h0KMB2.js";
11
11
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
12
12
  import { i as workflowsListControls } from "./pageControlSpecs-DZJ9K37m.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { Dt as useSaveStatusStore, G as paramsFromOperation, K as selectedOperationOf, P as createConfiguredNode, U as nodeTitle, V as fixedParameterState, h as registryNodeData, o as NODE_CONFIGS, u as isNodeConfigsInitialized, ut as autosaveAllowedFor, vt as isFlowComplete } from "./FluidGridsProvider-CDZjKmfD.js";
2
+ import { At as useSaveStatusStore, J as paramsFromOperation, K as nodeTitle, L as createConfiguredNode, W as fixedParameterState, Y as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, o as NODE_CONFIGS, pt as autosaveAllowedFor, xt as isFlowComplete } from "./FluidGridsProvider-B30VcLdX.js";
3
3
  import { E as resolveOutputHandles, H as useFlowStore, T as resolveInputHandles } from "./node-operation-selection--oy-yEq_.js";
4
- import { I as computeAttachPosition, Ot as isNodeTypeHiddenFromPalette } from "./flow-builder-BvCQAGDR.js";
4
+ import { I as computeAttachPosition, kt as isNodeTypeHiddenFromPalette } from "./flow-builder-BR8p5tXG.js";
5
5
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
6
6
  import { z } from "zod";
7
7
 
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { g as notesKeyOf, v as useAgentMarksStore, y as toPlainText } from "./flow-builder-BvCQAGDR.js";
3
- import { G as paramsFromOperation, K as selectedOperationOf, U as nodeTitle } from "./FluidGridsProvider-CDZjKmfD.js";
2
+ import { g as notesKeyOf, v as useAgentMarksStore, y as toPlainText } from "./flow-builder-BR8p5tXG.js";
3
+ import { J as paramsFromOperation, K as nodeTitle, Y as selectedOperationOf } from "./FluidGridsProvider-B30VcLdX.js";
4
4
  import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
5
5
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
6
6
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import { t as ExecutionDetailPage, y as ExecutionsListPage } from "./ExecutionDetailPage-CDkJeeu2.js";
2
+ import { t as ExecutionDetailPage, y as ExecutionsListPage } from "./ExecutionDetailPage-itor_whl.js";
3
3
 
4
4
  export { ExecutionDetailPage, ExecutionsListPage };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { A as nodeAccent, B as NODE_TYPE_DRAG_DATA_FORMAT, G as isTriggerOperation, H as useFlowStore, M as isImageIcon, T as resolveInputHandles, U as useIsValidConnection, V as STICKY_NOTE_TYPE, g as toCodeMirrorDiagnostics, j as NodeTypeIcon, r as CODE_WORKFLOW_NODE_TYPE, z as NODE_OPERATION_DRAG_DATA_FORMAT } from "./node-operation-selection--oy-yEq_.js";
3
- import { $ as resolveLoadOptionsSpec, $n as useWorkflowTestsEnabled, $t as useNodeExecution, A as UninstallWorkflowNodeDocument, At as bannerOf, B as coerceNumber, Bn as FLUIDGRIDS_FLAGS, Bt as forgetSessionForReload, C as InstallOrganizationPrivateNodeDocument, Cn as RUNS_QUOTA_NAME, D as OrganizationPrivateNodesDocument, Dn as isQuotaExhaustedFailure, Dt as useSaveStatusStore, Et as saveIndicatorOf, F as useInsertNode, Ft as phaseAfterTakeOver, G as paramsFromOperation, Gt as AUTOSAVE_DEBOUNCE_MS, H as nodeSubtitle, Ht as sessionBeforeReload, I as MissingParametersDialog, It as releasesOnClose, Jn as useFluidGridsFlag, Kn as useDurableFunctionNodesEnabled, Kt as AUTOSAVE_RETRY_DELAYS_MS, L as useRunGuard, Lt as shouldReleaseForIdle, M as getNodeMetadata, Mt as leaseCallQueue, N as buildOperationSeed, Nt as leaseCallSequence, On as useCanvasEdges, Ot as useEditLeaseLocked, Pt as phaseAfterAcquire, Q as optionListValues, Qt as workflowFingerprint, R as workflowParameterIssues, Rt as tickAction, S as GetNodeInstallableVersionsDocument, Sn as BILLING_PLANS_PATH, T as InstallWorkflowNodeDocument, Tn as collectExtensions, Tt as refusalOfQuota, U as nodeTitle, Ut as rememberOwnStatusChange, Vt as rememberSessionForReload, W as optionText, Wt as rememberRevision, X as isStringOptionList, Xn as usePaletteGates, Xt as inAppLeaveTarget, Z as optionListText, Zn as usePhaseCFlags, Zt as saveFailureActionOf, _n as emitWorkflowCreated, _t as watchLeavingLosesChanges, a as NODES_METADATA, an as structuredParameterType, ar as getNodeDetail, b as CreateStoreOrderDocument, bt as useSaveWorkflow, c as ensureNodeConfigsLoaded, cn as isParamVisible, cr as useBuilderReadOnly, ct as useGuardedNavigate, d as onNodeTypesUpdate, dn as emitNodeInstalled, dt as departingSave, er as connectionsForAdapter, et as ConditionTreeBuilder, f as refetchStoreNodes, ft as editStateFor, g as scheduleNodePaletteLoad, gn as emitUpgradeClicked, gt as touchesSavedFields, hn as emitTemplateUsed, ht as savedEverythingBeforeLeaving, i as AVAILABLE_NODES, in as parseParameterValue, ir as replaceAdapterConnections, it as parseMappingValue, jn as loadDefinitionJson, jt as isLocked, k as UninstallOrganizationPrivateNodeDocument, kn as useNodeRegistryRevision, kt as useEditLeaseStore, l as ensureNodeTypesLoaded, ln as useFluidGridsAnalytics, lt as useManualSave, m as registerWorkflowNodeTypes, mt as leavingLosesChanges, nr as matchesAdapterProvider, nt as casesFromRules, o as NODE_CONFIGS, or as buildStickyNode, ot as boundFieldsOf, pt as editingLeaseLocked, q as useNodeConfig, qn as useDurableParityEnabled, qt as canAutosave, rn as formatParameterValue, rr as newConnectionProviderKey, rt as FieldTree, s as NODE_TYPES, sr as BuilderReadOnlyProvider, st as missingRequiredParameters, t as FluidGridsContext, tr as isOptionalAdapter, tt as SwitchRulesEditor, u as isNodeConfigsInitialized, un as openRunQuotaUpgradePrompt, ur as getGlobalStoreClient, ut as autosaveAllowedFor, v as BrowseWorkflowNodesDocument, vt as isFlowComplete, w as InstallPurchasedNodeDocument, x as GetMyNodeInstallationsDocument, y as BrowseWorkflowTemplatesDocument, yt as useFlowValidator, z as asRecord, zt as EDIT_SESSION_ID } from "./FluidGridsProvider-CDZjKmfD.js";
3
+ import { $ as isStringOptionList, $n as usePaletteGates, $t as inAppLeaveTarget, A as StoreNodeProductsByTypeDocument, An as isQuotaExhaustedFailure, At as useSaveStatusStore, B as useRunGuard, Bt as shouldReleaseForIdle, C as GetMyNodeInstallationsDocument, Ct as useSaveWorkflow, D as InstallWorkflowNodeDocument, E as InstallPurchasedNodeDocument, En as RUNS_QUOTA_NAME, F as getNodeMetadata, Ft as leaseCallQueue, G as nodeSubtitle, Gt as sessionBeforeReload, H as asRecord, Ht as EDIT_SESSION_ID, I as buildOperationSeed, It as leaseCallSequence, J as paramsFromOperation, Jt as AUTOSAVE_DEBOUNCE_MS, K as nodeTitle, Kt as rememberOwnStatusChange, Lt as phaseAfterAcquire, M as UninstallOrganizationPrivateNodeDocument, Mn as useNodeRegistryRevision, Mt as useEditLeaseStore, N as UninstallWorkflowNodeDocument, Nt as bannerOf, On as collectExtensions, Ot as refusalOfQuota, Pn as loadDefinitionJson, Pt as isLocked, R as useInsertNode, Rt as phaseAfterTakeOver, S as CreateStoreOrderDocument, St as useFlowValidator, T as InstallOrganizationPrivateNodeDocument, Tn as BILLING_PLANS_PATH, U as coerceNumber, Un as FLUIDGRIDS_FLAGS, Ut as forgetSessionForReload, V as workflowParameterIssues, Vt as tickAction, Wt as rememberSessionForReload, X as useNodeConfig, Xn as useDurableParityEnabled, Xt as canAutosave, Yn as useDurableFunctionNodesEnabled, Yt as AUTOSAVE_RETRY_DELAYS_MS, Zn as useFluidGridsFlag, _t as leavingLosesChanges, a as NODES_METADATA, ar as matchesAdapterProvider, at as casesFromRules, b as BrowseWorkflowNodesDocument, bn as emitWorkflowCreated, bt as watchLeavingLosesChanges, c as ensureInstalledNodeTypesLoaded, cn as structuredParameterType, cr as getNodeDetail, d as ensureRegistryNodeTypesLoaded, dn as isParamVisible, dr as useBuilderReadOnly, dt as useGuardedNavigate, en as saveFailureActionOf, er as usePhaseCFlags, et as optionListText, f as isNodeConfigsInitialized, fn as useFluidGridsAnalytics, ft as useManualSave, g as registerWorkflowNodeTypes, gt as editingLeaseLocked, ht as editStateFor, i as AVAILABLE_NODES, ir as isOptionalAdapter, it as SwitchRulesEditor, jn as useCanvasEdges, jt as useEditLeaseLocked, k as OrganizationPrivateNodesDocument, kt as saveIndicatorOf, l as ensureNodeConfigsLoaded, lr as buildStickyNode, lt as boundFieldsOf, m as refetchStoreNodes, mn as emitNodeInstalled, mt as departingSave, nn as useNodeExecution, nr as useWorkflowTestsEnabled, nt as resolveLoadOptionsSpec, o as NODE_CONFIGS, on as formatParameterValue, or as newConnectionProviderKey, ot as FieldTree, p as onNodeTypesUpdate, pn as openRunQuotaUpgradePrompt, pr as getGlobalStoreClient, pt as autosaveAllowedFor, q as optionText, qt as rememberRevision, rr as connectionsForAdapter, rt as ConditionTreeBuilder, s as NODE_TYPES, sn as parseParameterValue, sr as replaceAdapterConnections, st as parseMappingValue, t as FluidGridsContext, tn as workflowFingerprint, tt as optionListValues, ur as BuilderReadOnlyProvider, ut as missingRequiredParameters, v as scheduleNodePaletteLoad, vn as emitTemplateUsed, vt as savedEverythingBeforeLeaving, w as GetNodeInstallableVersionsDocument, x as BrowseWorkflowTemplatesDocument, xt as isFlowComplete, yn as emitUpgradeClicked, yt as touchesSavedFields, z as MissingParametersDialog, zt as releasesOnClose } from "./FluidGridsProvider-B30VcLdX.js";
4
4
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
5
5
  import { Bi as describeOperationError, Br as WorkflowGitRepositoryDocument, Ct as LinkWorkflowGitRepositoryDocument, Dr as WorkflowDefinitionDocument, Ei as WorkspaceRunsQuotaDocument, Ht as PreviewScheduleDocument, Ir as WorkflowGenerationTemplatesDocument, J as DeleteWorkflowRolloutDocument, Kt as PushWorkflowToGitDocument, Li as emitFluidGridsEvent, Lr as WorkflowGitCommitsDocument, Mt as NodeSchemaIntrospectionDocument, Ni as waitForFluidGridsClient, Nr as WorkflowEnvironmentsDocument, Oi as getFluidGridsClient, Pt as NodeUsageStatusDocument, Qt as RemoveNodeFromWorkflowsDocument, Rr as WorkflowGitDiffDocument, Si as WorkflowVersioningDocument, Ui as throwIfResultError, Vn as TakeOverWorkflowEditLeaseDocument, Wr as WorkflowPromotionRequestsDocument, Xn as UnlinkWorkflowGitRepositoryDocument, Yt as RejectWorkflowPromotionDocument, Z as DeployWorkflowVersionToDevDocument, Zt as ReleaseWorkflowEditLeaseDocument, cr as UpdateWorkflowEnvironmentPolicyDocument, i as ActivateWorkflowVersionCheckedDocument, jn as SetWorkflowRolloutDocument, jr as WorkflowEditLeaseDocument, ki as getFluidGridsClientSafe, mr as WebhookTestListenerDocument, n as AcquireWorkflowEditLeaseDocument, nn as RequestWorkflowPromotionDocument, oa as __exportAll, on as RestoreWorkflowFromGitDocument, qi as getFluidGridsConfig, u as ApproveWorkflowPromotionDocument, wr as WorkflowCallInputsDocument, wt as ListenForWebhookTestEventDocument, x as CancelWorkflowPromotionDocument, xi as WorkflowVersionDrainageDocument, yr as WorkflowAuthoringDocument, zn as StopWebhookTestListenerDocument, zr as WorkflowGitPushesDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
6
6
  import { D as describeSchedule, H as pauseSchedule, _ as useResource, c as FieldError, d as NativeSelect, et as triggerSchedule, nt as unpauseSchedule, p as StatusPill, r as describeRule, s as isAgentNodeType, v as backfillSchedule } from "./agent-form-BvMWhQ42.js";
@@ -9,9 +9,9 @@ import { a as useConnections, r as useAgentsUsingConnection, t as useAgentDefini
9
9
  import { F as normaliseAssertRules, I as operatorSpec, L as readAssertRulesSetting, M as ASSERT_OPERATORS, N as describeAssertRuleProblem, P as emptyAssertRuleRow, R as rowsFromRules, _ as buildNodeDisplayMap, a as TEST_STATUS_TONE_CLASS, b as EntityTagPicker, c as draftToInput, d as isTestRunOpen, f as nextSortOrder, g as testStatusTone, h as testStatusLabel, i as useWorkflowTests, l as emptyTestCaseDraft, m as testRunSummaryText, n as useWorkflowProposal, p as pinnedOutputsFromCanvas, s as draftFromTestCase, t as WorkflowProposalCard, u as enabledCaseIds, z as ruleFromRow } from "./WorkflowProposalCard-8Vr56kQa.js";
10
10
  import { t as cn$1 } from "./cn-QqidFIgr.js";
11
11
  import { i as Button$2, t as PublishCustomNodeAction } from "./PublishCustomNodeAction-D2F7oN0S.js";
12
- import { O as CreateWorkflowRefusalDialog, b as lineOfNode, h as fileBaseName, i as useWorkflowCodeExport, n as downloadWorkflowCodeExport, t as WorkflowShareDialog, v as isLosslessReport, w as sortFidelityItems, x as orderedExportFiles, y as isLossyFidelityItem } from "./WorkflowShareDialog-ByTSWwwR.js";
12
+ import { O as CreateWorkflowRefusalDialog, b as lineOfNode, h as fileBaseName, i as useWorkflowCodeExport, n as downloadWorkflowCodeExport, t as WorkflowShareDialog, v as isLosslessReport, w as sortFidelityItems, x as orderedExportFiles, y as isLossyFidelityItem } from "./WorkflowShareDialog-DnBQA3V6.js";
13
13
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
14
- import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-Bwpvfdgv.js";
14
+ import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-D01LC39Y.js";
15
15
  import { n as VersionLifecycleBar, r as countLifecycle, t as VersionDiffDialog } from "./VersionDiffDialog-Dq2xlPFI.js";
16
16
  import { n as useRequestedProposal } from "./useRequestedProposal-B7uPXfZB.js";
17
17
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
@@ -10395,6 +10395,19 @@ function useImportWorkflowTemplate() {
10395
10395
 
10396
10396
  // src/utils/workflow-node-check.ts
10397
10397
  /**
10398
+ * Workflow node dependency checking.
10399
+ *
10400
+ * Shared logic for detecting node types used by a workflow that are not
10401
+ * installed in the current workspace, resolving them to store products, and
10402
+ * classifying them as installed / missing (free installable) / missingPaid /
10403
+ * unavailable (not offered by the store, so nothing can install them).
10404
+ *
10405
+ * Used by:
10406
+ * - Template import flow (desktop-sidebar-fragment)
10407
+ * - Shared-workflow copy flow (WorkflowItem)
10408
+ * - AI-assistant-created workflow open flow (WorkflowItem)
10409
+ */
10410
+ /**
10398
10411
  * Canvas-only node types: they live on the React Flow canvas but are never
10399
10412
  * executed, never registered in NODE_CONFIGS and never published to the store.
10400
10413
  *
@@ -10418,50 +10431,22 @@ function getWorkflowNodeTypes(nodes) {
10418
10431
  return [...new Set(nodes.map((n) => n.type).filter((t) => Boolean(t)).filter((t) => !CANVAS_ONLY_NODE_TYPES.has(t)))];
10419
10432
  }
10420
10433
  /**
10421
- * Page size for walking the node catalog. global-store-svc clamps
10422
- * `browseStore` pages to 100 rows (MAX_PAGINATION_LIMIT), so asking for more
10423
- * returns 100 anyway. The old single request for 200 rows silently dropped
10424
- * every node past the first 100 (BOFF-11402).
10434
+ * Node types per store lookup: global-store-svc answers for at most 100 at a
10435
+ * time. A workflow misses far fewer; more are asked in parallel requests.
10425
10436
  */
10426
- const STORE_NODE_PAGE_SIZE = 100;
10437
+ const STORE_NODE_LOOKUP_BATCH_SIZE = 100;
10438
+ /** The store context of FluidGrids node products, as the Node Store browses them. */
10439
+ const STORE_NODE_PRODUCT_CONTEXT = "fluidgrids";
10427
10440
  /**
10428
- * Safety net for the paging loop: 50 pages of 100 is far beyond the catalog
10429
- * (about 175 node products in 2026-11). The loop normally ends on `hasMore`.
10441
+ * The store products that offer any of `nodeTypes`, at most
10442
+ * `STORE_NODE_LOOKUP_BATCH_SIZE` types per request, the requests in parallel.
10443
+ * Blank and repeated types are asked once.
10430
10444
  */
10431
- const STORE_NODE_MAX_PAGES = 50;
10432
- /** The browseStore variables for one page of FluidGrids node products. */
10433
- function storeNodePageVariables(offset) {
10434
- return { input: {
10435
- filter: {
10436
- type: "NODE",
10437
- compatibleWith: "fluidgrids"
10438
- },
10439
- sortBy: "DOWNLOADS",
10440
- pagination: {
10441
- limit: 100,
10442
- offset
10443
- }
10444
- } };
10445
- }
10446
- /**
10447
- * Fetch every FluidGrids-compatible node product from the store.
10448
- *
10449
- * `browseStore` pages by `offset`; its `cursor` input is ignored by the
10450
- * server. The offset advances by the number of rows actually returned so a
10451
- * lower server cap still walks the whole catalog. Rows are de-duplicated by
10452
- * product id in case a page boundary moves while the catalog changes.
10453
- */
10454
- async function fetchAllStoreNodes(fetchPage) {
10455
- const byId = /* @__PURE__ */ new Map();
10456
- let offset = 0;
10457
- for (let page = 0; page < 50; page++) {
10458
- const browse = await fetchPage(storeNodePageVariables(offset));
10459
- const products = browse?.products ?? [];
10460
- for (const product of products) if (!byId.has(product.id)) byId.set(product.id, product);
10461
- if (!browse?.hasMore || products.length === 0) break;
10462
- offset += products.length;
10463
- }
10464
- return [...byId.values()];
10445
+ async function fetchStoreNodeProducts(nodeTypes, fetchProducts) {
10446
+ const wanted = [...new Set(nodeTypes.filter(Boolean))];
10447
+ const batches = [];
10448
+ for (let i = 0; i < wanted.length; i += 100) batches.push(wanted.slice(i, i + 100));
10449
+ return (await Promise.all(batches.map(fetchProducts))).flatMap((products) => [...products ?? []]);
10465
10450
  }
10466
10451
  function publishedAtMs(product) {
10467
10452
  const ms = product.publishedAt ? Date.parse(product.publishedAt) : NaN;
@@ -10503,18 +10488,22 @@ function buildStoreNodeTypeMap(products) {
10503
10488
  return nodeTypeToProduct;
10504
10489
  }
10505
10490
  /**
10506
- * Query the global store for every FluidGrids-compatible node product and map
10507
- * nodeType string -> StoreProduct using manifest.nodeType.
10491
+ * Ask the global store which products offer `nodeTypes` and map each type to the
10492
+ * best one (see compareStoreNodeCandidates). Only the asked types travel: the
10493
+ * check used to page through the whole node catalog for them (BOFF-11754).
10508
10494
  */
10509
- async function fetchStoreNodeTypeMap() {
10495
+ async function fetchStoreNodeTypeMap(nodeTypes) {
10510
10496
  const storeClient = getGlobalStoreClient();
10511
- if (!storeClient) return /* @__PURE__ */ new Map();
10512
- return buildStoreNodeTypeMap(await fetchAllStoreNodes(async (variables) => {
10497
+ if (!storeClient || nodeTypes.length === 0) return /* @__PURE__ */ new Map();
10498
+ return buildStoreNodeTypeMap(await fetchStoreNodeProducts(nodeTypes, async (batch) => {
10513
10499
  return (await storeClient.query({
10514
- query: BrowseWorkflowNodesDocument,
10515
- variables,
10500
+ query: StoreNodeProductsByTypeDocument,
10501
+ variables: {
10502
+ nodeTypes: batch,
10503
+ compatibleWith: STORE_NODE_PRODUCT_CONTEXT
10504
+ },
10516
10505
  fetchPolicy: "cache-first"
10517
- })).data?.browseStore;
10506
+ })).data?.storeNodeProductsByType;
10518
10507
  }));
10519
10508
  }
10520
10509
  /**
@@ -10551,10 +10540,11 @@ function requiredNodeEntry(type, registered, product) {
10551
10540
  async function buildRequiredNodeTypes(nodes) {
10552
10541
  const workflowNodeTypes = getWorkflowNodeTypes(nodes);
10553
10542
  if (workflowNodeTypes.length === 0) return [];
10554
- await ensureNodeTypesLoaded(workflowNodeTypes);
10555
- const missingTypes = workflowNodeTypes.filter((type) => !NODE_CONFIGS.some((c) => c.type === type));
10543
+ const isRegistered = (type) => NODE_CONFIGS.some((c) => c.type === type);
10544
+ await ensureRegistryNodeTypesLoaded(workflowNodeTypes);
10545
+ const missingTypes = workflowNodeTypes.filter((type) => !isRegistered(type));
10556
10546
  let nodeTypeToProduct = /* @__PURE__ */ new Map();
10557
- if (missingTypes.length > 0) nodeTypeToProduct = await fetchStoreNodeTypeMap();
10547
+ if (missingTypes.length > 0) [, nodeTypeToProduct] = await Promise.all([ensureInstalledNodeTypesLoaded(missingTypes), fetchStoreNodeTypeMap(missingTypes)]);
10558
10548
  return workflowNodeTypes.map((type) => {
10559
10549
  const registered = NODE_CONFIGS.find((c) => c.type === type);
10560
10550
  return requiredNodeEntry(type, registered ? { version: registered.defaultData.version } : void 0, nodeTypeToProduct.get(type));
@@ -10582,7 +10572,7 @@ function buildNodeCheck(requiredNodeTypes, installedAppIds) {
10582
10572
  }
10583
10573
 
10584
10574
  // src/hooks/store/useTemplateImportFlow.tsx
10585
- const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-ChQsXf0-.js").then((m) => ({ default: m.TemplateConfigurationModal })));
10575
+ const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-BAPCG8y-.js").then((m) => ({ default: m.TemplateConfigurationModal })));
10586
10576
  /**
10587
10577
  * "Use this template", the same everywhere it is offered: the builder's
10588
10578
  * template panel, the Templates page and the template preview page
@@ -12759,7 +12749,7 @@ function TemplatesGrid({ templates, loading, hasMore, onLoadMore, onTemplateClic
12759
12749
  }
12760
12750
 
12761
12751
  // src/builder/components/flow-builder/components/templates/TemplatesModal.tsx
12762
- const LazyTemplateDetailPanel = lazy(() => import("./TemplateDetailPanel-C0YiVdub.js").then((m) => ({ default: m.TemplateDetailPanel })));
12752
+ const LazyTemplateDetailPanel = lazy(() => import("./TemplateDetailPanel-CZ1uxEQL.js").then((m) => ({ default: m.TemplateDetailPanel })));
12763
12753
  /**
12764
12754
  * Modal for browsing and selecting workflow templates
12765
12755
  * Features:
@@ -27585,8 +27575,8 @@ function EditLeaseBanner() {
27585
27575
  }
27586
27576
 
27587
27577
  // src/builder/components/flow-builder/flow-builder.tsx
27588
- const LazyNodeDetailView = lazy(() => import("./node-detail-view-CPD_NSZc.js").then((m) => ({ default: m.NodeDetailView })));
27589
- const LazyQuickConfigPanel = lazy(() => import("./quick-config-panel-DHkYGaCL.js").then((m) => ({ default: m.QuickConfigPanel })));
27578
+ const LazyNodeDetailView = lazy(() => import("./node-detail-view-Dnhqdn8C.js").then((m) => ({ default: m.NodeDetailView })));
27579
+ const LazyQuickConfigPanel = lazy(() => import("./quick-config-panel-C4tSpCrt.js").then((m) => ({ default: m.QuickConfigPanel })));
27590
27580
  const edgeTypes = { deletable: CustomDeletableEdge };
27591
27581
  const edgeOptions = {
27592
27582
  type: "deletable",
@@ -27646,7 +27636,7 @@ const FlowBuilder = ({ readOnly = false }) => {
27646
27636
  const [agentTools, setAgentTools] = useState([]);
27647
27637
  useEffect(() => {
27648
27638
  let cancelled = false;
27649
- import("./agentTools-C0g2OWvI.js").then(({ createBuilderAgentTools }) => {
27639
+ import("./agentTools-D5AW7zHn.js").then(({ createBuilderAgentTools }) => {
27650
27640
  if (cancelled) return;
27651
27641
  setAgentTools(createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current }));
27652
27642
  }).catch((error) => {
@@ -27701,7 +27691,7 @@ const FlowBuilder = ({ readOnly = false }) => {
27701
27691
  const [noteTools, setNoteTools] = useState([]);
27702
27692
  useEffect(() => {
27703
27693
  let cancelled = false;
27704
- import("./canvasNoteTools-BUWY18XK.js").then(({ createCanvasNoteTools }) => {
27694
+ import("./canvasNoteTools-BqQTTCll.js").then(({ createCanvasNoteTools }) => {
27705
27695
  if (cancelled) return;
27706
27696
  setNoteTools(createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
27707
27697
  nodes: [{ id: nodeId }],
@@ -28009,4 +27999,4 @@ const FlowBuilderPage = ({ workflow, readOnly = false }) => {
28009
27999
  ] });
28010
28000
  };
28011
28001
 
28012
- export { useGlobalStoreClient as $, DialogFooter$1 as A, useImportWorkflowTemplate as B, templatePreview as C, DURABLE_FUNCTION_NODE_TYPES as Ct, DialogClose as D, isDurableFunctionNodeType as Dt, Dialog$1 as E, filterPaletteNodes as Et, DialogTrigger$1 as F, NodeSettingsPanel as G, useInstalledNodes as H, computeAttachPosition as I, RUNNER_INSTALL_SCRIPT_URL as J, RunOnSection as K, useTemplateImportFlow as L, DialogOverlay as M, DialogPortal as N, DialogContent$1 as O, isNodeTypeHiddenFromPalette as Ot, DialogTitle$1 as P, NodeParamsForm as Q, buildNodeCheck as R, TemplateCard as S, Input$1 as St, badgeVariants as T, WORKFLOW_TEST_NODE_TYPES as Tt, NodeExecutionActions as U, useWorkflowTemplates as V, NodeEditorTabBody as W, useRunnerActions as X, runnerInstallCommand as Y, useRunners as Z, resetAgentMarks as _, CardContent$1 as _t, useAiWorkflowTemplates as a, ConnectionSelector as at, JsonView as b, CardHeader$1 as bt, RunsUsageMeter as c, useNodeEditorTab as ct, readRunsQuota as d, NodeEditorTabs as dt, NDV_Z_INDEX as et, runsQuotaLevel as f, TabButton as ft, notesKeyOf as g, Card$1 as gt, useWorkflowReloadStore as h, FluidGridsMark as ht, enrichDraftNodes as i, CodeEditorField as it, DialogHeader$1 as j, DialogDescription$1 as k, isRunControlNodeType as kt, RunsUsageMeterView as l, SCHEDULE_NODE_TYPE as lt, releaseLeaseKeptForReload as m, useNodeSelectedEvent as mt, AI_DRAFT_MAX_PROMPT_LENGTH as n, PopoverContent$1 as nt, BUILDER_FULLSCREEN_ATTRIBUTE as o, ConnectionFormDialog as ot, summarizeRunsQuota as p, NodeInputFields as pt, RunnerStatusPill as q, draftToCanvas as r, PopoverTrigger$1 as rt, BUILDER_FULLSCREEN_EVENT as s, ReadOnlyFieldset as st, FlowBuilderPage as t, Popover$1 as tt, useRunsQuota as u, SchedulePanel as ut, useAgentMarksStore as v, CardDescription$1 as vt, Badge$1 as w, RUN_CONTROL_NODE_TYPES as wt, TableView as x, CardTitle$1 as xt, toPlainText as y, CardFooter as yt, buildRequiredNodeTypes as z };
28002
+ export { NodeParamsForm as $, DialogFooter$1 as A, isRunControlNodeType as At, getWorkflowNodeTypes as B, templatePreview as C, Input$1 as Ct, DialogClose as D, filterPaletteNodes as Dt, Dialog$1 as E, WORKFLOW_TEST_NODE_TYPES as Et, DialogTrigger$1 as F, NodeEditorTabBody as G, useWorkflowTemplates as H, computeAttachPosition as I, RunnerStatusPill as J, NodeSettingsPanel as K, useTemplateImportFlow as L, DialogOverlay as M, DialogPortal as N, DialogContent$1 as O, isDurableFunctionNodeType as Ot, DialogTitle$1 as P, useRunners as Q, buildNodeCheck as R, TemplateCard as S, CardTitle$1 as St, badgeVariants as T, RUN_CONTROL_NODE_TYPES as Tt, useInstalledNodes as U, useImportWorkflowTemplate as V, NodeExecutionActions as W, runnerInstallCommand as X, RUNNER_INSTALL_SCRIPT_URL as Y, useRunnerActions as Z, resetAgentMarks as _, Card$1 as _t, useAiWorkflowTemplates as a, CodeEditorField as at, JsonView as b, CardFooter as bt, RunsUsageMeter as c, ReadOnlyFieldset as ct, readRunsQuota as d, SchedulePanel as dt, useGlobalStoreClient as et, runsQuotaLevel as f, NodeEditorTabs as ft, notesKeyOf as g, FluidGridsMark as gt, useWorkflowReloadStore as h, useNodeSelectedEvent as ht, enrichDraftNodes as i, PopoverTrigger$1 as it, DialogHeader$1 as j, DialogDescription$1 as k, isNodeTypeHiddenFromPalette as kt, RunsUsageMeterView as l, useNodeEditorTab as lt, releaseLeaseKeptForReload as m, NodeInputFields as mt, AI_DRAFT_MAX_PROMPT_LENGTH as n, Popover$1 as nt, BUILDER_FULLSCREEN_ATTRIBUTE as o, ConnectionSelector as ot, summarizeRunsQuota as p, TabButton as pt, RunOnSection as q, draftToCanvas as r, PopoverContent$1 as rt, BUILDER_FULLSCREEN_EVENT as s, ConnectionFormDialog as st, FlowBuilderPage as t, NDV_Z_INDEX as tt, useRunsQuota as u, SCHEDULE_NODE_TYPE as ut, useAgentMarksStore as v, CardContent$1 as vt, Badge$1 as w, DURABLE_FUNCTION_NODE_TYPES as wt, TableView as x, CardHeader$1 as xt, toPlainText as y, CardDescription$1 as yt, buildRequiredNodeTypes as z };
package/dist/history.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import { t as HistoryPage } from "./HistoryPage-DnVGN_72.js";
2
+ import { t as HistoryPage } from "./HistoryPage-DueEld8g.js";
3
3
 
4
4
  export { HistoryPage };