@burdenoff/fluidgrids-fe-sdk 2026.1112.11 → 2026.1113.1

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 (66) hide show
  1. package/dist/{AiStudioPage-Q3455WO6.js → AiStudioPage-D3MAk-bs.js} +5 -5
  2. package/dist/{DataSinkDashboardPage-B5bqPnUn.js → DataSinkDashboardPage-Dc2QuJbL.js} +1 -1
  3. package/dist/{DataTablesPage-Zz23QZQp.js → DataTablesPage-Cv4veaKK.js} +3 -3
  4. package/dist/{EntityTagPicker-CuZAMby_.js → EntityTagPicker-D8ws706D.js} +1 -1
  5. package/dist/{ExecutionDetailPage-UyXErYuS.js → ExecutionDetailPage-CTVGE-d-.js} +168 -24
  6. package/dist/{ExecutionsListPage-CUJQA0Vk.js → ExecutionsListPage-J0sJPuoM.js} +8 -8
  7. package/dist/{FailureTriagePanel-BjatYyAa.js → FailureTriagePanel-BbYFYeV_.js} +1 -1
  8. package/dist/{FluidGridsProvider-CGi9a1So.js → FluidGridsProvider-C4FVNz0n.js} +1 -1
  9. package/dist/{HistoryPage-DLqmeQ12.js → HistoryPage-B9XcTPrO.js} +2 -2
  10. package/dist/{InsightsPage-CqtPCpj7.js → InsightsPage-DFOltjyj.js} +3 -3
  11. package/dist/{MissingNodesInstallModal-Df4fEAnr.js → MissingNodesInstallModal-D8H-YNCJ.js} +1 -1
  12. package/dist/{OpenTemplateAsCodeButton-BmuHhDRr.js → OpenTemplateAsCodeButton-hH26HQCk.js} +1 -1
  13. package/dist/{PaidTemplateConfirm-BTrK35af.js → PaidTemplateConfirm-DoKWMBtR.js} +1 -1
  14. package/dist/{SettingsPage-CVvaQ_g9.js → SettingsPage-DEKPCVVP.js} +5 -5
  15. package/dist/{TagFilterSelect-DcusTt1p.js → TagFilterSelect-CwM2-DU6.js} +1 -1
  16. package/dist/{TaskQueuesPage-C2dkenVF.js → TaskQueuesPage-Dhi6SIT4.js} +1 -1
  17. package/dist/{TemplateCard-DFbYdC2c.js → TemplateCard-DVSd_4zJ.js} +3 -3
  18. package/dist/{TemplateConfigurationModal-Dw2UgWYF.js → TemplateConfigurationModal-BKi1z7z7.js} +2 -2
  19. package/dist/{TemplateDetailPanel-DDySr7_1.js → TemplateDetailPanel-DK1gF7P5.js} +1 -1
  20. package/dist/{TemplatePreview-D8zWdTGv.js → TemplatePreview-DuSX2Q7H.js} +5 -5
  21. package/dist/{TemplatesPage-XCwxJjN6.js → TemplatesPage-CAWHh61l.js} +5 -5
  22. package/dist/{VariablesPage-DpiLh99E.js → VariablesPage-D7CoatWf.js} +1 -1
  23. package/dist/{VersionDiffDialog-c27yet_-.js → VersionDiffDialog-DGwysiyE.js} +1 -1
  24. package/dist/{WorkflowBuilder-BaNAX7Nk.js → WorkflowBuilder-BJgqDboZ.js} +3 -3
  25. package/dist/{WorkflowBuilder-CXqwzR7a.js → WorkflowBuilder-DAeoQi5E.js} +8 -8
  26. package/dist/{WorkflowProposalCard-BvmJ5ea8.js → WorkflowProposalCard-DGMdZC4R.js} +191 -4
  27. package/dist/{WorkflowSearchRedirect-DsQ71VcC.js → WorkflowSearchRedirect-CMEvd_AR.js} +1 -1
  28. package/dist/{WorkflowShareDialog-BRwTF9QB.js → WorkflowShareDialog-BgHRsDP0.js} +1 -1
  29. package/dist/{WorkflowsList-DQW-WLl5.js → WorkflowsList-CcQPxWKL.js} +7 -7
  30. package/dist/{agentTools-edsllozS.js → agentTools-DKpNKztf.js} +3 -3
  31. package/dist/{api-m8hX_l2k.js → api-DQtHXbIg.js} +1 -1
  32. package/dist/{api-Dw8nfVRD.js → api-MeAm6g7E.js} +1 -1
  33. package/dist/{canvasNoteTools-DzNTcQGo.js → canvasNoteTools-C_AN79m0.js} +2 -2
  34. package/dist/{code-editor-field-B2l-B8in.js → code-editor-field-Dt6KNWwN.js} +1 -1
  35. package/dist/executions.js +2 -2
  36. package/dist/{flow-builder-B2JGvYeK.js → flow-builder-D3Hl2AFk.js} +511 -258
  37. package/dist/{graphql-operation-types-DZVhCBEi.js → graphql-operation-types-C9qbvRa8.js} +306 -1
  38. package/dist/history.js +1 -1
  39. package/dist/{index-ChYBGz_a.d.ts → index-CWcP-tG1.d.ts} +62 -2
  40. package/dist/index.d.ts +2 -2
  41. package/dist/index.js +32 -32
  42. package/dist/{node-detail-view-BDXhEGVD.js → node-detail-view-bVLeYarT.js} +8 -8
  43. package/dist/{node-editor-tab-body-DBnsqYUK.js → node-editor-tab-body-JHHVtQgR.js} +2 -2
  44. package/dist/observability.d.ts +1 -1
  45. package/dist/observability.js +2 -2
  46. package/dist/{popover-Cl7_tXph.js → popover-Xx3gN7vg.js} +2 -2
  47. package/dist/{quick-config-panel-C_Z0RXEG.js → quick-config-panel-BvVQXuIL.js} +3 -3
  48. package/dist/{schedule-panel-CFAKmrBH.js → schedule-panel-DCb40TPN.js} +191 -75
  49. package/dist/settings.js +1 -1
  50. package/dist/{sidebar-node-editor-DZZlDElK.js → sidebar-node-editor-DxCWFZG2.js} +3 -3
  51. package/dist/templates.js +2 -2
  52. package/dist/{useAgentDefinitions-B4sw7bLw.js → useAgentDefinitions-_hgNCK1A.js} +1 -1
  53. package/dist/{useDurableParity-jtqJF547.js → useDurableParity-CcLeCDfv.js} +2 -2
  54. package/dist/{useEntityTags-BpDeLhzV.js → useEntityTags-Db4Pc8_M.js} +1 -1
  55. package/dist/{useExecutions-D2iKpt1Z.js → useExecutions-DOpG1pUQ.js} +2 -2
  56. package/dist/{useObservability-DIhzs9F-.js → useObservability-rQmwhoZZ.js} +1 -1
  57. package/dist/{useRunHistory-BhVY82Pg.js → useRunHistory-COn6dl7l.js} +2 -2
  58. package/dist/{useWorkflowCodeExport-BXy4NPsE.js → useWorkflowCodeExport-ZoUJKRSK.js} +2 -2
  59. package/dist/{useWorkflowOrganization-C4y6BOnN.js → useWorkflowOrganization-QxVePSkk.js} +1 -1
  60. package/dist/{useWorkflows-Clsu0o8t.js → useWorkflows-jOW60YmD.js} +2 -2
  61. package/dist/workflow-builder.js +4 -4
  62. package/dist/{workflow-code-transfer-DemcCpOv.js → workflow-code-transfer-l9wO34S0.js} +1 -1
  63. package/dist/workflow-pages.d.ts +1 -1
  64. package/dist/workflow-pages.js +16 -16
  65. package/dist/workflows-list.js +1 -1
  66. 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-B2JGvYeK.js";
