@datatechsolutions/ui 3.13.1 → 3.15.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 (123) hide show
  1. package/dist/astrlabe/graph-node.js +6 -6
  2. package/dist/astrlabe/graph-node.mjs +2 -2
  3. package/dist/astrlabe/index.js +113 -113
  4. package/dist/astrlabe/index.mjs +5 -5
  5. package/dist/astrlabe/workflow-canvas.js +5 -5
  6. package/dist/astrlabe/workflow-canvas.mjs +4 -4
  7. package/dist/{chunk-Q7QPHZOV.js → chunk-2JPS5OND.js} +67 -67
  8. package/dist/{chunk-Q7QPHZOV.js.map → chunk-2JPS5OND.js.map} +1 -1
  9. package/dist/{chunk-RPNMDGRA.js → chunk-2QZFKQP6.js} +37 -40
  10. package/dist/chunk-2QZFKQP6.js.map +1 -0
  11. package/dist/{chunk-O4RZCDP2.mjs → chunk-2SBVFLPZ.mjs} +19 -2
  12. package/dist/chunk-2SBVFLPZ.mjs.map +1 -0
  13. package/dist/{chunk-4VEQJAXJ.mjs → chunk-3FOLXKVP.mjs} +5 -5
  14. package/dist/{chunk-4VEQJAXJ.mjs.map → chunk-3FOLXKVP.mjs.map} +1 -1
  15. package/dist/{chunk-PM7A5I3X.js → chunk-435TRHC2.js} +118 -118
  16. package/dist/{chunk-PM7A5I3X.js.map → chunk-435TRHC2.js.map} +1 -1
  17. package/dist/{chunk-M4KRQXOT.mjs → chunk-5QRU3KKV.mjs} +3 -3
  18. package/dist/{chunk-M4KRQXOT.mjs.map → chunk-5QRU3KKV.mjs.map} +1 -1
  19. package/dist/{chunk-DTFU3ZTD.js → chunk-6NBQTIXX.js} +9 -9
  20. package/dist/{chunk-DTFU3ZTD.js.map → chunk-6NBQTIXX.js.map} +1 -1
  21. package/dist/{chunk-CVEI4RQP.js → chunk-6NEESZVO.js} +4 -4
  22. package/dist/{chunk-CVEI4RQP.js.map → chunk-6NEESZVO.js.map} +1 -1
  23. package/dist/{chunk-CKY2QIRR.js → chunk-6UUFPSAR.js} +4 -4
  24. package/dist/{chunk-CKY2QIRR.js.map → chunk-6UUFPSAR.js.map} +1 -1
  25. package/dist/{chunk-DJHNSBIR.mjs → chunk-7LIJTAIF.mjs} +31 -31
  26. package/dist/{chunk-DJHNSBIR.mjs.map → chunk-7LIJTAIF.mjs.map} +1 -1
  27. package/dist/{chunk-4MNKVDTJ.mjs → chunk-A5M7SPPG.mjs} +4 -4
  28. package/dist/{chunk-4MNKVDTJ.mjs.map → chunk-A5M7SPPG.mjs.map} +1 -1
  29. package/dist/{chunk-FV42SSLP.js → chunk-A5OMGPMR.js} +4 -4
  30. package/dist/{chunk-FV42SSLP.js.map → chunk-A5OMGPMR.js.map} +1 -1
  31. package/dist/{chunk-VWZ53TE2.js → chunk-BN4BKFE2.js} +9 -9
  32. package/dist/{chunk-VWZ53TE2.js.map → chunk-BN4BKFE2.js.map} +1 -1
  33. package/dist/{chunk-4Z5NZINA.js → chunk-C4UYEHPY.js} +136 -136
  34. package/dist/chunk-C4UYEHPY.js.map +1 -0
  35. package/dist/{chunk-54T5F65C.js → chunk-CPTHSYM2.js} +17 -17
  36. package/dist/{chunk-54T5F65C.js.map → chunk-CPTHSYM2.js.map} +1 -1
  37. package/dist/{chunk-3VCSMSJB.mjs → chunk-EZVBRLQH.mjs} +9 -9
  38. package/dist/{chunk-3VCSMSJB.mjs.map → chunk-EZVBRLQH.mjs.map} +1 -1
  39. package/dist/{chunk-4QCO4CBC.mjs → chunk-F3PQ5EFQ.mjs} +4 -4
  40. package/dist/{chunk-4QCO4CBC.mjs.map → chunk-F3PQ5EFQ.mjs.map} +1 -1
  41. package/dist/{chunk-RUZPOHJW.js → chunk-GD3YV46U.js} +41 -41
  42. package/dist/{chunk-RUZPOHJW.js.map → chunk-GD3YV46U.js.map} +1 -1
  43. package/dist/{chunk-Y65X2NHF.mjs → chunk-I6ULYJR4.mjs} +3 -3
  44. package/dist/{chunk-Y65X2NHF.mjs.map → chunk-I6ULYJR4.mjs.map} +1 -1
  45. package/dist/{chunk-YHD6SJIN.mjs → chunk-JJUWZNJY.mjs} +4 -4
  46. package/dist/{chunk-YHD6SJIN.mjs.map → chunk-JJUWZNJY.mjs.map} +1 -1
  47. package/dist/{chunk-VPRAESA7.mjs → chunk-KDDXDQR2.mjs} +3 -3
  48. package/dist/{chunk-VPRAESA7.mjs.map → chunk-KDDXDQR2.mjs.map} +1 -1
  49. package/dist/{chunk-UPWJRCAD.js → chunk-KRS2CLPR.js} +223 -229
  50. package/dist/chunk-KRS2CLPR.js.map +1 -0
  51. package/dist/{chunk-RWZ2PLMQ.js → chunk-KZDABEML.js} +211 -154
  52. package/dist/chunk-KZDABEML.js.map +1 -0
  53. package/dist/{chunk-TRNDFSM6.mjs → chunk-MSXJFWKD.mjs} +28 -28
  54. package/dist/chunk-MSXJFWKD.mjs.map +1 -0
  55. package/dist/{chunk-EBARYRSA.js → chunk-MXQ2EYG2.js} +19 -2
  56. package/dist/chunk-MXQ2EYG2.js.map +1 -0
  57. package/dist/{chunk-RMPXGEFL.mjs → chunk-NNR44MM5.mjs} +7 -7
  58. package/dist/{chunk-RMPXGEFL.mjs.map → chunk-NNR44MM5.mjs.map} +1 -1
  59. package/dist/{chunk-AC54BNSK.js → chunk-NQCFGIWC.js} +13 -13
  60. package/dist/{chunk-AC54BNSK.js.map → chunk-NQCFGIWC.js.map} +1 -1
  61. package/dist/{chunk-7IAWXG43.js → chunk-OQM252SM.js} +33 -33
  62. package/dist/{chunk-7IAWXG43.js.map → chunk-OQM252SM.js.map} +1 -1
  63. package/dist/{chunk-VCL5LDS5.js → chunk-PADXORD2.js} +38 -38
  64. package/dist/{chunk-VCL5LDS5.js.map → chunk-PADXORD2.js.map} +1 -1
  65. package/dist/{chunk-SCGICCQM.mjs → chunk-PSS3E463.mjs} +7 -10
  66. package/dist/chunk-PSS3E463.mjs.map +1 -0
  67. package/dist/{chunk-QEACOJXX.mjs → chunk-QCGSE24W.mjs} +139 -83
  68. package/dist/chunk-QCGSE24W.mjs.map +1 -0
  69. package/dist/{chunk-ZPV7X4ZE.mjs → chunk-RH6Z425K.mjs} +6 -6
  70. package/dist/{chunk-ZPV7X4ZE.mjs.map → chunk-RH6Z425K.mjs.map} +1 -1
  71. package/dist/{chunk-RSCRIDMW.mjs → chunk-SMUBE3RO.mjs} +46 -52
  72. package/dist/chunk-SMUBE3RO.mjs.map +1 -0
  73. package/dist/{chunk-WX44DAQD.mjs → chunk-TQADF23S.mjs} +3 -3
  74. package/dist/{chunk-WX44DAQD.mjs.map → chunk-TQADF23S.mjs.map} +1 -1
  75. package/dist/{chunk-B3TA74C4.js → chunk-WG26KW6D.js} +57 -60
  76. package/dist/chunk-WG26KW6D.js.map +1 -0
  77. package/dist/{chunk-UUTTS3VV.mjs → chunk-WGS65S7S.mjs} +8 -11
  78. package/dist/chunk-WGS65S7S.mjs.map +1 -0
  79. package/dist/{chunk-ULSG4JLR.js → chunk-XJJZ6DHE.js} +6 -6
  80. package/dist/{chunk-ULSG4JLR.js.map → chunk-XJJZ6DHE.js.map} +1 -1
  81. package/dist/{chunk-XYMHIZ3K.mjs → chunk-ZBX7UCAP.mjs} +7 -7
  82. package/dist/{chunk-XYMHIZ3K.mjs.map → chunk-ZBX7UCAP.mjs.map} +1 -1
  83. package/dist/index.d.mts +77 -7
  84. package/dist/index.d.ts +77 -7
  85. package/dist/index.js +707 -703
  86. package/dist/index.mjs +2 -2
  87. package/dist/platform/admin/index.js +11 -11
  88. package/dist/platform/admin/index.mjs +5 -5
  89. package/dist/platform/agents-workspace.js +8 -8
  90. package/dist/platform/agents-workspace.mjs +7 -7
  91. package/dist/platform/app-shell.js +4 -4
  92. package/dist/platform/app-shell.mjs +3 -3
  93. package/dist/platform/auth/index.js +28 -28
  94. package/dist/platform/auth/index.mjs +5 -5
  95. package/dist/platform/billing/index.js +6 -6
  96. package/dist/platform/billing/index.mjs +4 -4
  97. package/dist/platform/impersonation/index.js +4 -4
  98. package/dist/platform/impersonation/index.mjs +3 -3
  99. package/dist/platform/index.js +93 -93
  100. package/dist/platform/index.mjs +21 -21
  101. package/dist/platform/pages/index.d.mts +103 -1
  102. package/dist/platform/pages/index.d.ts +103 -1
  103. package/dist/platform/pages/index.js +1756 -1429
  104. package/dist/platform/pages/index.js.map +1 -1
  105. package/dist/platform/pages/index.mjs +1458 -1137
  106. package/dist/platform/pages/index.mjs.map +1 -1
  107. package/dist/platform/settings/index.js +8 -8
  108. package/dist/platform/settings/index.mjs +7 -7
  109. package/dist/platform/workflow-canvas-shell.js +6 -6
  110. package/dist/platform/workflow-canvas-shell.mjs +5 -5
  111. package/package.json +1 -1
  112. package/dist/chunk-4Z5NZINA.js.map +0 -1
  113. package/dist/chunk-B3TA74C4.js.map +0 -1
  114. package/dist/chunk-EBARYRSA.js.map +0 -1
  115. package/dist/chunk-O4RZCDP2.mjs.map +0 -1
  116. package/dist/chunk-QEACOJXX.mjs.map +0 -1
  117. package/dist/chunk-RPNMDGRA.js.map +0 -1
  118. package/dist/chunk-RSCRIDMW.mjs.map +0 -1
  119. package/dist/chunk-RWZ2PLMQ.js.map +0 -1
  120. package/dist/chunk-SCGICCQM.mjs.map +0 -1
  121. package/dist/chunk-TRNDFSM6.mjs.map +0 -1
  122. package/dist/chunk-UPWJRCAD.js.map +0 -1
  123. package/dist/chunk-UUTTS3VV.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk4Z5NZINA_js = require('./chunk-4Z5NZINA.js');
