@datatechsolutions/ui 3.12.1 → 3.13.0

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 (101) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-HTODLUKG.js → chunk-2ECLDHAT.js} +12 -12
  6. package/dist/{chunk-HTODLUKG.js.map → chunk-2ECLDHAT.js.map} +1 -1
  7. package/dist/{chunk-NQGLSM46.mjs → chunk-4VHFGW7I.mjs} +4 -4
  8. package/dist/{chunk-NQGLSM46.mjs.map → chunk-4VHFGW7I.mjs.map} +1 -1
  9. package/dist/{chunk-ULKZGM2T.js → chunk-5ETT54QS.js} +37 -37
  10. package/dist/{chunk-ULKZGM2T.js.map → chunk-5ETT54QS.js.map} +1 -1
  11. package/dist/{chunk-N5GQIT7A.mjs → chunk-6KDTVSZT.mjs} +7 -7
  12. package/dist/{chunk-N5GQIT7A.mjs.map → chunk-6KDTVSZT.mjs.map} +1 -1
  13. package/dist/{chunk-VYU2FYDE.js → chunk-6YTYD4P5.js} +66 -66
  14. package/dist/{chunk-VYU2FYDE.js.map → chunk-6YTYD4P5.js.map} +1 -1
  15. package/dist/{chunk-YYNGXKUE.mjs → chunk-7TYNV6SY.mjs} +4 -4
  16. package/dist/{chunk-YYNGXKUE.mjs.map → chunk-7TYNV6SY.mjs.map} +1 -1
  17. package/dist/{chunk-RT264BD4.mjs → chunk-AHNH2PMI.mjs} +4 -4
  18. package/dist/{chunk-RT264BD4.mjs.map → chunk-AHNH2PMI.mjs.map} +1 -1
  19. package/dist/{chunk-RBH723MG.mjs → chunk-AKWCT53S.mjs} +4 -4
  20. package/dist/{chunk-RBH723MG.mjs.map → chunk-AKWCT53S.mjs.map} +1 -1
  21. package/dist/{chunk-MYHBXIO2.js → chunk-AMCFAGK3.js} +34 -34
  22. package/dist/{chunk-MYHBXIO2.js.map → chunk-AMCFAGK3.js.map} +1 -1
  23. package/dist/{chunk-UVFWKDRO.mjs → chunk-ANFSQJNI.mjs} +4 -4
  24. package/dist/{chunk-UVFWKDRO.mjs.map → chunk-ANFSQJNI.mjs.map} +1 -1
  25. package/dist/{chunk-BPMYNE7S.mjs → chunk-CSOMZ5UM.mjs} +4 -4
  26. package/dist/{chunk-BPMYNE7S.mjs.map → chunk-CSOMZ5UM.mjs.map} +1 -1
  27. package/dist/{chunk-FKRIQYRG.js → chunk-D5OTZGA2.js} +126 -127
  28. package/dist/chunk-D5OTZGA2.js.map +1 -0
  29. package/dist/{chunk-V3UZCOZI.js → chunk-IIRS5XZY.js} +32 -32
  30. package/dist/{chunk-V3UZCOZI.js.map → chunk-IIRS5XZY.js.map} +1 -1
  31. package/dist/{chunk-Z75CEP4V.js → chunk-K5567JM5.js} +13 -13
  32. package/dist/{chunk-Z75CEP4V.js.map → chunk-K5567JM5.js.map} +1 -1
  33. package/dist/{chunk-OM5NNUD2.mjs → chunk-KWH7JIRP.mjs} +3 -3
  34. package/dist/{chunk-OM5NNUD2.mjs.map → chunk-KWH7JIRP.mjs.map} +1 -1
  35. package/dist/{chunk-MFF37C24.js → chunk-MQDCUBVW.js} +150 -150
  36. package/dist/{chunk-MFF37C24.js.map → chunk-MQDCUBVW.js.map} +1 -1
  37. package/dist/{chunk-OW5LSEHU.mjs → chunk-MSKKNPRE.mjs} +3 -3
  38. package/dist/{chunk-OW5LSEHU.mjs.map → chunk-MSKKNPRE.mjs.map} +1 -1
  39. package/dist/{chunk-PLEWG2L7.js → chunk-N4YT3QA5.js} +15 -15
  40. package/dist/{chunk-PLEWG2L7.js.map → chunk-N4YT3QA5.js.map} +1 -1
  41. package/dist/{chunk-XGAPZT4J.js → chunk-NF5DDM5V.js} +40 -40
  42. package/dist/{chunk-XGAPZT4J.js.map → chunk-NF5DDM5V.js.map} +1 -1
  43. package/dist/{chunk-NK4H3JWN.mjs → chunk-OC4AOYU5.mjs} +4 -4
  44. package/dist/{chunk-NK4H3JWN.mjs.map → chunk-OC4AOYU5.mjs.map} +1 -1
  45. package/dist/{chunk-ID55ABBB.js → chunk-OY5HUZSD.js} +44 -44
  46. package/dist/{chunk-ID55ABBB.js.map → chunk-OY5HUZSD.js.map} +1 -1
  47. package/dist/{chunk-5OZTI7TR.js → chunk-PPIUMCUZ.js} +6 -6
  48. package/dist/{chunk-5OZTI7TR.js.map → chunk-PPIUMCUZ.js.map} +1 -1
  49. package/dist/{chunk-WLNY3GVM.mjs → chunk-QGRTV35L.mjs} +7 -7
  50. package/dist/{chunk-WLNY3GVM.mjs.map → chunk-QGRTV35L.mjs.map} +1 -1
  51. package/dist/{chunk-TDNBO3V7.js → chunk-SDYKXLCU.js} +56 -56
  52. package/dist/{chunk-TDNBO3V7.js.map → chunk-SDYKXLCU.js.map} +1 -1
  53. package/dist/{chunk-5TLKFOEL.mjs → chunk-UPYACFZJ.mjs} +5 -5
  54. package/dist/{chunk-5TLKFOEL.mjs.map → chunk-UPYACFZJ.mjs.map} +1 -1
  55. package/dist/{chunk-EDI46QA7.mjs → chunk-UXHJS2SH.mjs} +4 -5
  56. package/dist/chunk-UXHJS2SH.mjs.map +1 -0
  57. package/dist/{chunk-LRNVB7MO.js → chunk-VI4IUTMX.js} +4 -4
  58. package/dist/{chunk-LRNVB7MO.js.map → chunk-VI4IUTMX.js.map} +1 -1
  59. package/dist/{chunk-4D23CQZM.mjs → chunk-VIB42VMZ.mjs} +5 -5
  60. package/dist/{chunk-4D23CQZM.mjs.map → chunk-VIB42VMZ.mjs.map} +1 -1
  61. package/dist/{chunk-QSCWV47U.js → chunk-WOTKBKS6.js} +31 -31
  62. package/dist/{chunk-QSCWV47U.js.map → chunk-WOTKBKS6.js.map} +1 -1
  63. package/dist/{chunk-YXN2K77G.js → chunk-Y5VN4SPH.js} +26 -3
  64. package/dist/chunk-Y5VN4SPH.js.map +1 -0
  65. package/dist/{chunk-7VJ7CMMT.mjs → chunk-ZEFNBGYI.mjs} +26 -3
  66. package/dist/chunk-ZEFNBGYI.mjs.map +1 -0
  67. package/dist/{chunk-PIIY2Z2O.mjs → chunk-ZRCXDKBE.mjs} +3 -3
  68. package/dist/{chunk-PIIY2Z2O.mjs.map → chunk-ZRCXDKBE.mjs.map} +1 -1
  69. package/dist/index.js +668 -668
  70. package/dist/index.mjs +2 -2
  71. package/dist/lib/i18n-context.d.mts +12 -4
  72. package/dist/lib/i18n-context.d.ts +12 -4
  73. package/dist/lib/i18n-context.js +6 -6
  74. package/dist/lib/i18n-context.mjs +1 -1
  75. package/dist/platform/admin/index.js +10 -10
  76. package/dist/platform/admin/index.mjs +4 -4
  77. package/dist/platform/agents-workspace.js +7 -7
  78. package/dist/platform/agents-workspace.mjs +6 -6
  79. package/dist/platform/app-shell.js +4 -4
  80. package/dist/platform/app-shell.mjs +3 -3
  81. package/dist/platform/auth/index.js +22 -22
  82. package/dist/platform/auth/index.mjs +4 -4
  83. package/dist/platform/billing/index.js +4 -4
  84. package/dist/platform/billing/index.mjs +3 -3
  85. package/dist/platform/impersonation/index.js +4 -4
  86. package/dist/platform/impersonation/index.mjs +3 -3
  87. package/dist/platform/index.d.mts +1 -1
  88. package/dist/platform/index.d.ts +1 -1
  89. package/dist/platform/index.js +96 -96
  90. package/dist/platform/index.mjs +18 -18
  91. package/dist/platform/pages/index.js +346 -346
  92. package/dist/platform/pages/index.mjs +8 -8
  93. package/dist/platform/settings/index.js +7 -7
  94. package/dist/platform/settings/index.mjs +6 -6
  95. package/dist/platform/workflow-canvas-shell.js +5 -5
  96. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  97. package/package.json +2 -1
  98. package/dist/chunk-7VJ7CMMT.mjs.map +0 -1
  99. package/dist/chunk-EDI46QA7.mjs.map +0 -1
  100. package/dist/chunk-FKRIQYRG.js.map +0 -1
  101. package/dist/chunk-YXN2K77G.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkFKRIQYRG_js = require('./chunk-FKRIQYRG.js');
