@burdenoff/fluidgrids-fe-sdk 2026.1110.18 → 2026.1111.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 (42) hide show
  1. package/dist/{ExecutionDetailPage-DvL6eNdl.js → ExecutionDetailPage-DpAYZYx2.js} +245 -33
  2. package/dist/{FailureTriagePanel-D5zBlA9e.js → FailureTriagePanel-BJoO3lsL.js} +1 -1
  3. package/dist/{FluidGridsProvider-BafQs01c.js → FluidGridsProvider-CraUhM4E.js} +1 -1
  4. package/dist/{HistoryPage-DyjBx_WI.js → HistoryPage-CYqyngbp.js} +3 -3
  5. package/dist/{InsightsPage-CZDkFsba.js → InsightsPage-DBnOta71.js} +4 -4
  6. package/dist/{ManagedAiPolicyAuthority-BcYnrH6v.js → ManagedAiPolicyAuthority-D3AYZ5FP.js} +6 -6
  7. package/dist/{MissingNodesInstallModal-Batt34qR.js → MissingNodesInstallModal-LdB_-hSf.js} +2 -2
  8. package/dist/{NodesPage-B9ZeoaQZ.js → NodesPage-fEUyUKLC.js} +2 -2
  9. package/dist/{PublishCustomNodeAction-0xEFoBxJ.js → PublishCustomNodeAction-C6qkAIjG.js} +1 -1
  10. package/dist/{TemplateConfigurationModal-CG4yDNkw.js → TemplateConfigurationModal-CnqJFt2f.js} +2 -2
  11. package/dist/{TemplateDetailPanel-CQYS4JH1.js → TemplateDetailPanel-BWnLqcA7.js} +2 -2
  12. package/dist/{TemplatesPage-CQr-9jvt.js → TemplatesPage-omZCh0-D.js} +5 -5
  13. package/dist/{VersionDiffDialog-CG1tfcfU.js → VersionDiffDialog-CLgIj_jc.js} +1 -1
  14. package/dist/{WorkflowProposalCard-CrKxIjtm.js → WorkflowProposalCard-CV4kV4_Z.js} +1 -1
  15. package/dist/{WorkflowSearchRedirect-CN8lZ5u3.js → WorkflowSearchRedirect-D34qC1Qm.js} +10 -10
  16. package/dist/{WorkflowShareDialog-CGWKqXo7.js → WorkflowShareDialog-DiD8Gqim.js} +2 -2
  17. package/dist/{WorkflowsList-BQF52YzE.js → WorkflowsList-Bgsy1OPw.js} +5 -5
  18. package/dist/{agent-form-BODEyu51.js → agent-form-Ci_vxQF5.js} +1 -1
  19. package/dist/{agentTools-DKr8aY56.js → agentTools-D61qQFfw.js} +2 -2
  20. package/dist/{codec-client-DnA0YvMv.js → codec-client-Cm4GXmJ9.js} +1 -1
  21. package/dist/executions.js +1 -1
  22. package/dist/{flow-builder-B1lYLhaZ.js → flow-builder-sG8ZsMYV.js} +22 -22
  23. package/dist/history.js +1 -1
  24. package/dist/{index-jasafG72.d.ts → index-FrgTpWov.d.ts} +41 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +24 -24
  27. package/dist/{node-detail-view-Bdx_RBP0.js → node-detail-view-pyTakx4l.js} +6 -6
  28. package/dist/{node-endpoint-configs-BTQbqjEI.js → node-endpoint-configs-DXCKkK_9.js} +314 -1
  29. package/dist/nodes.js +1 -1
  30. package/dist/observability.d.ts +1 -1
  31. package/dist/observability.js +1 -1
  32. package/dist/{quick-config-panel-DzcqZ44_.js → quick-config-panel-Zpsh2brj.js} +2 -2
  33. package/dist/settings.js +1 -1
  34. package/dist/templates.js +1 -1
  35. package/dist/{useAgentDefinitions-BNTXO1c-.js → useAgentDefinitions-Czl2aHJb.js} +1 -1
  36. package/dist/{useExecutions-DYcTJTZ7.js → useExecutions-CZuOL3RI.js} +2 -2
  37. package/dist/{useObservability-elkf_jwE.js → useObservability-D402nqXD.js} +2 -2
  38. package/dist/{useRunHistory-DfIj1Akd.js → useRunHistory-CsXQohcH.js} +2 -2
  39. package/dist/{useWorkflows-CwYurzxn.js → useWorkflows-UyKrrkX-.js} +2 -2
  40. package/dist/workflow-builder.js +2 -2
  41. package/dist/workflows-list.js +1 -1
  42. package/package.json +1 -1
