@burdenoff/fluidgrids-fe-sdk 2026.1113.3 → 2026.1113.4

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 (50) hide show
  1. package/dist/{AiStudioPage-kQnqKTLK.js → AiStudioPage-DmgLQG62.js} +4 -4
  2. package/dist/{DataSinkDashboardPage-8ZDn85e2.js → DataSinkDashboardPage-iBalc66y.js} +1 -1
  3. package/dist/{ExecutionDetailPage-2zr-EHVq.js → ExecutionDetailPage-D1E_Rf3U.js} +5 -5
  4. package/dist/{ExecutionsListPage-ASTpHWjv.js → ExecutionsListPage-LsqVMwck.js} +4 -4
  5. package/dist/{FluidGridsProvider-Dc_Jhtch.js → FluidGridsProvider-BgP5c-hH.js} +33 -4
  6. package/dist/{HistoryPage-D2QBZ6Oc.js → HistoryPage-BTAkQ7O1.js} +1 -1
  7. package/dist/{InsightsPage-BqbRbyc4.js → InsightsPage-CVSoyuat.js} +1 -1
  8. package/dist/{PaidTemplateConfirm-CSf_Wl1x.js → PaidTemplateConfirm-DfFrr1pk.js} +1 -1
  9. package/dist/{QuotaExhaustedDialog-wvu_-WJ-.js → QuotaExhaustedDialog-BHZm4tQy.js} +1 -1
  10. package/dist/{SettingsPage-JwcsjXkM.js → SettingsPage-DPWog4BR.js} +3 -3
  11. package/dist/{TemplateCard-HSRLZw7S.js → TemplateCard-trfaDJLe.js} +2 -2
  12. package/dist/{TemplatePreview-xCpg2M_J.js → TemplatePreview-BuEMVZiI.js} +4 -4
  13. package/dist/{TemplatesPage-AAAJ2T7C.js → TemplatesPage-UISz_6vU.js} +6 -6
  14. package/dist/{WorkflowBuilder-DAeOmBhD.js → WorkflowBuilder-Cmj59UU-.js} +3 -3
  15. package/dist/{WorkflowBuilder-rndStRRC.js → WorkflowBuilder-nnSlI7Fd.js} +5 -5
  16. package/dist/{WorkflowSearchRedirect-CVFby4w5.js → WorkflowSearchRedirect-pEIU2nvw.js} +1 -1
  17. package/dist/{WorkflowsList-DuMF4-P0.js → WorkflowsList-B6ASopzn.js} +5 -5
  18. package/dist/{agentTools-DTXUqtfu.js → agentTools-7CFfwySg.js} +1 -1
  19. package/dist/{canvasNoteTools-DmfZwtnL.js → canvasNoteTools-BikeF-pN.js} +1 -1
  20. package/dist/executions.js +2 -2
  21. package/dist/{flow-builder-Cf3mxhiN.js → flow-builder-CksAvhgV.js} +41 -18
  22. package/dist/history.js +1 -1
  23. package/dist/{index-BC0bLtnH.d.ts → index-Df6NgmmH.d.ts} +1 -1
  24. package/dist/{index-CJGq3QbH.d.ts → index-RWAuYE2j.d.ts} +2 -0
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +27 -27
  27. package/dist/{node-detail-view-LaFhKUoA.js → node-detail-view-BgmxkGJe.js} +4 -4
  28. package/dist/{node-editor-tab-body-BL6QrLVL.js → node-editor-tab-body-2Y-lqY4_.js} +2 -2
  29. package/dist/observability.d.ts +1 -1
  30. package/dist/observability.js +2 -2
  31. package/dist/{popover-PFfxvM9g.js → popover-DL7fSPgH.js} +2 -2
  32. package/dist/{quick-config-panel-hrOn1WJp.js → quick-config-panel-nmIRDTFB.js} +3 -3
  33. package/dist/{schedule-panel-BBI5V5AX.js → schedule-panel-Bk5MJumG.js} +4 -4
  34. package/dist/settings.js +1 -1
  35. package/dist/{sidebar-node-editor-CZ2hHqwr.js → sidebar-node-editor-BnUjER8A.js} +3 -3
  36. package/dist/templates.js +2 -2
  37. package/dist/{useAgentDefinitions-B4EL7HU3.js → useAgentDefinitions-BmyWUoyo.js} +1 -1
  38. package/dist/{useDurableParity-CoX24dE8.js → useDurableParity-AowXKgBZ.js} +1 -1
  39. package/dist/{useExecutions-CB1Rva2V.js → useExecutions-BemEN_Zb.js} +1 -1
  40. package/dist/{useGlobalStoreClient-DMTrywdX.js → useGlobalStoreClient-BmjWfAjc.js} +1 -1
  41. package/dist/{useObservability-DPATdbw7.js → useObservability-BGrwZS5X.js} +1 -1
  42. package/dist/{useRunHistory-dFVv-1Tn.js → useRunHistory-GzyLco45.js} +1 -1
  43. package/dist/{useWorkflowCodeExport-Dej_LUk7.js → useWorkflowCodeExport-ej7y3Gi3.js} +1 -1
  44. package/dist/{useWorkflows-DEWdntS_.js → useWorkflows-DwDzP-AD.js} +1 -1
  45. package/dist/workflow-builder.d.ts +1 -1
  46. package/dist/workflow-builder.js +4 -4
  47. package/dist/workflow-pages.d.ts +2 -2
  48. package/dist/workflow-pages.js +13 -13
  49. package/dist/workflows-list.js +1 -1
  50. package/package.json +1 -1