5
- import { At as classifyCreateRefusal, B as buildOperationSeed, kt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-CGi9a1So.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-D3Hl2AFk.js";
5
+ import { At as classifyCreateRefusal, B as buildOperationSeed, kt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-C4FVNz0n.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";
8
- import { Ir as WorkflowGenerationDocument, x as CancelWorkflowGenerationDocument, xt as GenerateWorkflowFromPromptDocument } from "./graphql-operation-types-DZVhCBEi.js";
9
- import { n as useCreateWorkflow } from "./useWorkflows-Clsu0o8t.js";
8
+ import { Rr as WorkflowGenerationDocument, S as CancelWorkflowGenerationDocument, St as GenerateWorkflowFromPromptDocument } from "./graphql-operation-types-C9qbvRa8.js";
9
+ import { n as useCreateWorkflow } from "./useWorkflows-jOW60YmD.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-BXy4NPsE.js";
12
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-ZoUJKRSK.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-DIhzs9F-.js";
5
+ import { n as useDataSinks, t as useDataSinkData } from "./useObservability-rQmwhoZZ.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,9 +1,9 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { t as EntityTagPicker } from "./EntityTagPicker-CuZAMby_.js";
4
- import { t as TagFilterSelect } from "./TagFilterSelect-DcusTt1p.js";
3
+ import { t as EntityTagPicker } from "./EntityTagPicker-D8ws706D.js";
4
+ import { t as TagFilterSelect } from "./TagFilterSelect-CwM2-DU6.js";
5
5
  import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
6
- import { a as useDataTableTagOverlay, n as tagLabel } from "./useEntityTags-BpDeLhzV.js";
6
+ import { a as useDataTableTagOverlay, n as tagLabel } from "./useEntityTags-Db4Pc8_M.js";
7
7
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
8
8
  import { i as useOpenRequest, n as ACTION_PARAM_VALUES, r as useActionParam } from "./useActionParam-B0ebTZmg.js";
9
9
  import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
3
- import { d as useUntagEntity, s as useEntityTags, u as useTagEntity } from "./useEntityTags-BpDeLhzV.js";
3
+ import { d as useUntagEntity, s as useEntityTags, u as useTagEntity } from "./useEntityTags-Db4Pc8_M.js";
4
4
  import { useCallback, useEffect, useRef, useState } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { TagBadge, TagsWidget } from "@burdenoff/fe-libs/tag";
@@ -1,33 +1,33 @@
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-jtqJF547.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-CcLeCDfv.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 { s as isAgentNodeType } from "./agent-form-Bfvm32j1.js";
7
- import { En as canSignalRun, L as describeRunError, On as durableInterfaceOf, R as describeRunStep, dn as nodeStateDurationMs, fn as runDurationMs, jn as runSignalTargets, un as formatElapsedMs } from "./FluidGridsProvider-CGi9a1So.js";
7
+ import { En as canSignalRun, L as describeRunError, On as durableInterfaceOf, R as describeRunStep, dn as nodeStateDurationMs, fn as runDurationMs, jn as runSignalTargets, un as formatElapsedMs } from "./FluidGridsProvider-C4FVNz0n.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-D2iKpt1Z.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-DOpG1pUQ.js";
12
12
  import { t as RunActionsMenu } from "./RunActionsMenu-BE_1r3bF.js";
13
13
  import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, r as getFluidGridsClientSafe, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
14
- import { Cn as RunLogsDocument, Qr as WorkflowRunHierarchyDocument, ft as ExplainRunDocument, o as AgentStepUpdatedDocument, pn as RunAiUsageDocument, s as AgentTraceDocument, xn as RunLogAppendedDocument } from "./graphql-operation-types-DZVhCBEi.js";
14
+ import { Cn as RunLogAppendedDocument, Tn as RunLogsDocument, c as AgentTraceDocument, ei as WorkflowRunHierarchyDocument, hn as RunAiUsageDocument, o as AgentStepUpdatedDocument, pt as ExplainRunDocument } from "./graphql-operation-types-C9qbvRa8.js";
15
15
  import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
16
- import { t as EntityTagPicker } from "./EntityTagPicker-CuZAMby_.js";
16
+ import { t as EntityTagPicker } from "./EntityTagPicker-D8ws706D.js";
17
17
  import { a as useRecipientLabel, n as ApprovalApprovers, t as channelLabel } from "./channel-CZ70oI81.js";
18
18
  import { r as useRunHumanRequests } from "./useHumanRequests-ZiR0sSzS.js";
19
19
  import { a as encodedPayloadBytes, f as EffectBadge, h as useRunPolicyDecisions, i as decodePayloads, l as formatBudgetUsd, n as checkCodecServerUrl, o as isEncodedPayload, r as containsEncodedPayload, t as CodecServerError } from "./codec-client-CJ95Rmqo.js";
20
- import { n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard } from "./WorkflowProposalCard-BvmJ5ea8.js";
20
+ import { D as agentTokenStreamsFor, E as agentLiveReplyState, T as useAgentTokenStream, n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard } from "./WorkflowProposalCard-DGMdZC4R.js";
21
21
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
22
- import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-BjatYyAa.js";
23
- import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-BhVY82Pg.js";
22
+ import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-BbYFYeV_.js";
23
+ import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-COn6dl7l.js";
24
24
  import { $P as VersioningBehavior, FI as WorkflowUpdateWaitFor, L as AgentStepKind, _I as WorkflowQueryRejectCondition, jd as ErrorType } from "./graphql-types-v6CTGwA0.js";
25
25
  import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-bmUn-gJP.js";
26
26
  import { _ as useWorkflowTestsEnabled, l as useDurableFunctionNodesEnabled, m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
27
- 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-m8hX_l2k.js";
28
- import { a as fetchTaskQueueStats } from "./api-Dw8nfVRD.js";
27
+ 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-DQtHXbIg.js";
28
+ import { a as fetchTaskQueueStats } from "./api-MeAm6g7E.js";
29
29
  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-CMfn30xT.js";
30
- import { v as useWorkflowVersions } from "./useWorkflows-Clsu0o8t.js";
30
+ import { v as useWorkflowVersions } from "./useWorkflows-jOW60YmD.js";
31
31
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
32
32
  import { Link, useNavigate, useParams, useSearchParams } from "react-router";
33
33
  import { Icon } from "@iconify/react";
@@ -2622,7 +2622,8 @@ function toTurn(step) {
2622
2622
  input: prettyValue(step.input),
2623
2623
  reply: isRecord$1(output) ? text$1(output.content) ?? prettyValue(output.toolCalls) ?? error : prettyValue(output),
2624
2624
  metered: step.promptInvocationId !== null,
2625
- failed: error !== null
2625
+ failed: error !== null,
2626
+ partialReply: isRecord$1(output) ? text$1(output.partialContent) : null
2626
2627
  };
2627
2628
  }
2628
2629
  function toFinal(step) {
@@ -2775,7 +2776,7 @@ function stepTraceFor(nodes, nodeStateId, nodeId) {
2775
2776
  * without a step trace (recorded before it existed) falls back to the node
2776
2777
  * states the run page already polls (see utils/agent-trace.ts).
2777
2778
  */
2778
- function AgentTracePanel({ traces, nodeDisplay, usage, usageLoading, usageError, onRefreshUsage, focusNodeId, stepTraces = [], stepTraceDataPruned = false, stepTraceError = null }) {
2779
+ function AgentTracePanel({ traces, nodeDisplay, usage, usageLoading, usageError, onRefreshUsage, focusNodeId, stepTraces = [], stepTraceDataPruned = false, stepTraceError = null, liveReplies = [], runLive = false }) {
2779
2780
  const tr = useTr();
2780
2781
  const anyStepTrace = traces.some((trace) => !!stepTraceFor(stepTraces, trace.nodeStateId, trace.nodeId));
2781
2782
  return /* @__PURE__ */ jsxs("div", {
@@ -2802,6 +2803,8 @@ function AgentTracePanel({ traces, nodeDisplay, usage, usageLoading, usageError,
2802
2803
  traces.map((trace) => /* @__PURE__ */ jsx(AgentNodeCard, {
2803
2804
  trace,
2804
2805
  steps: stepTraceFor(stepTraces, trace.nodeStateId, trace.nodeId),
2806
+ liveReplies: agentTokenStreamsFor(liveReplies, trace.nodeStateId, trace.nodeId),
2807
+ runLive,
2805
2808
  title: nodeDisplayTitle(nodeDisplay[trace.nodeId], trace.nodeId),
2806
2809
  focused: !!focusNodeId && focusNodeId === trace.nodeId,
2807
2810
  tr
@@ -2981,7 +2984,8 @@ function UsageLines({ lines, nodeDisplay, tr }) {
2981
2984
  })
2982
2985
  });
2983
2986
  }
2984
- function AgentNodeCard({ trace, steps, title, focused, tr }) {
2987
+ function AgentNodeCard({ trace, steps, liveReplies, runLive, title, focused, tr }) {
2988
+ const pendingReplies = repliesWithoutStep(liveReplies, steps);
2985
2989
  const iterationCount = steps?.totals.iterations ?? trace.iterationCount;
2986
2990
  const tokensUsed = steps ? steps.totals.tokensIn + steps.totals.tokensOut : trace.tokensUsed;
2987
2991
  const toolCallCount = steps?.totals.toolCalls ?? trace.steps.length;
@@ -3081,6 +3085,15 @@ function AgentNodeCard({ trace, steps, title, focused, tr }) {
3081
3085
  }, step.index))
3082
3086
  })]
3083
3087
  }),
3088
+ pendingReplies.length > 0 && /* @__PURE__ */ jsx("ol", {
3089
+ className: "mt-4 space-y-2",
3090
+ "data-testid": "agent-live-replies",
3091
+ children: pendingReplies.map((reply) => /* @__PURE__ */ jsx(LiveReply, {
3092
+ reply,
3093
+ runLive,
3094
+ tr
3095
+ }, reply.key))
3096
+ }),
3084
3097
  trace.response && /* @__PURE__ */ jsxs("details", {
3085
3098
  className: "mt-4",
3086
3099
  open: true,
@@ -3358,18 +3371,146 @@ function ModelTurnRow({ turn, tr }) {
3358
3371
  ]
3359
3372
  }), /* @__PURE__ */ jsxs("div", {
3360
3373
  className: "space-y-2 border-t border-border-secondary px-3 py-2",
3361
- children: [/* @__PURE__ */ jsx(StepBlock, {
3362
- label: tr("fluidgrids.executions.executionDetail.agent.sentToModel", "Sent to the model"),
3363
- value: turn.input,
3364
- empty: tr("fluidgrids.executions.executionDetail.agent.stepNotRecorded", "Not recorded")
3365
- }), /* @__PURE__ */ jsx(StepBlock, {
3366
- label: tr("fluidgrids.executions.executionDetail.agent.modelReply", "Reply"),
3367
- value: turn.reply,
3368
- empty: tr("fluidgrids.executions.executionDetail.agent.stepNotRecorded", "Not recorded")
3369
- })]
3374
+ children: [
3375
+ /* @__PURE__ */ jsx(StepBlock, {
3376
+ label: tr("fluidgrids.executions.executionDetail.agent.sentToModel", "Sent to the model"),
3377
+ value: turn.input,
3378
+ empty: tr("fluidgrids.executions.executionDetail.agent.stepNotRecorded", "Not recorded")
3379
+ }),
3380
+ /* @__PURE__ */ jsx(StepBlock, {
3381
+ label: tr("fluidgrids.executions.executionDetail.agent.modelReply", "Reply"),
3382
+ value: turn.reply,
3383
+ empty: tr("fluidgrids.executions.executionDetail.agent.stepNotRecorded", "Not recorded")
3384
+ }),
3385
+ turn.partialReply && /* @__PURE__ */ jsx(StepBlock, {
3386
+ label: tr("fluidgrids.executions.executionDetail.agent.partialReply", "Partial reply before the error"),
3387
+ value: turn.partialReply,
3388
+ empty: ""
3389
+ })
3390
+ ]
3370
3391
  })]
3371
3392
  });
3372
3393
  }
