@burdenoff/fluidgrids-fe-sdk 2026.1115.9 → 2026.1115.10

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.
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
4
- import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-CWfNAFd8.js";
4
+ import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-D7ALre4P.js";
5
5
  import { Ct as classifyCreateRefusal, N as buildOperationSeed, St as builderPathOf, d as ensureNodeTypesLoaded } from "./FluidGridsProvider-BRC0WlAa.js";
6
6
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
7
7
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
- import { n as formatTemplatePrice } from "./TemplateCard-D2zt-kXW.js";
3
+ import { n as formatTemplatePrice } from "./TemplateCard-Buj74ZSq.js";
4
4
  import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -614,7 +614,16 @@ const StoreNodeProductsByTypeDocument = {
614
614
  "kind": "Field",
615
615
  "name": {
616
616
  "kind": "Name",
617
- "value": "manifest"
617
+ "value": "nodeType"
618
+ },
619
+ "arguments": [],
620
+ "directives": []
621
+ },
622
+ {
623
+ "kind": "Field",
624
+ "name": {
625
+ "kind": "Name",
626
+ "value": "nodeVersion"
618
627
  },
619
628
  "arguments": [],
620
629
  "directives": []
@@ -772,9 +781,21 @@ function userSelectableOperationCount(nodeType) {
772
781
  * manifests did not yet include `manifest.nodeType`.
773
782
  */
774
783
  function getStoreNodeType(node, isInstalled) {
784
+ const listedNodeType = node.nodeType?.trim();
785
+ if (listedNodeType) return listedNodeType;
775
786
  return node.manifest?.nodeType ?? (isInstalled ? `store/${node.slug}` : void 0);
776
787
  }
777
788
  /**
789
+ * The node type a manifest declares (`manifest.nodeType`), or undefined. Takes
790
+ * the JSON text of a manifest too.
791
+ */
792
+ function storeNodeType(manifest) {
793
+ const record = typeof manifest === "string" ? parseManifest(manifest) : manifest;
794
+ if (typeof record !== "object" || record === null) return void 0;
795
+ const { nodeType } = record;
796
+ return typeof nodeType === "string" && nodeType.trim() ? nodeType.trim() : void 0;
797
+ }
798
+ /**
778
799
  * A node is considered prebuilt when it is already present in the workflow
779
800
  * registry/available nodes list even though the workspace does not have a store
780
801
  * installation record for it.
@@ -859,23 +880,26 @@ function canonicalNodeVersion(version) {
859
880
  return MAJOR_MINOR_ONLY.test(trimmed) ? `${trimmed}.0` : trimmed;
860
881
  }
861
882
  /**
862
- * The version a store node installs as: its own version from the manifest,
863
- * canonical, `1.0.0` when the product names none. Installs used to send the
864
- * product's `manifestVersion` ("1.0"), which no node image carries
865
- * (BOFF-11496).
883
+ * The version to show for a store listing: the store's `nodeVersion`, else the
884
+ * version in a full manifest, else the product's `manifestVersion` (see
885
+ * storeNodeDisplayVersion).
866
886
  */
867
- function storeNodeInstallVersion(manifest, manifestVersion) {
868
- return canonicalNodeVersion(storeNodeDisplayVersion(manifest, manifestVersion) ?? "1.0.0");
887
+ function storeProductDisplayVersion(product) {
888
+ const listed = product.nodeVersion?.trim();
889
+ if (listed) return listed;
890
+ return storeNodeDisplayVersion(product.manifest, product.manifestVersion);
891
+ }
892
+ /** The version a store listing installs as (see storeNodeInstallVersion). */
893
+ function storeProductInstallVersion(product) {
894
+ return canonicalNodeVersion(storeProductDisplayVersion(product) ?? "1.0.0");
869
895
  }
870
896
  /**
871
- * Whether an installed store node has a newer version: the installation's
872
- * recorded version against the node's own current version, both canonical, so
873
- * an installation recorded as "1.0" is not "outdated" against 1.0.0
874
- * (BOFF-11496).
897
+ * Whether an installed store node has a newer version than the listing (see
898
+ * isStoreNodeUpdateAvailable).
875
899
  */
876
- function isStoreNodeUpdateAvailable(installedVersion, manifest, manifestVersion) {
900
+ function isStoreProductUpdateAvailable(installedVersion, product) {
877
901
  if (!installedVersion?.trim()) return false;
878
- const latest = storeNodeDisplayVersion(manifest, manifestVersion);
902
+ const latest = storeProductDisplayVersion(product);
879
903
  if (!latest) return false;
880
904
  return canonicalNodeVersion(installedVersion) !== canonicalNodeVersion(latest);
881
905
  }
@@ -1546,8 +1570,8 @@ function compareStoreNodeCandidates(a, b) {
1546
1570
  function buildStoreNodeTypeMap(products) {
1547
1571
  const nodeTypeToProduct = /* @__PURE__ */ new Map();
1548
1572
  for (const product of products) {
1549
- const nodeType = product.manifest?.nodeType;
1550
- if (typeof nodeType !== "string" || !nodeType) continue;
1573
+ const nodeType = product.nodeType?.trim();
1574
+ if (!nodeType) continue;
1551
1575
  const current = nodeTypeToProduct.get(nodeType);
1552
1576
  if (!current || compareStoreNodeCandidates(product, current) < 0) nodeTypeToProduct.set(nodeType, product);
1553
1577
  }
@@ -1587,7 +1611,7 @@ function requiredNodeEntry(type, registered, product) {
1587
1611
  };
1588
1612
  return {
1589
1613
  nodeType: type,
1590
- nodeVersion: storeNodeInstallVersion(product?.manifest, product?.manifestVersion),
1614
+ nodeVersion: storeProductInstallVersion(product ?? {}),
1591
1615
  publishType: "STORE",
1592
1616
  storeProductId: product?.id,
1593
1617
  displayName: product?.name ?? type,
@@ -2033,4 +2057,4 @@ function TemplateCard({ template, onClick, onUseTemplate }) {
2033
2057
  });
2034
2058
  }
2035
2059
 
2036
- export { CardHeader as C, CardFooter as S, useInstalledNodes as _, buildNodeCheck as a, CardContent as b, useImportWorkflowTemplate as c, getStoreNodeAvailability as d, getStoreNodeType as f, storeNodeInstallVersion as g, storeNodeIconCandidates as h, useTemplateImportFlow as i, useWorkflowTemplates as l, storeNodeDisplayVersion as m, formatTemplatePrice as n, buildRequiredNodeTypes as o, isStoreNodeUpdateAvailable as p, isPaidTemplate as r, getWorkflowNodeTypes as s, TemplateCard as t, filterStoreNodesForPalette as u, storeContextHeaders as v, CardTitle as w, CardDescription as x, Card as y };
2060
+ export { CardDescription as C, CardTitle as E, CardContent as S, CardHeader as T, storeProductDisplayVersion as _, buildNodeCheck as a, storeContextHeaders as b, useImportWorkflowTemplate as c, getStoreNodeAvailability as d, getStoreNodeType as f, storeNodeType as g, storeNodeIconCandidates as h, useTemplateImportFlow as i, useWorkflowTemplates as l, storeNodeDisplayVersion as m, formatTemplatePrice as n, buildRequiredNodeTypes as o, isStoreProductUpdateAvailable as p, isPaidTemplate as r, getWorkflowNodeTypes as s, TemplateCard as t, filterStoreNodesForPalette as u, storeProductInstallVersion as v, CardFooter as w, Card as x, useInstalledNodes as y };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
4
- import { t as FlowBuilderPage } from "./flow-builder-CWfNAFd8.js";
5
- import { _ as useInstalledNodes, a as buildNodeCheck, c as useImportWorkflowTemplate, i as useTemplateImportFlow, n as formatTemplatePrice, o as buildRequiredNodeTypes, r as isPaidTemplate } from "./TemplateCard-D2zt-kXW.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-D7ALre4P.js";
5
+ import { a as buildNodeCheck, c as useImportWorkflowTemplate, i as useTemplateImportFlow, n as formatTemplatePrice, o as buildRequiredNodeTypes, r as isPaidTemplate, y as useInstalledNodes } from "./TemplateCard-Buj74ZSq.js";
6
6
  import { i as QuotaExhaustedDialog } from "./useWorkflowCodeExport-DSbfcehl.js";
7
7
  import { n as WithOpenTemplateAsCode } from "./OpenTemplateAsCodeButton-CQV-YHlJ.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
@@ -13,7 +13,7 @@ import { t as OfflineIcon } from "./OfflineIcon-DnKb-mo2.js";
13
13
  import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
14
14
  import { t as Disclosure } from "./Disclosure-C3xMLSU-.js";
15
15
  import { c as useVariables, t as useCreateVariable } from "./useVariables-DFdZofLQ.js";
16
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Dog5moZa.js";
16
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Bn-Rj7cS.js";
17
17
  import { t as cn } from "./cn-QqidFIgr.js";
18
18
  import { useEffect, useMemo, useState } from "react";
19
19
  import { useLocation, useNavigate, useParams } from "react-router";
@@ -2,7 +2,7 @@
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { t as OfflineIcon } from "./OfflineIcon-DnKb-mo2.js";
4
4
  import { c as useDuplicateWorkflow, g as useWorkflowDefinitions, u as useLazyWorkflowDefinition } from "./useWorkflows-B13Cp8tk.js";
5
- import { i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard, v as storeContextHeaders } from "./TemplateCard-D2zt-kXW.js";
5
+ import { b as storeContextHeaders, i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard } from "./TemplateCard-Buj74ZSq.js";
6
6
  import { CL as WorkflowStatus, YI as WorkflowExportFormat } from "./graphql-types-CxkVzQqA.js";
7
7
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-65QV61nQ.js";
8
8
  import { i as QuotaExhaustedDialog, t as fetchWorkflowCodeExport } from "./useWorkflowCodeExport-DSbfcehl.js";
@@ -25,7 +25,7 @@ import { t as NodeTypeIcon } from "./node-type-icon-BiX35H0z.js";
25
25
  import { n as formatRunVersion } from "./run-display-UjLAoYqQ.js";
26
26
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
27
27
  import { t as TechnicalDetails } from "./TechnicalDetails-xQtjIWWx.js";
28
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Dog5moZa.js";
28
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Bn-Rj7cS.js";
29
29
  import { t as cn } from "./cn-QqidFIgr.js";
30
30
  import { useCallback, useContext, useEffect, useMemo, useState } from "react";
31
31
  import { useNavigate } from "react-router";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-CWfNAFd8.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-D7ALre4P.js";
4
4
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
5
5
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
6
6
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
@@ -12,7 +12,7 @@ import { A as useFlowStore } from "./node-operation-selection-sT7nCmDk.js";
12
12
  import { a as codeBuildIdOf, y as workflowFingerprint } from "./workflow-save-state-DUE9lNwQ.js";
13
13
  import { t as canvasFromDefinition } from "./definition-canvas-DL25_6NH.js";
14
14
  import { r as useCreateWorkflow, u as useLazyWorkflowDefinition } from "./useWorkflows-B13Cp8tk.js";
15
- import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-D2zt-kXW.js";
15
+ import { a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes, y as useInstalledNodes } from "./TemplateCard-Buj74ZSq.js";
16
16
  import { r as mergeStickyNotes } from "./sticky-notes-23j-wL6Q.js";
17
17
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
18
18
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
@@ -3,10 +3,10 @@ import { an as useCanvasEdges, n as FluidGridsProvider } from "./FluidGridsProvi
3
3
  import { A as useFlowStore } from "./node-operation-selection-sT7nCmDk.js";
4
4
  import { t as Button } from "./button-DG7y_FVJ.js";
5
5
  import { t as Input } from "./input-ChT6Q-Pr.js";
6
- import { y as Card } from "./TemplateCard-D2zt-kXW.js";
6
+ import { x as Card } from "./TemplateCard-Buj74ZSq.js";
7
7
  import { t as cn } from "./cn-QqidFIgr.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { m as FluidGridsMark, p as useNodeSelectedEvent } from "./flow-builder-CWfNAFd8.js";
9
+ import { m as FluidGridsMark, p as useNodeSelectedEvent } from "./flow-builder-D7ALre4P.js";
10
10
  import { useCallback, useEffect, useRef, useState } from "react";
11
11
  import { Background, Controls, Handle, MarkerType, MiniMap, Position, ReactFlow, ReactFlowProvider, useReactFlow } from "@xyflow/react";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -4,7 +4,7 @@ import { An as useMarkdownRenderer, At as useEditLeaseStore, Bt as EDIT_SESSION_
4
4
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
5
5
  import { n as preloadableLazy } from "./preloadable-lazy-Pp47mqQ9.js";
6
6
  import { t as Input$1 } from "./input-ChT6Q-Pr.js";
7
- import { _ as useInstalledNodes, d as getStoreNodeAvailability, f as getStoreNodeType, g as storeNodeInstallVersion, h as storeNodeIconCandidates, i as useTemplateImportFlow, l as useWorkflowTemplates, m as storeNodeDisplayVersion, p as isStoreNodeUpdateAvailable, t as TemplateCard, u as filterStoreNodesForPalette, v as storeContextHeaders } from "./TemplateCard-D2zt-kXW.js";
7
+ import { _ as storeProductDisplayVersion, b as storeContextHeaders, d as getStoreNodeAvailability, f as getStoreNodeType, g as storeNodeType, h as storeNodeIconCandidates, i as useTemplateImportFlow, l as useWorkflowTemplates, m as storeNodeDisplayVersion, p as isStoreProductUpdateAvailable, t as TemplateCard, u as filterStoreNodesForPalette, v as storeProductInstallVersion, y as useInstalledNodes } from "./TemplateCard-Buj74ZSq.js";
8
8
  import { t as useGlobalStoreClient } from "./useGlobalStoreClient-C2P50Gj5.js";
9
9
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
10
10
  import { _ as useWorkflowTestsEnabled, d as useFluidGridsFlag, h as usePhaseDFlags, l as useDurableFunctionNodesEnabled, p as usePaletteGates, t as FLUIDGRIDS_FLAGS, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
@@ -5987,25 +5987,7 @@ const BrowseWorkflowNodesDocument = {
5987
5987
  "kind": "Field",
5988
5988
  "name": {
5989
5989
  "kind": "Name",
5990
- "value": "manifest"
5991
- },
5992
- "arguments": [],
5993
- "directives": []
5994
- },
5995
- {
5996
- "kind": "Field",
5997
- "name": {
5998
- "kind": "Name",
5999
- "value": "manifestVersion"
6000
- },
6001
- "arguments": [],
6002
- "directives": []
6003
- },
6004
- {
6005
- "kind": "Field",
6006
- "name": {
6007
- "kind": "Name",
6008
- "value": "authorName"
5990
+ "value": "nodeType"
6009
5991
  },
6010
5992
  "arguments": [],
6011
5993
  "directives": []
@@ -6014,7 +5996,7 @@ const BrowseWorkflowNodesDocument = {
6014
5996
  "kind": "Field",
6015
5997
  "name": {
6016
5998
  "kind": "Name",
6017
- "value": "license"
5999
+ "value": "nodeVersion"
6018
6000
  },
6019
6001
  "arguments": [],
6020
6002
  "directives": []
@@ -6023,7 +6005,7 @@ const BrowseWorkflowNodesDocument = {
6023
6005
  "kind": "Field",
6024
6006
  "name": {
6025
6007
  "kind": "Name",
6026
- "value": "compatibleProducts"
6008
+ "value": "manifestVersion"
6027
6009
  },
6028
6010
  "arguments": [],
6029
6011
  "directives": []
@@ -6032,7 +6014,7 @@ const BrowseWorkflowNodesDocument = {
6032
6014
  "kind": "Field",
6033
6015
  "name": {
6034
6016
  "kind": "Name",
6035
- "value": "requiredPermissions"
6017
+ "value": "authorName"
6036
6018
  },
6037
6019
  "arguments": [],
6038
6020
  "directives": []
@@ -6041,7 +6023,7 @@ const BrowseWorkflowNodesDocument = {
6041
6023
  "kind": "Field",
6042
6024
  "name": {
6043
6025
  "kind": "Name",
6044
- "value": "integrationDeps"
6026
+ "value": "license"
6045
6027
  },
6046
6028
  "arguments": [],
6047
6029
  "directives": []
@@ -6050,7 +6032,7 @@ const BrowseWorkflowNodesDocument = {
6050
6032
  "kind": "Field",
6051
6033
  "name": {
6052
6034
  "kind": "Name",
6053
- "value": "zipFileUrl"
6035
+ "value": "compatibleProducts"
6054
6036
  },
6055
6037
  "arguments": [],
6056
6038
  "directives": []
@@ -7133,7 +7115,7 @@ function isManifestRecord(value) {
7133
7115
  * records the version it registers either way.
7134
7116
  */
7135
7117
  function storeNodeInstallRequestVersion(node, chosenVersion) {
7136
- return chosenVersion ?? storeNodeInstallVersion(node.manifest, node.manifestVersion);
7118
+ return chosenVersion ?? storeProductInstallVersion(node);
7137
7119
  }
7138
7120
  /**
7139
7121
  * Hook to install a workflow node from the store
@@ -7264,7 +7246,7 @@ function useUpdateNode() {
7264
7246
  productId: node.id,
7265
7247
  workspaceId,
7266
7248
  organizationId: tenantId,
7267
- version: storeNodeInstallVersion(node.manifest, node.manifestVersion),
7249
+ version: storeProductInstallVersion(node),
7268
7250
  manifest: node.manifest
7269
7251
  } } });
7270
7252
  if (result.error || !result.data?.recordAppInstallation) throw new Error(result.error?.message || "Update failed");
@@ -7808,14 +7790,12 @@ function deprecatedItemToProduct(item) {
7808
7790
  pricingModel: "FREE",
7809
7791
  currency: null,
7810
7792
  featured: false,
7811
- manifest: item.manifest ?? null,
7793
+ nodeType: storeNodeType(item.manifest) ?? null,
7794
+ nodeVersion: storeNodeDisplayVersion(item.manifest, null) ?? null,
7812
7795
  manifestVersion: item.version ?? null,
7813
7796
  authorName: null,
7814
7797
  license: null,
7815
7798
  compatibleProducts: null,
7816
- requiredPermissions: null,
7817
- integrationDeps: null,
7818
- zipFileUrl: null,
7819
7799
  isPurchased: null,
7820
7800
  publisher: null
7821
7801
  };
@@ -7900,7 +7880,7 @@ function StoreCategoryList({ searchTerm, onSearchChange, onSelectCategory, onSel
7900
7880
  children: [products.map((node) => {
7901
7881
  const installation = installationsMap.get(node.id);
7902
7882
  const isInstalled = installedAppIds.has(node.id);
7903
- const hasUpdate = isInstalled && isStoreNodeUpdateAvailable(installation?.installedVersion, node.manifest, node.manifestVersion);
7883
+ const hasUpdate = isInstalled && isStoreProductUpdateAvailable(installation?.installedVersion, node);
7904
7884
  const { nodeType, isPrebuilt, isDraggable } = getStoreNodeAvailability(node, isInstalled, { durableFunctionsEnabled: paletteGates });
7905
7885
  return /* @__PURE__ */ jsx(StoreNodeListItem, {
7906
7886
  name: node.name,
@@ -8142,7 +8122,7 @@ function StoreCategoryNodes({ category, onBack, onSelectNode }) {
8142
8122
  products.map((node) => {
8143
8123
  const installation = installationsMap.get(node.id);
8144
8124
  const isInstalled = installedAppIds.has(node.id);
8145
- const hasUpdate = isInstalled && isStoreNodeUpdateAvailable(installation?.installedVersion, node.manifest, node.manifestVersion);
8125
+ const hasUpdate = isInstalled && isStoreProductUpdateAvailable(installation?.installedVersion, node);
8146
8126
  const { nodeType, isPrebuilt, isDraggable } = getStoreNodeAvailability(node, isInstalled, { durableFunctionsEnabled: paletteGates });
8147
8127
  return /* @__PURE__ */ jsx(StoreNodeListItem, {
8148
8128
  name: node.name,
@@ -8591,10 +8571,10 @@ function StoreNodeDetail({ node, onBack }) {
8591
8571
  const installedVersion = installation?.installedVersion;
8592
8572
  const installationId = installation?.installationId;
8593
8573
  const latestVersion = node.manifestVersion;
8594
- const displayVersion = storeNodeDisplayVersion(node.manifest, node.manifestVersion);
8595
- const hasUpdate = isInstalled && isStoreNodeUpdateAvailable(installedVersion, node.manifest, node.manifestVersion);
8574
+ const displayVersion = storeProductDisplayVersion(node);
8575
+ const hasUpdate = isInstalled && isStoreProductUpdateAvailable(installedVersion, node);
8596
8576
  const usageNodeType = getStoreNodeType(node, true) ?? `store/${node.slug}`;
8597
- const usageNodeVersion = installedVersion ?? storeNodeInstallVersion(node.manifest, node.manifestVersion);
8577
+ const usageNodeVersion = installedVersion ?? storeProductInstallVersion(node);
8598
8578
  const isFree = node.pricingModel === "FREE";
8599
8579
  const isPurchased = node.isPurchased === true;
8600
8580
  const canInstall = !isPrebuilt && (isFree || isPurchased);
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { Ct as classifyCreateRefusal, J as resolveUiSpec, S as fetchAllNodeEndpointConfigs, Y as stripSubmitActions, _n as NodePaletteEntriesDocument, bn as BuilderRunNodeDetailsDocument, g as refetchStoreNodes, in as openRunQuotaUpgradePrompt, n as FluidGridsProvider, qt as useNodeExecution, r as useFluidGridsContext, rn as useFluidGridsAnalytics, vn as NodeManifestsDocument, wt as createThenOpen, xn as SaveWorkflowDraftDocument, xt as blankWorkflowCreateInput, yn as BuilderRunStatusDocument } from "./FluidGridsProvider-BRC0WlAa.js";
3
- import { n as WorkflowBuilderCore, r as EnsureThemeProvider, t as WorkflowBuilder } from "./WorkflowBuilder-BS9kVcgU.js";
3
+ import { n as WorkflowBuilderCore, r as EnsureThemeProvider, t as WorkflowBuilder } from "./WorkflowBuilder-DSGaB0ak.js";
4
4
  import { a as useCreateWorkflowFirst, i as FirstWorkflowChecklistView, r as FirstWorkflowChecklist, t as WorkflowsList } from "./WorkflowsList-DjKePEwo.js";
5
- import { a as START_NAME_PARAM, c as readStartNodeRequest, i as START_FIELD_PREFIX, l as startNodeLink, o as START_NODE_PARAM, r as GuidedTourStarter, s as START_OPERATION_PARAM, t as WorkflowBuilder$1 } from "./WorkflowBuilder-CtTM79lP.js";
5
+ import { a as START_NAME_PARAM, c as readStartNodeRequest, i as START_FIELD_PREFIX, l as startNodeLink, o as START_NODE_PARAM, r as GuidedTourStarter, s as START_OPERATION_PARAM, t as WorkflowBuilder$1 } from "./WorkflowBuilder-C0E9b2vG.js";
6
6
  import { t as WorkflowSearchRedirect } from "./WorkflowSearchRedirect-Bqdxr833.js";
7
- import { r as extractTemplateGraph, t as TemplatePreview } from "./TemplatePreview-BgdkcCF-.js";
8
- import { a as CancelWorkflowGenerationDocument, i as GenerateWorkflowFromPromptDocument, r as WorkflowGenerationDocument, t as AiStudioPage } from "./AiStudioPage-CZTaVeQE.js";
7
+ import { r as extractTemplateGraph, t as TemplatePreview } from "./TemplatePreview-3gYesm9-.js";
8
+ import { a as CancelWorkflowGenerationDocument, i as GenerateWorkflowFromPromptDocument, r as WorkflowGenerationDocument, t as AiStudioPage } from "./AiStudioPage-BQy__ak-.js";
9
9
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
10
10
  import { a as isDurableFunctionNodeType, i as filterPaletteNodes, n as RUN_CONTROL_NODE_TYPES, o as isNodeTypeHiddenFromPalette, r as WORKFLOW_TEST_NODE_TYPES, s as isRunControlNodeType, t as DURABLE_FUNCTION_NODE_TYPES } from "./durable-nodes-DXCCQYWD.js";
11
- import { A as SetWorkflowRolloutDocument, B as ApproveWorkflowPromotionDocument, C as WorkflowGenerationTemplatesDocument, D as UpdateWorkflowEnvironmentPolicyDocument, E as WorkflowAuthoringDocument, F as PushWorkflowToGitDocument, H as AcquireWorkflowEditLeaseDocument, I as LinkWorkflowGitRepositoryDocument, L as DeployWorkflowVersionToDevDocument, M as RequestWorkflowPromotionDocument, N as ReleaseWorkflowEditLeaseDocument, O as UnlinkWorkflowGitRepositoryDocument, P as RejectWorkflowPromotionDocument, R as DeleteWorkflowRolloutDocument, S as WorkflowGitCommitsDocument, T as WorkflowEditLeaseDocument, V as ActivateWorkflowVersionCheckedDocument, _ as WorkflowProposalCodeDocument, b as WorkflowGitPushesDocument, c as RunsUsageMeter, g as WorkflowVersionDrainageDocument, h as WorkflowVersioningDocument, j as RestoreWorkflowFromGitDocument, k as TakeOverWorkflowEditLeaseDocument, l as RunsUsageMeterView, m as FluidGridsMark, o as BUILDER_FULLSCREEN_ATTRIBUTE, s as BUILDER_FULLSCREEN_EVENT, t as FlowBuilderPage, u as useRunsQuota, v as WorkflowPromotionRequestsDocument, w as WorkflowEnvironmentsDocument, x as WorkflowGitDiffDocument, y as WorkflowGitRepositoryDocument, z as CancelWorkflowPromotionDocument } from "./flow-builder-CWfNAFd8.js";
11
+ import { A as SetWorkflowRolloutDocument, B as ApproveWorkflowPromotionDocument, C as WorkflowGenerationTemplatesDocument, D as UpdateWorkflowEnvironmentPolicyDocument, E as WorkflowAuthoringDocument, F as PushWorkflowToGitDocument, H as AcquireWorkflowEditLeaseDocument, I as LinkWorkflowGitRepositoryDocument, L as DeployWorkflowVersionToDevDocument, M as RequestWorkflowPromotionDocument, N as ReleaseWorkflowEditLeaseDocument, O as UnlinkWorkflowGitRepositoryDocument, P as RejectWorkflowPromotionDocument, R as DeleteWorkflowRolloutDocument, S as WorkflowGitCommitsDocument, T as WorkflowEditLeaseDocument, V as ActivateWorkflowVersionCheckedDocument, _ as WorkflowProposalCodeDocument, b as WorkflowGitPushesDocument, c as RunsUsageMeter, g as WorkflowVersionDrainageDocument, h as WorkflowVersioningDocument, j as RestoreWorkflowFromGitDocument, k as TakeOverWorkflowEditLeaseDocument, l as RunsUsageMeterView, m as FluidGridsMark, o as BUILDER_FULLSCREEN_ATTRIBUTE, s as BUILDER_FULLSCREEN_EVENT, t as FlowBuilderPage, u as useRunsQuota, v as WorkflowPromotionRequestsDocument, w as WorkflowEnvironmentsDocument, x as WorkflowGitDiffDocument, y as WorkflowGitRepositoryDocument, z as CancelWorkflowPromotionDocument } from "./flow-builder-D7ALre4P.js";
12
12
  import { $ as UpdateArchiveSettingsDocument, Ct as FailActivityByIdDocument, Dt as UnpauseActivityDocument, Et as ResetActivityDocument, G as ArchiveSettingsDocument, J as WorkflowActivityPauseRulesDocument, K as CodecServerSettingsDocument, Ot as PauseActivityDocument, Q as TriggerWorkflowScheduleDocument, St as StartBatchOperationDocument, Tt as UpdateActivityOptionsDocument, U as WorkflowScheduleDescribeDocument, W as WorkflowCodeBundleSdkDocument, X as PauseWorkflowScheduleDocument, Y as UnpauseWorkflowScheduleDocument, Z as BackfillWorkflowScheduleDocument, _t as ResetWorkflowRunToLastCleanTaskDocument, at as WorkflowSignalTokensDocument, bt as StartBatchExportDocument, ct as WorkflowRunArchiveDocument, dt as RunControlFieldsDocument, et as UpdateCodecServerSettingsDocument, ft as QueryWorkflowRunDocument, gt as CreateWorkflowSignalTokenDocument, ht as RevokeWorkflowSignalTokenDocument, it as CreateActivityPauseRuleDocument, lt as WorkflowBatchOperationDocument, mt as UpdateWorkflowRunDocument, nt as CreateWorkflowSearchAttributeDocument, ot as WorkflowRunUpdateDocument, pt as UpsertWorkflowRunSearchAttributesDocument, q as WorkflowSearchAttributesDocument, rt as DeleteActivityPauseRuleDocument, st as WorkflowRunHistoryArchiveDocument, tt as DeleteWorkflowSearchAttributeDocument, ut as WorkflowBatchOperationsDocument, vt as ResetWorkflowRunDocument, wt as CompleteActivityByIdDocument, xt as StartBatchTerminateDocument, yt as CancelBatchOperationDocument } from "./api-D1cWC1yx.js";
13
13
  import { a as PauseExecutionDocument, i as ResumeExecutionDocument, n as TerminateExecutionDocument, o as CancelExecutionDocument, r as RetryNodeDocument, t as ExecutionStatsDocument } from "./ExecutionStatsDocument-6ixNZnBV.js";
14
14
  import { a as getGraphQLEndpoint, c as setFluidGridsConfig, d as applyFluidGridsTheme, f as sanitizeThemeValue, m as themeToCssVariables, o as resetFluidGridsConfig, p as themeKey, r as getFluidGridsConfig, s as resetFluidGridsExecutionState, t as config, u as FLUIDGRIDS_THEME_TOKEN_MAP } from "./config-X97zrIvn.js";
@@ -28,7 +28,7 @@ import { a as BuildWorkflowCodeDocument, i as WorkflowCodeSourceDocument, r as W
28
28
  import { _ as BulkAssignWorkflowsToProjectDocument, c as RenameWorkflowProjectDocument, d as DeleteWorkflowProjectDocument, f as DeleteWorkflowFolderDocument, g as BulkDeleteWorkflowsDocument, h as BulkMoveWorkflowsToFolderDocument, l as RenameWorkflowFolderDocument, m as CreateWorkflowFolderDocument, o as WorkflowProjectsDocument, p as CreateWorkflowProjectDocument, s as WorkflowFoldersDocument, u as MoveWorkflowFolderDocument } from "./useWorkflowOrganization-r5FWNBs6.js";
29
29
  import { t as HistoryPage } from "./HistoryPage-Drdk9j_Q.js";
30
30
  import { c as SetRunFailureTriageEnabledDocument, l as FgTriageFailedRunsDocument, o as RunFailureTriageSettingsDocument, s as RunFailureClustersDocument, u as DismissRunFailureClusterDocument } from "./FailureTriagePanel-Cka9Rc1_.js";
31
- import { t as TemplatesPage } from "./TemplatesPage-t7rGU-BP.js";
31
+ import { t as TemplatesPage } from "./TemplatesPage-CO8diOo0.js";
32
32
  import { n as NodeSchemaIntrospectionDocument, r as RemoveNodeFromWorkflowsDocument, t as NodeUsageStatusDocument } from "./NodeUsageStatusDocument-B-XguSjm.js";
33
33
  import { a as WorkflowSharingDocument, o as ShareWorkflowDocument } from "./WorkflowShareDialog-D_G3TUGQ.js";
34
34
  import { S as CreateTaskQueueDocument, _ as DeleteWorkerTokenDocument, b as DeleteTaskQueueDocument, f as WorkerTokensDocument, g as SetWorkerTokenConnectionAllowlistDocument, h as TaskQueuesDocument, m as TaskQueueStatsDocument, p as WorkflowWorkersDocument, v as RotateWorkerTokenDocument, x as UpdateTaskQueueDocument, y as CreateWorkerTokenDocument } from "./api-CEzqoN5H.js";
@@ -44,7 +44,7 @@ import { a as ManagedAiWorkspacePolicyDocument, c as UpdateDurableHistoryCapsDoc
44
44
  import { t as WorkflowSettingsDrawer } from "./WorkflowSettingsDrawer-BiqTf_tV.js";
45
45
  import { t as DataSinkDashboardPage } from "./DataSinkDashboardPage-CPq6-jZM.js";
46
46
  import { a as ContinuousOptimisationSettingsDocument, c as ProposeOptimisationDocument, d as WorkspaceAiUsageDocument, f as ErrorAnalyticsDocument, i as OptimisationSuggestionsDocument, l as FgRunOptimisationScanDocument, m as CodeWorkflowInsightsDocument, n as InsightsPage, o as SnoozeOptimisationSuggestionDocument, p as TaskQueueAvailabilityDocument, s as SetContinuousOptimisationEnabledDocument, t as ErrorAnalyticsPage, u as DismissOptimisationSuggestionDocument } from "./InsightsPage-mYWZvyGR.js";
47
- import { C as CardHeader, S as CardFooter, b as CardContent, w as CardTitle, x as CardDescription, y as Card } from "./TemplateCard-D2zt-kXW.js";
47
+ import { C as CardDescription, E as CardTitle, S as CardContent, T as CardHeader, w as CardFooter, x as Card } from "./TemplateCard-Buj74ZSq.js";
48
48
  import { a as useLogStreamDestinations, i as useLogStreamDestinationActions, n as useDataSinks, o as useRunReplayActions, r as useInsightsData, t as useDataSinkData } from "./useObservability-DsHX86Xl.js";
49
49
  import { t as VariablesPage } from "./VariablesPage-CFzJFbMb.js";
50
50
  import { a as useSecretsProviderConfigs, c as useVariables, i as useSaveSecretsProviderConfig, n as useDeleteVariable, o as useTestSecretsProviderConnection, r as useRevealVariableValue, s as useUpdateVariable, t as useCreateVariable } from "./useVariables-DFdZofLQ.js";
@@ -5320,7 +5320,7 @@ let BigConsoleWidgetType = /* @__PURE__ */ function(BigConsoleWidgetType) {
5320
5320
 
5321
5321
  // src/components/FluidGridsRoot.tsx
5322
5322
  const WorkflowsList$1 = lazy(() => import("./WorkflowsList-DjKePEwo.js").then((n) => n.n).then((m) => ({ default: m.WorkflowsList })));
5323
- const WorkflowBuilder$2 = lazy(() => import("./WorkflowBuilder-CtTM79lP.js").then((n) => n.n).then((m) => ({ default: m.WorkflowBuilder })));
5323
+ const WorkflowBuilder$2 = lazy(() => import("./WorkflowBuilder-C0E9b2vG.js").then((n) => n.n).then((m) => ({ default: m.WorkflowBuilder })));
5324
5324
  const ExecutionsListPage$1 = lazy(() => import("./ExecutionsListPage-xQthHGAJ.js").then((n) => n.n).then((m) => ({ default: m.ExecutionsListPage })));
5325
5325
  const ExecutionDetailPage$1 = lazy(() => import("./ExecutionDetailPage-d29WPJDN.js").then((n) => n.n).then((m) => ({ default: m.ExecutionDetailPage })));
5326
5326
  const PageLoader = () => /* @__PURE__ */ jsx("div", {
package/dist/templates.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as TemplatesPage } from "./TemplatesPage-t7rGU-BP.js";
3
- import { t as TemplatePreview } from "./TemplatePreview-BgdkcCF-.js";
2
+ import { t as TemplatesPage } from "./TemplatesPage-CO8diOo0.js";
3
+ import { t as TemplatePreview } from "./TemplatePreview-3gYesm9-.js";
4
4
 
5
5
  export { TemplatePreview, TemplatesPage };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { n as WorkflowBuilderCore, t as WorkflowBuilder } from "./WorkflowBuilder-BS9kVcgU.js";
3
- import { t as WorkflowBuilder$1 } from "./WorkflowBuilder-CtTM79lP.js";
2
+ import { n as WorkflowBuilderCore, t as WorkflowBuilder } from "./WorkflowBuilder-DSGaB0ak.js";
3
+ import { t as WorkflowBuilder$1 } from "./WorkflowBuilder-C0E9b2vG.js";
4
4
  import { A as useFlowStore } from "./node-operation-selection-sT7nCmDk.js";
5
5
  import { g as refetchStoreNodes } from "./FluidGridsProvider-BRC0WlAa.js";
6
6
  import { t as WorkflowSearchRedirect } from "./WorkflowSearchRedirect-Bqdxr833.js";
@@ -55,14 +55,14 @@ function createWorkflowPages(importers) {
55
55
  */
56
56
  const pages = createWorkflowPages({
57
57
  WorkflowsList: () => import("./WorkflowsList-DjKePEwo.js").then((n) => n.n),
58
- WorkflowBuilderPage: () => import("./WorkflowBuilder-CtTM79lP.js").then((n) => n.n).then((m) => ({ WorkflowBuilderPage: m.WorkflowBuilder })),
58
+ WorkflowBuilderPage: () => import("./WorkflowBuilder-C0E9b2vG.js").then((n) => n.n).then((m) => ({ WorkflowBuilderPage: m.WorkflowBuilder })),
59
59
  WorkflowSearchRedirect: () => import("./WorkflowSearchRedirect-Bqdxr833.js").then((n) => n.n),
60
- TemplatePreview: () => import("./TemplatePreview-BgdkcCF-.js").then((n) => n.n),
61
- AiStudioPage: () => import("./AiStudioPage-CZTaVeQE.js").then((n) => n.n),
60
+ TemplatePreview: () => import("./TemplatePreview-3gYesm9-.js").then((n) => n.n),
61
+ AiStudioPage: () => import("./AiStudioPage-BQy__ak-.js").then((n) => n.n),
62
62
  ExecutionsListPage: () => import("./ExecutionsListPage-xQthHGAJ.js").then((n) => n.n),
63
63
  ExecutionDetailPage: () => import("./ExecutionDetailPage-d29WPJDN.js").then((n) => n.n),
64
64
  HistoryPage: () => import("./HistoryPage-Drdk9j_Q.js").then((n) => n.n),
65
- TemplatesPage: () => import("./TemplatesPage-t7rGU-BP.js").then((n) => n.n),
65
+ TemplatesPage: () => import("./TemplatesPage-CO8diOo0.js").then((n) => n.n),
66
66
  NodesPage: () => import("./NodesPage-D8rMR0is.js").then((n) => n.n),
67
67
  SettingsPage: () => import("./SettingsPage-DFnqjkpT.js").then((n) => n.r),
68
68
  InsightsPage: () => import("./InsightsPage-mYWZvyGR.js").then((n) => n.r),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fluidgrids-fe-sdk",
3
- "version": "2026.1115.9",
3
+ "version": "2026.1115.10",
4
4
  "description": "FluidGrids Workflow Builder SDK - Embeddable visual workflow automation",
5
5
  "type": "module",
6
6
  "imports": {