@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
@@ -2,18 +2,18 @@
2
2
  'use strict';
3
3
 
4
4
  var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
5
- var chunk7IAWXG43_js = require('../../chunk-7IAWXG43.js');
6
- var chunkVCL5LDS5_js = require('../../chunk-VCL5LDS5.js');
7
- var chunkUPWJRCAD_js = require('../../chunk-UPWJRCAD.js');
5
+ var chunkOQM252SM_js = require('../../chunk-OQM252SM.js');
6
+ var chunkPADXORD2_js = require('../../chunk-PADXORD2.js');
7
+ var chunkKRS2CLPR_js = require('../../chunk-KRS2CLPR.js');
8
8
  require('../../chunk-55H6WZQP.js');
9
9
  require('../../chunk-DJDZIRM6.js');
10
- require('../../chunk-4Z5NZINA.js');
11
- var chunkRWZ2PLMQ_js = require('../../chunk-RWZ2PLMQ.js');
10
+ require('../../chunk-C4UYEHPY.js');
11
+ var chunkKZDABEML_js = require('../../chunk-KZDABEML.js');
12
12
  require('../../chunk-Y5VN4SPH.js');
13
13
  require('../../chunk-22XPYFHJ.js');
14
14
  require('../../chunk-2OZZH2IO.js');
15
- require('../../chunk-CVEI4RQP.js');
16
- var chunkEBARYRSA_js = require('../../chunk-EBARYRSA.js');
15
+ require('../../chunk-6NEESZVO.js');
16
+ var chunkMXQ2EYG2_js = require('../../chunk-MXQ2EYG2.js');
17
17
  require('../../chunk-UZ3CMNUJ.js');
18
18
  var chunkS7KHTUHA_js = require('../../chunk-S7KHTUHA.js');
19
19
  require('../../chunk-72SWXOD5.js');
@@ -70,7 +70,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
70
70
  setEnabledFilter("all");
71
71
  };
72
72
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
73
- chunkRWZ2PLMQ_js.HeroSection,
73
+ chunkKZDABEML_js.HeroSection,
74
74
  {
75
75
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
76
76
  label: labels.title,
@@ -78,7 +78,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
78
78
  subtitle: labels.subtitle,
79
79
  gradient: "from-emerald-500 to-teal-700",
80
80
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
81
- chunkRWZ2PLMQ_js.SearchBar,
81
+ chunkKZDABEML_js.SearchBar,
82
82
  {
83
83
  searchTerm,
84
84
  onSearchChange: setSearchTerm,
@@ -95,8 +95,8 @@ function AgentsModelsPageView({ labels, models, loading }) {
95
95
  count: filterCount,
96
96
  onClear: filterCount > 0 ? clearAllFilters : void 0,
97
97
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
98
- providerChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByProvider ?? "Provedor", children: /* @__PURE__ */ jsxRuntime.jsx(
99
- chunkRWZ2PLMQ_js.ChipPicker,
98
+ providerChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByProvider ?? "Provedor", children: /* @__PURE__ */ jsxRuntime.jsx(
99
+ chunkKZDABEML_js.ChipPicker,
100
100
  {
101
101
  items: providerChipItems,
102
102
  selectedIds: selectedProviders,
@@ -106,21 +106,21 @@ function AgentsModelsPageView({ labels, models, loading }) {
106
106
  clearLabel: labels.clear ?? "Limpar"
107
107
  }
108
108
  ) }),
109
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value)) }) })
109
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value)) }) })
110
110
  ] })
111
111
  }
112
112
  }
113
113
  ) : void 0
114
114
  }
115
115
  );
116
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsxRuntime.jsx(
117
- chunkRWZ2PLMQ_js.EntityCard,
116
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsxRuntime.jsx(
117
+ chunkKZDABEML_js.EntityCard,
118
118
  {
119
119
  accentGradient: "from-emerald-500 to-teal-700",
120
120
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-emerald-500/10 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-6 w-6" }) }),
121
121
  title: model.name,
122
122
  subtitle: `${labels.provider}: ${model.provider}`,
123
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
123
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
124
124
  },
125
125
  model.id
126
126
  )) });
@@ -183,7 +183,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
183
183
  setHasActiveVersion("all");
184
184
  };
185
185
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
186
- chunkRWZ2PLMQ_js.HeroSection,
186
+ chunkKZDABEML_js.HeroSection,
187
187
  {
188
188
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
189
189
  label: labels.title,
@@ -191,7 +191,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
191
191
  subtitle: labels.subtitle,
192
192
  gradient: "from-violet-500 to-indigo-700",
193
193
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
194
- chunkRWZ2PLMQ_js.SearchBar,
194
+ chunkKZDABEML_js.SearchBar,
195
195
  {
196
196
  searchTerm,
197
197
  onSearchChange: setSearchTerm,
@@ -208,8 +208,8 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
208
208
  count: filterCount,
209
209
  onClear: filterCount > 0 ? clearAllFilters : void 0,
210
210
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
211
- modelChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByModel ?? "Modelo", children: /* @__PURE__ */ jsxRuntime.jsx(
212
- chunkRWZ2PLMQ_js.ChipPicker,
211
+ modelChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByModel ?? "Modelo", children: /* @__PURE__ */ jsxRuntime.jsx(
212
+ chunkKZDABEML_js.ChipPicker,
213
213
  {
214
214
  items: modelChipItems,
215
215
  selectedIds: selectedModelIds,
@@ -219,13 +219,13 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
219
219
  clearLabel: labels.clear ?? "Limpar"
220
220
  }
221
221
  ) }),
222
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByActiveVersion ?? "Vers\xE3o ativa", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "with", "without"].map((value) => hasActiveVersion === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setHasActiveVersion(value), children: versionLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setHasActiveVersion(value), children: versionLabelFor(value) }, value)) }) })
222
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByActiveVersion ?? "Vers\xE3o ativa", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "with", "without"].map((value) => hasActiveVersion === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setHasActiveVersion(value), children: versionLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setHasActiveVersion(value), children: versionLabelFor(value) }, value)) }) })
223
223
  ] })
224
224
  }
225
225
  }
226
226
  ) : void 0,
227
227
  actions: /* @__PURE__ */ jsxRuntime.jsx(
228
- chunkRWZ2PLMQ_js.CreateActionButton,
228
+ chunkKZDABEML_js.CreateActionButton,
229
229
  {
230
230
  mode: "desktop",
231
231
  label: labels.addAgent,
@@ -236,7 +236,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
236
236
  }
237
237
  );
238
238
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
239
- chunkRWZ2PLMQ_js.CreateActionButton,
239
+ chunkKZDABEML_js.CreateActionButton,
240
240
  {
241
241
  mode: "mobile",
242
242
  label: labels.addAgent,
@@ -244,23 +244,23 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
244
244
  accent: "violet"
245
245
  }
246
246
  );
247
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredAgents.map((agent) => {
247
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredAgents.map((agent) => {
248
248
  const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
249
249
  return /* @__PURE__ */ jsxRuntime.jsx(
250
- chunkRWZ2PLMQ_js.EntityCard,
250
+ chunkKZDABEML_js.EntityCard,
251
251
  {
252
252
  accentGradient: "from-violet-500 to-indigo-700",
253
253
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-violet-500/10 text-violet-600 dark:bg-violet-500/20 dark:text-violet-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-6 w-6" }) }),
254
254
  title: String(agent.name ?? ""),
255
255
  subtitle: String(modelRecord?.name ?? agent.modelId ?? ""),
256
- status: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Badge, { color: "emerald", children: [
256
+ status: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: "emerald", children: [
257
257
  "v",
258
258
  agent.activePromptVersion
259
259
  ] }) : null,
260
260
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
261
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(agent), children: labels.edit }),
261
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(agent), children: labels.edit }),
262
262
  /* @__PURE__ */ jsxRuntime.jsx(
263
- chunkEBARYRSA_js.Button,
263
+ chunkMXQ2EYG2_js.Button,
264
264
  {
265
265
  type: "button",
266
266
  size: "sm",
@@ -284,7 +284,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
284
284
  );
285
285
  }) });
286
286
  const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
287
- chunkRWZ2PLMQ_js.GlassModal,
287
+ chunkKZDABEML_js.GlassModal,
288
288
  {
289
289
  open: true,
290
290
  onClose: () => {
@@ -307,13 +307,13 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
307
307
  outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
308
308
  });
309
309
  },
310
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
311
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
312
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
313
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
314
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
315
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
316
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
310
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
311
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
312
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
313
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
314
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
315
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
316
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
317
317
  ] })
318
318
  }
319
319
  );
@@ -437,7 +437,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
437
437
  setActiveFilter("all");
438
438
  };
439
439
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
440
- chunkRWZ2PLMQ_js.HeroSection,
440
+ chunkKZDABEML_js.HeroSection,
441
441
  {
442
442
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
443
443
  label: labels.title,
@@ -445,7 +445,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
445
445
  subtitle: labels.subtitle,
446
446
  gradient: "from-sky-500 to-blue-700",
447
447
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
448
- chunkRWZ2PLMQ_js.SearchBar,
448
+ chunkKZDABEML_js.SearchBar,
449
449
  {
450
450
  searchTerm,
451
451
  onSearchChange: setSearchTerm,
@@ -462,8 +462,8 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
462
462
  count: filterCount,
463
463
  onClear: filterCount > 0 ? clearAllFilters : void 0,
464
464
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
465
- agentChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByAgent ?? "Agente", children: /* @__PURE__ */ jsxRuntime.jsx(
466
- chunkRWZ2PLMQ_js.ChipPicker,
465
+ agentChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByAgent ?? "Agente", children: /* @__PURE__ */ jsxRuntime.jsx(
466
+ chunkKZDABEML_js.ChipPicker,
467
467
  {
468
468
  items: agentChipItems,
469
469
  selectedIds: selectedAgentIds,
@@ -473,8 +473,8 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
473
473
  clearLabel: labels.clear ?? "Limpar"
474
474
  }
475
475
  ) }),
476
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByLocale ?? "Idioma", children: /* @__PURE__ */ jsxRuntime.jsx(
477
- chunkRWZ2PLMQ_js.ChipPicker,
476
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByLocale ?? "Idioma", children: /* @__PURE__ */ jsxRuntime.jsx(
477
+ chunkKZDABEML_js.ChipPicker,
478
478
  {
479
479
  items: localeChipItems,
480
480
  selectedIds: selectedLocales,
@@ -484,13 +484,13 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
484
484
  clearLabel: labels.clear ?? "Limpar"
485
485
  }
486
486
  ) }),
487
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByActive ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "active", "inactive"].map((value) => activeFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setActiveFilter(value), children: activeLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setActiveFilter(value), children: activeLabelFor(value) }, value)) }) })
487
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByActive ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "active", "inactive"].map((value) => activeFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setActiveFilter(value), children: activeLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setActiveFilter(value), children: activeLabelFor(value) }, value)) }) })
488
488
  ] })
489
489
  }
490
490
  }
491
491
  ) : void 0,
492
492
  actions: /* @__PURE__ */ jsxRuntime.jsx(
493
- chunkRWZ2PLMQ_js.CreateActionButton,
493
+ chunkKZDABEML_js.CreateActionButton,
494
494
  {
495
495
  mode: "desktop",
496
496
  label: labels.addPrompt,
@@ -501,7 +501,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
501
501
  }
502
502
  );
503
503
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
504
- chunkRWZ2PLMQ_js.CreateActionButton,
504
+ chunkKZDABEML_js.CreateActionButton,
505
505
  {
506
506
  mode: "mobile",
507
507
  label: labels.addPrompt,
@@ -509,21 +509,21 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
509
509
  accent: "sky"
510
510
  }
511
511
  );
512
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredPrompts.map((prompt) => {
512
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredPrompts.map((prompt) => {
513
513
  const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
514
514
  const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
515
515
  return /* @__PURE__ */ jsxRuntime.jsx(
516
- chunkRWZ2PLMQ_js.EntityCard,
516
+ chunkKZDABEML_js.EntityCard,
517
517
  {
518
518
  accentGradient: "from-sky-500 to-blue-700",
519
519
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-6 w-6" }) }),
520
520
  title: agentName,
521
521
  subtitle: `${prompt.locale} \xB7 v${prompt.version}`,
522
- status: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "emerald", children: labels.isActive }) : null,
522
+ status: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "emerald", children: labels.isActive }) : null,
523
523
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
524
- !prompt.isActive && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(prompt), children: labels.activate }),
524
+ !prompt.isActive && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(prompt), children: labels.activate }),
525
525
  /* @__PURE__ */ jsxRuntime.jsx(
526
- chunkEBARYRSA_js.Button,
526
+ chunkMXQ2EYG2_js.Button,
527
527
  {
528
528
  type: "button",
529
529
  size: "sm",
@@ -547,7 +547,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
547
547
  mobileAction
548
548
  ] }),
549
549
  /* @__PURE__ */ jsxRuntime.jsx(
550
- chunkRWZ2PLMQ_js.GlassModal,
550
+ chunkKZDABEML_js.GlassModal,
551
551
  {
552
552
  open: createOpen,
553
553
  onClose: () => setCreateOpen(false),
@@ -571,11 +571,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
571
571
  });
572
572
  setCreateOpen(false);
573
573
  },
574
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
575
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
576
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
574
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
575
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
576
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
577
577
  /* @__PURE__ */ jsxRuntime.jsx(
578
- chunkRWZ2PLMQ_js.FormSelect,
578
+ chunkKZDABEML_js.FormSelect,
579
579
  {
580
580
  name: "isActive",
581
581
  label: labels.isActive,
@@ -583,10 +583,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
583
583
  defaultValue: "true"
584
584
  }
585
585
  ),
586
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "reason", label: labels.reason }),
587
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
588
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
589
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
586
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "reason", label: labels.reason }),
587
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
588
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
589
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
590
590
  ] })
591
591
  }
592
592
  )
@@ -659,7 +659,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
659
659
  setSelectedToolTypes([]);
660
660
  };
661
661
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
662
- chunkRWZ2PLMQ_js.HeroSection,
662
+ chunkKZDABEML_js.HeroSection,
663
663
  {
664
664
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
665
665
  label: labels.title,
@@ -667,7 +667,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
667
667
  subtitle: labels.subtitle,
668
668
  gradient: "from-amber-500 to-orange-700",
669
669
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
670
- chunkRWZ2PLMQ_js.SearchBar,
670
+ chunkKZDABEML_js.SearchBar,
671
671
  {
672
672
  searchTerm,
673
673
  onSearchChange: setSearchTerm,
@@ -683,8 +683,8 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
683
683
  title: labels.filtersTitle ?? "Filtros",
684
684
  count: filterCount,
685
685
  onClear: filterCount > 0 ? clearAllFilters : void 0,
686
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-5", children: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByToolType ?? "Tipo de ferramenta", children: /* @__PURE__ */ jsxRuntime.jsx(
687
- chunkRWZ2PLMQ_js.ChipPicker,
686
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-5", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByToolType ?? "Tipo de ferramenta", children: /* @__PURE__ */ jsxRuntime.jsx(
687
+ chunkKZDABEML_js.ChipPicker,
688
688
  {
689
689
  items: toolTypeChipItems,
690
690
  selectedIds: selectedToolTypes,
@@ -698,7 +698,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
698
698
  }
699
699
  ) : void 0,
700
700
  actions: /* @__PURE__ */ jsxRuntime.jsx(
701
- chunkRWZ2PLMQ_js.CreateActionButton,
701
+ chunkKZDABEML_js.CreateActionButton,
702
702
  {
703
703
  mode: "desktop",
704
704
  label: labels.addTool,
@@ -709,7 +709,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
709
709
  }
710
710
  );
711
711
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
712
- chunkRWZ2PLMQ_js.CreateActionButton,
712
+ chunkKZDABEML_js.CreateActionButton,
713
713
  {
714
714
  mode: "mobile",
715
715
  label: labels.addTool,
@@ -717,18 +717,18 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
717
717
  accent: "amber"
718
718
  }
719
719
  );
