@datatechsolutions/ui 3.4.0 → 3.5.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 (105) hide show
  1. package/dist/astrlabe/index.js +107 -107
  2. package/dist/astrlabe/index.mjs +3 -3
  3. package/dist/astrlabe/workflow-canvas.js +3 -3
  4. package/dist/astrlabe/workflow-canvas.mjs +2 -2
  5. package/dist/{chunk-IDEM3DYF.mjs → chunk-2TBNOQ7M.mjs} +3 -3
  6. package/dist/{chunk-IDEM3DYF.mjs.map → chunk-2TBNOQ7M.mjs.map} +1 -1
  7. package/dist/{chunk-45QAUEYT.js → chunk-2UMDWOUY.js} +4 -4
  8. package/dist/{chunk-45QAUEYT.js.map → chunk-2UMDWOUY.js.map} +1 -1
  9. package/dist/{chunk-NAFWHJCM.mjs → chunk-37ZLBCJF.mjs} +6 -6
  10. package/dist/{chunk-NAFWHJCM.mjs.map → chunk-37ZLBCJF.mjs.map} +1 -1
  11. package/dist/{chunk-MO5FBVV3.js → chunk-5AVO5DJO.js} +62 -62
  12. package/dist/{chunk-MO5FBVV3.js.map → chunk-5AVO5DJO.js.map} +1 -1
  13. package/dist/{chunk-X3GW7UPN.mjs → chunk-7OZ4MVEF.mjs} +4 -4
  14. package/dist/{chunk-X3GW7UPN.mjs.map → chunk-7OZ4MVEF.mjs.map} +1 -1
  15. package/dist/{chunk-SQ4KGLBZ.mjs → chunk-CDYNTHUE.mjs} +41 -7
  16. package/dist/chunk-CDYNTHUE.mjs.map +1 -0
  17. package/dist/{chunk-ZKSDDFHG.mjs → chunk-CJGNEALB.mjs} +4 -4
  18. package/dist/{chunk-ZKSDDFHG.mjs.map → chunk-CJGNEALB.mjs.map} +1 -1
  19. package/dist/{chunk-4GDWGWHY.mjs → chunk-CP5QXRXA.mjs} +4 -4
  20. package/dist/{chunk-4GDWGWHY.mjs.map → chunk-CP5QXRXA.mjs.map} +1 -1
  21. package/dist/{chunk-SEYUYGER.mjs → chunk-EGXB3WXT.mjs} +12 -11
  22. package/dist/chunk-EGXB3WXT.mjs.map +1 -0
  23. package/dist/{chunk-UJVDI66K.js → chunk-EI6FIA45.js} +16 -16
  24. package/dist/{chunk-UJVDI66K.js.map → chunk-EI6FIA45.js.map} +1 -1
  25. package/dist/{chunk-AGGOHPMZ.mjs → chunk-EUXHJMGC.mjs} +138 -108
  26. package/dist/chunk-EUXHJMGC.mjs.map +1 -0
  27. package/dist/{chunk-M7KSEUZR.js → chunk-F5UDX6JA.js} +74 -74
  28. package/dist/{chunk-M7KSEUZR.js.map → chunk-F5UDX6JA.js.map} +1 -1
  29. package/dist/{chunk-6MBWKOPF.js → chunk-HVDDCBQ2.js} +33 -33
  30. package/dist/{chunk-6MBWKOPF.js.map → chunk-HVDDCBQ2.js.map} +1 -1
  31. package/dist/{chunk-FSBR4RCK.js → chunk-K4M4B6ME.js} +138 -108
  32. package/dist/chunk-K4M4B6ME.js.map +1 -0
  33. package/dist/{chunk-4ICEQJH4.js → chunk-KIBOX3UQ.js} +53 -53
  34. package/dist/{chunk-4ICEQJH4.js.map → chunk-KIBOX3UQ.js.map} +1 -1
  35. package/dist/{chunk-NCLZKVJK.js → chunk-KRPSTXN5.js} +9 -9
  36. package/dist/{chunk-NCLZKVJK.js.map → chunk-KRPSTXN5.js.map} +1 -1
  37. package/dist/{chunk-NVQWHJQH.mjs → chunk-L5O4NWQO.mjs} +3 -3
  38. package/dist/{chunk-NVQWHJQH.mjs.map → chunk-L5O4NWQO.mjs.map} +1 -1
  39. package/dist/{chunk-Y2AYFG4E.js → chunk-MT4FJRMD.js} +4 -4
  40. package/dist/{chunk-Y2AYFG4E.js.map → chunk-MT4FJRMD.js.map} +1 -1
  41. package/dist/{chunk-CF7GOUBQ.js → chunk-OWJIKCR2.js} +13 -13
  42. package/dist/{chunk-CF7GOUBQ.js.map → chunk-OWJIKCR2.js.map} +1 -1
  43. package/dist/{chunk-RFRXS4PC.mjs → chunk-PFHXKWFT.mjs} +3 -3
  44. package/dist/{chunk-RFRXS4PC.mjs.map → chunk-PFHXKWFT.mjs.map} +1 -1
  45. package/dist/{chunk-BW67WFHT.mjs → chunk-PI2C3S6A.mjs} +3 -3
  46. package/dist/{chunk-BW67WFHT.mjs.map → chunk-PI2C3S6A.mjs.map} +1 -1
  47. package/dist/{chunk-ERCDMBRT.js → chunk-PYQLY2RH.js} +168 -167
  48. package/dist/chunk-PYQLY2RH.js.map +1 -0
  49. package/dist/{chunk-UE2RDQIK.js → chunk-QIUVK4BI.js} +77 -77
  50. package/dist/{chunk-UE2RDQIK.js.map → chunk-QIUVK4BI.js.map} +1 -1
  51. package/dist/{chunk-RLVOG5OQ.mjs → chunk-R3Q5RXXO.mjs} +3 -3
  52. package/dist/{chunk-RLVOG5OQ.mjs.map → chunk-R3Q5RXXO.mjs.map} +1 -1
  53. package/dist/{chunk-QBFE7ABE.mjs → chunk-R6O57NTJ.mjs} +6 -6
  54. package/dist/{chunk-QBFE7ABE.mjs.map → chunk-R6O57NTJ.mjs.map} +1 -1
  55. package/dist/{chunk-TUQLZ4QD.js → chunk-RQBTLFYH.js} +5 -5
  56. package/dist/{chunk-TUQLZ4QD.js.map → chunk-RQBTLFYH.js.map} +1 -1
  57. package/dist/{chunk-YV7F7IXG.js → chunk-SFFSXC5E.js} +36 -36
  58. package/dist/{chunk-YV7F7IXG.js.map → chunk-SFFSXC5E.js.map} +1 -1
  59. package/dist/{chunk-RLLP7VQJ.js → chunk-U6XA2OYE.js} +63 -29
  60. package/dist/chunk-U6XA2OYE.js.map +1 -0
  61. package/dist/{chunk-CUWPLPVY.mjs → chunk-ULEPJXTN.mjs} +3 -3
  62. package/dist/{chunk-CUWPLPVY.mjs.map → chunk-ULEPJXTN.mjs.map} +1 -1
  63. package/dist/{chunk-PGVZKMOA.js → chunk-VMIAMBCP.js} +39 -39
  64. package/dist/{chunk-PGVZKMOA.js.map → chunk-VMIAMBCP.js.map} +1 -1
  65. package/dist/{chunk-VV6SYMPM.mjs → chunk-WKCR4KVQ.mjs} +3 -3
  66. package/dist/{chunk-VV6SYMPM.mjs.map → chunk-WKCR4KVQ.mjs.map} +1 -1
  67. package/dist/{chunk-AL73YAV4.mjs → chunk-YV2SE5LS.mjs} +3 -3
  68. package/dist/{chunk-AL73YAV4.mjs.map → chunk-YV2SE5LS.mjs.map} +1 -1
  69. package/dist/index.d.mts +63 -16
  70. package/dist/index.d.ts +63 -16
  71. package/dist/index.js +704 -704
  72. package/dist/index.mjs +1 -1
  73. package/dist/platform/admin/index.js +10 -10
  74. package/dist/platform/admin/index.mjs +4 -4
  75. package/dist/platform/agents-workspace.js +6 -6
  76. package/dist/platform/agents-workspace.mjs +5 -5
  77. package/dist/platform/app-shell.js +3 -3
  78. package/dist/platform/app-shell.mjs +2 -2
  79. package/dist/platform/auth/index.js +27 -27
  80. package/dist/platform/auth/index.mjs +4 -4
  81. package/dist/platform/billing/index.js +3 -3
  82. package/dist/platform/billing/index.mjs +2 -2
  83. package/dist/platform/impersonation/index.js +3 -3
  84. package/dist/platform/impersonation/index.mjs +2 -2
  85. package/dist/platform/index.d.mts +1 -1
  86. package/dist/platform/index.d.ts +1 -1
  87. package/dist/platform/index.js +82 -82
  88. package/dist/platform/index.mjs +18 -18
  89. package/dist/platform/pages/index.d.mts +8 -0
  90. package/dist/platform/pages/index.d.ts +8 -0
  91. package/dist/platform/pages/index.js +317 -201
  92. package/dist/platform/pages/index.js.map +1 -1
  93. package/dist/platform/pages/index.mjs +143 -27
  94. package/dist/platform/pages/index.mjs.map +1 -1
  95. package/dist/platform/settings/index.js +7 -7
  96. package/dist/platform/settings/index.mjs +6 -6
  97. package/dist/platform/workflow-canvas-shell.js +4 -4
  98. package/dist/platform/workflow-canvas-shell.mjs +3 -3
  99. package/package.json +1 -1
  100. package/dist/chunk-AGGOHPMZ.mjs.map +0 -1
  101. package/dist/chunk-ERCDMBRT.js.map +0 -1
  102. package/dist/chunk-FSBR4RCK.js.map +0 -1
  103. package/dist/chunk-RLLP7VQJ.js.map +0 -1
  104. package/dist/chunk-SEYUYGER.mjs.map +0 -1
  105. package/dist/chunk-SQ4KGLBZ.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkM7KSEUZR_js = require('./chunk-M7KSEUZR.js');