5
- var chunkRWZ2PLMQ_js = require('./chunk-RWZ2PLMQ.js');
4
+ var chunkC4UYEHPY_js = require('./chunk-C4UYEHPY.js');
5
+ var chunkKZDABEML_js = require('./chunk-KZDABEML.js');
6
6
  var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
7
- var chunkEBARYRSA_js = require('./chunk-EBARYRSA.js');
7
+ var chunkMXQ2EYG2_js = require('./chunk-MXQ2EYG2.js');
8
8
  var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
9
9
  var react = require('react');
10
10
  var react$1 = require('@xyflow/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(chunk4Z5NZINA_js.NodeRunningIndicator, { nodeId: id }),
45
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
47
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
48
- chunk4Z5NZINA_js.NodeCardHeader,
44
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeRunningIndicator, { nodeId: id }),
45
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-slate-400 dark:!bg-slate-500" }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-slate-400 dark:!bg-slate-500" }),
47
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
48
+ chunkC4UYEHPY_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(chunk4Z5NZINA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
57
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
56
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
57
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_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(chunk4Z5NZINA_js.NodeRunningIndicator, { nodeId: id }),
67
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
68
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeRunningIndicator, { nodeId: id }),
67
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-slate-400 dark:!bg-slate-500" }),
68
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-slate-400 dark:!bg-slate-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(chunk4Z5NZINA_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
75
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkC4UYEHPY_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
76
76
  /* @__PURE__ */ jsxRuntime.jsx(
77
- chunk4Z5NZINA_js.NodeCardHeader,
77
+ chunkC4UYEHPY_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,11 +82,11 @@ 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(chunk4Z5NZINA_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
86
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
87
- regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
88
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
89
- config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
86
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
87
+ regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
88
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
89
+ config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: [
90
90
  config.modelFilter.length,
91
91
  " models"
92
92
  ] })
@@ -94,8 +94,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
94
94
  ] })
95
95
  }
96
96
  ),
97
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
98
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
97
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
98
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_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 }) {
@@ -104,10 +104,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
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(chunk4Z5NZINA_js.NodeRunningIndicator, { nodeId: id }),
108
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeRunningIndicator, { nodeId: id }),
108
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
109
109
  /* @__PURE__ */ jsxRuntime.jsxs(
110
- chunk4Z5NZINA_js.NodeInteractiveCard,
110
+ chunkC4UYEHPY_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
- chunk4Z5NZINA_js.NodeCardHeader,
119
+ chunkC4UYEHPY_js.NodeCardHeader,
120
120
  {
121
- icon: /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
121
+ icon: /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_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(chunk4Z5NZINA_js.NodeCardMeta, { compact: isCompact, children: [
128
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkC4UYEHPY_js.NodeCardMeta, { compact: isCompact, children: [
129
129
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
130
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
131
- config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
130
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
131
+ config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_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(chunk4Z5NZINA_js.NodeCardDeleteAction, { nodeId: id, onDelete })
134
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_js.NodeCardDeleteAction, { nodeId: id, onDelete })
135
135
  ] })
136
136
  ]
137
137
  }
138
138
  ),
139
- /* @__PURE__ */ jsxRuntime.jsx(chunk4Z5NZINA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
139
+ /* @__PURE__ */ jsxRuntime.jsx(chunkC4UYEHPY_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 }) {
@@ -200,7 +200,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
200
200
  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: [
201
201
  /* @__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." }),
202
202
  /* @__PURE__ */ jsxRuntime.jsx(
203
- chunkEBARYRSA_js.Button,
203
+ chunkMXQ2EYG2_js.Button,
204
204
  {
205
205
  type: "button",
206
206
  outline: true,
@@ -264,7 +264,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
264
264
  },
265
265
  index
266
266
  )),
267
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
267
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
268
268
  ] })
269
269
  ] });
270
270
  }
@@ -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
- chunkRWZ2PLMQ_js.FormInput,
290
+ chunkKZDABEML_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
- chunkRWZ2PLMQ_js.FormSelect,
299
+ chunkKZDABEML_js.FormSelect,
300
300
  {
301
301
  label: "Type",
302
302
  value: field.type,
@@ -316,10 +316,10 @@ function FieldEditor({
316
316
  ),
317
317
  "Required"
318
318
  ] }),
319
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
319
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
320
320
  ] }),
321
321
  /* @__PURE__ */ jsxRuntime.jsx(
322
- chunkRWZ2PLMQ_js.FormInput,
322
+ chunkKZDABEML_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(chunk4Z5NZINA_js.FRAMEWORK_META);
615
+ const frameworkKeys = Object.keys(chunkC4UYEHPY_js.FRAMEWORK_META);
616
616
  const hasProviderConstraints = connectedProviderTypes.length > 0;
617
- const compatibleModels = chunk4Z5NZINA_js.getCompatibleModels(models, selectedFramework);
617
+ const compatibleModels = chunkC4UYEHPY_js.getCompatibleModels(models, selectedFramework);
618
618
  const handleFrameworkChange = react.useCallback((newFramework) => {
619
619
  setSelectedFramework(newFramework);
620
- if (!chunk4Z5NZINA_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
621
- const compatible = chunk4Z5NZINA_js.getCompatibleModels(models, newFramework);
620
+ if (!chunkC4UYEHPY_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
621
+ const compatible = chunkC4UYEHPY_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-slate-500 dark:text-slate-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 = chunk4Z5NZINA_js.FRAMEWORK_META[key];
632
+ const meta = chunkC4UYEHPY_js.FRAMEWORK_META[key];
633
633
  const isSelected = key === selectedFramework;
634
- const compatCount = chunk4Z5NZINA_js.getCompatibleModels(models, key).length;
635
- const isCompatibleWithProviders = !hasProviderConstraints || chunk4Z5NZINA_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
634
+ const compatCount = chunkC4UYEHPY_js.getCompatibleModels(models, key).length;
635
+ const isCompatibleWithProviders = !hasProviderConstraints || chunkC4UYEHPY_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
636
636
  return /* @__PURE__ */ jsxRuntime.jsxs(
637
637
  "button",
638
638
  {
@@ -664,25 +664,21 @@ 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 = chunk4Z5NZINA_js.isModelCompatibleWithFramework(model.id, selectedFramework);
667
+ const isCompatible = chunkC4UYEHPY_js.isModelCompatibleWithFramework(model.id, selectedFramework);
668
668
  const { IconComponent, color, providerLabel } = getModelIcon(model.id);
669
- return /* @__PURE__ */ jsxRuntime.jsxs(
670
- "button",
669
+ return /* @__PURE__ */ jsxRuntime.jsx(
670
+ chunkKZDABEML_js.SelectionCard,
671
671
  {
672
- type: "button",
673
- disabled: !isCompatible,
672
+ selected: isSelected,
674
673
  onClick: () => {
675
674
  setSelectedModelId(model.id);
676
675
  markDirty();
677
676
  },
678
- className: `flex items-center gap-2.5 rounded-xl border px-3 py-2.5 text-left transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatible ? "cursor-not-allowed border-slate-200/30 opacity-35 dark:border-white/5" : isSelected ? "border-indigo-500/50 bg-indigo-50/50 ring-1 ring-indigo-500/30 dark:border-indigo-400/40 dark:bg-indigo-500/10" : "border-slate-200/50 bg-white/40 backdrop-blur-sm hover:border-slate-300 dark:border-white/10 dark:bg-white/[0.04] dark:hover:border-white/20"}`,
679
- children: [
680
- /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-5 w-5 flex-shrink-0 ${isSelected && isCompatible ? color : "text-slate-400 dark:text-slate-500"}` }),
681
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
682
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: `truncate text-xs font-semibold ${isSelected && isCompatible ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-300"}`, children: model.name }),
683
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: providerLabel })
684
- ] })
685
- ]
677
+ layout: "card",
678
+ compatibility: isCompatible ? "compatible" : "incompatible",
679
+ icon: /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-5 w-5 ${isSelected && isCompatible ? color : ""}` }),
680
+ label: model.name,
681
+ description: providerLabel
686
682
  },
687
683
  model.id
688
684
  );
@@ -818,11 +814,11 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
818
814
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
819
815
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
820
816
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-400"}`, children: tool.name }),
821
- !isCompatible && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", children: "incompatible" })
817
+ !isCompatible && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "incompatible" })
822
818
  ] }),