720
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsx(
721
- chunkRWZ2PLMQ_js.EntityCard,
720
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsx(
721
+ chunkKZDABEML_js.EntityCard,
722
722
  {
723
723
  accentGradient: "from-amber-500 to-orange-700",
724
724
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-amber-500/10 text-amber-600 dark:bg-amber-500/20 dark:text-amber-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-6 w-6" }) }),
725
725
  title: tool.name,
726
726
  subtitle: toolTypeLabel(tool),
727
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: tool.enabled ? "emerald" : "zinc", children: tool.enabled ? labels.enabled : labels.disabled }),
727
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: tool.enabled ? "emerald" : "zinc", children: tool.enabled ? labels.enabled : labels.disabled }),
728
728
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
729
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(tool), children: labels.edit }),
729
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(tool), children: labels.edit }),
730
730
  /* @__PURE__ */ jsxRuntime.jsx(
731
- chunkEBARYRSA_js.Button,
731
+ chunkMXQ2EYG2_js.Button,
732
732
  {
733
733
  type: "button",
734
734
  size: "sm",
@@ -807,7 +807,7 @@ function ToolEditor({
807
807
  setValue((v) => ({ ...v, [key]: next }));
808
808
  };
809
809
  return /* @__PURE__ */ jsxRuntime.jsx(
810
- chunkRWZ2PLMQ_js.GlassModal,
810
+ chunkKZDABEML_js.GlassModal,
811
811
  {
812
812
  open: true,
813
813
  onClose,
@@ -820,9 +820,9 @@ function ToolEditor({
820
820
  handleSubmit();
821
821
  },
822
822
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
823
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
823
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
824
824
  /* @__PURE__ */ jsxRuntime.jsx(
825
- chunkRWZ2PLMQ_js.FormInput,
825
+ chunkKZDABEML_js.FormInput,
826
826
  {
827
827
  label: "Name",
828
828
  required: true,
@@ -832,7 +832,7 @@ function ToolEditor({
832
832
  }
833
833
  ),
834
834
  /* @__PURE__ */ jsxRuntime.jsx(
835
- chunkRWZ2PLMQ_js.FormSelect,
835
+ chunkKZDABEML_js.FormSelect,
836
836
  {
837
837
  label: "Tool type",
838
838
  value: value.toolType,
@@ -842,7 +842,7 @@ function ToolEditor({
842
842
  }
843
843
  ),
844
844
  /* @__PURE__ */ jsxRuntime.jsx(
845
- chunkRWZ2PLMQ_js.FormSelect,
845
+ chunkKZDABEML_js.FormSelect,
846
846
  {
847
847
  label: "Enabled",
848
848
  value: value.enabled ? "true" : "false",
@@ -851,7 +851,7 @@ function ToolEditor({
851
851
  }
852
852
  ),
853
853
  /* @__PURE__ */ jsxRuntime.jsx(
854
- chunkRWZ2PLMQ_js.FormInput,
854
+ chunkKZDABEML_js.FormInput,
855
855
  {
856
856
  label: "Icon (optional)",
857
857
  value: value.icon ?? "",
@@ -861,7 +861,7 @@ function ToolEditor({
861
861
  )
862
862
  ] }),
863
863
  /* @__PURE__ */ jsxRuntime.jsx(
864
- chunkRWZ2PLMQ_js.FormTextarea,
864
+ chunkKZDABEML_js.FormTextarea,
865
865
  {
866
866
  label: "Description",
867
867
  rows: 2,
@@ -909,7 +909,7 @@ function ParametersEditor({
909
909
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
910
910
  parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
911
911
  /* @__PURE__ */ jsxRuntime.jsx(
912
- chunkRWZ2PLMQ_js.FormInput,
912
+ chunkKZDABEML_js.FormInput,
913
913
  {
914
914
  label: "Name",
915
915
  value: param.name,
@@ -918,7 +918,7 @@ function ParametersEditor({
918
918
  }
919
919
  ),
920
920
  /* @__PURE__ */ jsxRuntime.jsx(
921
- chunkRWZ2PLMQ_js.FormSelect,
921
+ chunkKZDABEML_js.FormSelect,
922
922
  {
923
923
  label: "Type",
924
924
  value: param.type,
@@ -927,7 +927,7 @@ function ParametersEditor({
927
927
  }
928
928
  ),
929
929
  /* @__PURE__ */ jsxRuntime.jsx(
930
- chunkRWZ2PLMQ_js.FormInput,
930
+ chunkKZDABEML_js.FormInput,
931
931
  {
932
932
  label: "Description",
933
933
  value: param.description,
@@ -946,9 +946,9 @@ function ParametersEditor({
946
946
  ),
947
947
  "Required"
948
948
  ] }),
949
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
949
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
950
950
  ] }, index)),
951
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add parameter" })
951
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add parameter" })
952
952
  ] })
953
953
  ] });
954
954
  }
@@ -961,9 +961,9 @@ function HandlerConfigEditor({
961
961
  if (toolType === "http") {
962
962
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
963
963
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "HTTP handler" }),
964
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
964
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
965
965
  /* @__PURE__ */ jsxRuntime.jsx(
966
- chunkRWZ2PLMQ_js.FormSelect,
966
+ chunkKZDABEML_js.FormSelect,
967
967
  {
968
968
  label: "Method",
969
969
  value: stringProp(config, "method", "GET"),
@@ -972,7 +972,7 @@ function HandlerConfigEditor({
972
972
  }
973
973
  ),
974
974
  /* @__PURE__ */ jsxRuntime.jsx(
975
- chunkRWZ2PLMQ_js.FormInput,
975
+ chunkKZDABEML_js.FormInput,
976
976
  {
977
977
  label: "URL template",
978
978
  value: stringProp(config, "url"),
@@ -982,7 +982,7 @@ function HandlerConfigEditor({
982
982
  )
983
983
  ] }),
984
984
  /* @__PURE__ */ jsxRuntime.jsx(
985
- chunkRWZ2PLMQ_js.FormTextarea,
985
+ chunkKZDABEML_js.FormTextarea,
986
986
  {
987
987
  label: "Headers (JSON)",
988
988
  rows: 3,
@@ -992,7 +992,7 @@ function HandlerConfigEditor({
992
992
  }
993
993
  ),
994
994
  /* @__PURE__ */ jsxRuntime.jsx(
995
- chunkRWZ2PLMQ_js.FormTextarea,
995
+ chunkKZDABEML_js.FormTextarea,
996
996
  {
997
997
  label: "Body template",
998
998
  rows: 3,
@@ -1007,7 +1007,7 @@ function HandlerConfigEditor({
1007
1007
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
1008
1008
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Function handler" }),
1009
1009
  /* @__PURE__ */ jsxRuntime.jsx(
1010
- chunkRWZ2PLMQ_js.FormInput,
1010
+ chunkKZDABEML_js.FormInput,
1011
1011
  {
1012
1012
  label: "Implementation key",
1013
1013
  value: stringProp(config, "implementationKey"),
@@ -1021,9 +1021,9 @@ function HandlerConfigEditor({
1021
1021
  if (toolType === "database_query") {
1022
1022
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
1023
1023
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Database query handler" }),
1024
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
1024
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
1025
1025
  /* @__PURE__ */ jsxRuntime.jsx(
1026
- chunkRWZ2PLMQ_js.FormInput,
1026
+ chunkKZDABEML_js.FormInput,
1027
1027
  {
1028
1028
  label: "Datasource ID",
1029
1029
  value: stringProp(config, "datasourceId"),
@@ -1032,7 +1032,7 @@ function HandlerConfigEditor({
1032
1032
  }
1033
1033
  ),
1034
1034
  /* @__PURE__ */ jsxRuntime.jsx(
1035
- chunkRWZ2PLMQ_js.FormInput,
1035
+ chunkKZDABEML_js.FormInput,
1036
1036
  {
1037
1037
  label: "Max rows",
1038
1038
  type: "number",
@@ -1042,7 +1042,7 @@ function HandlerConfigEditor({
1042
1042
  )
1043
1043
  ] }),
1044
1044
  /* @__PURE__ */ jsxRuntime.jsx(
1045
- chunkRWZ2PLMQ_js.FormTextarea,
1045
+ chunkKZDABEML_js.FormTextarea,
1046
1046
  {
1047
1047
  label: "Query template",
1048
1048
  rows: 4,
@@ -1058,7 +1058,7 @@ function HandlerConfigEditor({
1058
1058
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
1059
1059
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-amber-600 dark:text-amber-400", children: "Experimental \u2014 sandbox is not yet enforced. Only enable for trusted tools." }),
1060
1060
  /* @__PURE__ */ jsxRuntime.jsx(
1061
- chunkRWZ2PLMQ_js.FormSelect,
1061
+ chunkKZDABEML_js.FormSelect,
1062
1062
  {
1063
1063
  label: "Language",
1064
1064
  value: stringProp(config, "language", "javascript"),
@@ -1070,7 +1070,7 @@ function HandlerConfigEditor({
1070
1070
  }
1071
1071
  ),
1072
1072
  /* @__PURE__ */ jsxRuntime.jsx(
1073
- chunkRWZ2PLMQ_js.FormTextarea,
1073
+ chunkKZDABEML_js.FormTextarea,
1074
1074
  {
1075
1075
  label: "Code",
1076
1076
  rows: 6,
@@ -1083,9 +1083,9 @@ function HandlerConfigEditor({
1083
1083
  }
1084
1084
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
1085
1085
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "API call handler" }),
1086
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
1086
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
1087
1087
  /* @__PURE__ */ jsxRuntime.jsx(
1088
- chunkRWZ2PLMQ_js.FormInput,
1088
+ chunkKZDABEML_js.FormInput,
1089
1089
  {
1090
1090
  label: "URL",
1091
1091
  value: stringProp(config, "url"),
@@ -1093,7 +1093,7 @@ function HandlerConfigEditor({
1093
1093
  }
1094
1094
  ),
1095
1095
  /* @__PURE__ */ jsxRuntime.jsx(
1096
- chunkRWZ2PLMQ_js.FormSelect,
1096
+ chunkKZDABEML_js.FormSelect,
1097
1097
  {
1098
1098
  label: "Auth",
1099
1099
  value: stringProp(config, "authType", "bearer"),
@@ -1107,7 +1107,7 @@ function HandlerConfigEditor({
1107
1107
  }
1108
1108
  ),
1109
1109
  /* @__PURE__ */ jsxRuntime.jsx(
1110
- chunkRWZ2PLMQ_js.FormInput,
1110
+ chunkKZDABEML_js.FormInput,
1111
1111
  {
1112
1112
  label: "Credential secret id",
1113
1113
  value: stringProp(config, "credentialRef"),
@@ -1282,7 +1282,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1282
1282
  setExpiryFilter("all");
1283
1283
  };
1284
1284
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1285
- chunkRWZ2PLMQ_js.HeroSection,
1285
+ chunkKZDABEML_js.HeroSection,
1286
1286
  {
1287
1287
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
1288
1288
  label: labels.title,
@@ -1290,7 +1290,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1290
1290
  subtitle: labels.subtitle,
1291
1291
  gradient: "from-fuchsia-500 to-purple-700",
1292
1292
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1293
- chunkRWZ2PLMQ_js.SearchBar,
1293
+ chunkKZDABEML_js.SearchBar,
1294
1294
  {
1295
1295
  searchTerm,
1296
1296
  onSearchChange: setSearchTerm,
@@ -1307,14 +1307,14 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1307
1307
  count: filterCount,
1308
1308
  onClear: filterCount > 0 ? clearAllFilters : void 0,
1309
1309
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
1310
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value)) }) }),
1311
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByExpiry ?? "Validade", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "expiring", "noExpiry"].map((value) => expiryFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setExpiryFilter(value), children: expiryLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setExpiryFilter(value), children: expiryLabelFor(value) }, value)) }) })
1310
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: statusLabelFor(value) }, value)) }) }),
1311
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByExpiry ?? "Validade", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "expiring", "noExpiry"].map((value) => expiryFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setExpiryFilter(value), children: expiryLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setExpiryFilter(value), children: expiryLabelFor(value) }, value)) }) })
1312
1312
  ] })
1313
1313
  }
1314
1314
  }
1315
1315
  ) : void 0,
1316
1316
  actions: /* @__PURE__ */ jsxRuntime.jsx(
1317
- chunkRWZ2PLMQ_js.CreateActionButton,
1317
+ chunkKZDABEML_js.CreateActionButton,
1318
1318
  {
1319
1319
  mode: "desktop",
1320
1320
  label: labels.addRule,
@@ -1325,7 +1325,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1325
1325
  }
1326
1326
  );
1327
1327
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
1328
- chunkRWZ2PLMQ_js.CreateActionButton,
1328
+ chunkKZDABEML_js.CreateActionButton,
1329
1329
  {
1330
1330
  mode: "mobile",
1331
1331
  label: labels.addRule,
@@ -1333,18 +1333,18 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1333
1333
  accent: "fuchsia"
1334
1334
  }
1335
1335
  );
1336
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
1337
- chunkRWZ2PLMQ_js.EntityCard,
1336
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
1337
+ chunkKZDABEML_js.EntityCard,
1338
1338
  {
1339
1339
  accentGradient: "from-fuchsia-500 to-purple-700",
1340
1340
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-fuchsia-500/10 text-fuchsia-600 dark:bg-fuchsia-500/20 dark:text-fuchsia-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
1341
1341
  title: rule.name,
1342
1342
  subtitle: `${labels.order}: ${rule.order ?? 0}`,
1343
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1343
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1344
1344
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1345
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1345
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1346
1346
  /* @__PURE__ */ jsxRuntime.jsx(
1347
- chunkEBARYRSA_js.Button,
1347
+ chunkMXQ2EYG2_js.Button,
1348
1348
  {
1349
1349
  type: "button",
1350
1350
  size: "sm",
@@ -1371,7 +1371,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1371
1371
  {
1372
1372
  title: labels.createTitle,
1373
1373
  saveLabel: labels.save,
1374
- initial: chunkUPWJRCAD_js.defaultRuleForm(),
1374
+ initial: chunkKRS2CLPR_js.defaultRuleForm(),
1375
1375
  onClose: () => setCreateOpen(false),
1376
1376
  onSubmit: (value) => {
1377
1377
  onCreate(value);
@@ -1403,7 +1403,7 @@ function RuleEditor({
1403
1403
  }) {
1404
1404
  const [value, setValue] = react.useState(initial);
1405
1405
  return /* @__PURE__ */ jsxRuntime.jsx(
1406
- chunkRWZ2PLMQ_js.GlassModal,
1406
+ chunkKZDABEML_js.GlassModal,
1407
1407
  {
1408
1408
  open: true,
1409
1409
  onClose,
@@ -1415,12 +1415,12 @@ function RuleEditor({
1415
1415
  event.preventDefault();
1416
1416
  onSubmit(value);
1417
1417
  },
1418
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkUPWJRCAD_js.RuleForm, { value, onChange: setValue })
1418
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkKRS2CLPR_js.RuleForm, { value, onChange: setValue })
1419
1419
  }
1420
1420
  );
1421
1421
  }
1422
1422
  function ruleToFormValue(rule) {
1423
- const base = chunkUPWJRCAD_js.defaultRuleForm();
1423
+ const base = chunkKRS2CLPR_js.defaultRuleForm();
1424
1424
  const rawCondition = rule.condition ?? rule.conditions;
1425
1425
  const rawAction = pickAction(rule);
1426
1426
  return {
@@ -1557,7 +1557,7 @@ var SAMPLE_DATASOURCES = [
1557
1557
  ];
1558
1558
  function getDialectLabel(dialect) {
1559
1559
  if (!dialect) return "Unknown";
1560
- for (const category of chunkVCL5LDS5_js.DIALECT_CATEGORIES) {
1560
+ for (const category of chunkPADXORD2_js.DIALECT_CATEGORIES) {
1561
1561
  const found = category.dialects.find((d) => d.value === dialect);
1562
1562
  if (found) return found.label;
1563
1563
  }
@@ -1565,12 +1565,12 @@ function getDialectLabel(dialect) {
1565
1565
  }
1566
1566
  function getDialectGradient(dialect) {
1567
1567
  if (!dialect) return "from-gray-400 to-gray-500";
1568
- const category = chunkVCL5LDS5_js.findCategory(dialect);
1568
+ const category = chunkPADXORD2_js.findCategory(dialect);
1569
1569
  return category?.gradient ?? "from-gray-400 to-gray-500";
1570
1570
  }
1571
1571
  function getDialectIcon(dialect) {
1572
1572
  if (!dialect) return outline.CircleStackIcon;
1573
- const category = chunkVCL5LDS5_js.findCategory(dialect);
1573
+ const category = chunkPADXORD2_js.findCategory(dialect);
1574
1574
  return category?.icon ?? outline.CircleStackIcon;
1575
1575
  }
1576
1576
  var DIALECT_LOGO = {
@@ -1633,7 +1633,7 @@ function DatasourcesPageView({
1633
1633
  });
1634
1634
  }, [datasources, searchTerm, selectedDialects, enabledFilter, readOnlyFilter]);
1635
1635
  const dialectChipItems = react.useMemo(
1636
- () => chunkVCL5LDS5_js.DIALECT_CATEGORIES.flatMap(
1636
+ () => chunkPADXORD2_js.DIALECT_CATEGORIES.flatMap(
1637
1637
  (cat) => cat.dialects.map((d) => ({
1638
1638
  id: d.value,
1639
1639
  name: d.label,
@@ -1702,7 +1702,7 @@ function DatasourcesPageView({
1702
1702
  }
1703
1703
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1704
1704
  /* @__PURE__ */ jsxRuntime.jsx(
1705
- chunkRWZ2PLMQ_js.HeroSection,
1705
+ chunkKZDABEML_js.HeroSection,
1706
1706
  {
1707
1707
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
1708
1708
  label: labels.title,
@@ -1710,7 +1710,7 @@ function DatasourcesPageView({
1710
1710
  subtitle: labels.subtitle,
1711
1711
  gradient: "from-amber-500 to-orange-600",
1712
1712
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1713
- chunkRWZ2PLMQ_js.SearchBar,
1713
+ chunkKZDABEML_js.SearchBar,
1714
1714
  {
1715
1715
  searchTerm,
1716
1716
  onSearchChange: setSearchTerm,
@@ -1727,8 +1727,8 @@ function DatasourcesPageView({
1727
1727
  count: filterCount,
1728
1728
  onClear: filterCount > 0 ? clearAllFilters : void 0,
1729
1729
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
1730
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByDialect ?? labels.dialect ?? "Dialeto", children: /* @__PURE__ */ jsxRuntime.jsx(
1731
- chunkRWZ2PLMQ_js.ChipPicker,
1730
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByDialect ?? labels.dialect ?? "Dialeto", children: /* @__PURE__ */ jsxRuntime.jsx(
1731
+ chunkKZDABEML_js.ChipPicker,
1732
1732
  {
1733
1733
  items: dialectChipItems,
1734
1734
  selectedIds: selectedDialects,
@@ -1738,14 +1738,14 @@ function DatasourcesPageView({
1738
1738
  clearLabel: labels.clear ?? "Limpar"
1739
1739
  }
1740
1740
  ) }),
1741
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: enabledLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: enabledLabelFor(value) }, value)) }) }),
1742
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByReadOnly ?? "Modo de acesso", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "readOnly", "writable"].map((value) => readOnlyFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setReadOnlyFilter(value), children: readOnlyLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setReadOnlyFilter(value), children: readOnlyLabelFor(value) }, value)) }) })
1741
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "enabled", "disabled"].map((value) => enabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setEnabledFilter(value), children: enabledLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEnabledFilter(value), children: enabledLabelFor(value) }, value)) }) }),
1742
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByReadOnly ?? "Modo de acesso", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "readOnly", "writable"].map((value) => readOnlyFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setReadOnlyFilter(value), children: readOnlyLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setReadOnlyFilter(value), children: readOnlyLabelFor(value) }, value)) }) })
1743
1743
  ] })
1744
1744
  }
1745
1745
  }
1746
1746
  ) : void 0,
1747
1747
  actions: /* @__PURE__ */ jsxRuntime.jsx(
1748
- chunkRWZ2PLMQ_js.CreateActionButton,
1748
+ chunkKZDABEML_js.CreateActionButton,
1749
1749
  {
1750
1750
  mode: "desktop",
1751
1751
  label: labels.addDatasource,
@@ -1756,7 +1756,7 @@ function DatasourcesPageView({
1756
1756
  }
1757
1757
  ),
1758
1758
  /* @__PURE__ */ jsxRuntime.jsx(
1759
- chunkRWZ2PLMQ_js.CreateActionButton,
1759
+ chunkKZDABEML_js.CreateActionButton,
1760
1760
  {
1761
1761
  mode: "mobile",
1762
1762
  label: labels.addDatasource,
@@ -1765,7 +1765,7 @@ function DatasourcesPageView({
1765
1765
  }
1766
1766
  ),
1767
1767
  isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1768
- chunkRWZ2PLMQ_js.PageEmptyState,
1768
+ chunkKZDABEML_js.PageEmptyState,
1769
1769
  {
1770
1770
  title: labels.emptyTitle,
1771
1771
  message: labels.emptyDescription,
@@ -1779,27 +1779,27 @@ function DatasourcesPageView({
1779
1779
  const logoSrc = getDialectLogoSrc(ds.dialect);
1780
1780
  const iconElement = logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-white shadow-sm ring-1 ring-black/5 dark:bg-white/10 dark:ring-white/10", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: dialectLabel, className: "h-7 w-7 object-contain" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-11 w-11 items-center justify-center rounded-lg bg-gradient-to-br ${gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-6 w-6 text-white" }) });
1781
1781
  return /* @__PURE__ */ jsxRuntime.jsx(
1782
- chunkRWZ2PLMQ_js.EntityCard,
1782
+ chunkKZDABEML_js.EntityCard,
1783
1783
  {
1784
1784
  accentGradient: gradient,
1785
1785
  icon: iconElement,
1786
1786
  title: ds.name ?? ds.id,
1787
1787
  subtitle: dialectLabel,
1788
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: ds.enabled ? "emerald" : "zinc", children: ds.enabled ? labels.enabled : labels.disabled }),
1789
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs text-gray-400 dark:text-gray-500", children: [
1788
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: ds.enabled ? "emerald" : "zinc", children: ds.enabled ? labels.enabled : labels.disabled }),
1789
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs text-slate-400 dark:text-slate-500", children: [
1790
1790
  ds.readOnly && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-900/30 dark:text-blue-300", children: "Read-only" }),
1791
1791
  ds.timeoutMs && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1792
1792
  ds.timeoutMs / 1e3,
1793
1793
  "s timeout"
1794
1794
  ] })
1795
1795
  ] }),
1796
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 text-xs text-gray-500 dark:text-gray-400", children: [
1796
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 text-xs text-slate-500 dark:text-slate-400", children: [
1797
1797
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1798
1798
  labels.dialect,
1799
1799
  ": ",
1800
1800
  dialectLabel
1801
1801
  ] }),
1802
- ds.slug && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "truncate text-gray-400", children: [
1802
+ ds.slug && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "truncate text-slate-400", children: [
1803
1803
  "/",
1804
1804
  ds.slug
1805
1805
  ] })
@@ -1809,7 +1809,7 @@ function DatasourcesPageView({
1809
1809
  );
1810
1810
  }) }),
1811
1811
  /* @__PURE__ */ jsxRuntime.jsx(
1812
- chunkVCL5LDS5_js.DatasourceModal,
1812
+ chunkPADXORD2_js.DatasourceModal,
1813
1813
  {
1814
1814
  open: modalOpen,
1815
1815
  onClose: () => setModalOpen(false),
@@ -1838,7 +1838,7 @@ function AgentsIndexPageView({ labels }) {
1838
1838
  const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
1839
1839
  const isEmpty = allTiles.length === 0;
1840
1840
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1841
- chunkRWZ2PLMQ_js.HeroSection,
1841
+ chunkKZDABEML_js.HeroSection,
1842
1842
  {
1843
1843
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
1844
1844
  label: labels.title,
@@ -1846,7 +1846,7 @@ function AgentsIndexPageView({ labels }) {
1846
1846
  subtitle: labels.subtitle,
1847
1847
  gradient: "from-violet-500 to-indigo-700",
1848
1848
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1849
- chunkRWZ2PLMQ_js.SearchBar,
1849
+ chunkKZDABEML_js.SearchBar,
1850
1850
  {
1851
1851
  searchTerm,
1852
1852
  onSearchChange: setSearchTerm,
@@ -1859,7 +1859,7 @@ function AgentsIndexPageView({ labels }) {
1859
1859
  const content = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1860
1860
  const Icon = tile.icon;
1861
1861
  return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1862
- chunkRWZ2PLMQ_js.EntityCard,
1862
+ chunkKZDABEML_js.EntityCard,
1863
1863
  {
1864
1864
  accentGradient: tile.gradient,
1865
1865
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-11 w-11 items-center justify-center rounded-lg bg-gradient-to-br ${tile.gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-6 w-6 text-white" }) }),
@@ -1877,7 +1877,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1877
1877
  const selectedWorkflow = workflows[0] ?? null;
1878
1878
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1879
1879
  /* @__PURE__ */ jsxRuntime.jsx(
1880
- chunkRWZ2PLMQ_js.SectionHeader,
1880
+ chunkKZDABEML_js.SectionHeader,
1881
1881
  {
1882
1882
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
1883
1883
  title: labels.title,
@@ -1886,9 +1886,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1886
1886
  }
1887
1887
  ),
1888
1888
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1889
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1889
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1890
1890
  /* @__PURE__ */ jsxRuntime.jsx(
1891
- chunkRWZ2PLMQ_js.Form,
1891
+ chunkKZDABEML_js.Form,
1892
1892
  {
1893
1893
  onSubmit: (event) => {
1894
1894
  event.preventDefault();
@@ -1899,32 +1899,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1899
1899
  onCreate({ name, description });
1900
1900
  event.currentTarget.reset();
1901
1901
  },
1902
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
1903
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1904
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1905
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "submit", children: labels.create }) })
1902
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
1903
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1904
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1905
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "submit", children: labels.create }) })
1906
1906
  ] })
1907
1907
  }
1908
1908
  )
1909
1909
  ] }),
1910
1910
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1911
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1912
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.Table, { children: [
1913
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.TableRow, { children: [
1914
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHeader, { children: labels.name }),
1915
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHeader, { children: labels.description }),
1916
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHeader, { children: labels.version }),
1917
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHeader, { children: labels.status }),
1918
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableHeader, { children: labels.actions })
1911
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1912
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.Table, { children: [
1913
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.TableRow, { children: [
1914
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHeader, { children: labels.name }),
1915
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHeader, { children: labels.description }),
1916
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHeader, { children: labels.version }),
1917
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHeader, { children: labels.status }),
1918
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableHeader, { children: labels.actions })
1919
1919
  ] }) }),
1920
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.TableRow, { children: [
1921
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableCell, { children: workflow.name }),
1922
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableCell, { children: workflow.description }),
1923
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableCell, { children: String(workflow.version) }),
1924
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1925
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1920
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.TableRow, { children: [
1921
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableCell, { children: workflow.name }),
1922
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableCell, { children: workflow.description }),
1923
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableCell, { children: String(workflow.version) }),
1924
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1925
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1926
1926
  /* @__PURE__ */ jsxRuntime.jsx(
1927
- chunkRWZ2PLMQ_js.Form,
1927
+ chunkKZDABEML_js.Form,
1928
1928
  {
1929
1929
  onSubmit: (event) => {
1930
1930
  event.preventDefault();
@@ -1934,17 +1934,17 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1934
1934
  description: workflow.description ?? ""
1935
1935
  });
1936
1936
  },
1937
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1937
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1938
1938
  }
1939
1939
  ),
1940
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
1940
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
1941
1941
  ] }) })
1942
1942
  ] }, workflow.id)) })
1943
1943
  ] })
1944
1944
  ] }),
1945
1945
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1946
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1947
- selectedWorkflow ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[680px] rounded-2xl border border-white/65 dark:border-white/12 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IAWXG43_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Text, { children: labels.empty })
1946
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1947
+ selectedWorkflow ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[680px] rounded-2xl border border-white/65 dark:border-white/12 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(chunkOQM252SM_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Text, { children: labels.empty })
1948
1948
  ] })
1949
1949
  ] });
1950
1950
  }
@@ -1994,7 +1994,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1994
1994
  });
1995
1995
  const isEmpty = allRuns.length === 0;
1996
1996
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1997
- chunkRWZ2PLMQ_js.HeroSection,
1997
+ chunkKZDABEML_js.HeroSection,
1998
1998
  {
1999
1999
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
2000
2000
  label: labels.title,
@@ -2002,7 +2002,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
2002
2002
  subtitle: labels.subtitle,
2003
2003
  gradient: "from-indigo-500 to-sky-700",
2004
2004
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2005
- chunkRWZ2PLMQ_js.SearchBar,
2005
+ chunkKZDABEML_js.SearchBar,
2006
2006
  {
2007
2007
  searchTerm,
2008
2008
  onSearchChange: setSearchTerm,
@@ -2016,7 +2016,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
2016
2016
  count: statusFilter !== "all" ? 1 : 0,
2017
2017
  onClear: statusFilter !== "all" ? () => setStatusFilter("all") : void 0,
2018
2018
  children: /* @__PURE__ */ jsxRuntime.jsx(
2019
- chunkRWZ2PLMQ_js.FormSelect,
2019
+ chunkKZDABEML_js.FormSelect,
2020
2020
  {
2021
2021
  name: "statusFilter",
2022
2022
  label: labels.filterStatus,
@@ -2030,19 +2030,19 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
2030
2030
  ) : void 0
2031
2031
  }
2032
2032
  );
2033
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRuns.map((run) => /* @__PURE__ */ jsxRuntime.jsxs(
2034
- chunkRWZ2PLMQ_js.EntityCard,
2033
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRuns.map((run) => /* @__PURE__ */ jsxRuntime.jsxs(
2034
+ chunkKZDABEML_js.EntityCard,
2035
2035
  {
2036
2036
  accentGradient: "from-indigo-500 to-sky-700",
2037
2037
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-indigo-500/10 text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-6 w-6" }) }),
2038
2038
  title: run.id.slice(0, 8),
2039
2039
  subtitle: `${labels.startedAt}: ${new Date(run.createdAt).toLocaleString()}`,
2040
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
2040
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
2041
2041
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2042
- onView && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
2043
- onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
2044
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
2045
- run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
2042
+ onView && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
2043
+ onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
2044
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
2045
+ run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
2046
2046
  ] }),
2047
2047
  children: [
2048
2048
  /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
@@ -2063,7 +2063,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
2063
2063
  }
2064
2064
  function RunTimelinePageView({ labels, entries, loading, runId }) {
2065
2065
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2066
- chunkRWZ2PLMQ_js.HeroSection,
2066
+ chunkKZDABEML_js.HeroSection,
2067
2067
  {
2068
2068
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
2069
2069
  label: labels.title,
@@ -2075,19 +2075,19 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
2075
2075
  if (loading) {
2076
2076
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2077
2077
  hero,
2078
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {})
2078
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {})
2079
2079
  ] });
2080
2080
  }
2081
2081
  if (entries.length === 0) {
2082
2082
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2083
2083
  hero,
2084
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
2084
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
2085
2085
  ] });
2086
2086
  }
2087
2087
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2088
2088
  hero,