5
- var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
4
+ var chunkF5UDX6JA_js = require('./chunk-F5UDX6JA.js');
5
+ var chunkK4M4B6ME_js = require('./chunk-K4M4B6ME.js');
6
6
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
7
7
  var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
8
8
  var react = require('react');
@@ -40,11 +40,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
40
40
  const isCompact = data.displayMode === "compact";
41
41
  if (!config) {
42
42
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
43
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeRunningIndicator, { nodeId: id }),
44
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
45
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
47
- chunkM7KSEUZR_js.NodeCardHeader,
43
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
44
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
45
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
47
+ chunkF5UDX6JA_js.NodeCardHeader,
48
48
  {
49
49
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
50
50
  title: data.label || "Model Provider",
@@ -52,8 +52,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
52
52
  iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
53
53
  }
54
54
  ) }),
55
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
56
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
55
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
56
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
57
57
  ] });
58
58
  }
59
59
  const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
@@ -62,18 +62,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
62
62
  const isConfigured = !!(config.credentialRef || config.apiKeyRef);
63
63
  const logo = PROVIDER_LOGOS[config.providerType];
64
64
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeRunningIndicator, { nodeId: id }),
66
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
67
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
65
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
67
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
68
68
  /* @__PURE__ */ jsxRuntime.jsx(
69
69
  "button",
70
70
  {
71
71
  type: "button",
72
72
  onClick: () => data.onEdit?.(id),
73
73
  className: "w-full text-left",
74
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkM7KSEUZR_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
74
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
75
75
  /* @__PURE__ */ jsxRuntime.jsx(
76
- chunkM7KSEUZR_js.NodeCardHeader,
76
+ chunkF5UDX6JA_js.NodeCardHeader,
77
77
  {
78
78
  icon: logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6 text-white" }),
79
79
  title: displayName,
@@ -81,11 +81,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
81
81
  iconClassName: `flex h-11 w-11 items-center justify-center rounded-xl shadow-lg ${logo ? "bg-white/10 dark:bg-white/5 p-2" : "bg-gradient-to-br from-slate-600 to-slate-700 p-1.5"}`
82
82
  }
83
83
  ),
84
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
85
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardBadge, { className: "rounded-full bg-slate-100 px-2 py-0.5 text-[10px] font-semibold text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: providerLabel }),
86
- regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: regionLabel }),
87
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${isConfigured ? "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300" : "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300"}`, children: isConfigured ? "Configured" : "Setup needed" }),
88
- config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkM7KSEUZR_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-slate-100 px-2 py-0.5 text-[10px] font-semibold text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: providerLabel }),
86
+ regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: regionLabel }),
87
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${isConfigured ? "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300" : "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300"}`, children: isConfigured ? "Configured" : "Setup needed" }),
88
+ config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
89
89
  config.modelFilter.length,
90
90
  " models"
91
91
  ] })
@@ -93,8 +93,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
93
93
  ] })
94
94
  }
95
95
  ),
96
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
97
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
96
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
97
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
98
98
  ] });
99
99
  });
100
100
  var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
@@ -103,10 +103,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
103
103
  const isCompact = data.displayMode === "compact";
104
104
  const keyPreview = config.key ? config.key.slice(0, 30) : "";
105
105
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
106
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeRunningIndicator, { nodeId: id }),
107
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
106
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
108
108
  /* @__PURE__ */ jsxRuntime.jsxs(
109
- chunkM7KSEUZR_js.NodeInteractiveCard,
109
+ chunkF5UDX6JA_js.NodeInteractiveCard,
110
110
  {
111
111
  nodeId: id,
112
112
  onEdit,
@@ -115,27 +115,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
115
115
  nodeType: "s3_write",
116
116
  children: [
117
117
  /* @__PURE__ */ jsxRuntime.jsx(
118
- chunkM7KSEUZR_js.NodeCardHeader,
118
+ chunkF5UDX6JA_js.NodeCardHeader,
119
119
  {
120
- icon: /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
120
+ icon: /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
121
121
  title: label,
122
122
  description: t("s3WriteNodeDescription"),
123
123
  compact: isCompact,
124
124
  iconClassName: ""
125
125
  }
126
126
  ),
127
- /* @__PURE__ */ jsxRuntime.jsxs(chunkM7KSEUZR_js.NodeCardMeta, { compact: isCompact, children: [
127
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCardMeta, { compact: isCompact, children: [
128
128
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
129
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
130
- config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
129
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
130
+ config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
131
131
  keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
132
132
  ] }),
133
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.NodeCardDeleteAction, { nodeId: id, onDelete })
133
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardDeleteAction, { nodeId: id, onDelete })
134
134
  ] })
135
135
  ]
136
136
  }
137
137
  ),
138
- /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
138
+ /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
139
139
  ] });
140
140
  });
141
141
  function AnthropicModelIcon({ className }) {
@@ -199,7 +199,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
199
199
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-dashed border-slate-300 bg-slate-50/40 p-4 text-center dark:border-slate-700 dark:bg-slate-900/30", children: [
200
200
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-xs text-slate-500 dark:text-slate-400", children: "No schema yet \u2014 agent text is exposed as a raw string. Add a schema to enforce structured output." }),
201
201
  /* @__PURE__ */ jsxRuntime.jsx(
202
- chunkFSBR4RCK_js.Button,
202
+ chunkK4M4B6ME_js.Button,
203
203
  {
204
204
  type: "button",
205
205
  outline: true,
@@ -263,7 +263,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
263
263
  },
264
264
  index
265
265
  )),
266
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
266
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
267
267
  ] })
268
268
  ] });
269
269
  }