823
819
  tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.description }),
824
820
  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 = chunk4Z5NZINA_js.getFrameworkMeta(framework);
821
+ const meta = chunkC4UYEHPY_js.getFrameworkMeta(framework);
826
822
  const isCurrentFw = framework === agentFramework;
827
823
  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-slate-100 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`, children: [
828
824
  /* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
@@ -839,7 +835,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
839
835
  event.stopPropagation();
840
836
  },
841
837
  children: /* @__PURE__ */ jsxRuntime.jsx(
842
- chunkRWZ2PLMQ_js.ToggleSwitch,
838
+ chunkKZDABEML_js.ToggleSwitch,
843
839
  {
844
840
  checked: isEnabled,
845
841
  onChange: () => onToggle(tool.agentToolId),
@@ -887,7 +883,7 @@ function EngineTab({
887
883
  const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
888
884
  const configuredCompatible = compatibleProviders.filter((p) => p.configured);
889
885
  const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
890
- const frameworkMeta = chunk4Z5NZINA_js.getFrameworkMeta(selectedFramework);
886
+ const frameworkMeta = chunkC4UYEHPY_js.getFrameworkMeta(selectedFramework);
891
887
  const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
892
888
  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
889
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -932,12 +928,12 @@ function EngineTab({
932
928
  children: configuredCompatible.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.id, children: p.name }, p.id))
933
929
  }
934
930
  ),
935
- effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) })
931
+ effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) })
936
932
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: [
937
933
  t("agentDrawer.servedVia", { _: "via" }),
938
934
  " ",
939
935
  effectiveProvider?.name ?? family,
940
- effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }) })
936
+ effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }) })
941
937
  ] })
942
938
  ] })
943
939
  ] }),
@@ -1012,7 +1008,7 @@ function EngineTab({
1012
1008
  children: [
1013
1009
  /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3 w-3 shrink-0 text-slate-500 dark:text-slate-400" }),
1014
1010
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-slate-900 dark:text-white", children: provider.name }),
1015
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: provider.configured ? "emerald" : "amber", size: "xs", children: provider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }),
1011
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: provider.configured ? "emerald" : "amber", size: "xs", children: provider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }),
1016
1012
  provider.apiKeyMasked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-slate-400 dark:text-slate-500", title: provider.credentialRef, children: provider.apiKeyMasked })
1017
1013
  ]
1018
1014
  },
@@ -1026,9 +1022,9 @@ function EngineTab({
1026
1022
  }
1027
1023
  function AgentModal({ onSaved, onPersist }) {
1028
1024
  const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1029
- const activeModal = chunk4Z5NZINA_js.useModalStore((s) => s.activeModal);
1030
- const agentData = chunk4Z5NZINA_js.useModalStore((s) => s.agentData);
1031
- const closeModal = chunk4Z5NZINA_js.useModalStore((s) => s.closeModal);
1025
+ const activeModal = chunkC4UYEHPY_js.useModalStore((s) => s.activeModal);
1026
+ const agentData = chunkC4UYEHPY_js.useModalStore((s) => s.agentData);
1027
+ const closeModal = chunkC4UYEHPY_js.useModalStore((s) => s.closeModal);
1032
1028
  const open = activeModal === "agent";
1033
1029
  const agent = agentData?.agent ?? null;
1034
1030
  const models = agentData?.models ?? [];
@@ -1176,7 +1172,7 @@ function AgentModal({ onSaved, onPersist }) {
1176
1172
  const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
1177
1173
  const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
1178
1174
  const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
1179
- chunkRWZ2PLMQ_js.Avatar,
1175
+ chunkKZDABEML_js.Avatar,
1180
1176
  {
1181
1177
  src: effectiveAvatarUrl || void 0,
1182
1178
  alt: displayName || agent.name,
@@ -1188,7 +1184,7 @@ function AgentModal({ onSaved, onPersist }) {
1188
1184
  const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
1189
1185
  /* @__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" }) }),
1190
1186
  /* @__PURE__ */ jsxRuntime.jsx(
1191
- chunkRWZ2PLMQ_js.ToggleSwitch,
1187
+ chunkKZDABEML_js.ToggleSwitch,
1192
1188
  {
1193
1189
  size: "sm",
1194
1190
  color: "green",
@@ -1202,7 +1198,7 @@ function AgentModal({ onSaved, onPersist }) {
1202
1198
  )
1203
1199
  ] });
1204
1200
  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(
1205
- chunkRWZ2PLMQ_js.HeroBlock,
1201
+ chunkKZDABEML_js.HeroBlock,
1206
1202
  {
1207
1203
  icon: avatarNode,
1208
1204
  iconBackground: "none",
@@ -1265,7 +1261,7 @@ function AgentModal({ onSaved, onPersist }) {
1265
1261
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
1266
1262
  ] });
1267
1263
  return /* @__PURE__ */ jsxRuntime.jsx(
1268
- chunkRWZ2PLMQ_js.GlassModal,
1264
+ chunkKZDABEML_js.GlassModal,
1269
1265
  {
1270
1266
  open,
1271
1267
  onClose: handleClose,
@@ -1282,7 +1278,7 @@ function AgentModal({ onSaved, onPersist }) {
1282
1278
  },
1283
1279
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
1284
1280
  /* @__PURE__ */ jsxRuntime.jsx(
1285
- chunkRWZ2PLMQ_js.SectionCard,
1281
+ chunkKZDABEML_js.SectionCard,
1286
1282
  {
1287
1283
  variant: "glass",
1288
1284
  padded: false,
@@ -1322,7 +1318,7 @@ function AgentModal({ onSaved, onPersist }) {
1322
1318
  }
1323
1319
  ),
1324
1320
  /* @__PURE__ */ jsxRuntime.jsx(
1325
- chunkRWZ2PLMQ_js.SectionCard,
1321
+ chunkKZDABEML_js.SectionCard,
1326
1322
  {
1327
1323
  variant: "glass",
1328
1324
  padded: false,
@@ -1350,7 +1346,7 @@ function AgentModal({ onSaved, onPersist }) {
1350
1346
  }
1351
1347
  ),
1352
1348
  /* @__PURE__ */ jsxRuntime.jsx(
1353
- chunkRWZ2PLMQ_js.SectionCard,
1349
+ chunkKZDABEML_js.SectionCard,
1354
1350
  {
1355
1351
  variant: "glass",
1356
1352
  padded: false,
@@ -1473,7 +1469,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1473
1469
  const markDirty = useSubworkflowStore((s) => s.markDirty);
1474
1470
  const markSaved = useSubworkflowStore((s) => s.markSaved);
1475
1471
  const closeModal = useSubworkflowStore((s) => s.closeModal);
1476
- const agentBehind = chunk4Z5NZINA_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1472
+ const agentBehind = chunkC4UYEHPY_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1477
1473
  const isCreateMode = !tool?.toolId;
1478
1474
  const initialGraph = react.useMemo(() => {
1479
1475
  const config = tool?.config;
@@ -1502,9 +1498,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1502
1498
  }, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
1503
1499
  if (!tool) return null;
1504
1500
  const categoryKey = category ?? "external";
1505
- const gradient = tool.color ?? chunk4Z5NZINA_js.CATEGORY_COLORS[categoryKey] ?? chunk4Z5NZINA_js.CATEGORY_COLORS.external;
1506
- const categoryPill = chunk4Z5NZINA_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunk4Z5NZINA_js.CATEGORY_PILL_COLORS.external;
1507
- const IconComponent = chunk4Z5NZINA_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1501
+ const gradient = tool.color ?? chunkC4UYEHPY_js.CATEGORY_COLORS[categoryKey] ?? chunkC4UYEHPY_js.CATEGORY_COLORS.external;
1502
+ const categoryPill = chunkC4UYEHPY_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkC4UYEHPY_js.CATEGORY_PILL_COLORS.external;
1503
+ const IconComponent = chunkC4UYEHPY_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1508
1504
  const graph = latestGraphRef.current;
1509
1505
  const startNode = graph.nodes.find((n) => n.type === "start");
1510
1506
  const endNode = graph.nodes.find((n) => n.type === "end");
@@ -1515,9 +1511,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1515
1511
  const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1516
1512
  /* @__PURE__ */ jsxRuntime.jsx("div", { role: "status", "aria-live": "polite", className: "text-xs", children: dirty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-amber-500 dark:text-amber-400", children: t("subworkflowDrawer.unsavedChanges") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-emerald-500 dark:text-emerald-400", children: t("subworkflowDrawer.saved") }) }),
1517
1513
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1518
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("subworkflowDrawer.cancel") }),
1514
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("subworkflowDrawer.cancel") }),
1519
1515
  /* @__PURE__ */ jsxRuntime.jsx(
1520
- chunkEBARYRSA_js.Button,
1516
+ chunkMXQ2EYG2_js.Button,
1521
1517
  {
1522
1518
  type: "button",
1523
1519
  color: "ios-teal",
@@ -1530,7 +1526,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1530
1526
  ] })
1531
1527
  ] });
1532
1528
  return /* @__PURE__ */ jsxRuntime.jsx(
1533
- chunkRWZ2PLMQ_js.GlassModal,
1529
+ chunkKZDABEML_js.GlassModal,
1534
1530
  {
1535
1531
  open,
1536
1532
  onClose: closeModal,
@@ -1562,7 +1558,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1562
1558
  {
1563
1559
  type: "button",
1564
1560
  onClick: () => setCategory(cat),
1565
- className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunk4Z5NZINA_js.CATEGORY_PILL_COLORS[cat] ?? chunk4Z5NZINA_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-slate-500 hover:bg-white/50 dark:bg-white/5 dark:text-slate-400"}`,
1561
+ className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkC4UYEHPY_js.CATEGORY_PILL_COLORS[cat] ?? chunkC4UYEHPY_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-slate-500 hover:bg-white/50 dark:bg-white/5 dark:text-slate-400"}`,
1566
1562
  children: cat
