@burdenoff/fluidgrids-fe-sdk 2026.801.6 → 2026.801.8

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.
@@ -695,8 +695,41 @@ function ExecutionStats({
695
695
  )
696
696
  ] });
697
697
  }
698
+
699
+ // src/modules/executions/utils/run-display.ts
700
+ function formatRunVersion(version) {
701
+ if (!version) return "";
702
+ return version.startsWith("v") ? version : `v${version}`;
703
+ }
704
+ function asString(value) {
705
+ return typeof value === "string" && value.trim() ? value : void 0;
706
+ }
707
+ function buildNodeDisplayMap(definitionJson) {
708
+ const map = {};
709
+ const nodes = definitionJson?.data?.nodes;
710
+ if (!Array.isArray(nodes)) return map;
711
+ for (const node of nodes) {
712
+ const id = asString(node?.id);
713
+ if (!id) continue;
714
+ const label = asString(node?.data?.label) ?? asString(node?.data?.nodeData?.name) ?? asString(node?.type);
715
+ if (!label) continue;
716
+ const operation = asString(node?.data?.operation_name);
717
+ map[id] = {
718
+ label,
719
+ // 'execute' is the internal single-op pseudo-operation — the builder
720
+ // hides it on cards, so the runs screens do too.
721
+ operation: operation === "execute" ? void 0 : operation
722
+ };
723
+ }
724
+ return map;
725
+ }
726
+ function nodeDisplayTitle(display, fallback) {
727
+ if (!display) return fallback;
728
+ return display.operation ? `${display.label} \xB7 ${display.operation}` : display.label;
729
+ }
698
730
  function ExecutionTable({
699
731
  executions,
732
+ workflowNames,
700
733
  loading,
701
734
  onRowClick,
702
735
  onAction
@@ -842,11 +875,8 @@ function ExecutionTable({
842
875
  }
843
876
  ) }),
844
877
  /* @__PURE__ */ jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
845
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-primary", children: execution.workflow?.name || execution.workflowKey }),
846
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-text-secondary", children: [
847
- "v",
848
- execution.version
849
- ] })
878
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-primary", children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey }),
879
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-text-secondary", children: formatRunVersion(execution.version) })
850
880
  ] }) }),