@@ -286,7 +286,7 @@ function FieldEditor({
286
286
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
287
287
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
288
288
  /* @__PURE__ */ jsxRuntime.jsx(
289
- chunkFSBR4RCK_js.FormInput,
289
+ chunkK4M4B6ME_js.FormInput,
290
290
  {
291
291
  label: "Name",
292
292
  value: field.name,
@@ -295,7 +295,7 @@ function FieldEditor({
295
295
  }
296
296
  ),
297
297
  /* @__PURE__ */ jsxRuntime.jsx(
298
- chunkFSBR4RCK_js.FormSelect,
298
+ chunkK4M4B6ME_js.FormSelect,
299
299
  {
300
300
  label: "Type",
301
301
  value: field.type,
@@ -315,10 +315,10 @@ function FieldEditor({
315
315
  ),
316
316
  "Required"
317
317
  ] }),
318
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
318
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
319
319
  ] }),
320
320
  /* @__PURE__ */ jsxRuntime.jsx(
321
- chunkFSBR4RCK_js.FormInput,
321
+ chunkK4M4B6ME_js.FormInput,
322
322
  {
323
323
  label: "Description (optional)",
324
324
  value: field.description,
@@ -611,13 +611,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
611
611
  ] });
612
612
  }
613
613
  function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
614
- const frameworkKeys = Object.keys(chunkM7KSEUZR_js.FRAMEWORK_META);
614
+ const frameworkKeys = Object.keys(chunkF5UDX6JA_js.FRAMEWORK_META);
615
615
  const hasProviderConstraints = connectedProviderTypes.length > 0;