@@ -1,20 +1,20 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { $ as DurableParityRunFieldsDocument, $n as UpdateTaskQueueDocument, Ai as describeOperationError, B as DeleteTaskQueueDocument, Cn as SetWorkerTokenConnectionAllowlistDocument, D as CreateWorkerTokenDocument, E as CreateTaskQueueDocument, Hr as WorkflowRunMetadataDocument, Ji as useExecutionsStore, Kr as WorkflowRunsCountDocument, Li as getFluidGridsConfig, Ln as TaskQueueStatsDocument, Ni as throwIfResultError, Rn as TaskQueuesDocument, Tn as SetWorkflowRunVersioningOverrideDocument, Ur as WorkflowRunPendingDocument, V as DeleteWorkerTokenDocument, an as RotateWorkerTokenDocument, gn as RunLogsDocument, mn as RunLogAppendedDocument, mr as WorkflowBatchOperationUpdatedDocument, on as RunAiUsageDocument, pi as WorkflowWorkersDocument, sr as WorkerTokensDocument, st as ExplainRunDocument, vi as getFluidGridsClient, yi as getFluidGridsClientSafe } from "./node-endpoint-configs-BTQbqjEI.js";
4
- import { $t as runDurationMs, Hn as useDurableFunctionNodesEnabled, Pn as runSignalTargets, Qt as nodeStateDurationMs, Un as useDurableParityEnabled, Yn as useWorkflowTestsEnabled, Zt as formatElapsedMs, jn as durableInterfaceOf, kn as canSignalRun, qn as usePhaseCFlags } from "./FluidGridsProvider-BafQs01c.js";
3
+ import { $ as DurableParityRunFieldsDocument, $n as UpdateTaskQueueDocument, B as DeleteTaskQueueDocument, Br as WorkflowRunHierarchyDocument, Cn as SetWorkerTokenConnectionAllowlistDocument, D as CreateWorkerTokenDocument, E as CreateTaskQueueDocument, Ln as TaskQueueStatsDocument, Pi as throwIfResultError, Ri as getFluidGridsConfig, Rn as TaskQueuesDocument, Tn as SetWorkflowRunVersioningOverrideDocument, Ur as WorkflowRunMetadataDocument, V as DeleteWorkerTokenDocument, Wr as WorkflowRunPendingDocument, Yi as useExecutionsStore, an as RotateWorkerTokenDocument, bi as getFluidGridsClientSafe, gn as RunLogsDocument, ji as describeOperationError, mi as WorkflowWorkersDocument, mn as RunLogAppendedDocument, mr as WorkflowBatchOperationUpdatedDocument, on as RunAiUsageDocument, qr as WorkflowRunsCountDocument, sr as WorkerTokensDocument, st as ExplainRunDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
4
+ import { $t as runDurationMs, Hn as useDurableFunctionNodesEnabled, Pn as runSignalTargets, Qt as nodeStateDurationMs, Un as useDurableParityEnabled, Yn as useWorkflowTestsEnabled, Zt as formatElapsedMs, jn as durableInterfaceOf, kn as canSignalRun, qn as usePhaseCFlags } from "./FluidGridsProvider-CraUhM4E.js";
5
5
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
6
- import { h as useWorkflowDefinitions, v as useWorkflowVersions } from "./useWorkflows-CwYurzxn.js";
6
+ import { h as useWorkflowDefinitions, v as useWorkflowVersions } from "./useWorkflows-UyKrrkX-.js";
7
7
  import { KF as WorkflowUpdateWaitFor, OF as WorkflowQueryRejectCondition, Qu as ErrorType, dF as WorkflowBatchOperationType, fI as useFluidGridsPermission, kF as WorkflowResetType, lI as SdkPermissionButton, oI as FLUIDGRIDS_PERMISSIONS, pP as VersioningBehavior } from "./graphql-types-CulUbQWN.js";
8
- import { _ as statusCountFilter, c as OPERATORS_BY_TYPE, d as STATUS_COUNT_GROUP_BY, f as callbackTone, g as shortRunId, h as runChainLinks, i as useExecutionStats, l as buildSearchAttributeFilter, m as parseMetadataDefinition, n as useExecution, o as useExecutionsWithStore, p as overrideRequestOf, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, v as statusCountsOf, y as validateDateRange } from "./useExecutions-DYcTJTZ7.js";
8
+ import { _ as statusCountFilter, c as OPERATORS_BY_TYPE, d as STATUS_COUNT_GROUP_BY, f as callbackTone, g as shortRunId, h as runChainLinks, i as useExecutionStats, l as buildSearchAttributeFilter, m as parseMetadataDefinition, n as useExecution, o as useExecutionsWithStore, p as overrideRequestOf, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, v as statusCountsOf, y as validateDateRange } from "./useExecutions-CZuOL3RI.js";
9
9
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
10
10
  import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
11
11
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-iRiufGc2.js";
12
- import { $ as startBatchTerminate, A as fetchBatchOperation, B as jsonArg, F as fetchRunControlFields, G as resetRun, I as fetchRunHistoryArchive, K as resetRunToLastCleanTask, L as fetchRunUpdate, N as fetchCodecServerSettings, O as failActivityById, P as fetchPauseRules, Q as startBatchOperation, R as fetchSearchAttributes, U as queryRun, V as pauseActivities, W as resetActivities, X as sendRunUpdate, Z as startBatchExport, _ as useResource, at as readTyped, c as FieldError, d as NativeSelect, f as RUN_CONTROL_DIALOG_STYLE, g as parseJsonObjectInput, h as parseJsonInput, it as upsertRunSearchAttributes, j as fetchBatchOperations, l as JsonBlock, m as newRunControlId, ot as writeTyped, p as StatusPill, q as revokeSignalToken, rt as updateActivityOptions, s as isAgentNodeType, tt as unpauseActivities, u as JsonField, w as createSignalToken, x as completeActivityById, y as cancelBatchOperation, z as fetchSignalTokens } from "./agent-form-BODEyu51.js";
13
- import { C as useAvailableTags, _ as buildNodeDisplayMap, b as EntityTagPicker, n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard, v as formatRunVersion, y as nodeDisplayTitle } from "./WorkflowProposalCard-CrKxIjtm.js";
12
+ import { $ as startBatchTerminate, A as fetchBatchOperation, B as jsonArg, F as fetchRunControlFields, G as resetRun, I as fetchRunHistoryArchive, K as resetRunToLastCleanTask, L as fetchRunUpdate, N as fetchCodecServerSettings, O as failActivityById, P as fetchPauseRules, Q as startBatchOperation, R as fetchSearchAttributes, U as queryRun, V as pauseActivities, W as resetActivities, X as sendRunUpdate, Z as startBatchExport, _ as useResource, at as readTyped, c as FieldError, d as NativeSelect, f as RUN_CONTROL_DIALOG_STYLE, g as parseJsonObjectInput, h as parseJsonInput, it as upsertRunSearchAttributes, j as fetchBatchOperations, l as JsonBlock, m as newRunControlId, ot as writeTyped, p as StatusPill, q as revokeSignalToken, rt as updateActivityOptions, s as isAgentNodeType, tt as unpauseActivities, u as JsonField, w as createSignalToken, x as completeActivityById, y as cancelBatchOperation, z as fetchSignalTokens } from "./agent-form-Ci_vxQF5.js";
13
+ import { C as useAvailableTags, _ as buildNodeDisplayMap, b as EntityTagPicker, n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard, v as formatRunVersion, y as nodeDisplayTitle } from "./WorkflowProposalCard-CV4kV4_Z.js";
14
14
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
15
- 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-DnA0YvMv.js";
16
- import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-D5zBlA9e.js";
17
- import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-DfIj1Akd.js";
15
+ 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-Cm4GXmJ9.js";
16
+ import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-BJoO3lsL.js";
17
+ import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-CsXQohcH.js";
18
18
  import { a as formatTokens, o as modelLabel, r as aiCost } from "./ai-usage-CK61EZWc.js";
19
19
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
20
20
  import { Link, useNavigate, useParams, useSearchParams } from "react-router";
@@ -4160,6 +4160,232 @@ function useRunLogs(runId, options = {}) {
4160
4160
  };
4161
4161
  }
4162
4162
 