1567
1563
  },
1568
1564
  cat
@@ -1577,13 +1573,14 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1577
1573
  ] })
1578
1574
  ] }),
1579
1575
  onMaximize && tool.toolId && /* @__PURE__ */ jsxRuntime.jsx(
1580
- "button",
1576
+ chunkMXQ2EYG2_js.IconButton,
1581
1577
  {
1582
- type: "button",
1578
+ label: t("subworkflowDrawer.openFullEditor"),
1579
+ variant: "ghost",
1580
+ size: "sm",
1581
+ color: "ios-teal",
1583
1582
  onClick: () => onMaximize(tool.toolId),
1584
- title: t("subworkflowDrawer.openFullEditor"),
1585
- className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-slate-400 transition-colors hover:bg-white/10 hover:text-teal-500 dark:hover:text-teal-400",
1586
- children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
1583
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
1587
1584
  }
1588
1585
  )
1589
1586
  ] }) }),
@@ -1649,7 +1646,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1649
1646
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
1650
1647
  ] }),
1651
1648
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1652
- chunk4Z5NZINA_js.WorkflowCanvas,
1649
+ chunkC4UYEHPY_js.WorkflowCanvas,
1653
1650
  {
1654
1651
  initialGraph,
1655
1652
  agents: [],
@@ -1665,9 +1662,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1665
1662
  }
1666
1663
  function PipelineSettingsModal({ onSave }) {
1667
1664
  const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
1668
- const activeModal = chunk4Z5NZINA_js.useModalStore((s) => s.activeModal);
1669
- const data = chunk4Z5NZINA_js.useModalStore((s) => s.pipelineSettingsData);
1670
- const closeModal = chunk4Z5NZINA_js.useModalStore((s) => s.closeModal);
1665
+ const activeModal = chunkC4UYEHPY_js.useModalStore((s) => s.activeModal);
1666
+ const data = chunkC4UYEHPY_js.useModalStore((s) => s.pipelineSettingsData);
1667
+ const closeModal = chunkC4UYEHPY_js.useModalStore((s) => s.closeModal);
1671
1668
  const open = activeModal === "pipeline-settings";
1672
1669
  const [nameValue, setNameValue] = react.useState("");
1673
1670
  const [descriptionValue, setDescriptionValue] = react.useState("");
@@ -1718,9 +1715,9 @@ function PipelineSettingsModal({ onSave }) {
1718
1715
  }
1719
1716
  };
1720
1717
  const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2", children: [
1721
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("cancel") }),
1718
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("cancel") }),
1722
1719
  /* @__PURE__ */ jsxRuntime.jsxs(
1723
- chunkEBARYRSA_js.Button,
1720
+ chunkMXQ2EYG2_js.Button,
1724
1721
  {
1725
1722
  type: "button",
1726
1723
  onClick: () => {
@@ -1737,7 +1734,7 @@ function PipelineSettingsModal({ onSave }) {
1737
1734
  )
1738
1735
  ] });
1739
1736
  return /* @__PURE__ */ jsxRuntime.jsx(
1740
- chunkRWZ2PLMQ_js.GlassModal,
1737
+ chunkKZDABEML_js.GlassModal,
1741
1738
  {
1742
1739
  open,
1743
1740
  onClose: closeModal,
@@ -1760,7 +1757,7 @@ function PipelineSettingsModal({ onSave }) {
1760
1757
  },
1761
1758
  children: [
1762
1759
  /* @__PURE__ */ jsxRuntime.jsx(
1763
- chunkRWZ2PLMQ_js.FormInput,
1760
+ chunkKZDABEML_js.FormInput,
1764
1761
  {
1765
1762
  label: t("pipelineName"),
1766
1763
  value: nameValue,
@@ -1770,7 +1767,7 @@ function PipelineSettingsModal({ onSave }) {
1770
1767
  }
1771
1768
  ),
1772
1769
  /* @__PURE__ */ jsxRuntime.jsx(
1773
- chunkRWZ2PLMQ_js.FormTextarea,
1770
+ chunkKZDABEML_js.FormTextarea,
1774
1771
  {
1775
1772
  label: t("pipelineDescription"),
1776
1773
  value: descriptionValue,
@@ -1781,7 +1778,7 @@ function PipelineSettingsModal({ onSave }) {
1781
1778
  ),
1782
1779
  lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1783
1780
  /* @__PURE__ */ jsxRuntime.jsx(
1784
- chunkRWZ2PLMQ_js.FormInput,
1781
+ chunkKZDABEML_js.FormInput,
1785
1782
  {
1786
1783
  label: t("pipelineSlug", { _: "Slug" }),
1787
1784
  value: slugValue,
@@ -1893,16 +1890,16 @@ function RunReplayModal({
1893
1890
  }
1894
1891
  };
1895
1892
  const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
1896
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-gray-400", children: [
1893
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-slate-400", children: [
1897
1894
  "run ",
1898
1895
  /* @__PURE__ */ jsxRuntime.jsx("code", { children: runId.slice(0, 8) }),
1899
1896
  " \xB7 wf ",
1900
1897
  /* @__PURE__ */ jsxRuntime.jsx("code", { children: workflowId.slice(0, 8) })
1901
1898
  ] }),
1902
1899
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1903
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, size: "sm", onClick: onClose, children: t("cancel") }),
1900
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: onClose, children: t("cancel") }),
1904
1901
  /* @__PURE__ */ jsxRuntime.jsxs(
1905
- chunkEBARYRSA_js.Button,
1902
+ chunkMXQ2EYG2_js.Button,
1906
1903
  {
1907
1904
  type: "submit",
1908
1905
  form: "run-replay-form",
@@ -1917,7 +1914,7 @@ function RunReplayModal({
1917
1914
  ] })
1918
1915
  ] });
1919
1916
  return /* @__PURE__ */ jsxRuntime.jsx(
1920
- chunkRWZ2PLMQ_js.GlassModal,
1917
+ chunkKZDABEML_js.GlassModal,
1921
1918
  {
1922
1919
  open,
1923
1920
  onClose,
@@ -1941,7 +1938,7 @@ function RunReplayModal({
1941
1938
  },
1942
1939
  className: "space-y-3",
1943
1940
  children: [
1944
- rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t("replayNoInputs", { _: "This run had no input variables \u2014 replaying will execute the workflow as-is." }) }) : rows.map((row, index) => /* @__PURE__ */ jsxRuntime.jsx(
1941
+ rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: t("replayNoInputs", { _: "This run had no input variables \u2014 replaying will execute the workflow as-is." }) }) : rows.map((row, index) => /* @__PURE__ */ jsxRuntime.jsx(
1945
1942
  RowEditor,
1946
1943
  {
1947
1944
  row,
@@ -1963,12 +1960,12 @@ function RowEditor({
1963
1960
  onReset
1964
1961
  }) {
1965
1962
  const isJson = row.kind === "json";
1966
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-gray-200/60 bg-gray-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
1963
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200/60 bg-slate-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
1967
1964
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
1968
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-gray-700 dark:text-gray-200", children: row.key }),
1965
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-slate-700 dark:text-slate-200", children: row.key }),
1969
1966
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1970
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", className: "uppercase tracking-wider", children: row.kind }),
1971
- row.touched && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, size: "xs", onClick: onReset, children: "reset" })
1967
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", className: "uppercase tracking-wider", children: row.kind }),
1968
+ row.touched && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: onReset, children: "reset" })
1972
1969
  ] })
1973
1970
  ] }),
1974
1971
  row.kind === "boolean" ? /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1976,14 +1973,14 @@ function RowEditor({
1976
1973
  {
1977
1974
  value: row.value,
1978
1975
  onChange: (event) => onChange({ value: event.target.value }),
1979
- className: "w-full rounded-lg border border-gray-200/50 bg-white/70 px-3 py-2 text-sm text-gray-900 dark:border-white/10 dark:bg-gray-800/70 dark:text-gray-100",
1976
+ className: "w-full rounded-lg border border-slate-200/50 bg-white/70 px-3 py-2 text-sm text-slate-900 dark:border-white/10 dark:bg-slate-800/70 dark:text-slate-100",
1980
1977
  children: [
1981
1978
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "true", children: "true" }),
1982
1979
  /* @__PURE__ */ jsxRuntime.jsx("option", { value: "false", children: "false" })
1983
1980
  ]
1984
1981
  }
1985
1982
  ) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
1986
- chunkRWZ2PLMQ_js.FormTextarea,
1983
+ chunkKZDABEML_js.FormTextarea,
1987
1984
  {
1988
1985
  value: row.value,
1989
1986
  onValueChange: (v) => onChange({ value: v }),
@@ -1991,7 +1988,7 @@ function RowEditor({
1991
1988
  className: "font-mono"
1992
1989
  }
1993
1990
  ) : /* @__PURE__ */ jsxRuntime.jsx(
1994
- chunkRWZ2PLMQ_js.FormInput,
1991
+ chunkKZDABEML_js.FormInput,
1995
1992
  {
1996
1993
  type: row.kind === "number" ? "number" : "text",
1997
1994
  value: row.value,
@@ -2095,7 +2092,7 @@ function ExecutionTimelinePanel({
2095
2092
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
2096
2093
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
2097
2094
  ] }),
2098
- /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Badge, { color: meta.color, children: [
2095
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: [
2099
2096
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
2100
2097
  labels[entry.status]
2101
2098
  ] })
@@ -2125,7 +2122,7 @@ function NodeInspector({
2125
2122
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
2126
2123
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
2127
2124
  ] }),
2128
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: meta.color, children: labels[entry.status] })
2125
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: labels[entry.status] })
2129
2126
  ] }),