616
- const compatibleModels = chunkM7KSEUZR_js.getCompatibleModels(models, selectedFramework);
616
+ const compatibleModels = chunkF5UDX6JA_js.getCompatibleModels(models, selectedFramework);
617
617
  const handleFrameworkChange = react.useCallback((newFramework) => {
618
618
  setSelectedFramework(newFramework);
619
- if (!chunkM7KSEUZR_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
620
- const compatible = chunkM7KSEUZR_js.getCompatibleModels(models, newFramework);
619
+ if (!chunkF5UDX6JA_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
620
+ const compatible = chunkF5UDX6JA_js.getCompatibleModels(models, newFramework);
621
621
  if (compatible.length > 0) {
622
622
  setSelectedModelId(compatible[0].id);
623
623
  }
@@ -628,10 +628,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
628
628
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
629
629
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
630
630
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
631
- const meta = chunkM7KSEUZR_js.FRAMEWORK_META[key];
631
+ const meta = chunkF5UDX6JA_js.FRAMEWORK_META[key];
632
632
  const isSelected = key === selectedFramework;
633
- const compatCount = chunkM7KSEUZR_js.getCompatibleModels(models, key).length;
634
- const isCompatibleWithProviders = !hasProviderConstraints || chunkM7KSEUZR_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
633
+ const compatCount = chunkF5UDX6JA_js.getCompatibleModels(models, key).length;
634
+ const isCompatibleWithProviders = !hasProviderConstraints || chunkF5UDX6JA_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
635
635
  return /* @__PURE__ */ jsxRuntime.jsxs(
636
636
  "button",
637
637
  {
@@ -663,7 +663,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
663
663
  ] }),
664
664
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
665
665
  const isSelected = model.id === selectedModelId;
666
- const isCompatible = chunkM7KSEUZR_js.isModelCompatibleWithFramework(model.id, selectedFramework);
666
+ const isCompatible = chunkF5UDX6JA_js.isModelCompatibleWithFramework(model.id, selectedFramework);
667
667
  const { IconComponent, color, providerLabel } = getModelIcon(model.id);
668
668
  return /* @__PURE__ */ jsxRuntime.jsxs(
669
669
  "button",
@@ -821,7 +821,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
821
821
  ] }),
822
822
  tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
823
823
  tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
824
- const meta = chunkM7KSEUZR_js.getFrameworkMeta(framework);
824
+ const meta = chunkF5UDX6JA_js.getFrameworkMeta(framework);
825
825
  const isCurrentFw = framework === agentFramework;
826
826
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-gray-100 text-gray-500 dark:bg-white/5 dark:text-gray-400"}`, children: [
827
827
  /* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
@@ -838,7 +838,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
838
838
  event.stopPropagation();
839
839
  },
840
840
  children: /* @__PURE__ */ jsxRuntime.jsx(
841
- chunkFSBR4RCK_js.ToggleSwitch,
841
+ chunkK4M4B6ME_js.ToggleSwitch,
842
842
  {
843
843
  checked: isEnabled,
844
844
  onChange: () => onToggle(tool.agentToolId),
@@ -886,7 +886,7 @@ function EngineTab({
886
886
  const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
887
887
  const configuredCompatible = compatibleProviders.filter((p) => p.configured);
888
888
  const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
889
- const frameworkMeta = chunkM7KSEUZR_js.getFrameworkMeta(selectedFramework);
889
+ const frameworkMeta = chunkF5UDX6JA_js.getFrameworkMeta(selectedFramework);
890
890
  const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-gray-800 outline-none transition-colors focus:ring-1 focus:ring-indigo-300/40 dark:text-gray-200 dark:focus:ring-indigo-500/20";
891
891
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-2xl border border-indigo-500/20 bg-gradient-to-b from-indigo-500/[0.04] via-violet-500/[0.03] to-purple-500/[0.04] dark:border-indigo-400/20 dark:from-indigo-500/[0.10] dark:via-violet-500/[0.06] dark:to-purple-500/[0.08]", children: [
892
892
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1030,9 +1030,9 @@ function EngineTab({
1030
1030
  }
1031
1031
  function AgentModal({ onSaved, onPersist }) {
1032
1032
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1033
- const activeModal = chunkM7KSEUZR_js.useModalStore((s) => s.activeModal);
1034
- const agentData = chunkM7KSEUZR_js.useModalStore((s) => s.agentData);
1035
- const closeModal = chunkM7KSEUZR_js.useModalStore((s) => s.closeModal);
1033
+ const activeModal = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal);
1034
+ const agentData = chunkF5UDX6JA_js.useModalStore((s) => s.agentData);
1035
+ const closeModal = chunkF5UDX6JA_js.useModalStore((s) => s.closeModal);
1036
1036
  const open = activeModal === "agent";
1037
1037
  const agent = agentData?.agent ?? null;
1038
1038
  const models = agentData?.models ?? [];
@@ -1178,19 +1178,21 @@ function AgentModal({ onSaved, onPersist }) {
1178
1178
  const effectiveAvatarUrl = avatarUrl || agent.avatar;
1179
1179
  const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs text-gray-800 outline-none transition-colors focus:ring-1 focus:ring-indigo-300/40 dark:text-gray-200 dark:focus:ring-indigo-500/20";
1180
1180
  const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
1181
- const avatarNode = effectiveAvatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(
1182
- "img",
1181
+ const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
1182
+ const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
1183
+ chunkK4M4B6ME_js.Avatar,
1183
1184
  {
1184
- src: effectiveAvatarUrl,
1185
+ src: effectiveAvatarUrl || void 0,
1185
1186
  alt: displayName || agent.name,
1186
- className: "h-full w-full rounded-full bg-white object-cover ring-2 ring-white shadow-sm dark:bg-gray-800 dark:ring-gray-800",
1187
- loading: "lazy"
1187
+ initials: effectiveAvatarUrl ? void 0 : avatarInitial,
1188
+ tone: effectiveAvatarUrl ? void 0 : "indigo",
1189
+ className: "size-12"
1188
1190
  }
1189
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-full w-full items-center justify-center rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 text-sm font-bold text-white ring-2 ring-white shadow-sm dark:ring-gray-800", children: (displayName || agent.name).charAt(0).toUpperCase() });
1191
+ );
1190
1192
  const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
1191
1193
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[9px] font-semibold ${status === "active" ? "text-emerald-600 dark:text-emerald-400" : "text-slate-500"}`, children: status === "active" ? t("agentDrawer.statusActive", { _: "Active" }) : t("agentDrawer.statusInactive", { _: "Inactive" }) }),
1192
1194
  /* @__PURE__ */ jsxRuntime.jsx(
1193
- chunkFSBR4RCK_js.ToggleSwitch,
1195
+ chunkK4M4B6ME_js.ToggleSwitch,
1194
1196
  {
1195
1197
  size: "sm",
1196
1198
  color: "green",
@@ -1204,10 +1206,9 @@ function AgentModal({ onSaved, onPersist }) {
1204
1206
  )
1205
1207
  ] });
1206
1208
  const identityCard = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-3 ring-1 ring-slate-200/50 dark:ring-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
1207
- chunkFSBR4RCK_js.HeroBlock,
1209
+ chunkK4M4B6ME_js.HeroBlock,
1208
1210
  {
1209
1211
  icon: avatarNode,
1210
- iconShape: "round",
1211
1212
  iconBackground: "none",
1212
1213
  iconSize: "lg",
1213
1214
  headingLevel: "h2",
@@ -1268,7 +1269,7 @@ function AgentModal({ onSaved, onPersist }) {
1268
1269
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
1269
1270
  ] });
1270
1271
  return /* @__PURE__ */ jsxRuntime.jsx(
1271
- chunkFSBR4RCK_js.GlassModal,
1272
+ chunkK4M4B6ME_js.GlassModal,
1272
1273
  {
1273
1274
  open,
1274
1275
  onClose: handleClose,
@@ -1285,7 +1286,7 @@ function AgentModal({ onSaved, onPersist }) {
1285
1286
  },
1286
1287
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
1287
1288
  /* @__PURE__ */ jsxRuntime.jsx(
1288
- chunkFSBR4RCK_js.SectionCard,
1289
+ chunkK4M4B6ME_js.SectionCard,
1289
1290
  {
1290
1291
  variant: "glass",
1291
1292
  padded: false,
@@ -1325,7 +1326,7 @@ function AgentModal({ onSaved, onPersist }) {
1325
1326
  }
1326
1327
  ),
1327
1328
  /* @__PURE__ */ jsxRuntime.jsx(
1328
- chunkFSBR4RCK_js.SectionCard,
1329
+ chunkK4M4B6ME_js.SectionCard,
1329
1330
  {
1330
1331
  variant: "glass",
1331
1332
  padded: false,
@@ -1353,7 +1354,7 @@ function AgentModal({ onSaved, onPersist }) {
1353
1354
  }
1354
1355
  ),
1355
1356
  /* @__PURE__ */ jsxRuntime.jsx(
1356
- chunkFSBR4RCK_js.SectionCard,
1357
+ chunkK4M4B6ME_js.SectionCard,
1357
1358
  {
1358
1359
  variant: "glass",
1359
1360
  padded: false,
@@ -1476,7 +1477,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1476
1477
  const markDirty = useSubworkflowStore((s) => s.markDirty);
1477
1478
  const markSaved = useSubworkflowStore((s) => s.markSaved);
1478
1479
  const closeModal = useSubworkflowStore((s) => s.closeModal);
1479
- const agentBehind = chunkM7KSEUZR_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1480
+ const agentBehind = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1480
1481
  const isCreateMode = !tool?.toolId;
1481
1482
  const initialGraph = react.useMemo(() => {
1482
1483
  const config = tool?.config;
@@ -1505,9 +1506,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1505
1506
  }, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
1506
1507
  if (!tool) return null;
1507
1508
  const categoryKey = category ?? "external";
1508
- const gradient = tool.color ?? chunkM7KSEUZR_js.CATEGORY_COLORS[categoryKey] ?? chunkM7KSEUZR_js.CATEGORY_COLORS.external;
1509
- const categoryPill = chunkM7KSEUZR_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkM7KSEUZR_js.CATEGORY_PILL_COLORS.external;
1510
- const IconComponent = chunkM7KSEUZR_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1509
+ const gradient = tool.color ?? chunkF5UDX6JA_js.CATEGORY_COLORS[categoryKey] ?? chunkF5UDX6JA_js.CATEGORY_COLORS.external;
1510
+ const categoryPill = chunkF5UDX6JA_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkF5UDX6JA_js.CATEGORY_PILL_COLORS.external;
1511
+ const IconComponent = chunkF5UDX6JA_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1511
1512
  const graph = latestGraphRef.current;
1512
1513
  const startNode = graph.nodes.find((n) => n.type === "start");
1513
1514
  const endNode = graph.nodes.find((n) => n.type === "end");
@@ -1540,7 +1541,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1540
1541
  ] })
1541
1542
  ] });
1542
1543
  return /* @__PURE__ */ jsxRuntime.jsx(
1543
- chunkFSBR4RCK_js.GlassModal,
1544
+ chunkK4M4B6ME_js.GlassModal,
1544
1545
  {
1545
1546
  open,
1546
1547
  onClose: closeModal,
@@ -1572,7 +1573,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1572
1573
  {
1573
1574
  type: "button",
1574
1575
  onClick: () => setCategory(cat),
1575
- className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkM7KSEUZR_js.CATEGORY_PILL_COLORS[cat] ?? chunkM7KSEUZR_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
1576
+ className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkF5UDX6JA_js.CATEGORY_PILL_COLORS[cat] ?? chunkF5UDX6JA_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
1576
1577
  children: cat
1577
1578
  },
1578
1579
  cat
@@ -1659,7 +1660,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1659
1660
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
1660
1661
  ] }),
1661
1662
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1662
- chunkM7KSEUZR_js.WorkflowCanvas,
1663
+ chunkF5UDX6JA_js.WorkflowCanvas,
1663
1664
  {
1664
1665
  initialGraph,
1665
1666
  agents: [],
@@ -1675,9 +1676,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1675
1676
  }
1676
1677
  function PipelineSettingsModal({ onSave }) {
1677
1678
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1678
- const activeModal = chunkM7KSEUZR_js.useModalStore((s) => s.activeModal);
1679
- const data = chunkM7KSEUZR_js.useModalStore((s) => s.pipelineSettingsData);
1680
- const closeModal = chunkM7KSEUZR_js.useModalStore((s) => s.closeModal);
1679
+ const activeModal = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal);
1680
+ const data = chunkF5UDX6JA_js.useModalStore((s) => s.pipelineSettingsData);
1681
+ const closeModal = chunkF5UDX6JA_js.useModalStore((s) => s.closeModal);
1681
1682
  const open = activeModal === "pipeline-settings";
1682
1683
  const [nameValue, setNameValue] = react.useState("");
1683
1684
  const [descriptionValue, setDescriptionValue] = react.useState("");
@@ -1739,7 +1740,7 @@ function PipelineSettingsModal({ onSave }) {
1739
1740
  }
1740
1741
  ),
1741
1742
  /* @__PURE__ */ jsxRuntime.jsxs(
1742
- chunkFSBR4RCK_js.Button,
1743
+ chunkK4M4B6ME_js.Button,
1743
1744
  {
1744
1745
  type: "submit",
1745
1746
  form: "pipeline-settings-form",
@@ -1754,7 +1755,7 @@ function PipelineSettingsModal({ onSave }) {
1754
1755
  )
1755
1756
  ] });
1756
1757
  return /* @__PURE__ */ jsxRuntime.jsx(
1757
- chunkFSBR4RCK_js.GlassModal,
1758
+ chunkK4M4B6ME_js.GlassModal,
1758
1759
  {
1759
1760
  open,
1760
1761
  onClose: closeModal,
@@ -1768,7 +1769,7 @@ function PipelineSettingsModal({ onSave }) {
1768
1769
  onSubmit: handleSubmit,
1769
1770
  children: /* @__PURE__ */ jsxRuntime.jsxs("form", { id: "pipeline-settings-form", onSubmit: handleSubmit, className: "space-y-5", children: [
1770
1771
  /* @__PURE__ */ jsxRuntime.jsx(
1771
- chunkFSBR4RCK_js.FormInput,
1772
+ chunkK4M4B6ME_js.FormInput,
1772
1773
  {
1773
1774
  label: t("pipelineName"),
1774
1775
  value: nameValue,
@@ -1778,7 +1779,7 @@ function PipelineSettingsModal({ onSave }) {
1778
1779
  }
1779
1780
  ),
1780
1781
  /* @__PURE__ */ jsxRuntime.jsx(
1781
- chunkFSBR4RCK_js.FormTextarea,
1782
+ chunkK4M4B6ME_js.FormTextarea,
1782
1783
  {
1783
1784
  label: t("pipelineDescription"),
1784
1785
  value: descriptionValue,
@@ -1789,7 +1790,7 @@ function PipelineSettingsModal({ onSave }) {
1789
1790
  ),
1790
1791
  lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1791
1792
  /* @__PURE__ */ jsxRuntime.jsx(
1792
- chunkFSBR4RCK_js.FormInput,
1793
+ chunkK4M4B6ME_js.FormInput,
1793
1794
  {
1794
1795
  label: t("pipelineSlug", { _: "Slug" }),
1795
1796
  value: slugValue,
@@ -1916,7 +1917,7 @@ function RunReplayModal({
1916
1917
  }
1917
1918
  ),
1918
1919
  /* @__PURE__ */ jsxRuntime.jsxs(
1919
- chunkFSBR4RCK_js.Button,
1920
+ chunkK4M4B6ME_js.Button,
1920
1921
  {
1921
1922
  type: "submit",
1922
1923
  form: "run-replay-form",
@@ -1931,7 +1932,7 @@ function RunReplayModal({
1931
1932
  ] })
1932
1933
  ] });
1933
1934
  return /* @__PURE__ */ jsxRuntime.jsx(
1934
- chunkFSBR4RCK_js.GlassModal,
1935
+ chunkK4M4B6ME_js.GlassModal,
1935
1936
  {
1936
1937
  open,
1937
1938
  onClose,
@@ -2005,7 +2006,7 @@ function RowEditor({
2005
2006
  ]
2006
2007
  }
2007
2008
  ) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
2008
- chunkFSBR4RCK_js.FormTextarea,
2009
+ chunkK4M4B6ME_js.FormTextarea,
2009
2010
  {
2010
2011
  value: row.value,
2011
2012
  onValueChange: (v) => onChange({ value: v }),
@@ -2013,7 +2014,7 @@ function RowEditor({
2013
2014
  className: "font-mono"
2014
2015
  }
2015
2016
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2016
- chunkFSBR4RCK_js.FormInput,
2017
+ chunkK4M4B6ME_js.FormInput,
2017
2018
  {
2018
2019
  type: row.kind === "number" ? "number" : "text",
2019
2020
  value: row.value,
@@ -2117,7 +2118,7 @@ function ExecutionTimelinePanel({
2117
2118
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
2118
2119
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
2119
2120
  ] }),
2120
- /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.Badge, { color: meta.color, children: [
2121
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.Badge, { color: meta.color, children: [
2121
2122
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
2122
2123
  labels[entry.status]
2123
2124
  ] })
@@ -2147,7 +2148,7 @@ function NodeInspector({
2147
2148
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
2148
2149
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
2149
2150
  ] }),
2150
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Badge, { color: meta.color, children: labels[entry.status] })
2151
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: meta.color, children: labels[entry.status] })
2151
2152
  ] }),
2152
2153
  /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
2153
2154
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -2317,7 +2318,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
2317
2318
  };
2318
2319
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
2319
2320
  /* @__PURE__ */ jsxRuntime.jsx(
2320
- chunkFSBR4RCK_js.FormSelect,
2321
+ chunkK4M4B6ME_js.FormSelect,
2321
2322
  {
2322
2323
  label: "Operator",
2323
2324
  value: value.operator,
@@ -2340,7 +2341,7 @@ function SimpleEditor({
2340
2341
  const isTruthy = value.operator === "truthy";
2341
2342
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2342
2343
  /* @__PURE__ */ jsxRuntime.jsx(
2343
- chunkFSBR4RCK_js.FormInput,
2344
+ chunkK4M4B6ME_js.FormInput,
2344
2345
  {
2345
2346
  label: "Field",
2346
2347
  hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
@@ -2350,7 +2351,7 @@ function SimpleEditor({
2350
2351
  }
2351
2352
  ),
2352
2353
  !isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
2353
- chunkFSBR4RCK_js.FormInput,
2354
+ chunkK4M4B6ME_js.FormInput,
2354
2355
  {
2355
2356
  label: "Value",
2356
2357
  hint: "Literal. Numeric operators coerce via `as f64`.",
@@ -2366,7 +2367,7 @@ function ThresholdEditor({
2366
2367
  }) {
2367
2368
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
2368
2369
  /* @__PURE__ */ jsxRuntime.jsx(
2369
- chunkFSBR4RCK_js.FormInput,
2370
+ chunkK4M4B6ME_js.FormInput,
2370
2371
  {
2371
2372
  label: "Field",
2372
2373
  value: value.field ?? "",
@@ -2375,7 +2376,7 @@ function ThresholdEditor({
2375
2376
  }
2376
2377
  ),
2377
2378
  /* @__PURE__ */ jsxRuntime.jsx(
2378
- chunkFSBR4RCK_js.FormSelect,
2379
+ chunkK4M4B6ME_js.FormSelect,
2379
2380
  {
2380
2381
  label: "Direction",
2381
2382
  value: value.comparison ?? "gte",
@@ -2389,7 +2390,7 @@ function ThresholdEditor({
2389
2390
  }
2390
2391
  ),
2391
2392
  /* @__PURE__ */ jsxRuntime.jsx(
2392
- chunkFSBR4RCK_js.FormInput,
2393
+ chunkK4M4B6ME_js.FormInput,
2393
2394
  {
2394
2395
  label: "Threshold",
2395
2396
  type: "number",
@@ -2406,7 +2407,7 @@ function RegexEditor({
2406
2407
  }) {
2407
2408
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2408
2409
  /* @__PURE__ */ jsxRuntime.jsx(
2409
- chunkFSBR4RCK_js.FormInput,
2410
+ chunkK4M4B6ME_js.FormInput,
2410
2411
  {
2411
2412
  label: "Field",
2412
2413
  value: value.field ?? "",
@@ -2415,7 +2416,7 @@ function RegexEditor({
2415
2416
  }
2416
2417
  ),
2417
2418
  /* @__PURE__ */ jsxRuntime.jsx(
2418
- chunkFSBR4RCK_js.FormInput,
2419
+ chunkK4M4B6ME_js.FormInput,
2419
2420
  {
2420
2421
  label: "Pattern",
2421
2422
  hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
@@ -2443,7 +2444,7 @@ function TimeWindowEditor({
2443
2444
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2444
2445
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2445
2446
  /* @__PURE__ */ jsxRuntime.jsx(
2446
- chunkFSBR4RCK_js.FormSelect,
2447
+ chunkK4M4B6ME_js.FormSelect,
2447
2448
  {
2448
2449
  label: "Timezone",
2449
2450
  value: value.timezone ?? "UTC",
@@ -2452,7 +2453,7 @@ function TimeWindowEditor({
2452
2453
  }
2453
2454
  ),
2454
2455
  /* @__PURE__ */ jsxRuntime.jsx(
2455
- chunkFSBR4RCK_js.FormInput,
2456
+ chunkK4M4B6ME_js.FormInput,
2456
2457
  {
2457
2458
  label: "Timestamp field (optional)",
2458
2459
  hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
@@ -2465,7 +2466,7 @@ function TimeWindowEditor({
2465
2466
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2466
2467
  windows.map((win, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2 rounded-lg border border-slate-200 p-2 dark:border-slate-700", children: [
2467
2468
  /* @__PURE__ */ jsxRuntime.jsx(
2468
- chunkFSBR4RCK_js.FormInput,
2469
+ chunkK4M4B6ME_js.FormInput,
2469
2470
  {
2470
2471
  label: `Start (hour)`,
2471
2472
  type: "number",
@@ -2476,7 +2477,7 @@ function TimeWindowEditor({
2476
2477
  }
2477
2478
  ),
2478
2479
  /* @__PURE__ */ jsxRuntime.jsx(
2479
- chunkFSBR4RCK_js.FormInput,
2480
+ chunkK4M4B6ME_js.FormInput,
2480
2481
  {
2481
2482
  label: `End (hour)`,
2482
2483
  type: "number",
@@ -2486,9 +2487,9 @@ function TimeWindowEditor({
2486
2487
  onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
2487
2488
  }
2488
2489
  ),
2489
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2490
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2490
2491
  ] }, index)),
2491
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
2492
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
2492
2493
  ] })
2493
2494
  ] });
2494
2495
  }
@@ -2511,7 +2512,7 @@ function BooleanGroupEditor({
2511
2512
  });
2512
2513
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2513
2514
  /* @__PURE__ */ jsxRuntime.jsx(
2514
- chunkFSBR4RCK_js.FormSelect,
2515
+ chunkK4M4B6ME_js.FormSelect,
2515
2516
  {
2516
2517
  label: "Combinator",
2517
2518
  value: value.combinator ?? "and",
@@ -2529,9 +2530,9 @@ function BooleanGroupEditor({
2529
2530
  depth
2530
2531
  }
2531
2532
  ),
2532
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
2533
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
2533
2534
  ] }, index)),
2534
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
2535
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
2535
2536
  ] })
2536
2537
  ] });
2537
2538
  }
@@ -2567,7 +2568,7 @@ function RuleActionBuilder({ value, onChange }) {
2567
2568
  };
2568
2569
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
2569
2570
  /* @__PURE__ */ jsxRuntime.jsx(
2570
- chunkFSBR4RCK_js.FormSelect,
2571
+ chunkK4M4B6ME_js.FormSelect,
2571
2572
  {
2572
2573
  label: "Action type",
2573
2574
  value: type,
@@ -2577,7 +2578,7 @@ function RuleActionBuilder({ value, onChange }) {
2577
2578
  ),
2578
2579
  type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2579
2580
  /* @__PURE__ */ jsxRuntime.jsx(
2580
- chunkFSBR4RCK_js.FormInput,
2581
+ chunkK4M4B6ME_js.FormInput,
2581
2582
  {
2582
2583
  label: "Multiplier",
2583
2584
  type: "number",
@@ -2587,7 +2588,7 @@ function RuleActionBuilder({ value, onChange }) {
2587
2588
  }
2588
2589
  ),
2589
2590
  /* @__PURE__ */ jsxRuntime.jsx(
2590
- chunkFSBR4RCK_js.FormInput,
2591
+ chunkK4M4B6ME_js.FormInput,
2591
2592
  {
2592
2593
  label: "Reason code",
2593
2594
  value: stringParam(params.reason),
@@ -2597,7 +2598,7 @@ function RuleActionBuilder({ value, onChange }) {
2597
2598
  )
2598
2599
  ] }),
2599
2600
  type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
2600
- chunkFSBR4RCK_js.FormInput,
2601
+ chunkK4M4B6ME_js.FormInput,
2601
2602
  {
2602
2603
  label: "Floor (fraction, e.g. 0.08)",
2603
2604
  type: "number",
@@ -2607,7 +2608,7 @@ function RuleActionBuilder({ value, onChange }) {
2607
2608
  }
2608
2609
  ),
2609
2610
  type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
2610
- chunkFSBR4RCK_js.FormInput,
2611
+ chunkK4M4B6ME_js.FormInput,
2611
2612
  {
2612
2613
  label: "Tolerance (fraction)",
2613
2614
  type: "number",
@@ -2617,7 +2618,7 @@ function RuleActionBuilder({ value, onChange }) {
2617
2618
  }
2618
2619
  ),
2619
2620
  type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
2620
- chunkFSBR4RCK_js.FormInput,
2621
+ chunkK4M4B6ME_js.FormInput,
2621
2622
  {
2622
2623
  label: "Approval limit (fraction)",
2623
2624
  type: "number",
@@ -2627,7 +2628,7 @@ function RuleActionBuilder({ value, onChange }) {
2627
2628
  }
2628
2629
  ),
2629
2630
  type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
2630
- chunkFSBR4RCK_js.FormInput,
2631
+ chunkK4M4B6ME_js.FormInput,
2631
2632
  {
2632
2633
  label: "Step (e.g. 0.009)",
2633
2634
  type: "number",
@@ -2638,7 +2639,7 @@ function RuleActionBuilder({ value, onChange }) {
2638
2639
  ),
2639
2640
  type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2640
2641
  /* @__PURE__ */ jsxRuntime.jsx(
2641
- chunkFSBR4RCK_js.FormInput,
2642
+ chunkK4M4B6ME_js.FormInput,
2642
2643
  {
2643
2644
  label: "Channel",
2644
2645
  value: stringParam(params.channel),
@@ -2647,7 +2648,7 @@ function RuleActionBuilder({ value, onChange }) {
2647
2648
  }
2648
2649
  ),
2649
2650
  /* @__PURE__ */ jsxRuntime.jsx(
2650
- chunkFSBR4RCK_js.FormInput,
2651
+ chunkK4M4B6ME_js.FormInput,
2651
2652
  {
2652
2653
  label: "Severity",
2653
2654
  value: stringParam(params.severity),
@@ -2685,7 +2686,7 @@ function CustomParamsEditor({
2685
2686
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2686
2687
  entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
2687
2688
  /* @__PURE__ */ jsxRuntime.jsx(
2688
- chunkFSBR4RCK_js.FormInput,
2689
+ chunkK4M4B6ME_js.FormInput,
2689
2690
  {
2690
2691
  label: "Key",
2691
2692
  value: key,
@@ -2693,16 +2694,16 @@ function CustomParamsEditor({
2693
2694
  }
2694
2695
  ),
2695
2696
  /* @__PURE__ */ jsxRuntime.jsx(
2696
- chunkFSBR4RCK_js.FormInput,
2697
+ chunkK4M4B6ME_js.FormInput,
2697
2698
  {
2698
2699
  label: "Value",
2699
2700
  value: String(value ?? ""),
2700
2701
  onValueChange: (raw) => update(index, key, raw)
2701
2702
  }
2702
2703
  ),
2703
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2704
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2704
2705
  ] }, index)),
2705
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
2706
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
2706
2707
  ] });
2707
2708
  }
2708
2709
  function numberParam(value, fallback) {
@@ -2732,9 +2733,9 @@ function RuleForm({ value, onChange }) {
2732
2733
  );
2733
2734
  const update = (key, v) => onChange({ ...value, [key]: v });
2734
2735
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
2735
- /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.FormGrid, { children: [
2736
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.FormGrid, { children: [
2736
2737
  /* @__PURE__ */ jsxRuntime.jsx(
2737
- chunkFSBR4RCK_js.FormInput,
2738
+ chunkK4M4B6ME_js.FormInput,
2738
2739
  {
2739
2740
  label: "Name",
2740
2741
  required: true,
@@ -2743,7 +2744,7 @@ function RuleForm({ value, onChange }) {
2743
2744
  }
2744
2745
  ),
2745
2746
  /* @__PURE__ */ jsxRuntime.jsx(
2746
- chunkFSBR4RCK_js.FormInput,
2747
+ chunkK4M4B6ME_js.FormInput,
2747
2748
  {
2748
2749
  label: "Priority",
2749
2750
  type: "number",
@@ -2753,7 +2754,7 @@ function RuleForm({ value, onChange }) {
2753
2754
  }
2754
2755
  ),
2755
2756
  /* @__PURE__ */ jsxRuntime.jsx(
2756
- chunkFSBR4RCK_js.FormSelect,
2757
+ chunkK4M4B6ME_js.FormSelect,
2757
2758
  {
2758
2759
  label: "Enabled",
2759
2760
  value: value.enabled ? "true" : "false",
@@ -2765,7 +2766,7 @@ function RuleForm({ value, onChange }) {
2765
2766
  }
2766
2767
  ),
2767
2768
  /* @__PURE__ */ jsxRuntime.jsx(
2768
- chunkFSBR4RCK_js.FormTextarea,
2769
+ chunkK4M4B6ME_js.FormTextarea,
2769
2770
  {
2770
2771
  label: "Description",
2771
2772
  rows: 2,
@@ -2777,7 +2778,7 @@ function RuleForm({ value, onChange }) {
2777
2778
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2778
2779
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
2779
2780
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
2780
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Badge, { color: "indigo", children: value.condition.operator })
2781
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: "indigo", children: value.condition.operator })
2781
2782
  ] }),
2782
2783
  /* @__PURE__ */ jsxRuntime.jsx(
2783
2784
  RuleConditionBuilder,
@@ -2790,7 +2791,7 @@ function RuleForm({ value, onChange }) {
2790
2791
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2791
2792
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
2792
2793
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
2793
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Badge, { color: "fuchsia", children: value.action.type })
2794
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: "fuchsia", children: value.action.type })
2794
2795
  ] }),
2795
2796
  /* @__PURE__ */ jsxRuntime.jsx(
2796
2797
  RuleActionBuilder,
@@ -2812,7 +2813,7 @@ function RuleForm({ value, onChange }) {
2812
2813
  ),
2813
2814
  showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2814
2815
  /* @__PURE__ */ jsxRuntime.jsx(
2815
- chunkFSBR4RCK_js.FormInput,
2816
+ chunkK4M4B6ME_js.FormInput,
2816
2817
  {
2817
2818
  label: "Valid from (ISO 8601)",
2818
2819
  type: "datetime-local",
@@ -2821,7 +2822,7 @@ function RuleForm({ value, onChange }) {
2821
2822
  }
2822
2823
  ),
2823
2824
  /* @__PURE__ */ jsxRuntime.jsx(
2824
- chunkFSBR4RCK_js.FormInput,
2825
+ chunkK4M4B6ME_js.FormInput,
2825
2826
  {
2826
2827
  label: "Valid until (ISO 8601)",
2827
2828
  type: "datetime-local",
@@ -2830,7 +2831,7 @@ function RuleForm({ value, onChange }) {
2830
2831
  }
2831
2832
  ),
2832
2833
  /* @__PURE__ */ jsxRuntime.jsx(
2833
- chunkFSBR4RCK_js.FormSelect,
2834
+ chunkK4M4B6ME_js.FormSelect,
2834
2835
  {
2835
2836
  label: "Status",
2836
2837
  value: value.status ?? "active",
@@ -2839,7 +2840,7 @@ function RuleForm({ value, onChange }) {
2839
2840
  }
2840
2841
  ),
2841
2842
  /* @__PURE__ */ jsxRuntime.jsx(
2842
- chunkFSBR4RCK_js.FormInput,
2843
+ chunkK4M4B6ME_js.FormInput,
2843
2844
  {
2844
2845
  label: "Tags (comma-separated)",
2845
2846
  value: (value.tags ?? []).join(", "),
@@ -3026,8 +3027,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
3026
3027
  ] });
3027
3028
  }
3028
3029
  function LogicNodeItemCard({ item, translationFunction }) {
3029
- const IconComponent = chunkM7KSEUZR_js.LOGIC_ICON_MAP[item.nodeType];
3030
- const gradient = chunkM7KSEUZR_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3030
+ const IconComponent = chunkF5UDX6JA_js.LOGIC_ICON_MAP[item.nodeType];
3031
+ const gradient = chunkF5UDX6JA_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3031
3032
  const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
3032
3033
  const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
3033
3034
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3098,7 +3099,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3098
3099
  [entityTypes, normalizedQuery]
3099
3100
  );
3100
3101
  const filteredLogicItems = react.useMemo(() => {
3101
- const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkM7KSEUZR_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3102
+ const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkF5UDX6JA_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3102
3103
  if (!normalizedQuery) return visibleByDefault;
3103
3104
  return visibleByDefault.filter(
3104
3105
  (item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
@@ -3234,7 +3235,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3234
3235
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
3235
3236
  ] }),
3236
3237
  /* @__PURE__ */ jsxRuntime.jsx(
3237
- chunkFSBR4RCK_js.ToggleSwitch,
3238
+ chunkK4M4B6ME_js.ToggleSwitch,
3238
3239
  {
3239
3240
  checked: Boolean(tool.enabled),
3240
3241
  onChange: () => {
@@ -3275,7 +3276,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3275
3276
  ] })
3276
3277
  ] }),
3277
3278
  /* @__PURE__ */ jsxRuntime.jsx(
3278
- chunkFSBR4RCK_js.ToggleSwitch,
3279
+ chunkK4M4B6ME_js.ToggleSwitch,
3279
3280
  {
3280
3281
  checked: Boolean(rule.enabled),
3281
3282
  onChange: () => {
@@ -3311,8 +3312,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3311
3312
  limit: entity.defaultLimit
3312
3313
  });
3313
3314
  const dsLogo = getDatasourceLogo(entity.id);
3314
- const EntityIcon = chunkM7KSEUZR_js.getEntityIcon(entity.id);
3315
- const entityGradient = chunkM7KSEUZR_js.getEntityGradient(entity.id);
3315
+ const EntityIcon = chunkF5UDX6JA_js.getEntityIcon(entity.id);
3316
+ const entityGradient = chunkF5UDX6JA_js.getEntityGradient(entity.id);
3316
3317
  return /* @__PURE__ */ jsxRuntime.jsxs(
3317
3318
  "div",
3318
3319
  {
@@ -3332,7 +3333,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3332
3333
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3333
3334
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-slate-100 px-1.5 py-0.5 text-[9px] font-medium text-slate-600 dark:bg-white/10 dark:text-slate-300", children: "Read only" }),
3334
3335
  /* @__PURE__ */ jsxRuntime.jsx(
3335
- chunkFSBR4RCK_js.ToggleSwitch,
3336
+ chunkK4M4B6ME_js.ToggleSwitch,
3336
3337
  {
3337
3338
  checked: true,
3338
3339
  onChange: () => {
@@ -3667,9 +3668,9 @@ function formatDuration2(durationMs) {
3667
3668
  }
3668
3669
  function RunPanel({ open, onClose, onRun, onStop }) {
3669
3670
  const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
3670
- const nodes = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodes);
3671
- const isRunning = chunkM7KSEUZR_js.useWorkflowStore((state) => state.isRunning);
3672
- const nodeResults = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodeResults);
3671
+ const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
3672
+ const isRunning = chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
3673
+ const nodeResults = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
3673
3674
  const startNode = nodes.find((node) => node.type === "start");
3674
3675
  const hasEndNode = nodes.some((node) => node.type === "end");
3675
3676
  const hasValidStartConfig = Boolean(
@@ -4000,8 +4001,8 @@ function inferVariables(config, nodeType) {
4000
4001
  }
4001
4002
  function VariableInspector({ open, onClose }) {
4002
4003
  const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
4003
- const nodes = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodes);
4004
- const edges = chunkM7KSEUZR_js.useWorkflowStore((state) => state.edges);
4004
+ const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
4005
+ const edges = chunkF5UDX6JA_js.useWorkflowStore((state) => state.edges);
4005
4006
  const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
4006
4007
  const toggleNodeExpansion = react.useCallback((nodeId) => {
4007
4008
  setExpandedNodes((current) => {
@@ -4063,8 +4064,8 @@ function VariableInspector({ open, onClose }) {
4063
4064
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
4064
4065
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
4065
4066
  const isExpanded = expandedNodes.has(entry.nodeId);
4066
- const IconComponent = chunkM7KSEUZR_js.LOGIC_ICON_MAP[entry.nodeType];
4067
- const gradient = chunkM7KSEUZR_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4067
+ const IconComponent = chunkF5UDX6JA_js.LOGIC_ICON_MAP[entry.nodeType];
4068
+ const gradient = chunkF5UDX6JA_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4068
4069
  const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
4069
4070
  const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
4070
4071
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
@@ -4130,7 +4131,7 @@ function RunInputDialog({
4130
4131
  onRun
4131
4132
  }) {
4132
4133
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
4133
- const nodes = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodes);
4134
+ const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
4134
4135
  const [values, setValues] = react.useState({});
4135
4136
  const inputVariableNames = react.useMemo(() => {
4136
4137
  const storeStartNode = nodes.find((node) => node.type === "start");
@@ -4157,7 +4158,7 @@ function RunInputDialog({
4157
4158
  }, [onClose]);
4158
4159
  if (!open) return null;
4159
4160
  return /* @__PURE__ */ jsxRuntime.jsxs(
4160
- chunkFSBR4RCK_js.GlassModal,
4161
+ chunkK4M4B6ME_js.GlassModal,
4161
4162
  {
4162
4163
  open,
4163
4164
  onClose: handleClose,
@@ -4168,7 +4169,7 @@ function RunInputDialog({
4168
4169
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: inputVariableNames.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm text-gray-500 dark:text-gray-400", children: t("noInputs") }) : inputVariableNames.map((variableName) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4169
4170
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
4170
4171
  /* @__PURE__ */ jsxRuntime.jsx(
4171
- chunkFSBR4RCK_js.Input,
4172
+ chunkK4M4B6ME_js.Input,
4172
4173
  {
4173
4174
  value: values[variableName] ?? "",
4174
4175
  onChange: (event) => handleValueChange(variableName, event.target.value),
@@ -4177,8 +4178,8 @@ function RunInputDialog({
4177
4178
  )
4178
4179
  ] }, variableName)) }),
4179
4180
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
4180
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
4181
- /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
4181
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
4182
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
4182
4183
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
4183
4184
  t("run")
4184
4185
  ] })
@@ -4211,8 +4212,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4211
4212
  const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
4212
4213
  const [selectedRun, setSelectedRun] = react.useState(null);
4213
4214
  const [selectedNode, setSelectedNode] = react.useState(null);
4214
- const isRunning = chunkM7KSEUZR_js.useWorkflowStore((state) => state.isRunning);
4215
- const nodeResults = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodeResults);
4215
+ const isRunning = chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
4216
+ const nodeResults = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
4216
4217
  const refreshRuns = react.useCallback(async () => {
4217
4218
  setIsLoadingRuns(true);
4218
4219
  try {
@@ -4390,7 +4391,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4390
4391
  onAutoSaveGraph(graph);
4391
4392
  }, [onAutoSaveGraph, onGraphSnapshot]);
4392
4393
  return /* @__PURE__ */ jsxRuntime.jsx(
4393
- chunkM7KSEUZR_js.Workspace,
4394
+ chunkF5UDX6JA_js.Workspace,
4394
4395
  {
4395
4396
  ...workspaceProps,
4396
4397
  onGraphChange: handleGraphChange
@@ -4398,7 +4399,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4398
4399
  );
4399
4400
  });
4400
4401
  function DynamicIslandConfirm2(props) {
4401
- return /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.DynamicIslandConfirm, { ...props });
4402
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.DynamicIslandConfirm, { ...props });
4402
4403
  }
4403
4404
  var JSON_PREVIEW_LINE_LIMIT = 50;
4404
4405
  function DslExportModal({ open, onClose, workflow, graph }) {
@@ -4452,7 +4453,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4452
4453
  }, [jsonString, workflow.name, workflow.version]);
4453
4454
  if (!open) return null;
4454
4455
  return /* @__PURE__ */ jsxRuntime.jsx(
4455
- chunkFSBR4RCK_js.GlassModal,
4456
+ chunkK4M4B6ME_js.GlassModal,
4456
4457
  {
4457
4458
  open,
4458
4459
  onClose,
@@ -4494,7 +4495,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4494
4495
  ] }),
4495
4496
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
4496
4497
  /* @__PURE__ */ jsxRuntime.jsx(
4497
- chunkFSBR4RCK_js.Button,
4498
+ chunkK4M4B6ME_js.Button,
4498
4499
  {
4499
4500
  type: "button",
4500
4501
  onClick: handleCopyToClipboard,
@@ -4511,7 +4512,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4511
4512
  }
4512
4513
  ),
4513
4514
  /* @__PURE__ */ jsxRuntime.jsxs(
4514
- chunkFSBR4RCK_js.Button,
4515
+ chunkK4M4B6ME_js.Button,
4515
4516
  {
4516
4517
  type: "button",
4517
4518
  onClick: handleDownloadJson,
@@ -4670,7 +4671,7 @@ function DslImportModal({ open, onClose, onImport }) {
4670
4671
  }, []);
4671
4672
  if (!open) return null;
4672
4673
  return /* @__PURE__ */ jsxRuntime.jsx(
4673
- chunkFSBR4RCK_js.GlassModal,
4674
+ chunkK4M4B6ME_js.GlassModal,
4674
4675
  {
4675
4676
  open,
4676
4677
  onClose,
@@ -4710,7 +4711,7 @@ function DslImportModal({ open, onClose, onImport }) {
4710
4711
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
4711
4712
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
4712
4713
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: fileName }),
4713
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
4714
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
4714
4715
  ] }),
4715
4716
  validationResult.isValid ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-900/20", children: [
4716
4717
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -4738,9 +4739,9 @@ function DslImportModal({ open, onClose, onImport }) {
4738
4739
  ] })
4739
4740
  ] }) }),
4740
4741
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
4741
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
4742
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
4742
4743
  /* @__PURE__ */ jsxRuntime.jsxs(
4743
- chunkFSBR4RCK_js.Button,
4744
+ chunkK4M4B6ME_js.Button,
4744
4745
  {
4745
4746
  type: "button",
4746
4747
  onClick: handleImport,
@@ -4761,14 +4762,14 @@ function DslImportModal({ open, onClose, onImport }) {
4761
4762
  }
4762
4763
 
4763
4764
  // src/astrlabe/store/selectors.ts
4764
- var useCanUndo = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.past.length > 0);
4765
- var useCanRedo = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.future.length > 0);
4766
- var useHasCopied = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.clipboard !== null);
4767
- var useContextMenu = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.contextMenu);
4768
- var useEditingNodeId = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.editingNodeId);
4769
- var useSelectedNodeCount = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4770
- var useIsRunning = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.isRunning);
4771
- var useNodeResults = () => chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodeResults);
4765
+ var useCanUndo = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.past.length > 0);
4766
+ var useCanRedo = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.future.length > 0);
4767
+ var useHasCopied = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.clipboard !== null);
4768
+ var useContextMenu = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.contextMenu);
4769
+ var useEditingNodeId = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.editingNodeId);
4770
+ var useSelectedNodeCount = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4771
+ var useIsRunning = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
4772
+ var useNodeResults = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
4772
4773
  var DEFAULT_MAX_HISTORY = 50;
4773
4774
  function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
4774
4775
  const pastRef = react.useRef([]);
@@ -5092,5 +5093,5 @@ exports.useNodeResults = useNodeResults;
5092
5093
  exports.useSelectedNodeCount = useSelectedNodeCount;
5093
5094
  exports.useSubworkflowStore = useSubworkflowStore;
5094
5095
  exports.useUndoRedo = useUndoRedo;
5095
- //# sourceMappingURL=chunk-ERCDMBRT.js.map
5096
- //# sourceMappingURL=chunk-ERCDMBRT.js.map
5096
+ //# sourceMappingURL=chunk-PYQLY2RH.js.map
5097
+ //# sourceMappingURL=chunk-PYQLY2RH.js.map