2089
2089
  /* @__PURE__ */ jsxRuntime.jsx(
2090
- chunkUPWJRCAD_js.ExecutionTimelinePanel,
2090
+ chunkKRS2CLPR_js.ExecutionTimelinePanel,
2091
2091
  {
2092
2092
  entries,
2093
2093
  labels
@@ -2230,7 +2230,7 @@ function ConnectionsPageView({
2230
2230
  setSelectedRegions([]);
2231
2231
  };
2232
2232
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2233
- chunkRWZ2PLMQ_js.HeroSection,
2233
+ chunkKZDABEML_js.HeroSection,
2234
2234
  {
2235
2235
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
2236
2236
  label: labels.title,
@@ -2238,7 +2238,7 @@ function ConnectionsPageView({
2238
2238
  subtitle: labels.subtitle,
2239
2239
  gradient: "from-sky-500 to-indigo-600",
2240
2240
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2241
- chunkRWZ2PLMQ_js.SearchBar,
2241
+ chunkKZDABEML_js.SearchBar,
2242
2242
  {
2243
2243
  searchTerm,
2244
2244
  onSearchChange: setSearchTerm,
@@ -2255,8 +2255,8 @@ function ConnectionsPageView({
2255
2255
  count: filterCount,
2256
2256
  onClear: filterCount > 0 ? clearAllFilters : void 0,
2257
2257
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
2258
- providerChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByProvider ?? "Provedor", children: /* @__PURE__ */ jsxRuntime.jsx(
2259
- chunkRWZ2PLMQ_js.ChipPicker,
2258
+ providerChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByProvider ?? "Provedor", children: /* @__PURE__ */ jsxRuntime.jsx(
2259
+ chunkKZDABEML_js.ChipPicker,
2260
2260
  {
2261
2261
  items: providerChipItems,
2262
2262
  selectedIds: selectedProviders,
@@ -2266,8 +2266,8 @@ function ConnectionsPageView({
2266
2266
  clearLabel: labels.clear ?? "Limpar"
2267
2267
  }
2268
2268
  ) }),
2269
- regionChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByRegion ?? "Regi\xE3o", children: /* @__PURE__ */ jsxRuntime.jsx(
2270
- chunkRWZ2PLMQ_js.ChipPicker,
2269
+ regionChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByRegion ?? "Regi\xE3o", children: /* @__PURE__ */ jsxRuntime.jsx(
2270
+ chunkKZDABEML_js.ChipPicker,
2271
2271
  {
2272
2272
  items: regionChipItems,
2273
2273
  selectedIds: selectedRegions,
@@ -2282,7 +2282,7 @@ function ConnectionsPageView({
2282
2282
  }
2283
2283
  ) : void 0,
2284
2284
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2285
- chunkRWZ2PLMQ_js.CreateActionButton,
2285
+ chunkKZDABEML_js.CreateActionButton,
2286
2286
  {
2287
2287
  mode: "desktop",
2288
2288
  label: labels.add,
@@ -2293,7 +2293,7 @@ function ConnectionsPageView({
2293
2293
  }
2294
2294
  );
2295
2295
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2296
- chunkRWZ2PLMQ_js.CreateActionButton,
2296
+ chunkKZDABEML_js.CreateActionButton,
2297
2297
  {
2298
2298
  mode: "mobile",
2299
2299
  label: labels.add,
@@ -2301,21 +2301,21 @@ function ConnectionsPageView({
2301
2301
  accent: "sky"
2302
2302
  }
2303
2303
  );
2304
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsxRuntime.jsx(
2305
- chunkRWZ2PLMQ_js.EntityCard,
2304
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsxRuntime.jsx(
2305
+ chunkKZDABEML_js.EntityCard,
2306
2306
  {
2307
2307
  accentGradient: "from-sky-500 to-indigo-600",
2308
2308
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-6 w-6" }) }),
2309
2309
  title: conn.name,
2310
2310
  subtitle: providerLabel(conn.providerSlug),
2311
2311
  status: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
2312
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
2313
- conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "amber", children: "No secret" })
2312
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
2313
+ conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "amber", children: "No secret" })
2314
2314
  ] }),
2315
2315
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2316
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
2316
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
2317
2317
  /* @__PURE__ */ jsxRuntime.jsx(
2318
- chunkEBARYRSA_js.Button,
2318
+ chunkMXQ2EYG2_js.Button,
2319
2319
  {
2320
2320
  type: "button",
2321
2321
  size: "sm",
@@ -2454,7 +2454,7 @@ function ConnectionEditor({
2454
2454
  return preset.exampleModels?.join(", ") ?? "";
2455
2455
  }, [preset]);
2456
2456
  return /* @__PURE__ */ jsxRuntime.jsx(
2457
- chunkRWZ2PLMQ_js.GlassModal,
2457
+ chunkKZDABEML_js.GlassModal,
2458
2458
  {
2459
2459
  open: true,
2460
2460
  onClose,
@@ -2467,9 +2467,9 @@ function ConnectionEditor({
2467
2467
  void handleSubmit();
2468
2468
  },
2469
2469
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2470
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
2470
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
2471
2471
  /* @__PURE__ */ jsxRuntime.jsx(
2472
- chunkRWZ2PLMQ_js.FormSelect,
2472
+ chunkKZDABEML_js.FormSelect,
2473
2473
  {
2474
2474
  label: "Provider",
2475
2475
  value: value.providerSlug,
@@ -2480,7 +2480,7 @@ function ConnectionEditor({
2480
2480
  }
2481
2481
  ),
2482
2482
  /* @__PURE__ */ jsxRuntime.jsx(
2483
- chunkRWZ2PLMQ_js.FormInput,
2483
+ chunkKZDABEML_js.FormInput,
2484
2484
  {
2485
2485
  label: "Display name",
2486
2486
  required: true,
@@ -2490,7 +2490,7 @@ function ConnectionEditor({
2490
2490
  }
2491
2491
  ),
2492
2492
  preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
2493
- chunkRWZ2PLMQ_js.FormInput,
2493
+ chunkKZDABEML_js.FormInput,
2494
2494
  {
2495
2495
  label: "Region",
2496
2496
  value: value.region,
@@ -2499,7 +2499,7 @@ function ConnectionEditor({
2499
2499
  }
2500
2500
  ),
2501
2501
  preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
2502
- chunkRWZ2PLMQ_js.FormInput,
2502
+ chunkKZDABEML_js.FormInput,
2503
2503
  {
2504
2504
  label: "Endpoint URL",
2505
2505
  value: value.endpoint,
@@ -2509,7 +2509,7 @@ function ConnectionEditor({
2509
2509
  )
2510
2510
  ] }),
2511
2511
  /* @__PURE__ */ jsxRuntime.jsx(
2512
- chunkRWZ2PLMQ_js.FormInput,
2512
+ chunkKZDABEML_js.FormInput,
2513
2513
  {
2514
2514
  label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
2515
2515
  type: "password",
@@ -2520,7 +2520,7 @@ function ConnectionEditor({
2520
2520
  }
2521
2521
  ),
2522
2522
  /* @__PURE__ */ jsxRuntime.jsx(
2523
- chunkRWZ2PLMQ_js.FormInput,
2523
+ chunkKZDABEML_js.FormInput,
2524
2524
  {
2525
2525
  label: "Model filter (comma-separated, optional)",
2526
2526
  value: value.modelFilter,
@@ -2532,7 +2532,7 @@ function ConnectionEditor({
2532
2532
  /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 text-sm dark:border-slate-700 dark:bg-slate-900/40", children: [
2533
2533
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
2534
2534
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
2535
- chunkRWZ2PLMQ_js.FormTextarea,
2535
+ chunkKZDABEML_js.FormTextarea,
2536
2536
  {
2537
2537
  rows: 4,
2538
2538
  value: value.configJson,
@@ -2653,7 +2653,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2653
2653
  setDisabledFilter("all");
2654
2654
  };
2655
2655
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2656
- chunkRWZ2PLMQ_js.HeroSection,
2656
+ chunkKZDABEML_js.HeroSection,
2657
2657
  {
2658
2658
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
2659
2659
  label: labels.title,
@@ -2661,7 +2661,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2661
2661
  subtitle: labels.subtitle,
2662
2662
  gradient: "from-rose-500 to-orange-600",
2663
2663
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2664
- chunkRWZ2PLMQ_js.SearchBar,
2664
+ chunkKZDABEML_js.SearchBar,
2665
2665
  {
2666
2666
  searchTerm,
2667
2667
  onSearchChange: setSearchTerm,
@@ -2678,8 +2678,8 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2678
2678
  count: filterCount,
2679
2679
  onClear: filterCount > 0 ? clearAllFilters : void 0,
2680
2680
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
2681
- typeChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByType ?? "Tipo", children: /* @__PURE__ */ jsxRuntime.jsx(
2682
- chunkRWZ2PLMQ_js.ChipPicker,
2681
+ typeChipItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByType ?? "Tipo", children: /* @__PURE__ */ jsxRuntime.jsx(
2682
+ chunkKZDABEML_js.ChipPicker,
2683
2683
  {
2684
2684
  items: typeChipItems,
2685
2685
  selectedIds: selectedTypes,
@@ -2689,13 +2689,13 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2689
2689
  clearLabel: labels.clear ?? "Limpar"
2690
2690
  }
2691
2691
  ) }),
2692
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "active", "disabled"].map((value) => disabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setDisabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setDisabledFilter(value), children: statusLabelFor(value) }, value)) }) })
2692
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSection, { title: labels.filterByStatus ?? "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: ["all", "active", "disabled"].map((value) => disabledFilter === value ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "ios-glass-blue", onClick: () => setDisabledFilter(value), children: statusLabelFor(value) }, value) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setDisabledFilter(value), children: statusLabelFor(value) }, value)) }) })
2693
2693
  ] })
2694
2694
  }
2695
2695
  }
2696
2696
  ) : void 0,
2697
2697
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2698
- chunkRWZ2PLMQ_js.CreateActionButton,
2698
+ chunkKZDABEML_js.CreateActionButton,
2699
2699
  {
2700
2700
  mode: "desktop",
2701
2701
  label: labels.addCredential,
@@ -2706,7 +2706,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2706
2706
  }
2707
2707
  );
2708
2708
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2709
- chunkRWZ2PLMQ_js.CreateActionButton,
2709
+ chunkKZDABEML_js.CreateActionButton,
2710
2710
  {
2711
2711
  mode: "mobile",
2712
2712
  label: labels.addCredential,
@@ -2714,23 +2714,23 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2714
2714
  accent: "rose"
2715
2715
  }
2716
2716
  );
2717
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredCredentials.map((secret) => /* @__PURE__ */ jsxRuntime.jsxs(
2718
- chunkRWZ2PLMQ_js.EntityCard,
2717
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredCredentials.map((secret) => /* @__PURE__ */ jsxRuntime.jsxs(
2718
+ chunkKZDABEML_js.EntityCard,
2719
2719
  {
2720
2720
  accentGradient: "from-rose-500 to-orange-700",
2721
2721
  icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-rose-500/10 text-rose-600 dark:bg-rose-500/20 dark:text-rose-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6" }) }),
2722
2722
  title: secret.name,
2723
2723
  subtitle: secret.secretType,
2724
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2724
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2725
2725
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2726
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.CopyableId, { id: secret.secretId }),
2726
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.CopyableId, { id: secret.secretId }),
2727
2727
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2728
- /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2728
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2729
2729
  /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
2730
2730
  labels.rotate
2731
2731
  ] }),
2732
2732
  !secret.disabled && /* @__PURE__ */ jsxRuntime.jsxs(
2733
- chunkEBARYRSA_js.Button,
2733
+ chunkMXQ2EYG2_js.Button,
2734
2734
  {
2735
2735
  type: "button",
2736
2736
  size: "sm",
@@ -2765,7 +2765,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2765
2765
  mobileAction
2766
2766
  ] }),
2767
2767
  /* @__PURE__ */ jsxRuntime.jsx(
2768
- chunkRWZ2PLMQ_js.GlassModal,
2768
+ chunkKZDABEML_js.GlassModal,
2769
2769
  {
2770
2770
  open: createOpen,
2771
2771
  onClose: () => setCreateOpen(false),
@@ -2783,16 +2783,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2783
2783
  onCreate({ name, value, secretType, description });
2784
2784
  setCreateOpen(false);
2785
2785
  },
2786
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
2787
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2788
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2789
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2790
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2786
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
2787
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2788
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2789
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2790
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2791
2791
  ] })
2792
2792
  }
2793
2793
  ),
2794
2794
  /* @__PURE__ */ jsxRuntime.jsx(
2795
- chunkRWZ2PLMQ_js.GlassModal,
2795
+ chunkKZDABEML_js.GlassModal,
2796
2796
  {
2797
2797
  open: rotateFor !== null,
2798
2798
  onClose: () => setRotateFor(null),
@@ -2807,7 +2807,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2807
2807
  onRotate(rotateFor, value);
2808
2808
  setRotateFor(null);
2809
2809
  },
2810
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2810
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2811
2811
  }
2812
2812
  )
2813
2813
  ] });
@@ -2860,7 +2860,7 @@ function AgentsWorkspacePageView({
2860
2860
  }, [agents, selectedId]);
2861
2861
  const isEmpty = agents.length === 0;
2862
2862
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2863
- chunkRWZ2PLMQ_js.HeroSection,
2863
+ chunkKZDABEML_js.HeroSection,
2864
2864
  {
2865
2865
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
2866
2866
  label: labels.title,
@@ -2868,7 +2868,7 @@ function AgentsWorkspacePageView({
2868
2868
  subtitle: labels.subtitle,
2869
2869
  gradient: "from-violet-500 to-indigo-700",
2870
2870
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2871
- chunkRWZ2PLMQ_js.SearchBar,
2871
+ chunkKZDABEML_js.SearchBar,
2872
2872
  {
2873
2873
  searchTerm,
2874
2874
  onSearchChange: setSearchTerm,
@@ -2877,7 +2877,7 @@ function AgentsWorkspacePageView({
2877
2877
  }
2878
2878
  ) : void 0,
2879
2879
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2880
- chunkRWZ2PLMQ_js.CreateActionButton,
2880
+ chunkKZDABEML_js.CreateActionButton,
2881
2881
  {
2882
2882
  mode: "desktop",
2883
2883
  label: labels.addAgent,
@@ -2888,7 +2888,7 @@ function AgentsWorkspacePageView({
2888
2888
  }
2889
2889
  );
2890
2890
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2891
- chunkRWZ2PLMQ_js.CreateActionButton,
2891
+ chunkKZDABEML_js.CreateActionButton,
2892
2892
  {
2893
2893
  mode: "mobile",
2894
2894
  label: labels.addAgent,
@@ -2896,27 +2896,27 @@ function AgentsWorkspacePageView({
2896
2896
  accent: "violet"
2897
2897
  }
2898
2898
  );
2899
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2900
- chunkRWZ2PLMQ_js.PageEmptyState,
2899
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2900
+ chunkKZDABEML_js.PageEmptyState,
2901
2901
  {
2902
2902
  title: labels.empty,
2903
2903
  message: labels.emptyMessage,
2904
2904
  iconName: "folder-open"
2905
2905
  }
2906
2906
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2907
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2907
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2908
2908
  const id = String(agent.agentId ?? agent.id ?? "");
2909
2909
  const active = id === selectedId;
2910
2910
  const initials = deriveInitials(String(agent.name ?? id));
2911
2911
  const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2912
2912
  return /* @__PURE__ */ jsxRuntime.jsx(
2913
- chunkRWZ2PLMQ_js.ListCardItem,
2913
+ chunkKZDABEML_js.ListCardItem,
2914
2914
  {
2915
- leading: /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2916
- trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Badge, { color: "emerald", children: [
2915
+ leading: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2916
+ trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: "emerald", children: [
2917
2917
  "v",
2918
2918
  agent.activePromptVersion
2919
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "zinc", children: "draft" }),
2919
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", children: "draft" }),
2920
2920
  pressable: true,
2921
2921
  onPress: () => {
2922
2922
  setSelectedId(id);
@@ -2954,7 +2954,7 @@ function AgentsWorkspacePageView({
2954
2954
  },
2955
2955
  String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2956
2956
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2957
- chunkRWZ2PLMQ_js.SectionCard,
2957
+ chunkKZDABEML_js.SectionCard,
2958
2958
  {
2959
2959
  header: {
2960
2960
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2962,7 +2962,7 @@ function AgentsWorkspacePageView({
2962
2962
  subtitle: labels.noSelectionMessage
2963
2963
  },
2964
2964
  children: /* @__PURE__ */ jsxRuntime.jsx(
2965
- chunkRWZ2PLMQ_js.PageEmptyState,
2965
+ chunkKZDABEML_js.PageEmptyState,
2966
2966
  {
2967
2967
  title: labels.noSelection,
2968
2968
  message: labels.noSelectionMessage,
@@ -2996,7 +2996,7 @@ function AgentDetail({
2996
2996
  }) {
2997
2997
  const agentId = String(agent.agentId ?? agent.id ?? "");
2998
2998
  return /* @__PURE__ */ jsxRuntime.jsx(
2999
- chunkRWZ2PLMQ_js.SectionCard,
2999
+ chunkKZDABEML_js.SectionCard,
3000
3000
  {
3001
3001
  header: {
3002
3002
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -3004,7 +3004,7 @@ function AgentDetail({
3004
3004
  subtitle: String(agent.description ?? "")
3005
3005
  },
3006
3006
  actions: /* @__PURE__ */ jsxRuntime.jsxs(
3007
- chunkEBARYRSA_js.Button,
3007
+ chunkMXQ2EYG2_js.Button,
3008
3008
  {
3009
3009
  type: "button",
3010
3010
  size: "sm",
@@ -3021,15 +3021,15 @@ function AgentDetail({
3021
3021
  ]
3022
3022
  }
3023
3023
  ),
3024
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.Tabs, { defaultValue: "general", className: "w-full", children: [
3025
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
3026
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsTrigger, { value: "general", children: labels.generalTab }),
3027
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
3028
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
3029
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsTrigger, { value: "model", children: labels.modelTab })
3024
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.Tabs, { defaultValue: "general", className: "w-full", children: [
3025
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
3026
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsTrigger, { value: "general", children: labels.generalTab }),
3027
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
3028
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
3029
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsTrigger, { value: "model", children: labels.modelTab })
3030
3030
  ] }),
3031
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
3032
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3031
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
3032
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3033
3033
  PromptTab,
3034
3034
  {
3035
3035
  agent,
@@ -3039,7 +3039,7 @@ function AgentDetail({
3039
3039
  onActivate: (promptId) => onActivatePrompt(agentId, promptId)
3040
3040
  }
3041
3041
  ) }),
3042
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3042
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3043
3043
  ToolsTab,
3044
3044
  {
3045
3045
  agent,
@@ -3049,7 +3049,7 @@ function AgentDetail({
3049
3049
  onDetach: (toolId) => onDetachTool(agentId, toolId)
3050
3050
  }
3051
3051
  ) }),
3052
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3052
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
3053
3053
  ModelTab,
3054
3054
  {
3055
3055
  agent,
@@ -3081,7 +3081,7 @@ function GeneralTab({
3081
3081
  const initialRole = String(agent.role ?? "");
3082
3082
  const initialStatus = String(agent.status ?? "draft");
3083
3083
  return /* @__PURE__ */ jsxRuntime.jsx(
3084
- chunkRWZ2PLMQ_js.SectionCard,
3084
+ chunkKZDABEML_js.SectionCard,
3085
3085
  {
3086
3086
  variant: "glass",
3087
3087
  header: {
@@ -3110,10 +3110,10 @@ function GeneralTab({
3110
3110
  },
3111
3111
  className: "space-y-4",
3112
3112
  children: [
3113
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
3114
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
3113
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3114
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
3115
3115
  /* @__PURE__ */ jsxRuntime.jsx(
3116
- chunkRWZ2PLMQ_js.FormSelect,
3116
+ chunkKZDABEML_js.FormSelect,
3117
3117
  {
3118
3118
  name: "status",
3119
3119
  label: labels.status,
@@ -3125,9 +3125,9 @@ function GeneralTab({
3125
3125
  ]
3126
3126
  }
3127
3127
  ),
3128
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
3128
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
3129
3129
  /* @__PURE__ */ jsxRuntime.jsx(
3130
- chunkRWZ2PLMQ_js.FormInput,
3130
+ chunkKZDABEML_js.FormInput,
3131
3131
  {
3132
3132
  name: "maxTokens",
3133
3133
  label: labels.maxTokens,
@@ -3136,7 +3136,7 @@ function GeneralTab({
3136
3136
  }
3137
3137
  ),
3138
3138
  /* @__PURE__ */ jsxRuntime.jsx(
3139
- chunkRWZ2PLMQ_js.FormInput,
3139
+ chunkKZDABEML_js.FormInput,
3140
3140
  {
3141
3141
  name: "temperature",
3142
3142
  label: labels.temperature,
@@ -3148,8 +3148,8 @@ function GeneralTab({
3148
3148
  }
3149
3149
  )
3150
3150
  ] }),
3151
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
3152
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "submit", color: "indigo", disabled: submitting, children: submitting ? labels.saving : labels.save }) })
3151
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
3152
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "submit", color: "indigo", disabled: submitting, children: submitting ? labels.saving : labels.save }) })
3153
3153
  ]
3154
3154
  }
3155
3155
  )
@@ -3168,7 +3168,7 @@ function PromptTab({
3168
3168
  const currentSystem = String(agent.systemPrompt ?? "");
3169
3169
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3170
3170
  /* @__PURE__ */ jsxRuntime.jsx(
3171
- chunkRWZ2PLMQ_js.SectionCard,
3171
+ chunkKZDABEML_js.SectionCard,
3172
3172
  {
3173
3173
  variant: "glass",
3174
3174
  header: {
@@ -3180,27 +3180,27 @@ function PromptTab({
3180
3180
  }
3181
3181
  ),
3182
3182
  /* @__PURE__ */ jsxRuntime.jsx(
3183
- chunkRWZ2PLMQ_js.SectionCard,
3183
+ chunkKZDABEML_js.SectionCard,
3184
3184
  {
3185
3185
  variant: "glass",
3186
3186
  header: {
3187
3187
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-4 w-4" }),
3188
3188
  title: labels.promptVersions
3189
3189
  },
3190
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setAddOpen(true), children: [
3190
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setAddOpen(true), children: [
3191
3191
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
3192
3192
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
3193
3193
  ] }),
3194
- children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.ListCard, { children: prompts.map((prompt) => {
3194
+ children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.ListCard, { children: prompts.map((prompt) => {
3195
3195
  const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
3196
3196
  return /* @__PURE__ */ jsxRuntime.jsxs(
3197
- chunkRWZ2PLMQ_js.ListCardItem,
3197
+ chunkKZDABEML_js.ListCardItem,
3198
3198
  {
3199
- leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
3199
+ leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
3200
3200
  "v",
3201
3201
  prompt.version
3202
3202
  ] }),
3203
- trailing: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Badge, { color: "emerald", children: labels.activated }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(id), children: labels.activate }),
3203
+ trailing: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "emerald", children: labels.activated }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(id), children: labels.activate }),
3204
3204
  children: [
3205
3205
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-slate-700 dark:text-slate-200", children: prompt.locale }),
3206
3206
  prompt.prompt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-2 text-xs text-slate-500 dark:text-slate-400", children: prompt.prompt })
@@ -3212,7 +3212,7 @@ function PromptTab({
3212
3212
  }
3213
3213
  ),
3214
3214
  addOpen && /* @__PURE__ */ jsxRuntime.jsx(
3215
- chunkRWZ2PLMQ_js.GlassModal,
3215
+ chunkKZDABEML_js.GlassModal,
3216
3216
  {
3217
3217
  open: true,
3218
3218
  onClose: () => setAddOpen(false),
@@ -3233,10 +3233,10 @@ function PromptTab({
3233
3233
  });
3234
3234
  setAddOpen(false);
3235
3235
  },
3236
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
3237
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
3236
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3237
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
3238
3238
  /* @__PURE__ */ jsxRuntime.jsx(
3239
- chunkRWZ2PLMQ_js.FormSelect,
3239
+ chunkKZDABEML_js.FormSelect,
3240
3240
  {
3241
3241
  name: "isActive",
3242
3242
  label: labels.promptIsActive,
@@ -3247,10 +3247,10 @@ function PromptTab({
3247
3247
  defaultValue: "true"
3248
3248
  }
3249
3249
  ),
3250
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormInput, { name: "reason", label: labels.promptReason }),
3251
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
3252
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
3253
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
3250
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormInput, { name: "reason", label: labels.promptReason }),
3251
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
3252
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
3253
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
3254
3254
  ] })
3255
3255
  }
3256
3256
  )
@@ -3273,18 +3273,18 @@ function ToolsTab({
3273
3273
  const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
3274
3274
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3275
3275
  /* @__PURE__ */ jsxRuntime.jsx(
3276
- chunkRWZ2PLMQ_js.SectionCard,
3276
+ chunkKZDABEML_js.SectionCard,
3277
3277
  {
3278
3278
  variant: "glass",
3279
3279
  header: {
3280
3280
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
3281
3281
  title: labels.toolsAttached
3282
3282
  },
3283
- children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
3284
- chunkRWZ2PLMQ_js.ListCardItem,
3283
+ children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
3284
+ chunkKZDABEML_js.ListCardItem,
3285
3285
  {
3286
3286
  leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-lg bg-amber-500/10 text-amber-600 dark:bg-amber-500/20 dark:text-amber-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }) }),
3287
- trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
3287
+ trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
3288
3288
  children: [
3289
3289
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-slate-700 dark:text-slate-200", children: tool.name }),
3290
3290
  tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 line-clamp-1 text-xs text-slate-500 dark:text-slate-400", children: tool.description })
@@ -3295,18 +3295,18 @@ function ToolsTab({
3295
3295
  }
3296
3296
  ),
3297
3297
  /* @__PURE__ */ jsxRuntime.jsx(
3298
- chunkRWZ2PLMQ_js.SectionCard,
3298
+ chunkKZDABEML_js.SectionCard,
3299
3299
  {
3300
3300
  variant: "glass",
3301
3301
  header: {
3302
3302
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
3303
3303
  title: labels.toolsAvailable
3304
3304
  },
3305
- children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
3306
- chunkRWZ2PLMQ_js.ListCardItem,
3305
+ children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
3306
+ chunkKZDABEML_js.ListCardItem,
3307
3307
  {
3308
3308
  leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-lg bg-slate-500/10 text-slate-600 dark:bg-slate-500/20 dark:text-slate-300", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }) }),
3309
- trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
3309
+ trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
3310
3310
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
3311
3311
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.attachTool })
3312
3312
  ] }),
@@ -3344,7 +3344,7 @@ function ModelTab({
3344
3344
  return matches.length > 0 ? matches : connections;
3345
3345
  }, [selectedModel, connections]);
3346
3346
  return /* @__PURE__ */ jsxRuntime.jsx(
3347
- chunkRWZ2PLMQ_js.SectionCard,
3347
+ chunkKZDABEML_js.SectionCard,
3348
3348
  {
3349
3349
  variant: "glass",
3350
3350
  header: {
@@ -3365,9 +3365,9 @@ function ModelTab({
3365
3365
  },
3366
3366
  className: "space-y-4",
3367
3367
  children: [
3368
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
3368
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3369
3369
  /* @__PURE__ */ jsxRuntime.jsx(
3370
- chunkRWZ2PLMQ_js.FormSelect,
3370
+ chunkKZDABEML_js.FormSelect,
3371
3371
  {
3372
3372
  label: labels.model,
3373
3373
  value: modelId,
@@ -3376,7 +3376,7 @@ function ModelTab({
3376
3376
  }
3377
3377
  ),
3378
3378
  /* @__PURE__ */ jsxRuntime.jsx(
3379
- chunkRWZ2PLMQ_js.FormSelect,
3379
+ chunkKZDABEML_js.FormSelect,
3380
3380
  {
3381
3381
  label: labels.connection,
3382
3382
  value: connectionId,
@@ -3389,7 +3389,7 @@ function ModelTab({
3389
3389
  }
3390
3390
  )
3391
3391
  ] }),
3392
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "submit", color: "indigo", disabled: submitting || !modelId, children: submitting ? labels.saving : labels.save }) })
3392
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "submit", color: "indigo", disabled: submitting || !modelId, children: submitting ? labels.saving : labels.save }) })
3393
3393
  ]
3394
3394
  }
3395
3395
  )
@@ -3664,9 +3664,8 @@ function AgentNewWizardPageView({
3664
3664
  setSubmitting(false);
3665
3665
  }
3666
3666
  }
3667
- const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS));
3668
3667
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3669
- chunkRWZ2PLMQ_js.HeroSection,
3668
+ chunkKZDABEML_js.HeroSection,
3670
3669
  {
3671
3670
  icon: /* @__PURE__ */ jsxRuntime.jsx(
3672
3671
  "div",
@@ -3676,12 +3675,21 @@ function AgentNewWizardPageView({
3676
3675
  children: emoji
3677
3676
  }
3678
3677
  ),
3679
- label: counter,
3680
- title: labels.pageTitle,
3678
+ label: labels.pageTitle,
3679
+ title: stepTitles[step - 1],
3681
3680
  subtitle: stepSubtitles[step - 1],
3682
3681
  gradient: activePreset.accent,
3682
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
3683
+ chunkMXQ2EYG2_js.IconButton,
3684
+ {
3685
+ label: labels.wizardCancel,
3686
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-5 w-5" }),
3687
+ variant: "ghost",
3688
+ onClick: cancelWithConfirm
3689
+ }
3690
+ ),
3683
3691
  children: /* @__PURE__ */ jsxRuntime.jsx(
3684
- chunkRWZ2PLMQ_js.StepIndicator,
3692
+ chunkKZDABEML_js.StepIndicator,
3685
3693
  {
3686
3694
  accent: "indigo",
3687
3695
  currentStep: step - 1,
@@ -3694,432 +3702,326 @@ function AgentNewWizardPageView({
3694
3702
  );
3695
3703
  function renderStep1() {
3696
3704
  return /* @__PURE__ */ jsxRuntime.jsx(
3697
- chunkRWZ2PLMQ_js.SectionCard,
3705
+ "div",
3698
3706
  {
3699
- variant: "glass",
3700
- header: {
3701
- title: labels.presetTitle,
3702
- subtitle: labels.presetSubtitle
3703
- },
3704
- children: /* @__PURE__ */ jsxRuntime.jsx(
3705
- "div",
3706
- {
3707
- role: "radiogroup",
3708
- "aria-label": labels.presetTitle,
3709
- className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
3710
- children: AGENT_PRESETS.map((preset) => {
3711
- const selected = preset.id === presetId;
3712
- return /* @__PURE__ */ jsxRuntime.jsx(
3713
- chunkRWZ2PLMQ_js.FilterTileButton,
3714
- {
3715
- isActive: selected,
3716
- color: preset.tileColor,
3717
- icon: /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-base leading-none", children: preset.emoji }),
3718
- label: preset.id === "custom" ? labels.presetCustom : preset.name,
3719
- count: preset.role || labels.presetCustomHint,
3720
- onClick: () => applyPreset(preset)
3721
- },
3722
- preset.id
3723
- );
3724
- })
3725
- }
3726
- )
3707
+ role: "radiogroup",
3708
+ "aria-label": labels.presetTitle,
3709
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
3710
+ children: AGENT_PRESETS.map((preset) => {
3711
+ const selected = preset.id === presetId;
3712
+ return /* @__PURE__ */ jsxRuntime.jsx(
3713
+ chunkKZDABEML_js.FilterTileButton,
3714
+ {
3715
+ isActive: selected,
3716
+ color: preset.tileColor,
3717
+ icon: /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-base leading-none", children: preset.emoji }),
3718
+ label: preset.id === "custom" ? labels.presetCustom : preset.name,
3719
+ count: preset.role || labels.presetCustomHint,
3720
+ onClick: () => applyPreset(preset)
3721
+ },
3722
+ preset.id
3723
+ );
3724
+ })
3727
3725
  }
3728
3726
  );
3729
3727
  }
3730
3728
  function renderStep2() {
3731
- return /* @__PURE__ */ jsxRuntime.jsx(
3732
- chunkRWZ2PLMQ_js.SectionCard,
3733
- {
3734
- variant: "glass",
3735
- header: {
3736
- title: labels.identitySection,
3737
- subtitle: labels.identitySubtitle
3738
- },
3739
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3740
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3741
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.avatarLabel }),
3742
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: EMOJI_PALETTE.map((e) => /* @__PURE__ */ jsxRuntime.jsx(
3743
- "button",
3744
- {
3745
- type: "button",
3746
- onClick: () => {
3747
- setEmoji(e);
3748
- markTouched();
3749
- },
3750
- "aria-pressed": emoji === e,
3751
- className: [
3752
- "flex h-9 w-9 items-center justify-center rounded-lg text-base transition-all",
3753
- emoji === e ? `bg-gradient-to-br ${activePreset.accent} shadow-sm ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent` : "liquid-surface hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
3754
- ].join(" "),
3755
- children: e
3756
- },
3757
- e
3758
- )) })
3759
- ] }),
3760
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
3761
- /* @__PURE__ */ jsxRuntime.jsx(
3762
- chunkRWZ2PLMQ_js.FormInput,
3763
- {
3764
- label: labels.name,
3765
- value: name,
3766
- onValueChange: (v) => {
3767
- setName(v);
3768
- markTouched();
3769
- },
3770
- required: true,
3771
- placeholder: labels.namePlaceholder
3772
- }
3773
- ),
3774
- /* @__PURE__ */ jsxRuntime.jsx(
3775
- chunkRWZ2PLMQ_js.FormInput,
3776
- {
3777
- label: labels.role,
3778
- value: role,
3779
- onValueChange: (v) => {
3780
- setRole(v);
3781
- markTouched();
3782
- },
3783
- placeholder: labels.rolePlaceholder
3784
- }
3785
- )
3786
- ] }),
3787
- /* @__PURE__ */ jsxRuntime.jsx(
3788
- chunkRWZ2PLMQ_js.FormTextarea,
3789
- {
3790
- label: labels.descriptionLabel,
3791
- value: description,
3792
- onValueChange: (v) => {
3793
- setDescription(v);
3794
- markTouched();
3795
- },
3796
- rows: 3,
3797
- placeholder: labels.descriptionPlaceholder
3798
- }
3799
- )
3800
- ] })
3801
- }
3802
- );
3729
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3730
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3731
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.avatarLabel }),
3732
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: EMOJI_PALETTE.map((e) => /* @__PURE__ */ jsxRuntime.jsx(
3733
+ chunkKZDABEML_js.PickerTile,
3734
+ {
3735
+ onClick: () => {
3736
+ setEmoji(e);
3737
+ markTouched();
3738
+ },
3739
+ selected: emoji === e,
3740
+ className: [
3741
+ "flex h-9 w-9 items-center justify-center rounded-lg text-base transition-all",
3742
+ emoji === e ? `bg-gradient-to-br ${activePreset.accent} shadow-sm ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent` : "liquid-surface hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
3743
+ ].join(" "),
3744
+ children: e
3745
+ },
3746
+ e
3747
+ )) })
3748
+ ] }),
3749
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3750
+ /* @__PURE__ */ jsxRuntime.jsx(
3751
+ chunkKZDABEML_js.FormInput,
3752
+ {
3753
+ label: labels.name,
3754
+ value: name,
3755
+ onValueChange: (v) => {
3756
+ setName(v);
3757
+ markTouched();
3758
+ },
3759
+ required: true,
3760
+ placeholder: labels.namePlaceholder
3761
+ }
3762
+ ),
3763
+ /* @__PURE__ */ jsxRuntime.jsx(
3764
+ chunkKZDABEML_js.FormInput,
3765
+ {
3766
+ label: labels.role,
3767
+ value: role,
3768
+ onValueChange: (v) => {
3769
+ setRole(v);
3770
+ markTouched();
3771
+ },
3772
+ placeholder: labels.rolePlaceholder
3773
+ }
3774
+ )
3775
+ ] }),
3776
+ /* @__PURE__ */ jsxRuntime.jsx(
3777
+ chunkKZDABEML_js.FormTextarea,
3778
+ {
3779
+ label: labels.descriptionLabel,
3780
+ value: description,
3781
+ onValueChange: (v) => {
3782
+ setDescription(v);
3783
+ markTouched();
3784
+ },
3785
+ rows: 3,
3786
+ placeholder: labels.descriptionPlaceholder
3787
+ }
3788
+ )
3789
+ ] });
3803
3790
  }