851
881
  /* @__PURE__ */ jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxs("span", { className: "text-sm font-mono text-text-secondary", children: [
852
882
  execution.id.slice(0, 8),
@@ -996,6 +1026,7 @@ function getProgressColor(status) {
996
1026
  }
997
1027
  function ExecutionCards({
998
1028
  executions,
1029
+ workflowNames,
999
1030
  loading,
1000
1031
  onCardClick,
1001
1032
  onAction
@@ -1051,11 +1082,8 @@ function ExecutionCards({
1051
1082
  children: [
1052
1083
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between mb-3", children: [
1053
1084
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 mr-2", children: [
1054
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-text-primary truncate", children: execution.workflowKey }),
1055
- /* @__PURE__ */ jsxs("p", { className: "text-xs text-text-tertiary mt-0.5", children: [
1056
- "v",
1057
- execution.version
1058
- ] })
1085
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-text-primary truncate", children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey }),
1086
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-text-tertiary mt-0.5", children: formatRunVersion(execution.version) })
1059
1087
  ] }),
1060
1088
  /* @__PURE__ */ jsx(ExecutionStatusBadge, { status: execution.status, size: "sm" })
1061
1089
  ] }),
@@ -1368,6 +1396,7 @@ function orderNodesByExecution(nodeStates, triggerNodeId) {
1368
1396
  }
1369
1397
  function NodeTimeline({
1370
1398
  nodeStates,
1399
+ nodeDisplay,
1371
1400
  loading,
1372
1401
  triggerNodeId,
1373
1402
  onRetryNode,
@@ -1476,7 +1505,17 @@ function NodeTimeline({
1476
1505
  }
1477
1506
  ) }),
1478
1507
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
1479
- /* @__PURE__ */ jsx("div", { className: "font-medium text-text-primary truncate", children: node.nodeId }),
1508
+ /* @__PURE__ */ jsx(
1509
+ "div",
1510
+ {
1511
+ className: "font-medium text-text-primary truncate",
1512
+ title: node.nodeId,
1513
+ children: nodeDisplayTitle(
1514
+ nodeDisplay?.[node.nodeId],
1515
+ node.nodeId
1516
+ )
1517
+ }
1518
+ ),
1480
1519
  /* @__PURE__ */ jsxs("div", { className: "text-xs text-text-secondary", children: [
1481
1520
  node.nodeType,
1482
1521
  " v",
@@ -1597,7 +1636,7 @@ function formatTimestamp(iso) {
1597
1636
  });
1598
1637
  return `${time}.${String(date.getMilliseconds()).padStart(3, "0")}`;
1599
1638
  }
1600
- function groupLines(lines, nodeStates) {
1639
+ function groupLines(lines, nodeStates, nodeDisplay) {
1601
1640
  const byNode = /* @__PURE__ */ new Map();
1602
1641
  const order = [];
1603
1642
  for (const line of lines) {
@@ -1608,7 +1647,7 @@ function groupLines(lines, nodeStates) {
1608
1647
  group = {
1609
1648
  key,
1610
1649
  nodeId: line.nodeId ?? null,
1611
- label: line.nodeId ? `${line.nodeId}${state?.nodeType ? ` \xB7 ${state.nodeType}` : ""}` : "Run",
1650
+ label: line.nodeId ? `${nodeDisplayTitle(nodeDisplay?.[line.nodeId], line.nodeId)}${state?.nodeType ? ` \xB7 ${state.nodeType}` : ""}` : "Run",
1612
1651
  status: state?.status,
1613
1652
  lines: [],
1614
1653
  hasError: false
@@ -1625,6 +1664,7 @@ function RunLogViewer({
1625
1664
  runId,
1626
1665
  lines,
1627
1666
  nodeStates,
1667
+ nodeDisplay,
1628
1668
  loading,
1629
1669
  error,
1630
1670
  hasMore,
@@ -1650,8 +1690,8 @@ function RunLogViewer({
1650
1690
  return lines.filter((line) => line.message.toLowerCase().includes(needle));
1651
1691
  }, [lines, search]);
1652
1692
  const groups = useMemo(
1653
- () => groupLines(visible, nodeStates),
1654
- [visible, nodeStates]
1693
+ () => groupLines(visible, nodeStates, nodeDisplay),
1694
+ [visible, nodeStates, nodeDisplay]
1655
1695
  );
1656
1696
  const isCollapsed = useCallback(
1657
1697
  (group) => {
@@ -1708,7 +1748,7 @@ function RunLogViewer({
1708
1748
  }, []);
1709
1749
  const downloadRaw = useCallback(() => {
1710
1750
  const body = lines.map((line) => {
1711
- const node = line.nodeId ? ` [${line.nodeId}]` : "";
1751
+ const node = line.nodeId ? ` [${nodeDisplayTitle(nodeDisplay?.[line.nodeId], line.nodeId)}]` : "";
1712
1752
  return `${line.timestamp} ${line.level.padEnd(5)}${node} ${line.message}`;
1713
1753
  }).join("\n");
1714
1754
  const url = URL.createObjectURL(
@@ -1719,7 +1759,7 @@ function RunLogViewer({
1719
1759
  anchor.download = `run-${runId}.log`;
1720
1760
  anchor.click();
1721
1761
  URL.revokeObjectURL(url);
1722
- }, [lines, runId]);
1762
+ }, [lines, runId, nodeDisplay]);
1723
1763
  if (loading && lines.length === 0) {
1724
1764
  return /* @__PURE__ */ jsx("div", { className: "space-y-2", "data-testid": "run-log-loading", children: [...Array(6)].map((_, i) => /* @__PURE__ */ jsx(
1725
1765
  "div",
@@ -2418,6 +2458,6 @@ function useAutoRefresh(refetchFn, enabled = true, interval = 5e3) {
2418
2458
  }, [enabled, interval, refetchFn]);
2419
2459
  }
2420
2460
 
2421
- export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, useAutoRefresh, useExecution, useExecutionActions, useExecutionStats, useExecutionsStore, useExecutionsWithStore };
2422
- //# sourceMappingURL=chunk-6AK7GFWB.js.map
2423
- //# sourceMappingURL=chunk-6AK7GFWB.js.map
2461
+ export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, buildNodeDisplayMap, formatRunVersion, useAutoRefresh, useExecution, useExecutionActions, useExecutionStats, useExecutionsStore, useExecutionsWithStore };
2462
+ //# sourceMappingURL=chunk-VNSIXELY.js.map
2463
+ //# sourceMappingURL=chunk-VNSIXELY.js.map