2130
2127
  /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
2131
2128
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -2295,7 +2292,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
2295
2292
  };
2296
2293
  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: [
2297
2294
  /* @__PURE__ */ jsxRuntime.jsx(
2298
- chunkRWZ2PLMQ_js.FormSelect,
2295
+ chunkKZDABEML_js.FormSelect,
2299
2296
  {
2300
2297
  label: "Operator",
2301
2298
  value: value.operator,
@@ -2318,7 +2315,7 @@ function SimpleEditor({
2318
2315
  const isTruthy = value.operator === "truthy";
2319
2316
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2320
2317
  /* @__PURE__ */ jsxRuntime.jsx(
2321
- chunkRWZ2PLMQ_js.FormInput,
2318
+ chunkKZDABEML_js.FormInput,
2322
2319
  {
2323
2320
  label: "Field",
2324
2321
  hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
@@ -2328,7 +2325,7 @@ function SimpleEditor({
2328
2325
  }
2329
2326
  ),
2330
2327
  !isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
2331
- chunkRWZ2PLMQ_js.FormInput,
2328
+ chunkKZDABEML_js.FormInput,
2332
2329
  {
2333
2330
  label: "Value",
2334
2331
  hint: "Literal. Numeric operators coerce via `as f64`.",
@@ -2344,7 +2341,7 @@ function ThresholdEditor({
2344
2341
  }) {
2345
2342
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
2346
2343
  /* @__PURE__ */ jsxRuntime.jsx(
2347
- chunkRWZ2PLMQ_js.FormInput,
2344
+ chunkKZDABEML_js.FormInput,
2348
2345
  {
2349
2346
  label: "Field",
2350
2347
  value: value.field ?? "",
@@ -2353,7 +2350,7 @@ function ThresholdEditor({
2353
2350
  }
2354
2351
  ),
2355
2352
  /* @__PURE__ */ jsxRuntime.jsx(
2356
- chunkRWZ2PLMQ_js.FormSelect,
2353
+ chunkKZDABEML_js.FormSelect,
2357
2354
  {
2358
2355
  label: "Direction",
2359
2356
  value: value.comparison ?? "gte",
@@ -2367,7 +2364,7 @@ function ThresholdEditor({
2367
2364
  }
2368
2365
  ),
2369
2366
  /* @__PURE__ */ jsxRuntime.jsx(
2370
- chunkRWZ2PLMQ_js.FormInput,
2367
+ chunkKZDABEML_js.FormInput,
2371
2368
  {
2372
2369
  label: "Threshold",
2373
2370
  type: "number",
@@ -2384,7 +2381,7 @@ function RegexEditor({
2384
2381
  }) {
2385
2382
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2386
2383
  /* @__PURE__ */ jsxRuntime.jsx(
2387
- chunkRWZ2PLMQ_js.FormInput,
2384
+ chunkKZDABEML_js.FormInput,
2388
2385
  {
2389
2386
  label: "Field",
2390
2387
  value: value.field ?? "",
@@ -2393,7 +2390,7 @@ function RegexEditor({
2393
2390
  }
2394
2391
  ),
2395
2392
  /* @__PURE__ */ jsxRuntime.jsx(
2396
- chunkRWZ2PLMQ_js.FormInput,
2393
+ chunkKZDABEML_js.FormInput,
2397
2394
  {
2398
2395
  label: "Pattern",
2399
2396
  hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
@@ -2421,7 +2418,7 @@ function TimeWindowEditor({
2421
2418
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2422
2419
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2423
2420
  /* @__PURE__ */ jsxRuntime.jsx(
2424
- chunkRWZ2PLMQ_js.FormSelect,
2421
+ chunkKZDABEML_js.FormSelect,
2425
2422
  {
2426
2423
  label: "Timezone",
2427
2424
  value: value.timezone ?? "UTC",
@@ -2430,7 +2427,7 @@ function TimeWindowEditor({
2430
2427
  }
2431
2428
  ),
2432
2429
  /* @__PURE__ */ jsxRuntime.jsx(
2433
- chunkRWZ2PLMQ_js.FormInput,
2430
+ chunkKZDABEML_js.FormInput,
2434
2431
  {
2435
2432
  label: "Timestamp field (optional)",
2436
2433
  hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
@@ -2443,7 +2440,7 @@ function TimeWindowEditor({
2443
2440
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2444
2441
  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: [
2445
2442
  /* @__PURE__ */ jsxRuntime.jsx(
2446
- chunkRWZ2PLMQ_js.FormInput,
2443
+ chunkKZDABEML_js.FormInput,
2447
2444
  {
2448
2445
  label: `Start (hour)`,
2449
2446
  type: "number",
@@ -2454,7 +2451,7 @@ function TimeWindowEditor({
2454
2451
  }
2455
2452
  ),
2456
2453
  /* @__PURE__ */ jsxRuntime.jsx(
2457
- chunkRWZ2PLMQ_js.FormInput,
2454
+ chunkKZDABEML_js.FormInput,
2458
2455
  {
2459
2456
  label: `End (hour)`,
2460
2457
  type: "number",
@@ -2464,9 +2461,9 @@ function TimeWindowEditor({
2464
2461
  onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
2465
2462
  }
2466
2463
  ),
2467
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2464
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2468
2465
  ] }, index)),
2469
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
2466
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
2470
2467
  ] })
2471
2468
  ] });
2472
2469
  }
@@ -2489,7 +2486,7 @@ function BooleanGroupEditor({
2489
2486
  });
2490
2487
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2491
2488
  /* @__PURE__ */ jsxRuntime.jsx(
2492
- chunkRWZ2PLMQ_js.FormSelect,
2489
+ chunkKZDABEML_js.FormSelect,
2493
2490
  {
2494
2491
  label: "Combinator",
2495
2492
  value: value.combinator ?? "and",
@@ -2507,9 +2504,9 @@ function BooleanGroupEditor({
2507
2504
  depth
2508
2505
  }
2509
2506
  ),
2510
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
2507
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
2511
2508
  ] }, index)),
2512
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
2509
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
2513
2510
  ] })
2514
2511
  ] });
2515
2512
  }
@@ -2545,7 +2542,7 @@ function RuleActionBuilder({ value, onChange }) {
2545
2542
  };
2546
2543
  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: [
2547
2544
  /* @__PURE__ */ jsxRuntime.jsx(
2548
- chunkRWZ2PLMQ_js.FormSelect,
2545
+ chunkKZDABEML_js.FormSelect,
2549
2546
  {
2550
2547
  label: "Action type",
2551
2548
  value: type,
@@ -2555,7 +2552,7 @@ function RuleActionBuilder({ value, onChange }) {
2555
2552
  ),
2556
2553
  type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2557
2554
  /* @__PURE__ */ jsxRuntime.jsx(
2558
- chunkRWZ2PLMQ_js.FormInput,
2555
+ chunkKZDABEML_js.FormInput,
2559
2556
  {
2560
2557
  label: "Multiplier",
2561
2558
  type: "number",
@@ -2565,7 +2562,7 @@ function RuleActionBuilder({ value, onChange }) {
2565
2562
  }
2566
2563
  ),
2567
2564
  /* @__PURE__ */ jsxRuntime.jsx(
2568
- chunkRWZ2PLMQ_js.FormInput,
2565
+ chunkKZDABEML_js.FormInput,
2569
2566
  {
2570
2567
  label: "Reason code",
2571
2568
  value: stringParam(params.reason),
@@ -2575,7 +2572,7 @@ function RuleActionBuilder({ value, onChange }) {
2575
2572
  )
2576
2573
  ] }),
2577
2574
  type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
2578
- chunkRWZ2PLMQ_js.FormInput,
2575
+ chunkKZDABEML_js.FormInput,
2579
2576
  {
2580
2577
  label: "Floor (fraction, e.g. 0.08)",
2581
2578
  type: "number",
@@ -2585,7 +2582,7 @@ function RuleActionBuilder({ value, onChange }) {
2585
2582
  }
2586
2583
  ),
2587
2584
  type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
2588
- chunkRWZ2PLMQ_js.FormInput,
2585
+ chunkKZDABEML_js.FormInput,
2589
2586
  {
2590
2587
  label: "Tolerance (fraction)",
2591
2588
  type: "number",
@@ -2595,7 +2592,7 @@ function RuleActionBuilder({ value, onChange }) {
2595
2592
  }
2596
2593
  ),
2597
2594
  type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
2598
- chunkRWZ2PLMQ_js.FormInput,
2595
+ chunkKZDABEML_js.FormInput,
2599
2596
  {
2600
2597
  label: "Approval limit (fraction)",
2601
2598
  type: "number",
@@ -2605,7 +2602,7 @@ function RuleActionBuilder({ value, onChange }) {
2605
2602
  }
2606
2603
  ),
2607
2604
  type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
2608
- chunkRWZ2PLMQ_js.FormInput,
2605
+ chunkKZDABEML_js.FormInput,
2609
2606
  {
2610
2607
  label: "Step (e.g. 0.009)",
2611
2608
  type: "number",
@@ -2616,7 +2613,7 @@ function RuleActionBuilder({ value, onChange }) {
2616
2613
  ),
2617
2614
  type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2618
2615
  /* @__PURE__ */ jsxRuntime.jsx(
2619
- chunkRWZ2PLMQ_js.FormInput,
2616
+ chunkKZDABEML_js.FormInput,
2620
2617
  {
2621
2618
  label: "Channel",
2622
2619
  value: stringParam(params.channel),
@@ -2625,7 +2622,7 @@ function RuleActionBuilder({ value, onChange }) {
2625
2622
  }
2626
2623
  ),
2627
2624
  /* @__PURE__ */ jsxRuntime.jsx(
2628
- chunkRWZ2PLMQ_js.FormInput,
2625
+ chunkKZDABEML_js.FormInput,
2629
2626
  {
2630
2627
  label: "Severity",
2631
2628
  value: stringParam(params.severity),
@@ -2663,7 +2660,7 @@ function CustomParamsEditor({
2663
2660
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2664
2661
  entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
2665
2662
  /* @__PURE__ */ jsxRuntime.jsx(
2666
- chunkRWZ2PLMQ_js.FormInput,
2663
+ chunkKZDABEML_js.FormInput,
2667
2664
  {
2668
2665
  label: "Key",
2669
2666
  value: key,
@@ -2671,16 +2668,16 @@ function CustomParamsEditor({
2671
2668
  }
2672
2669
  ),
2673
2670
  /* @__PURE__ */ jsxRuntime.jsx(
2674
- chunkRWZ2PLMQ_js.FormInput,
2671
+ chunkKZDABEML_js.FormInput,
2675
2672
  {
2676
2673
  label: "Value",
2677
2674
  value: String(value ?? ""),
2678
2675
  onValueChange: (raw) => update(index, key, raw)
2679
2676
  }
2680
2677
  ),
2681
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2678
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
2682
2679
  ] }, index)),
2683
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
2680
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
2684
2681
  ] });
2685
2682
  }
2686
2683
  function numberParam(value, fallback) {
@@ -2710,9 +2707,9 @@ function RuleForm({ value, onChange }) {
2710
2707
  );
2711
2708
  const update = (key, v) => onChange({ ...value, [key]: v });
2712
2709
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
2713
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
2710
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
2714
2711
  /* @__PURE__ */ jsxRuntime.jsx(
2715
- chunkRWZ2PLMQ_js.FormInput,
2712
+ chunkKZDABEML_js.FormInput,
2716
2713
  {
2717
2714
  label: "Name",
2718
2715
  required: true,
@@ -2721,7 +2718,7 @@ function RuleForm({ value, onChange }) {
2721
2718
  }
2722
2719
  ),
2723
2720
  /* @__PURE__ */ jsxRuntime.jsx(
2724
- chunkRWZ2PLMQ_js.FormInput,
2721
+ chunkKZDABEML_js.FormInput,
2725
2722
  {
2726
2723
  label: "Priority",
2727
2724
  type: "number",
@@ -2731,7 +2728,7 @@ function RuleForm({ value, onChange }) {
2731
2728
  }
2732
2729
  ),
2733
2730
  /* @__PURE__ */ jsxRuntime.jsx(
2734
- chunkRWZ2PLMQ_js.FormSelect,
2731
+ chunkKZDABEML_js.FormSelect,
2735
2732
  {
2736
2733
  label: "Enabled",
2737
2734
  value: value.enabled ? "true" : "false",
@@ -2743,7 +2740,7 @@ function RuleForm({ value, onChange }) {
2743
2740
  }
2744
2741
  ),
2745
2742
  /* @__PURE__ */ jsxRuntime.jsx(
2746
- chunkRWZ2PLMQ_js.FormTextarea,
2743
+ chunkKZDABEML_js.FormTextarea,
2747
2744
  {
2748
2745
  label: "Description",
2749
2746
  rows: 2,
@@ -2755,7 +2752,7 @@ function RuleForm({ value, onChange }) {
2755
2752
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2756
2753
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
2757
2754
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
2758
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "indigo", children: value.condition.operator })
2755
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "indigo", children: value.condition.operator })
2759
2756
  ] }),
2760
2757
  /* @__PURE__ */ jsxRuntime.jsx(
2761
2758
  RuleConditionBuilder,
@@ -2768,7 +2765,7 @@ function RuleForm({ value, onChange }) {
2768
2765
  /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2769
2766
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
2770
2767
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
2771
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "fuchsia", children: value.action.type })
2768
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "fuchsia", children: value.action.type })
2772
2769
  ] }),
2773
2770
  /* @__PURE__ */ jsxRuntime.jsx(
2774
2771
  RuleActionBuilder,
@@ -2790,7 +2787,7 @@ function RuleForm({ value, onChange }) {
2790
2787
  ),
2791
2788
  showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2792
2789
  /* @__PURE__ */ jsxRuntime.jsx(
2793
- chunkRWZ2PLMQ_js.FormInput,
2790
+ chunkKZDABEML_js.FormInput,
2794
2791
  {
2795
2792
  label: "Valid from (ISO 8601)",
2796
2793
  type: "datetime-local",
@@ -2799,7 +2796,7 @@ function RuleForm({ value, onChange }) {
2799
2796
  }
2800
2797
  ),
2801
2798
  /* @__PURE__ */ jsxRuntime.jsx(
2802
- chunkRWZ2PLMQ_js.FormInput,
2799
+ chunkKZDABEML_js.FormInput,
2803
2800
  {
2804
2801
  label: "Valid until (ISO 8601)",
2805
2802
  type: "datetime-local",
@@ -2808,7 +2805,7 @@ function RuleForm({ value, onChange }) {
2808
2805
  }
2809
2806
  ),
2810
2807
  /* @__PURE__ */ jsxRuntime.jsx(
2811
- chunkRWZ2PLMQ_js.FormSelect,
2808
+ chunkKZDABEML_js.FormSelect,
2812
2809
  {
2813
2810
  label: "Status",
2814
2811
  value: value.status ?? "active",
@@ -2817,7 +2814,7 @@ function RuleForm({ value, onChange }) {
2817
2814
  }
2818
2815
  ),
2819
2816
  /* @__PURE__ */ jsxRuntime.jsx(
2820
- chunkRWZ2PLMQ_js.FormInput,
2817
+ chunkKZDABEML_js.FormInput,
2821
2818
  {
2822
2819
  label: "Tags (comma-separated)",
2823
2820
  value: (value.tags ?? []).join(", "),
@@ -3004,8 +3001,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
3004
3001
  ] });
3005
3002
  }
3006
3003
  function LogicNodeItemCard({ item, translationFunction }) {
3007
- const IconComponent = chunk4Z5NZINA_js.LOGIC_ICON_MAP[item.nodeType];
3008
- const gradient = chunk4Z5NZINA_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-slate-400 to-slate-500";
3004
+ const IconComponent = chunkC4UYEHPY_js.LOGIC_ICON_MAP[item.nodeType];
3005
+ const gradient = chunkC4UYEHPY_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-slate-400 to-slate-500";
3009
3006
  const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
3010
3007
  const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
3011
3008
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3076,7 +3073,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3076
3073
  [entityTypes, normalizedQuery]
3077
3074
  );
3078
3075
  const filteredLogicItems = react.useMemo(() => {
3079
- const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunk4Z5NZINA_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3076
+ const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkC4UYEHPY_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3080
3077
  if (!normalizedQuery) return visibleByDefault;
3081
3078
  return visibleByDefault.filter(
3082
3079
  (item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
@@ -3181,7 +3178,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3181
3178
  " models"
3182
3179
  ] })
3183
3180
  ] }),
3184
- provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "emerald", size: "xs", children: t("configured") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "amber", size: "xs", children: t("setup") })
3181
+ provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "emerald", size: "xs", children: t("configured") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "amber", size: "xs", children: t("setup") })
3185
3182
  ]
3186
3183
  },
3187
3184
  provider.id
@@ -3212,7 +3209,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3212
3209
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.category })
3213
3210
  ] }),