3804
3791
  function renderStep3() {
3805
- return /* @__PURE__ */ jsxRuntime.jsx(
3806
- chunkRWZ2PLMQ_js.SectionCard,
3807
- {
3808
- variant: "glass",
3809
- header: {
3810
- title: labels.modelSection,
3811
- subtitle: labels.connectionPickPrompt
3812
- },
3813
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3814
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
3815
- /* @__PURE__ */ jsxRuntime.jsx(
3816
- chunkRWZ2PLMQ_js.FormSelect,
3817
- {
3818
- label: labels.connectionLabel,
3819
- value: connectionId,
3820
- onValueChange: (v) => {
3821
- setConnectionId(v);
3822
- markTouched();
3823
- },
3824
- options: connectionOptions,
3825
- icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-4 w-4" })
3826
- }
3827
- ),
3828
- /* @__PURE__ */ jsxRuntime.jsx(
3829
- chunkRWZ2PLMQ_js.FormSelect,
3830
- {
3831
- label: labels.frameworkLabel,
3832
- value: framework,
3833
- onValueChange: (v) => {
3834
- setFramework(v);
3835
- markTouched();
3836
- },
3837
- options: frameworkOptions
3838
- }
3839
- ),
3840
- /* @__PURE__ */ jsxRuntime.jsx(
3841
- chunkRWZ2PLMQ_js.FormSelect,
3842
- {
3843
- label: labels.model,
3844
- value: modelId,
3845
- onValueChange: (v) => {
3846
- setModelId(v);
3847
- markTouched();
3848
- },
3849
- options: modelOptions.length > 0 ? modelOptions : [{ value: "", label: labels.modelEmpty }]
3850
- }
3851
- )
3852
- ] }),
3853
- /* @__PURE__ */ jsxRuntime.jsx(
3854
- chunkRWZ2PLMQ_js.FormTextarea,
3855
- {
3856
- label: labels.outputSchemaLabel,
3857
- value: outputSchema,
3858
- onValueChange: (v) => {
3859
- setOutputSchema(v);
3860
- markTouched();
3861
- },
3862
- rows: 5,
3863
- placeholder: labels.outputSchemaPlaceholder
3864
- }
3865
- )
3866
- ] })
3867
- }
3868
- );
3792
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3793
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3794
+ /* @__PURE__ */ jsxRuntime.jsx(
3795
+ chunkKZDABEML_js.FormSelect,
3796
+ {
3797
+ label: labels.connectionLabel,
3798
+ value: connectionId,
3799
+ onValueChange: (v) => {
3800
+ setConnectionId(v);
3801
+ markTouched();
3802
+ },
3803
+ options: connectionOptions,
3804
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-4 w-4" })
3805
+ }
3806
+ ),
3807
+ /* @__PURE__ */ jsxRuntime.jsx(
3808
+ chunkKZDABEML_js.FormSelect,
3809
+ {
3810
+ label: labels.frameworkLabel,
3811
+ value: framework,
3812
+ onValueChange: (v) => {
3813
+ setFramework(v);
3814
+ markTouched();
3815
+ },
3816
+ options: frameworkOptions
3817
+ }
3818
+ ),
3819
+ /* @__PURE__ */ jsxRuntime.jsx(
3820
+ chunkKZDABEML_js.FormSelect,
3821
+ {
3822
+ label: labels.model,
3823
+ value: modelId,
3824
+ onValueChange: (v) => {
3825
+ setModelId(v);
3826
+ markTouched();
3827
+ },
3828
+ options: modelOptions.length > 0 ? modelOptions : [{ value: "", label: labels.modelEmpty }]
3829
+ }
3830
+ )
3831
+ ] }),
3832
+ /* @__PURE__ */ jsxRuntime.jsx(
3833
+ chunkKZDABEML_js.FormTextarea,
3834
+ {
3835
+ label: labels.outputSchemaLabel,
3836
+ value: outputSchema,
3837
+ onValueChange: (v) => {
3838
+ setOutputSchema(v);
3839
+ markTouched();
3840
+ },
3841
+ rows: 5,
3842
+ placeholder: labels.outputSchemaPlaceholder
3843
+ }
3844
+ )
3845
+ ] });
3869
3846
  }
3870
3847
  function renderStep4() {
3871
3848
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3872
3849
  /* @__PURE__ */ jsxRuntime.jsx(
3873
- chunkRWZ2PLMQ_js.SectionCard,
3850
+ chunkKZDABEML_js.FormTextarea,
3874
3851
  {
3875
- variant: "glass",
3876
- header: {
3877
- title: labels.behaviorSection,
3878
- subtitle: labels.behaviorSubtitle
3852
+ label: labels.promptSystemPrompt,
3853
+ value: systemPrompt,
3854
+ onValueChange: (v) => {
3855
+ setSystemPrompt(v);
3856
+ markTouched();
3879
3857
  },
3880
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3881
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3882
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
3883
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "wizard-system-prompt", className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.promptSystemPrompt }),
3884
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: [
3885
- systemPrompt.length,
3886
- " chars"
3887
- ] })
3888
- ] }),
3889
- /* @__PURE__ */ jsxRuntime.jsx(
3890
- "textarea",
3891
- {
3892
- id: "wizard-system-prompt",
3893
- value: systemPrompt,
3894
- onChange: (e) => {
3895
- setSystemPrompt(e.target.value);
3896
- markTouched();
3897
- },
3898
- rows: 8,
3899
- className: "w-full resize-y rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-3 py-2.5 font-mono text-xs leading-relaxed text-slate-700 outline-none transition-colors placeholder:text-slate-400 focus:ring-indigo-500/70 focus:ring-offset-1 motion-reduce:transition-none dark:text-slate-300 dark:placeholder:text-slate-500",
3900
- placeholder: labels.promptPlaceholder
3901
- }
3902
- )
3903
- ] }),
3904
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3905
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
3906
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "wizard-user-prompt", className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.userPromptLabel }),
3907
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: [
3908
- userPrompt.length,
3909
- " chars"
3910
- ] })
3911
- ] }),
3912
- /* @__PURE__ */ jsxRuntime.jsx(
3913
- "textarea",
3914
- {
3915
- id: "wizard-user-prompt",
3916
- value: userPrompt,
3917
- onChange: (e) => {
3918
- setUserPrompt(e.target.value);
3919
- markTouched();
3920
- },
3921
- rows: 5,
3922
- className: "w-full resize-y rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-3 py-2.5 font-mono text-xs leading-relaxed text-slate-700 outline-none transition-colors placeholder:text-slate-400 focus:ring-indigo-500/70 focus:ring-offset-1 motion-reduce:transition-none dark:text-slate-300 dark:placeholder:text-slate-500",
3923
- placeholder: labels.userPromptPlaceholder
3924
- }
3925
- )
3926
- ] }),
3927
- /* @__PURE__ */ jsxRuntime.jsx(
3928
- RangeSliderField,
3929
- {
3930
- sliderId: "wizard-temperature",
3931
- label: labels.temperature,
3932
- value: temperature,
3933
- onChange: (v) => {
3934
- setTemperature(v);
3935
- markTouched();
3936
- },
3937
- min: 0,
3938
- max: 1,
3939
- step: 0.05,
3940
- trackGradient: "linear-gradient(90deg, #3b82f6, #8b5cf6 50%, #ec4899)",
3941
- formatValue: (v) => v.toFixed(2),
3942
- zones: [
3943
- { label: "Precise", max: 0.3, color: "text-blue-500", thumbColor: "#3b82f6" },
3944
- { label: "Balanced", max: 0.7, color: "text-purple-500", thumbColor: "#8b5cf6" },
3945
- { label: "Creative", max: 1, color: "text-pink-500", thumbColor: "#ec4899" }
3946
- ]
3947
- }
3948
- ),
3949
- /* @__PURE__ */ jsxRuntime.jsx(
3950
- RangeSliderField,
3951
- {
3952
- sliderId: "wizard-top-p",
3953
- label: labels.topPLabel,
3954
- value: topP,
3955
- onChange: (v) => {
3956
- setTopP(v);
3957
- markTouched();
3958
- },
3959
- min: 0,
3960
- max: 1,
3961
- step: 0.05,
3962
- trackGradient: "linear-gradient(90deg, #6366f1, #8b5cf6)",
3963
- formatValue: (v) => v.toFixed(2),
3964
- zones: [
3965
- { label: "Top-P", max: 1, color: "text-violet-500", thumbColor: "#8b5cf6" }
3966
- ]
3967
- }
3968
- ),
3969
- /* @__PURE__ */ jsxRuntime.jsx(
3970
- RangeSliderField,
3971
- {
3972
- sliderId: "wizard-top-k",
3973
- label: labels.topKLabel,
3974
- value: topK,
3975
- onChange: (v) => {
3976
- setTopK(Math.max(0, Math.floor(v)));
3977
- markTouched();
3978
- },
3979
- min: 0,
3980
- max: 500,
3981
- step: 1,
3982
- trackGradient: "linear-gradient(90deg, #10b981, #14b8a6)",
3983
- formatValue: (v) => v.toString(),
3984
- zones: [
3985
- { label: "Top-K", max: 500, color: "text-emerald-500", thumbColor: "#10b981" }
3986
- ]
3987
- }
3988
- ),
3989
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3990
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
3991
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "wizard-max-tokens", className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.maxTokens }),
3992
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold tabular-nums text-slate-900 dark:text-white", children: maxTokens.toLocaleString() })
3993
- ] }),
3994
- /* @__PURE__ */ jsxRuntime.jsx(
3995
- "input",
3996
- {
3997
- id: "wizard-max-tokens",
3998
- type: "number",
3999
- value: maxTokens,
4000
- onChange: (e) => {
4001
- setMaxTokens(Math.max(1, Math.floor(Number(e.target.value) || 0)));
4002
- markTouched();
4003
- },
4004
- min: 1,
4005
- max: 32e3,
4006
- step: 1,
4007
- className: "w-full rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-3 py-2.5 text-sm tabular-nums text-slate-700 outline-none transition-colors focus:ring-indigo-500/70 focus:ring-offset-1 motion-reduce:transition-none dark:text-slate-300"
4008
- }
4009
- )
4010
- ] }),
4011
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-lg border border-slate-200/30 dark:border-white/10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-px bg-slate-200/30 dark:bg-white/10", children: [
4012
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
4013
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] uppercase tracking-wider text-slate-400 dark:text-slate-500", children: labels.model }),
4014
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-semibold text-slate-900 dark:text-white", children: matchingModels.find((m) => m.id === modelId)?.name ?? labels.modelEmpty })
4015
- ] }),
4016
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
4017
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] uppercase tracking-wider text-slate-400 dark:text-slate-500", children: labels.maxTokens }),
4018
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: maxTokens.toLocaleString() })
4019
- ] }),
4020
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
4021
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] uppercase tracking-wider text-slate-400 dark:text-slate-500", children: labels.temperature }),
4022
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: `text-xs font-semibold ${temperature <= 0.3 ? "text-blue-500" : temperature <= 0.7 ? "text-purple-500" : "text-pink-500"}`, children: [
4023
- temperature.toFixed(2),
4024
- " \xB7 ",
4025
- temperature <= 0.3 ? "Precise" : temperature <= 0.7 ? "Balanced" : "Creative"
4026
- ] })
4027
- ] })
4028
- ] }) })
4029
- ] })
3858
+ rows: 6,
3859
+ placeholder: labels.promptPlaceholder,
3860
+ hint: `${systemPrompt.length} chars`
4030
3861
  }
4031
3862
  ),
4032
3863
  /* @__PURE__ */ jsxRuntime.jsx(
4033
- chunkRWZ2PLMQ_js.SectionCard,
3864
+ chunkKZDABEML_js.FormTextarea,
4034
3865
  {
4035
- variant: "glass",
4036
- header: {
4037
- title: labels.metadataSection,
4038
- subtitle: labels.metadataSubtitle
3866
+ label: labels.userPromptLabel,
3867
+ value: userPrompt,
3868
+ onValueChange: (v) => {
3869
+ setUserPrompt(v);
3870
+ markTouched();
4039
3871
  },
4040
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4041
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4042
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.difficultyLabel }),
4043
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-4", children: DIFFICULTY_OPTIONS.map((opt) => {
4044
- const selected = difficulty === opt.id;
4045
- const label = opt.id === "beginner" ? labels.difficultyBeginner : opt.id === "intermediate" ? labels.difficultyIntermediate : opt.id === "advanced" ? labels.difficultyAdvanced : labels.difficultyExpert;
4046
- return /* @__PURE__ */ jsxRuntime.jsxs(
4047
- "button",
4048
- {
4049
- type: "button",
4050
- onClick: () => {
4051
- setDifficulty(opt.id);
4052
- markTouched();
4053
- },
4054
- "aria-pressed": selected,
4055
- className: [
4056
- "liquid-surface flex items-center gap-2 rounded-xl px-3 py-2 text-left transition-all",
4057
- selected ? "ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent" : "hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
4058
- ].join(" "),
4059
- children: [
4060
- /* @__PURE__ */ jsxRuntime.jsx(
4061
- "span",
4062
- {
4063
- "aria-hidden": "true",
4064
- className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br ${opt.accent} text-base shadow-sm`,
4065
- children: opt.emoji
4066
- }
4067
- ),
4068
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: label })
4069
- ]
4070
- },
4071
- opt.id
4072
- );
4073
- }) })
4074
- ] }),
4075
- /* @__PURE__ */ jsxRuntime.jsx(
4076
- chunkRWZ2PLMQ_js.FormInput,
4077
- {
4078
- label: labels.tagsLabel,
4079
- value: tagsInput,
4080
- onValueChange: (v) => {
4081
- setTagsInput(v);
4082
- markTouched();
4083
- },
4084
- placeholder: labels.tagsPlaceholder
4085
- }
4086
- )
4087
- ] })
3872
+ rows: 4,
3873
+ placeholder: labels.userPromptPlaceholder,
3874
+ hint: `${userPrompt.length} chars`
4088
3875
  }
4089
- )
3876
+ ),
3877
+ /* @__PURE__ */ jsxRuntime.jsx(
3878
+ RangeSliderField,
3879
+ {
3880
+ sliderId: "wizard-temperature",
3881
+ label: labels.temperature,
3882
+ value: temperature,
3883
+ onChange: (v) => {
3884
+ setTemperature(v);
3885
+ markTouched();
3886
+ },
3887
+ min: 0,
3888
+ max: 1,
3889
+ step: 0.05,
3890
+ trackGradient: "linear-gradient(90deg, #3b82f6, #8b5cf6 50%, #ec4899)",
3891
+ formatValue: (v) => v.toFixed(2),
3892
+ zones: [
3893
+ { label: "Precise", max: 0.3, color: "text-blue-500", thumbColor: "#3b82f6" },
3894
+ { label: "Balanced", max: 0.7, color: "text-purple-500", thumbColor: "#8b5cf6" },
3895
+ { label: "Creative", max: 1, color: "text-pink-500", thumbColor: "#ec4899" }
3896
+ ]
3897
+ }
3898
+ ),
3899
+ /* @__PURE__ */ jsxRuntime.jsx(
3900
+ RangeSliderField,
3901
+ {
3902
+ sliderId: "wizard-top-p",
3903
+ label: labels.topPLabel,
3904
+ value: topP,
3905
+ onChange: (v) => {
3906
+ setTopP(v);
3907
+ markTouched();
3908
+ },
3909
+ min: 0,
3910
+ max: 1,
3911
+ step: 0.05,
3912
+ trackGradient: "linear-gradient(90deg, #6366f1, #8b5cf6)",
3913
+ formatValue: (v) => v.toFixed(2),
3914
+ zones: [
3915
+ { label: "Top-P", max: 1, color: "text-violet-500", thumbColor: "#8b5cf6" }
3916
+ ]
3917
+ }
3918
+ ),
3919
+ /* @__PURE__ */ jsxRuntime.jsx(
3920
+ RangeSliderField,
3921
+ {
3922
+ sliderId: "wizard-top-k",
3923
+ label: labels.topKLabel,
3924
+ value: topK,
3925
+ onChange: (v) => {
3926
+ setTopK(Math.max(0, Math.floor(v)));
3927
+ markTouched();
3928
+ },
3929
+ min: 0,
3930
+ max: 500,
3931
+ step: 1,
3932
+ trackGradient: "linear-gradient(90deg, #10b981, #14b8a6)",
3933
+ formatValue: (v) => v.toString(),
3934
+ zones: [
3935
+ { label: "Top-K", max: 500, color: "text-emerald-500", thumbColor: "#10b981" }
3936
+ ]
3937
+ }
3938
+ ),
3939
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
3940
+ /* @__PURE__ */ jsxRuntime.jsx(
3941
+ chunkKZDABEML_js.FormInput,
3942
+ {
3943
+ label: labels.maxTokens,
3944
+ type: "number",
3945
+ value: String(maxTokens),
3946
+ onValueChange: (v) => {
3947
+ setMaxTokens(Math.max(1, Math.floor(Number(v) || 0)));
3948
+ markTouched();
3949
+ },
3950
+ min: 1,
3951
+ max: 32e3,
3952
+ step: 1,
3953
+ hint: maxTokens.toLocaleString()
3954
+ }
3955
+ ),
3956
+ /* @__PURE__ */ jsxRuntime.jsx(
3957
+ chunkKZDABEML_js.FormInput,
3958
+ {
3959
+ label: labels.tagsLabel,
3960
+ value: tagsInput,
3961
+ onValueChange: (v) => {
3962
+ setTagsInput(v);
3963
+ markTouched();
3964
+ },
3965
+ placeholder: labels.tagsPlaceholder
3966
+ }
3967
+ )
3968
+ ] }),
3969
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3970
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.difficultyLabel }),
3971
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-4", children: DIFFICULTY_OPTIONS.map((opt) => {
3972
+ const selected = difficulty === opt.id;
3973
+ const label = opt.id === "beginner" ? labels.difficultyBeginner : opt.id === "intermediate" ? labels.difficultyIntermediate : opt.id === "advanced" ? labels.difficultyAdvanced : labels.difficultyExpert;
3974
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3975
+ chunkKZDABEML_js.PickerTile,
3976
+ {
3977
+ onClick: () => {
3978
+ setDifficulty(opt.id);
3979
+ markTouched();
3980
+ },
3981
+ selected,
3982
+ className: [
3983
+ "liquid-surface flex items-center gap-2 rounded-xl px-3 py-2 text-left transition-all",
3984
+ selected ? "ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent" : "hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
3985
+ ].join(" "),
3986
+ children: [
3987
+ /* @__PURE__ */ jsxRuntime.jsx(
3988
+ "span",
3989
+ {
3990
+ "aria-hidden": "true",
3991
+ className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br ${opt.accent} text-base shadow-sm`,
3992
+ children: opt.emoji
3993
+ }
3994
+ ),
3995
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: label })
3996
+ ]
3997
+ },
3998
+ opt.id
3999
+ );
4000
+ }) })
4001
+ ] })
4090
4002
  ] });