3394
+ /**
3395
+ * The streamed replies still worth showing: those whose iteration has no
3396
+ * model turn in the step trace yet. A finished reply with no text (a turn
3397
+ * that only asked for tools) has nothing to show.
3398
+ */
3399
+ function repliesWithoutStep(replies, steps) {
3400
+ const planned = new Set((steps?.iterations ?? []).filter((iteration) => iteration.turns.length > 0).map((iteration) => iteration.iteration));
3401
+ return replies.filter((reply) => !planned.has(reply.iteration) && (!reply.done || reply.text.length > 0 || reply.error !== null));
3402
+ }
3403
+ /** Border and note colour of a live reply in each state. */
3404
+ const LIVE_REPLY_TONE = {
3405
+ streaming: {
3406
+ border: "border-border-secondary",
3407
+ note: "text-text-secondary"
3408
+ },
3409
+ done: {
3410
+ border: "border-border-secondary",
3411
+ note: "text-text-secondary"
3412
+ },
3413
+ failed: {
3414
+ border: "border-status-error-border",
3415
+ note: "text-status-error-text"
3416
+ },
3417
+ stopped: {
3418
+ border: "border-status-warning-border",
3419
+ note: "text-status-warning-text"
3420
+ }
3421
+ };
3422
+ /** What a live reply says about its state, or null while it is being written. */
3423
+ function liveReplyNote(state, tr) {
3424
+ switch (state) {
3425
+ case "failed": return tr("fluidgrids.executions.executionDetail.agent.live.failed", "The model call failed. This is what the model wrote before it stopped.");
3426
+ case "stopped": return tr("fluidgrids.executions.executionDetail.agent.live.stopped", "The run stopped before the model finished. This is what the model wrote.");
3427
+ case "done": return tr("fluidgrids.executions.executionDetail.agent.live.done", "The model finished this reply. Its step appears here shortly.");
3428
+ case "streaming": return null;
3429
+ }
3430
+ }
3431
+ function LiveReplyHeader({ iteration, writing, tr }) {
3432
+ return /* @__PURE__ */ jsxs("div", {
3433
+ className: "flex flex-wrap items-center gap-2 text-sm",
3434
+ children: [
3435
+ /* @__PURE__ */ jsx(Icon, {
3436
+ icon: writing ? "mdi:loading" : "mdi:message-text-outline",
3437
+ width: 14,
3438
+ className: `shrink-0 text-text-secondary ${writing ? "animate-spin" : ""}`
3439
+ }),
3440
+ /* @__PURE__ */ jsx("span", {
3441
+ className: "font-medium text-text-primary",
3442
+ children: tr("fluidgrids.executions.executionDetail.agent.live.heading", "Iteration {{number}}: live reply", { number: iteration + 1 })
3443
+ }),
3444
+ writing && /* @__PURE__ */ jsx("span", {
3445
+ className: "text-xs text-text-secondary",
3446
+ children: tr("fluidgrids.executions.executionDetail.agent.live.writing", "The model is writing…")
3447
+ })
3448
+ ]
3449
+ });
3450
+ }
3451
+ function LiveReplyText({ text, writing, tr }) {
3452
+ if (!text) {
3453
+ if (!writing) return null;
3454
+ return /* @__PURE__ */ jsx("p", {
3455
+ className: "mt-2 text-xs text-text-secondary",
3456
+ children: tr("fluidgrids.executions.executionDetail.agent.live.waiting", "Waiting for the model's first words…")
3457
+ });
3458
+ }
3459
+ return /* @__PURE__ */ jsxs("pre", {
3460
+ className: "mt-2 max-h-80 overflow-auto rounded bg-background-tertiary p-2 font-mono text-xs whitespace-pre-wrap break-words text-text-primary",
3461
+ "aria-live": writing ? "polite" : "off",
3462
+ "data-testid": "agent-live-reply-text",
3463
+ children: [text, writing && /* @__PURE__ */ jsx("span", {
3464
+ "aria-hidden": "true",
3465
+ className: "animate-pulse",
3466
+ children: "▍"
3467
+ })]
3468
+ });
3469
+ }
3470
+ function LiveReply({ reply, runLive, tr }) {
3471
+ const state = agentLiveReplyState(reply, runLive);
3472
+ const writing = state === "streaming";
3473
+ const tone = LIVE_REPLY_TONE[state];
3474
+ const note = liveReplyNote(state, tr);
3475
+ return /* @__PURE__ */ jsxs("li", {
3476
+ className: `rounded border ${tone.border} p-3`,
3477
+ "data-testid": "agent-live-reply",
3478
+ "data-state": state,
3479
+ "data-node-id": reply.nodeId,
3480
+ "data-iteration": reply.iteration,
3481
+ children: [
3482
+ /* @__PURE__ */ jsx(LiveReplyHeader, {
3483
+ iteration: reply.iteration,
3484
+ writing,
3485
+ tr
3486
+ }),
3487
+ /* @__PURE__ */ jsx(LiveReplyText, {
3488
+ text: reply.text,
3489
+ writing,
3490
+ tr
3491
+ }),
3492
+ note && /* @__PURE__ */ jsx("p", {
3493
+ className: `mt-2 text-xs ${tone.note}`,
3494
+ children: note
3495
+ }),
3496
+ reply.error && /* @__PURE__ */ jsxs("p", {
3497
+ className: "mt-1 text-xs break-words text-status-error-text",
3498
+ children: [/* @__PURE__ */ jsxs("span", {
3499
+ className: "font-medium",
3500
+ children: [
3501
+ tr("fluidgrids.executions.executionDetail.agent.error", "Error"),
3502
+ ":",
3503
+ " "
3504
+ ]
3505
+ }), reply.error]
3506
+ }),
3507
+ (reply.gap || reply.truncated) && /* @__PURE__ */ jsx("p", {
3508
+ className: "mt-1 text-xs text-text-secondary",
3509
+ children: tr("fluidgrids.executions.executionDetail.agent.live.incomplete", "Part of this reply is not shown here. The step trace shows the full reply once the model finishes.")
3510
+ })
3511
+ ]
3512
+ });
3513
+ }
3373
3514
  function ToolCallRow({ call, tr }) {
3374
3515
  const waiting = !call.hasResult && call.rule === "ask";
3375
3516
  let border = "border-border-secondary";
@@ -6309,6 +6450,7 @@ function ExecutionDetailPage() {
6309
6450
  enabled: hasAgent && activeTab === "agent",
6310
6451
  live: isActive
6311
6452
  });