3214
3211
  /* @__PURE__ */ jsxRuntime.jsx(
3215
- chunkRWZ2PLMQ_js.ToggleSwitch,
3212
+ chunkKZDABEML_js.ToggleSwitch,
3216
3213
  {
3217
3214
  checked: Boolean(tool.enabled),
3218
3215
  onChange: () => {
@@ -3253,7 +3250,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3253
3250
  ] })
3254
3251
  ] }),
3255
3252
  /* @__PURE__ */ jsxRuntime.jsx(
3256
- chunkRWZ2PLMQ_js.ToggleSwitch,
3253
+ chunkKZDABEML_js.ToggleSwitch,
3257
3254
  {
3258
3255
  checked: Boolean(rule.enabled),
3259
3256
  onChange: () => {
@@ -3289,8 +3286,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3289
3286
  limit: entity.defaultLimit
3290
3287
  });
3291
3288
  const dsLogo = getDatasourceLogo(entity.id);
3292
- const EntityIcon = chunk4Z5NZINA_js.getEntityIcon(entity.id);
3293
- const entityGradient = chunk4Z5NZINA_js.getEntityGradient(entity.id);
3289
+ const EntityIcon = chunkC4UYEHPY_js.getEntityIcon(entity.id);
3290
+ const entityGradient = chunkC4UYEHPY_js.getEntityGradient(entity.id);
3294
3291
  return /* @__PURE__ */ jsxRuntime.jsxs(
3295
3292
  "div",
3296
3293
  {
@@ -3308,9 +3305,9 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3308
3305
  ] })
3309
3306
  ] }),