4091
4003
  }
4092
4004
  function renderStep5() {
4093
4005
  const modelLabel = models.find((m) => m.id === modelId)?.name ?? labels.modelEmpty;
4094
4006
  const connectionLabel = connectionId ? connections.find((c) => c.id === connectionId)?.name ?? labels.connectionInline : labels.connectionInline;
4095
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4007
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4096
4008
  /* @__PURE__ */ jsxRuntime.jsx(
4097
- chunkRWZ2PLMQ_js.SectionCard,
4009
+ ReviewBlock,
4098
4010
  {
4099
- variant: "glass",
4100
- header: {
4101
- title: labels.wizardStep1Title,
4102
- subtitle: labels.wizardStep1Subtitle
4103
- },
4104
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
4105
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4106
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4107
- ] }),
4011
+ stepTitle: labels.wizardStep1Title,
4012
+ stepSubtitle: labels.wizardStep1Subtitle,
4013
+ editLabel: labels.wizardReviewEdit,
4014
+ onEdit: () => goToStep(1),
4108
4015
  children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: presetId === "custom" ? labels.presetCustom : AGENT_PRESETS.find((p) => p.id === presetId)?.name ?? labels.presetCustom })
4109
4016
  }
4110
4017
  ),
4111
4018
  /* @__PURE__ */ jsxRuntime.jsx(
4112
- chunkRWZ2PLMQ_js.SectionCard,
4019
+ ReviewBlock,
4113
4020
  {
4114
- variant: "glass",
4115
- header: {
4116
- title: labels.wizardStep2Title,
4117
- subtitle: labels.wizardStep2Subtitle
4118
- },
4119
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
4120
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4121
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4122
- ] }),
4021
+ stepTitle: labels.wizardStep2Title,
4022
+ stepSubtitle: labels.wizardStep2Subtitle,
4023
+ editLabel: labels.wizardReviewEdit,
4024
+ onEdit: () => goToStep(2),
4123
4025
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
4124
4026
  /* @__PURE__ */ jsxRuntime.jsx(
4125
4027
  "span",
@@ -4138,17 +4040,12 @@ function AgentNewWizardPageView({
4138
4040
  }
4139
4041
  ),
4140
4042
  /* @__PURE__ */ jsxRuntime.jsx(
4141
- chunkRWZ2PLMQ_js.SectionCard,
4043
+ ReviewBlock,
4142
4044
  {
4143
- variant: "glass",
4144
- header: {
4145
- title: labels.wizardStep3Title,
4146
- subtitle: labels.wizardStep3Subtitle
4147
- },
4148
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
4149
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4150
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4151
- ] }),
4045
+ stepTitle: labels.wizardStep3Title,
4046
+ stepSubtitle: labels.wizardStep3Subtitle,
4047
+ editLabel: labels.wizardReviewEdit,
4048
+ onEdit: () => goToStep(3),
4152
4049
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
4153
4050
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow, { label: labels.connectionLabel, value: connectionLabel }),
4154
4051
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow, { label: labels.frameworkLabel, value: framework || "\u2014" }),
@@ -4158,17 +4055,12 @@ function AgentNewWizardPageView({
4158
4055
  }
4159
4056
  ),
4160
4057
  /* @__PURE__ */ jsxRuntime.jsxs(
4161
- chunkRWZ2PLMQ_js.SectionCard,
4058
+ ReviewBlock,
4162
4059
  {
4163
- variant: "glass",
4164
- header: {
4165
- title: labels.wizardStep4Title,
4166
- subtitle: labels.wizardStep4Subtitle
4167
- },
4168
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(4), children: [
4169
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4170
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4171
- ] }),
4060
+ stepTitle: labels.wizardStep4Title,
4061
+ stepSubtitle: labels.wizardStep4Subtitle,
4062
+ editLabel: labels.wizardReviewEdit,
4063
+ onEdit: () => goToStep(4),
4172
4064
  children: [
4173
4065
  /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-2 sm:grid-cols-4", children: [
4174
4066
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow, { label: labels.temperature, value: temperature.toFixed(2) }),
@@ -4187,14 +4079,14 @@ function AgentNewWizardPageView({
4187
4079
  }
4188
4080
  const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : step === 4 ? renderStep4() : renderStep5();
4189
4081
  const advanceDisabled = !canAdvance(step);
4190
- const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
4191
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
4192
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4193
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
4194
- step < TOTAL_STEPS ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "indigo", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "indigo", onClick: () => void submit(), disabled: submitting, children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate })
4195
- ] })
4082
+ const isLast = step === TOTAL_STEPS;
4083
+ const scrollableStep = step === 4 || step === 5;
4084
+ const bodyClass = scrollableStep ? "p-5 pt-5 sm:p-8 sm:pt-8 max-h-[60vh] overflow-y-auto" : "p-5 pt-5 sm:p-8 sm:pt-8";
4085
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-t pt-4", children: [
4086
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: step === 1 ? cancelWithConfirm : goBack, disabled: submitting, children: step === 1 ? labels.wizardCancel : labels.wizardBack }),
4087
+ isLast ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: () => void submit(), disabled: submitting || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext })
4196
4088
  ] });
4197
- const content = /* @__PURE__ */ jsxRuntime.jsxs(
4089
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4198
4090
  "form",
4199
4091
  {
4200
4092
  onSubmit: (e) => {
@@ -4204,15 +4096,12 @@ function AgentNewWizardPageView({
4204
4096
  },
4205
4097
  className: "space-y-4",
4206
4098
  children: [
4207
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
4099
+ hero,
4100
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Card, { variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.CardContent, { className: bodyClass, children: stepBody }) }),
4208
4101
  footer
4209
4102
  ]
4210
4103
  }
4211
4104
  );
4212
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4213
- hero,
4214
- content
4215
- ] });
4216
4105
  }
4217
4106
  function ReviewRow({ label, value }) {
4218
4107
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
@@ -4220,6 +4109,27 @@ function ReviewRow({ label, value }) {
4220
4109
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-slate-900 dark:text-white", children: value })
4221
4110
  ] });
4222
4111
  }
4112
+ function ReviewBlock({
4113
+ stepTitle,
4114
+ stepSubtitle,
4115
+ editLabel,
4116
+ onEdit,
4117
+ children
4118
+ }) {
4119
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "border-b liquid-divider pb-4 last:border-b-0 last:pb-0", children: [
4120
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-2 flex items-start justify-between gap-3", children: [
4121
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
4122
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "truncate text-sm font-semibold text-slate-900 dark:text-white", children: stepTitle }),
4123
+ stepSubtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: stepSubtitle })
4124
+ ] }),
4125
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: onEdit, children: [
4126
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4127
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: editLabel })
4128
+ ] })
4129
+ ] }),
4130
+ children
4131
+ ] });
4132
+ }
4223
4133
  var DIALECT_LOGO_SRC = {
4224
4134
  bigquery: "/logos/datasources/bigquery.svg",
4225
4135
  postgres: "/logos/datasources/postgres.svg",
@@ -4307,8 +4217,8 @@ function DatasourceNewWizardPageView({
4307
4217
  const [submitting, setSubmitting] = react.useState(false);
4308
4218
  const [touched, setTouched] = react.useState(false);
4309
4219
  const [testStatus, setTestStatus] = react.useState("idle");
4310
- const dialectOption = react.useMemo(() => dialect ? chunkVCL5LDS5_js.findDialect(dialect) : null, [dialect]);
4311
- const category = react.useMemo(() => dialect ? chunkVCL5LDS5_js.findCategory(dialect) : null, [dialect]);
4220
+ const dialectOption = react.useMemo(() => dialect ? chunkPADXORD2_js.findDialect(dialect) : null, [dialect]);
4221
+ const category = react.useMemo(() => dialect ? chunkPADXORD2_js.findCategory(dialect) : null, [dialect]);
4312
4222
  react.useEffect(() => {
4313
4223
  if (dialectOption?.defaultPort && (port === "" || /^[0-9]+$/.test(port))) {
4314
4224
  setPort(String(dialectOption.defaultPort));
@@ -4431,17 +4341,25 @@ function DatasourceNewWizardPageView({
4431
4341
  id: String(idx + 1),
4432
4342
  title
4433
4343
  }));
4434
- const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS2));
4435
4344
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
4436
- chunkRWZ2PLMQ_js.HeroSection,
4345
+ chunkKZDABEML_js.HeroSection,
4437
4346
  {
4438
4347
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
4439
- label: counter,
4440
- title: labels.pageTitle,
4348
+ label: labels.pageTitle,
4349
+ title: stepTitles[step - 1] ?? labels.pageTitle,
4441
4350
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
4442
4351
  gradient: category?.gradient ?? "from-amber-500 to-orange-600",
4352
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
4353
+ chunkMXQ2EYG2_js.IconButton,
4354
+ {
4355
+ label: labels.wizardCancel,
4356
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-5 w-5" }),
4357
+ variant: "ghost",
4358
+ onClick: cancelWithConfirm
4359
+ }
4360
+ ),
4443
4361
  children: /* @__PURE__ */ jsxRuntime.jsx(
4444
- chunkRWZ2PLMQ_js.StepIndicator,
4362
+ chunkKZDABEML_js.StepIndicator,
4445
4363
  {
4446
4364
  accent: "indigo",
4447
4365
  currentStep: step - 1,
@@ -4453,48 +4371,42 @@ function DatasourceNewWizardPageView({
4453
4371
  }
4454
4372
  );
4455
4373
  function renderStep1() {
4456
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkVCL5LDS5_js.DIALECT_CATEGORIES.map((cat) => {
4374
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-5", children: chunkPADXORD2_js.DIALECT_CATEGORIES.map((cat) => {
4457
4375
  const color = CATEGORY_COLOR[cat.id] ?? "slate";
4458
4376
  const categoryLabel = labels[cat.labelKey] ?? cat.id;
4459
- return /* @__PURE__ */ jsxRuntime.jsx(
4460
- chunkRWZ2PLMQ_js.SectionCard,
4461
- {
4462
- variant: "glass",
4463
- header: {
4464
- title: categoryLabel,
4465
- icon: /* @__PURE__ */ jsxRuntime.jsx(cat.icon, { className: "h-4 w-4" }),
4466
- gradient: cat.gradient
4467
- },
4468
- children: /* @__PURE__ */ jsxRuntime.jsx(
4469
- "div",
4470
- {
4471
- role: "radiogroup",
4472
- "aria-label": categoryLabel,
4473
- className: "grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-4",
4474
- children: cat.dialects.map((opt) => {
4475
- const selected = opt.value === dialect;
4476
- const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
4477
- return /* @__PURE__ */ jsxRuntime.jsx(
4478
- chunkRWZ2PLMQ_js.FilterTileButton,
4479
- {
4480
- isActive: selected,
4481
- color,
4482
- icon: logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: opt.label, className: "h-5 w-5 object-contain" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
4483
- label: opt.label,
4484
- count: opt.formType.replace("-", " "),
4485
- onClick: () => {
4486
- setDialect(opt.value);
4487
- markTouched();
4488
- }
4489
- },
4490
- opt.value
4491
- );
4492
- })
4493
- }
4494
- )
4495
- },
4496
- cat.id
4497
- );
4377
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4378
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: [
4379
+ /* @__PURE__ */ jsxRuntime.jsx(cat.icon, { className: "h-3.5 w-3.5" }),
4380
+ categoryLabel
4381
+ ] }),
4382
+ /* @__PURE__ */ jsxRuntime.jsx(
4383
+ "div",
4384
+ {
4385
+ role: "radiogroup",
4386
+ "aria-label": categoryLabel,
4387
+ className: "grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-4",
4388
+ children: cat.dialects.map((opt) => {
4389
+ const selected = opt.value === dialect;
4390
+ const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
4391
+ return /* @__PURE__ */ jsxRuntime.jsx(
4392
+ chunkKZDABEML_js.FilterTileButton,
4393
+ {
4394
+ isActive: selected,
4395
+ color,
4396
+ icon: logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: opt.label, className: "h-5 w-5 object-contain" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
4397
+ label: opt.label,
4398
+ count: opt.formType.replace("-", " "),
4399
+ onClick: () => {
4400
+ setDialect(opt.value);
4401
+ markTouched();
4402
+ }
4403
+ },
4404
+ opt.value
4405
+ );
4406
+ })
4407
+ }
4408
+ )
4409
+ ] }, cat.id);
4498
4410
  }) });
4499
4411
  }
4500
4412
  function renderConnectionFields() {
@@ -4503,7 +4415,7 @@ function DatasourceNewWizardPageView({
4503
4415
  case "standard":
4504
4416
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4505
4417
  /* @__PURE__ */ jsxRuntime.jsx(
4506
- chunkRWZ2PLMQ_js.FormInput,
4418
+ chunkKZDABEML_js.FormInput,
4507
4419
  {
4508
4420
  label: labels.fieldHost,
4509
4421
  value: host,
@@ -4516,7 +4428,7 @@ function DatasourceNewWizardPageView({
4516
4428
  }
4517
4429
  ),
4518
4430
  /* @__PURE__ */ jsxRuntime.jsx(
4519
- chunkRWZ2PLMQ_js.FormInput,
4431
+ chunkKZDABEML_js.FormInput,
4520
4432
  {
4521
4433
  label: labels.fieldPort,
4522
4434
  type: "number",
@@ -4528,7 +4440,7 @@ function DatasourceNewWizardPageView({
4528
4440
  }
4529
4441
  ),
4530
4442
  /* @__PURE__ */ jsxRuntime.jsx(
4531
- chunkRWZ2PLMQ_js.FormInput,
4443
+ chunkKZDABEML_js.FormInput,
4532
4444
  {
4533
4445
  label: labels.fieldDatabase,
4534
4446
  value: database,
@@ -4541,7 +4453,7 @@ function DatasourceNewWizardPageView({
4541
4453
  }
4542
4454
  ),
4543
4455
  /* @__PURE__ */ jsxRuntime.jsx(
4544
- chunkRWZ2PLMQ_js.FormInput,
4456
+ chunkKZDABEML_js.FormInput,
4545
4457
  {
4546
4458
  label: labels.fieldUsername,
4547
4459
  value: username,
@@ -4553,7 +4465,7 @@ function DatasourceNewWizardPageView({
4553
4465
  }
4554
4466
  ),
4555
4467
  /* @__PURE__ */ jsxRuntime.jsx(
4556
- chunkRWZ2PLMQ_js.FormInput,
4468
+ chunkKZDABEML_js.FormInput,
4557
4469
  {
4558
4470
  label: labels.fieldPassword,
4559
4471
  type: "password",
@@ -4566,7 +4478,7 @@ function DatasourceNewWizardPageView({
4566
4478
  }
4567
4479
  ),
4568
4480
  /* @__PURE__ */ jsxRuntime.jsx(
4569
- chunkRWZ2PLMQ_js.FormInput,
4481
+ chunkKZDABEML_js.FormInput,
4570
4482
  {
4571
4483
  label: labels.fieldSchema,
4572
4484
  value: schema,
@@ -4580,7 +4492,7 @@ function DatasourceNewWizardPageView({
4580
4492
  ] });
4581
4493
  case "connection-string":
4582
4494
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
4583
- chunkRWZ2PLMQ_js.FormInput,
4495
+ chunkKZDABEML_js.FormInput,
4584
4496
  {
4585
4497
  label: labels.fieldConnectionString,
4586
4498
  value: connectionString,
@@ -4595,7 +4507,7 @@ function DatasourceNewWizardPageView({
4595
4507
  case "cloud-bigquery":
4596
4508
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4597
4509
  /* @__PURE__ */ jsxRuntime.jsx(
4598
- chunkRWZ2PLMQ_js.FormInput,
4510
+ chunkKZDABEML_js.FormInput,
4599
4511
  {
4600
4512
  label: labels.fieldProjectId,
4601
4513
  value: projectId,
@@ -4608,7 +4520,7 @@ function DatasourceNewWizardPageView({
4608
4520
  }
4609
4521
  ),
4610
4522
  /* @__PURE__ */ jsxRuntime.jsx(
4611
- chunkRWZ2PLMQ_js.FormInput,
4523
+ chunkKZDABEML_js.FormInput,
4612
4524
  {
4613
4525
  label: labels.fieldDataset,
4614
4526
  value: dataset,
@@ -4621,7 +4533,7 @@ function DatasourceNewWizardPageView({
4621
4533
  }
4622
4534
  ),
4623
4535
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
4624
- chunkRWZ2PLMQ_js.FormInput,
4536
+ chunkKZDABEML_js.FormInput,
4625
4537
  {
4626
4538
  label: labels.fieldKeyFile,
4627
4539
  value: keyFile,
@@ -4636,7 +4548,7 @@ function DatasourceNewWizardPageView({
4636
4548
  case "cloud-snowflake":
4637
4549
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4638
4550
  /* @__PURE__ */ jsxRuntime.jsx(
4639
- chunkRWZ2PLMQ_js.FormInput,
4551
+ chunkKZDABEML_js.FormInput,
4640
4552
  {
4641
4553
  label: labels.fieldAccount,
4642
4554
  value: account,
@@ -4649,7 +4561,7 @@ function DatasourceNewWizardPageView({
4649
4561
  }
4650
4562
  ),
4651
4563
  /* @__PURE__ */ jsxRuntime.jsx(
4652
- chunkRWZ2PLMQ_js.FormInput,
4564
+ chunkKZDABEML_js.FormInput,
4653
4565
  {
4654
4566
  label: labels.fieldWarehouse,
4655
4567
  value: warehouseField,
@@ -4662,7 +4574,7 @@ function DatasourceNewWizardPageView({
4662
4574
  }
4663
4575
  ),
4664
4576
  /* @__PURE__ */ jsxRuntime.jsx(
4665
- chunkRWZ2PLMQ_js.FormInput,
4577
+ chunkKZDABEML_js.FormInput,
4666
4578
  {
4667
4579
  label: labels.fieldDatabase,
4668
4580
  value: database,
@@ -4675,7 +4587,7 @@ function DatasourceNewWizardPageView({
4675
4587
  }
4676
4588
  ),
4677
4589
  /* @__PURE__ */ jsxRuntime.jsx(
4678
- chunkRWZ2PLMQ_js.FormInput,
4590
+ chunkKZDABEML_js.FormInput,
4679
4591
  {
4680
4592
  label: labels.fieldUsername,
4681
4593
  value: username,
@@ -4688,7 +4600,7 @@ function DatasourceNewWizardPageView({
4688
4600
  }
4689
4601
  ),
4690
4602
  /* @__PURE__ */ jsxRuntime.jsx(
4691
- chunkRWZ2PLMQ_js.FormInput,
4603
+ chunkKZDABEML_js.FormInput,
4692
4604
  {
4693
4605
  label: labels.fieldPassword,
4694
4606
  type: "password",
@@ -4701,7 +4613,7 @@ function DatasourceNewWizardPageView({
4701
4613
  }
4702
4614
  ),
4703
4615
  /* @__PURE__ */ jsxRuntime.jsx(
4704
- chunkRWZ2PLMQ_js.FormInput,
4616
+ chunkKZDABEML_js.FormInput,
4705
4617
  {
4706
4618
  label: labels.fieldSchema,
4707
4619
  value: schema,
@@ -4716,7 +4628,7 @@ function DatasourceNewWizardPageView({
4716
4628
  case "cloud-key":
4717
4629
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4718
4630
  /* @__PURE__ */ jsxRuntime.jsx(
4719
- chunkRWZ2PLMQ_js.FormInput,
4631
+ chunkKZDABEML_js.FormInput,
4720
4632
  {
4721
4633
  label: labels.fieldRegion,
4722
4634
  value: region,
@@ -4729,7 +4641,7 @@ function DatasourceNewWizardPageView({
4729
4641
  }
4730
4642
  ),
4731
4643
  /* @__PURE__ */ jsxRuntime.jsx(
4732
- chunkRWZ2PLMQ_js.FormInput,
4644
+ chunkKZDABEML_js.FormInput,
4733
4645
  {
4734
4646
  label: labels.fieldToken,
4735
4647
  type: "password",
@@ -4743,7 +4655,7 @@ function DatasourceNewWizardPageView({
4743
4655
  }
4744
4656
  ),
4745
4657
  /* @__PURE__ */ jsxRuntime.jsx(
4746
- chunkRWZ2PLMQ_js.FormInput,
4658
+ chunkKZDABEML_js.FormInput,
4747
4659
  {
4748
4660
  label: labels.fieldBucket,
4749
4661
  value: bucket,
@@ -4758,7 +4670,7 @@ function DatasourceNewWizardPageView({
4758
4670
  case "vector-key":
4759
4671
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4760
4672
  /* @__PURE__ */ jsxRuntime.jsx(
4761
- chunkRWZ2PLMQ_js.FormInput,
4673
+ chunkKZDABEML_js.FormInput,
4762
4674
  {
4763
4675
  label: labels.fieldApiKey,
4764
4676
  type: "password",
@@ -4772,7 +4684,7 @@ function DatasourceNewWizardPageView({
4772
4684
  }
4773
4685
  ),
4774
4686
  /* @__PURE__ */ jsxRuntime.jsx(
4775
- chunkRWZ2PLMQ_js.FormInput,
4687
+ chunkKZDABEML_js.FormInput,
4776
4688
  {
4777
4689
  label: labels.fieldEnvironment,
4778
4690
  value: environment,
@@ -4785,7 +4697,7 @@ function DatasourceNewWizardPageView({
4785
4697
  }
4786
4698
  ),
4787
4699
  /* @__PURE__ */ jsxRuntime.jsx(
4788
- chunkRWZ2PLMQ_js.FormInput,
4700
+ chunkKZDABEML_js.FormInput,
4789
4701
  {
4790
4702
  label: labels.fieldIndex,
4791
4703
  value: index,
@@ -4801,207 +4713,180 @@ function DatasourceNewWizardPageView({
4801
4713
  }
4802
4714
  function renderStep2() {
4803
4715
  if (!dialectOption) {
4804
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4716
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
4805
4717
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: labels.wizardStep1Subtitle }),
4806
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: () => goToStep(1), children: labels.wizardBack }) })
4718
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: () => goToStep(1), children: labels.wizardBack })
4807
4719
  ] });
4808
4720
  }
4809
- return /* @__PURE__ */ jsxRuntime.jsx(
4810
- chunkRWZ2PLMQ_js.SectionCard,
4811
- {
4812
- variant: "glass",
4813
- header: {
4814
- title: dialectOption.label,
4815
- subtitle: labels.wizardStep2Subtitle,
4816
- icon: category?.icon ? /* @__PURE__ */ jsxRuntime.jsx(category.icon, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-4 w-4" }),
4817
- gradient: category?.gradient
4818
- },
4819
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4820
- /* @__PURE__ */ jsxRuntime.jsx(
4821
- chunkRWZ2PLMQ_js.FormInput,
4822
- {
4823
- label: labels.fieldName,
4824
- value: name,
4825
- onValueChange: (v) => {
4826
- setName(v);
4827
- markTouched();
4828
- },
4829
- placeholder: labels.fieldNamePlaceholder,
4830
- required: true
4831
- }
4832
- ),
4833
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.FormGrid, { children: renderConnectionFields() }),
4834
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
4835
- /* @__PURE__ */ jsxRuntime.jsx(
4836
- chunkRWZ2PLMQ_js.FormToggle,
4837
- {
4838
- checked: ssl,
4839
- onChange: (v) => {
4840
- setSsl(v);
4841
- markTouched();
4842
- },
4843
- label: labels.fieldSsl,
4844
- variant: "inline"
4845
- }
4846
- ),
4847
- /* @__PURE__ */ jsxRuntime.jsx(
4848
- chunkRWZ2PLMQ_js.FormToggle,
4849
- {
4850
- checked: readOnly,
4851
- onChange: (v) => {
4852
- setReadOnly(v);
4853
- markTouched();
4854
- },
4855
- label: labels.fieldReadOnly,
4856
- variant: "inline"
4857
- }
4858
- )
4859
- ] }),
4860
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: labels.fieldReadOnlyHelp }),
4861
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
4862
- /* @__PURE__ */ jsxRuntime.jsx(
4863
- chunkEBARYRSA_js.Button,
4864
- {
4865
- type: "button",
4866
- outline: true,
4867
- onClick: () => void handleTestConnection(),
4868
- disabled: testStatus === "testing",
4869
- children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
4870
- /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.Spinner, { size: "xs" }),
4871
- labels.testing
4872
- ] }) : labels.testConnection
4873
- }
4874
- ),
4875
- testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
4876
- testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkRWZ2PLMQ_js.StatusBadge, { status: "error", label: labels.connectionFailed })
4877
- ] })
4878
- ] })
4879
- }
4880
- );
4721
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4722
+ /* @__PURE__ */ jsxRuntime.jsx(
4723
+ chunkKZDABEML_js.FormInput,
4724
+ {
4725
+ label: labels.fieldName,
4726
+ value: name,
4727
+ onValueChange: (v) => {
4728
+ setName(v);
4729
+ markTouched();
4730
+ },
4731
+ placeholder: labels.fieldNamePlaceholder,
4732
+ required: true
4733
+ }
4734
+ ),
4735
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.FormGrid, { children: renderConnectionFields() }),
4736
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
4737
+ /* @__PURE__ */ jsxRuntime.jsx(
4738
+ chunkKZDABEML_js.FormToggle,
4739
+ {
4740
+ checked: ssl,
4741
+ onChange: (v) => {
4742
+ setSsl(v);
4743
+ markTouched();
4744
+ },
4745
+ label: labels.fieldSsl,
4746
+ variant: "inline"
4747
+ }
4748
+ ),
4749
+ /* @__PURE__ */ jsxRuntime.jsx(
4750
+ chunkKZDABEML_js.FormToggle,
4751
+ {
4752
+ checked: readOnly,
4753
+ onChange: (v) => {
4754
+ setReadOnly(v);
4755
+ markTouched();
4756
+ },
4757
+ label: labels.fieldReadOnly,
4758
+ variant: "inline"
4759
+ }
4760
+ )
4761
+ ] }),
4762
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: labels.fieldReadOnlyHelp }),
4763
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex flex-wrap items-center gap-3 border-t pt-4", children: [
4764
+ /* @__PURE__ */ jsxRuntime.jsx(
4765
+ chunkMXQ2EYG2_js.Button,
4766
+ {
4767
+ type: "button",
4768
+ outline: true,
4769
+ onClick: () => void handleTestConnection(),
4770
+ disabled: testStatus === "testing",
4771
+ children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
4772
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Spinner, { size: "xs" }),
4773
+ labels.testing
4774
+ ] }) : labels.testConnection
4775
+ }
4776
+ ),
4777
+ testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
4778
+ testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.StatusBadge, { status: "error", label: labels.connectionFailed })
4779
+ ] })
4780
+ ] });
4881
4781
  }
4882
4782
  function renderStep3() {
4883
- return /* @__PURE__ */ jsxRuntime.jsx(
4884
- chunkRWZ2PLMQ_js.SectionCard,
4885
- {
4886
- variant: "glass",
4887
- header: {
4888
- title: labels.governanceSectionTitle,
4889
- subtitle: labels.governanceSectionSubtitle
4890
- },
4891
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4892
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
4893
- /* @__PURE__ */ jsxRuntime.jsx(
4894
- chunkRWZ2PLMQ_js.FormInput,
4895
- {
4896
- label: labels.fieldMaxPoolSize,
4897
- type: "number",
4898
- min: 1,
4899
- max: 100,
4900
- value: maxPoolSize,
4901
- onValueChange: (v) => {
4902
- setMaxPoolSize(v);
4903
- markTouched();
4904
- },
4905
- hint: labels.fieldMaxPoolSizeHint
4906
- }
4907
- ),
4908
- /* @__PURE__ */ jsxRuntime.jsx(
4909
- chunkRWZ2PLMQ_js.FormInput,
4910
- {
4911
- label: labels.fieldTimeoutMs,
4912
- type: "number",
4913
- min: 100,
4914
- value: timeoutMs,
4915
- onValueChange: (v) => {
4916
- setTimeoutMs(v);
4917
- markTouched();
4918
- },
4919
- hint: labels.fieldTimeoutMsHint
4920
- }
4921
- )
4922
- ] }),
4923
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4924
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldAllowedTables }),
4925
- /* @__PURE__ */ jsxRuntime.jsx(
4926
- chunkRWZ2PLMQ_js.ChipPicker,
4927
- {
4928
- items: allowedTablesItems,
4929
- selectedIds: allowedTablesSelected,
4930
- onChange: (ids) => {
4931
- setAllowedTablesSelected(ids);
4932
- markTouched();
4933
- },
4934
- onItemsChange: (items) => {
4935
- setAllowedTablesItems(items);
4936
- markTouched();
4937
- },
4938
- allowCustom: true,
4939
- unselectedStyle: allowedTablesStyle,
4940
- showActions: false,
4941
- addPlaceholder: labels.fieldAllowedTablesPlaceholder,
4942
- addAriaLabel: labels.fieldAllowedTables
4943
- }
4944
- ),
4945
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldAllowedTablesHint })
4946
- ] }),
4947
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4948
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldBlockedColumns }),
4949
- /* @__PURE__ */ jsxRuntime.jsx(
4950
- chunkRWZ2PLMQ_js.ChipPicker,
4951
- {
4952
- items: blockedColumnsItems,
4953
- selectedIds: blockedColumnsSelected,
4954
- onChange: (ids) => {
4955
- setBlockedColumnsSelected(ids);
4956
- markTouched();
4957
- },
4958
- onItemsChange: (items) => {
4959
- setBlockedColumnsItems(items);
4960
- markTouched();
4961
- },
4962
- allowCustom: true,
4963
- unselectedStyle: blockedColumnsStyle,
4964
- showActions: false,
4965
- addPlaceholder: labels.fieldBlockedColumnsPlaceholder,
4966
- addAriaLabel: labels.fieldBlockedColumns
4967
- }
4968
- ),
4969
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldBlockedColumnsHint })
4970
- ] }),
4971
- /* @__PURE__ */ jsxRuntime.jsx(
4972
- chunkRWZ2PLMQ_js.FormCheckbox,
4973
- {
4974
- checked: maskPii,
4975
- onChange: (v) => {
4976
- setMaskPii(v);
4977
- markTouched();
4978
- },
4979
- label: labels.fieldMaskPii,
4980
- description: labels.fieldMaskPiiDescription
4981
- }
4982
- )
4983
- ] })
4984
- }
4985
- );
4783
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4784
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
4785
+ /* @__PURE__ */ jsxRuntime.jsx(
4786
+ chunkKZDABEML_js.FormInput,
4787
+ {
4788
+ label: labels.fieldMaxPoolSize,
4789
+ type: "number",
4790
+ min: 1,
4791
+ max: 100,
4792
+ value: maxPoolSize,
4793
+ onValueChange: (v) => {
4794
+ setMaxPoolSize(v);
4795
+ markTouched();
4796
+ },
4797
+ hint: labels.fieldMaxPoolSizeHint
4798
+ }
4799
+ ),
4800
+ /* @__PURE__ */ jsxRuntime.jsx(
4801
+ chunkKZDABEML_js.FormInput,
4802
+ {
4803
+ label: labels.fieldTimeoutMs,
4804
+ type: "number",
4805
+ min: 100,
4806
+ value: timeoutMs,
4807
+ onValueChange: (v) => {
4808
+ setTimeoutMs(v);
4809
+ markTouched();
4810
+ },
4811
+ hint: labels.fieldTimeoutMsHint
4812
+ }
4813
+ )
4814
+ ] }),
4815
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4816
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.fieldAllowedTables }),
4817
+ /* @__PURE__ */ jsxRuntime.jsx(
4818
+ chunkKZDABEML_js.ChipPicker,
4819
+ {
4820
+ items: allowedTablesItems,
4821
+ selectedIds: allowedTablesSelected,
4822
+ onChange: (ids) => {
4823
+ setAllowedTablesSelected(ids);
4824
+ markTouched();
4825
+ },
4826
+ onItemsChange: (items) => {
4827
+ setAllowedTablesItems(items);
4828
+ markTouched();
4829
+ },
4830
+ allowCustom: true,
4831
+ unselectedStyle: allowedTablesStyle,
4832
+ showActions: false,
4833
+ addPlaceholder: labels.fieldAllowedTablesPlaceholder,
4834
+ addAriaLabel: labels.fieldAllowedTables
4835
+ }
4836
+ ),
4837
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldAllowedTablesHint })
4838
+ ] }),
4839
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4840
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.fieldBlockedColumns }),
4841
+ /* @__PURE__ */ jsxRuntime.jsx(
4842
+ chunkKZDABEML_js.ChipPicker,
4843
+ {
4844
+ items: blockedColumnsItems,
4845
+ selectedIds: blockedColumnsSelected,
4846
+ onChange: (ids) => {
4847
+ setBlockedColumnsSelected(ids);
4848
+ markTouched();
4849
+ },
4850
+ onItemsChange: (items) => {
4851
+ setBlockedColumnsItems(items);
4852
+ markTouched();
4853
+ },
4854
+ allowCustom: true,
4855
+ unselectedStyle: blockedColumnsStyle,
4856
+ showActions: false,
4857
+ addPlaceholder: labels.fieldBlockedColumnsPlaceholder,
4858
+ addAriaLabel: labels.fieldBlockedColumns
4859
+ }
4860
+ ),
4861
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldBlockedColumnsHint })
4862
+ ] }),
4863
+ /* @__PURE__ */ jsxRuntime.jsx(
4864
+ chunkKZDABEML_js.FormCheckbox,
4865
+ {
4866
+ checked: maskPii,
4867
+ onChange: (v) => {
4868
+ setMaskPii(v);
4869
+ markTouched();
4870
+ },
4871
+ label: labels.fieldMaskPii,
4872
+ description: labels.fieldMaskPiiDescription
4873
+ }
4874
+ )
4875
+ ] });
4986
4876
  }