4163
+ // src/modules/executions/utils/run-hierarchy.ts
4164
+ function labelOf(run) {
4165
+ const name = run.workflow?.name?.trim();
4166
+ return {
4167
+ id: run.id,
4168
+ name: name || run.workflowKey,
4169
+ status: run.status,
4170
+ createdAt: run.createdAt,
4171
+ startedAt: run.startedAt ?? null,
4172
+ completedAt: run.completedAt ?? null
4173
+ };
4174
+ }
4175
+ /**
4176
+ * The breadcrumb and child runs of `runId` in `hierarchy`. Null when there is
4177
+ * no tree, or the run is not in it (the service always keeps the requested run,
4178
+ * so that only happens for a tree read for another run).
4179
+ */
4180
+ function runHierarchyView(hierarchy, runId) {
4181
+ if (!hierarchy) return null;
4182
+ const runs = /* @__PURE__ */ new Map([[hierarchy.root.id, hierarchy.root]]);
4183
+ for (const entry of hierarchy.descendants) runs.set(entry.run.id, entry.run);
4184
+ const current = runs.get(runId);
4185
+ if (!current) return null;
4186
+ const ancestors = [];
4187
+ const visited = /* @__PURE__ */ new Set([runId]);
4188
+ let parentId = current.id === hierarchy.root.id ? null : current.parentRunId;
4189
+ while (parentId && !visited.has(parentId)) {
4190
+ const parent = runs.get(parentId);
4191
+ if (!parent) break;
4192
+ visited.add(parentId);
4193
+ ancestors.unshift(labelOf(parent));
4194
+ parentId = parent.id === hierarchy.root.id ? null : parent.parentRunId;
4195
+ }
4196
+ return {
4197
+ ancestors,
4198
+ children: hierarchy.descendants.filter((entry) => entry.run.parentRunId === runId).map((entry) => ({
4199
+ ...labelOf(entry.run),
4200
+ parentNodeId: entry.parentNodeId ?? null
4201
+ })),
4202
+ truncated: hierarchy.truncated
4203
+ };
4204
+ }
4205
+
4206
+ // src/modules/executions/hooks/useRunHierarchy.ts
4207
+ /**
4208
+ * useRunHierarchy — the call tree a run belongs to (`workflowRunHierarchy`,
4209
+ * BOFF-9974), for the run page's breadcrumb and "Child runs" list.
4210
+ *
4211
+ * A plain network read (never the Apollo cache). While `live` (the run can
4212
+ * still start sub-workflows) it is re-read every
4213
+ * {@link RUN_HIERARCHY_POLL_INTERVAL_MS}; a finished run's tree is read once.
4214
+ * A failed read leaves the page on its own parent link: the tree is extra
4215
+ * context, never a reason to show an error.
4216
+ */
4217
+ /** Re-read cadence while the run can still start child runs. */
4218
+ const RUN_HIERARCHY_POLL_INTERVAL_MS = 5e3;
4219
+ async function fetchRunHierarchy(runId) {
4220
+ const result = await getFluidGridsClient().query({
4221
+ query: WorkflowRunHierarchyDocument,
4222
+ variables: { runId },
4223
+ fetchPolicy: "network-only"
4224
+ });
4225
+ throwIfResultError(result);
4226
+ return result.data?.workflowRunHierarchy ?? null;
4227
+ }
4228
+ function useRunHierarchy(runId, { live }) {
4229
+ const [settled, setSettled] = useState(null);
4230
+ const request = useRef(0);
4231
+ const read = useCallback(async () => {
4232
+ if (!runId) return;
4233
+ const id = ++request.current;
4234
+ let view;
4235
+ try {
4236
+ view = runHierarchyView(await fetchRunHierarchy(runId), runId);
4237
+ } catch {
4238
+ view = void 0;
4239
+ }
4240
+ if (id !== request.current) return;
4241
+ setSettled((previous) => {
4242
+ const kept = previous?.runId === runId ? previous.view : null;
4243
+ return {
4244
+ runId,
4245
+ view: view === void 0 ? kept : view
4246
+ };
4247
+ });
4248
+ }, [runId]);
4249
+ useEffect(() => {
4250
+ read();
4251
+ }, [read]);
4252
+ useEffect(() => {
4253
+ if (!live) return;
4254
+ const timer = setInterval(() => void read(), RUN_HIERARCHY_POLL_INTERVAL_MS);
4255
+ return () => clearInterval(timer);
4256
+ }, [live, read]);
4257
+ return settled && settled.runId === runId ? settled.view : null;
4258
+ }
4259
+
4260
+ // src/modules/executions/components/RunHierarchy.tsx
4261
+ /**
4262
+ * Run detail: where the run sits in its call tree (BOFF-9974).
4263
+ *
4264
+ * `RunCallPath` is the breadcrumb above the run's title: the root run, every
4265
+ * run between it and this one, then this run, each linking to its run page.
4266
+ * `ChildRunsPanel` lists the runs this run started (Sub-workflow and AI Agent
4267
+ * workflow-tool calls), with the node that started each. Both render nothing
4268
+ * for a run that has neither a parent nor children.
4269
+ */
4270
+ const runPath = (runId) => `../runs/${encodeURIComponent(runId)}`;
4271
+ function RunCallPath({ view, parentRunId }) {
4272
+ const tr = useTr();
4273
+ const ancestors = view?.ancestors ?? [];
4274
+ if (ancestors.length === 0 && !parentRunId) return null;
4275
+ return /* @__PURE__ */ jsxs("nav", {
4276
+ className: "mb-3 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm",
4277
+ "aria-label": tr("fluidgrids.executions.hierarchy.callPathLabel", "Call path"),
4278
+ "data-testid": "run-call-path",
4279
+ children: [
4280
+ /* @__PURE__ */ jsx(Icon, {
4281
+ icon: "mdi:sitemap",
4282
+ className: "text-chart-12",
4283
+ width: 16
4284
+ }),
4285
+ /* @__PURE__ */ jsx("span", {
4286
+ className: "text-text-secondary",
4287
+ children: tr("fluidgrids.executions.executionDetail.subWorkflowOf", "Sub-workflow of")
4288
+ }),
4289
+ ancestors.length > 0 ? /* @__PURE__ */ jsx("ol", {
4290
+ className: "flex min-w-0 flex-wrap items-center gap-x-1 gap-y-1",
4291
+ children: ancestors.map((run, index) => /* @__PURE__ */ jsxs("li", {
4292
+ className: "flex min-w-0 items-center gap-1",
4293
+ children: [index > 0 && /* @__PURE__ */ jsx(Icon, {
4294
+ icon: "mdi:chevron-right",
4295
+ className: "text-text-tertiary",
4296
+ width: 14,
4297
+ "aria-hidden": true
4298
+ }), /* @__PURE__ */ jsx(Link, {
4299
+ to: runPath(run.id),
4300
+ className: "max-w-[16rem] truncate font-medium text-chart-12 hover:underline",
4301
+ title: run.id,
4302
+ "data-testid": "run-call-path-link",
4303
+ children: run.name
4304
+ })]
4305
+ }, run.id))
4306
+ }) : parentRunId && /* @__PURE__ */ jsxs(Link, {
4307
+ to: runPath(parentRunId),
4308
+ className: "font-medium text-chart-12 hover:underline",
4309
+ "data-testid": "run-call-path-link",
4310
+ children: [
4311
+ tr("fluidgrids.executions.executionDetail.parentRunLinkPrefix", "Parent Run"),
4312
+ " ",
4313
+ parentRunId.slice(0, 12),
4314
+ "..."
4315
+ ]
4316
+ })
4317
+ ]
4318
+ });
4319
+ }
4320
+ function ChildRunsPanel({ view, nodeDisplay, formatDateTime }) {
4321
+ const tr = useTr();
4322
+ const children = view?.children ?? [];
4323
+ if (children.length === 0) return null;
4324
+ return /* @__PURE__ */ jsxs("section", {
4325
+ className: "mb-6 rounded-lg border border-border-secondary bg-background-secondary p-4",
4326
+ "aria-labelledby": "run-child-runs-heading",
4327
+ "data-testid": "run-child-runs",
4328
+ children: [
4329
+ /* @__PURE__ */ jsxs("div", {
4330
+ className: "flex items-center gap-2 text-sm font-medium text-text-primary",
4331
+ children: [
4332
+ /* @__PURE__ */ jsx(Icon, {
4333
+ icon: "mdi:source-branch",
4334
+ width: 18
4335
+ }),
4336
+ /* @__PURE__ */ jsx("h2", {
4337
+ id: "run-child-runs-heading",
4338
+ children: tr("fluidgrids.executions.hierarchy.childRunsTitle", "Child runs")
4339
+ }),
4340
+ /* @__PURE__ */ jsx("span", {
4341
+ className: "rounded-full bg-background-tertiary px-2 py-0.5 text-xs text-text-secondary",
4342
+ children: children.length.toLocaleString()
4343
+ })
4344
+ ]
4345
+ }),
4346
+ view?.truncated && /* @__PURE__ */ jsx("p", {
4347
+ className: "mt-2 text-xs text-text-secondary",
4348
+ children: tr("fluidgrids.executions.hierarchy.truncated", "This call tree has more runs than can be listed here, so some child runs may be missing.")
4349
+ }),
4350
+ /* @__PURE__ */ jsx("ul", {
4351
+ className: "mt-3 divide-y divide-border-secondary",
4352
+ children: children.map((child) => {
4353
+ const node = child.parentNodeId ? nodeDisplay[child.parentNodeId]?.label ?? child.parentNodeId : null;
4354
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(Link, {
4355
+ to: runPath(child.id),
4356
+ className: "flex flex-col gap-1 py-2 hover:bg-background-tertiary sm:flex-row sm:items-center sm:gap-3",
4357
+ "data-testid": "run-child-run",
4358
+ children: [
4359
+ /* @__PURE__ */ jsx(ExecutionStatusBadge, {
4360
+ status: child.status,
4361
+ size: "sm"
4362
+ }),
4363
+ /* @__PURE__ */ jsxs("span", {
4364
+ className: "min-w-0 flex-1",
4365
+ children: [/* @__PURE__ */ jsx("span", {
4366
+ className: "block truncate text-sm font-medium text-text-link",
4367
+ children: child.name
4368
+ }), node && /* @__PURE__ */ jsx("span", {
4369
+ className: "block truncate text-xs text-text-secondary",
4370
+ children: tr("fluidgrids.executions.hierarchy.startedByNode", "Started by {{node}}", { node })
4371
+ })]
4372
+ }),
4373
+ /* @__PURE__ */ jsx("span", {
4374
+ className: "text-xs text-text-secondary",
4375
+ children: formatDateTime(child.startedAt ?? child.createdAt)
4376
+ }),
4377
+ /* @__PURE__ */ jsx("span", {
4378
+ className: "w-16 text-xs text-text-secondary sm:text-right",
4379
+ children: formatElapsedMs(runDurationMs(child))
4380
+ })
4381
+ ]
4382
+ }) }, child.id);
4383
+ })
4384
+ })
4385
+ ]
4386
+ });
4387
+ }
4388
+
4163
4389
  // src/modules/human-response/utils/recipient.ts