5
- var chunkULKZGM2T_js = require('./chunk-ULKZGM2T.js');
6
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
4
+ var chunkD5OTZGA2_js = require('./chunk-D5OTZGA2.js');
5
+ var chunk5ETT54QS_js = require('./chunk-5ETT54QS.js');
6
+ var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
7
7
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
8
8
  var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
9
9
  var react = require('react');
@@ -41,11 +41,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
41
41
  const isCompact = data.displayMode === "compact";
42
42
  if (!config) {
43
43
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
44
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeRunningIndicator, { nodeId: id }),
45
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
47
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
48
- chunkFKRIQYRG_js.NodeCardHeader,
44
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeRunningIndicator, { nodeId: id }),
45
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
47
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
48
+ chunkD5OTZGA2_js.NodeCardHeader,
49
49
  {
50
50
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
51
51
  title: data.label || "Model Provider",
@@ -53,8 +53,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
53
53
  iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
54
54
  }
55
55
  ) }),
56
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
57
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
56
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
57
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
58
58
  ] });
59
59
  }
60
60
  const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
@@ -63,18 +63,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
63
63
  const isConfigured = !!(config.credentialRef || config.apiKeyRef);
64
64
  const logo = PROVIDER_LOGOS[config.providerType];
65
65
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
66
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeRunningIndicator, { nodeId: id }),
67
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
68
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeRunningIndicator, { nodeId: id }),
67
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
68
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
69
69
  /* @__PURE__ */ jsxRuntime.jsx(
70
70
  "button",
71
71
  {
72
72
  type: "button",
73
73
  onClick: () => data.onEdit?.(id),
74
74
  className: "w-full text-left",
75
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFKRIQYRG_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
75
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkD5OTZGA2_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
76
76
  /* @__PURE__ */ jsxRuntime.jsx(
77
- chunkFKRIQYRG_js.NodeCardHeader,
77
+ chunkD5OTZGA2_js.NodeCardHeader,
78
78
  {
79
79
  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" }),
80
80
  title: displayName,
@@ -82,7 +82,7 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
82
82
  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"}`
83
83
  }
84
84
  ),
85
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
86
86
  /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
87
87
  regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
88
88
  /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
@@ -94,20 +94,20 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
94
94
  ] })
95
95
  }
96
96
  ),
97
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
98
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
97
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
98
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
99
99
  ] });
100
100
  });
101
101
  var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
102
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
102
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
103
103
  const { config, label, onDelete, onEdit } = data;
104
104
  const isCompact = data.displayMode === "compact";
105
105
  const keyPreview = config.key ? config.key.slice(0, 30) : "";
106
106
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
107
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeRunningIndicator, { nodeId: id }),
108
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeRunningIndicator, { nodeId: id }),
108
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
109
109
  /* @__PURE__ */ jsxRuntime.jsxs(
110
- chunkFKRIQYRG_js.NodeInteractiveCard,
110
+ chunkD5OTZGA2_js.NodeInteractiveCard,
111
111
  {
112
112
  nodeId: id,
113
113
  onEdit,
@@ -116,27 +116,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
116
116
  nodeType: "s3_write",
117
117
  children: [
118
118
  /* @__PURE__ */ jsxRuntime.jsx(
119
- chunkFKRIQYRG_js.NodeCardHeader,
119
+ chunkD5OTZGA2_js.NodeCardHeader,
120
120
  {
121
- icon: /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
121
+ icon: /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
122
122
  title: label,
123
123
  description: t("s3WriteNodeDescription"),
124
124
  compact: isCompact,
125
125
  iconClassName: ""
126
126
  }
127
127
  ),
128
- /* @__PURE__ */ jsxRuntime.jsxs(chunkFKRIQYRG_js.NodeCardMeta, { compact: isCompact, children: [
128
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkD5OTZGA2_js.NodeCardMeta, { compact: isCompact, children: [
129
129
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
130
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
131
- config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
130
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
131
+ config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
132
132
  keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
133
133
  ] }),
134
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.NodeCardDeleteAction, { nodeId: id, onDelete })
134
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.NodeCardDeleteAction, { nodeId: id, onDelete })
135
135
  ] })
136
136
  ]
137
137
  }
138
138
  ),
139
- /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
139
+ /* @__PURE__ */ jsxRuntime.jsx(chunkD5OTZGA2_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
140
140
  ] });
141
141
  });
