@burdenoff/fluidgrids-fe-sdk 2026.1112.5 → 2026.1112.6

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-BPe5YNF6.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-DUkCKl-S.js";
5
5
  import { Ot as builderPathOf, kt as classifyCreateRefusal, u as ensureNodeTypesLoaded, z as buildOperationSeed } from "./FluidGridsProvider-B1hgCbxG.js";
6
6
  import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
7
7
  import { a as notifyFluidGridsAiCreditsUpdated, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
@@ -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 { t as FlowBuilderPage } from "./flow-builder-BPe5YNF6.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-DUkCKl-S.js";
5
5
  import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-DanOe65C.js";
6
6
  import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-Bj7AG_0y.js";
7
7
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
@@ -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-BPe5YNF6.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-DUkCKl-S.js";
4
4
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
5
5
  import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
6
6
  import { Or as WorkflowDefinitionDocument } from "./graphql-operation-types-z2oXfQvM.js";
@@ -6,7 +6,7 @@ import { d as Input } from "./dialog-Cjb4lB4D.js";
6
6
  import { b as Card } from "./TemplateCard-DanOe65C.js";
7
7
  import { t as cn } from "./cn-QqidFIgr.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { _ as useNodeSelectedEvent, v as FluidGridsMark } from "./flow-builder-BPe5YNF6.js";
9
+ import { _ as useNodeSelectedEvent, v as FluidGridsMark } from "./flow-builder-DUkCKl-S.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";
@@ -2,7 +2,7 @@
2
2
  import { B as createConfiguredNode, Nt as useSaveStatusStore, Q as selectedOperationOf, R as SENSITIVE_PARAM, Y as nodeTitle, Z as paramsFromOperation, _ as registryNodeData, f as isNodeConfigsInitialized, gt as autosaveAllowedFor, o as NODE_CONFIGS, q as fixedParameterState, wt as isFlowComplete } from "./FluidGridsProvider-B1hgCbxG.js";
3
3
  import { E as resolveOutputHandles, H as useFlowStore, T as resolveInputHandles } from "./node-operation-selection-DAbS6jSY.js";
4
4
  import { j as isNodeTypeHiddenFromPalette } from "./TemplateCard-DanOe65C.js";
5
- import { g as computeAttachPosition } from "./flow-builder-BPe5YNF6.js";
5
+ import { g as computeAttachPosition } from "./flow-builder-DUkCKl-S.js";
6
6
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
7
7
  import { z } from "zod";
8
8
 
@@ -2,7 +2,7 @@
2
2
  import { n as useAgentMarksStore, r as toPlainText } from "./marksStore-DGCXjTmZ.js";
3
3
  import { Q as selectedOperationOf, Y as nodeTitle, Z as paramsFromOperation } from "./FluidGridsProvider-B1hgCbxG.js";
4
4
  import { H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
5
- import { p as notesKeyOf } from "./flow-builder-BPe5YNF6.js";
5
+ import { p as notesKeyOf } from "./flow-builder-DUkCKl-S.js";
6
6
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
7
7
  import { z } from "zod";
8
8
 
@@ -27,7 +27,7 @@ import { a as TEST_STATUS_TONE_CLASS, c as draftToInput, d as isTestRunOpen, f a
27
27
  import { n as useRequestedProposal } from "./useRequestedProposal-B7uPXfZB.js";
28
28
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
29
29
  import * as React$1 from "react";
30
- import { Suspense, createContext, lazy, memo, useCallback, useContext, useDeferredValue, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
30
+ import { Suspense, createContext, lazy, memo, useCallback, useContext, useDeferredValue, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
31
31
  import { Link, useNavigate, useParams } from "react-router";
32
32
  import { useMutation, useQuery } from "@apollo/client/react";
33
33
  import { create } from "zustand";
@@ -260,7 +260,7 @@ function IntroductionPropertyPanel() {
260
260
  * waiting for its chunk and React's Suspense throttle (about 0.5 s on first
261
261
  * open even with the chunk cached).
262
262
  */
263
- const NodeDetailViewOverlay = preloadableLazy(() => import("./node-detail-view-oAotM2EI.js").then((m) => m.NodeDetailView), "NodeDetailView");
263
+ const NodeDetailViewOverlay = preloadableLazy(() => import("./node-detail-view-ApMQwQRQ.js").then((m) => m.NodeDetailView), "NodeDetailView");
264
264
  const QuickConfigPanelOverlay = preloadableLazy(() => import("./quick-config-panel-Pm5nkZVr.js").then((m) => m.QuickConfigPanel), "QuickConfigPanel");
265
265
  const SidebarNodeEditorOverlay = preloadableLazy(() => import("./sidebar-node-editor-BNub2vUq.js").then((m) => m.SidebarNodeEditor), "SidebarNodeEditor");
266
266
  const WorkflowShareDialogOverlay = preloadableLazy(() => import("./WorkflowShareDialog-DB-qJLB2.js").then((n) => n.n).then((m) => m.WorkflowShareDialog), "WorkflowShareDialog");
@@ -468,8 +468,111 @@ function nextStoreOffset(products) {
468
468
  return new Set(products.map((product) => product.id)).size;
469
469
  }
470
470
 
471
+ // src/hooks/store/store-pages-cache.ts
472
+ /**
473
+ * The "Load more" pages of the builder's store node lists, kept apart from
474
+ * the first page.
475
+ *
476
+ * The first page is an Apollo query with `cache-and-network`, so it is
477
+ * fetched again every time a list mounts: after opening a node and going
478
+ * back, after closing and reopening the Node Store, after switching
479
+ * categories. The later pages used to be merged into that same cache entry
480
+ * (`fetchMore` + `updateQuery`), so each new first page replaced the merged
481
+ * list: the extra nodes showed for a moment and then disappeared. The later
482
+ * pages now live here, keyed by the list's filter, and are always appended
483
+ * after whatever the first page holds, so refreshing page 1 never drops them.
484
+ */
485
+ /** How many filters keep their loaded pages; the oldest is dropped first. */
486
+ const STORE_PAGES_CACHE_LIMIT = 50;
487
+ var StorePagesCache = class {
488
+ limit;
489
+ entries = /* @__PURE__ */ new Map();
490
+ listeners = /* @__PURE__ */ new Set();
491
+ constructor(limit = 50) {
492
+ this.limit = limit;
493
+ }
494
+ /** The pages loaded after the first one for `key`, if any. */
495
+ get(key) {
496
+ return this.entries.get(key);
497
+ }
498
+ /**
499
+ * Adds one more page for `key`. Nodes already listed are not added twice,
500
+ * and `hasMore` / `totalCount` come from the newest page.
501
+ */
502
+ append(key, page) {
503
+ const previous = this.entries.get(key);
504
+ this.entries.delete(key);
505
+ this.entries.set(key, {
506
+ products: appendUniqueById(previous?.products ?? [], page.products),
507
+ hasMore: page.hasMore,
508
+ totalCount: page.totalCount
509
+ });
510
+ for (const oldest of this.entries.keys()) {
511
+ if (this.entries.size <= this.limit) break;
512
+ this.entries.delete(oldest);
513
+ }
514
+ this.emit();
515
+ }
516
+ /** Forgets the later pages for `key`, e.g. on an explicit refresh. */
517
+ clear(key) {
518
+ if (this.entries.delete(key)) this.emit();
519
+ }
520
+ /** Forgets every list's later pages. */
521
+ clearAll() {
522
+ if (this.entries.size === 0) return;
523
+ this.entries.clear();
524
+ this.emit();
525
+ }
526
+ /** For `useSyncExternalStore`. */
527
+ subscribe = (listener) => {
528
+ this.listeners.add(listener);
529
+ return () => {
530
+ this.listeners.delete(listener);
531
+ };
532
+ };
533
+ emit() {
534
+ for (const listener of this.listeners) listener();
535
+ }
536
+ };
537
+ /**
538
+ * The list a store page belongs to: the filter, sort and page size, plus the
539
+ * workspace, organization and user the store answers for (`isPurchased`
540
+ * differs per user). The offset is left out on purpose: every page of one
541
+ * list shares the key.
542
+ */
543
+ function storeListKey(input, scope) {
544
+ return JSON.stringify([
545
+ input.filter ?? null,
546
+ input.sortBy ?? null,
547
+ input.pagination?.limit ?? null,
548
+ scope.workspaceId ?? null,
549
+ scope.organizationId ?? null,
550
+ scope.userId ?? null
551
+ ]);
552
+ }
553
+ /**
554
+ * The list to show: the first page as it is now, then every later page
555
+ * without the nodes the first page already has. With no first page yet
556
+ * there is nothing to show, because the later pages' offsets assume it.
557
+ */
558
+ function mergeStorePages(first, later) {
559
+ if (!first) return void 0;
560
+ if (!later) return first;
561
+ return {
562
+ products: appendUniqueById(first.products, later.products),
563
+ hasMore: later.hasMore,
564
+ totalCount: later.totalCount
565
+ };
566
+ }
567
+
471
568
  // src/hooks/store/useStoreNodes.ts
472
569
  /**
570
+ * Later pages of every store node list in this page, keyed by filter,
571
+ * workspace, organization and user. Module-level rather than per Apollo
572
+ * client so a client rebuilt by the host (a new token) keeps them too.
573
+ */
574
+ const laterPagesCache = new StorePagesCache();
575
+ /**
473
576
  * Hook to browse and search workflow nodes from the global store
474
577
  */
475
578
  function useStoreNodes(options = {}) {
@@ -477,6 +580,7 @@ function useStoreNodes(options = {}) {
477
580
  const context = useContext(FluidGridsContext);
478
581
  const workspaceId = context?.workspaceId ?? getFluidGridsConfig().workspaceId;
479
582
  const organizationId = context?.organizationId;
583
+ const userId = context?.userId;
480
584
  const input = {
481
585
  filter: {
482
586
  search: options.filter?.search,
@@ -496,52 +600,66 @@ function useStoreNodes(options = {}) {
496
600
  workspaceId,
497
601
  workspaceToken: getFluidGridsConfig().workspaceToken
498
602
  });
499
- const { data, loading, error, fetchMore, refetch } = useQuery(BrowseWorkflowNodesDocument, {
603
+ const requestContext = Object.keys(contextHeaders).length > 0 ? { headers: contextHeaders } : void 0;
604
+ const { data, loading, error, refetch } = useQuery(BrowseWorkflowNodesDocument, {
500
605
  client,
501
606
  variables: { input },
502
607
  fetchPolicy: "cache-and-network",
503
- context: Object.keys(contextHeaders).length > 0 ? { headers: contextHeaders } : void 0
608
+ context: requestContext
504
609
  });
610
+ const listKey = storeListKey(input, {
611
+ workspaceId,
612
+ organizationId,
613
+ userId
614
+ });
615
+ const laterPages = useSyncExternalStore(laterPagesCache.subscribe, () => laterPagesCache.get(listKey));
616
+ const firstPage = data?.browseStore;
617
+ const list = useMemo(() => mergeStorePages(firstPage, laterPages), [firstPage, laterPages]);
505
618
  const loadingMoreRef = useRef(false);
506
619
  const [loadingMore, setLoadingMore] = useState(false);
620
+ const [loadMoreError, setLoadMoreError] = useState();
507
621
  const handleFetchMore = () => {
508
- if (!data?.browseStore?.hasMore || loadingMoreRef.current) return;
622
+ if (!list?.hasMore || loadingMoreRef.current) return;
509
623
  loadingMoreRef.current = true;
510
624
  setLoadingMore(true);
511
- fetchMore({
625
+ setLoadMoreError(void 0);
626
+ const key = listKey;
627
+ client.query({
628
+ query: BrowseWorkflowNodesDocument,
512
629
  variables: { input: {
513
630
  ...input,
514
631
  pagination: {
515
632
  ...input.pagination,
516
- offset: nextStoreOffset(data.browseStore.products)
633
+ offset: nextStoreOffset(list.products)
517
634
  }
518
635
  } },
519
- context: Object.keys(contextHeaders).length > 0 ? { headers: contextHeaders } : void 0,
520
- updateQuery: (prev, { fetchMoreResult }) => {
521
- if (!fetchMoreResult) return prev;
522
- return {
523
- ...fetchMoreResult,
524
- browseStore: {
525
- ...fetchMoreResult.browseStore,
526
- products: appendUniqueById(prev.browseStore?.products || [], fetchMoreResult.browseStore?.products || [])
527
- }
528
- };
529
- }
636
+ fetchPolicy: "no-cache",
637
+ context: requestContext
638
+ }).then(({ data: page }) => {
639
+ if (page?.browseStore) laterPagesCache.append(key, page.browseStore);
640
+ }).catch((cause) => {
641
+ setLoadMoreError(cause instanceof Error ? cause : new Error(String(cause)));
530
642
  }).finally(() => {
531
643
  loadingMoreRef.current = false;
532
644
  setLoadingMore(false);
533
645
  });
534
646
  };
647
+ const handleRefetch = useCallback(() => {
648
+ laterPagesCache.clear(listKey);
649
+ return refetch();
650
+ }, [listKey, refetch]);
535
651
  return {
536
- products: data?.browseStore?.products || [],
537
- totalCount: data?.browseStore?.totalCount || 0,
538
- hasMore: data?.browseStore?.hasMore || false,
652
+ products: list?.products ?? [],
653
+ totalCount: list?.totalCount ?? 0,
654
+ hasMore: list?.hasMore ?? false,
539
655
  loading,
540
656
  /** True while a "Load more" page is being fetched. */
541
657
  loadingMore,
542
658
  error,
659
+ /** The last "Load more" failure; the button stays usable to retry. */
660
+ loadMoreError,
543
661
  fetchMore: handleFetchMore,
544
- refetch
662
+ refetch: handleRefetch
545
663
  };
546
664
  }
547
665
 
@@ -17618,7 +17736,7 @@ const FlowBuilder = ({ readOnly = false }) => {
17618
17736
  paletteGatesRef.current = paletteGates;
17619
17737
  }, [paletteGates]);
17620
17738
  useWarmBuilderOverlays();
17621
- useLazyAgentTools(() => import("./agentTools-B4Gjf8R7.js").then(({ createBuilderAgentTools }) => createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current })), !editingBlocked, "Agent tools");
17739
+ useLazyAgentTools(() => import("./agentTools-DlPHMfhA.js").then(({ createBuilderAgentTools }) => createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current })), !editingBlocked, "Agent tools");
17622
17740
  const [nodes, edges, onNodesChange, onEdgesChange, onConnect] = useFlowStore(useShallow((s) => {
17623
17741
  return [
17624
17742
  s.workflow.nodes,
@@ -17660,7 +17778,7 @@ const FlowBuilder = ({ readOnly = false }) => {
17660
17778
  useEffect(() => {
17661
17779
  fitViewRef.current = fitView;
17662
17780
  }, [fitView]);
17663
- useLazyAgentTools(() => import("./canvasNoteTools-Bve4Fo7R.js").then(({ createCanvasNoteTools }) => createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
17781
+ useLazyAgentTools(() => import("./canvasNoteTools-CkAsMSvt.js").then(({ createCanvasNoteTools }) => createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
17664
17782
  nodes: [{ id: nodeId }],
17665
17783
  duration: 400,
17666
17784
  padding: .6,
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { At as createThenOpen, Dt as blankWorkflowCreateInput, cn as useNodeExecution, et as resolveUiSpec, kt as classifyCreateRefusal, m as refetchStoreNodes, n as FluidGridsProvider, r as useFluidGridsContext, tt as stripSubmitActions, vn as useFluidGridsAnalytics, yn as openRunQuotaUpgradePrompt } from "./FluidGridsProvider-B1hgCbxG.js";
3
- import { n as WorkflowBuilderCore, r as EnsureThemeProvider, t as WorkflowBuilder } from "./WorkflowBuilder-DDgWgnwH.js";
3
+ import { n as WorkflowBuilderCore, r as EnsureThemeProvider, t as WorkflowBuilder } from "./WorkflowBuilder-D9W8hQTO.js";
4
4
  import { a as useCreateWorkflowFirst, i as FirstWorkflowChecklistView, r as FirstWorkflowChecklist, t as WorkflowsList } from "./WorkflowsList-rOxlI49U.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-DmYS5JEY.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-B8PtcT0Q.js";
6
6
  import { t as WorkflowSearchRedirect } from "./WorkflowSearchRedirect-iPQBL6WO.js";
7
7
  import { A as isDurableFunctionNodeType, C as CardFooter, D as RUN_CONTROL_NODE_TYPES, E as DURABLE_FUNCTION_NODE_TYPES, M as isRunControlNodeType, O as WORKFLOW_TEST_NODE_TYPES, S as CardDescription, T as CardTitle, b as Card, i as badgeVariants, j as isNodeTypeHiddenFromPalette, k as filterPaletteNodes, r as Badge, w as CardHeader, x as CardContent } from "./TemplateCard-DanOe65C.js";
8
- import { r as extractTemplateGraph, t as TemplatePreview } from "./TemplatePreview-CBwvi0ga.js";
8
+ import { r as extractTemplateGraph, t as TemplatePreview } from "./TemplatePreview-BFMsDQif.js";
9
9
  import { $ as DismissOptimisationSuggestionDocument, $n as UnpauseWorkflowScheduleDocument, $r as WorkflowRunHistoryDocument, $t as RemoveNodeFromWorkflowsDocument, A as CreateTaskQueueDocument, An as SetRunFailureTriageEnabledDocument, Ar as WorkflowDefinitionsDocument, At as NodeManifestDocument, B as DashboardSummaryDocument, Bn as StopWebhookTestListenerDocument, Br as WorkflowGitPushesDocument, Bt as PauseWorkflowScheduleDocument, C as CancelWorkflowProposalDocument, Ci as WorkflowVersioningDocument, Cn as RunLogsDocument, Cr as WorkflowBatchOperationUpdatedDocument, Ct as ImportWorkflowTemplateDocument, D as ContinuousOptimisationSettingsFieldsFragmentDoc, Di as WorkspaceRunsQuotaDocument, Dn as SaveWorkflowDraftDocument, Dr as WorkflowCodeSourceDocument, Dt as MoveWorkflowFolderDocument, E as ContinuousOptimisationSettingsDocument, Ei as WorkspaceAiUsageDocument, En as SandboxWorkflowWorkerFieldsFragmentDoc, Er as WorkflowCodeBundleSdkDocument, Et as ManagedAiWorkspacePolicyDocument, F as CreateWorkflowSearchAttributeDocument, Fn as SignalWorkflowRunDocument, Fr as WorkflowFoldersDocument, Ft as NodeUsageStatusDocument, G as DeleteWorkerTokenDocument, Gn as TaskQueueStatsDocument, Gr as WorkflowPromotionRequestsDocument, Gt as ProposeRunFixDocument, H as DeactivateWorkflowDefinitionDocument, Hn as TakeOverWorkflowEditLeaseDocument, Hr as WorkflowNotificationSettingsDocument, Ht as PreviewN8nImportDocument, I as CreateWorkflowSignalTokenDocument, In as SnoozeOptimisationSuggestionDocument, Ir as WorkflowGenerationDocument, It as OptimisationSuggestionFieldsFragmentDoc, J as DeleteWorkflowProjectDocument, Jn as TerminateWorkflowRunDocument, Jr as WorkflowRunDeterminismStatusDocument, Jt as QueryWorkflowRunDocument, K as DeleteWorkflowDefinitionDocument, Kn as TaskQueuesDocument, Kr as WorkflowProposalDocument, Kt as ProposeWorkflowChangeDocument, L as CreateWorkflowTestCaseDocument, Ln as StartBatchExportDocument, Lr as WorkflowGenerationTemplatesDocument, Lt as OptimisationSuggestionsDocument, M as CreateWorkflowDefinitionDocument, Mn as SetWorkflowRolloutDocument, Mr as WorkflowEditLeaseDocument, Mt as NodePaletteEntriesDocument, N as CreateWorkflowFolderDocument, Nn as SetWorkflowRunVersioningOverrideDocument, Nr as WorkflowEditLeaseStatusDocument, Nt as NodeSchemaIntrospectionDocument, O as CreateActivityPauseRuleDocument, On as SearchFluidgridsTagsDocument, Or as WorkflowDefinitionDocument, Ot as NodeEndpointConfigDocument, P as CreateWorkflowProjectDocument, Pn as ShareWorkflowDocument, Pr as WorkflowEnvironmentsDocument, Pt as NodeStatesDocument, Q as DeployWorkflowVersionToDevDocument, Qn as UnpauseActivityDocument, Qr as WorkflowRunHistoryArchiveDocument, Qt as ReleaseWorkflowEditLeaseDocument, R as CreateWorkflowTestCaseFromRunDocument, Rn as StartBatchOperationDocument, Rr as WorkflowGitCommitsDocument, Rt as PauseActivityDocument, S as CancelWorkflowPromotionDocument, Si as WorkflowVersionDrainageDocument, Sn as RunLogLineFieldsFragmentDoc, Sr as WorkflowBatchOperationDocument, St as ImportWorkflowDocument, T as CompleteActivityByIdDocument, Ti as WorkflowWorkersDocument, Tn as SandboxWorkerTokenFieldsFragmentDoc, Tr as WorkflowCallInputsDocument, Tt as ListenForWebhookTestEventDocument, U as DeleteActivityPauseRuleDocument, Un as TaskQueueFieldsFragmentDoc, Ur as WorkflowPinnedDataDocument, Ut as PreviewScheduleDocument, V as DataTablesTagsDocument, Vn as TagFluidgridsEntityDocument, Vr as WorkflowGitRepositoryDocument, Vt as PinNodeDataDocument, W as DeleteTaskQueueDocument, Wn as TaskQueueKindStatsFieldsFragmentDoc, Wr as WorkflowProjectsDocument, Wt as ProposeOptimisationDocument, X as DeleteWorkflowSearchAttributeDocument, Xn as TriggerWorkflowScheduleDocument, Xr as WorkflowRunEventFieldsFragmentDoc, Xt as RejectWorkflowPromotionDocument, Y as DeleteWorkflowRolloutDocument, Yn as TriggerWorkflowDocument, Yr as WorkflowRunDocument, Yt as RegisterNodeDocument, Z as DeleteWorkflowTestCaseDocument, Zn as UnlinkWorkflowGitRepositoryDocument, Zr as WorkflowRunHierarchyDocument, Zt as RejectWorkflowProposalDocument, _ as BulkDeleteWorkflowsDocument, _i as WorkflowTestRunDocument, _n as RunFailureClustersDocument, _r as WorkflowActivityPauseRuleFieldsFragmentDoc, _t as FileDownloadUrlDocument, a as AgentStepFieldsFragmentDoc, ai as WorkflowRunsDocument, an as ResetWorkflowRunDocument, ar as UpdateDurableHistoryCapsDocument, at as ErrorAnalyticsDocument, b as CancelExecutionDocument, bi as WorkflowUpdateResultFieldsFragmentDoc, bn as RunFromNodeEligibilityDocument, br as WorkflowAuthoringDocument, bt as FluidgridsTagAssignmentFieldsFragmentDoc, c as ApplyWorkflowProposalDocument, ci as WorkflowScheduleTickFieldsFragmentDoc, cn as RestoreWorkflowVersionDocument, cr as UpdateWorkflowDefinitionDocument, ct as ExecutionDetailDocument, d as AvailableFluidgridsTagsDocument, di as WorkflowSharingDocument, dn as RevokeWorkflowSignalTokenDocument, dr as UpdateWorkflowRunDocument, dt as ExecutionsListDocument, ei as WorkflowRunMetadataDocument, en as RenameWorkflowFolderDocument, er as UnpinNodeDataDocument, et as DismissRunFailureClusterDocument, f as BackfillWorkflowScheduleDocument, fi as WorkflowSignalTokenFieldsFragmentDoc, fn as RotateWorkerTokenDocument, fr as UpdateWorkflowTestCaseDocument, ft as ExplainRunDocument, g as BulkAssignWorkflowsToProjectDocument, gi as WorkflowTestCasesDocument, gn as RunEventAppendedDocument, gr as WorkerTokensDocument, gt as FgTriageFailedRunsDocument, h as BuilderRunStatusDocument, hi as WorkflowTestCaseResultFieldsFragmentDoc, hn as RunControlFieldsDocument, hr as WebhookTestListenerDocument, ht as FgRunOptimisationScanDocument, i as ActiveExecutionsDocument, ii as WorkflowRunsCountDocument, in as ResetActivityDocument, ir as UpdateCodecServerSettingsDocument, it as DurableRunFieldsDocument, j as CreateWorkerTokenDocument, jn as SetWorkerTokenConnectionAllowlistDocument, jr as WorkflowDefinitionsTagsDocument, jt as NodeManifestsDocument, k as CreateFluidgridsTagDocument, kn as SetContinuousOptimisationEnabledDocument, kr as WorkflowDefinitionForBuilderDocument, kt as NodeEndpointConfigsDocument, l as ApproveWorkflowPromotionDocument, li as WorkflowSearchAttributeFieldsFragmentDoc, ln as ResumeExecutionDocument, lr as UpdateWorkflowEnvironmentPolicyDocument, lt as ExecutionLogsDocument, m as BuilderRunNodeDetailsDocument, mi as WorkflowTestCaseFieldsFragmentDoc, mn as RunCodeReplaceFieldsFragmentDoc, mr as UsageTimeSeriesDocument, mt as FailActivityByIdDocument, n as ActivateWorkflowDefinitionDocument, ni as WorkflowRunStackTraceDocument, nn as ReplaceFluidgridsEntityTagsDocument, nr as UpdateActivityOptionsDocument, nt as DurableHistoryCapsDocument, o as AgentStepUpdatedDocument, oi as WorkflowScheduleDescribeDocument, on as ResetWorkflowRunToLastCleanTaskDocument, or as UpdateManagedAiWorkspacePolicyDocument, ot as EventRegistrationsDocument, p as BuildWorkflowCodeDocument, pi as WorkflowSignalTokensDocument, pn as RunAiUsageDocument, pr as UpsertWorkflowRunSearchAttributesDocument, pt as ExportWorkflowCodeDocument, q as DeleteWorkflowFolderDocument, qn as TerminateExecutionDocument, qr as WorkflowRolloutFieldsFragmentDoc, qt as PushWorkflowToGitDocument, r as ActivateWorkflowVersionCheckedDocument, ri as WorkflowRunUpdateDocument, rn as RequestWorkflowPromotionDocument, rr as UpdateArchiveSettingsDocument, rt as DurableParityRunFieldsDocument, s as AgentTraceDocument, si as WorkflowScheduleDescriptionFieldsFragmentDoc, sn as RestoreWorkflowFromGitDocument, sr as UpdateTaskQueueDocument, st as ExecuteStepDocument, t as AcquireWorkflowEditLeaseDocument, ti as WorkflowRunPendingDocument, tn as RenameWorkflowProjectDocument, tr as UntagFluidgridsEntityDocument, tt as DuplicateWorkflowDocument, u as ArchiveSettingsDocument, ui as WorkflowSearchAttributesDocument, un as RetryNodeDocument, ur as UpdateWorkflowNotificationSettingsDocument, ut as ExecutionStatsDocument, v as BulkMoveWorkflowsToFolderDocument, vi as WorkflowTestRunFieldsFragmentDoc, vn as RunFailureTriageSettingsDocument, vr as WorkflowActivityPauseRulesDocument, vt as FluidgridsAvailableTagFieldsFragmentDoc, w as CodecServerSettingsDocument, wi as WorkflowVersionsDocument, wn as RunWorkflowTestsDocument, wr as WorkflowBatchOperationsDocument, wt as LinkWorkflowGitRepositoryDocument, x as CancelWorkflowGenerationDocument, xi as WorkflowVersionDiffDocument, xn as RunLogAppendedDocument, xr as WorkflowBatchJobFieldsFragmentDoc, xt as GenerateWorkflowFromPromptDocument, y as CancelBatchOperationDocument, yi as WorkflowTestRunsDocument, yn as RunFromNodeDocument, yr as WorkflowArchiveSettingsFieldsFragmentDoc, yt as FluidgridsEntityTagsDocument, z as CreateWorkflowVersionDocument, zn as StartBatchTerminateDocument, zr as WorkflowGitDiffDocument, zt as PauseExecutionDocument } from "./graphql-operation-types-z2oXfQvM.js";
10
- import { t as AiStudioPage } from "./AiStudioPage-BNmXx6LB.js";
10
+ import { t as AiStudioPage } from "./AiStudioPage-BSLdKT0H.js";
11
11
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
12
- import { c as RunsUsageMeter, l as RunsUsageMeterView, o as BUILDER_FULLSCREEN_ATTRIBUTE, s as BUILDER_FULLSCREEN_EVENT, t as FlowBuilderPage, u as useRunsQuota, v as FluidGridsMark } from "./flow-builder-BPe5YNF6.js";
12
+ import { c as RunsUsageMeter, l as RunsUsageMeterView, o as BUILDER_FULLSCREEN_ATTRIBUTE, s as BUILDER_FULLSCREEN_EVENT, t as FlowBuilderPage, u as useRunsQuota, v as FluidGridsMark } from "./flow-builder-DUkCKl-S.js";
13
13
  import { A as themeKey, C as resetFluidGridsConfig, D as FLUIDGRIDS_THEME_TOKEN_MAP, O as applyFluidGridsTheme, S as getGraphQLEndpoint, T as setFluidGridsConfig, _ as throwIfResultError, a as resetFluidGridsClient, c as createFluidGridsTokenRefreshLink, g as isUnauthenticatedError, h as isForbiddenError, i as isFluidGridsClientReady, j as themeToCssVariables, k as sanitizeThemeValue, l as FLUIDGRIDS_EVENTS_VERSION, m as describeOperationError, n as getFluidGridsClient, o as setFluidGridsClient, r as getFluidGridsClientSafe, s as waitForFluidGridsClient, t as createFluidGridsClient, u as FLUIDGRIDS_EVENT_NAMES, w as resetFluidGridsExecutionState, x as getFluidGridsConfig, y as config } from "./client-C9XSzSXr.js";
14
14
  import { t as ExecutionsListPage } from "./ExecutionsListPage-DuuPSVEj.js";
15
15
  import { n as buttonVariants, t as Button } from "./button-DG7y_FVJ.js";
@@ -82,7 +82,7 @@ import * as SwitchPrimitives from "@radix-ui/react-switch";
82
82
 
83
83
  // src/components/FluidGridsRoot.tsx
84
84
  const WorkflowsList$1 = lazy(() => import("./WorkflowsList-rOxlI49U.js").then((n) => n.n).then((m) => ({ default: m.WorkflowsList })));
85
- const WorkflowBuilder$2 = lazy(() => import("./WorkflowBuilder-DmYS5JEY.js").then((n) => n.n).then((m) => ({ default: m.WorkflowBuilder })));
85
+ const WorkflowBuilder$2 = lazy(() => import("./WorkflowBuilder-B8PtcT0Q.js").then((n) => n.n).then((m) => ({ default: m.WorkflowBuilder })));
86
86
  const ExecutionsListPage$1 = lazy(() => import("./ExecutionsListPage-DuuPSVEj.js").then((n) => n.n).then((m) => ({ default: m.ExecutionsListPage })));
87
87
  const ExecutionDetailPage$1 = lazy(() => import("./ExecutionDetailPage-B9eEep77.js").then((n) => n.n).then((m) => ({ default: m.ExecutionDetailPage })));
88
88
  const PageLoader = () => /* @__PURE__ */ jsx("div", {
@@ -5,7 +5,7 @@ import { $ as useNodeConfig, En as declaredSignals, J as nodeSubtitle, Ln as get
5
5
  import { a as TabButton, c as NDV_Z_INDEX, i as ReadOnlyFieldset, n as SchedulePanel, o as NodeSettingsPanel, r as NodeExecutionActions, s as NodeParamsForm, t as SCHEDULE_NODE_TYPE } from "./schedule-panel-Dizqz9eA.js";
6
6
  import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, r as getFluidGridsClientSafe } from "./client-C9XSzSXr.js";
7
7
  import { Dr as WorkflowCodeSourceDocument, Nr as WorkflowEditLeaseStatusDocument, Pt as NodeStatesDocument, _t as FileDownloadUrlDocument, p as BuildWorkflowCodeDocument } from "./graphql-operation-types-z2oXfQvM.js";
8
- import { h as TableView, m as JsonView } from "./flow-builder-BPe5YNF6.js";
8
+ import { h as TableView, m as JsonView } from "./flow-builder-DUkCKl-S.js";
9
9
  import { jt as useUnpinNodeDataMutation, qt as useWorkflowPinnedDataQuery, st as usePinNodeDataMutation } from "./useAgentDefinitions-Uy6nhpKN.js";
10
10
  import { f as usePhaseCFlags, s as useDurableFunctionNodesEnabled } from "./feature-flags-DM5myWaD.js";
11
11
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
package/dist/templates.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
2
  import { t as TemplatesPage } from "./TemplatesPage-C7f2xq12.js";
3
- import { t as TemplatePreview } from "./TemplatePreview-CBwvi0ga.js";
3
+ import { t as TemplatePreview } from "./TemplatePreview-BFMsDQif.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-DDgWgnwH.js";
3
- import { t as WorkflowBuilder$1 } from "./WorkflowBuilder-DmYS5JEY.js";
2
+ import { n as WorkflowBuilderCore, t as WorkflowBuilder } from "./WorkflowBuilder-D9W8hQTO.js";
3
+ import { t as WorkflowBuilder$1 } from "./WorkflowBuilder-B8PtcT0Q.js";
4
4
  import { H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
5
5
  import { m as refetchStoreNodes } from "./FluidGridsProvider-B1hgCbxG.js";
6
6
  import { t as WorkflowSearchRedirect } from "./WorkflowSearchRedirect-iPQBL6WO.js";
@@ -55,10 +55,10 @@ function createWorkflowPages(importers) {
55
55
  */
56
56
  const pages = createWorkflowPages({
57
57
  WorkflowsList: () => import("./WorkflowsList-rOxlI49U.js").then((n) => n.n),
58
- WorkflowBuilderPage: () => import("./WorkflowBuilder-DmYS5JEY.js").then((n) => n.n).then((m) => ({ WorkflowBuilderPage: m.WorkflowBuilder })),
58
+ WorkflowBuilderPage: () => import("./WorkflowBuilder-B8PtcT0Q.js").then((n) => n.n).then((m) => ({ WorkflowBuilderPage: m.WorkflowBuilder })),
59
59
  WorkflowSearchRedirect: () => import("./WorkflowSearchRedirect-iPQBL6WO.js").then((n) => n.n),
60
- TemplatePreview: () => import("./TemplatePreview-CBwvi0ga.js").then((n) => n.n),
61
- AiStudioPage: () => import("./AiStudioPage-BNmXx6LB.js").then((n) => n.n),
60
+ TemplatePreview: () => import("./TemplatePreview-BFMsDQif.js").then((n) => n.n),
61
+ AiStudioPage: () => import("./AiStudioPage-BSLdKT0H.js").then((n) => n.n),
62
62
  ExecutionsListPage: () => import("./ExecutionsListPage-DuuPSVEj.js").then((n) => n.n),
63
63
  ExecutionDetailPage: () => import("./ExecutionDetailPage-B9eEep77.js").then((n) => n.n),
64
64
  HistoryPage: () => import("./HistoryPage-C7NwkVNC.js").then((n) => n.n),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fluidgrids-fe-sdk",
3
- "version": "2026.1112.5",
3
+ "version": "2026.1112.6",
4
4
  "description": "FluidGrids Workflow Builder SDK - Embeddable visual workflow automation",
5
5
  "type": "module",
6
6
  "imports": {