4987
4877
  function renderStep4() {
4988
4878
  const categoryLabel = category ? labels[category.labelKey] ?? category.id : labels.reviewNoneValue;
4989
4879
  const dialectLabel = dialectOption?.label ?? labels.reviewNoneValue;
4990
4880
  const allowed = allowedTablesSelected;
4991
4881
  const blocked = blockedColumnsSelected;
4992
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4882
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4993
4883
  /* @__PURE__ */ jsxRuntime.jsx(
4994
- chunkRWZ2PLMQ_js.SectionCard,
4884
+ ReviewBlock2,
4995
4885
  {
4996
- variant: "glass",
4997
- header: {
4998
- title: labels.wizardStep1Title,
4999
- subtitle: labels.wizardStep1Subtitle
5000
- },
5001
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
5002
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5003
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5004
- ] }),
4886
+ stepTitle: labels.wizardStep1Title,
4887
+ stepSubtitle: labels.wizardStep1Subtitle,
4888
+ editLabel: labels.wizardReviewEdit,
4889
+ onEdit: () => goToStep(1),
5005
4890
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5006
4891
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCategoryLabel, value: categoryLabel }),
5007
4892
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewDialectLabel, value: dialectLabel })
@@ -5009,17 +4894,12 @@ function DatasourceNewWizardPageView({
5009
4894
  }
5010
4895
  ),
5011
4896
  /* @__PURE__ */ jsxRuntime.jsx(
5012
- chunkRWZ2PLMQ_js.SectionCard,
4897
+ ReviewBlock2,
5013
4898
  {
5014
- variant: "glass",
5015
- header: {
5016
- title: labels.wizardStep2Title,
5017
- subtitle: labels.wizardStep2Subtitle
5018
- },
5019
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
5020
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5021
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5022
- ] }),
4899
+ stepTitle: labels.wizardStep2Title,
4900
+ stepSubtitle: labels.wizardStep2Subtitle,
4901
+ editLabel: labels.wizardReviewEdit,
4902
+ onEdit: () => goToStep(2),
5023
4903
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5024
4904
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewNameLabel, value: name || labels.reviewNoneValue }),
5025
4905
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCredentialsLabel, value: labels.reviewCredentialsRedacted }),
@@ -5029,17 +4909,12 @@ function DatasourceNewWizardPageView({
5029
4909
  }
5030
4910
  ),
5031
4911
  /* @__PURE__ */ jsxRuntime.jsx(
5032
- chunkRWZ2PLMQ_js.SectionCard,
4912
+ ReviewBlock2,
5033
4913
  {
5034
- variant: "glass",
5035
- header: {
5036
- title: labels.wizardStep3Title,
5037
- subtitle: labels.wizardStep3Subtitle
5038
- },
5039
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
5040
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5041
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5042
- ] }),
4914
+ stepTitle: labels.wizardStep3Title,
4915
+ stepSubtitle: labels.wizardStep3Subtitle,
4916
+ editLabel: labels.wizardReviewEdit,
4917
+ onEdit: () => goToStep(3),
5043
4918
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5044
4919
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewPoolLabel, value: maxPoolSize || labels.reviewNoneValue }),
5045
4920
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewTimeoutLabel, value: timeoutMs ? `${timeoutMs}ms` : labels.reviewNoneValue }),
@@ -5065,14 +4940,14 @@ function DatasourceNewWizardPageView({
5065
4940
  }
5066
4941
  const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : renderStep4();
5067
4942
  const advanceDisabled = !canAdvance(step);
5068
- const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
5069
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
5070
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
5071
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
5072
- step < TOTAL_STEPS2 ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "amber", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "amber", onClick: () => void submit(), disabled: submitting || !dialect || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate })
5073
- ] })
4943
+ const isLast = step === TOTAL_STEPS2;
4944
+ const scrollableStep = step === 1 || step === 4;
4945
+ const bodyClass = scrollableStep ? "p-5 pt-5 sm:p-8 sm:pt-8 max-h-[60vh] overflow-y-auto" : "p-5 pt-5 sm:p-8 sm:pt-8";
4946
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-t pt-4", children: [
4947
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: step === 1 ? cancelWithConfirm : goBack, disabled: submitting, children: step === 1 ? labels.wizardCancel : labels.wizardBack }),
4948
+ isLast ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: () => void submit(), disabled: submitting || !dialect || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext })
5074
4949
  ] });
5075
- const content = /* @__PURE__ */ jsxRuntime.jsxs(
4950
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5076
4951
  "form",
5077
4952
  {
5078
4953
  onSubmit: (e) => {
@@ -5082,20 +4957,38 @@ function DatasourceNewWizardPageView({
5082
4957
  },
5083
4958
  className: "space-y-4",
5084
4959
  children: [
5085
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
4960
+ hero,
4961
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Card, { variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.CardContent, { className: bodyClass, children: stepBody }) }),
5086
4962
  footer
5087
4963
  ]
5088
4964
  }
5089
4965
  );
5090
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5091
- hero,
5092
- content
5093
- ] });
5094
4966
  }
5095
4967
  function ReviewRow2({ label, value }) {
5096
4968
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
5097
- /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-gray-400 dark:text-gray-500", children: label }),
5098
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
4969
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-slate-400 dark:text-slate-500", children: label }),
4970
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-slate-900 dark:text-white", children: value })
4971
+ ] });
4972
+ }
4973
+ function ReviewBlock2({
4974
+ stepTitle,
4975
+ stepSubtitle,
4976
+ editLabel,
4977
+ onEdit,
4978
+ children
4979
+ }) {
4980
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "border-b liquid-divider pb-4 last:border-b-0 last:pb-0", children: [
4981
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-2 flex items-start justify-between gap-3", children: [
4982
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
4983
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "truncate text-sm font-semibold text-slate-900 dark:text-white", children: stepTitle }),
4984
+ stepSubtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: stepSubtitle })
4985
+ ] }),
4986
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: onEdit, children: [
4987
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4988
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: editLabel })
4989
+ ] })
4990
+ ] }),
4991
+ children
5099
4992
  ] });
5100
4993
  }
5101
4994
  async function simulateTest() {
@@ -5218,9 +5111,9 @@ function RuleNewWizardPageView({
5218
5111
  text: "text-fuchsia-700 dark:text-fuchsia-300"
5219
5112
  };
5220
5113
  const [combinator, setCombinator] = react.useState("and");
5221
- const [condition, setCondition] = react.useState(chunkUPWJRCAD_js.defaultRuleCondition());
5114
+ const [condition, setCondition] = react.useState(chunkKRS2CLPR_js.defaultRuleCondition());
5222
5115
  const [actionTileId, setActionTileId] = react.useState("");
5223
- const [action, setAction] = react.useState(chunkUPWJRCAD_js.defaultRuleAction());
5116
+ const [action, setAction] = react.useState(chunkKRS2CLPR_js.defaultRuleAction());
5224
5117
  const [validFromDate, setValidFromDate] = react.useState(null);
5225
5118
  const [validFromTime, setValidFromTime] = react.useState(null);
5226
5119
  const [validUntilDate, setValidUntilDate] = react.useState(null);
@@ -5347,17 +5240,25 @@ function RuleNewWizardPageView({
5347
5240
  id: String(idx + 1),
5348
5241
  title
5349
5242
  }));
5350
- const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS3));
5351
5243
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
5352
- chunkRWZ2PLMQ_js.HeroSection,
5244
+ chunkKZDABEML_js.HeroSection,
5353
5245
  {
5354
5246
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
5355
- label: counter,
5356
- title: labels.pageTitle,
5247
+ label: labels.pageTitle,
5248
+ title: stepTitles[step - 1] ?? labels.pageTitle,
5357
5249
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
5358
5250
  gradient: "from-fuchsia-500 to-purple-700",
5251
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
5252
+ chunkMXQ2EYG2_js.IconButton,
5253
+ {
5254
+ label: labels.wizardCancel,
5255
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-5 w-5" }),
5256
+ variant: "ghost",
5257
+ onClick: cancelWithConfirm
5258
+ }
5259
+ ),
5359
5260
  children: /* @__PURE__ */ jsxRuntime.jsx(
5360
- chunkRWZ2PLMQ_js.StepIndicator,
5261
+ chunkKZDABEML_js.StepIndicator,
5361
5262
  {
5362
5263
  accent: "violet",
5363
5264
  currentStep: step - 1,
@@ -5369,399 +5270,346 @@ function RuleNewWizardPageView({
5369
5270
  }
5370
5271
  );
5371
5272
  function renderStep1() {
5372
- return /* @__PURE__ */ jsxRuntime.jsx(
5373
- chunkRWZ2PLMQ_js.SectionCard,
5374
- {
5375
- variant: "glass",
5376
- header: {
5377
- title: labels.wizardStep1Title,
5378
- subtitle: labels.wizardStep1Subtitle
5379
- },
5380
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5381
- /* @__PURE__ */ jsxRuntime.jsx(
5382
- chunkRWZ2PLMQ_js.FormInput,
5383
- {
5384
- label: labels.nameLabel,
5385
- value: name,
5386
- onValueChange: (v) => {
5387
- setName(v);
5388
- markTouched();
5389
- },
5390
- placeholder: labels.namePlaceholder,
5391
- required: true
5392
- }
5393
- ),
5394
- /* @__PURE__ */ jsxRuntime.jsx(
5395
- chunkRWZ2PLMQ_js.FormTextarea,
5396
- {
5397
- label: labels.descriptionLabel,
5398
- value: description,
5399
- onValueChange: (v) => {
5400
- setDescription(v);
5401
- markTouched();
5402
- },
5403
- placeholder: labels.descriptionPlaceholder,
5404
- rows: 3
5405
- }
5406
- ),
5407
- /* @__PURE__ */ jsxRuntime.jsx(
5408
- RangeSliderField2,
5409
- {
5410
- sliderId: "wizard-rule-priority",
5411
- label: labels.priorityLabel,
5412
- value: priority,
5413
- onChange: (v) => {
5414
- setPriority(Math.round(v));
5415
- markTouched();
5416
- },
5417
- min: 0,
5418
- max: 100,
5419
- step: 1,
5420
- trackGradient: "linear-gradient(90deg, #10b981, #38bdf8 33%, #f59e0b 66%, #f43f5e)",
5421
- formatValue: (v) => String(Math.round(v)),
5422
- zones: [
5423
- { label: labels.priorityLow, max: 25, color: "text-emerald-500", thumbColor: "#10b981" },
5424
- { label: labels.priorityNormal, max: 50, color: "text-sky-500", thumbColor: "#38bdf8" },
5425
- { label: labels.priorityHigh, max: 75, color: "text-amber-500", thumbColor: "#f59e0b" },
5426
- { label: labels.priorityCritical, max: 100, color: "text-rose-500", thumbColor: "#f43f5e" }
5427
- ]
5428
- }
5429
- ),
5430
- /* @__PURE__ */ jsxRuntime.jsx(
5431
- chunkRWZ2PLMQ_js.FormToggle,
5432
- {
5433
- checked: enabled,
5434
- onChange: (v) => {
5435
- setEnabled(v);
5436
- markTouched();
5437
- },
5438
- label: labels.enabledLabel,
5439
- variant: "card"
5440
- }
5441
- )
5442
- ] })
5443
- }
5444
- );
5273
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5274
+ /* @__PURE__ */ jsxRuntime.jsx(
5275
+ chunkKZDABEML_js.FormInput,
5276
+ {
5277
+ label: labels.nameLabel,
5278
+ value: name,
5279
+ onValueChange: (v) => {
5280
+ setName(v);
5281
+ markTouched();
5282
+ },
5283
+ placeholder: labels.namePlaceholder,
5284
+ required: true
5285
+ }
5286
+ ),
5287
+ /* @__PURE__ */ jsxRuntime.jsx(
5288
+ chunkKZDABEML_js.FormTextarea,
5289
+ {
5290
+ label: labels.descriptionLabel,
5291
+ value: description,
5292
+ onValueChange: (v) => {
5293
+ setDescription(v);
5294
+ markTouched();
5295
+ },
5296
+ placeholder: labels.descriptionPlaceholder,
5297
+ rows: 3
5298
+ }
5299
+ ),
5300
+ /* @__PURE__ */ jsxRuntime.jsx(
5301
+ RangeSliderField2,
5302
+ {
5303
+ sliderId: "wizard-rule-priority",
5304
+ label: labels.priorityLabel,
5305
+ value: priority,
5306
+ onChange: (v) => {
5307
+ setPriority(Math.round(v));
5308
+ markTouched();
5309
+ },
5310
+ min: 0,
5311
+ max: 100,
5312
+ step: 1,
5313
+ trackGradient: "linear-gradient(90deg, #10b981, #38bdf8 33%, #f59e0b 66%, #f43f5e)",
5314
+ formatValue: (v) => String(Math.round(v)),
5315
+ zones: [
5316
+ { label: labels.priorityLow, max: 25, color: "text-emerald-500", thumbColor: "#10b981" },
5317
+ { label: labels.priorityNormal, max: 50, color: "text-sky-500", thumbColor: "#38bdf8" },
5318
+ { label: labels.priorityHigh, max: 75, color: "text-amber-500", thumbColor: "#f59e0b" },
5319
+ { label: labels.priorityCritical, max: 100, color: "text-rose-500", thumbColor: "#f43f5e" }
5320
+ ]
5321
+ }
5322
+ ),
5323
+ /* @__PURE__ */ jsxRuntime.jsx(
5324
+ chunkKZDABEML_js.FormToggle,
5325
+ {
5326
+ checked: enabled,
5327
+ onChange: (v) => {
5328
+ setEnabled(v);
5329
+ markTouched();
5330
+ },
5331
+ label: labels.enabledLabel,
5332
+ variant: "card"
5333
+ }
5334
+ )
5335
+ ] });
5445
5336
  }