4164
4390
  /**
4165
4391
  * Who an ask went to, for display (BOFF-7651). An in-app ask stores its responders as user ids
@@ -8795,6 +9021,7 @@ function ExecutionDetailPage() {
8795
9021
  useAutoRefresh(useCallback(() => {
8796
9022
  refetch();
8797
9023
  }, [refetch]), autoRefreshEnabled && isActive, 2e3);
9024
+ const hierarchy = useRunHierarchy(runId, { live: isActive });
8798
9025
  const runLogs = useRunLogs(runId, {
8799
9026
  live: isActive,
8800
9027
  minLevel: minLogLevel
@@ -9040,29 +9267,9 @@ function ExecutionDetailPage() {
9040
9267
  tr("fluidgrids.executions.executionDetail.backToExecutions", "Back to Executions")
9041
9268
  ]
9042
9269
  }),
9043
- execution.parentRunId && /* @__PURE__ */ jsxs("div", {
9044
- className: "flex items-center gap-2 mb-3 text-sm",
9045
- children: [
9046
- /* @__PURE__ */ jsx(Icon, {
9047
- icon: "mdi:sitemap",
9048
- className: "text-chart-12",
9049
- width: 16
9050
- }),
9051
- /* @__PURE__ */ jsx("span", {
9052
- className: "text-text-secondary",
9053
- children: tr("fluidgrids.executions.executionDetail.subWorkflowOf", "Sub-workflow of")
9054
- }),
9055
- /* @__PURE__ */ jsxs(Link, {
9056
- to: `../runs/${execution.parentRunId}`,
9057
- className: "text-chart-12 hover:underline font-medium",
9058
- children: [
9059
- tr("fluidgrids.executions.executionDetail.parentRunLinkPrefix", "Parent Run"),
9060
- " ",
9061
- execution.parentRunId.slice(0, 12),
9062
- "..."
9063
- ]
9064
- })
9065
- ]
9270
+ /* @__PURE__ */ jsx(RunCallPath, {
9271
+ view: hierarchy,
9272
+ parentRunId: execution.parentRunId
9066
9273
  }),
9067
9274
  /* @__PURE__ */ jsxs("div", {
9068
9275
  className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-4 mb-6",
@@ -9413,6 +9620,11 @@ function ExecutionDetailPage() {
9413
9620
  }),
9414
9621
  /* @__PURE__ */ jsx(RunDataPrunedNotice, { dataPrunedAt: execution.dataPrunedAt }),
9415
9622
  /* @__PURE__ */ jsx(RunBudgetPanel, { budget: execution.budget }),
9623
+ /* @__PURE__ */ jsx(ChildRunsPanel, {
9624
+ view: hierarchy,
9625
+ nodeDisplay,
9626
+ formatDateTime
9627
+ }),
9416
9628
  /* @__PURE__ */ jsx(RunHumanRequests, { requests: humanRequests }),
9417
9629
  /* @__PURE__ */ jsx(RunPolicyDecisions, {
9418
9630
  decisions: policyDecisions,
@@ -9697,7 +9909,7 @@ function ExecutionDetailPage() {
9697
9909
  className: "text-text-secondary",
9698
9910
  children: tr("fluidgrids.executions.executionDetail.parentRunRow", "Parent Run")
9699
9911
  }), /* @__PURE__ */ jsxs(Link, {
9700
- to: `/runs/${execution.parentRunId}`,
9912
+ to: `../runs/${execution.parentRunId}`,
9701
9913
  className: "text-text-link hover:text-text-linkHover hover:underline font-mono",
9702
9914
  children: [execution.parentRunId.slice(0, 12), "..."]
9703
9915
  })]
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
3
- import { Ni as throwIfResultError, Sn as SetRunFailureTriageEnabledDocument, X as DismissRunFailureClusterDocument, dn as RunFailureTriageSettingsDocument, dt as FgTriageFailedRunsDocument, un as RunFailureClustersDocument, vi as getFluidGridsClient } from "./node-endpoint-configs-BTQbqjEI.js";
3
+ import { Pi as throwIfResultError, Sn as SetRunFailureTriageEnabledDocument, X as DismissRunFailureClusterDocument, dn as RunFailureTriageSettingsDocument, dt as FgTriageFailedRunsDocument, un as RunFailureClustersDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
4
4
  import { cD as RunFailureClusterStatus } from "./graphql-types-CulUbQWN.js";
5
5
  import { useCallback, useEffect, useState } from "react";
6
6
  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 { Ai as describeOperationError, Bi as resetFluidGridsExecutionState, Ci as waitForFluidGridsClient, Di as emitFluidGridsEvent, F as CreateWorkflowVersionDocument, Hi as validateTrustedOrigin, Li as getFluidGridsConfig, Ni as throwIfResultError, O as CreateWorkflowDefinitionDocument, Oi as emitOperationErrorEvent, Pi as createLiveTokenReader, Rr as WorkflowRunDocument, Si as setFluidGridsClient, Tt as NodeManifestDocument, Vi as setFluidGridsConfig, Vn as TriggerWorkflowDocument, _i as createFluidGridsClient, er as UpdateWorkflowDefinitionDocument, fn as RunFromNodeDocument, ki as emitRunCompletedOnce, nt as ExecuteStepDocument, rt as ExecutionDetailDocument, t as fetchAllNodeEndpointConfigs, tt as EventRegistrationsDocument, vi as getFluidGridsClient, wi as createFluidGridsTokenRefreshLink, xi as resetFluidGridsClient, yi as getFluidGridsClientSafe, yr as WorkflowDefinitionDocument, zi as resetFluidGridsConfig } from "./node-endpoint-configs-BTQbqjEI.js";
3
+ import { Ai as emitRunCompletedOnce, Bi as resetFluidGridsConfig, Ci as setFluidGridsClient, F as CreateWorkflowVersionDocument, Fi as createLiveTokenReader, Hi as setFluidGridsConfig, O as CreateWorkflowDefinitionDocument, Oi as emitFluidGridsEvent, Pi as throwIfResultError, Ri as getFluidGridsConfig, Rr as WorkflowRunDocument, Si as resetFluidGridsClient, Ti as createFluidGridsTokenRefreshLink, Tt as NodeManifestDocument, Ui as validateTrustedOrigin, Vi as resetFluidGridsExecutionState, Vn as TriggerWorkflowDocument, bi as getFluidGridsClientSafe, er as UpdateWorkflowDefinitionDocument, fn as RunFromNodeDocument, ji as describeOperationError, ki as emitOperationErrorEvent, nt as ExecuteStepDocument, rt as ExecutionDetailDocument, t as fetchAllNodeEndpointConfigs, tt as EventRegistrationsDocument, vi as createFluidGridsClient, wi as waitForFluidGridsClient, yi as getFluidGridsClient, yr as WorkflowDefinitionDocument } from "./node-endpoint-configs-DXCKkK_9.js";
4
4
  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-61d6U9qo.js";
5
5
  import { n as FluidGridsTranslationProvider, r as useTr, t as ENGLISH_FALLBACK_TRANSLATOR } from "./TranslationBridge-CX0OMnyn.js";
6
6
  import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-CwYurzxn.js";
3
- import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-CG1tfcfU.js";
2
+ import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-UyKrrkX-.js";
3
+ import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-CLgIj_jc.js";
4
4
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
5
- import { Li as getFluidGridsConfig } from "./node-endpoint-configs-BTQbqjEI.js";
5
+ import { Ri as getFluidGridsConfig } from "./node-endpoint-configs-DXCKkK_9.js";
6
6
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
7
7
  import { n as historyControls } from "./pageControlSpecs-DZJ9K37m.js";
8
8
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-iRiufGc2.js";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { At as OptimisationSuggestionsDocument, Fr as WorkflowProposalDocument, Lt as ProposeOptimisationDocument, Ni as throwIfResultError, On as SnoozeOptimisationSuggestionDocument, S as ContinuousOptimisationSettingsDocument, Y as DismissOptimisationSuggestionDocument, mi as WorkspaceAiUsageDocument, ut as FgRunOptimisationScanDocument, vi as getFluidGridsClient, xn as SetContinuousOptimisationEnabledDocument } from "./node-endpoint-configs-BTQbqjEI.js";
3
- import { Vn as useContinuousOptimisationEnabled } from "./FluidGridsProvider-BafQs01c.js";
2
+ import { At as OptimisationSuggestionsDocument, Fr as WorkflowProposalDocument, Lt as ProposeOptimisationDocument, On as SnoozeOptimisationSuggestionDocument, Pi as throwIfResultError, S as ContinuousOptimisationSettingsDocument, Y as DismissOptimisationSuggestionDocument, hi as WorkspaceAiUsageDocument, ut as FgRunOptimisationScanDocument, xn as SetContinuousOptimisationEnabledDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
3
+ import { Vn as useContinuousOptimisationEnabled } from "./FluidGridsProvider-CraUhM4E.js";
4
4
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
5
5
  import { BC as OptimisationSuggestionStatus, RC as OptimisationDismissReason, fI as useFluidGridsPermission, lI as SdkPermissionButton, oI as FLUIDGRIDS_PERMISSIONS, zC as OptimisationKind } from "./graphql-types-CulUbQWN.js";
6
6
  import { t as proposalCanvasPath } from "./useRequestedProposal-B7uPXfZB.js";
7
- import { n as FailureTriagePanel } from "./FailureTriagePanel-D5zBlA9e.js";
7
+ import { n as FailureTriagePanel } from "./FailureTriagePanel-BJoO3lsL.js";
8
8
  import { a as formatTokens, c as DISMISS_REASONS, d as monthlySavingLabel, f as shortRunId, i as aiSpendPeriod, l as evidenceFacts, r as aiCost, s as runsOfWorkflowPath, t as AI_SPEND_RANGE_DAYS, u as evidenceWindowDays } from "./ai-usage-CK61EZWc.js";
9
- import { n as useDataSinks, o as useRunReplayActions, r as useInsightsData, t as useDataSinkData } from "./useObservability-elkf_jwE.js";
9
+ import { n as useDataSinks, o as useRunReplayActions, r as useInsightsData, t as useDataSinkData } from "./useObservability-D402nqXD.js";
10
10
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
11
11
  import { Link, useNavigate } from "react-router";
12
12
  import { Icon } from "@iconify/react";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
- import { Ai as describeOperationError, Li as getFluidGridsConfig, Ni as throwIfResultError, Q as DurableHistoryCapsDocument, Qn as UpdateManagedAiWorkspacePolicyDocument, Zn as UpdateDurableHistoryCapsDocument, vi as getFluidGridsClient, xt as ManagedAiWorkspacePolicyDocument } from "./node-endpoint-configs-BTQbqjEI.js";
3
- import { In as FLUIDGRIDS_FLAGS, Kt as findSaveConflict, Un as useDurableParityEnabled, Wn as useFluidGridsFlag, or as getGlobalStoreClient, qn as usePhaseCFlags, wt as useSaveStatusStore } from "./FluidGridsProvider-BafQs01c.js";
2
+ import { Pi as throwIfResultError, Q as DurableHistoryCapsDocument, Qn as UpdateManagedAiWorkspacePolicyDocument, Ri as getFluidGridsConfig, Zn as UpdateDurableHistoryCapsDocument, ji as describeOperationError, xt as ManagedAiWorkspacePolicyDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
3
+ import { In as FLUIDGRIDS_FLAGS, Kt as findSaveConflict, Un as useDurableParityEnabled, Wn as useFluidGridsFlag, or as getGlobalStoreClient, qn as usePhaseCFlags, wt as useSaveStatusStore } from "./FluidGridsProvider-CraUhM4E.js";
4
4
  import { H as useFlowStore } from "./node-operation-selection-61d6U9qo.js";
5
5
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
6
- import { Wt as useWorkflowDefinitionQuery, a as useConnections, n as useAgentDefinitions, qt as useWorkflowDefinitionsQuery, zt as useUpdateWorkflowDefinitionMutation } from "./useAgentDefinitions-BNTXO1c-.js";
6
+ import { Wt as useWorkflowDefinitionQuery, a as useConnections, n as useAgentDefinitions, qt as useWorkflowDefinitionsQuery, zt as useUpdateWorkflowDefinitionMutation } from "./useAgentDefinitions-Czl2aHJb.js";
7
7
  import { LF as WorkflowSearchAttributeType, fI as useFluidGridsPermission, oI as FLUIDGRIDS_PERMISSIONS } from "./graphql-types-CulUbQWN.js";
8
8
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-iRiufGc2.js";
9
- import { C as createSearchAttribute, E as deleteSearchAttribute, J as saveArchiveSettings, N as fetchCodecServerSettings, P as fetchPauseRules, R as fetchSearchAttributes, S as createPauseRule, T as deletePauseRule, Y as saveCodecServerSettings, _ as useResource, a as formToInput$2, b as clearArchiveSettings, c as FieldError, d as NativeSelect, i as emptyAgentForm, k as fetchArchiveSettings, n as agentToForm, o as grantDays, p as StatusPill, r as describeRule, t as AgentFormError } from "./agent-form-BODEyu51.js";
10
- 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-DnA0YvMv.js";
11
- import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-elkf_jwE.js";
9
+ import { C as createSearchAttribute, E as deleteSearchAttribute, J as saveArchiveSettings, N as fetchCodecServerSettings, P as fetchPauseRules, R as fetchSearchAttributes, S as createPauseRule, T as deletePauseRule, Y as saveCodecServerSettings, _ as useResource, a as formToInput$2, b as clearArchiveSettings, c as FieldError, d as NativeSelect, i as emptyAgentForm, k as fetchArchiveSettings, n as agentToForm, o as grantDays, p as StatusPill, r as describeRule, t as AgentFormError } from "./agent-form-Ci_vxQF5.js";
10
+ 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-Cm4GXmJ9.js";
11
+ import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-D402nqXD.js";
12
12
  import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
13
13
  import { useNavigate, useParams } from "react-router";
14
14
  import { Icon } from "@iconify/react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { A as DialogTitle, D as DialogHeader, E as DialogFooter, S as Dialog, T as DialogDescription, b as Badge, w as DialogContent } from "./flow-builder-B1lYLhaZ.js";
3
- import { i as Button } from "./PublishCustomNodeAction-0xEFoBxJ.js";
2
+ import { A as DialogTitle, D as DialogHeader, E as DialogFooter, S as Dialog, T as DialogDescription, b as Badge, w as DialogContent } from "./flow-builder-sG8ZsMYV.js";
3
+ import { i as Button } from "./PublishCustomNodeAction-C6qkAIjG.js";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { AlertTriangle, CheckCircle2, Download, ExternalLink, Loader2, Puzzle, ShoppingCart } from "lucide-react";
6
6
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { Ct as NodeEndpointConfigDocument, Tt as NodeManifestDocument, t as fetchAllNodeEndpointConfigs, vi as getFluidGridsClient, wt as NodeEndpointConfigsDocument } from "./node-endpoint-configs-BTQbqjEI.js";
2
+ import { Ct as NodeEndpointConfigDocument, Tt as NodeManifestDocument, t as fetchAllNodeEndpointConfigs, wt as NodeEndpointConfigsDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
3
3
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
4
- import { t as PublishCustomNodeAction } from "./PublishCustomNodeAction-0xEFoBxJ.js";
4
+ import { t as PublishCustomNodeAction } from "./PublishCustomNodeAction-C6qkAIjG.js";
5
5
  import { useCallback, useEffect, useMemo, useState } from "react";
6
6
  import { useNavigate } from "react-router";
7
7
  import { Icon } from "@iconify/react";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Li as getFluidGridsConfig } from "./node-endpoint-configs-BTQbqjEI.js";
2
+ import { Ri as getFluidGridsConfig } from "./node-endpoint-configs-DXCKkK_9.js";
3
3
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
4
4
  import { t as cn } from "./cn-QqidFIgr.js";
5
5
  import "react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { A as DialogTitle, D as DialogHeader, E as DialogFooter, S as Dialog, T as DialogDescription, b as Badge, ht as Input, w as DialogContent } from "./flow-builder-B1lYLhaZ.js";
3
- import { i as Button } from "./PublishCustomNodeAction-0xEFoBxJ.js";
2
+ import { A as DialogTitle, D as DialogHeader, E as DialogFooter, S as Dialog, T as DialogDescription, b as Badge, ht as Input, w as DialogContent } from "./flow-builder-sG8ZsMYV.js";
3
+ import { i as Button } from "./PublishCustomNodeAction-C6qkAIjG.js";
4
4
  import { t as Label } from "./label-CDy86rIZ.js";
5
5
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
6
6
  import { useEffect, useMemo, useState } from "react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { i as Button } from "./PublishCustomNodeAction-0xEFoBxJ.js";
3
- import { b as Badge, y as templatePreview } from "./flow-builder-B1lYLhaZ.js";
2
+ import { i as Button } from "./PublishCustomNodeAction-C6qkAIjG.js";
3
+ import { b as Badge, y as templatePreview } from "./flow-builder-sG8ZsMYV.js";
4
4
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
5
5
  import { lI as SdkPermissionButton, oI as FLUIDGRIDS_PERMISSIONS } from "./graphql-types-CulUbQWN.js";
6
6
  import { Icon } from "@iconify/react";
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { Ai as describeOperationError, Li as getFluidGridsConfig, Ni as throwIfResultError, vi as getFluidGridsClient } from "./node-endpoint-configs-BTQbqjEI.js";
3
- import { C as MyWorkflowTemplateSubmissionsDocument, O as WithdrawWorkflowTemplateSubmissionDocument, S as InstallWorkflowNodeDocument, T as SubmitWorkflowTemplateDocument, fn as emitTemplateUsed, mn as emitWorkflowCreated, on as useFluidGridsAnalytics, t as FluidGridsContext, wn as isQuotaExhaustedFailure, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-BafQs01c.js";
2
+ import { Pi as throwIfResultError, Ri as getFluidGridsConfig, ji as describeOperationError, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
3
+ import { C as MyWorkflowTemplateSubmissionsDocument, O as WithdrawWorkflowTemplateSubmissionDocument, S as InstallWorkflowNodeDocument, T as SubmitWorkflowTemplateDocument, fn as emitTemplateUsed, mn as emitWorkflowCreated, on as useFluidGridsAnalytics, t as FluidGridsContext, wn as isQuotaExhaustedFailure, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-CraUhM4E.js";
4
4
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
5
- import { K as useGlobalStoreClient, N as useWorkflowTemplates, P as useInstallNode, t as FlowBuilderPage, v as TemplateCard } from "./flow-builder-B1lYLhaZ.js";
6
- import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-CwYurzxn.js";
7
- import { k as QuotaExhaustedDialog } from "./WorkflowShareDialog-CGWKqXo7.js";
5
+ import { K as useGlobalStoreClient, N as useWorkflowTemplates, P as useInstallNode, t as FlowBuilderPage, v as TemplateCard } from "./flow-builder-sG8ZsMYV.js";
6
+ import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-UyKrrkX-.js";
7
+ import { k as QuotaExhaustedDialog } from "./WorkflowShareDialog-DiD8Gqim.js";
8
8
  import { BF as WorkflowStatus, lI as SdkPermissionButton, oI as FLUIDGRIDS_PERMISSIONS } from "./graphql-types-CulUbQWN.js";
9
9
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
10
10
  import { r as templatesControls } from "./pageControlSpecs-DZJ9K37m.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
3
- import { Ai as describeOperationError, Ni as throwIfResultError, li as WorkflowVersionDiffDocument, vi as getFluidGridsClient, yr as WorkflowDefinitionDocument } from "./node-endpoint-configs-BTQbqjEI.js";
3
+ import { Pi as throwIfResultError, ji as describeOperationError, ui as WorkflowVersionDiffDocument, yi as getFluidGridsClient, yr as WorkflowDefinitionDocument } from "./node-endpoint-configs-DXCKkK_9.js";
4
4
  import { t as canvasFromDefinition } from "./definition-canvas-D9cWIGEM.js";
5
5
  import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
6
6
  import { Background, Controls, Handle, MiniMap, Position, ReactFlow, ReactFlowProvider } from "@xyflow/react";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Fr as WorkflowProposalDocument, L as DataTablesTagsDocument, Li as getFluidGridsConfig, N as CreateWorkflowTestCaseDocument, Ni as throwIfResultError, Nn as TagFluidgridsEntityDocument, P as CreateWorkflowTestCaseFromRunDocument, Rt as ProposeRunFixDocument, T as CreateFluidgridsTagDocument, Wt as RejectWorkflowProposalDocument, Yt as ReplaceFluidgridsEntityTagsDocument, _n as RunWorkflowTestsDocument, ai as WorkflowTestRunDocument, bn as SearchFluidgridsTagsDocument, ii as WorkflowTestCasesDocument, ji as isForbiddenError, l as AvailableFluidgridsTagsDocument, mt as FluidgridsEntityTagsDocument, o as ApplyWorkflowProposalDocument, q as DeleteWorkflowTestCaseDocument, qn as UntagFluidgridsEntityDocument, rr as UpdateWorkflowTestCaseDocument, si as WorkflowTestRunsDocument, vi as getFluidGridsClient, y as CancelWorkflowProposalDocument, zt as ProposeWorkflowChangeDocument } from "./node-endpoint-configs-BTQbqjEI.js";
2
+ import { Fr as WorkflowProposalDocument, L as DataTablesTagsDocument, Mi as isForbiddenError, N as CreateWorkflowTestCaseDocument, Nn as TagFluidgridsEntityDocument, P as CreateWorkflowTestCaseFromRunDocument, Pi as throwIfResultError, Ri as getFluidGridsConfig, Rt as ProposeRunFixDocument, T as CreateFluidgridsTagDocument, Wt as RejectWorkflowProposalDocument, Yt as ReplaceFluidgridsEntityTagsDocument, _n as RunWorkflowTestsDocument, ai as WorkflowTestCasesDocument, bn as SearchFluidgridsTagsDocument, ci as WorkflowTestRunsDocument, l as AvailableFluidgridsTagsDocument, mt as FluidgridsEntityTagsDocument, o as ApplyWorkflowProposalDocument, oi as WorkflowTestRunDocument, q as DeleteWorkflowTestCaseDocument, qn as UntagFluidgridsEntityDocument, rr as UpdateWorkflowTestCaseDocument, y as CancelWorkflowProposalDocument, yi as getFluidGridsClient, zt as ProposeWorkflowChangeDocument } from "./node-endpoint-configs-DXCKkK_9.js";
3
3
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
4
4
  import { GF as WorkflowTestRunStatus, HF as WorkflowTestAssertionOperator, Qu as ErrorType, UF as WorkflowTestExpectedStatus, WF as WorkflowTestRunSource } from "./graphql-types-CulUbQWN.js";
5
5
  import { a as notifyFluidGridsAiCreditsUpdated } from "./aiCreditsBridge-BuE92tKo.js";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { Li as getFluidGridsConfig, Ni as throwIfResultError, vi as getFluidGridsClient, yr as WorkflowDefinitionDocument } from "./node-endpoint-configs-BTQbqjEI.js";
4
- import { Gt as codeBuildIdOf, H as paramsFromOperation, Tn as useCanvasEdges, Vt as rememberRevision, Yt as workflowFingerprint, bt as classifyCreateRefusal, c as ensureNodeConfigsLoaded, d as refetchStoreNodes, f as registerWorkflowNodeTypes, in as resolveNodeOperation, j as createConfiguredNode, n as FluidGridsProvider, o as NODE_CONFIGS, vt as blankWorkflowCreateInput, wt as useSaveStatusStore, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-BafQs01c.js";
3
+ import { Pi as throwIfResultError, Ri as getFluidGridsConfig, yi as getFluidGridsClient, yr as WorkflowDefinitionDocument } from "./node-endpoint-configs-DXCKkK_9.js";
4
+ import { Gt as codeBuildIdOf, H as paramsFromOperation, Tn as useCanvasEdges, Vt as rememberRevision, Yt as workflowFingerprint, bt as classifyCreateRefusal, c as ensureNodeConfigsLoaded, d as refetchStoreNodes, f as registerWorkflowNodeTypes, in as resolveNodeOperation, j as createConfiguredNode, n as FluidGridsProvider, o as NODE_CONFIGS, vt as blankWorkflowCreateInput, wt as useSaveStatusStore, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-CraUhM4E.js";
5
5
  import { F as mergeStickyNotes, H as useFlowStore } from "./node-operation-selection-61d6U9qo.js";
6
6
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
7
- import { F as useInstalledNodes, _ as buildRequiredNodeTypes, ct as FluidGridsMark, f as releaseLeaseKeptForReload, g as buildNodeCheck, ht as Input, lt as Card, p as useWorkflowReloadStore, st as useNodeSelectedEvent, t as FlowBuilderPage } from "./flow-builder-B1lYLhaZ.js";
7
+ import { F as useInstalledNodes, _ as buildRequiredNodeTypes, ct as FluidGridsMark, f as releaseLeaseKeptForReload, g as buildNodeCheck, ht as Input, lt as Card, p as useWorkflowReloadStore, st as useNodeSelectedEvent, t as FlowBuilderPage } from "./flow-builder-sG8ZsMYV.js";
8
8
  import { t as cn } from "./cn-QqidFIgr.js";
9
- import { i as Button } from "./PublishCustomNodeAction-0xEFoBxJ.js";
10
- import { l as useLazyWorkflowDefinition, m as useWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-CwYurzxn.js";
11
- import { O as CreateWorkflowRefusalDialog } from "./WorkflowShareDialog-CGWKqXo7.js";
9
+ import { i as Button } from "./PublishCustomNodeAction-C6qkAIjG.js";
10
+ import { l as useLazyWorkflowDefinition, m as useWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-UyKrrkX-.js";
11
+ import { O as CreateWorkflowRefusalDialog } from "./WorkflowShareDialog-DiD8Gqim.js";
12
12
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
13
13
  import { t as canvasFromDefinition } from "./definition-canvas-D9cWIGEM.js";
14
14
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
@@ -1627,7 +1627,7 @@ function GuidedTourStarter({ ready }) {
1627
1627
  }
1628
1628
 
1629
1629
  // src/builder/app/workflow/work/page.tsx
1630
- const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Batt34qR.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1630
+ const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-LdB_-hSf.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1631
1631
  function WorkflowItem({ readonly = false }) {
1632
1632
  if (readonly) {
1633
1633
  const queryParams = new URLSearchParams(window.location.search);
@@ -1697,9 +1697,9 @@ function WorkflowItem({ readonly = false }) {
1697
1697
  setInstalling(true);
1698
1698
  setInstallErrors([]);
1699
1699
  try {
1700
- const { getGlobalStoreClient } = await import("./FluidGridsProvider-BafQs01c.js").then((n) => n.sr);
1701
- const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-BafQs01c.js").then((n) => n.m);
1702
- const { getFluidGridsConfig } = await import("./node-endpoint-configs-BTQbqjEI.js").then((n) => n.Ii);
1700
+ const { getGlobalStoreClient } = await import("./FluidGridsProvider-CraUhM4E.js").then((n) => n.sr);
1701
+ const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-CraUhM4E.js").then((n) => n.m);
1702
+ const { getFluidGridsConfig } = await import("./node-endpoint-configs-DXCKkK_9.js").then((n) => n.Li);
1703
1703
  const storeClient = getGlobalStoreClient();
1704
1704
  const cfg = getFluidGridsConfig();
1705
1705
  for (let i = 0; i < nodesToInstall.length; i++) {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { $r as WorkflowSharingDocument, Ai as describeOperationError, En as ShareWorkflowDocument, Ni as throwIfResultError, ct as ExportWorkflowCodeDocument, vi as getFluidGridsClient } from "./node-endpoint-configs-BTQbqjEI.js";
3
- import { hn as emitWorkflowLimitHit, on as useFluidGridsAnalytics, pn as emitUpgradeClicked, xn as WORKFLOWS_QUOTA_NAME } from "./FluidGridsProvider-BafQs01c.js";
2
+ import { En as ShareWorkflowDocument, Pi as throwIfResultError, ct as ExportWorkflowCodeDocument, ei as WorkflowSharingDocument, ji as describeOperationError, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
3
+ import { hn as emitWorkflowLimitHit, on as useFluidGridsAnalytics, pn as emitUpgradeClicked, xn as WORKFLOWS_QUOTA_NAME } from "./FluidGridsProvider-CraUhM4E.js";
4
4
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
5
5
  import { Pd as FidelityLevel, RF as WorkflowSharePrincipalType, mF as WorkflowExportFormat, qF as WorkflowVisibility, sF as WorkflowAccess, zF as WorkflowShareRole } from "./graphql-types-CulUbQWN.js";
6
6
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -1,13 +1,13 @@
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-CwYurzxn.js";
4
- import { In as FLUIDGRIDS_FLAGS, Wn as useFluidGridsFlag, t as FluidGridsContext, wn as isQuotaExhaustedFailure, xt as createThenOpen, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-BafQs01c.js";
5
- import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-CGWKqXo7.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-UyKrrkX-.js";
4
+ import { In as FLUIDGRIDS_FLAGS, Wn as useFluidGridsFlag, t as FluidGridsContext, wn as isQuotaExhaustedFailure, xt as createThenOpen, yn as BILLING_PLANS_PATH } from "./FluidGridsProvider-CraUhM4E.js";
5
+ import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-DiD8Gqim.js";
6
6
  import { H as useFlowStore } from "./node-operation-selection-61d6U9qo.js";
7
7
  import { cF as WorkflowAccessFilter, fI as useFluidGridsPermission, lI as SdkPermissionButton, mF as WorkflowExportFormat, oI as FLUIDGRIDS_PERMISSIONS, uI as SdkPermissionGate } from "./graphql-types-CulUbQWN.js";
8
8
  import { r as useTr } from "./TranslationBridge-CX0OMnyn.js";
9
- import { A as CreateWorkflowProjectDocument, Ai as describeOperationError, Jt as RenameWorkflowProjectDocument, Ni as throwIfResultError, Nr as WorkflowProjectsDocument, St as MoveWorkflowFolderDocument, Tr as WorkflowFoldersDocument, U as DeleteWorkflowFolderDocument, W as DeleteWorkflowProjectDocument, f as BulkAssignWorkflowsToProjectDocument, k as CreateWorkflowFolderDocument, m as BulkMoveWorkflowsToFolderDocument, p as BulkDeleteWorkflowsDocument, qt as RenameWorkflowFolderDocument, vi as getFluidGridsClient } from "./node-endpoint-configs-BTQbqjEI.js";
10
- import { a as useExecutions } from "./useExecutions-DYcTJTZ7.js";
9
+ import { A as CreateWorkflowProjectDocument, Jt as RenameWorkflowProjectDocument, Nr as WorkflowProjectsDocument, Pi as throwIfResultError, St as MoveWorkflowFolderDocument, Tr as WorkflowFoldersDocument, U as DeleteWorkflowFolderDocument, W as DeleteWorkflowProjectDocument, f as BulkAssignWorkflowsToProjectDocument, ji as describeOperationError, k as CreateWorkflowFolderDocument, m as BulkMoveWorkflowsToFolderDocument, p as BulkDeleteWorkflowsDocument, qt as RenameWorkflowFolderDocument, yi as getFluidGridsClient } from "./node-endpoint-configs-DXCKkK_9.js";
10
+ import { a as useExecutions } from "./useExecutions-CZuOL3RI.js";
11
11
  import { a as firstWorkflowProgress, i as builderPathFor, r as GUIDED_TOUR_STATE } from "./firstWorkflow-C_h0KMB2.js";
12
12
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
13
13
  import { i as workflowsListControls } from "./pageControlSpecs-DZJ9K37m.js";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { $t as ResetWorkflowRunToLastCleanTaskDocument, Ai as describeOperationError, An as StartBatchOperationDocument, Br as WorkflowRunHistoryArchiveDocument, Gn as UnpauseWorkflowScheduleDocument, Gr as WorkflowRunUpdateDocument, Hn as TriggerWorkflowScheduleDocument, Jn as UpdateActivityOptionsDocument, Jr as WorkflowScheduleDescribeDocument, K as DeleteWorkflowSearchAttributeDocument, M as CreateWorkflowSignalTokenDocument, Ni as throwIfResultError, Nt as PauseWorkflowScheduleDocument, Qr as WorkflowSearchAttributesDocument, Qt as ResetWorkflowRunDocument, Vt as QueryWorkflowRunDocument, Wn as UnpauseActivityDocument, Xn as UpdateCodecServerSettingsDocument, Yn as UpdateArchiveSettingsDocument, Zt as ResetActivityDocument, _r as WorkflowCodeBundleSdkDocument, b as CodecServerSettingsDocument, c as ArchiveSettingsDocument, cn as RunControlFieldsDocument, h as CancelBatchOperationDocument, hr as WorkflowBatchOperationsDocument, in as RevokeWorkflowSignalTokenDocument, ir as UpsertWorkflowRunSearchAttributesDocument, j as CreateWorkflowSearchAttributeDocument, jn as StartBatchTerminateDocument, jt as PauseActivityDocument, kn as StartBatchExportDocument, lr as WorkflowActivityPauseRulesDocument, lt as FailActivityByIdDocument, nr as UpdateWorkflowRunDocument, pr as WorkflowBatchOperationDocument, ti as WorkflowSignalTokensDocument, u as BackfillWorkflowScheduleDocument, vi as getFluidGridsClient, w as CreateActivityPauseRuleDocument, x as CompleteActivityByIdDocument, z as DeleteActivityPauseRuleDocument } from "./node-endpoint-configs-BTQbqjEI.js";
2
+ import { $r as WorkflowSearchAttributesDocument, $t as ResetWorkflowRunToLastCleanTaskDocument, An as StartBatchOperationDocument, Gn as UnpauseWorkflowScheduleDocument, Hn as TriggerWorkflowScheduleDocument, Jn as UpdateActivityOptionsDocument, K as DeleteWorkflowSearchAttributeDocument, Kr as WorkflowRunUpdateDocument, M as CreateWorkflowSignalTokenDocument, Nt as PauseWorkflowScheduleDocument, Pi as throwIfResultError, Qt as ResetWorkflowRunDocument, Vr as WorkflowRunHistoryArchiveDocument, Vt as QueryWorkflowRunDocument, Wn as UnpauseActivityDocument, Xn as UpdateCodecServerSettingsDocument, Yn as UpdateArchiveSettingsDocument, Yr as WorkflowScheduleDescribeDocument, Zt as ResetActivityDocument, _r as WorkflowCodeBundleSdkDocument, b as CodecServerSettingsDocument, c as ArchiveSettingsDocument, cn as RunControlFieldsDocument, h as CancelBatchOperationDocument, hr as WorkflowBatchOperationsDocument, in as RevokeWorkflowSignalTokenDocument, ir as UpsertWorkflowRunSearchAttributesDocument, j as CreateWorkflowSearchAttributeDocument, ji as describeOperationError, jn as StartBatchTerminateDocument, jt as PauseActivityDocument, kn as StartBatchExportDocument, lr as WorkflowActivityPauseRulesDocument, lt as FailActivityByIdDocument, ni as WorkflowSignalTokensDocument, nr as UpdateWorkflowRunDocument, pr as WorkflowBatchOperationDocument, u as BackfillWorkflowScheduleDocument, w as CreateActivityPauseRuleDocument, x as CompleteActivityByIdDocument, yi as getFluidGridsClient, z as DeleteActivityPauseRuleDocument } from "./node-endpoint-configs-DXCKkK_9.js";
3
3
  import { useCallback, useEffect, useRef, useState } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Label, Textarea } from "@burdenoff/fe-libs/ui";