3310
3307
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3311
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", size: "xs", children: "Read only" }),
3308
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "Read only" }),
3312
3309
  /* @__PURE__ */ jsxRuntime.jsx(
3313
- chunkRWZ2PLMQ_js.ToggleSwitch,
3310
+ chunkKZDABEML_js.ToggleSwitch,
3314
3311
  {
3315
3312
  checked: true,
3316
3313
  onChange: () => {
@@ -3396,32 +3393,29 @@ function WorkflowListBar({
3396
3393
  children: [
3397
3394
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
3398
3395
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3399
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `truncate text-sm font-medium ${isActive ? "text-indigo-700 dark:text-indigo-300" : "text-gray-700 dark:text-gray-300"}`, children: workflow.name }),
3396
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `truncate text-sm font-medium ${isActive ? "text-indigo-700 dark:text-indigo-300" : "text-slate-700 dark:text-slate-300"}`, children: workflow.name }),
3400
3397
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "shrink-0 rounded-full bg-slate-500/15 px-1.5 py-0.5 text-[10px] font-medium text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: [
3401
3398
  "v",
3402
3399
  workflow.version
3403
3400
  ] }),
3404
3401
  workflow.isDraft ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded-full bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-amber-700 dark:bg-amber-500/20 dark:text-amber-300", children: tWorkflow("draftBadge") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded-full bg-emerald-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-300", children: tWorkflow("published") })
3405
3402
  ] }),
3406
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-[10px] text-gray-400 dark:text-gray-500", children: workflow.updatedAt ? formatRelativeTime(typeof workflow.updatedAt === "string" ? workflow.updatedAt : workflow.updatedAt.toISOString()) : "" })
3403
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-[10px] text-slate-400 dark:text-slate-500", children: workflow.updatedAt ? formatRelativeTime(typeof workflow.updatedAt === "string" ? workflow.updatedAt : workflow.updatedAt.toISOString()) : "" })
3407
3404
  ] }),
3408
3405
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100", children: [
3409
- onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx(
3410
- "button",
3406
+ onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
3407
+ chunkMXQ2EYG2_js.IconButton,
3411
3408
  {
3412
- type: "button",
3413
- onClick: (event) => {
3414
- event.stopPropagation();
3415
- onConvertToSubworkflow(workflow);
3416
- },
3417
- className: "rounded-md p-1 text-gray-400 transition-colors hover:bg-teal-50 hover:text-teal-600 dark:hover:bg-teal-950/30 dark:hover:text-teal-400",
3418
- "aria-label": `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
3419
- title: tWorkflow("convertToSubworkflow"),
3420
- children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
3409
+ label: `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
3410
+ variant: "ghost",
3411
+ size: "sm",
3412
+ color: "ios-teal",
3413
+ onClick: () => onConvertToSubworkflow(workflow),
3414
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
3421
3415
  }
3422
- ),
3416
+ ) }),
3423
3417
  workflows.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
3424
- chunkEBARYRSA_js.IconButton,
3418
+ chunkMXQ2EYG2_js.IconButton,
3425
3419
  {
3426
3420
  label: `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
3427
3421
  variant: "ghost",
@@ -3442,7 +3436,7 @@ function WorkflowListBar({
3442
3436
  {
3443
3437
  type: "button",
3444
3438
  onClick: onCreate,
3445
- className: "liquid-surface flex shrink-0 items-center gap-1.5 rounded-xl !border-dashed px-3 py-2 text-xs font-medium text-gray-500 transition-all hover:shadow-md hover:text-indigo-600 dark:text-gray-400 dark:hover:text-indigo-400",
3439
+ className: "liquid-surface flex shrink-0 items-center gap-1.5 rounded-xl !border-dashed px-3 py-2 text-xs font-medium text-slate-500 transition-all hover:shadow-md hover:text-indigo-600 dark:text-slate-400 dark:hover:text-indigo-400",
3446
3440
  children: [
3447
3441
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-3.5 w-3.5" }),
3448
3442
  tWorkflow("newWorkflow")
@@ -3510,7 +3504,7 @@ function VersionHistoryPanel({
3510
3504
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
3511
3505
  ] }),
3512
3506
  /* @__PURE__ */ jsxRuntime.jsx(
3513
- chunkEBARYRSA_js.IconButton,
3507
+ chunkMXQ2EYG2_js.IconButton,
3514
3508
  {
3515
3509
  label: translations("close"),
3516
3510
  variant: "ghost",
@@ -3525,7 +3519,7 @@ function VersionHistoryPanel({
3525
3519
  isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "version-history-loading", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6 w-6 animate-spin motion-reduce:animate-none rounded-full border-2 border-blue-500 border-t-transparent" }) }),
3526
3520
  loadError && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-8 text-center", "data-testid": "version-history-error", children: [
3527
3521
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-500 dark:text-red-400", children: loadError }),
3528
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, size: "xs", onClick: loadVersions, children: translations("retry") })
3522
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: loadVersions, children: translations("retry") })
3529
3523
  ] }),
3530
3524
  !isLoading && !loadError && versions.length === 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "version-history-empty", children: [
3531
3525
  /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
@@ -3544,7 +3538,7 @@ function VersionHistoryPanel({
3544
3538
  "v",
3545
3539
  version.version
3546
3540
  ] }),
3547
- isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "blue", size: "xs", children: translations("current") })
3541
+ isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "blue", size: "xs", children: translations("current") })
3548
3542
  ] }) }),
3549
3543
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: [
3550
3544
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: formatTimestamp3(version.publishedAt) }),
@@ -3565,7 +3559,7 @@ function VersionHistoryPanel({
3565
3559
  ] }),
3566
3560
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex gap-2", children: [
3567
3561
  /* @__PURE__ */ jsxRuntime.jsxs(
3568
- chunkEBARYRSA_js.Button,
3562
+ chunkMXQ2EYG2_js.Button,
3569
3563
  {
3570
3564
  type: "button",
3571
3565
  outline: true,
@@ -3579,7 +3573,7 @@ function VersionHistoryPanel({
3579
3573
  }
3580
3574
  ),
3581
3575
  !isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsxs(
3582
- chunkEBARYRSA_js.Button,
3576
+ chunkMXQ2EYG2_js.Button,
3583
3577
  {
3584
3578
  type: "button",
3585
3579
  outline: true,
@@ -3638,9 +3632,9 @@ function formatDuration2(durationMs) {
3638
3632
  }
3639
3633
  function RunPanel({ open, onClose, onRun, onStop }) {
3640
3634
  const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.runPanel");
3641
- const nodes = chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodes);
3642
- const isRunning = chunk4Z5NZINA_js.useWorkflowStore((state) => state.isRunning);
3643
- const nodeResults = chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodeResults);
3635
+ const nodes = chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodes);
3636
+ const isRunning = chunkC4UYEHPY_js.useWorkflowStore((state) => state.isRunning);
3637
+ const nodeResults = chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodeResults);
3644
3638
  const startNode = nodes.find((node) => node.type === "start");
3645
3639
  const hasEndNode = nodes.some((node) => node.type === "end");
3646
3640
  const hasValidStartConfig = Boolean(
@@ -3680,7 +3674,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
3680
3674
  ] }),
3681
3675
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3682
3676
  isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(
3683
- chunkEBARYRSA_js.Button,
3677
+ chunkMXQ2EYG2_js.Button,
3684
3678
  {
3685
3679
  type: "button",
3686
3680
  destructive: true,
@@ -3693,7 +3687,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
3693
3687
  ]
3694
3688
  }
3695
3689
  ) : /* @__PURE__ */ jsxRuntime.jsxs(
3696
- chunkEBARYRSA_js.Button,
3690
+ chunkMXQ2EYG2_js.Button,
3697
3691
  {
3698
3692
  type: "button",
3699
3693
  color: "ios-green",
@@ -3708,7 +3702,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
3708
3702
  }
3709
3703
  ),
3710
3704
  /* @__PURE__ */ jsxRuntime.jsx(
3711
- chunkEBARYRSA_js.IconButton,
3705
+ chunkMXQ2EYG2_js.IconButton,
3712
3706
  {
3713
3707
  label: translations("close"),
3714
3708
  variant: "ghost",
@@ -3974,8 +3968,8 @@ function inferVariables(config, nodeType) {
3974
3968
  }
3975
3969
  function VariableInspector({ open, onClose }) {
3976
3970
  const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.variableInspector");
3977
- const nodes = chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodes);
3978
- const edges = chunk4Z5NZINA_js.useWorkflowStore((state) => state.edges);
3971
+ const nodes = chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodes);
3972
+ const edges = chunkC4UYEHPY_js.useWorkflowStore((state) => state.edges);
3979
3973
  const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
3980
3974
  const toggleNodeExpansion = react.useCallback((nodeId) => {
3981
3975
  setExpandedNodes((current) => {
@@ -4022,7 +4016,7 @@ function VariableInspector({ open, onClose }) {
4022
4016
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
4023
4017
  ] }),
4024
4018
  /* @__PURE__ */ jsxRuntime.jsx(
4025
- chunkEBARYRSA_js.IconButton,
4019
+ chunkMXQ2EYG2_js.IconButton,
4026
4020
  {
4027
4021
  label: translations("close"),
4028
4022
  variant: "ghost",
@@ -4038,8 +4032,8 @@ function VariableInspector({ open, onClose }) {
4038
4032
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") })
4039
4033
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-slate-100 dark:divide-slate-800", children: nodeVariableEntries.map((entry) => {
4040
4034
  const isExpanded = expandedNodes.has(entry.nodeId);
4041
- const IconComponent = chunk4Z5NZINA_js.LOGIC_ICON_MAP[entry.nodeType];
4042
- const gradient = chunk4Z5NZINA_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-slate-400 to-slate-500";
4035
+ const IconComponent = chunkC4UYEHPY_js.LOGIC_ICON_MAP[entry.nodeType];
4036
+ const gradient = chunkC4UYEHPY_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-slate-400 to-slate-500";
4043
4037
  const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
4044
4038
  const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
4045
4039
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
@@ -4105,7 +4099,7 @@ function RunInputDialog({
4105
4099
  onRun
4106
4100
  }) {
4107
4101
  const t = chunkY5VN4SPH_js.useTranslations("agents.workflow.runInputDialog");
4108
- const nodes = chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodes);
4102
+ const nodes = chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodes);
4109
4103
  const [values, setValues] = react.useState({});
4110
4104
  const inputVariableNames = react.useMemo(() => {
4111
4105
  const storeStartNode = nodes.find((node) => node.type === "start");
@@ -4132,7 +4126,7 @@ function RunInputDialog({
4132
4126
  }, [onClose]);
4133
4127
  if (!open) return null;
4134
4128
  return /* @__PURE__ */ jsxRuntime.jsxs(
4135
- chunkRWZ2PLMQ_js.GlassModal,
4129
+ chunkKZDABEML_js.GlassModal,
4136
4130
  {
4137
4131
  open,
4138
4132
  onClose: handleClose,
@@ -4143,7 +4137,7 @@ function RunInputDialog({
4143
4137
  /* @__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: [
4144
4138
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
4145
4139
  /* @__PURE__ */ jsxRuntime.jsx(
4146
- chunkRWZ2PLMQ_js.Input,
4140
+ chunkKZDABEML_js.Input,
4147
4141
  {
4148
4142
  value: values[variableName] ?? "",
4149
4143
  onChange: (event) => handleValueChange(variableName, event.target.value),
@@ -4152,8 +4146,8 @@ function RunInputDialog({
4152
4146
  )
4153
4147
  ] }, variableName)) }),
4154
4148
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
4155
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
4156
- /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
4149
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
4150
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
4157
4151
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
4158
4152
  t("run")
4159
4153
  ] })
@@ -4186,8 +4180,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4186
4180
  const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
4187
4181
  const [selectedRun, setSelectedRun] = react.useState(null);
4188
4182
  const [selectedNode, setSelectedNode] = react.useState(null);
4189
- const isRunning = chunk4Z5NZINA_js.useWorkflowStore((state) => state.isRunning);
4190
- const nodeResults = chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodeResults);
4183
+ const isRunning = chunkC4UYEHPY_js.useWorkflowStore((state) => state.isRunning);
4184
+ const nodeResults = chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodeResults);
4191
4185
  const refreshRuns = react.useCallback(async () => {
4192
4186
  setIsLoadingRuns(true);
4193
4187
  try {
@@ -4210,7 +4204,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4210
4204
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
4211
4205
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: t("title") }),
4212
4206
  /* @__PURE__ */ jsxRuntime.jsx(
4213
- chunkEBARYRSA_js.IconButton,
4207
+ chunkMXQ2EYG2_js.IconButton,
4214
4208
  {
4215
4209
  label: t("close"),
4216
4210
  variant: "ghost",
@@ -4241,7 +4235,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4241
4235
  selectedNode && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
4242
4236
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
4243
4237
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: t("nodeDetail") }),
4244
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, size: "xs", onClick: () => setSelectedNode(null), children: t("close") })
4238
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: () => setSelectedNode(null), children: t("close") })
4245
4239
  ] }),
4246
4240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-xs", children: [
4247
4241
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
@@ -4366,7 +4360,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4366
4360
  onAutoSaveGraph(graph);
4367
4361
  }, [onAutoSaveGraph, onGraphSnapshot]);
4368
4362
  return /* @__PURE__ */ jsxRuntime.jsx(
4369
- chunk4Z5NZINA_js.Workspace,
4363
+ chunkC4UYEHPY_js.Workspace,
4370
4364
  {
4371
4365
  ...workspaceProps,
4372
4366
  onGraphChange: handleGraphChange
@@ -4374,7 +4368,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4374
4368
  );
4375
4369
  });
4376
4370
  function DynamicIslandConfirm2(props) {
4377
- return /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.DynamicIslandConfirm, { ...props });
4371
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.DynamicIslandConfirm, { ...props });
4378
4372
  }
4379
4373
  var JSON_PREVIEW_LINE_LIMIT = 50;
4380
4374
  function DslExportModal({ open, onClose, workflow, graph }) {
@@ -4428,7 +4422,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4428
4422
  }, [jsonString, workflow.name, workflow.version]);
4429
4423
  if (!open) return null;
4430
4424
  return /* @__PURE__ */ jsxRuntime.jsx(
4431
- chunkRWZ2PLMQ_js.GlassModal,
4425
+ chunkKZDABEML_js.GlassModal,
4432
4426
  {
4433
4427
  open,
4434
4428
  onClose,
@@ -4470,7 +4464,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4470
4464
  ] }),
4471
4465
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
4472
4466
  /* @__PURE__ */ jsxRuntime.jsx(
4473
- chunkEBARYRSA_js.Button,
4467
+ chunkMXQ2EYG2_js.Button,
4474
4468
  {
4475
4469
  type: "button",
4476
4470
  onClick: handleCopyToClipboard,
@@ -4487,7 +4481,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
4487
4481
  }
4488
4482
  ),
4489
4483
  /* @__PURE__ */ jsxRuntime.jsxs(
4490
- chunkEBARYRSA_js.Button,
4484
+ chunkMXQ2EYG2_js.Button,
4491
4485
  {
4492
4486
  type: "button",
4493
4487
  onClick: handleDownloadJson,
@@ -4646,7 +4640,7 @@ function DslImportModal({ open, onClose, onImport }) {
4646
4640
  }, []);
4647
4641
  if (!open) return null;
4648
4642
  return /* @__PURE__ */ jsxRuntime.jsx(
4649
- chunkRWZ2PLMQ_js.GlassModal,
4643
+ chunkKZDABEML_js.GlassModal,
4650
4644
  {
4651
4645
  open,
4652
4646
  onClose,
@@ -4661,15 +4655,15 @@ function DslImportModal({ open, onClose, onImport }) {
4661
4655
  onDragLeave: handleDragLeave,
4662
4656
  onDrop: handleDrop,
4663
4657
  onClick: handleClickUpload,
4664
- className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-gray-300 hover:border-gray-400 dark:border-gray-600 dark:hover:border-gray-500"}`,
4658
+ className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-slate-300 hover:border-slate-400 dark:border-slate-600 dark:hover:border-slate-500"}`,
4665
4659
  "data-testid": "import-dropzone",
4666
4660
  role: "button",
4667
4661
  tabIndex: 0,
4668
4662
  "aria-label": translations("dropzone"),
4669
4663
  children: [
4670
- /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-gray-400 dark:text-gray-500" }),
4671
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-gray-700 dark:text-gray-300", children: translations("dropzone") }),
4672
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-gray-500 dark:text-gray-400", children: translations("dropzoneHint") }),
4664
+ /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-slate-400 dark:text-slate-500" }),
4665
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-slate-700 dark:text-slate-300", children: translations("dropzone") }),
4666
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: translations("dropzoneHint") }),
4673
4667
  /* @__PURE__ */ jsxRuntime.jsx(
4674
4668
  "input",
4675
4669
  {
@@ -4685,8 +4679,8 @@ function DslImportModal({ open, onClose, onImport }) {
4685
4679
  }
4686
4680
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
4687
4681
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
4688
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: fileName }),
4689
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
4682
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-slate-700 dark:text-slate-300", children: fileName }),
4683
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
4690
4684
  ] }),