5446
5337
  function renderStep2() {
5447
- return /* @__PURE__ */ jsxRuntime.jsx(
5448
- chunkRWZ2PLMQ_js.SectionCard,
5449
- {
5450
- variant: "glass",
5451
- header: {
5452
- title: labels.conditionSectionTitle,
5453
- subtitle: labels.conditionSectionSubtitle
5454
- },
5455
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5456
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5457
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.combinatorLabel }),
5458
- /* @__PURE__ */ jsxRuntime.jsx(
5459
- chunkRWZ2PLMQ_js.SegmentedControl,
5460
- {
5461
- segments: [
5462
- { value: "and", label: labels.combinatorAnd },
5463
- { value: "or", label: labels.combinatorOr },
5464
- { value: "not", label: labels.combinatorNot }
5465
- ],
5466
- value: combinator,
5467
- onChange: (v) => {
5468
- setCombinator(v);
5469
- markTouched();
5470
- },
5471
- size: "sm"
5472
- }
5473
- )
5474
- ] }),
5475
- /* @__PURE__ */ jsxRuntime.jsx(
5476
- chunkUPWJRCAD_js.RuleConditionBuilder,
5477
- {
5478
- value: condition,
5479
- onChange: (next) => {
5480
- setCondition(next);
5481
- markTouched();
5482
- }
5483
- }
5484
- )
5485
- ] })
5486
- }
5487
- );
5338
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5339
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5340
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.combinatorLabel }),
5341
+ /* @__PURE__ */ jsxRuntime.jsx(
5342
+ chunkKZDABEML_js.SegmentedControl,
5343
+ {
5344
+ segments: [
5345
+ { value: "and", label: labels.combinatorAnd },
5346
+ { value: "or", label: labels.combinatorOr },
5347
+ { value: "not", label: labels.combinatorNot }
5348
+ ],
5349
+ value: combinator,
5350
+ onChange: (v) => {
5351
+ setCombinator(v);
5352
+ markTouched();
5353
+ },
5354
+ size: "sm"
5355
+ }
5356
+ )
5357
+ ] }),
5358
+ /* @__PURE__ */ jsxRuntime.jsx(
5359
+ chunkKRS2CLPR_js.RuleConditionBuilder,
5360
+ {
5361
+ value: condition,
5362
+ onChange: (next) => {
5363
+ setCondition(next);
5364
+ markTouched();
5365
+ }
5366
+ }
5367
+ )
5368
+ ] });
5488
5369
  }
5489
5370
  function renderStep3() {
5490
- const selectedTile = ACTION_TILES.find((t) => t.id === actionTileId) ?? null;
5491
- return /* @__PURE__ */ jsxRuntime.jsx(
5492
- chunkRWZ2PLMQ_js.SectionCard,
5493
- {
5494
- variant: "glass",
5495
- header: {
5496
- title: labels.actionSectionTitle,
5497
- subtitle: labels.actionSectionSubtitle
5498
- },
5499
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
5500
- /* @__PURE__ */ jsxRuntime.jsx(
5501
- "div",
5502
- {
5503
- role: "radiogroup",
5504
- "aria-label": labels.actionSectionTitle,
5505
- className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
5506
- children: ACTION_TILES.map((tile) => {
5507
- const Icon = tile.icon;
5508
- const selected = tile.id === actionTileId;
5509
- const label = labels[tile.labelKey] ?? tile.id;
5510
- const description2 = labels[tile.descriptionKey] ?? "";
5511
- return /* @__PURE__ */ jsxRuntime.jsx(
5512
- chunkRWZ2PLMQ_js.FilterTileButton,
5513
- {
5514
- isActive: selected,
5515
- color: tile.color,
5516
- icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-5 w-5" }),
5517
- label,
5518
- count: description2,
5519
- onClick: () => {
5520
- setActionTileId(tile.id);
5521
- markTouched();
5522
- }
5523
- },
5524
- tile.id
5525
- );
5526
- })
5527
- }
5528
- ),
5529
- selectedTile && /* @__PURE__ */ jsxRuntime.jsx(
5530
- chunkRWZ2PLMQ_js.SectionCard,
5531
- {
5532
- variant: "glass",
5533
- header: {
5534
- title: labels[selectedTile.labelKey] ?? selectedTile.id,
5535
- subtitle: labels.actionConfigSubtitle
5536
- },
5537
- children: /* @__PURE__ */ jsxRuntime.jsx(
5538
- chunkUPWJRCAD_js.RuleActionBuilder,
5539
- {
5540
- value: action,
5541
- onChange: (next) => {
5542
- setAction(next);
5543
- markTouched();
5544
- }
5371
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
5372
+ /* @__PURE__ */ jsxRuntime.jsx(
5373
+ "div",
5374
+ {
5375
+ role: "radiogroup",
5376
+ "aria-label": labels.actionSectionTitle,
5377
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
5378
+ children: ACTION_TILES.map((tile) => {
5379
+ const Icon = tile.icon;
5380
+ const selected = tile.id === actionTileId;
5381
+ const label = labels[tile.labelKey] ?? tile.id;
5382
+ const description2 = labels[tile.descriptionKey] ?? "";
5383
+ return /* @__PURE__ */ jsxRuntime.jsx(
5384
+ chunkKZDABEML_js.FilterTileButton,
5385
+ {
5386
+ isActive: selected,
5387
+ color: tile.color,
5388
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-5 w-5" }),
5389
+ label,
5390
+ count: description2,
5391
+ onClick: () => {
5392
+ setActionTileId(tile.id);
5393
+ markTouched();
5545
5394
  }
5546
- )
5395
+ },
5396
+ tile.id
5397
+ );
5398
+ })
5399
+ }
5400
+ ),
5401
+ actionTileId && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t liquid-divider pt-4", children: [
5402
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-slate-500 dark:text-slate-400", children: labels.actionConfigSubtitle }),
5403
+ /* @__PURE__ */ jsxRuntime.jsx(
5404
+ chunkKRS2CLPR_js.RuleActionBuilder,
5405
+ {
5406
+ value: action,
5407
+ onChange: (next) => {
5408
+ setAction(next);
5409
+ markTouched();
5547
5410
  }
5548
- )
5549
- ] })
5550
- }
5551
- );
5411
+ }
5412
+ )
5413
+ ] })
5414
+ ] });
5552
5415
  }
5553
5416
  function renderStep4() {
5554
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(
5555
- chunkRWZ2PLMQ_js.SectionCard,
5556
- {
5557
- variant: "glass",
5558
- header: {
5559
- title: labels.scheduleSectionTitle,
5560
- subtitle: labels.scheduleSectionSubtitle
5561
- },
5562
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
5563
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRWZ2PLMQ_js.FormGrid, { children: [
5564
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
5565
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
5566
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
5567
- /* @__PURE__ */ jsxRuntime.jsx(
5568
- chunkRWZ2PLMQ_js.DatePicker,
5569
- {
5570
- value: validFromDate,
5571
- onChange: (d) => {
5572
- setValidFromDate(d);
5573
- markTouched();
5574
- },
5575
- placeholder: labels.validFromDateLabel
5576
- }
5577
- ),
5578
- /* @__PURE__ */ jsxRuntime.jsx(
5579
- chunkRWZ2PLMQ_js.TimePicker,
5580
- {
5581
- value: validFromTime,
5582
- onChange: (t) => {
5583
- setValidFromTime(t);
5584
- markTouched();
5585
- },
5586
- placeholder: labels.validFromTimeLabel
5587
- }
5588
- )
5589
- ] })
5590
- ] }),
5591
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
5592
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
5593
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
5594
- /* @__PURE__ */ jsxRuntime.jsx(
5595
- chunkRWZ2PLMQ_js.DatePicker,
5596
- {
5597
- value: validUntilDate,
5598
- onChange: (d) => {
5599
- setValidUntilDate(d);
5600
- markTouched();
5601
- },
5602
- placeholder: labels.validUntilDateLabel
5603
- }
5604
- ),
5605
- /* @__PURE__ */ jsxRuntime.jsx(
5606
- chunkRWZ2PLMQ_js.TimePicker,
5607
- {
5608
- value: validUntilTime,
5609
- onChange: (t) => {
5610
- setValidUntilTime(t);
5611
- markTouched();
5612
- },
5613
- placeholder: labels.validUntilTimeLabel
5614
- }
5615
- )
5616
- ] })
5617
- ] })
5618
- ] }),
5619
- /* @__PURE__ */ jsxRuntime.jsx(
5620
- chunkRWZ2PLMQ_js.FormCheckbox,
5621
- {
5622
- checked: noExpiry,
5623
- onChange: (v) => {
5624
- setNoExpiry(v);
5625
- markTouched();
5626
- },
5627
- label: labels.noExpiryLabel,
5628
- description: labels.noExpiryDescription
5629
- }
5630
- ),
5631
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5632
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.statusLabel }),
5417
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
5418
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
5419
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
5420
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
5421
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
5633
5422
  /* @__PURE__ */ jsxRuntime.jsx(
5634
- chunkRWZ2PLMQ_js.SegmentedControl,
5423
+ chunkKZDABEML_js.DatePicker,
5635
5424
  {
5636
- segments: [
5637
- { value: "active", label: labels.statusActive },
5638
- { value: "paused", label: labels.statusPaused },
5639
- { value: "archived", label: labels.statusArchived }
5640
- ],
5641
- value: status,
5642
- onChange: (v) => {
5643
- setStatus(v);
5425
+ value: validFromDate,
5426
+ onChange: (d) => {
5427
+ setValidFromDate(d);
5644
5428
  markTouched();
5645
5429
  },
5646
- size: "sm"
5430
+ placeholder: labels.validFromDateLabel
5647
5431
  }
5648
- )
5649
- ] }),
5650
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
5651
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.tagsLabel }),
5432
+ ),
5652
5433
  /* @__PURE__ */ jsxRuntime.jsx(
5653
- chunkRWZ2PLMQ_js.ChipPicker,
5434
+ chunkKZDABEML_js.TimePicker,
5654
5435
  {
5655
- items: tagsItems,
5656
- selectedIds: tagsSelected,
5657
- onChange: (ids) => {
5658
- setTagsSelected(ids);
5436
+ value: validFromTime,
5437
+ onChange: (t) => {
5438
+ setValidFromTime(t);
5659
5439
  markTouched();
5660
5440
  },
5661
- onItemsChange: (items) => {
5662
- setTagsItems(items);
5441
+ placeholder: labels.validFromTimeLabel
5442
+ }
5443
+ )
5444
+ ] })
5445
+ ] }),
5446
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
5447
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
5448
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
5449
+ /* @__PURE__ */ jsxRuntime.jsx(
5450
+ chunkKZDABEML_js.DatePicker,
5451
+ {
5452
+ value: validUntilDate,
5453
+ onChange: (d) => {
5454
+ setValidUntilDate(d);
5663
5455
  markTouched();
5664
5456
  },
5665
- allowCustom: true,
5666
- unselectedStyle: tagsStyle,
5667
- showActions: false,
5668
- addPlaceholder: labels.tagsPlaceholder,
5669
- addAriaLabel: labels.tagsLabel
5457
+ placeholder: labels.validUntilDateLabel
5670
5458
  }
5671
5459
  ),
5672
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.tagsHint })
5673
- ] }),
5674
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5675
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.recurrenceLabel }),
5676
5460
  /* @__PURE__ */ jsxRuntime.jsx(
5677
- chunkRWZ2PLMQ_js.SegmentedControl,
5461
+ chunkKZDABEML_js.TimePicker,
5678
5462
  {
5679
- segments: [
5680
- { value: "one-off", label: labels.recurrenceOneOff },
5681
- { value: "cron", label: labels.recurrenceCron },
5682
- { value: "recurring", label: labels.recurrenceRecurring }
5683
- ],
5684
- value: recurrence,
5685
- onChange: (v) => {
5686
- setRecurrence(v);
5463
+ value: validUntilTime,
5464
+ onChange: (t) => {
5465
+ setValidUntilTime(t);
5687
5466
  markTouched();
5688
5467
  },
5689
- size: "sm"
5468
+ placeholder: labels.validUntilTimeLabel
5690
5469
  }
5691
5470
  )
5692
- ] }),
5693
- recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
5694
- chunkRWZ2PLMQ_js.FormInput,
5471
+ ] })
5472
+ ] })
5473
+ ] }),
5474
+ /* @__PURE__ */ jsxRuntime.jsx(
5475
+ chunkKZDABEML_js.FormCheckbox,
5476
+ {
5477
+ checked: noExpiry,
5478
+ onChange: (v) => {
5479
+ setNoExpiry(v);
5480
+ markTouched();
5481
+ },
5482
+ label: labels.noExpiryLabel,
5483
+ description: labels.noExpiryDescription
5484
+ }
5485
+ ),
5486
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5487
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.statusLabel }),
5488
+ /* @__PURE__ */ jsxRuntime.jsx(
5489
+ chunkKZDABEML_js.SegmentedControl,
5490
+ {
5491
+ segments: [
5492
+ { value: "active", label: labels.statusActive },
5493
+ { value: "paused", label: labels.statusPaused },
5494
+ { value: "archived", label: labels.statusArchived }
5495
+ ],
5496
+ value: status,
5497
+ onChange: (v) => {
5498
+ setStatus(v);
5499
+ markTouched();
5500
+ },
5501
+ size: "sm"
5502
+ }
5503
+ )
5504
+ ] }),
5505
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
5506
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.tagsLabel }),
5507
+ /* @__PURE__ */ jsxRuntime.jsx(
5508
+ chunkKZDABEML_js.ChipPicker,
5509
+ {
5510
+ items: tagsItems,
5511
+ selectedIds: tagsSelected,
5512
+ onChange: (ids) => {
5513
+ setTagsSelected(ids);
5514
+ markTouched();
5515
+ },
5516
+ onItemsChange: (items) => {
5517
+ setTagsItems(items);
5518
+ markTouched();
5519
+ },
5520
+ allowCustom: true,
5521
+ unselectedStyle: tagsStyle,
5522
+ showActions: false,
5523
+ addPlaceholder: labels.tagsPlaceholder,
5524
+ addAriaLabel: labels.tagsLabel
5525
+ }
5526
+ ),
5527
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.tagsHint })
5528
+ ] }),
5529
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5530
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.recurrenceLabel }),
5531
+ /* @__PURE__ */ jsxRuntime.jsx(
5532
+ chunkKZDABEML_js.SegmentedControl,
5533
+ {
5534
+ segments: [
5535
+ { value: "one-off", label: labels.recurrenceOneOff },
5536
+ { value: "cron", label: labels.recurrenceCron },
5537
+ { value: "recurring", label: labels.recurrenceRecurring }
5538
+ ],
5539
+ value: recurrence,
5540
+ onChange: (v) => {
5541
+ setRecurrence(v);
5542
+ markTouched();
5543
+ },
5544
+ size: "sm"
5545
+ }
5546
+ )
5547
+ ] }),
5548
+ recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
5549
+ chunkKZDABEML_js.FormInput,
5550
+ {
5551
+ label: labels.cronExpressionLabel,
5552
+ value: cronExpression,
5553
+ onValueChange: (v) => {
5554
+ setCronExpression(v);
5555
+ markTouched();
5556
+ },
5557
+ placeholder: labels.cronExpressionPlaceholder,
5558
+ hint: labels.cronExpressionHint
5559
+ }
5560
+ ),
5561
+ recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
5562
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5563
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.weekdaysLabel }),
5564
+ /* @__PURE__ */ jsxRuntime.jsx(
5565
+ chunkKZDABEML_js.ChipPicker,
5695
5566
  {
5696
- label: labels.cronExpressionLabel,
5697
- value: cronExpression,
5698
- onValueChange: (v) => {
5699
- setCronExpression(v);
5567
+ items: WEEKDAYS.map((d) => ({
5568
+ id: d.id,
5569
+ name: labels[d.labelKey] ?? d.id,
5570
+ style: {
5571
+ bg: "bg-fuchsia-500/15",
5572
+ text: "text-fuchsia-700 dark:text-fuchsia-300"
5573
+ }
5574
+ })),
5575
+ selectedIds: weekdays,
5576
+ onChange: (ids) => {
5577
+ setWeekdays(ids);
5700
5578
  markTouched();
5701
5579
  },
5702
- placeholder: labels.cronExpressionPlaceholder,
5703
- hint: labels.cronExpressionHint
5580
+ showActions: false
5704
5581
  }
5705
- ),
5706
- recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
5707
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5708
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.weekdaysLabel }),
5709
- /* @__PURE__ */ jsxRuntime.jsx(
5710
- chunkRWZ2PLMQ_js.ChipPicker,
5711
- {
5712
- items: WEEKDAYS.map((d) => ({
5713
- id: d.id,
5714
- name: labels[d.labelKey] ?? d.id,
5715
- style: {
5716
- bg: "bg-fuchsia-500/15",
5717
- text: "text-fuchsia-700 dark:text-fuchsia-300"
5718
- }
5719
- })),
5720
- selectedIds: weekdays,
5721
- onChange: (ids) => {
5722
- setWeekdays(ids);
5723
- markTouched();
5724
- },
5725
- showActions: false
5726
- }
5727
- )
5728
- ] }),
5729
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5730
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.timeOfDayLabel }),
5731
- /* @__PURE__ */ jsxRuntime.jsx(
5732
- chunkRWZ2PLMQ_js.TimePicker,
5733
- {
5734
- value: recurringTime,
5735
- onChange: (t) => {
5736
- setRecurringTime(t);
5737
- markTouched();
5738
- },
5739
- placeholder: labels.timeOfDayLabel
5740
- }
5741
- )
5742
- ] })
5743
- ] })
5582
+ )
5583
+ ] }),
5584
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5585
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.timeOfDayLabel }),
5586
+ /* @__PURE__ */ jsxRuntime.jsx(
5587
+ chunkKZDABEML_js.TimePicker,
5588
+ {
5589
+ value: recurringTime,
5590
+ onChange: (t) => {
5591
+ setRecurringTime(t);
5592
+ markTouched();
5593
+ },
5594
+ placeholder: labels.timeOfDayLabel
5595
+ }
5596
+ )
5744
5597
  ] })
5745
- }
5746
- ) });
5598
+ ] })
5599
+ ] });
5747
5600
  }
5748
5601
  function renderStep5() {
5749
5602
  const payload = buildPayload();
5750
5603
  const conditionSentence = humanReadableCondition(payload.condition, labels);
5751
5604
  const actionSentence = humanReadableAction(payload.action, labels, ACTION_TILES, actionTileId);
5752
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5605
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
5753
5606
  /* @__PURE__ */ jsxRuntime.jsx(
5754
- chunkRWZ2PLMQ_js.SectionCard,
5607
+ ReviewBlock3,
5755
5608
  {
5756
- variant: "glass",
5757
- header: {
5758
- title: labels.wizardStep1Title,
5759
- subtitle: labels.wizardStep1Subtitle
5760
- },
5761
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
5762
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5763
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5764
- ] }),
5609
+ stepTitle: labels.wizardStep1Title,
5610
+ stepSubtitle: labels.wizardStep1Subtitle,
5611
+ editLabel: labels.wizardReviewEdit,
5612
+ onEdit: () => goToStep(1),
5765
5613
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5766
5614
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewNameLabel, value: payload.name }),
5767
5615
  /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewPriorityLabel, value: String(payload.priority) }),
@@ -5777,54 +5625,35 @@ function RuleNewWizardPageView({
5777
5625
  }
5778
5626
  ),
5779
5627
  /* @__PURE__ */ jsxRuntime.jsxs(
5780
- chunkRWZ2PLMQ_js.SectionCard,
5628
+ ReviewBlock3,
5781
5629
  {
5782
- variant: "glass",
5783
- header: {
5784
- title: labels.wizardStep2Title,
5785
- subtitle: labels.wizardStep2Subtitle
5786
- },
5787
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
5788
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5789
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5790
- ] }),
5630
+ stepTitle: labels.wizardStep2Title,
5631
+ stepSubtitle: labels.wizardStep2Subtitle,
5632
+ editLabel: labels.wizardReviewEdit,
5633
+ onEdit: () => goToStep(2),
5791
5634
  children: [
5792
5635
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: conditionSentence }),
5793
- /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewCombinatorLabel, value: combinator.toUpperCase() }),
5794
- /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.condition, null, 2) })
5636
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewCombinatorLabel, value: combinator.toUpperCase() })
5795
5637
  ]
5796
5638
  }
5797
5639
  ),
5798
- /* @__PURE__ */ jsxRuntime.jsxs(
5799
- chunkRWZ2PLMQ_js.SectionCard,
5640
+ /* @__PURE__ */ jsxRuntime.jsx(
5641
+ ReviewBlock3,
5800
5642
  {
5801
- variant: "glass",
5802
- header: {
5803
- title: labels.wizardStep3Title,
5804
- subtitle: labels.wizardStep3Subtitle
5805
- },
5806
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
5807
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5808
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5809
- ] }),
5810
- children: [
5811
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: actionSentence }),
5812
- /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.action, null, 2) })
5813
- ]
5643
+ stepTitle: labels.wizardStep3Title,
5644
+ stepSubtitle: labels.wizardStep3Subtitle,
5645
+ editLabel: labels.wizardReviewEdit,
5646
+ onEdit: () => goToStep(3),
5647
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: actionSentence })
5814
5648
  }
5815
5649
  ),
5816
5650
  /* @__PURE__ */ jsxRuntime.jsx(
5817
- chunkRWZ2PLMQ_js.SectionCard,
5651
+ ReviewBlock3,
5818
5652
  {
5819
- variant: "glass",
5820
- header: {
5821
- title: labels.wizardStep4Title,
5822
- subtitle: labels.wizardStep4Subtitle
5823
- },
5824
- actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkEBARYRSA_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(4), children: [
5825
- /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5826
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5827
- ] }),
5653
+ stepTitle: labels.wizardStep4Title,
5654
+ stepSubtitle: labels.wizardStep4Subtitle,
5655
+ editLabel: labels.wizardReviewEdit,
5656
+ onEdit: () => goToStep(4),
5828
5657
  children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5829
5658
  /* @__PURE__ */ jsxRuntime.jsx(
5830
5659
  ReviewRow3,
@@ -5856,23 +5685,23 @@ function RuleNewWizardPageView({
5856
5685
  }
5857
5686
  const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : step === 4 ? renderStep4() : renderStep5();
5858
5687
  const advanceDisabled = !canAdvance(step);
5859
- const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
5860
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
5861
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
5862
- /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
5863
- step < TOTAL_STEPS3 ? /* @__PURE__ */ jsxRuntime.jsx(chunkEBARYRSA_js.Button, { type: "button", color: "fuchsia", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(
5864
- chunkEBARYRSA_js.Button,
5865
- {
5866
- type: "button",
5867
- color: "fuchsia",
5868
- onClick: () => void submit(),
5869
- disabled: submitting || !name.trim() || !actionTileId,
5870
- children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate
5871
- }
5872
- )
5873
- ] })
5688
+ const isLast = step === TOTAL_STEPS3;
5689
+ const scrollableStep = step === 2 || step === 3 || step === 4 || step === 5;
5690
+ const bodyClass = scrollableStep ? "p-5 pt-5 sm:p-8 sm:pt-8 max-h-[60vh] overflow-y-auto" : "p-5 pt-5 sm:p-8 sm:pt-8";
5691
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-t pt-4", children: [
5692
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: step === 1 ? cancelWithConfirm : goBack, disabled: submitting, children: step === 1 ? labels.wizardCancel : labels.wizardBack }),
5693
+ isLast ? /* @__PURE__ */ jsxRuntime.jsx(
5694
+ chunkMXQ2EYG2_js.Button,
5695
+ {
5696
+ type: "button",
5697
+ color: "ios-glass-blue",
5698
+ onClick: () => void submit(),
5699
+ disabled: submitting || !name.trim() || !actionTileId,
5700
+ children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate
5701
+ }
5702
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext })
5874
5703
  ] });
5875
- const content = /* @__PURE__ */ jsxRuntime.jsxs(
5704
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5876
5705
  "form",
5877
5706
  {
5878
5707
  onSubmit: (e) => {
@@ -5882,15 +5711,12 @@ function RuleNewWizardPageView({
5882
5711
  },
5883
5712
  className: "space-y-4",
5884
5713
  children: [
5885
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
5714
+ hero,
5715
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Card, { variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.CardContent, { className: bodyClass, children: stepBody }) }),
5886
5716
  footer
5887
5717
  ]
5888
5718
  }
5889
5719
  );
5890
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5891
- hero,
5892
- content
5893
- ] });
5894
5720
  }
5895
5721
  function ReviewRow3({ label, value }) {
5896
5722
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
@@ -5898,6 +5724,27 @@ function ReviewRow3({ label, value }) {
5898
5724
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 whitespace-pre-wrap break-words text-xs font-semibold text-slate-900 dark:text-white", children: value })
5899
5725
  ] });
5900
5726
  }
5727
+ function ReviewBlock3({
5728
+ stepTitle,
5729
+ stepSubtitle,
5730
+ editLabel,
5731
+ onEdit,
5732
+ children
5733
+ }) {
5734
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "border-b liquid-divider pb-4 last:border-b-0 last:pb-0", children: [
5735
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-2 flex items-start justify-between gap-3", children: [
5736
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
5737
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "truncate text-sm font-semibold text-slate-900 dark:text-white", children: stepTitle }),
5738
+ stepSubtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: stepSubtitle })
5739
+ ] }),
5740
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: onEdit, children: [
5741
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5742
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: editLabel })
5743
+ ] })
5744
+ ] }),
5745
+ children
5746
+ ] });
5747
+ }
5901
5748
  function pad(n) {
5902
5749
  return String(n).padStart(2, "0");
5903
5750
  }
@@ -5945,35 +5792,510 @@ function humanReadableAction(action, labels, tiles, actionTileId) {
5945
5792
  const paramSummary = action.params ? Object.entries(action.params).slice(0, 3).map(([k, v]) => `${k}=${String(v)}`).join(", ") : "";
5946
5793
  return paramSummary ? `${tileLabel} \u2014 ${paramSummary}` : tileLabel;
5947
5794
  }