@@ -1,15 +1,15 @@
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-Cf3mxhiN.js";
5
- import { T as buildOperationSeed, ht as classifyCreateRefusal, mt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-Dc_Jhtch.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-CksAvhgV.js";
5
+ import { T as buildOperationSeed, ht as classifyCreateRefusal, mt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-BgP5c-hH.js";
6
6
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
7
7
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
8
8
  import { a as notifyFluidGridsAiCreditsUpdated, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
9
- import { n as useCreateWorkflow } from "./useWorkflows-DEWdntS_.js";
9
+ import { n as useCreateWorkflow } from "./useWorkflows-DwDzP-AD.js";
10
10
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
11
11
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
12
- import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-Dej_LUk7.js";
12
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-ej7y3Gi3.js";
13
13
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
14
14
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
15
15
  import { useNavigate } from "react-router";
@@ -2,7 +2,7 @@
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
5
- import { n as useDataSinks, t as useDataSinkData } from "./useObservability-DPATdbw7.js";
5
+ import { n as useDataSinks, t as useDataSinkData } from "./useObservability-BGrwZS5X.js";
6
6
  import { c as prettyJson, r as formatTimestamp, t as formatBytes } from "./utils-C0dtnN4R.js";
7
7
  import { useEffect, useMemo, useState } from "react";
8
8
  import { Icon } from "@iconify/react";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { c as errorAdvice, d as NodeStatusBadge, i as useRunPending, l as needsReconnect, n as useDurableParityRunFields, o as ConfirmStopRunDialog, r as useRunMetadata, t as setRunVersioningOverride, u as ExecutionStatusBadge } from "./useDurableParity-CoX24dE8.js";
3
+ import { c as errorAdvice, d as NodeStatusBadge, i as useRunPending, l as needsReconnect, n as useDurableParityRunFields, o as ConfirmStopRunDialog, r as useRunMetadata, t as setRunVersioningOverride, u as ExecutionStatusBadge } from "./useDurableParity-AowXKgBZ.js";
4
4
  import { n as formatRunVersion, r as nodeDisplayTitle, t as buildNodeDisplayMap } from "./run-display-BycKYSU0.js";
5
5
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
6
6
  import { c as RunLogAppendedDocument, l as RunLogsDocument, s as isAgentNodeType } from "./agent-form-D0uLvzx4.js";
7
- import { C as describeRunStep, S as describeRunError, Xt as nodeStateDurationMs, Yt as formatElapsedMs, Zt as runDurationMs, dn as canSignalRun, gn as runSignalTargets, pn as durableInterfaceOf } from "./FluidGridsProvider-Dc_Jhtch.js";
7
+ import { C as describeRunStep, S as describeRunError, Xt as nodeStateDurationMs, Yt as formatElapsedMs, Zt as runDurationMs, dn as canSignalRun, gn as runSignalTargets, pn as durableInterfaceOf } from "./FluidGridsProvider-BgP5c-hH.js";
8
8
  import { n as useFgAskable, r as useFgAskableSelection } from "./askAboutBridge-BV8m95kk.js";
9
9
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
10
10
  import { t as TechnicalDetails } from "./TechnicalDetails-D4xGy201.js";
11
- import { _ as shortRunId, g as runChainLinks, h as parseMetadataDefinition, m as overrideRequestOf, n as useExecution, p as callbackTone, r as useExecutionActions, s as buildRetryTriggerInput, t as useAutoRefresh } from "./useExecutions-CB1Rva2V.js";
11
+ import { _ as shortRunId, g as runChainLinks, h as parseMetadataDefinition, m as overrideRequestOf, n as useExecution, p as callbackTone, r as useExecutionActions, s as buildRetryTriggerInput, t as useAutoRefresh } from "./useExecutions-BemEN_Zb.js";
12
12
  import { t as RunActionsMenu } from "./RunActionsMenu-BE_1r3bF.js";
13
13
  import { n as getFluidGridsClient, r as getFluidGridsClientSafe } from "./client-Ctl4jmY3.js";
14
14
  import { o as throwIfResultError, t as describeOperationError } from "./errors-xPZ-IbQd.js";
@@ -22,14 +22,14 @@ import { _ as agentLiveReplyState, a as canSaveRunAsTestCase, g as useAgentToken
22
22
  import { t as WorkflowProposalCard } from "./WorkflowProposalCard-zCdUpCk8.js";
23
23
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
24
24
  import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-CM-vmvbA.js";
25
- import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-dFVv-1Tn.js";
25
+ import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-GzyLco45.js";
26
26
  import { $P as VersioningBehavior, L as AgentStepKind, LI as WorkflowUpdateWaitFor, jd as ErrorType, yI as WorkflowQueryRejectCondition } from "./graphql-types-C5Tr6508.js";
27
27
  import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-D7SjIkUZ.js";
28
28
  import { _ as useWorkflowTestsEnabled, l as useDurableFunctionNodesEnabled, m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
29
29
  import { A as revokeSignalToken, B as updateActivityOptions, D as resetActivities, E as queryRun, N as sendRunUpdate, O as resetRun, R as unpauseActivities, S as fetchSignalTokens, V as upsertRunSearchAttributes, _ as fetchPauseRules, b as fetchRunUpdate, d as failActivityById, g as fetchCodecServerSettings, i as completeActivityById, k as resetRunToLastCleanTask, s as createSignalToken, v as fetchRunControlFields, w as pauseActivities, y as fetchRunHistoryArchive } from "./api-BqA-f-AD.js";
30
30
  import { a as fetchTaskQueueStats } from "./api-BZVyX5d2.js";
31
31
  import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, l as parseJsonObjectInput, n as JsonBlock, o as StatusPill, r as JsonField, s as newRunControlId, t as FieldError, u as useResource } from "./shared-Ctl9ZHo1.js";
32
- import { v as useWorkflowVersions } from "./useWorkflows-DEWdntS_.js";
32
+ import { v as useWorkflowVersions } from "./useWorkflows-DwDzP-AD.js";
33
33
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
34
34
  import { Link, useNavigate, useParams, useSearchParams } from "react-router";
35
35
  import { Icon } from "@iconify/react";
@@ -1,22 +1,22 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { g as useExecutionsStore, h as DEFAULT_EXECUTIONS_FILTER } from "./config-X97zrIvn.js";
4
- import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-CB1Rva2V.js";
4
+ import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-BemEN_Zb.js";
5
5
  import { m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
7
7
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
8
8
  import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
9
9
  import { t as TagFilterSelect } from "./TagFilterSelect-CAShgvbS.js";
10
10
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
11
- import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-CoX24dE8.js";
11
+ import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-AowXKgBZ.js";
12
12
  import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
13
13
  import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
14
- import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-Dc_Jhtch.js";
14
+ import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-BgP5c-hH.js";
15
15
  import { r as useRunHumanRequests } from "./useHumanRequests-DwG2tQ3f.js";
16
16
  import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-DZ8Q5l35.js";
17
17
  import { t as TechnicalDetails } from "./TechnicalDetails-D4xGy201.js";
18
18
  import { t as RunActionsMenu } from "./RunActionsMenu-BE_1r3bF.js";
19
- import { h as useWorkflowDefinitions } from "./useWorkflows-DEWdntS_.js";
19
+ import { h as useWorkflowDefinitions } from "./useWorkflows-DwDzP-AD.js";
20
20
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
21
21
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
22
22
  import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-BqA-f-AD.js";
@@ -4681,6 +4681,8 @@ var RunNodeDetailsLoader = class {
4681
4681
  this.attempts.set(id, attempts);
4682
4682
  return attempts < MAX_DETAIL_ATTEMPTS;
4683
4683
  });
4684
+ const givenUp = ids.filter((id) => !retry.includes(id));
4685
+ if (givenUp.length > 0) this.options.onGiveUp?.(runId, givenUp);
4684
4686
  if (retry.length === 0) return;
4685
4687
  (this.options.schedule ?? ((callback, ms) => {
4686
4688
  setTimeout(callback, ms);
@@ -4763,6 +4765,12 @@ function useNodeExecution() {
4763
4765
  /** Node id → the node state whose status and details the builder shows. */
4764
4766
  const shownNodeStatesRef = useRef(/* @__PURE__ */ new Map());
4765
4767
  /**
4768
+ * Log line id → `<node state id>:<status>` of the details last put on it
4769
+ * (BOFF-9938), so a status change the details already answered for does
4770
+ * not mark the line loading again (the loader would not read it twice).
4771
+ */
4772
+ const appliedDetailsRef = useRef(/* @__PURE__ */ new Map());
4773
+ /**
4766
4774
  * Puts a details read's inputs and outputs on the run's log lines. Item
4767
4775
  * counts on the canvas come from a completed node's output.
4768
4776
  */
@@ -4775,14 +4783,30 @@ function useNodeExecution() {
4775
4783
  const logId = `${runId}-${detail.nodeId}`;
4776
4784
  const log = logsById.get(logId);
4777
4785
  if (!log) continue;
4786
+ appliedDetailsRef.current.set(logId, `${detail.id}:${toRunLogStatus(detail.status)}`);
4778
4787
  actions.execution.updateLog(logId, {
4779
4788
  inputArgs: detail.inputArgs ?? log.inputArgs,
4780
4789
  output: detail.output ?? log.output,
4781
- error: detail.error ?? log.error
4790
+ error: detail.error ?? log.error,
4791
+ ...toRunLogStatus(detail.status) === log.status ? { outputState: "loaded" } : {}
4782
4792
  });
4783
4793
  if (toRunLogStatus(detail.status) === "completed" && detail.output) actions.execution.setNodeItemCount(detail.nodeId, calculateItemCount(detail.output));
4784
4794
  }
4785
4795
  }, []);
4796
+ /**
4797
+ * Marks the log lines of node states whose details could not be read, so
4798
+ * nothing waits for them any longer (BOFF-9938).
4799
+ */
4800
+ const markNodeDetailsUnavailable = useCallback((runId, ids) => {
4801
+ const { execution, actions } = useFlowStore.getState();
4802
+ if (execution.currentRunId !== runId) return;
4803
+ const givenUp = new Set(ids);
4804
+ for (const [nodeId, nodeStateId] of shownNodeStatesRef.current) {
4805
+ if (!givenUp.has(nodeStateId)) continue;
4806
+ const logId = `${runId}-${nodeId}`;
4807
+ if (execution.logs.find((entry) => entry.id === logId)?.outputState === "loading") actions.execution.updateLog(logId, { outputState: "unavailable" });
4808
+ }
4809
+ }, []);
4786
4810
  const detailsLoaderRef = useRef(null);
4787
4811
  const detailsLoader = useCallback(() => {
4788
4812
  detailsLoaderRef.current ??= new RunNodeDetailsLoader({
@@ -4800,10 +4824,11 @@ function useNodeExecution() {
4800
4824
  apply: applyNodeDetails,
4801
4825
  onError: (error) => {
4802
4826
  console.error("[useNodeExecution] Node details read failed:", error);
4803
- }
4827
+ },
4828
+ onGiveUp: markNodeDetailsUnavailable
4804
4829
  });
4805
4830
  return detailsLoaderRef.current;
4806
- }, [applyNodeDetails]);
4831
+ }, [applyNodeDetails, markNodeDetailsUnavailable]);
4807
4832
  /**
4808
4833
  * Stop any active polling
4809
4834
  */
@@ -4844,6 +4869,7 @@ function useNodeExecution() {
4844
4869
  * the node states that changed.
4845
4870
  */
4846
4871
  const processNodeStates = useCallback((runId, nodeStates) => {
4872
+ const outputStateFor = (logId, nodeStateId, status) => appliedDetailsRef.current.get(logId) === `${nodeStateId}:${status}` ? "loaded" : "loading";
4847
4873
  const latest = latestNodeStates(nodeStates);
4848
4874
  shownNodeStatesRef.current = new Map(latest.map((nodeState) => [nodeState.nodeId, nodeState.id]));
4849
4875
  const { execution } = useFlowStore.getState();
@@ -4870,11 +4896,13 @@ function useNodeExecution() {
4870
4896
  startTime: nodeState.startTime ?? (/* @__PURE__ */ new Date()).toISOString(),
4871
4897
  endTime: nodeState.endTime ?? null,
4872
4898
  usedPinnedData: nodeState.usedPinnedData ?? false,
4873
- reusedFromRunId: nodeState.reusedFromRunId ?? null
4899
+ reusedFromRunId: nodeState.reusedFromRunId ?? null,
4900
+ outputState: outputStateFor(logId, nodeState.id, status)
4874
4901
  };
4875
4902
  addLog(newLog);
4876
4903
  } else if (existingLog.status !== status) updateLog(logId, {
4877
4904
  status,
4905
+ outputState: outputStateFor(logId, nodeState.id, status),
4878
4906
  error: nodeState.error ?? existingLog.error,
4879
4907
  duration: nodeState.duration ?? existingLog.duration,
4880
4908
  endTime: nodeState.endTime ?? existingLog.endTime,
@@ -4901,6 +4929,7 @@ function useNodeExecution() {
4901
4929
  pollStartRef.current = Date.now();
4902
4930
  activeRunIdRef.current = runId;
4903
4931
  shownNodeStatesRef.current = /* @__PURE__ */ new Map();
4932
+ if (detailsLoader().followedRunId !== runId) appliedDetailsRef.current.clear();
4904
4933
  detailsLoader().follow(runId);
4905
4934
  let poll = 0;
4906
4935
  const scheduleNext = (startedAt) => {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-DEWdntS_.js";
3
+ import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-DwDzP-AD.js";
4
4
  import { t as VersionDiffDialog } from "./VersionDiffDialog-D9W5Fm56.js";
5
5
  import { c as versionsOfWorkflow } from "./VersionLifecycleBar-DuphLOT0.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
@@ -3,7 +3,7 @@ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
5
5
  import { t as TechnicalDetails } from "./TechnicalDetails-D4xGy201.js";
6
- import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-DPATdbw7.js";
6
+ import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-BGrwZS5X.js";
7
7
  import { a as getTopFailingNodes, i as getFailureBreakdown, l as rankedFailingWorkflows, n as formatDuration, o as getTopFailingWorkflows, s as percentage, u as summarySuccessRate } from "./utils-C0dtnN4R.js";
8
8
  import { n as FailureTriagePanel } from "./FailureTriagePanel-CM-vmvbA.js";
9
9
  import { c as useContinuousOptimisationEnabled } from "./feature-flags-B_b8PJ6Z.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-HSRLZw7S.js";
3
+ import { n as formatTemplatePrice } from "./TemplateCard-trfaDJLe.js";
4
4
  import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
- import { in as useFluidGridsAnalytics } from "./FluidGridsProvider-Dc_Jhtch.js";
3
+ import { in as useFluidGridsAnalytics } from "./FluidGridsProvider-BgP5c-hH.js";
4
4
  import { c as emitWorkflowLimitHit, o as emitUpgradeClicked } from "./fluidgridsEvents-Dm5CaHtr.js";
5
5
  import { i as WORKFLOWS_QUOTA_NAME } from "./quota-Cdt8yz7N.js";
6
6
  import { useEffect, useRef } from "react";
@@ -12,10 +12,10 @@ import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRul
12
12
  import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-Ctl9ZHo1.js";
13
13
  import { OI as WorkflowSearchAttributeType } from "./graphql-types-C5Tr6508.js";
14
14
  import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
15
- import { Ut as findSaveConflict, yt as useSaveStatusStore } from "./FluidGridsProvider-Dc_Jhtch.js";
16
- import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-DPATdbw7.js";
15
+ import { Ut as findSaveConflict, yt as useSaveStatusStore } from "./FluidGridsProvider-BgP5c-hH.js";
16
+ import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-BGrwZS5X.js";
17
17
  import { n as useConnections } from "./useConnections-BlB0gbOB.js";
18
- import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-B4EL7HU3.js";
18
+ import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-BmyWUoyo.js";
19
19
  import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-D0uLvzx4.js";
20
20
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
21
21
  import { n as getGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
@@ -3,7 +3,7 @@ import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
3
3
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
4
4
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
5
5
  import { n as getGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
6
- import { c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, in as useFluidGridsAnalytics, o as NODE_CONFIGS, t as FluidGridsContext, y as GetMyNodeInstallationsDocument } from "./FluidGridsProvider-Dc_Jhtch.js";
6
+ import { c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, in as useFluidGridsAnalytics, o as NODE_CONFIGS, t as FluidGridsContext, y as GetMyNodeInstallationsDocument } from "./FluidGridsProvider-BgP5c-hH.js";
7
7
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
8
8
  import { o as isNodeTypeHiddenFromPalette } from "./durable-nodes-DXCCQYWD.js";
9
9
  import { h as usePhaseDFlags } from "./feature-flags-B_b8PJ6Z.js";
@@ -13,7 +13,7 @@ import { n as InstallWorkflowNodeDocument } from "./global-operations-7pvXw_j9.j
13
13
  import { t as cn } from "./cn-QqidFIgr.js";
14
14
  import { t as Button } from "./button-DG7y_FVJ.js";
15
15
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
16
- import { t as useGlobalStoreClient } from "./useGlobalStoreClient-DMTrywdX.js";
16
+ import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BmjWfAjc.js";
17
17
  import { r as templateInstallSource } from "./template-code-CobAYaeH.js";
18
18
  import { t as Badge } from "./badge-CXfPhoMH.js";
19
19
  import { t as templatePreview } from "./template-preview-C01KV277.js";
@@ -1,9 +1,9 @@
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-Cf3mxhiN.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-HSRLZw7S.js";
6
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-wvu_-WJ-.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-CksAvhgV.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-trfaDJLe.js";
6
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-BHZm4tQy.js";
7
7
  import { n as WithOpenTemplateAsCode } from "./OpenTemplateAsCodeButton-BdcTxemq.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
9
  import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
@@ -12,7 +12,7 @@ import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
12
12
  import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
13
13
  import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
14
14
  import { c as useVariables, t as useCreateVariable } from "./useVariables-DFdZofLQ.js";
15
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-CSf_Wl1x.js";
15
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-DfFrr1pk.js";
16
16
  import { useEffect, useMemo, useState } from "react";
17
17
  import { useLocation, useNavigate, useParams } from "react-router";
18
18
  import { Icon } from "@iconify/react";
@@ -1,23 +1,23 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-DEWdntS_.js";
4
- import { i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard } from "./TemplateCard-HSRLZw7S.js";
3
+ import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-DwDzP-AD.js";
4
+ import { i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard } from "./TemplateCard-trfaDJLe.js";
5
5
  import { jI as WorkflowStatus } from "./graphql-types-C5Tr6508.js";
6
6
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
7
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-wvu_-WJ-.js";
7
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-BHZm4tQy.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { in as useFluidGridsAnalytics, t as FluidGridsContext } from "./FluidGridsProvider-Dc_Jhtch.js";
9
+ import { in as useFluidGridsAnalytics, t as FluidGridsContext } from "./FluidGridsProvider-BgP5c-hH.js";
10
10
  import { a as emitTemplateUsed } from "./fluidgridsEvents-Dm5CaHtr.js";
11
11
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
12
12
  import { r as templatesControls } from "./pageControlSpecs-DZJ9K37m.js";
13
13
  import { c as isQuotaExhaustedFailure, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
14
14
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
15
- import { t as useGlobalStoreClient } from "./useGlobalStoreClient-DMTrywdX.js";
15
+ import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BmjWfAjc.js";
16
16
  import { o as throwIfResultError, t as describeOperationError } from "./errors-xPZ-IbQd.js";
17
17
  import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
18
18
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
19
19
  import { t as TechnicalDetails } from "./TechnicalDetails-D4xGy201.js";
20
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-CSf_Wl1x.js";
20
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-DfFrr1pk.js";
21
21
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
22
22
  import { t as cn } from "./cn-QqidFIgr.js";
23
23
  import { useCallback, useContext, useEffect, useMemo, useState } from "react";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { n as FluidGridsProvider, on as useCanvasEdges } from "./FluidGridsProvider-Dc_Jhtch.js";
2
+ import { n as FluidGridsProvider, on as useCanvasEdges } from "./FluidGridsProvider-BgP5c-hH.js";
3
3
  import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.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 { v as Card } from "./TemplateCard-HSRLZw7S.js";
6
+ import { v as Card } from "./TemplateCard-trfaDJLe.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-Cf3mxhiN.js";
9
+ import { m as FluidGridsMark, p as useNodeSelectedEvent } from "./flow-builder-CksAvhgV.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";
@@ -1,21 +1,21 @@
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-Cf3mxhiN.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-CksAvhgV.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";
7
7
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
8
8
  import { t as WorkflowDefinitionDocument } from "./WorkflowDefinitionDocument-DZLbTPUZ.js";
9
9
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
10
- import { E as createConfiguredNode, Ht as codeBuildIdOf, L as paramsFromOperation, Lt as rememberRevision, g as registerWorkflowNodeTypes, h as registerNodeManifests, ht as classifyCreateRefusal, m as refetchStoreNodes, nn as resolveNodeOperation, o as NODE_CONFIGS, pt as blankWorkflowCreateInput, qt as workflowFingerprint, u as ensureNodeTypesLoaded, yt as useSaveStatusStore } from "./FluidGridsProvider-Dc_Jhtch.js";
10
+ import { E as createConfiguredNode, Ht as codeBuildIdOf, L as paramsFromOperation, Lt as rememberRevision, g as registerWorkflowNodeTypes, h as registerNodeManifests, ht as classifyCreateRefusal, m as refetchStoreNodes, nn as resolveNodeOperation, o as NODE_CONFIGS, pt as blankWorkflowCreateInput, qt as workflowFingerprint, u as ensureNodeTypesLoaded, yt as useSaveStatusStore } from "./FluidGridsProvider-BgP5c-hH.js";
11
11
  import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
12
12
  import { t as canvasFromDefinition } from "./definition-canvas-DL25_6NH.js";
13
- import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-DEWdntS_.js";
14
- import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-HSRLZw7S.js";
13
+ import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-DwDzP-AD.js";
14
+ import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-trfaDJLe.js";
15
15
  import { r as mergeStickyNotes } from "./sticky-notes-23j-wL6Q.js";
16
16
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
17
17
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
18
- import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-Dej_LUk7.js";
18
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-ej7y3Gi3.js";
19
19
  import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
20
20
  import { useLocation, useNavigate, useParams } from "react-router";
21
21
  import { Icon } from "@iconify/react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { m as useWorkflowDefinition } from "./useWorkflows-DEWdntS_.js";
3
+ import { m as useWorkflowDefinition } from "./useWorkflows-DwDzP-AD.js";
4
4
  import { Navigate, useParams } from "react-router";
5
5
  import { Icon } from "@iconify/react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-DEWdntS_.js";
4
- import { gt as createThenOpen, t as FluidGridsContext } from "./FluidGridsProvider-Dc_Jhtch.js";
5
- import { a as saveWorkflowDescription, c as CreateWorkflowRefusalDialog, o as visibleWorkflowDescription, r as commitWorkflowDescription, s as workflowDescriptionCharactersLeft, t as useExportWorkflowAs } from "./useWorkflowCodeExport-Dej_LUk7.js";
3
+ import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-DwDzP-AD.js";
4
+ import { gt as createThenOpen, t as FluidGridsContext } from "./FluidGridsProvider-BgP5c-hH.js";
5
+ import { a as saveWorkflowDescription, c as CreateWorkflowRefusalDialog, o as visibleWorkflowDescription, r as commitWorkflowDescription, s as workflowDescriptionCharactersLeft, t as useExportWorkflowAs } from "./useWorkflowCodeExport-ej7y3Gi3.js";
6
6
  import { c as isQuotaExhaustedFailure, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
7
7
  import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
8
8
  import { a as SdkPermissionGate, i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
9
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-wvu_-WJ-.js";
9
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-BHZm4tQy.js";
10
10
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
11
11
  import { a as isExecutionMode, i as isAutonomyLevel, n as EXECUTION_MODES, o as useAutonomyLevelCopy, r as EXECUTION_MODE_ICONS, s as useExecutionModeCopy } from "./run-mode-BMxym0mD.js";
12
12
  import { YF as WorkflowAccessFilter, aI as WorkflowExportFormat } from "./graphql-types-C5Tr6508.js";
@@ -17,7 +17,7 @@ import { d as useFluidGridsFlag, t as FLUIDGRIDS_FLAGS } from "./feature-flags-B
17
17
  import { n as downloadWorkflowExport, r as parseWorkflowImport } from "./workflow-transfer-CQnQC-ke.js";
18
18
  import { a as useWorkflowProjects, i as useWorkflowProjectActions, n as useWorkflowFolderActions, r as useWorkflowFolders, t as useBulkWorkflowActions } from "./useWorkflowOrganization-r5FWNBs6.js";
19
19
  import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
20
- import { a as useExecutions } from "./useExecutions-CB1Rva2V.js";
20
+ import { a as useExecutions } from "./useExecutions-BemEN_Zb.js";
21
21
  import { a as firstWorkflowProgress, i as builderPathFor, r as GUIDED_TOUR_STATE } from "./firstWorkflow-C_h0KMB2.js";
22
22
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
23
23
  import { i as workflowsListControls } from "./pageControlSpecs-DZJ9K37m.js";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { E as createConfiguredNode, F as nodeTitle, L as paramsFromOperation, N as fixedParameterState, R as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, nt as autosaveAllowedFor, o as NODE_CONFIGS, ut as isFlowComplete, w as SENSITIVE_PARAM, yt as useSaveStatusStore } from "./FluidGridsProvider-Dc_Jhtch.js";
2
+ import { E as createConfiguredNode, F as nodeTitle, L as paramsFromOperation, N as fixedParameterState, R as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, nt as autosaveAllowedFor, o as NODE_CONFIGS, ut as isFlowComplete, w as SENSITIVE_PARAM, yt as useSaveStatusStore } from "./FluidGridsProvider-BgP5c-hH.js";
3
3
  import { M as useFlowStore, T as resolveOutputHandles, w as resolveInputHandles } from "./node-operation-selection-Czeeb2D4.js";
4
4
  import { o as isNodeTypeHiddenFromPalette } from "./durable-nodes-DXCCQYWD.js";
5
5
  import { t as computeAttachPosition } from "./attach-node-helpers-CNsYtLOR.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { n as useAgentMarksStore, r as toPlainText } from "./marksStore-DGCXjTmZ.js";
3
- import { F as nodeTitle, L as paramsFromOperation, R as selectedOperationOf } from "./FluidGridsProvider-Dc_Jhtch.js";
3
+ import { F as nodeTitle, L as paramsFromOperation, R as selectedOperationOf } from "./FluidGridsProvider-BgP5c-hH.js";
4
4
  import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
5
5
  import { t as notesKeyOf } from "./notesKey-5EaREBGA.js";
6
6
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as ExecutionsListPage } from "./ExecutionsListPage-ASTpHWjv.js";
3
- import { t as ExecutionDetailPage } from "./ExecutionDetailPage-2zr-EHVq.js";
2
+ import { t as ExecutionsListPage } from "./ExecutionsListPage-LsqVMwck.js";
3
+ import { t as ExecutionDetailPage } from "./ExecutionDetailPage-D1E_Rf3U.js";
4
4
 
5
5
  export { ExecutionDetailPage, ExecutionsListPage };
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { A as NodeTypeIcon, F as isTriggerOperation, M as useFlowStore, N as useIsValidConnection, j as isImageIcon, r as CODE_WORKFLOW_NODE_TYPE } from "./node-operation-selection-Czeeb2D4.js";
3
- import { A as workflowParameterIssues, At as shouldReleaseForIdle, Bt as AUTOSAVE_RETRY_DELAYS_MS, Ct as bannerOf, D as useInsertNode, Dt as phaseAfterAcquire, Et as leaseCallSequence, Ft as sessionBeforeReload, Gt as resettledBaseline, In as getNodeDetail, It as rememberOwnStatusChange, Jt as useNodeExecution, Kt as saveFailureActionOf, Ln as buildStickyNode, Lt as rememberRevision, Mt as EDIT_SESSION_ID, Nt as forgetSessionForReload, O as MissingParametersDialog, Ot as phaseAfterTakeOver, Pt as rememberSessionForReload, Rn as loadMarkdown, Rt as revisionOf, St as useEditLeaseStore, T as buildOperationSeed, Tt as leaseCallQueue, Vt as canAutosave, Wt as inAppLeaveTarget, _t as refusalOfQuota, a as NODES_METADATA, at as editingLeaseLocked, bt as workflowSaveQueue, ct as touchesSavedFields, dt as useFlowValidator, et as useGuardedNavigate, f as isNodeConfigsInitialized, ft as useSaveWorkflow, g as registerWorkflowNodeTypes, i as AVAILABLE_NODES, it as editStateFor, jt as tickAction, k as useRunGuard, kt as releasesOnClose, l as ensureNodeConfigsLoaded, ln as loadDefinitionJson, lt as watchLeavingLosesChanges, m as refetchStoreNodes, nt as autosaveAllowedFor, o as NODE_CONFIGS, on as useCanvasEdges, ot as leavingLosesChanges, p as onNodeTypesUpdate, qt as workflowFingerprint, rt as departingSave, s as NODE_TYPES, sn as useNodeRegistryRevision, st as savedEverythingBeforeLeaving, t as FluidGridsContext, tt as useManualSave, ut as isFlowComplete, v as scheduleNodePaletteLoad, vt as saveIndicatorOf, wt as isLocked, x as getNodeMetadata, xt as useEditLeaseLocked, yt as useSaveStatusStore, zn as useMarkdownRenderer, zt as AUTOSAVE_DEBOUNCE_MS } from "./FluidGridsProvider-Dc_Jhtch.js";
3
+ import { A as workflowParameterIssues, At as shouldReleaseForIdle, Bt as AUTOSAVE_RETRY_DELAYS_MS, Ct as bannerOf, D as useInsertNode, Dt as phaseAfterAcquire, Et as leaseCallSequence, Ft as sessionBeforeReload, Gt as resettledBaseline, In as getNodeDetail, It as rememberOwnStatusChange, Jt as useNodeExecution, Kt as saveFailureActionOf, Ln as buildStickyNode, Lt as rememberRevision, Mt as EDIT_SESSION_ID, Nt as forgetSessionForReload, O as MissingParametersDialog, Ot as phaseAfterTakeOver, Pt as rememberSessionForReload, Rn as loadMarkdown, Rt as revisionOf, St as useEditLeaseStore, T as buildOperationSeed, Tt as leaseCallQueue, Vt as canAutosave, Wt as inAppLeaveTarget, _t as refusalOfQuota, a as NODES_METADATA, at as editingLeaseLocked, bt as workflowSaveQueue, ct as touchesSavedFields, dt as useFlowValidator, et as useGuardedNavigate, f as isNodeConfigsInitialized, ft as useSaveWorkflow, g as registerWorkflowNodeTypes, i as AVAILABLE_NODES, it as editStateFor, jt as tickAction, k as useRunGuard, kt as releasesOnClose, l as ensureNodeConfigsLoaded, ln as loadDefinitionJson, lt as watchLeavingLosesChanges, m as refetchStoreNodes, nt as autosaveAllowedFor, o as NODE_CONFIGS, on as useCanvasEdges, ot as leavingLosesChanges, p as onNodeTypesUpdate, qt as workflowFingerprint, rt as departingSave, s as NODE_TYPES, sn as useNodeRegistryRevision, st as savedEverythingBeforeLeaving, t as FluidGridsContext, tt as useManualSave, ut as isFlowComplete, v as scheduleNodePaletteLoad, vt as saveIndicatorOf, wt as isLocked, x as getNodeMetadata, xt as useEditLeaseLocked, yt as useSaveStatusStore, zn as useMarkdownRenderer, zt as AUTOSAVE_DEBOUNCE_MS } from "./FluidGridsProvider-BgP5c-hH.js";
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 { t as useGlobalStoreClient } from "./useGlobalStoreClient-DMTrywdX.js";
7
+ import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BmjWfAjc.js";
8
8
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
9
- import { _ as useInstalledNodes, d as getStoreNodeAvailability, f as getStoreNodeIcon, g as storeNodeInstallVersion, h as storeNodeDisplayVersion, i as useTemplateImportFlow, l as useWorkflowTemplates, m as isStoreNodeUpdateAvailable, p as getStoreNodeType, t as TemplateCard, u as filterStoreNodesForPalette } from "./TemplateCard-HSRLZw7S.js";
9
+ import { _ as useInstalledNodes, d as getStoreNodeAvailability, f as getStoreNodeIcon, g as storeNodeInstallVersion, h as storeNodeDisplayVersion, i as useTemplateImportFlow, l as useWorkflowTemplates, m as isStoreNodeUpdateAvailable, p as getStoreNodeType, t as TemplateCard, u as filterStoreNodesForPalette } from "./TemplateCard-trfaDJLe.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";
11
11
  import { i as filterPaletteNodes } from "./durable-nodes-DXCCQYWD.js";
12
12
  import { c as NODE_TYPE_DRAG_DATA_FORMAT, l as STICKY_NOTE_TYPE, s as NODE_OPERATION_DRAG_DATA_FORMAT } from "./sticky-notes-23j-wL6Q.js";
@@ -25,16 +25,16 @@ import { n as useBuilderReadOnly, t as BuilderReadOnlyProvider } from "./read-on
25
25
  import { r as MAPPING_TYPE_COLORS, t as MAPPING_COMPATIBILITY_COLORS } from "./mapping-colors-BIX_YeCQ.js";
26
26
  import { n as LogsPanel } from "./logs-panel-DtG93ocy.js";
27
27
  import { c as emptyTestCaseDraft, d as nextSortOrder, f as pinnedOutputsFromCanvas, g as useAgentTokenStream, h as testStatusTone, i as TEST_STATUS_TONE_CLASS, l as enabledCaseIds, m as testStatusLabel, o as draftFromTestCase, p as testRunSummaryText, r as useWorkflowTests, s as draftToInput, t as useWorkflowProposal, u as isTestRunOpen, y as latestAgentTokenStream } from "./useWorkflowProposal-UtJYycLv.js";
28
- import { r as useExecutionActions } from "./useExecutions-CB1Rva2V.js";
28
+ import { r as useExecutionActions } from "./useExecutions-BemEN_Zb.js";
29
29
  import { n as useAgentMarksStore } from "./marksStore-DGCXjTmZ.js";
30
30
  import { t as notesKeyOf } from "./notesKey-5EaREBGA.js";
31
- import { a as saveWorkflowDescription, c as CreateWorkflowRefusalDialog, i as normalizeWorkflowDescription, n as useWorkflowCodeExport, o as visibleWorkflowDescription, r as commitWorkflowDescription, s as workflowDescriptionCharactersLeft } from "./useWorkflowCodeExport-Dej_LUk7.js";
31
+ import { a as saveWorkflowDescription, c as CreateWorkflowRefusalDialog, i as normalizeWorkflowDescription, n as useWorkflowCodeExport, o as visibleWorkflowDescription, r as commitWorkflowDescription, s as workflowDescriptionCharactersLeft } from "./useWorkflowCodeExport-ej7y3Gi3.js";
32
32
  import { r as RUNS_QUOTA_NAME, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
33
33
  import { t as EntityTagPicker } from "./EntityTagPicker-BppBSEJk.js";
34
34
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
35
35
  import { n as runsQuotaLevel, t as readRunsQuota } from "./runsQuota-DvXR6mRN.js";
36
36
  import { a as SdkPermissionGate, i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
37
- import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-DEWdntS_.js";
37
+ import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-DwDzP-AD.js";
38
38
  import { t as WorkflowDefinitionDocument } from "./WorkflowDefinitionDocument-DZLbTPUZ.js";
39
39
  import { o as countLifecycle, t as VersionLifecycleBar } from "./VersionLifecycleBar-DuphLOT0.js";
40
40
  import { $P as VersioningBehavior, Eu as DrainageStatus, PI as WorkflowTestExpectedStatus, aI as WorkflowExportFormat, jo as CodeReplaceStatus, rI as WorkflowEnvironment } from "./graphql-types-C5Tr6508.js";
@@ -6683,9 +6683,9 @@ function IntroductionPropertyPanel() {
6683
6683
  * waiting for its chunk and React's Suspense throttle (about 0.5 s on first
6684
6684
  * open even with the chunk cached).
6685
6685
  */
6686
- const NodeDetailViewOverlay = preloadableLazy(() => import("./node-detail-view-LaFhKUoA.js").then((m) => m.NodeDetailView), "NodeDetailView");
6687
- const QuickConfigPanelOverlay = preloadableLazy(() => import("./quick-config-panel-hrOn1WJp.js").then((m) => m.QuickConfigPanel), "QuickConfigPanel");
6688
- const SidebarNodeEditorOverlay = preloadableLazy(() => import("./sidebar-node-editor-CZ2hHqwr.js").then((m) => m.SidebarNodeEditor), "SidebarNodeEditor");
6686
+ const NodeDetailViewOverlay = preloadableLazy(() => import("./node-detail-view-BgmxkGJe.js").then((m) => m.NodeDetailView), "NodeDetailView");
6687
+ const QuickConfigPanelOverlay = preloadableLazy(() => import("./quick-config-panel-nmIRDTFB.js").then((m) => m.QuickConfigPanel), "QuickConfigPanel");
6688
+ const SidebarNodeEditorOverlay = preloadableLazy(() => import("./sidebar-node-editor-BnUjER8A.js").then((m) => m.SidebarNodeEditor), "SidebarNodeEditor");
6689
6689
  const WorkflowShareDialogOverlay = preloadableLazy(() => import("./WorkflowShareDialog-BcfzZDOj.js").then((n) => n.n).then((m) => m.WorkflowShareDialog), "WorkflowShareDialog");
6690
6690
  const ConnectionFormDialogOverlay = preloadableLazy(() => import("./ConnectionFormDialog-Dr1-CTan.js").then((n) => n.n).then((m) => m.ConnectionFormDialog), "ConnectionFormDialog");
6691
6691
  const EdgeMapperOverlay = preloadableLazy(() => import("./app-BJUvugPM.js").then((m) => m.default), "EdgeMapper");
@@ -11783,6 +11783,10 @@ function usePanelResize(initialHeight) {
11783
11783
 
11784
11784
  // src/builder/components/flow-builder/components/chat-panel/chat-reply.ts
11785
11785
  const AI_AGENT_NODE_TYPE = "store/ai-agent";
11786
+ /** The node's output is still being read (absent state: loaded). */
11787
+ function outputLoading(log) {
11788
+ return !log.output && log.outputState === "loading";
11789
+ }
11786
11790
  /** The streamed text to show, marking a reply whose start never arrived. */
11787
11791
  function streamedText(stream) {
11788
11792
  if (!stream?.text) return "";
@@ -11828,11 +11832,29 @@ function resolveChatReply({ runLogs, isExecutionRunning, liveText, texts }) {
11828
11832
  if (runLogs.length === 0) return null;
11829
11833
  const agentLog = runLogs.find((log) => log.nodeType === "store/ai-agent" && (log.status === "completed" || log.status === "failed"));
11830
11834
  if (agentLog) {
11831
- if (agentLog.status === "completed" && agentLog.output) return {
11832
- kind: "complete",
11833
- content: agentResponse(agentLog.output) ?? (liveText || outputText(agentLog.output)),
11834
- duration: agentLog.duration ? `${Number(agentLog.duration).toFixed(1)}s` : void 0
11835
- };
11835
+ if (agentLog.status === "completed") {
11836
+ if (outputLoading(agentLog)) return null;
11837
+ const duration = agentLog.duration ? `${Number(agentLog.duration).toFixed(1)}s` : void 0;
11838
+ if (agentLog.output) return {
11839
+ kind: "complete",
11840
+ content: agentResponse(agentLog.output) ?? (liveText || outputText(agentLog.output)),
11841
+ duration
11842
+ };
11843
+ if (liveText) return {
11844
+ kind: "complete",
11845
+ content: liveText,
11846
+ duration
11847
+ };
11848
+ return agentLog.outputState === "unavailable" ? {
11849
+ kind: "error",
11850
+ content: "",
11851
+ error: texts.outputUnavailable
11852
+ } : {
11853
+ kind: "complete",
11854
+ content: texts.noOutput,
11855
+ duration
11856
+ };
11857
+ }
11836
11858
  return {
11837
11859
  kind: "error",
11838
11860
  content: liveText,
@@ -11851,7 +11873,7 @@ function resolveChatReply({ runLogs, isExecutionRunning, liveText, texts }) {
11851
11873
  content: liveText
11852
11874
  };
11853
11875
  const lastCompleted = runLogs.filter((log) => log.status === "completed").at(-1);
11854
- if (!lastCompleted) return null;
11876
+ if (!lastCompleted || outputLoading(lastCompleted)) return null;
11855
11877
  return {
11856
11878
  kind: "complete",
11857
11879
  content: lastCompleted.output ? outputText(lastCompleted.output) : texts.noOutput
@@ -11933,7 +11955,8 @@ function chatReplyTexts(tr) {
11933
11955
  return {
11934
11956
  agentFailed: tr("fluidgrids.builder.chatPanel.agentFailed", "The AI Agent failed"),
11935
11957
  workflowFailed: tr("fluidgrids.builder.chatPanel.workflowFailed", "The workflow failed"),
11936
- noOutput: tr("fluidgrids.builder.chatPanel.noOutputMessage", "Workflow completed with no output")
11958
+ noOutput: tr("fluidgrids.builder.chatPanel.noOutputMessage", "Workflow completed with no output"),
11959
+ outputUnavailable: tr("fluidgrids.builder.chatPanel.outputUnavailable", "The AI Agent finished, but its reply could not be loaded. Open the run to see it.")
11937
11960
  };
11938
11961
  }
11939
11962
  /**
@@ -19319,7 +19342,7 @@ const FlowBuilder = ({ readOnly = false, fitToScreen = false }) => {
19319
19342
  paletteGatesRef.current = paletteGates;
19320
19343
  }, [paletteGates]);
19321
19344
  useWarmBuilderOverlays();
19322
- useLazyAgentTools(() => import("./agentTools-DTXUqtfu.js").then(({ createBuilderAgentTools }) => createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current })), !editingBlocked, "Agent tools");
19345
+ useLazyAgentTools(() => import("./agentTools-7CFfwySg.js").then(({ createBuilderAgentTools }) => createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current })), !editingBlocked, "Agent tools");
19323
19346
  const [nodes, edges, onNodesChange, onEdgesChange, onConnect] = useFlowStore(useShallow((s) => {
19324
19347
  return [
19325
19348
  s.workflow.nodes,
@@ -19361,7 +19384,7 @@ const FlowBuilder = ({ readOnly = false, fitToScreen = false }) => {
19361
19384
  useEffect(() => {
19362
19385
  fitViewRef.current = fitView;
19363
19386
  }, [fitView]);
19364
- useLazyAgentTools(() => import("./canvasNoteTools-DmfZwtnL.js").then(({ createCanvasNoteTools }) => createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
19387
+ useLazyAgentTools(() => import("./canvasNoteTools-BikeF-pN.js").then(({ createCanvasNoteTools }) => createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
19365
19388
  nodes: [{ id: nodeId }],
19366
19389
  duration: 400,
19367
19390
  padding: .6,
package/dist/history.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import { t as HistoryPage } from "./HistoryPage-D2QBZ6Oc.js";
2
+ import { t as HistoryPage } from "./HistoryPage-BTAkQ7O1.js";
3
3
 
4
4
  export { HistoryPage };
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { f as FluidGridsTheme, r as FluidGridsRefreshedTokens } from "./index-72XFgvbn.js";
3
- import { R as FluidGridsProviderProps, w as WorkflowData } from "./index-CJGq3QbH.js";
3
+ import { R as FluidGridsProviderProps, w as WorkflowData } from "./index-RWAuYE2j.js";
4
4
  import { j as Translator } from "./constants-XdvUxeWK.js";
5
5
  import { t as RunsQuota } from "./runsQuota-DsniKiSg.js";
6
6
  import * as React$2 from "react";