4691
4685
  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: [
4692
4686
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -4713,10 +4707,10 @@ function DslImportModal({ open, onClose, onImport }) {
4713
4707
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 space-y-1", children: validationResult.errors.map((validationError, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-xs text-red-600 dark:text-red-400", children: validationError }, index)) })
4714
4708
  ] })
4715
4709
  ] }) }),
4716
- /* @__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: [
4717
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
4710
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
4711
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
4718
4712
  /* @__PURE__ */ jsxRuntime.jsxs(
4719
- chunkEBARYRSA_js.Button,
4713
+ chunkMXQ2EYG2_js.Button,
4720
4714
  {
4721
4715
  type: "button",
4722
4716
  onClick: handleImport,
@@ -4737,14 +4731,14 @@ function DslImportModal({ open, onClose, onImport }) {
4737
4731
  }
4738
4732
 
4739
4733
  // src/astrlabe/store/selectors.ts
4740
- var useCanUndo = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.past.length > 0);
4741
- var useCanRedo = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.future.length > 0);
4742
- var useHasCopied = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.clipboard !== null);
4743
- var useContextMenu = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.contextMenu);
4744
- var useEditingNodeId = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.editingNodeId);
4745
- var useSelectedNodeCount = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4746
- var useIsRunning = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.isRunning);
4747
- var useNodeResults = () => chunk4Z5NZINA_js.useWorkflowStore((state) => state.nodeResults);
4734
+ var useCanUndo = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.past.length > 0);
4735
+ var useCanRedo = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.future.length > 0);
4736
+ var useHasCopied = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.clipboard !== null);
4737
+ var useContextMenu = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.contextMenu);
4738
+ var useEditingNodeId = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.editingNodeId);
4739
+ var useSelectedNodeCount = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4740
+ var useIsRunning = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.isRunning);
4741
+ var useNodeResults = () => chunkC4UYEHPY_js.useWorkflowStore((state) => state.nodeResults);
4748
4742
  var DEFAULT_MAX_HISTORY = 50;
4749
4743
  function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
4750
4744
  const pastRef = react.useRef([]);
@@ -5068,5 +5062,5 @@ exports.useNodeResults = useNodeResults;
5068
5062
  exports.useSelectedNodeCount = useSelectedNodeCount;
5069
5063
  exports.useSubworkflowStore = useSubworkflowStore;
5070
5064
  exports.useUndoRedo = useUndoRedo;
5071
- //# sourceMappingURL=chunk-UPWJRCAD.js.map
5072
- //# sourceMappingURL=chunk-UPWJRCAD.js.map
5065
+ //# sourceMappingURL=chunk-KRS2CLPR.js.map
5066
+ //# sourceMappingURL=chunk-KRS2CLPR.js.map