5795
+ function AgentNewModal({ open, onClose, ...wizardProps }) {
5796
+ return /* @__PURE__ */ jsxRuntime.jsx(
5797
+ chunkKZDABEML_js.GlassModal,
5798
+ {
5799
+ open,
5800
+ onClose,
5801
+ maxWidth: "2xl",
5802
+ closeOnBackdrop: false,
5803
+ closeLabel: wizardProps.labels.wizardCancel,
5804
+ children: /* @__PURE__ */ jsxRuntime.jsx(AgentNewWizardPageView, { ...wizardProps })
5805
+ }
5806
+ );
5807
+ }
5808
+ function DatasourceNewModal({ open, onClose, ...wizardProps }) {
5809
+ return /* @__PURE__ */ jsxRuntime.jsx(
5810
+ chunkKZDABEML_js.GlassModal,
5811
+ {
5812
+ open,
5813
+ onClose,
5814
+ maxWidth: "2xl",
5815
+ closeOnBackdrop: false,
5816
+ closeLabel: wizardProps.labels.wizardCancel,
5817
+ children: /* @__PURE__ */ jsxRuntime.jsx(DatasourceNewWizardPageView, { ...wizardProps })
5818
+ }
5819
+ );
5820
+ }
5821
+ function RuleNewModal({ open, onClose, ...wizardProps }) {
5822
+ return /* @__PURE__ */ jsxRuntime.jsx(
5823
+ chunkKZDABEML_js.GlassModal,
5824
+ {
5825
+ open,
5826
+ onClose,
5827
+ maxWidth: "2xl",
5828
+ closeOnBackdrop: false,
5829
+ closeLabel: wizardProps.labels.wizardCancel,
5830
+ children: /* @__PURE__ */ jsxRuntime.jsx(RuleNewWizardPageView, { ...wizardProps })
5831
+ }
5832
+ );
5833
+ }
5834
+ var AWS_REGIONS = [
5835
+ { value: "us-east-1", label: "us-east-1 (N. Virginia)" },
5836
+ { value: "us-east-2", label: "us-east-2 (Ohio)" },
5837
+ { value: "us-west-2", label: "us-west-2 (Oregon)" },
5838
+ { value: "eu-west-1", label: "eu-west-1 (Ireland)" },
5839
+ { value: "eu-central-1", label: "eu-central-1 (Frankfurt)" },
5840
+ { value: "ap-southeast-1", label: "ap-southeast-1 (Singapore)" },
5841
+ { value: "sa-east-1", label: "sa-east-1 (S\xE3o Paulo)" }
5842
+ ];
5843
+ var GCP_REGIONS = [
5844
+ { value: "us-central1", label: "us-central1 (Iowa)" },
5845
+ { value: "us-east1", label: "us-east1 (S. Carolina)" },
5846
+ { value: "us-west1", label: "us-west1 (Oregon)" },
5847
+ { value: "europe-west1", label: "europe-west1 (Belgium)" },
5848
+ { value: "europe-west4", label: "europe-west4 (Netherlands)" },
5849
+ { value: "asia-southeast1", label: "asia-southeast1 (Singapore)" },
5850
+ { value: "southamerica-east1", label: "southamerica-east1 (S\xE3o Paulo)" }
5851
+ ];
5852
+ var AZURE_REGIONS = [
5853
+ { value: "eastus", label: "eastus" },
5854
+ { value: "westus2", label: "westus2" },
5855
+ { value: "northeurope", label: "northeurope" },
5856
+ { value: "westeurope", label: "westeurope" },
5857
+ { value: "brazilsouth", label: "brazilsouth" }
5858
+ ];
5859
+ var MODEL_PROVIDERS = [
5860
+ { value: "anthropic_api", label: "Anthropic API", category: "managed" },
5861
+ { value: "openai_api", label: "OpenAI API", category: "managed" },
5862
+ { value: "aws_bedrock", label: "AWS Bedrock", category: "cloud", needsRegion: true, defaultRegion: "us-east-1", regions: AWS_REGIONS },
5863
+ { value: "google_vertex", label: "Google Vertex AI", category: "cloud", needsRegion: true, defaultRegion: "us-central1", regions: GCP_REGIONS },
5864
+ { value: "azure_openai", label: "Azure OpenAI", category: "cloud", needsRegion: true, needsEndpoint: true, defaultRegion: "eastus", regions: AZURE_REGIONS },
5865
+ { value: "groq", label: "Groq", category: "managed" },
5866
+ { value: "mistral", label: "Mistral API", category: "managed" },
5867
+ { value: "huggingface", label: "Hugging Face", category: "hosted", needsEndpoint: true },
5868
+ { value: "ollama", label: "Ollama", category: "local", needsEndpoint: true },
5869
+ { value: "custom", label: "Custom / OpenAI-compatible", category: "custom", needsEndpoint: true }
5870
+ ];
5871
+ var PROVIDER_ICON = {
5872
+ anthropic_api: outline.SparklesIcon,
5873
+ openai_api: outline.BeakerIcon,
5874
+ aws_bedrock: outline.CloudIcon,
5875
+ google_vertex: outline.CloudIcon,
5876
+ azure_openai: outline.CloudIcon,
5877
+ groq: outline.BoltIcon,
5878
+ mistral: outline.SparklesIcon,
5879
+ huggingface: outline.ServerStackIcon,
5880
+ ollama: outline.CpuChipIcon,
5881
+ custom: outline.CodeBracketIcon
5882
+ };
5883
+ var PROVIDER_COLOR = {
5884
+ anthropic_api: "amber",
5885
+ openai_api: "emerald",
5886
+ aws_bedrock: "amber",
5887
+ google_vertex: "blue",
5888
+ azure_openai: "sky",
5889
+ groq: "purple",
5890
+ mistral: "pink",
5891
+ huggingface: "amber",
5892
+ ollama: "slate",
5893
+ custom: "slate"
5894
+ };
5895
+ var TOTAL_STEPS4 = 4;
5896
+ function ModelNewWizardPageView({
5897
+ labels,
5898
+ initialStep,
5899
+ onStepChange,
5900
+ onSubmit,
5901
+ onCancel,
5902
+ onTestConnection
5903
+ }) {
5904
+ const clampedInitial = Math.min(TOTAL_STEPS4, Math.max(1, initialStep ?? 1));
5905
+ const [step, setStep] = react.useState(clampedInitial);
5906
+ const [providerSlug, setProviderSlug] = react.useState("anthropic_api");
5907
+ const [name, setName] = react.useState("");
5908
+ const [region, setRegion] = react.useState("");
5909
+ const [endpoint, setEndpoint] = react.useState("");
5910
+ const [apiKey, setApiKey] = react.useState("");
5911
+ const [modelFilterItems, setModelFilterItems] = react.useState([]);
5912
+ const [modelFilterSelected, setModelFilterSelected] = react.useState([]);
5913
+ const [submitting, setSubmitting] = react.useState(false);
5914
+ const [touched, setTouched] = react.useState(false);
5915
+ const [testStatus, setTestStatus] = react.useState("idle");
5916
+ const preset = react.useMemo(
5917
+ () => MODEL_PROVIDERS.find((p) => p.value === providerSlug) ?? MODEL_PROVIDERS[0],
5918
+ [providerSlug]
5919
+ );
5920
+ react.useEffect(() => {
5921
+ if (preset.defaultRegion && !region) setRegion(preset.defaultRegion);
5922
+ }, [providerSlug]);
5923
+ react.useEffect(() => {
5924
+ const next = Math.min(TOTAL_STEPS4, Math.max(1, initialStep ?? 1));
5925
+ if (next !== step) setStep(next);
5926
+ }, [initialStep]);
5927
+ function markTouched() {
5928
+ if (!touched) setTouched(true);
5929
+ }
5930
+ const goToStep = react.useCallback((next) => {
5931
+ const clamped = Math.min(TOTAL_STEPS4, Math.max(1, next));
5932
+ setStep(clamped);
5933
+ onStepChange?.(clamped);
5934
+ }, [onStepChange]);
5935
+ function canAdvance(from) {
5936
+ if (from === 1) return Boolean(providerSlug);
5937
+ if (from === 2) return name.trim().length > 0;
5938
+ return true;
5939
+ }
5940
+ const goNext = react.useCallback(() => {
5941
+ if (!canAdvance(step)) return;
5942
+ if (step < TOTAL_STEPS4) goToStep(step + 1);
5943
+ }, [step, providerSlug, name]);
5944
+ const goBack = react.useCallback(() => {
5945
+ if (step > 1) goToStep(step - 1);
5946
+ }, [step, goToStep]);
5947
+ const cancelWithConfirm = react.useCallback(() => {
5948
+ if (touched && !window.confirm(labels.wizardCancelConfirm)) return;
5949
+ onCancel();
5950
+ }, [touched, labels.wizardCancelConfirm, onCancel]);
5951
+ function buildPayload() {
5952
+ return {
5953
+ providerSlug,
5954
+ name: name.trim(),
5955
+ region: region.trim() || void 0,
5956
+ endpoint: endpoint.trim() || void 0,
5957
+ apiKey: apiKey || void 0,
5958
+ modelFilters: modelFilterSelected.length > 0 ? [...modelFilterSelected] : void 0
5959
+ };
5960
+ }
5961
+ async function handleTestConnection() {
5962
+ if (!onTestConnection) return;
5963
+ setTestStatus("testing");
5964
+ try {
5965
+ const ok = await onTestConnection(buildPayload());
5966
+ setTestStatus(ok ? "success" : "failed");
5967
+ setTimeout(() => setTestStatus("idle"), 3500);
5968
+ } catch {
5969
+ setTestStatus("failed");
5970
+ setTimeout(() => setTestStatus("idle"), 3500);
5971
+ }
5972
+ }
5973
+ async function submit() {
5974
+ setSubmitting(true);
5975
+ try {
5976
+ await onSubmit(buildPayload());
5977
+ } finally {
5978
+ setSubmitting(false);
5979
+ }
5980
+ }
5981
+ const stepTitles = [labels.step1Title, labels.step2Title, labels.step3Title, labels.step4Title];
5982
+ const stepSubtitles = [labels.step1Subtitle, labels.step2Subtitle, labels.step3Subtitle, labels.step4Subtitle];
5983
+ const indicatorSteps = stepTitles.map((title, idx) => ({ id: String(idx + 1), title }));
5984
+ const hero = /* @__PURE__ */ jsxRuntime.jsx(
5985
+ chunkKZDABEML_js.HeroSection,
5986
+ {
5987
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
5988
+ label: labels.pageTitle,
5989
+ title: stepTitles[step - 1] ?? labels.pageTitle,
5990
+ subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
5991
+ gradient: "from-emerald-500 to-teal-700",
5992
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
5993
+ chunkMXQ2EYG2_js.IconButton,
5994
+ {
5995
+ label: labels.wizardCancel,
5996
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-5 w-5" }),
5997
+ variant: "ghost",
5998
+ onClick: cancelWithConfirm
5999
+ }
6000
+ ),
6001
+ children: /* @__PURE__ */ jsxRuntime.jsx(
6002
+ chunkKZDABEML_js.StepIndicator,
6003
+ {
6004
+ accent: "indigo",
6005
+ currentStep: step - 1,
6006
+ onStepChange: (idx) => goToStep(idx + 1),
6007
+ progressLabel: labels.pageTitle,
6008
+ steps: indicatorSteps
6009
+ }
6010
+ )
6011
+ }
6012
+ );
6013
+ function renderStep1() {
6014
+ return /* @__PURE__ */ jsxRuntime.jsx(
6015
+ "div",
6016
+ {
6017
+ role: "radiogroup",
6018
+ "aria-label": labels.providerLabel,
6019
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
6020
+ children: MODEL_PROVIDERS.map((p) => {
6021
+ const Icon = PROVIDER_ICON[p.value] ?? outline.GlobeAltIcon;
6022
+ const color = PROVIDER_COLOR[p.value] ?? "slate";
6023
+ const selected = providerSlug === p.value;
6024
+ return /* @__PURE__ */ jsxRuntime.jsx(
6025
+ chunkKZDABEML_js.FilterTileButton,
6026
+ {
6027
+ isActive: selected,
6028
+ color,
6029
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-5 w-5" }),
6030
+ label: p.label,
6031
+ count: p.category,
6032
+ onClick: () => {
6033
+ setProviderSlug(p.value);
6034
+ markTouched();
6035
+ }
6036
+ },
6037
+ p.value
6038
+ );
6039
+ })
6040
+ }
6041
+ );
6042
+ }
6043
+ function renderStep2() {
6044
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
6045
+ /* @__PURE__ */ jsxRuntime.jsx(
6046
+ chunkKZDABEML_js.FormInput,
6047
+ {
6048
+ label: labels.nameLabel,
6049
+ value: name,
6050
+ onValueChange: (v) => {
6051
+ setName(v);
6052
+ markTouched();
6053
+ },
6054
+ placeholder: labels.namePlaceholder || `${preset.label} \u2014 produ\xE7\xE3o`,
6055
+ required: true
6056
+ }
6057
+ ),
6058
+ /* @__PURE__ */ jsxRuntime.jsx(
6059
+ chunkKZDABEML_js.FormInput,
6060
+ {
6061
+ label: labels.apiKeyLabel,
6062
+ type: "password",
6063
+ value: apiKey,
6064
+ onValueChange: (v) => {
6065
+ setApiKey(v);
6066
+ markTouched();
6067
+ },
6068
+ placeholder: labels.apiKeyPlaceholder
6069
+ }
6070
+ )
6071
+ ] }) });
6072
+ }
6073
+ function renderStep3() {
6074
+ const showRegion = preset.needsRegion === true;
6075
+ const showEndpoint = preset.needsEndpoint === true;
6076
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
6077
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKZDABEML_js.FormGrid, { children: [
6078
+ showRegion && (preset.regions ? /* @__PURE__ */ jsxRuntime.jsx(
6079
+ chunkKZDABEML_js.FormSelect,
6080
+ {
6081
+ label: labels.regionLabel,
6082
+ value: region,
6083
+ onValueChange: (v) => {
6084
+ setRegion(v);
6085
+ markTouched();
6086
+ },
6087
+ options: [...preset.regions]
6088
+ }
6089
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
6090
+ chunkKZDABEML_js.FormInput,
6091
+ {
6092
+ label: labels.regionLabel,
6093
+ value: region,
6094
+ onValueChange: (v) => {
6095
+ setRegion(v);
6096
+ markTouched();
6097
+ },
6098
+ placeholder: labels.regionPlaceholder ?? preset.defaultRegion
6099
+ }
6100
+ )),
6101
+ showEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
6102
+ chunkKZDABEML_js.FormInput,
6103
+ {
6104
+ label: labels.endpointLabel,
6105
+ type: "url",
6106
+ value: endpoint,
6107
+ onValueChange: (v) => {
6108
+ setEndpoint(v);
6109
+ markTouched();
6110
+ },
6111
+ placeholder: labels.endpointPlaceholder ?? "https://\u2026"
6112
+ }
6113
+ )
6114
+ ] }),
6115
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
6116
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-slate-500 dark:text-slate-400", children: labels.modelFilterLabel }),
6117
+ /* @__PURE__ */ jsxRuntime.jsx(
6118
+ chunkKZDABEML_js.ChipPicker,
6119
+ {
6120
+ items: modelFilterItems,
6121
+ selectedIds: modelFilterSelected,
6122
+ onChange: (ids) => {
6123
+ setModelFilterSelected(ids);
6124
+ markTouched();
6125
+ },
6126
+ onItemsChange: (items) => {
6127
+ setModelFilterItems(items);
6128
+ markTouched();
6129
+ },
6130
+ allowCustom: true,
6131
+ showActions: false,
6132
+ addPlaceholder: labels.modelFilterPlaceholder,
6133
+ addAriaLabel: labels.modelFilterLabel
6134
+ }
6135
+ )
6136
+ ] }),
6137
+ onTestConnection && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex flex-wrap items-center gap-3 border-t pt-4", children: [
6138
+ /* @__PURE__ */ jsxRuntime.jsx(
6139
+ chunkMXQ2EYG2_js.Button,
6140
+ {
6141
+ type: "button",
6142
+ outline: true,
6143
+ onClick: () => void handleTestConnection(),
6144
+ disabled: testStatus === "testing",
6145
+ children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
6146
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Spinner, { size: "xs" }),
6147
+ labels.testing
6148
+ ] }) : labels.testConnection
6149
+ }
6150
+ ),
6151
+ testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
6152
+ testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.StatusBadge, { status: "error", label: labels.connectionFailed })
6153
+ ] })
6154
+ ] });
6155
+ }
6156
+ function renderStep4() {
6157
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
6158
+ /* @__PURE__ */ jsxRuntime.jsx(
6159
+ ReviewBlock4,
6160
+ {
6161
+ stepTitle: labels.step1Title,
6162
+ stepSubtitle: labels.step1Subtitle,
6163
+ editLabel: labels.wizardReviewEdit,
6164
+ onEdit: () => goToStep(1),
6165
+ children: /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: /* @__PURE__ */ jsxRuntime.jsx(ReviewRow4, { label: labels.reviewProviderLabel, value: preset.label }) })
6166
+ }
6167
+ ),
6168
+ /* @__PURE__ */ jsxRuntime.jsx(
6169
+ ReviewBlock4,
6170
+ {
6171
+ stepTitle: labels.step2Title,
6172
+ stepSubtitle: labels.step2Subtitle,
6173
+ editLabel: labels.wizardReviewEdit,
6174
+ onEdit: () => goToStep(2),
6175
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
6176
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow4, { label: labels.reviewNameLabel, value: name || labels.reviewNoneValue }),
6177
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow4, { label: labels.reviewApiKeyLabel, value: apiKey ? labels.reviewApiKeyRedacted : labels.reviewNoneValue })
6178
+ ] })
6179
+ }
6180
+ ),
6181
+ /* @__PURE__ */ jsxRuntime.jsx(
6182
+ ReviewBlock4,
6183
+ {
6184
+ stepTitle: labels.step3Title,
6185
+ stepSubtitle: labels.step3Subtitle,
6186
+ editLabel: labels.wizardReviewEdit,
6187
+ onEdit: () => goToStep(3),
6188
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
6189
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow4, { label: labels.reviewRegionLabel, value: region || labels.reviewNoneValue }),
6190
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow4, { label: labels.reviewEndpointLabel, value: endpoint || labels.reviewNoneValue }),
6191
+ /* @__PURE__ */ jsxRuntime.jsx(
6192
+ ReviewRow4,
6193
+ {
6194
+ label: labels.reviewModelsLabel,
6195
+ value: modelFilterSelected.length > 0 ? modelFilterSelected.join(", ") : labels.reviewNoneValue
6196
+ }
6197
+ )
6198
+ ] })
6199
+ }
6200
+ )
6201
+ ] });
6202
+ }
6203
+ const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : renderStep4();
6204
+ const advanceDisabled = !canAdvance(step);
6205
+ const isLast = step === TOTAL_STEPS4;
6206
+ const scrollableStep = step === 1 || step === 4;
6207
+ const bodyClass = scrollableStep ? "p-5 pt-5 sm:p-8 sm:pt-8 max-h-[60vh] overflow-y-auto" : "p-5 pt-5 sm:p-8 sm:pt-8";
6208
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-t pt-4", children: [
6209
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: step === 1 ? cancelWithConfirm : goBack, disabled: submitting, children: step === 1 ? labels.wizardCancel : labels.wizardBack }),
6210
+ isLast ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: () => void submit(), disabled: submitting || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", color: "ios-glass-blue", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext })
6211
+ ] });
6212
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6213
+ "form",
6214
+ {
6215
+ onSubmit: (e) => {
6216
+ e.preventDefault();
6217
+ if (step < TOTAL_STEPS4) goNext();
6218
+ else void submit();
6219
+ },
6220
+ className: "space-y-4",
6221
+ children: [
6222
+ hero,
6223
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.Card, { variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(chunkKZDABEML_js.CardContent, { className: bodyClass, children: stepBody }) }),
6224
+ footer
6225
+ ]
6226
+ }
6227
+ );
6228
+ }
6229
+ function ReviewRow4({ label, value }) {
6230
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
6231
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-slate-400 dark:text-slate-500", children: label }),
6232
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-slate-900 dark:text-white", children: value })
6233
+ ] });
6234
+ }
6235
+ function ReviewBlock4({
6236
+ stepTitle,
6237
+ stepSubtitle,
6238
+ editLabel,
6239
+ onEdit,
6240
+ children
6241
+ }) {
6242
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "border-b liquid-divider pb-4 last:border-b-0 last:pb-0", children: [
6243
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-2 flex items-start justify-between gap-3", children: [
6244
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
6245
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "truncate text-sm font-semibold text-slate-900 dark:text-white", children: stepTitle }),
6246
+ stepSubtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: stepSubtitle })
6247
+ ] }),
6248
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { type: "button", size: "sm", outline: true, onClick: onEdit, children: [
6249
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
6250
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: editLabel })
6251
+ ] })
6252
+ ] }),
6253
+ children
6254
+ ] });
6255
+ }
6256
+ function ModelNewModal({ open, onClose, ...wizardProps }) {
6257
+ return /* @__PURE__ */ jsxRuntime.jsx(
6258
+ chunkKZDABEML_js.GlassModal,
6259
+ {
6260
+ open,
6261
+ onClose,
6262
+ maxWidth: "2xl",
6263
+ closeOnBackdrop: false,
6264
+ closeLabel: wizardProps.labels.wizardCancel,
6265
+ children: /* @__PURE__ */ jsxRuntime.jsx(ModelNewWizardPageView, { ...wizardProps })
6266
+ }
6267
+ );
6268
+ }
5948
6269
 
5949
6270
  Object.defineProperty(exports, "RolesPageView", {
5950
6271
  enumerable: true,
5951
- get: function () { return chunk7IAWXG43_js.RolesPageView; }
6272
+ get: function () { return chunkOQM252SM_js.RolesPageView; }
5952
6273
  });
5953
6274
  Object.defineProperty(exports, "UsersPageView", {
5954
6275
  enumerable: true,
5955
- get: function () { return chunk7IAWXG43_js.UsersPageView; }
6276
+ get: function () { return chunkOQM252SM_js.UsersPageView; }
5956
6277
  });
5957
6278
  Object.defineProperty(exports, "DIALECT_CATEGORIES", {
5958
6279
  enumerable: true,
5959
- get: function () { return chunkVCL5LDS5_js.DIALECT_CATEGORIES; }
6280
+ get: function () { return chunkPADXORD2_js.DIALECT_CATEGORIES; }
5960
6281
  });
5961
6282
  Object.defineProperty(exports, "DatasourceFormModal", {
5962
6283
  enumerable: true,
5963
- get: function () { return chunkVCL5LDS5_js.DatasourceFormModal; }
6284
+ get: function () { return chunkPADXORD2_js.DatasourceFormModal; }
5964
6285
  });
5965
6286
  Object.defineProperty(exports, "DatasourceModal", {
5966
6287
  enumerable: true,
5967
- get: function () { return chunkVCL5LDS5_js.DatasourceModal; }
6288
+ get: function () { return chunkPADXORD2_js.DatasourceModal; }
5968
6289
  });
5969
6290
  Object.defineProperty(exports, "findCategory", {
5970
6291
  enumerable: true,
5971
- get: function () { return chunkVCL5LDS5_js.findCategory; }
6292
+ get: function () { return chunkPADXORD2_js.findCategory; }
5972
6293
  });
5973
6294
  Object.defineProperty(exports, "findDialect", {
5974
6295
  enumerable: true,
5975
- get: function () { return chunkVCL5LDS5_js.findDialect; }
6296
+ get: function () { return chunkPADXORD2_js.findDialect; }
5976
6297
  });
6298
+ exports.AgentNewModal = AgentNewModal;
5977
6299
  exports.AgentNewWizardPageView = AgentNewWizardPageView;
5978
6300
  exports.AgentsConfigPageView = AgentsConfigPageView;
5979
6301
  exports.AgentsIndexPageView = AgentsIndexPageView;
@@ -5984,8 +6306,13 @@ exports.AgentsWorkspacePageView = AgentsWorkspacePageView;
5984
6306
  exports.ConnectionsPageView = ConnectionsPageView;
5985
6307
  exports.CredentialsPageView = CredentialsPageView;
5986
6308
  exports.DashboardPageView = DashboardPageView;
6309
+ exports.DatasourceNewModal = DatasourceNewModal;
5987
6310
  exports.DatasourceNewWizardPageView = DatasourceNewWizardPageView;
5988
6311
  exports.DatasourcesPageView = DatasourcesPageView;
6312
+ exports.MODEL_PROVIDERS = MODEL_PROVIDERS;
6313
+ exports.ModelNewModal = ModelNewModal;
6314
+ exports.ModelNewWizardPageView = ModelNewWizardPageView;
6315
+ exports.RuleNewModal = RuleNewModal;
5989
6316
  exports.RuleNewWizardPageView = RuleNewWizardPageView;
5990
6317
  exports.RulesPageView = RulesPageView;
5991
6318
  exports.RunTimelinePageView = RunTimelinePageView;