142
142
  function AnthropicModelIcon({ className }) {
@@ -287,7 +287,7 @@ function FieldEditor({
287
287
  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: [
288
288
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
289
289
  /* @__PURE__ */ jsxRuntime.jsx(
290
- chunkULKZGM2T_js.FormInput,
290
+ chunk5ETT54QS_js.FormInput,
291
291
  {
292
292
  label: "Name",
293
293
  value: field.name,
@@ -296,7 +296,7 @@ function FieldEditor({
296
296
  }
297
297
  ),
298
298
  /* @__PURE__ */ jsxRuntime.jsx(
299
- chunkULKZGM2T_js.FormSelect,
299
+ chunk5ETT54QS_js.FormSelect,
300
300
  {
301
301
  label: "Type",
302
302
  value: field.type,
@@ -319,7 +319,7 @@ function FieldEditor({
319
319
  /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
320
320
  ] }),
321
321
  /* @__PURE__ */ jsxRuntime.jsx(
322
- chunkULKZGM2T_js.FormInput,
322
+ chunk5ETT54QS_js.FormInput,
323
323
  {
324
324
  label: "Description (optional)",
325
325
  value: field.description,
@@ -612,13 +612,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
612
612
  ] });
613
613
  }
614
614
  function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
615
- const frameworkKeys = Object.keys(chunkFKRIQYRG_js.FRAMEWORK_META);
615
+ const frameworkKeys = Object.keys(chunkD5OTZGA2_js.FRAMEWORK_META);
616
616
  const hasProviderConstraints = connectedProviderTypes.length > 0;
617
- const compatibleModels = chunkFKRIQYRG_js.getCompatibleModels(models, selectedFramework);
617
+ const compatibleModels = chunkD5OTZGA2_js.getCompatibleModels(models, selectedFramework);
618
618
  const handleFrameworkChange = react.useCallback((newFramework) => {
619
619
  setSelectedFramework(newFramework);
620
- if (!chunkFKRIQYRG_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
621
- const compatible = chunkFKRIQYRG_js.getCompatibleModels(models, newFramework);
620
+ if (!chunkD5OTZGA2_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
621
+ const compatible = chunkD5OTZGA2_js.getCompatibleModels(models, newFramework);
622
622
  if (compatible.length > 0) {
623
623
  setSelectedModelId(compatible[0].id);
624
624
  }
@@ -629,10 +629,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
629
629
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
630
630
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
631
631
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
632
- const meta = chunkFKRIQYRG_js.FRAMEWORK_META[key];
632
+ const meta = chunkD5OTZGA2_js.FRAMEWORK_META[key];
633
633
  const isSelected = key === selectedFramework;
634
- const compatCount = chunkFKRIQYRG_js.getCompatibleModels(models, key).length;
635
- const isCompatibleWithProviders = !hasProviderConstraints || chunkFKRIQYRG_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
634
+ const compatCount = chunkD5OTZGA2_js.getCompatibleModels(models, key).length;
635
+ const isCompatibleWithProviders = !hasProviderConstraints || chunkD5OTZGA2_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
636
636
  return /* @__PURE__ */ jsxRuntime.jsxs(
637
637
  "button",
638
638
  {
@@ -664,7 +664,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
664
664
  ] }),
665
665
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
666
666
  const isSelected = model.id === selectedModelId;
667
- const isCompatible = chunkFKRIQYRG_js.isModelCompatibleWithFramework(model.id, selectedFramework);
667
+ const isCompatible = chunkD5OTZGA2_js.isModelCompatibleWithFramework(model.id, selectedFramework);
668
668
  const { IconComponent, color, providerLabel } = getModelIcon(model.id);
669
669
  return /* @__PURE__ */ jsxRuntime.jsxs(
670
670
  "button",
@@ -822,7 +822,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
822
822
  ] }),
823
823
  tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
824
824
  tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
825
- const meta = chunkFKRIQYRG_js.getFrameworkMeta(framework);
825
+ const meta = chunkD5OTZGA2_js.getFrameworkMeta(framework);
826
826
  const isCurrentFw = framework === agentFramework;
827
827
  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: [
828
828
  /* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
@@ -839,7 +839,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
839
839
  event.stopPropagation();
840
840
  },
841
841
  children: /* @__PURE__ */ jsxRuntime.jsx(
842
- chunkULKZGM2T_js.ToggleSwitch,
842
+ chunk5ETT54QS_js.ToggleSwitch,
843
843
  {
844
844
  checked: isEnabled,
845
845
  onChange: () => onToggle(tool.agentToolId),
@@ -887,7 +887,7 @@ function EngineTab({
887
887
  const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
888
888
  const configuredCompatible = compatibleProviders.filter((p) => p.configured);
889
889
  const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
890
- const frameworkMeta = chunkFKRIQYRG_js.getFrameworkMeta(selectedFramework);
890
+ const frameworkMeta = chunkD5OTZGA2_js.getFrameworkMeta(selectedFramework);
891
891
  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";
892
892
  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: [
893
893
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1030,10 +1030,10 @@ function EngineTab({
1030
1030
  ] }) });
1031
1031
  }
1032
1032
  function AgentModal({ onSaved, onPersist }) {
1033
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1034
- const activeModal = chunkFKRIQYRG_js.useModalStore((s) => s.activeModal);
1035
- const agentData = chunkFKRIQYRG_js.useModalStore((s) => s.agentData);
1036
- const closeModal = chunkFKRIQYRG_js.useModalStore((s) => s.closeModal);
1033
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1034
+ const activeModal = chunkD5OTZGA2_js.useModalStore((s) => s.activeModal);
1035
+ const agentData = chunkD5OTZGA2_js.useModalStore((s) => s.agentData);
1036
+ const closeModal = chunkD5OTZGA2_js.useModalStore((s) => s.closeModal);
1037
1037
  const open = activeModal === "agent";
1038
1038
  const agent = agentData?.agent ?? null;
1039
1039
  const models = agentData?.models ?? [];
@@ -1181,7 +1181,7 @@ function AgentModal({ onSaved, onPersist }) {
1181
1181
  const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
1182
1182
  const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
1183
1183
  const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
1184
- chunkULKZGM2T_js.Avatar,
1184
+ chunk5ETT54QS_js.Avatar,
1185
1185
  {
1186
1186
  src: effectiveAvatarUrl || void 0,
1187
1187
  alt: displayName || agent.name,
@@ -1193,7 +1193,7 @@ function AgentModal({ onSaved, onPersist }) {
1193
1193
  const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
1194
1194
  /* @__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" }) }),
1195
1195
  /* @__PURE__ */ jsxRuntime.jsx(
1196
- chunkULKZGM2T_js.ToggleSwitch,
1196
+ chunk5ETT54QS_js.ToggleSwitch,
1197
1197
  {
1198
1198
  size: "sm",
1199
1199
  color: "green",
@@ -1207,7 +1207,7 @@ function AgentModal({ onSaved, onPersist }) {
1207
1207
  )
1208
1208
  ] });
1209
1209
  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(
1210
- chunkULKZGM2T_js.HeroBlock,
1210
+ chunk5ETT54QS_js.HeroBlock,
1211
1211
  {
1212
1212
  icon: avatarNode,
1213
1213
  iconBackground: "none",
@@ -1270,7 +1270,7 @@ function AgentModal({ onSaved, onPersist }) {
1270
1270
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
1271
1271
  ] });
1272
1272
  return /* @__PURE__ */ jsxRuntime.jsx(
1273
- chunkULKZGM2T_js.GlassModal,
1273
+ chunk5ETT54QS_js.GlassModal,
1274
1274
  {
1275
1275
  open,
1276
1276
  onClose: handleClose,
@@ -1287,7 +1287,7 @@ function AgentModal({ onSaved, onPersist }) {
1287
1287
  },
1288
1288
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
1289
1289
  /* @__PURE__ */ jsxRuntime.jsx(
1290
- chunkULKZGM2T_js.SectionCard,
1290
+ chunk5ETT54QS_js.SectionCard,
1291
1291
  {
1292
1292
  variant: "glass",
1293
1293
  padded: false,
@@ -1327,7 +1327,7 @@ function AgentModal({ onSaved, onPersist }) {
1327
1327
  }
1328
1328
  ),
1329
1329
  /* @__PURE__ */ jsxRuntime.jsx(
1330
- chunkULKZGM2T_js.SectionCard,
1330
+ chunk5ETT54QS_js.SectionCard,
1331
1331
  {
1332
1332
  variant: "glass",
1333
1333
  padded: false,
@@ -1355,7 +1355,7 @@ function AgentModal({ onSaved, onPersist }) {
1355
1355
  }
1356
1356
  ),
1357
1357
  /* @__PURE__ */ jsxRuntime.jsx(
1358
- chunkULKZGM2T_js.SectionCard,
1358
+ chunk5ETT54QS_js.SectionCard,
1359
1359
  {
1360
1360
  variant: "glass",
1361
1361
  padded: false,
@@ -1461,7 +1461,7 @@ function ConfigSection({ title, icon: Icon, defaultOpen = true, children }) {
1461
1461
  ] });
1462
1462
  }
1463
1463
  function SubworkflowModal({ onSaved, onMaximize }) {
1464
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1464
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1465
1465
  const tool = useSubworkflowStore((s) => s.tool);
1466
1466
  const open = useSubworkflowStore((s) => s.open);
1467
1467
  const name = useSubworkflowStore((s) => s.name);
@@ -1478,7 +1478,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1478
1478
  const markDirty = useSubworkflowStore((s) => s.markDirty);
1479
1479
  const markSaved = useSubworkflowStore((s) => s.markSaved);
1480
1480
  const closeModal = useSubworkflowStore((s) => s.closeModal);
1481
- const agentBehind = chunkFKRIQYRG_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1481
+ const agentBehind = chunkD5OTZGA2_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1482
1482
  const isCreateMode = !tool?.toolId;
1483
1483
  const initialGraph = react.useMemo(() => {
1484
1484
  const config = tool?.config;
@@ -1507,9 +1507,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1507
1507
  }, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
1508
1508
  if (!tool) return null;
1509
1509
  const categoryKey = category ?? "external";
1510
- const gradient = tool.color ?? chunkFKRIQYRG_js.CATEGORY_COLORS[categoryKey] ?? chunkFKRIQYRG_js.CATEGORY_COLORS.external;
1511
- const categoryPill = chunkFKRIQYRG_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkFKRIQYRG_js.CATEGORY_PILL_COLORS.external;
1512
- const IconComponent = chunkFKRIQYRG_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1510
+ const gradient = tool.color ?? chunkD5OTZGA2_js.CATEGORY_COLORS[categoryKey] ?? chunkD5OTZGA2_js.CATEGORY_COLORS.external;
1511
+ const categoryPill = chunkD5OTZGA2_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkD5OTZGA2_js.CATEGORY_PILL_COLORS.external;
1512
+ const IconComponent = chunkD5OTZGA2_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1513
1513
  const graph = latestGraphRef.current;
1514
1514
  const startNode = graph.nodes.find((n) => n.type === "start");
1515
1515
  const endNode = graph.nodes.find((n) => n.type === "end");
@@ -1542,7 +1542,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1542
1542
  ] })
1543
1543
  ] });
1544
1544
  return /* @__PURE__ */ jsxRuntime.jsx(
1545
- chunkULKZGM2T_js.GlassModal,
1545
+ chunk5ETT54QS_js.GlassModal,
1546
1546
  {
1547
1547
  open,
1548
1548
  onClose: closeModal,
@@ -1574,7 +1574,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1574
1574
  {
1575
1575
  type: "button",
1576
1576
  onClick: () => setCategory(cat),
1577
- className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkFKRIQYRG_js.CATEGORY_PILL_COLORS[cat] ?? chunkFKRIQYRG_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"}`,
1577
+ className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkD5OTZGA2_js.CATEGORY_PILL_COLORS[cat] ?? chunkD5OTZGA2_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"}`,
1578
1578
  children: cat
1579
1579
  },
1580
1580
  cat
@@ -1661,7 +1661,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1661
1661
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
1662
1662
  ] }),
1663
1663
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1664
- chunkFKRIQYRG_js.WorkflowCanvas,
1664
+ chunkD5OTZGA2_js.WorkflowCanvas,
1665
1665
  {
1666
1666
  initialGraph,
1667
1667
  agents: [],
@@ -1676,10 +1676,10 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1676
1676
  );
1677
1677
  }
1678
1678
  function PipelineSettingsModal({ onSave }) {
1679
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1680
- const activeModal = chunkFKRIQYRG_js.useModalStore((s) => s.activeModal);
1681
- const data = chunkFKRIQYRG_js.useModalStore((s) => s.pipelineSettingsData);
1682
- const closeModal = chunkFKRIQYRG_js.useModalStore((s) => s.closeModal);
1679
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1680
+ const activeModal = chunkD5OTZGA2_js.useModalStore((s) => s.activeModal);
1681
+ const data = chunkD5OTZGA2_js.useModalStore((s) => s.pipelineSettingsData);
1682
+ const closeModal = chunkD5OTZGA2_js.useModalStore((s) => s.closeModal);
1683
1683
  const open = activeModal === "pipeline-settings";
1684
1684
  const [nameValue, setNameValue] = react.useState("");
1685
1685
  const [descriptionValue, setDescriptionValue] = react.useState("");
@@ -1757,7 +1757,7 @@ function PipelineSettingsModal({ onSave }) {
1757
1757
  )
1758
1758
  ] });
1759
1759
  return /* @__PURE__ */ jsxRuntime.jsx(
1760
- chunkULKZGM2T_js.GlassModal,
1760
+ chunk5ETT54QS_js.GlassModal,
1761
1761
  {
1762
1762
  open,
1763
1763
  onClose: closeModal,
@@ -1780,7 +1780,7 @@ function PipelineSettingsModal({ onSave }) {
1780
1780
  },
1781
1781
  children: [
1782
1782
  /* @__PURE__ */ jsxRuntime.jsx(
1783
- chunkULKZGM2T_js.FormInput,
1783
+ chunk5ETT54QS_js.FormInput,
1784
1784
  {
1785
1785
  label: t("pipelineName"),
1786
1786
  value: nameValue,
@@ -1790,7 +1790,7 @@ function PipelineSettingsModal({ onSave }) {
1790
1790
  }
1791
1791
  ),
1792
1792
  /* @__PURE__ */ jsxRuntime.jsx(
1793
- chunkULKZGM2T_js.FormTextarea,
1793
+ chunk5ETT54QS_js.FormTextarea,
1794
1794
  {
1795
1795
  label: t("pipelineDescription"),
1796
1796
  value: descriptionValue,
@@ -1801,7 +1801,7 @@ function PipelineSettingsModal({ onSave }) {
1801
1801
  ),
1802
1802
  lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1803
1803
  /* @__PURE__ */ jsxRuntime.jsx(
1804
- chunkULKZGM2T_js.FormInput,
1804
+ chunk5ETT54QS_js.FormInput,
1805
1805
  {
1806
1806
  label: t("pipelineSlug", { _: "Slug" }),
1807
1807
  value: slugValue,
@@ -1860,7 +1860,7 @@ function RunReplayModal({
1860
1860
  originalInputs,
1861
1861
  onReplay
1862
1862
  }) {
1863
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1863
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1864
1864
  const [rows, setRows] = react.useState([]);
1865
1865
  const [submitting, setSubmitting] = react.useState(false);
1866
1866
  const [error, setError] = react.useState(null);
@@ -1945,7 +1945,7 @@ function RunReplayModal({
1945
1945
  ] })
1946
1946
  ] });
1947
1947
  return /* @__PURE__ */ jsxRuntime.jsx(
1948
- chunkULKZGM2T_js.GlassModal,
1948
+ chunk5ETT54QS_js.GlassModal,
1949
1949
  {
1950
1950
  open,
1951
1951
  onClose,
@@ -2019,7 +2019,7 @@ function RowEditor({
2019
2019
  ]
2020
2020
  }
2021
2021
  ) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
2022
- chunkULKZGM2T_js.FormTextarea,
2022
+ chunk5ETT54QS_js.FormTextarea,
2023
2023
  {
2024
2024
  value: row.value,
2025
2025
  onValueChange: (v) => onChange({ value: v }),
@@ -2027,7 +2027,7 @@ function RowEditor({
2027
2027
  className: "font-mono"
2028
2028
  }
2029
2029
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2030
- chunkULKZGM2T_js.FormInput,
2030
+ chunk5ETT54QS_js.FormInput,
2031
2031
  {
2032
2032
  type: row.kind === "number" ? "number" : "text",
2033
2033
  value: row.value,
@@ -2331,7 +2331,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
2331
2331
  };
2332
2332
  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: [
2333
2333
  /* @__PURE__ */ jsxRuntime.jsx(
2334
- chunkULKZGM2T_js.FormSelect,
2334
+ chunk5ETT54QS_js.FormSelect,
2335
2335
  {
2336
2336
  label: "Operator",
2337
2337
  value: value.operator,
@@ -2354,7 +2354,7 @@ function SimpleEditor({
2354
2354
  const isTruthy = value.operator === "truthy";
2355
2355
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2356
2356
  /* @__PURE__ */ jsxRuntime.jsx(
2357
- chunkULKZGM2T_js.FormInput,
2357
+ chunk5ETT54QS_js.FormInput,
2358
2358
  {
2359
2359
  label: "Field",
2360
2360
  hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
@@ -2364,7 +2364,7 @@ function SimpleEditor({
2364
2364
  }
2365
2365
  ),
2366
2366
  !isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
2367
- chunkULKZGM2T_js.FormInput,
2367
+ chunk5ETT54QS_js.FormInput,
2368
2368
  {
2369
2369
  label: "Value",
2370
2370
  hint: "Literal. Numeric operators coerce via `as f64`.",
@@ -2380,7 +2380,7 @@ function ThresholdEditor({
2380
2380
  }) {
2381
2381
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
2382
2382
  /* @__PURE__ */ jsxRuntime.jsx(
2383
- chunkULKZGM2T_js.FormInput,
2383
+ chunk5ETT54QS_js.FormInput,
2384
2384
  {
2385
2385
  label: "Field",
2386
2386
  value: value.field ?? "",
@@ -2389,7 +2389,7 @@ function ThresholdEditor({
2389
2389
  }
2390
2390
  ),
2391
2391
  /* @__PURE__ */ jsxRuntime.jsx(
2392
- chunkULKZGM2T_js.FormSelect,
2392
+ chunk5ETT54QS_js.FormSelect,
2393
2393
  {
2394
2394
  label: "Direction",
2395
2395
  value: value.comparison ?? "gte",
@@ -2403,7 +2403,7 @@ function ThresholdEditor({
2403
2403
  }
2404
2404
  ),
2405
2405
  /* @__PURE__ */ jsxRuntime.jsx(
2406
- chunkULKZGM2T_js.FormInput,
2406
+ chunk5ETT54QS_js.FormInput,
2407
2407
  {
2408
2408
  label: "Threshold",
2409
2409
  type: "number",
@@ -2420,7 +2420,7 @@ function RegexEditor({
2420
2420
  }) {
2421
2421
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2422
2422
  /* @__PURE__ */ jsxRuntime.jsx(
2423
- chunkULKZGM2T_js.FormInput,
2423
+ chunk5ETT54QS_js.FormInput,
2424
2424
  {
2425
2425
  label: "Field",
2426
2426
  value: value.field ?? "",
@@ -2429,7 +2429,7 @@ function RegexEditor({
2429
2429
  }
2430
2430
  ),
2431
2431
  /* @__PURE__ */ jsxRuntime.jsx(
2432
- chunkULKZGM2T_js.FormInput,
2432
+ chunk5ETT54QS_js.FormInput,
2433
2433
  {
2434
2434
  label: "Pattern",
2435
2435
  hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
@@ -2457,7 +2457,7 @@ function TimeWindowEditor({
2457
2457
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2458
2458
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2459
2459
  /* @__PURE__ */ jsxRuntime.jsx(
2460
- chunkULKZGM2T_js.FormSelect,
2460
+ chunk5ETT54QS_js.FormSelect,
2461
2461
  {
2462
2462
  label: "Timezone",
2463
2463
  value: value.timezone ?? "UTC",
@@ -2466,7 +2466,7 @@ function TimeWindowEditor({
2466
2466
  }
2467
2467
  ),
2468
2468
  /* @__PURE__ */ jsxRuntime.jsx(
2469
- chunkULKZGM2T_js.FormInput,
2469
+ chunk5ETT54QS_js.FormInput,
2470
2470
  {
2471
2471
  label: "Timestamp field (optional)",
2472
2472
  hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
@@ -2479,7 +2479,7 @@ function TimeWindowEditor({
2479
2479
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2480
2480
  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: [
2481
2481
  /* @__PURE__ */ jsxRuntime.jsx(
2482
- chunkULKZGM2T_js.FormInput,
2482
+ chunk5ETT54QS_js.FormInput,
2483
2483
  {
2484
2484
  label: `Start (hour)`,
2485
2485
  type: "number",
@@ -2490,7 +2490,7 @@ function TimeWindowEditor({
2490
2490
  }
2491
2491
  ),
2492
2492
  /* @__PURE__ */ jsxRuntime.jsx(
2493
- chunkULKZGM2T_js.FormInput,
2493
+ chunk5ETT54QS_js.FormInput,
2494
2494
  {
2495
2495
  label: `End (hour)`,
2496
2496
  type: "number",
@@ -2525,7 +2525,7 @@ function BooleanGroupEditor({
2525
2525
  });
2526
2526
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2527
2527
  /* @__PURE__ */ jsxRuntime.jsx(
2528
- chunkULKZGM2T_js.FormSelect,
2528
+ chunk5ETT54QS_js.FormSelect,
2529
2529
  {
2530
2530
  label: "Combinator",
2531
2531
  value: value.combinator ?? "and",
@@ -2581,7 +2581,7 @@ function RuleActionBuilder({ value, onChange }) {
2581
2581
  };
2582
2582
  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: [
2583
2583
  /* @__PURE__ */ jsxRuntime.jsx(
2584
- chunkULKZGM2T_js.FormSelect,
2584
+ chunk5ETT54QS_js.FormSelect,
2585
2585
  {
2586
2586
  label: "Action type",
2587
2587
  value: type,
@@ -2591,7 +2591,7 @@ function RuleActionBuilder({ value, onChange }) {
2591
2591
  ),
2592
2592
  type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2593
2593
  /* @__PURE__ */ jsxRuntime.jsx(
2594
- chunkULKZGM2T_js.FormInput,
2594
+ chunk5ETT54QS_js.FormInput,
2595
2595
  {
2596
2596
  label: "Multiplier",
2597
2597
  type: "number",
@@ -2601,7 +2601,7 @@ function RuleActionBuilder({ value, onChange }) {
2601
2601
  }
2602
2602
  ),
2603
2603
  /* @__PURE__ */ jsxRuntime.jsx(
2604
- chunkULKZGM2T_js.FormInput,
2604
+ chunk5ETT54QS_js.FormInput,
2605
2605
  {
2606
2606
  label: "Reason code",
2607
2607
  value: stringParam(params.reason),
@@ -2611,7 +2611,7 @@ function RuleActionBuilder({ value, onChange }) {
2611
2611
  )
2612
2612
  ] }),
2613
2613
  type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
2614
- chunkULKZGM2T_js.FormInput,
2614
+ chunk5ETT54QS_js.FormInput,
2615
2615
  {
2616
2616
  label: "Floor (fraction, e.g. 0.08)",
2617
2617
  type: "number",
@@ -2621,7 +2621,7 @@ function RuleActionBuilder({ value, onChange }) {
2621
2621
  }
2622
2622
  ),
2623
2623
  type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
2624
- chunkULKZGM2T_js.FormInput,
2624
+ chunk5ETT54QS_js.FormInput,
2625
2625
  {
2626
2626
  label: "Tolerance (fraction)",
2627
2627
  type: "number",
@@ -2631,7 +2631,7 @@ function RuleActionBuilder({ value, onChange }) {
2631
2631
  }
2632
2632
  ),
2633
2633
  type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
2634
- chunkULKZGM2T_js.FormInput,
2634
+ chunk5ETT54QS_js.FormInput,
2635
2635
  {
2636
2636
  label: "Approval limit (fraction)",
2637
2637
  type: "number",
@@ -2641,7 +2641,7 @@ function RuleActionBuilder({ value, onChange }) {
2641
2641
  }
2642
2642
  ),
2643
2643
  type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
2644
- chunkULKZGM2T_js.FormInput,
2644
+ chunk5ETT54QS_js.FormInput,
2645
2645
  {
2646
2646
  label: "Step (e.g. 0.009)",
2647
2647
  type: "number",
@@ -2652,7 +2652,7 @@ function RuleActionBuilder({ value, onChange }) {
2652
2652
  ),
2653
2653
  type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2654
2654
  /* @__PURE__ */ jsxRuntime.jsx(
2655
- chunkULKZGM2T_js.FormInput,
2655
+ chunk5ETT54QS_js.FormInput,
2656
2656
  {
2657
2657
  label: "Channel",
2658
2658
  value: stringParam(params.channel),
@@ -2661,7 +2661,7 @@ function RuleActionBuilder({ value, onChange }) {
2661
2661
  }
2662
2662
  ),
2663
2663
  /* @__PURE__ */ jsxRuntime.jsx(
2664
- chunkULKZGM2T_js.FormInput,
2664
+ chunk5ETT54QS_js.FormInput,
2665
2665
  {
2666
2666
  label: "Severity",
2667
2667
  value: stringParam(params.severity),
@@ -2699,7 +2699,7 @@ function CustomParamsEditor({
2699
2699
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2700
2700
  entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
2701
2701
  /* @__PURE__ */ jsxRuntime.jsx(
2702
- chunkULKZGM2T_js.FormInput,
2702
+ chunk5ETT54QS_js.FormInput,
2703
2703
  {
2704
2704
  label: "Key",
2705
2705
  value: key,
@@ -2707,7 +2707,7 @@ function CustomParamsEditor({
2707
2707
  }
2708
2708
  ),
2709
2709
  /* @__PURE__ */ jsxRuntime.jsx(
2710
- chunkULKZGM2T_js.FormInput,
2710
+ chunk5ETT54QS_js.FormInput,
2711
2711
  {
2712
2712
  label: "Value",
2713
2713
  value: String(value ?? ""),
@@ -2746,9 +2746,9 @@ function RuleForm({ value, onChange }) {
2746
2746
  );
2747
2747
  const update = (key, v) => onChange({ ...value, [key]: v });
2748
2748
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
2749
- /* @__PURE__ */ jsxRuntime.jsxs(chunkULKZGM2T_js.FormGrid, { children: [
2749
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk5ETT54QS_js.FormGrid, { children: [
2750
2750
  /* @__PURE__ */ jsxRuntime.jsx(
2751
- chunkULKZGM2T_js.FormInput,
2751
+ chunk5ETT54QS_js.FormInput,
2752
2752
  {
2753
2753
  label: "Name",
2754
2754
  required: true,
@@ -2757,7 +2757,7 @@ function RuleForm({ value, onChange }) {
2757
2757
  }
2758
2758
  ),
2759
2759
  /* @__PURE__ */ jsxRuntime.jsx(
2760
- chunkULKZGM2T_js.FormInput,
2760
+ chunk5ETT54QS_js.FormInput,
2761
2761
  {
2762
2762
  label: "Priority",
2763
2763
  type: "number",
@@ -2767,7 +2767,7 @@ function RuleForm({ value, onChange }) {
2767
2767
  }
2768
2768
  ),
2769
2769
  /* @__PURE__ */ jsxRuntime.jsx(
2770
- chunkULKZGM2T_js.FormSelect,
2770
+ chunk5ETT54QS_js.FormSelect,
2771
2771
  {
2772
2772
  label: "Enabled",
2773
2773
  value: value.enabled ? "true" : "false",
@@ -2779,7 +2779,7 @@ function RuleForm({ value, onChange }) {
2779
2779
  }
2780
2780
  ),
2781
2781
  /* @__PURE__ */ jsxRuntime.jsx(
2782
- chunkULKZGM2T_js.FormTextarea,
2782
+ chunk5ETT54QS_js.FormTextarea,
2783
2783
  {
2784
2784
  label: "Description",
2785
2785
  rows: 2,
@@ -2826,7 +2826,7 @@ function RuleForm({ value, onChange }) {
2826
2826
  ),
2827
2827
  showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2828
2828
  /* @__PURE__ */ jsxRuntime.jsx(
2829
- chunkULKZGM2T_js.FormInput,
2829
+ chunk5ETT54QS_js.FormInput,
2830
2830
  {
2831
2831
  label: "Valid from (ISO 8601)",
2832
2832
  type: "datetime-local",
@@ -2835,7 +2835,7 @@ function RuleForm({ value, onChange }) {
2835
2835
  }
2836
2836
  ),
2837
2837
  /* @__PURE__ */ jsxRuntime.jsx(
2838
- chunkULKZGM2T_js.FormInput,
2838
+ chunk5ETT54QS_js.FormInput,
2839
2839
  {
2840
2840
  label: "Valid until (ISO 8601)",
2841
2841
  type: "datetime-local",
@@ -2844,7 +2844,7 @@ function RuleForm({ value, onChange }) {
2844
2844
  }
2845
2845
  ),
2846
2846
  /* @__PURE__ */ jsxRuntime.jsx(
2847
- chunkULKZGM2T_js.FormSelect,
2847
+ chunk5ETT54QS_js.FormSelect,
2848
2848
  {
2849
2849
  label: "Status",
2850
2850
  value: value.status ?? "active",
@@ -2853,7 +2853,7 @@ function RuleForm({ value, onChange }) {
2853
2853
  }
2854
2854
  ),
2855
2855
  /* @__PURE__ */ jsxRuntime.jsx(
2856
- chunkULKZGM2T_js.FormInput,
2856
+ chunk5ETT54QS_js.FormInput,
2857
2857
  {
2858
2858
  label: "Tags (comma-separated)",
2859
2859
  value: (value.tags ?? []).join(", "),
@@ -3040,8 +3040,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
3040
3040
  ] });
3041
3041
  }
3042
3042
  function LogicNodeItemCard({ item, translationFunction }) {
3043
- const IconComponent = chunkFKRIQYRG_js.LOGIC_ICON_MAP[item.nodeType];
3044
- const gradient = chunkFKRIQYRG_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3043
+ const IconComponent = chunkD5OTZGA2_js.LOGIC_ICON_MAP[item.nodeType];
3044
+ const gradient = chunkD5OTZGA2_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3045
3045
  const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
3046
3046
  const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
3047
3047
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3061,7 +3061,7 @@ function LogicNodeItemCard({ item, translationFunction }) {
3061
3061
  );
3062
3062
  }
3063
3063
  function NodePalette({ agents, tools, agentTools = [], rules, entities = [], modelProviders = [], onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource, onConfigureProvider }) {
3064
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
3064
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
3065
3065
  const [searchQuery, setSearchQuery] = react.useState("");
3066
3066
  const normalizedQuery = searchQuery.toLowerCase().trim();
3067
3067
  const filteredAgents = react.useMemo(
@@ -3112,7 +3112,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3112
3112
  [entityTypes, normalizedQuery]
3113
3113
  );
3114
3114
  const filteredLogicItems = react.useMemo(() => {
3115
- const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkFKRIQYRG_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3115
+ const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkD5OTZGA2_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3116
3116
  if (!normalizedQuery) return visibleByDefault;
3117
3117
  return visibleByDefault.filter(
3118
3118
  (item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
@@ -3248,7 +3248,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3248
3248
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
3249
3249
  ] }),
3250
3250
  /* @__PURE__ */ jsxRuntime.jsx(
3251
- chunkULKZGM2T_js.ToggleSwitch,
3251
+ chunk5ETT54QS_js.ToggleSwitch,
3252
3252
  {
3253
3253
  checked: Boolean(tool.enabled),
3254
3254
  onChange: () => {
@@ -3289,7 +3289,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3289
3289
  ] })
3290
3290
  ] }),
3291
3291
  /* @__PURE__ */ jsxRuntime.jsx(
3292
- chunkULKZGM2T_js.ToggleSwitch,
3292
+ chunk5ETT54QS_js.ToggleSwitch,
3293
3293
  {
3294
3294
  checked: Boolean(rule.enabled),
3295
3295
  onChange: () => {
@@ -3325,8 +3325,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3325
3325
  limit: entity.defaultLimit
3326
3326
  });
3327
3327
  const dsLogo = getDatasourceLogo(entity.id);
3328
- const EntityIcon = chunkFKRIQYRG_js.getEntityIcon(entity.id);
3329
- const entityGradient = chunkFKRIQYRG_js.getEntityGradient(entity.id);
3328
+ const EntityIcon = chunkD5OTZGA2_js.getEntityIcon(entity.id);
3329
+ const entityGradient = chunkD5OTZGA2_js.getEntityGradient(entity.id);
3330
3330
  return /* @__PURE__ */ jsxRuntime.jsxs(
3331
3331
  "div",
3332
3332
  {
@@ -3346,7 +3346,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3346
3346
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3347
3347
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-slate-500/15 px-1.5 py-0.5 text-[9px] font-medium text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: "Read only" }),
3348
3348
  /* @__PURE__ */ jsxRuntime.jsx(
3349
- chunkULKZGM2T_js.ToggleSwitch,
3349
+ chunk5ETT54QS_js.ToggleSwitch,
3350
3350
  {
3351
3351
  checked: true,
3352
3352
  onChange: () => {
@@ -3405,7 +3405,7 @@ function WorkflowListBar({
3405
3405
  onDelete,
3406
3406
  onConvertToSubworkflow
3407
3407
  }) {
3408
- const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
3408
+ const tWorkflow = chunkY5VN4SPH_js.useTranslations("agents.workflow");
3409
3409
  if (isLoading) {
3410
3410
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 px-1 pb-3", children: [
3411
3411
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-10 w-40 rounded-xl" }),
@@ -3498,7 +3498,7 @@ function VersionHistoryPanel({
3498
3498
  onRestore,
3499
3499
  fetchVersions
3500
3500
  }) {
3501
- const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.versionHistory");
3501
+ const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.versionHistory");
3502
3502
  const [versions, setVersions] = react.useState([]);
3503
3503
  const [isLoading, setIsLoading] = react.useState(false);
3504
3504
  const [loadError, setLoadError] = react.useState(null);
@@ -3680,10 +3680,10 @@ function formatDuration2(durationMs) {
3680
3680
  return `${seconds}s`;
3681
3681
  }
3682
3682
  function RunPanel({ open, onClose, onRun, onStop }) {
3683
- const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
3684
- const nodes = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodes);
3685
- const isRunning = chunkFKRIQYRG_js.useWorkflowStore((state) => state.isRunning);
3686
- const nodeResults = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodeResults);
3683
+ const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.runPanel");
3684
+ const nodes = chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodes);
3685
+ const isRunning = chunkD5OTZGA2_js.useWorkflowStore((state) => state.isRunning);
3686
+ const nodeResults = chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodeResults);
3687
3687
  const startNode = nodes.find((node) => node.type === "start");
3688
3688
  const hasEndNode = nodes.some((node) => node.type === "end");
3689
3689
  const hasValidStartConfig = Boolean(
@@ -4013,9 +4013,9 @@ function inferVariables(config, nodeType) {
4013
4013
  return variables;
4014
4014
  }
4015
4015
  function VariableInspector({ open, onClose }) {
4016
- const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
4017
- const nodes = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodes);
4018
- const edges = chunkFKRIQYRG_js.useWorkflowStore((state) => state.edges);
4016
+ const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.variableInspector");
4017
+ const nodes = chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodes);
4018
+ const edges = chunkD5OTZGA2_js.useWorkflowStore((state) => state.edges);
4019
4019
  const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
4020
4020
  const toggleNodeExpansion = react.useCallback((nodeId) => {
4021
4021
  setExpandedNodes((current) => {
@@ -4077,8 +4077,8 @@ function VariableInspector({ open, onClose }) {
4077
4077
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
4078
4078
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
4079
4079
  const isExpanded = expandedNodes.has(entry.nodeId);
4080
- const IconComponent = chunkFKRIQYRG_js.LOGIC_ICON_MAP[entry.nodeType];
4081
- const gradient = chunkFKRIQYRG_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4080
+ const IconComponent = chunkD5OTZGA2_js.LOGIC_ICON_MAP[entry.nodeType];
4081
+ const gradient = chunkD5OTZGA2_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4082
4082
  const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
4083
4083
  const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
4084
4084
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
@@ -4143,8 +4143,8 @@ function RunInputDialog({
4143
4143
  onClose,
4144
4144
  onRun
4145
4145
  }) {
4146
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
4147
- const nodes = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodes);
4146
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow.runInputDialog");
4147
+ const nodes = chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodes);
4148
4148
  const [values, setValues] = react.useState({});
4149
4149
  const inputVariableNames = react.useMemo(() => {
4150
4150
  const storeStartNode = nodes.find((node) => node.type === "start");
@@ -4171,7 +4171,7 @@ function RunInputDialog({
4171
4171
  }, [onClose]);
4172
4172
  if (!open) return null;
4173
4173
  return /* @__PURE__ */ jsxRuntime.jsxs(
4174
- chunkULKZGM2T_js.GlassModal,
4174
+ chunk5ETT54QS_js.GlassModal,
4175
4175
  {
4176
4176
  open,
4177
4177
  onClose: handleClose,
@@ -4182,7 +4182,7 @@ function RunInputDialog({
4182
4182
  /* @__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: [
4183
4183
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
4184
4184
  /* @__PURE__ */ jsxRuntime.jsx(
4185
- chunkULKZGM2T_js.Input,
4185
+ chunk5ETT54QS_js.Input,
4186
4186
  {
4187
4187
  value: values[variableName] ?? "",
4188
4188
  onChange: (event) => handleValueChange(variableName, event.target.value),
@@ -4220,13 +4220,13 @@ function formatTimestamp2(timestamp) {
4220
4220
  return date.toLocaleTimeString(void 0, { hour: "2-digit", minute: "2-digit", second: "2-digit" });
4221
4221
  }
4222
4222
  function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4223
- const t = chunkYXN2K77G_js.useTranslations("agents.workflow.previewPanel");
4223
+ const t = chunkY5VN4SPH_js.useTranslations("agents.workflow.previewPanel");
4224
4224
  const [runs, setRuns] = react.useState([]);
4225
4225
  const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
4226
4226
  const [selectedRun, setSelectedRun] = react.useState(null);
4227
4227
  const [selectedNode, setSelectedNode] = react.useState(null);
4228
- const isRunning = chunkFKRIQYRG_js.useWorkflowStore((state) => state.isRunning);
4229
- const nodeResults = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodeResults);
4228
+ const isRunning = chunkD5OTZGA2_js.useWorkflowStore((state) => state.isRunning);
4229
+ const nodeResults = chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodeResults);
4230
4230
  const refreshRuns = react.useCallback(async () => {
4231
4231
  setIsLoadingRuns(true);
4232
4232
  try {
@@ -4404,7 +4404,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4404
4404
  onAutoSaveGraph(graph);
4405
4405
  }, [onAutoSaveGraph, onGraphSnapshot]);
4406
4406
  return /* @__PURE__ */ jsxRuntime.jsx(
4407
- chunkFKRIQYRG_js.Workspace,
4407
+ chunkD5OTZGA2_js.Workspace,
4408
4408
  {
4409
4409
  ...workspaceProps,
4410
4410
  onGraphChange: handleGraphChange
@@ -4412,11 +4412,11 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4412
4412
  );
4413
4413
  });
4414
4414
  function DynamicIslandConfirm2(props) {
4415
- return /* @__PURE__ */ jsxRuntime.jsx(chunkULKZGM2T_js.DynamicIslandConfirm, { ...props });
4415
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk5ETT54QS_js.DynamicIslandConfirm, { ...props });
4416
4416
  }
4417
4417
  var JSON_PREVIEW_LINE_LIMIT = 50;
4418
4418
  function DslExportModal({ open, onClose, workflow, graph }) {
4419
- const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.dsl.export");
4419
+ const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.dsl.export");
4420
4420
  const [isCopied, setIsCopied] = react.useState(false);
4421
4421
  const exportPayload = react.useMemo(() => ({
4422
4422
  name: workflow.name,
@@ -4466,7 +4466,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4466
4466
  }, [jsonString, workflow.name, workflow.version]);
4467
4467
  if (!open) return null;
4468
4468
  return /* @__PURE__ */ jsxRuntime.jsx(
4469
- chunkULKZGM2T_js.GlassModal,
4469
+ chunk5ETT54QS_js.GlassModal,
4470
4470
  {
4471
4471
  open,
4472
4472
  onClose,
@@ -4621,7 +4621,7 @@ function validateWorkflowJson(jsonString) {
4621
4621
  return { isValid: true, errors: [], graph, nodeCount: nodes.length, edgeCount: edges.length };
4622
4622
  }
4623
4623
  function DslImportModal({ open, onClose, onImport }) {
4624
- const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.dsl.import");
4624
+ const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.dsl.import");
4625
4625
  const fileInputRef = react.useRef(null);
4626
4626
  const [isDragActive, setIsDragActive] = react.useState(false);
4627
4627
  const [validationResult, setValidationResult] = react.useState(null);
@@ -4684,7 +4684,7 @@ function DslImportModal({ open, onClose, onImport }) {
4684
4684
  }, []);
4685
4685
  if (!open) return null;
4686
4686
  return /* @__PURE__ */ jsxRuntime.jsx(
4687
- chunkULKZGM2T_js.GlassModal,
4687
+ chunk5ETT54QS_js.GlassModal,
4688
4688
  {
4689
4689
  open,
4690
4690
  onClose,
@@ -4775,14 +4775,14 @@ function DslImportModal({ open, onClose, onImport }) {
4775
4775
  }
4776
4776
 
4777
4777
  // src/astrlabe/store/selectors.ts
4778
- var useCanUndo = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.past.length > 0);
4779
- var useCanRedo = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.future.length > 0);
4780
- var useHasCopied = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.clipboard !== null);
4781
- var useContextMenu = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.contextMenu);
4782
- var useEditingNodeId = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.editingNodeId);
4783
- var useSelectedNodeCount = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4784
- var useIsRunning = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.isRunning);
4785
- var useNodeResults = () => chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodeResults);
4778
+ var useCanUndo = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.past.length > 0);
4779
+ var useCanRedo = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.future.length > 0);
4780
+ var useHasCopied = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.clipboard !== null);
4781
+ var useContextMenu = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.contextMenu);
4782
+ var useEditingNodeId = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.editingNodeId);
4783
+ var useSelectedNodeCount = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4784
+ var useIsRunning = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.isRunning);
4785
+ var useNodeResults = () => chunkD5OTZGA2_js.useWorkflowStore((state) => state.nodeResults);
4786
4786
  var DEFAULT_MAX_HISTORY = 50;
4787
4787
  function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
4788
4788
  const pastRef = react.useRef([]);
@@ -5106,5 +5106,5 @@ exports.useNodeResults = useNodeResults;
5106
5106
  exports.useSelectedNodeCount = useSelectedNodeCount;
5107
5107
  exports.useSubworkflowStore = useSubworkflowStore;
5108
5108
  exports.useUndoRedo = useUndoRedo;
5109
- //# sourceMappingURL=chunk-MFF37C24.js.map
5110
- //# sourceMappingURL=chunk-MFF37C24.js.map
5109
+ //# sourceMappingURL=chunk-MQDCUBVW.js.map
5110
+ //# sourceMappingURL=chunk-MQDCUBVW.js.map