6453
+ const agentTokenStream = useAgentTokenStream(runId, { enabled: hasAgent && activeTab === "agent" && isActive });
6312
6454
  const agentTraces = useMemo(() => agentNodeTraces(orderNodesByExecution(execution?.nodeStates ?? [], execution?.triggerNodeId ?? void 0)), [execution?.nodeStates, execution?.triggerNodeId]);
6313
6455
  const activityControls = isDurableRun && phaseC.runControlDurable;
6314
6456
  const runPending = useRunPending(runId, {
@@ -7383,7 +7525,9 @@ function ExecutionDetailPage() {
7383
7525
  focusNodeId: agentFocusNodeId,
7384
7526
  stepTraces: agentStepTrace.nodes,
7385
7527
  stepTraceDataPruned: agentStepTrace.dataPruned,
7386
- stepTraceError: agentStepTrace.error
7528
+ stepTraceError: agentStepTrace.error,
7529
+ liveReplies: agentTokenStream.streams,
7530
+ runLive: isActive
7387
7531
  })]
7388
7532
  }),
7389
7533
  activeTab === "history" && isDurableRun && /* @__PURE__ */ jsxs("div", {
@@ -1,27 +1,27 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { M as DEFAULT_EXECUTIONS_FILTER, N as useExecutionsStore, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.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-D2iKpt1Z.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-DOpG1pUQ.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
- import { t as TagFilterSelect } from "./TagFilterSelect-DcusTt1p.js";
9
+ import { t as TagFilterSelect } from "./TagFilterSelect-CwM2-DU6.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-jtqJF547.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-CcLeCDfv.js";
12
12
  import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
13
13
  import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
14
- import { fn as runDurationMs, un as formatElapsedMs } from "./FluidGridsProvider-CGi9a1So.js";
14
+ import { fn as runDurationMs, un as formatElapsedMs } from "./FluidGridsProvider-C4FVNz0n.js";
15
15
  import { r as useRunHumanRequests } from "./useHumanRequests-ZiR0sSzS.js";
16
16
  import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-eUhZB1ju.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-Clsu0o8t.js";
19
+ import { h as useWorkflowDefinitions } from "./useWorkflows-jOW60YmD.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
- 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-m8hX_l2k.js";
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-DQtHXbIg.js";
23
23
  import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, o as StatusPill, r as JsonField, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
24
- import { Cr as WorkflowBatchOperationUpdatedDocument } from "./graphql-operation-types-DZVhCBEi.js";
24
+ import { Tr as WorkflowBatchOperationUpdatedDocument } from "./graphql-operation-types-C9qbvRa8.js";
25
25
  import { $F as WorkflowBatchOperationType, vI as WorkflowResetType } from "./graphql-types-v6CTGwA0.js";
26
26
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from "react";
27
27
  import { useNavigate, useSearchParams } from "react-router";
@@ -1661,7 +1661,7 @@ function Pagination({ totalItems, showPageSize = true }) {
1661
1661
  const { pagination, setPage, setPageSize } = useExecutionsStore();
1662
1662
  const { page, pageSize, total } = pagination;
1663
1663
  const totalPages = Math.ceil((totalItems ?? total) / pageSize);
1664
- const startItem = (page - 1) * pageSize + 1;
1664
+ const startItem = (totalItems ?? total) === 0 ? 0 : (page - 1) * pageSize + 1;
1665
1665
  const endItem = Math.min(page * pageSize, totalItems ?? total);
1666
1666
  const pageSizeOptions = [
1667
1667
  10,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
3
  import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
4
- import { An as SetRunFailureTriageEnabledDocument, _n as RunFailureClustersDocument, et as DismissRunFailureClusterDocument, gt as FgTriageFailedRunsDocument, vn as RunFailureTriageSettingsDocument } from "./graphql-operation-types-DZVhCBEi.js";
4
+ import { Mn as SetRunFailureTriageEnabledDocument, _t as FgTriageFailedRunsDocument, bn as RunFailureTriageSettingsDocument, tt as DismissRunFailureClusterDocument, yn as RunFailureClustersDocument } from "./graphql-operation-types-C9qbvRa8.js";
5
5
  import { qD as RunFailureClusterStatus } from "./graphql-types-v6CTGwA0.js";
6
6
  import { useCallback, useEffect, useState } from "react";
7
7
  import { Icon } from "@iconify/react";
@@ -5,7 +5,7 @@ import { i as getGlobalStoreClient, o as resetGlobalStoreClient, r as createGlob
5
5
  import { A as nodeAccent, C as nodeAdaptersOf, D as NodeCard, E as resolveOutputHandles, H as useFlowStore, I as partitionStickyNotes, L as resolveStickyColor, N as DEFAULT_STICKY_COLOR, O as NodeCardBody, P as STICKY_COLORS, R as stickySurfaceStyle, T as resolveInputHandles, V as STICKY_NOTE_TYPE, W as isNodeTrigger, _ as LogicNodeCard, b as alignPlainOutputEdges, i as WAIT_FOR_SIGNAL_NODE_TYPE, j as NodeTypeIcon, k as NodeCardHeader, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as InputHandles, w as outputHandlesSpacerHeight, x as hasNodeManifest, y as OutputHandles } from "./node-operation-selection-DAbS6jSY.js";
6
6
  import { n as FluidGridsTranslationProvider, r as useTr, t as ENGLISH_FALLBACK_TRANSLATOR } from "./TranslationBridge-Da-TPgQm.js";
7
7
  import { l as useDurableFunctionNodesEnabled } from "./feature-flags-B_b8PJ6Z.js";
8
- import { Dn as SaveWorkflowDraftDocument, M as CreateWorkflowDefinitionDocument, Mt as NodePaletteEntriesDocument, Or as WorkflowDefinitionDocument, Yn as TriggerWorkflowDocument, ct as ExecutionDetailDocument, h as BuilderRunStatusDocument, jt as NodeManifestsDocument, kt as NodeEndpointConfigsDocument, m as BuilderRunNodeDetailsDocument, ot as EventRegistrationsDocument, st as ExecuteStepDocument, yn as RunFromNodeDocument, z as CreateWorkflowVersionDocument } from "./graphql-operation-types-DZVhCBEi.js";
8
+ import { Ar as WorkflowDefinitionDocument, B as CreateWorkflowVersionDocument, N as CreateWorkflowDefinitionDocument, Nt as NodeManifestsDocument, Pt as NodePaletteEntriesDocument, Zn as TriggerWorkflowDocument, ct as ExecuteStepDocument, g as BuilderRunStatusDocument, h as BuilderRunNodeDetailsDocument, jt as NodeEndpointConfigsDocument, kn as SaveWorkflowDraftDocument, lt as ExecutionDetailDocument, st as EventRegistrationsDocument, xn as RunFromNodeDocument } from "./graphql-operation-types-C9qbvRa8.js";
9
9
  import { a as collectExtensions, n as QUOTA_EXHAUSTED_CODE, o as errorCodesOf, r as RUNS_QUOTA_NAME, s as findQuotaRefusal } from "./quota-Cdt8yz7N.js";
10
10
  import { i as emitRunStarted, n as emitRunFailed, r as emitRunLimitHit, s as emitWorkflowCreated } from "./fluidgridsEvents-Dm5CaHtr.js";
11
11
  import { n as useFgAskable } from "./askAboutBridge-BV8m95kk.js";
@@ -1,7 +1,7 @@
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-Clsu0o8t.js";
4
- import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-c27yet_-.js";
3
+ import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-jOW60YmD.js";
4
+ import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-DGwysiyE.js";
5
5
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
6
6
  import { x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
7
7
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
@@ -3,14 +3,14 @@ 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-DIhzs9F-.js";
6
+ import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-rQmwhoZZ.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
- import { n as FailureTriagePanel } from "./FailureTriagePanel-BjatYyAa.js";
8
+ import { n as FailureTriagePanel } from "./FailureTriagePanel-BbYFYeV_.js";
9
9
  import { c as useContinuousOptimisationEnabled } from "./feature-flags-B_b8PJ6Z.js";
10
10
  import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
11
11
  import { Cw as OptimisationSuggestionStatus, Sw as OptimisationKind, xw as OptimisationDismissReason } from "./graphql-types-v6CTGwA0.js";
12
12
  import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
13
- import { $ as DismissOptimisationSuggestionDocument, Di as WorkspaceAiUsageDocument, E as ContinuousOptimisationSettingsDocument, In as SnoozeOptimisationSuggestionDocument, Lt as OptimisationSuggestionsDocument, Wt as ProposeOptimisationDocument, at as ErrorAnalyticsDocument, ht as FgRunOptimisationScanDocument, kn as SetContinuousOptimisationEnabledDocument, qr as WorkflowProposalDocument } from "./graphql-operation-types-DZVhCBEi.js";
13
+ import { D as ContinuousOptimisationSettingsDocument, Kt as ProposeOptimisationDocument, Rn as SnoozeOptimisationSuggestionDocument, Yr as WorkflowProposalDocument, et as DismissOptimisationSuggestionDocument, gt as FgRunOptimisationScanDocument, jn as SetContinuousOptimisationEnabledDocument, ki as WorkspaceAiUsageDocument, ot as ErrorAnalyticsDocument, zt as OptimisationSuggestionsDocument } from "./graphql-operation-types-C9qbvRa8.js";
14
14
  import { a as formatTokens, c as DISMISS_REASONS, f as monthlySavingLabel, i as aiSpendPeriod, l as evidenceFacts, p as shortRunId, r as aiCost, s as runsOfWorkflowPath, t as AI_SPEND_RANGE_DAYS, u as evidenceWindowDays } from "./ai-usage-bmUn-gJP.js";
15
15
  import { i as utcDay, r as runListPath } from "./run-list-links-eUhZB1ju.js";
16
16
  import { t as proposalCanvasPath } from "./useRequestedProposal-B7uPXfZB.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { a as DialogFooter, i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-Cjb4lB4D.js";
3
3
  import { t as Button } from "./button-DG7y_FVJ.js";
4
- import { a as Badge } from "./TemplateCard-DFbYdC2c.js";
4
+ import { a as Badge } from "./TemplateCard-DVSd_4zJ.js";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { AlertTriangle, CheckCircle2, Download, ExternalLink, Loader2, Puzzle, ShoppingCart } from "lucide-react";
7
7
 
@@ -3,7 +3,7 @@ import { h as usePhaseDFlags } from "./feature-flags-B_b8PJ6Z.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { m as describeOperationError } from "./client-C9XSzSXr.js";
5
5
  import { t as downloadBlob } from "./workflow-transfer-CQnQC-ke.js";
6
- import { f as buildTemplateCodeDownload, p as readTemplateCode } from "./TemplateCard-DFbYdC2c.js";
6
+ import { f as buildTemplateCodeDownload, p as readTemplateCode } from "./TemplateCard-DVSd_4zJ.js";
7
7
  import { useState } from "react";
8
8
  import { Icon } from "@iconify/react";
9
9
  import { cn } from "@burdenoff/fe-libs/utils";
@@ -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-DFbYdC2c.js";
3
+ import { n as formatTemplatePrice } from "./TemplateCard-DVSd_4zJ.js";
4
4
  import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -3,18 +3,18 @@ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
5
5
  import { n as useManagedAiPolicyAuthority } from "./ManagedAiPolicyAuthorityContext-CNkxIOZ1.js";
6
- import { Et as ManagedAiWorkspacePolicyDocument, Hr as WorkflowNotificationSettingsDocument, ar as UpdateDurableHistoryCapsDocument, nt as DurableHistoryCapsDocument, or as UpdateManagedAiWorkspacePolicyDocument, ur as UpdateWorkflowNotificationSettingsDocument } from "./graphql-operation-types-DZVhCBEi.js";
6
+ import { Ot as ManagedAiWorkspacePolicyDocument, Wr as WorkflowNotificationSettingsDocument, cr as UpdateManagedAiWorkspacePolicyDocument, fr as UpdateWorkflowNotificationSettingsDocument, rt as DurableHistoryCapsDocument, sr as UpdateDurableHistoryCapsDocument } from "./graphql-operation-types-C9qbvRa8.js";
7
7
  import { c as budgetInputValue, d as withBudgetMode, f as EffectBadge, m as useActionPolicies, n as checkCodecServerUrl, p as effectLabel, s as BUDGET_DIMENSIONS, u as withBudgetLimit } from "./codec-client-CJ95Rmqo.js";
8
8
  import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
9
9
  import { d as useFluidGridsFlag, m as usePhaseCFlags, t as FLUIDGRIDS_FLAGS, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
10
- import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-m8hX_l2k.js";
10
+ import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-DQtHXbIg.js";
11
11
  import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
12
12
  import { EI as WorkflowSearchAttributeType } from "./graphql-types-v6CTGwA0.js";
13
13
  import { H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
14
- import { Pt as useSaveStatusStore, in as findSaveConflict } from "./FluidGridsProvider-CGi9a1So.js";
15
- import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-DIhzs9F-.js";
14
+ import { Pt as useSaveStatusStore, in as findSaveConflict } from "./FluidGridsProvider-C4FVNz0n.js";
15
+ import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-rQmwhoZZ.js";
16
16
  import { n as useConnections } from "./useConnections-Cs7LCWEM.js";
17
- import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-B4sw7bLw.js";
17
+ import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-_hgNCK1A.js";
18
18
  import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-Bfvm32j1.js";
19
19
  import { i as getGlobalStoreClient } from "./node-registry-refresh-Dy0uRg9f.js";
20
20
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as useAvailableTags } from "./useEntityTags-BpDeLhzV.js";
2
+ import { r as useAvailableTags } from "./useEntityTags-Db4Pc8_M.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
@@ -5,7 +5,7 @@ import { m as describeOperationError } from "./client-C9XSzSXr.js";
5
5
  import { g as useSelfHostedWorkersEnabled } from "./feature-flags-B_b8PJ6Z.js";
6
6
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
7
7
  import { a as RUN_CONTROL_DIALOG_STYLE, i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
8
- import { a as fetchTaskQueueStats, c as fetchWorkflowWorkers, d as updateTaskQueue, i as deleteWorkerToken, l as rotateWorkerToken, n as createWorkerToken, o as fetchTaskQueues, r as deleteTaskQueue, s as fetchWorkerTokens, t as createTaskQueue, u as setWorkerTokenConnectionAllowlist } from "./api-Dw8nfVRD.js";
8
+ import { a as fetchTaskQueueStats, c as fetchWorkflowWorkers, d as updateTaskQueue, i as deleteWorkerToken, l as rotateWorkerToken, n as createWorkerToken, o as fetchTaskQueues, r as deleteTaskQueue, s as fetchWorkerTokens, t as createTaskQueue, u as setWorkerTokenConnectionAllowlist } from "./api-MeAm6g7E.js";
9
9
  import { nI as WorkflowEnvironment } from "./graphql-types-v6CTGwA0.js";
10
10
  import { useState } from "react";
11
11
  import { Icon } from "@iconify/react";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
3
3
  import { i as getGlobalStoreClient } from "./node-registry-refresh-Dy0uRg9f.js";
4
- import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, t as FluidGridsContext, x as BrowseWorkflowTemplatesDocument, yn as useFluidGridsAnalytics } from "./FluidGridsProvider-CGi9a1So.js";
4
+ import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, t as FluidGridsContext, x as BrowseWorkflowTemplatesDocument, yn as useFluidGridsAnalytics } from "./FluidGridsProvider-C4FVNz0n.js";
5
5
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
6
6
  import { h as usePhaseDFlags } from "./feature-flags-B_b8PJ6Z.js";
7
7
  import { c as isQuotaExhaustedFailure } from "./quota-Cdt8yz7N.js";
8
8
  import { a as emitTemplateUsed, s as emitWorkflowCreated, t as emitNodeInstalled } from "./fluidgridsEvents-Dm5CaHtr.js";
9
9
  import { t as cn } from "./cn-QqidFIgr.js";
10
10
  import { t as Button } from "./button-DG7y_FVJ.js";
11
- import { b as utf8Length } from "./workflow-code-transfer-DemcCpOv.js";
11
+ import { b as utf8Length } from "./workflow-code-transfer-l9wO34S0.js";
12
12
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
13
13
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
14
14
  import React, { Suspense, forwardRef, lazy, useCallback, useContext, useMemo, useState } from "react";
@@ -1282,7 +1282,7 @@ async function dismissToastWhenShown(id) {
1282
1282
  }
1283
1283
 
1284
1284
  // src/hooks/store/useTemplateImportFlow.tsx
1285
- const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-Dw2UgWYF.js").then((m) => ({ default: m.TemplateConfigurationModal })));
1285
+ const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-BKi1z7z7.js").then((m) => ({ default: m.TemplateConfigurationModal })));
1286
1286
  /**
1287
1287
  * "Use this template", the same everywhere it is offered: the builder's
1288
1288
  * template panel, the Templates page and the template preview page
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { a as DialogFooter, d as Input, i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-Cjb4lB4D.js";
3
3
  import { t as Button } from "./button-DG7y_FVJ.js";
4
- import { a as Badge } from "./TemplateCard-DFbYdC2c.js";
4
+ import { a as Badge } from "./TemplateCard-DVSd_4zJ.js";
5
5
  import { t as Label } from "./label-CDy86rIZ.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
7
- import { t as OpenTemplateAsCodeButton } from "./OpenTemplateAsCodeButton-BmuHhDRr.js";
7
+ import { t as OpenTemplateAsCodeButton } from "./OpenTemplateAsCodeButton-hH26HQCk.js";
8
8
  import { useEffect, useMemo, useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
10
  import { AlertTriangle, CheckCircle2, Download, ExternalLink, KeyRound, Loader2, ShoppingCart, Sparkles } from "lucide-react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as Button } from "./button-DG7y_FVJ.js";
3
- import { a as Badge, i as templatePreview } from "./TemplateCard-DFbYdC2c.js";
3
+ import { a as Badge, i as templatePreview } from "./TemplateCard-DVSd_4zJ.js";
4
4
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
5
5
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
6
6
  import { Icon } from "@iconify/react";
@@ -1,10 +1,10 @@
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-B2JGvYeK.js";
5
- import { S as useInstalledNodes, c as buildNodeCheck, d as useImportWorkflowTemplate, l as buildRequiredNodeTypes, n as formatTemplatePrice, r as isPaidTemplate, s as useTemplateImportFlow } from "./TemplateCard-DFbYdC2c.js";
6
- import { S as QuotaExhaustedDialog } from "./workflow-code-transfer-DemcCpOv.js";
7
- import { n as WithOpenTemplateAsCode } from "./OpenTemplateAsCodeButton-BmuHhDRr.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-D3Hl2AFk.js";
5
+ import { S as useInstalledNodes, c as buildNodeCheck, d as useImportWorkflowTemplate, l as buildRequiredNodeTypes, n as formatTemplatePrice, r as isPaidTemplate, s as useTemplateImportFlow } from "./TemplateCard-DVSd_4zJ.js";
6
+ import { S as QuotaExhaustedDialog } from "./workflow-code-transfer-l9wO34S0.js";
7
+ import { n as WithOpenTemplateAsCode } from "./OpenTemplateAsCodeButton-hH26HQCk.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";
10
10
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
@@ -12,7 +12,7 @@ import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
12
12
  import { m as describeOperationError } from "./client-C9XSzSXr.js";
13
13
  import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
14
14
  import { c as useVariables, t as useCreateVariable } from "./useVariables-2ddyJX4a.js";
15
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-BTrK35af.js";
15
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-DoKWMBtR.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";