@datatechsolutions/ui 3.10.0 → 3.11.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 (117) hide show
  1. package/dist/astrlabe/contracts.d.mts +18 -2
  2. package/dist/astrlabe/contracts.d.ts +18 -2
  3. package/dist/astrlabe/index.d.mts +2 -2
  4. package/dist/astrlabe/index.d.ts +2 -2
  5. package/dist/astrlabe/index.js +109 -109
  6. package/dist/astrlabe/index.mjs +5 -5
  7. package/dist/astrlabe/workflow-canvas.js +5 -5
  8. package/dist/astrlabe/workflow-canvas.mjs +4 -4
  9. package/dist/{chunk-NM37GLCL.mjs → chunk-2AJ73ULK.mjs} +3 -3
  10. package/dist/{chunk-NM37GLCL.mjs.map → chunk-2AJ73ULK.mjs.map} +1 -1
  11. package/dist/{chunk-MSMEECO6.js → chunk-35O2X7WY.js} +9 -9
  12. package/dist/{chunk-MSMEECO6.js.map → chunk-35O2X7WY.js.map} +1 -1
  13. package/dist/{chunk-5KI7FB3E.mjs → chunk-35P352JX.mjs} +225 -234
  14. package/dist/chunk-35P352JX.mjs.map +1 -0
  15. package/dist/{chunk-FD376DZ6.mjs → chunk-37FWIPYO.mjs} +3 -3
  16. package/dist/{chunk-FD376DZ6.mjs.map → chunk-37FWIPYO.mjs.map} +1 -1
  17. package/dist/{chunk-DA3H7ERQ.mjs → chunk-3US2QXEF.mjs} +3 -3
  18. package/dist/{chunk-DA3H7ERQ.mjs.map → chunk-3US2QXEF.mjs.map} +1 -1
  19. package/dist/{chunk-FIJMOTP4.js → chunk-62BD4WLW.js} +34 -34
  20. package/dist/{chunk-FIJMOTP4.js.map → chunk-62BD4WLW.js.map} +1 -1
  21. package/dist/{chunk-O4HH77A4.js → chunk-6TKCMQ75.js} +68 -68
  22. package/dist/{chunk-O4HH77A4.js.map → chunk-6TKCMQ75.js.map} +1 -1
  23. package/dist/{chunk-BU4WMSK3.mjs → chunk-7D52TFVL.mjs} +3 -3
  24. package/dist/{chunk-BU4WMSK3.mjs.map → chunk-7D52TFVL.mjs.map} +1 -1
  25. package/dist/{chunk-6UX2SRA2.mjs → chunk-7KPMLHPR.mjs} +3 -3
  26. package/dist/{chunk-6UX2SRA2.mjs.map → chunk-7KPMLHPR.mjs.map} +1 -1
  27. package/dist/{chunk-AMESLEIO.js → chunk-7MPIYSRH.js} +63 -63
  28. package/dist/{chunk-AMESLEIO.js.map → chunk-7MPIYSRH.js.map} +1 -1
  29. package/dist/{chunk-6ZYATZS3.mjs → chunk-7V7WEXHS.mjs} +3 -3
  30. package/dist/{chunk-6ZYATZS3.mjs.map → chunk-7V7WEXHS.mjs.map} +1 -1
  31. package/dist/{chunk-5AKTDJFR.js → chunk-BCJATFZE.js} +25 -25
  32. package/dist/{chunk-5AKTDJFR.js.map → chunk-BCJATFZE.js.map} +1 -1
  33. package/dist/{chunk-2A45ZEK4.js → chunk-BO3RXG6M.js} +45 -45
  34. package/dist/{chunk-2A45ZEK4.js.map → chunk-BO3RXG6M.js.map} +1 -1
  35. package/dist/{chunk-L3R425GB.js → chunk-G52HXPSB.js} +13 -13
  36. package/dist/{chunk-L3R425GB.js.map → chunk-G52HXPSB.js.map} +1 -1
  37. package/dist/{chunk-MAOZWOA6.js → chunk-GKI74CPB.js} +55 -55
  38. package/dist/{chunk-MAOZWOA6.js.map → chunk-GKI74CPB.js.map} +1 -1
  39. package/dist/{chunk-TSNKICPP.js → chunk-GTJGX7IZ.js} +10 -10
  40. package/dist/{chunk-TSNKICPP.js.map → chunk-GTJGX7IZ.js.map} +1 -1
  41. package/dist/{chunk-EC34PGUO.js → chunk-H475T2N7.js} +136 -136
  42. package/dist/chunk-H475T2N7.js.map +1 -0
  43. package/dist/{chunk-FENA4YGN.mjs → chunk-HUAWGBYL.mjs} +3 -3
  44. package/dist/{chunk-FENA4YGN.mjs.map → chunk-HUAWGBYL.mjs.map} +1 -1
  45. package/dist/{chunk-RHRJXK5R.mjs → chunk-IGOMJHC6.mjs} +11 -3
  46. package/dist/chunk-IGOMJHC6.mjs.map +1 -0
  47. package/dist/{chunk-B76RTA7D.js → chunk-JTD3BBVI.js} +35 -35
  48. package/dist/{chunk-B76RTA7D.js.map → chunk-JTD3BBVI.js.map} +1 -1
  49. package/dist/{chunk-JB3U6ORY.mjs → chunk-K4AJL4BH.mjs} +3 -3
  50. package/dist/{chunk-JB3U6ORY.mjs.map → chunk-K4AJL4BH.mjs.map} +1 -1
  51. package/dist/{chunk-HEXTU6W3.mjs → chunk-KTEEXEAX.mjs} +6 -6
  52. package/dist/{chunk-HEXTU6W3.mjs.map → chunk-KTEEXEAX.mjs.map} +1 -1
  53. package/dist/{chunk-C4D3EI5L.mjs → chunk-NM3YTQ26.mjs} +3 -3
  54. package/dist/{chunk-C4D3EI5L.mjs.map → chunk-NM3YTQ26.mjs.map} +1 -1
  55. package/dist/{chunk-H7X3SXMB.mjs → chunk-NRVV4PHB.mjs} +7 -7
  56. package/dist/{chunk-H7X3SXMB.mjs.map → chunk-NRVV4PHB.mjs.map} +1 -1
  57. package/dist/{chunk-KHUWFL6W.js → chunk-O2CUOJ74.js} +4 -4
  58. package/dist/{chunk-KHUWFL6W.js.map → chunk-O2CUOJ74.js.map} +1 -1
  59. package/dist/{chunk-NSZN54HW.js → chunk-PHBZ3TXE.js} +4 -4
  60. package/dist/{chunk-NSZN54HW.js.map → chunk-PHBZ3TXE.js.map} +1 -1
  61. package/dist/{chunk-W6MBDTKF.mjs → chunk-R3CGJK7D.mjs} +3 -3
  62. package/dist/{chunk-W6MBDTKF.mjs.map → chunk-R3CGJK7D.mjs.map} +1 -1
  63. package/dist/{chunk-5U43K6G3.mjs → chunk-TCIK6WHT.mjs} +24 -22
  64. package/dist/chunk-TCIK6WHT.mjs.map +1 -0
  65. package/dist/{chunk-YSYEV2Z6.js → chunk-Z6FZQOTW.js} +46 -44
  66. package/dist/chunk-Z6FZQOTW.js.map +1 -0
  67. package/dist/{chunk-LVR4SR65.js → chunk-ZGVN23J4.js} +223 -234
  68. package/dist/chunk-ZGVN23J4.js.map +1 -0
  69. package/dist/{chunk-A256OE5E.mjs → chunk-ZJMYLUZ2.mjs} +5 -5
  70. package/dist/chunk-ZJMYLUZ2.mjs.map +1 -0
  71. package/dist/{chunk-SY4MUT5V.js → chunk-ZUU7G3PC.js} +11 -2
  72. package/dist/chunk-ZUU7G3PC.js.map +1 -0
  73. package/dist/index.d.mts +26 -40
  74. package/dist/index.d.ts +26 -40
  75. package/dist/index.js +664 -672
  76. package/dist/index.mjs +3 -3
  77. package/dist/platform/admin/index.js +11 -11
  78. package/dist/platform/admin/index.mjs +5 -5
  79. package/dist/platform/agents-workspace.js +8 -8
  80. package/dist/platform/agents-workspace.mjs +7 -7
  81. package/dist/platform/app-shell.js +5 -5
  82. package/dist/platform/app-shell.mjs +4 -4
  83. package/dist/platform/auth/index.js +23 -23
  84. package/dist/platform/auth/index.mjs +5 -5
  85. package/dist/platform/billing/index.js +5 -5
  86. package/dist/platform/billing/index.mjs +4 -4
  87. package/dist/platform/impersonation/index.js +5 -5
  88. package/dist/platform/impersonation/index.mjs +4 -4
  89. package/dist/platform/index.js +86 -86
  90. package/dist/platform/index.mjs +19 -19
  91. package/dist/platform/pages/index.d.mts +3 -3
  92. package/dist/platform/pages/index.d.ts +3 -3
  93. package/dist/platform/pages/index.js +583 -548
  94. package/dist/platform/pages/index.js.map +1 -1
  95. package/dist/platform/pages/index.mjs +288 -253
  96. package/dist/platform/pages/index.mjs.map +1 -1
  97. package/dist/platform/settings/index.js +8 -8
  98. package/dist/platform/settings/index.mjs +7 -7
  99. package/dist/platform/workflow-api-client.d.mts +1 -1
  100. package/dist/platform/workflow-api-client.d.ts +1 -1
  101. package/dist/platform/workflow-api-client.js +65 -61
  102. package/dist/platform/workflow-api-client.mjs +1 -1
  103. package/dist/platform/workflow-canvas-shell.js +6 -6
  104. package/dist/platform/workflow-canvas-shell.mjs +5 -5
  105. package/dist/{rule-form-BYJzyork.d.mts → rule-form-BkKCY8Tc.d.mts} +8 -2
  106. package/dist/{rule-form-BYJzyork.d.ts → rule-form-CBD8wlrw.d.ts} +8 -2
  107. package/dist/{workflow-api-client-CpFl3WcG.d.mts → workflow-api-client-D9_0Spdz.d.mts} +16 -1
  108. package/dist/{workflow-api-client-uLICOanv.d.ts → workflow-api-client-E1QFRgeP.d.ts} +16 -1
  109. package/package.json +1 -1
  110. package/dist/chunk-5KI7FB3E.mjs.map +0 -1
  111. package/dist/chunk-5U43K6G3.mjs.map +0 -1
  112. package/dist/chunk-A256OE5E.mjs.map +0 -1
  113. package/dist/chunk-EC34PGUO.js.map +0 -1
  114. package/dist/chunk-LVR4SR65.js.map +0 -1
  115. package/dist/chunk-RHRJXK5R.mjs.map +0 -1
  116. package/dist/chunk-SY4MUT5V.js.map +0 -1
  117. package/dist/chunk-YSYEV2Z6.js.map +0 -1
@@ -2,16 +2,16 @@
2
2
  'use strict';
3
3
 
4
4
  var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
5
- var chunkYSYEV2Z6_js = require('../../chunk-YSYEV2Z6.js');
6
- var chunkFIJMOTP4_js = require('../../chunk-FIJMOTP4.js');
7
- var chunkEC34PGUO_js = require('../../chunk-EC34PGUO.js');
5
+ var chunkZ6FZQOTW_js = require('../../chunk-Z6FZQOTW.js');
6
+ var chunk62BD4WLW_js = require('../../chunk-62BD4WLW.js');
7
+ var chunkH475T2N7_js = require('../../chunk-H475T2N7.js');
8
8
  require('../../chunk-55H6WZQP.js');
9
9
  require('../../chunk-DJDZIRM6.js');
10
- require('../../chunk-O4HH77A4.js');
11
- var chunkLVR4SR65_js = require('../../chunk-LVR4SR65.js');
12
- require('../../chunk-YXN2K77G.js');
13
- require('../../chunk-SY4MUT5V.js');
10
+ require('../../chunk-6TKCMQ75.js');
11
+ var chunkZGVN23J4_js = require('../../chunk-ZGVN23J4.js');
12
+ require('../../chunk-ZUU7G3PC.js');
14
13
  require('../../chunk-2OZZH2IO.js');
14
+ require('../../chunk-YXN2K77G.js');
15
15
  require('../../chunk-EZQ2D47U.js');
16
16
  var chunkBHOT22QL_js = require('../../chunk-BHOT22QL.js');
17
17
  require('../../chunk-UZ3CMNUJ.js');
@@ -27,36 +27,35 @@ function AgentsModelsPageView({ labels, models, loading }) {
27
27
  const filteredModels = searchTerm.trim() ? allModels.filter((model) => model.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allModels;
28
28
  const isEmpty = allModels.length === 0;
29
29
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
30
- chunkLVR4SR65_js.HeroSection,
30
+ chunkZGVN23J4_js.HeroSection,
31
31
  {
32
32
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
33
33
  label: labels.title,
34
34
  title: labels.title,
35
35
  subtitle: labels.subtitle,
36
- gradient: "from-emerald-500 to-teal-700"
36
+ gradient: "from-emerald-500 to-teal-700",
37
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
38
+ chunkZGVN23J4_js.SearchBar,
39
+ {
40
+ searchTerm,
41
+ onSearchChange: setSearchTerm,
42
+ placeholder: labels.searchPlaceholder ?? labels.title,
43
+ noBorder: true
44
+ }
45
+ ) : void 0
37
46
  }
38
47
  );
39
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
40
- /* @__PURE__ */ jsxRuntime.jsx(
41
- chunkLVR4SR65_js.SearchBar,
42
- {
43
- searchTerm,
44
- onSearchChange: setSearchTerm,
45
- placeholder: labels.searchPlaceholder ?? labels.title
46
- }
47
- ),
48
- /* @__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(
49
- chunkLVR4SR65_js.EntityCard,
50
- {
51
- accentGradient: "from-emerald-500 to-teal-700",
52
- 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" }) }),
53
- title: model.name,
54
- subtitle: `${labels.provider}: ${model.provider}`,
55
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
56
- },
57
- model.id
58
- )) })
59
- ] });
48
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_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(
49
+ chunkZGVN23J4_js.EntityCard,
50
+ {
51
+ accentGradient: "from-emerald-500 to-teal-700",
52
+ 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" }) }),
53
+ title: model.name,
54
+ subtitle: `${labels.provider}: ${model.provider}`,
55
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
56
+ },
57
+ model.id
58
+ )) });
60
59
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
61
60
  hero,
62
61
  content
@@ -71,7 +70,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
71
70
  const filteredAgents = searchTerm.trim() ? allAgents.filter((agent) => String(agent.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allAgents;
72
71
  const isEmpty = allAgents.length === 0;
73
72
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
74
- chunkLVR4SR65_js.HeroSection,
73
+ chunkZGVN23J4_js.HeroSection,
75
74
  {
76
75
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
77
76
  label: labels.title,
@@ -79,7 +78,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
79
78
  subtitle: labels.subtitle,
80
79
  gradient: "from-violet-500 to-indigo-700",
81
80
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
82
- chunkLVR4SR65_js.SearchBar,
81
+ chunkZGVN23J4_js.SearchBar,
83
82
  {
84
83
  searchTerm,
85
84
  onSearchChange: setSearchTerm,
@@ -88,7 +87,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
88
87
  }
89
88
  ) : void 0,
90
89
  actions: /* @__PURE__ */ jsxRuntime.jsx(
91
- chunkLVR4SR65_js.CreateActionButton,
90
+ chunkZGVN23J4_js.CreateActionButton,
92
91
  {
93
92
  mode: "desktop",
94
93
  label: labels.addAgent,
@@ -99,7 +98,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
99
98
  }
100
99
  );
101
100
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
102
- chunkLVR4SR65_js.CreateActionButton,
101
+ chunkZGVN23J4_js.CreateActionButton,
103
102
  {
104
103
  mode: "mobile",
105
104
  label: labels.addAgent,
@@ -107,10 +106,10 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
107
106
  accent: "violet"
108
107
  }
109
108
  );
110
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_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) => {
109
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_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) => {
111
110
  const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
112
111
  return /* @__PURE__ */ jsxRuntime.jsx(
113
- chunkLVR4SR65_js.EntityCard,
112
+ chunkZGVN23J4_js.EntityCard,
114
113
  {
115
114
  accentGradient: "from-violet-500 to-indigo-700",
116
115
  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" }) }),
@@ -147,7 +146,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
147
146
  );
148
147
  }) });
149
148
  const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
150
- chunkLVR4SR65_js.GlassModal,
149
+ chunkZGVN23J4_js.GlassModal,
151
150
  {
152
151
  open: true,
153
152
  onClose: () => {
@@ -170,13 +169,13 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
170
169
  outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
171
170
  });
172
171
  },
173
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
174
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
175
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
176
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
177
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
178
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
179
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
172
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
173
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
174
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
175
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
176
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
177
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
178
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
180
179
  ] })
181
180
  }
182
181
  );
@@ -243,7 +242,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
243
242
  }) : allPrompts;
244
243
  const isEmpty = allPrompts.length === 0;
245
244
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
246
- chunkLVR4SR65_js.HeroSection,
245
+ chunkZGVN23J4_js.HeroSection,
247
246
  {
248
247
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
249
248
  label: labels.title,
@@ -251,7 +250,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
251
250
  subtitle: labels.subtitle,
252
251
  gradient: "from-sky-500 to-blue-700",
253
252
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
254
- chunkLVR4SR65_js.CreateActionButton,
253
+ chunkZGVN23J4_js.CreateActionButton,
255
254
  {
256
255
  mode: "desktop",
257
256
  label: labels.addPrompt,
@@ -262,7 +261,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
262
261
  }
263
262
  );
264
263
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
265
- chunkLVR4SR65_js.CreateActionButton,
264
+ chunkZGVN23J4_js.CreateActionButton,
266
265
  {
267
266
  mode: "mobile",
268
267
  label: labels.addPrompt,
@@ -270,9 +269,9 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
270
269
  accent: "sky"
271
270
  }
272
271
  );
273
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
272
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
274
273
  /* @__PURE__ */ jsxRuntime.jsx(
275
- chunkLVR4SR65_js.SearchBar,
274
+ chunkZGVN23J4_js.SearchBar,
276
275
  {
277
276
  searchTerm,
278
277
  onSearchChange: setSearchTerm,
@@ -283,7 +282,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
283
282
  const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
284
283
  const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
285
284
  return /* @__PURE__ */ jsxRuntime.jsx(
286
- chunkLVR4SR65_js.EntityCard,
285
+ chunkZGVN23J4_js.EntityCard,
287
286
  {
288
287
  accentGradient: "from-sky-500 to-blue-700",
289
288
  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" }) }),
@@ -318,7 +317,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
318
317
  mobileAction
319
318
  ] }),
320
319
  /* @__PURE__ */ jsxRuntime.jsx(
321
- chunkLVR4SR65_js.GlassModal,
320
+ chunkZGVN23J4_js.GlassModal,
322
321
  {
323
322
  open: createOpen,
324
323
  onClose: () => setCreateOpen(false),
@@ -342,11 +341,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
342
341
  });
343
342
  setCreateOpen(false);
344
343
  },
345
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
346
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
347
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
344
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
345
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
346
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
348
347
  /* @__PURE__ */ jsxRuntime.jsx(
349
- chunkLVR4SR65_js.FormSelect,
348
+ chunkZGVN23J4_js.FormSelect,
350
349
  {
351
350
  name: "isActive",
352
351
  label: labels.isActive,
@@ -354,10 +353,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
354
353
  defaultValue: "true"
355
354
  }
356
355
  ),
357
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "reason", label: labels.reason }),
358
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
359
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
360
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
356
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "reason", label: labels.reason }),
357
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
358
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
359
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
361
360
  ] })
362
361
  }
363
362
  )
@@ -392,7 +391,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
392
391
  const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
393
392
  const isEmpty = allTools.length === 0;
394
393
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
395
- chunkLVR4SR65_js.HeroSection,
394
+ chunkZGVN23J4_js.HeroSection,
396
395
  {
397
396
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
398
397
  label: labels.title,
@@ -400,7 +399,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
400
399
  subtitle: labels.subtitle,
401
400
  gradient: "from-amber-500 to-orange-700",
402
401
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
403
- chunkLVR4SR65_js.CreateActionButton,
402
+ chunkZGVN23J4_js.CreateActionButton,
404
403
  {
405
404
  mode: "desktop",
406
405
  label: labels.addTool,
@@ -411,7 +410,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
411
410
  }
412
411
  );
413
412
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
414
- chunkLVR4SR65_js.CreateActionButton,
413
+ chunkZGVN23J4_js.CreateActionButton,
415
414
  {
416
415
  mode: "mobile",
417
416
  label: labels.addTool,
@@ -419,9 +418,9 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
419
418
  accent: "amber"
420
419
  }
421
420
  );
422
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
421
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
423
422
  /* @__PURE__ */ jsxRuntime.jsx(
424
- chunkLVR4SR65_js.SearchBar,
423
+ chunkZGVN23J4_js.SearchBar,
425
424
  {
426
425
  searchTerm,
427
426
  onSearchChange: setSearchTerm,
@@ -429,7 +428,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
429
428
  }
430
429
  ),
431
430
  /* @__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(
432
- chunkLVR4SR65_js.EntityCard,
431
+ chunkZGVN23J4_js.EntityCard,
433
432
  {
434
433
  accentGradient: "from-amber-500 to-orange-700",
435
434
  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" }) }),
@@ -519,7 +518,7 @@ function ToolEditor({
519
518
  setValue((v) => ({ ...v, [key]: next }));
520
519
  };
521
520
  return /* @__PURE__ */ jsxRuntime.jsx(
522
- chunkLVR4SR65_js.GlassModal,
521
+ chunkZGVN23J4_js.GlassModal,
523
522
  {
524
523
  open: true,
525
524
  onClose,
@@ -532,9 +531,9 @@ function ToolEditor({
532
531
  handleSubmit();
533
532
  },
534
533
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
535
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
534
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
536
535
  /* @__PURE__ */ jsxRuntime.jsx(
537
- chunkLVR4SR65_js.FormInput,
536
+ chunkZGVN23J4_js.FormInput,
538
537
  {
539
538
  label: "Name",
540
539
  required: true,
@@ -544,7 +543,7 @@ function ToolEditor({
544
543
  }
545
544
  ),
546
545
  /* @__PURE__ */ jsxRuntime.jsx(
547
- chunkLVR4SR65_js.FormSelect,
546
+ chunkZGVN23J4_js.FormSelect,
548
547
  {
549
548
  label: "Tool type",
550
549
  value: value.toolType,
@@ -554,7 +553,7 @@ function ToolEditor({
554
553
  }
555
554
  ),
556
555
  /* @__PURE__ */ jsxRuntime.jsx(
557
- chunkLVR4SR65_js.FormSelect,
556
+ chunkZGVN23J4_js.FormSelect,
558
557
  {
559
558
  label: "Enabled",
560
559
  value: value.enabled ? "true" : "false",
@@ -563,7 +562,7 @@ function ToolEditor({
563
562
  }
564
563
  ),
565
564
  /* @__PURE__ */ jsxRuntime.jsx(
566
- chunkLVR4SR65_js.FormInput,
565
+ chunkZGVN23J4_js.FormInput,
567
566
  {
568
567
  label: "Icon (optional)",
569
568
  value: value.icon ?? "",
@@ -573,7 +572,7 @@ function ToolEditor({
573
572
  )
574
573
  ] }),
575
574
  /* @__PURE__ */ jsxRuntime.jsx(
576
- chunkLVR4SR65_js.FormTextarea,
575
+ chunkZGVN23J4_js.FormTextarea,
577
576
  {
578
577
  label: "Description",
579
578
  rows: 2,
@@ -621,7 +620,7 @@ function ParametersEditor({
621
620
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
622
621
  parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
623
622
  /* @__PURE__ */ jsxRuntime.jsx(
624
- chunkLVR4SR65_js.FormInput,
623
+ chunkZGVN23J4_js.FormInput,
625
624
  {
626
625
  label: "Name",
627
626
  value: param.name,
@@ -630,7 +629,7 @@ function ParametersEditor({
630
629
  }
631
630
  ),
632
631
  /* @__PURE__ */ jsxRuntime.jsx(
633
- chunkLVR4SR65_js.FormSelect,
632
+ chunkZGVN23J4_js.FormSelect,
634
633
  {
635
634
  label: "Type",
636
635
  value: param.type,
@@ -639,7 +638,7 @@ function ParametersEditor({
639
638
  }
640
639
  ),
641
640
  /* @__PURE__ */ jsxRuntime.jsx(
642
- chunkLVR4SR65_js.FormInput,
641
+ chunkZGVN23J4_js.FormInput,
643
642
  {
644
643
  label: "Description",
645
644
  value: param.description,
@@ -673,9 +672,9 @@ function HandlerConfigEditor({
673
672
  if (toolType === "http") {
674
673
  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: [
675
674
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "HTTP handler" }),
676
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
675
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
677
676
  /* @__PURE__ */ jsxRuntime.jsx(
678
- chunkLVR4SR65_js.FormSelect,
677
+ chunkZGVN23J4_js.FormSelect,
679
678
  {
680
679
  label: "Method",
681
680
  value: stringProp(config, "method", "GET"),
@@ -684,7 +683,7 @@ function HandlerConfigEditor({
684
683
  }
685
684
  ),
686
685
  /* @__PURE__ */ jsxRuntime.jsx(
687
- chunkLVR4SR65_js.FormInput,
686
+ chunkZGVN23J4_js.FormInput,
688
687
  {
689
688
  label: "URL template",
690
689
  value: stringProp(config, "url"),
@@ -694,7 +693,7 @@ function HandlerConfigEditor({
694
693
  )
695
694
  ] }),
696
695
  /* @__PURE__ */ jsxRuntime.jsx(
697
- chunkLVR4SR65_js.FormTextarea,
696
+ chunkZGVN23J4_js.FormTextarea,
698
697
  {
699
698
  label: "Headers (JSON)",
700
699
  rows: 3,
@@ -704,7 +703,7 @@ function HandlerConfigEditor({
704
703
  }
705
704
  ),
706
705
  /* @__PURE__ */ jsxRuntime.jsx(
707
- chunkLVR4SR65_js.FormTextarea,
706
+ chunkZGVN23J4_js.FormTextarea,
708
707
  {
709
708
  label: "Body template",
710
709
  rows: 3,
@@ -719,7 +718,7 @@ function HandlerConfigEditor({
719
718
  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: [
720
719
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Function handler" }),
721
720
  /* @__PURE__ */ jsxRuntime.jsx(
722
- chunkLVR4SR65_js.FormInput,
721
+ chunkZGVN23J4_js.FormInput,
723
722
  {
724
723
  label: "Implementation key",
725
724
  value: stringProp(config, "implementationKey"),
@@ -733,9 +732,9 @@ function HandlerConfigEditor({
733
732
  if (toolType === "database_query") {
734
733
  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: [
735
734
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Database query handler" }),
736
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
735
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
737
736
  /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkLVR4SR65_js.FormInput,
737
+ chunkZGVN23J4_js.FormInput,
739
738
  {
740
739
  label: "Datasource ID",
741
740
  value: stringProp(config, "datasourceId"),
@@ -744,7 +743,7 @@ function HandlerConfigEditor({
744
743
  }
745
744
  ),
746
745
  /* @__PURE__ */ jsxRuntime.jsx(
747
- chunkLVR4SR65_js.FormInput,
746
+ chunkZGVN23J4_js.FormInput,
748
747
  {
749
748
  label: "Max rows",
750
749
  type: "number",
@@ -754,7 +753,7 @@ function HandlerConfigEditor({
754
753
  )
755
754
  ] }),
756
755
  /* @__PURE__ */ jsxRuntime.jsx(
757
- chunkLVR4SR65_js.FormTextarea,
756
+ chunkZGVN23J4_js.FormTextarea,
758
757
  {
759
758
  label: "Query template",
760
759
  rows: 4,
@@ -770,7 +769,7 @@ function HandlerConfigEditor({
770
769
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
771
770
  /* @__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." }),
772
771
  /* @__PURE__ */ jsxRuntime.jsx(
773
- chunkLVR4SR65_js.FormSelect,
772
+ chunkZGVN23J4_js.FormSelect,
774
773
  {
775
774
  label: "Language",
776
775
  value: stringProp(config, "language", "javascript"),
@@ -782,7 +781,7 @@ function HandlerConfigEditor({
782
781
  }
783
782
  ),
784
783
  /* @__PURE__ */ jsxRuntime.jsx(
785
- chunkLVR4SR65_js.FormTextarea,
784
+ chunkZGVN23J4_js.FormTextarea,
786
785
  {
787
786
  label: "Code",
788
787
  rows: 6,
@@ -795,9 +794,9 @@ function HandlerConfigEditor({
795
794
  }
796
795
  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: [
797
796
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "API call handler" }),
798
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
797
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
799
798
  /* @__PURE__ */ jsxRuntime.jsx(
800
- chunkLVR4SR65_js.FormInput,
799
+ chunkZGVN23J4_js.FormInput,
801
800
  {
802
801
  label: "URL",
803
802
  value: stringProp(config, "url"),
@@ -805,7 +804,7 @@ function HandlerConfigEditor({
805
804
  }
806
805
  ),
807
806
  /* @__PURE__ */ jsxRuntime.jsx(
808
- chunkLVR4SR65_js.FormSelect,
807
+ chunkZGVN23J4_js.FormSelect,
809
808
  {
810
809
  label: "Auth",
811
810
  value: stringProp(config, "authType", "bearer"),
@@ -819,7 +818,7 @@ function HandlerConfigEditor({
819
818
  }
820
819
  ),
821
820
  /* @__PURE__ */ jsxRuntime.jsx(
822
- chunkLVR4SR65_js.FormInput,
821
+ chunkZGVN23J4_js.FormInput,
823
822
  {
824
823
  label: "Credential secret id",
825
824
  value: stringProp(config, "credentialRef"),
@@ -956,7 +955,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
956
955
  const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
957
956
  const isEmpty = allRules.length === 0;
958
957
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
959
- chunkLVR4SR65_js.HeroSection,
958
+ chunkZGVN23J4_js.HeroSection,
960
959
  {
961
960
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
962
961
  label: labels.title,
@@ -964,7 +963,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
964
963
  subtitle: labels.subtitle,
965
964
  gradient: "from-fuchsia-500 to-purple-700",
966
965
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
967
- chunkLVR4SR65_js.CreateActionButton,
966
+ chunkZGVN23J4_js.CreateActionButton,
968
967
  {
969
968
  mode: "desktop",
970
969
  label: labels.addRule,
@@ -975,7 +974,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
975
974
  }
976
975
  );
977
976
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
978
- chunkLVR4SR65_js.CreateActionButton,
977
+ chunkZGVN23J4_js.CreateActionButton,
979
978
  {
980
979
  mode: "mobile",
981
980
  label: labels.addRule,
@@ -983,9 +982,9 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
983
982
  accent: "fuchsia"
984
983
  }
985
984
  );
986
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
985
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
987
986
  /* @__PURE__ */ jsxRuntime.jsx(
988
- chunkLVR4SR65_js.SearchBar,
987
+ chunkZGVN23J4_js.SearchBar,
989
988
  {
990
989
  searchTerm,
991
990
  onSearchChange: setSearchTerm,
@@ -993,7 +992,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
993
992
  }
994
993
  ),
995
994
  /* @__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(
996
- chunkLVR4SR65_js.EntityCard,
995
+ chunkZGVN23J4_js.EntityCard,
997
996
  {
998
997
  accentGradient: "from-fuchsia-500 to-purple-700",
999
998
  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" }) }),
@@ -1031,7 +1030,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1031
1030
  {
1032
1031
  title: labels.createTitle,
1033
1032
  saveLabel: labels.save,
1034
- initial: chunkEC34PGUO_js.defaultRuleForm(),
1033
+ initial: chunkH475T2N7_js.defaultRuleForm(),
1035
1034
  onClose: () => setCreateOpen(false),
1036
1035
  onSubmit: (value) => {
1037
1036
  onCreate(value);
@@ -1063,7 +1062,7 @@ function RuleEditor({
1063
1062
  }) {
1064
1063
  const [value, setValue] = react.useState(initial);
1065
1064
  return /* @__PURE__ */ jsxRuntime.jsx(
1066
- chunkLVR4SR65_js.GlassModal,
1065
+ chunkZGVN23J4_js.GlassModal,
1067
1066
  {
1068
1067
  open: true,
1069
1068
  onClose,
@@ -1075,12 +1074,12 @@ function RuleEditor({
1075
1074
  event.preventDefault();
1076
1075
  onSubmit(value);
1077
1076
  },
1078
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkEC34PGUO_js.RuleForm, { value, onChange: setValue })
1077
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkH475T2N7_js.RuleForm, { value, onChange: setValue })
1079
1078
  }
1080
1079
  );
1081
1080
  }
1082
1081
  function ruleToFormValue(rule) {
1083
- const base = chunkEC34PGUO_js.defaultRuleForm();
1082
+ const base = chunkH475T2N7_js.defaultRuleForm();
1084
1083
  const rawCondition = rule.condition ?? rule.conditions;
1085
1084
  const rawAction = pickAction(rule);
1086
1085
  return {
@@ -1095,7 +1094,10 @@ function ruleToFormValue(rule) {
1095
1094
  status: typeof rule.status === "string" ? rule.status : base.status,
1096
1095
  validFrom: typeof rule.validFrom === "string" ? rule.validFrom : base.validFrom,
1097
1096
  validUntil: typeof rule.validUntil === "string" ? rule.validUntil : base.validUntil,
1098
- tags: Array.isArray(rule.tags) ? rule.tags.filter((tag) => typeof tag === "string") : base.tags
1097
+ tags: Array.isArray(rule.tags) ? rule.tags.filter((tag) => typeof tag === "string") : base.tags,
1098
+ // Round-trip recurrence (Fallback 4) — backend persists it as the
1099
+ // structured `{ kind, ... }` blob the wizard sends.
1100
+ recurrence: rule.recurrence ?? null
1099
1101
  };
1100
1102
  }
1101
1103
  function pickAction(rule) {
@@ -1123,6 +1125,7 @@ var SAMPLE_DATASOURCES = [
1123
1125
  timeoutMs: 3e4,
1124
1126
  allowedTables: null,
1125
1127
  blockedColumns: null,
1128
+ maskPii: null,
1126
1129
  enabled: true,
1127
1130
  createdAt: "2026-03-20T10:00:00Z",
1128
1131
  updatedAt: "2026-03-20T10:00:00Z",
@@ -1139,6 +1142,7 @@ var SAMPLE_DATASOURCES = [
1139
1142
  timeoutMs: 15e3,
1140
1143
  allowedTables: null,
1141
1144
  blockedColumns: null,
1145
+ maskPii: null,
1142
1146
  enabled: true,
1143
1147
  createdAt: "2026-03-18T08:30:00Z",
1144
1148
  updatedAt: "2026-03-22T14:00:00Z",
@@ -1155,6 +1159,7 @@ var SAMPLE_DATASOURCES = [
1155
1159
  timeoutMs: 3e4,
1156
1160
  allowedTables: null,
1157
1161
  blockedColumns: null,
1162
+ maskPii: null,
1158
1163
  enabled: true,
1159
1164
  createdAt: "2026-03-15T09:00:00Z",
1160
1165
  updatedAt: "2026-03-21T11:00:00Z",
@@ -1171,6 +1176,7 @@ var SAMPLE_DATASOURCES = [
1171
1176
  timeoutMs: 1e4,
1172
1177
  allowedTables: null,
1173
1178
  blockedColumns: null,
1179
+ maskPii: null,
1174
1180
  enabled: false,
1175
1181
  createdAt: "2026-03-10T12:00:00Z",
1176
1182
  updatedAt: "2026-03-19T16:00:00Z",
@@ -1187,6 +1193,7 @@ var SAMPLE_DATASOURCES = [
1187
1193
  timeoutMs: 5e3,
1188
1194
  allowedTables: null,
1189
1195
  blockedColumns: null,
1196
+ maskPii: null,
1190
1197
  enabled: true,
1191
1198
  createdAt: "2026-03-12T07:00:00Z",
1192
1199
  updatedAt: "2026-03-23T09:00:00Z",
@@ -1203,6 +1210,7 @@ var SAMPLE_DATASOURCES = [
1203
1210
  timeoutMs: 2e4,
1204
1211
  allowedTables: null,
1205
1212
  blockedColumns: null,
1213
+ maskPii: null,
1206
1214
  enabled: true,
1207
1215
  createdAt: "2026-03-22T15:00:00Z",
1208
1216
  updatedAt: "2026-03-25T10:00:00Z",
@@ -1211,7 +1219,7 @@ var SAMPLE_DATASOURCES = [
1211
1219
  ];
1212
1220
  function getDialectLabel(dialect) {
1213
1221
  if (!dialect) return "Unknown";
1214
- for (const category of chunkFIJMOTP4_js.DIALECT_CATEGORIES) {
1222
+ for (const category of chunk62BD4WLW_js.DIALECT_CATEGORIES) {
1215
1223
  const found = category.dialects.find((d) => d.value === dialect);
1216
1224
  if (found) return found.label;
1217
1225
  }
@@ -1219,12 +1227,12 @@ function getDialectLabel(dialect) {
1219
1227
  }
1220
1228
  function getDialectGradient(dialect) {
1221
1229
  if (!dialect) return "from-gray-400 to-gray-500";
1222
- const category = chunkFIJMOTP4_js.findCategory(dialect);
1230
+ const category = chunk62BD4WLW_js.findCategory(dialect);
1223
1231
  return category?.gradient ?? "from-gray-400 to-gray-500";
1224
1232
  }
1225
1233
  function getDialectIcon(dialect) {
1226
1234
  if (!dialect) return outline.CircleStackIcon;
1227
- const category = chunkFIJMOTP4_js.findCategory(dialect);
1235
+ const category = chunk62BD4WLW_js.findCategory(dialect);
1228
1236
  return category?.icon ?? outline.CircleStackIcon;
1229
1237
  }
1230
1238
  var DIALECT_LOGO = {
@@ -1294,6 +1302,7 @@ function DatasourcesPageView({
1294
1302
  timeoutMs: 3e4,
1295
1303
  allowedTables: null,
1296
1304
  blockedColumns: null,
1305
+ maskPii: null,
1297
1306
  enabled: true,
1298
1307
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1299
1308
  updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1303,7 +1312,7 @@ function DatasourcesPageView({
1303
1312
  }
1304
1313
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1305
1314
  /* @__PURE__ */ jsxRuntime.jsx(
1306
- chunkLVR4SR65_js.HeroSection,
1315
+ chunkZGVN23J4_js.HeroSection,
1307
1316
  {
1308
1317
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
1309
1318
  label: labels.title,
@@ -1311,7 +1320,7 @@ function DatasourcesPageView({
1311
1320
  subtitle: labels.subtitle,
1312
1321
  gradient: "from-amber-500 to-orange-600",
1313
1322
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1314
- chunkLVR4SR65_js.CreateActionButton,
1323
+ chunkZGVN23J4_js.CreateActionButton,
1315
1324
  {
1316
1325
  mode: "desktop",
1317
1326
  label: labels.addDatasource,
@@ -1322,7 +1331,7 @@ function DatasourcesPageView({
1322
1331
  }
1323
1332
  ),
1324
1333
  /* @__PURE__ */ jsxRuntime.jsx(
1325
- chunkLVR4SR65_js.CreateActionButton,
1334
+ chunkZGVN23J4_js.CreateActionButton,
1326
1335
  {
1327
1336
  mode: "mobile",
1328
1337
  label: labels.addDatasource,
@@ -1331,7 +1340,7 @@ function DatasourcesPageView({
1331
1340
  }
1332
1341
  ),
1333
1342
  !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1334
- chunkLVR4SR65_js.SearchBar,
1343
+ chunkZGVN23J4_js.SearchBar,
1335
1344
  {
1336
1345
  searchTerm,
1337
1346
  onSearchChange: setSearchTerm,
@@ -1339,7 +1348,7 @@ function DatasourcesPageView({
1339
1348
  }
1340
1349
  ),
1341
1350
  isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1342
- chunkLVR4SR65_js.PageEmptyState,
1351
+ chunkZGVN23J4_js.PageEmptyState,
1343
1352
  {
1344
1353
  title: labels.emptyTitle,
1345
1354
  message: labels.emptyDescription,
@@ -1353,7 +1362,7 @@ function DatasourcesPageView({
1353
1362
  const logoSrc = getDialectLogoSrc(ds.dialect);
1354
1363
  const iconElement = logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface flex h-11 w-11 items-center justify-center rounded-lg", 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" }) });
1355
1364
  return /* @__PURE__ */ jsxRuntime.jsx(
1356
- chunkLVR4SR65_js.EntityCard,
1365
+ chunkZGVN23J4_js.EntityCard,
1357
1366
  {
1358
1367
  accentGradient: gradient,
1359
1368
  icon: iconElement,
@@ -1383,7 +1392,7 @@ function DatasourcesPageView({
1383
1392
  );
1384
1393
  }) }),
1385
1394
  /* @__PURE__ */ jsxRuntime.jsx(
1386
- chunkFIJMOTP4_js.DatasourceModal,
1395
+ chunk62BD4WLW_js.DatasourceModal,
1387
1396
  {
1388
1397
  open: modalOpen,
1389
1398
  onClose: () => setModalOpen(false),
@@ -1412,37 +1421,36 @@ function AgentsIndexPageView({ labels }) {
1412
1421
  const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
1413
1422
  const isEmpty = allTiles.length === 0;
1414
1423
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1415
- chunkLVR4SR65_js.HeroSection,
1424
+ chunkZGVN23J4_js.HeroSection,
1416
1425
  {
1417
1426
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
1418
1427
  label: labels.title,
1419
1428
  title: labels.title,
1420
1429
  subtitle: labels.subtitle,
1421
- gradient: "from-violet-500 to-indigo-700"
1430
+ gradient: "from-violet-500 to-indigo-700",
1431
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1432
+ chunkZGVN23J4_js.SearchBar,
1433
+ {
1434
+ searchTerm,
1435
+ onSearchChange: setSearchTerm,
1436
+ placeholder: labels.searchPlaceholder ?? labels.title,
1437
+ noBorder: true
1438
+ }
1439
+ ) : void 0
1422
1440
  }
1423
1441
  );
1424
- const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1425
- !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1426
- chunkLVR4SR65_js.SearchBar,
1442
+ 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) => {
1443
+ const Icon = tile.icon;
1444
+ return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1445
+ chunkZGVN23J4_js.EntityCard,
1427
1446
  {
1428
- searchTerm,
1429
- onSearchChange: setSearchTerm,
1430
- placeholder: labels.searchPlaceholder ?? labels.title
1447
+ accentGradient: tile.gradient,
1448
+ 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" }) }),
1449
+ title: tile.title,
1450
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: tile.subtitle })
1431
1451
  }
1432
- ),
1433
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1434
- const Icon = tile.icon;
1435
- return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1436
- chunkLVR4SR65_js.EntityCard,
1437
- {
1438
- accentGradient: tile.gradient,
1439
- 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" }) }),
1440
- title: tile.title,
1441
- children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: tile.subtitle })
1442
- }
1443
- ) }, tile.id);
1444
- }) })
1445
- ] });
1452
+ ) }, tile.id);
1453
+ }) });
1446
1454
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1447
1455
  hero,
1448
1456
  content
@@ -1452,7 +1460,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1452
1460
  const selectedWorkflow = workflows[0] ?? null;
1453
1461
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1454
1462
  /* @__PURE__ */ jsxRuntime.jsx(
1455
- chunkLVR4SR65_js.SectionHeader,
1463
+ chunkZGVN23J4_js.SectionHeader,
1456
1464
  {
1457
1465
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
1458
1466
  title: labels.title,
@@ -1461,9 +1469,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1461
1469
  }
1462
1470
  ),
1463
1471
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1464
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1472
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1465
1473
  /* @__PURE__ */ jsxRuntime.jsx(
1466
- chunkLVR4SR65_js.Form,
1474
+ chunkZGVN23J4_js.Form,
1467
1475
  {
1468
1476
  onSubmit: (event) => {
1469
1477
  event.preventDefault();
@@ -1474,32 +1482,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1474
1482
  onCreate({ name, description });
1475
1483
  event.currentTarget.reset();
1476
1484
  },
1477
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
1478
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1479
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1480
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
1485
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
1486
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1487
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1488
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
1481
1489
  ] })
1482
1490
  }
1483
1491
  )
1484
1492
  ] }),
1485
1493
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1486
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1487
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.Table, { children: [
1488
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TableRow, { children: [
1489
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.name }),
1490
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.description }),
1491
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.version }),
1492
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.status }),
1493
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.actions })
1494
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1495
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.Table, { children: [
1496
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.TableRow, { children: [
1497
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHeader, { children: labels.name }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHeader, { children: labels.description }),
1499
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHeader, { children: labels.version }),
1500
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHeader, { children: labels.status }),
1501
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableHeader, { children: labels.actions })
1494
1502
  ] }) }),
1495
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TableRow, { children: [
1496
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: workflow.name }),
1497
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: workflow.description }),
1498
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: String(workflow.version) }),
1499
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1500
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1503
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.TableRow, { children: [
1504
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableCell, { children: workflow.name }),
1505
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableCell, { children: workflow.description }),
1506
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableCell, { children: String(workflow.version) }),
1507
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1508
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1501
1509
  /* @__PURE__ */ jsxRuntime.jsx(
1502
- chunkLVR4SR65_js.Form,
1510
+ chunkZGVN23J4_js.Form,
1503
1511
  {
1504
1512
  onSubmit: (event) => {
1505
1513
  event.preventDefault();
@@ -1509,7 +1517,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1509
1517
  description: workflow.description ?? ""
1510
1518
  });
1511
1519
  },
1512
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1520
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1513
1521
  }
1514
1522
  ),
1515
1523
  /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
@@ -1518,8 +1526,8 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1518
1526
  ] })
1519
1527
  ] }),
1520
1528
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1521
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1522
- 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(chunkYSYEV2Z6_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { children: labels.empty })
1529
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1530
+ 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(chunkZ6FZQOTW_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Text, { children: labels.empty })
1523
1531
  ] })
1524
1532
  ] });
1525
1533
  }
@@ -1533,6 +1541,7 @@ var BADGE_COLOR = {
1533
1541
  function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onView, onViewTimeline }) {
1534
1542
  const [statusFilter, setStatusFilter] = react.useState("all");
1535
1543
  const [searchTerm, setSearchTerm] = react.useState("");
1544
+ const [filtersOpen, setFiltersOpen] = react.useState(false);
1536
1545
  const statusOptions = react.useMemo(() => [
1537
1546
  { value: "all", label: labels.filterAll },
1538
1547
  { value: "pending", label: labels.statusPending },
@@ -1568,61 +1577,68 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1568
1577
  });
1569
1578
  const isEmpty = allRuns.length === 0;
1570
1579
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1571
- chunkLVR4SR65_js.HeroSection,
1580
+ chunkZGVN23J4_js.HeroSection,
1572
1581
  {
1573
1582
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1574
1583
  label: labels.title,
1575
1584
  title: labels.title,
1576
1585
  subtitle: labels.subtitle,
1577
1586
  gradient: "from-indigo-500 to-sky-700",
1578
- toolbar: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
1579
- chunkLVR4SR65_js.FormSelect,
1587
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1588
+ chunkZGVN23J4_js.SearchBar,
1580
1589
  {
1581
- name: "statusFilter",
1582
- label: labels.filterStatus,
1583
- options: statusOptions,
1584
- value: statusFilter,
1585
- onValueChange: setStatusFilter
1590
+ searchTerm,
1591
+ onSearchChange: setSearchTerm,
1592
+ placeholder: labels.searchPlaceholder ?? labels.title,
1593
+ noBorder: true,
1594
+ filtersModal: {
1595
+ open: filtersOpen,
1596
+ onOpen: () => setFiltersOpen(true),
1597
+ onClose: () => setFiltersOpen(false),
1598
+ title: labels.filterStatus,
1599
+ count: statusFilter !== "all" ? 1 : 0,
1600
+ onClear: statusFilter !== "all" ? () => setStatusFilter("all") : void 0,
1601
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1602
+ chunkZGVN23J4_js.FormSelect,
1603
+ {
1604
+ name: "statusFilter",
1605
+ label: labels.filterStatus,
1606
+ options: statusOptions,
1607
+ value: statusFilter,
1608
+ onValueChange: setStatusFilter
1609
+ }
1610
+ )
1611
+ }
1586
1612
  }
1587
- ) })
1613
+ ) : void 0
1588
1614
  }
1589
1615
  );
1590
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1591
- !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1592
- chunkLVR4SR65_js.SearchBar,
1593
- {
1594
- searchTerm,
1595
- onSearchChange: setSearchTerm,
1596
- placeholder: labels.searchPlaceholder ?? labels.title
1597
- }
1598
- ),
1599
- /* @__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(
1600
- chunkLVR4SR65_js.EntityCard,
1601
- {
1602
- accentGradient: "from-indigo-500 to-sky-700",
1603
- 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" }) }),
1604
- title: run.id.slice(0, 8),
1605
- subtitle: `${labels.startedAt}: ${new Date(run.createdAt).toLocaleString()}`,
1606
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
1607
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1608
- onView && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
1609
- onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
1610
- /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
1611
- run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
1616
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_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(
1617
+ chunkZGVN23J4_js.EntityCard,
1618
+ {
1619
+ accentGradient: "from-indigo-500 to-sky-700",
1620
+ 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" }) }),
1621
+ title: run.id.slice(0, 8),
1622
+ subtitle: `${labels.startedAt}: ${new Date(run.createdAt).toLocaleString()}`,
1623
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
1624
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1625
+ onView && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
1626
+ onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
1627
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
1628
+ run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
1629
+ ] }),
1630
+ children: [
1631
+ /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
1632
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.duration }),
1633
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: chunk3T2WGL47_js.formatDurationMs(run.totalDurationMs) }),
1634
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.triggeredBy }),
1635
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right truncate", children: run.triggeredBy || "\u2014" })
1612
1636
  ] }),
1613
- children: [
1614
- /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
1615
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.duration }),
1616
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: chunk3T2WGL47_js.formatDurationMs(run.totalDurationMs) }),
1617
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.triggeredBy }),
1618
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right truncate", children: run.triggeredBy || "\u2014" })
1619
- ] }),
1620
- run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-2 text-xs text-rose-600 dark:text-rose-400", children: run.error })
1621
- ]
1622
- },
1623
- run.id
1624
- )) })
1625
- ] });
1637
+ run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-2 text-xs text-rose-600 dark:text-rose-400", children: run.error })
1638
+ ]
1639
+ },
1640
+ run.id
1641
+ )) });
1626
1642
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1627
1643
  hero,
1628
1644
  content
@@ -1630,7 +1646,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1630
1646
  }
1631
1647
  function RunTimelinePageView({ labels, entries, loading, runId }) {
1632
1648
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1633
- chunkLVR4SR65_js.HeroSection,
1649
+ chunkZGVN23J4_js.HeroSection,
1634
1650
  {
1635
1651
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1636
1652
  label: labels.title,
@@ -1642,19 +1658,19 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
1642
1658
  if (loading) {
1643
1659
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1644
1660
  hero,
1645
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {})
1661
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {})
1646
1662
  ] });
1647
1663
  }
1648
1664
  if (entries.length === 0) {
1649
1665
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1650
1666
  hero,
1651
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1667
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1652
1668
  ] });
1653
1669
  }
1654
1670
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1655
1671
  hero,
1656
1672
  /* @__PURE__ */ jsxRuntime.jsx(
1657
- chunkEC34PGUO_js.ExecutionTimelinePanel,
1673
+ chunkH475T2N7_js.ExecutionTimelinePanel,
1658
1674
  {
1659
1675
  entries,
1660
1676
  labels
@@ -1739,7 +1755,7 @@ function ConnectionsPageView({
1739
1755
  const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
1740
1756
  const isEmpty = allConnections.length === 0;
1741
1757
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1742
- chunkLVR4SR65_js.HeroSection,
1758
+ chunkZGVN23J4_js.HeroSection,
1743
1759
  {
1744
1760
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
1745
1761
  label: labels.title,
@@ -1747,7 +1763,7 @@ function ConnectionsPageView({
1747
1763
  subtitle: labels.subtitle,
1748
1764
  gradient: "from-sky-500 to-indigo-600",
1749
1765
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1750
- chunkLVR4SR65_js.CreateActionButton,
1766
+ chunkZGVN23J4_js.CreateActionButton,
1751
1767
  {
1752
1768
  mode: "desktop",
1753
1769
  label: labels.add,
@@ -1758,7 +1774,7 @@ function ConnectionsPageView({
1758
1774
  }
1759
1775
  );
1760
1776
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
1761
- chunkLVR4SR65_js.CreateActionButton,
1777
+ chunkZGVN23J4_js.CreateActionButton,
1762
1778
  {
1763
1779
  mode: "mobile",
1764
1780
  label: labels.add,
@@ -1766,9 +1782,9 @@ function ConnectionsPageView({
1766
1782
  accent: "sky"
1767
1783
  }
1768
1784
  );
1769
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1785
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1770
1786
  /* @__PURE__ */ jsxRuntime.jsx(
1771
- chunkLVR4SR65_js.SearchBar,
1787
+ chunkZGVN23J4_js.SearchBar,
1772
1788
  {
1773
1789
  searchTerm,
1774
1790
  onSearchChange: setSearchTerm,
@@ -1776,7 +1792,7 @@ function ConnectionsPageView({
1776
1792
  }
1777
1793
  ),
1778
1794
  /* @__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(
1779
- chunkLVR4SR65_js.EntityCard,
1795
+ chunkZGVN23J4_js.EntityCard,
1780
1796
  {
1781
1797
  accentGradient: "from-sky-500 to-indigo-600",
1782
1798
  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" }) }),
@@ -1929,7 +1945,7 @@ function ConnectionEditor({
1929
1945
  return preset.exampleModels?.join(", ") ?? "";
1930
1946
  }, [preset]);
1931
1947
  return /* @__PURE__ */ jsxRuntime.jsx(
1932
- chunkLVR4SR65_js.GlassModal,
1948
+ chunkZGVN23J4_js.GlassModal,
1933
1949
  {
1934
1950
  open: true,
1935
1951
  onClose,
@@ -1942,9 +1958,9 @@ function ConnectionEditor({
1942
1958
  void handleSubmit();
1943
1959
  },
1944
1960
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1945
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
1961
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
1946
1962
  /* @__PURE__ */ jsxRuntime.jsx(
1947
- chunkLVR4SR65_js.FormSelect,
1963
+ chunkZGVN23J4_js.FormSelect,
1948
1964
  {
1949
1965
  label: "Provider",
1950
1966
  value: value.providerSlug,
@@ -1955,7 +1971,7 @@ function ConnectionEditor({
1955
1971
  }
1956
1972
  ),
1957
1973
  /* @__PURE__ */ jsxRuntime.jsx(
1958
- chunkLVR4SR65_js.FormInput,
1974
+ chunkZGVN23J4_js.FormInput,
1959
1975
  {
1960
1976
  label: "Display name",
1961
1977
  required: true,
@@ -1965,7 +1981,7 @@ function ConnectionEditor({
1965
1981
  }
1966
1982
  ),
1967
1983
  preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
1968
- chunkLVR4SR65_js.FormInput,
1984
+ chunkZGVN23J4_js.FormInput,
1969
1985
  {
1970
1986
  label: "Region",
1971
1987
  value: value.region,
@@ -1974,7 +1990,7 @@ function ConnectionEditor({
1974
1990
  }
1975
1991
  ),
1976
1992
  preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
1977
- chunkLVR4SR65_js.FormInput,
1993
+ chunkZGVN23J4_js.FormInput,
1978
1994
  {
1979
1995
  label: "Endpoint URL",
1980
1996
  value: value.endpoint,
@@ -1984,7 +2000,7 @@ function ConnectionEditor({
1984
2000
  )
1985
2001
  ] }),
1986
2002
  /* @__PURE__ */ jsxRuntime.jsx(
1987
- chunkLVR4SR65_js.FormInput,
2003
+ chunkZGVN23J4_js.FormInput,
1988
2004
  {
1989
2005
  label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
1990
2006
  type: "password",
@@ -1995,7 +2011,7 @@ function ConnectionEditor({
1995
2011
  }
1996
2012
  ),
1997
2013
  /* @__PURE__ */ jsxRuntime.jsx(
1998
- chunkLVR4SR65_js.FormInput,
2014
+ chunkZGVN23J4_js.FormInput,
1999
2015
  {
2000
2016
  label: "Model filter (comma-separated, optional)",
2001
2017
  value: value.modelFilter,
@@ -2007,7 +2023,7 @@ function ConnectionEditor({
2007
2023
  /* @__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: [
2008
2024
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
2009
2025
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
2010
- chunkLVR4SR65_js.FormTextarea,
2026
+ chunkZGVN23J4_js.FormTextarea,
2011
2027
  {
2012
2028
  rows: 4,
2013
2029
  value: value.configJson,
@@ -2077,7 +2093,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2077
2093
  { value: "password", label: labels.typePassword }
2078
2094
  ];
2079
2095
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2080
- chunkLVR4SR65_js.HeroSection,
2096
+ chunkZGVN23J4_js.HeroSection,
2081
2097
  {
2082
2098
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
2083
2099
  label: labels.title,
@@ -2085,7 +2101,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2085
2101
  subtitle: labels.subtitle,
2086
2102
  gradient: "from-rose-500 to-orange-600",
2087
2103
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
2088
- chunkLVR4SR65_js.CreateActionButton,
2104
+ chunkZGVN23J4_js.CreateActionButton,
2089
2105
  {
2090
2106
  mode: "desktop",
2091
2107
  label: labels.addCredential,
@@ -2096,7 +2112,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2096
2112
  }
2097
2113
  );
2098
2114
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2099
- chunkLVR4SR65_js.CreateActionButton,
2115
+ chunkZGVN23J4_js.CreateActionButton,
2100
2116
  {
2101
2117
  mode: "mobile",
2102
2118
  label: labels.addCredential,
@@ -2104,9 +2120,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2104
2120
  accent: "rose"
2105
2121
  }
2106
2122
  );
2107
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2123
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2108
2124
  /* @__PURE__ */ jsxRuntime.jsx(
2109
- chunkLVR4SR65_js.SearchBar,
2125
+ chunkZGVN23J4_js.SearchBar,
2110
2126
  {
2111
2127
  searchTerm,
2112
2128
  onSearchChange: setSearchTerm,
@@ -2114,7 +2130,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2114
2130
  }
2115
2131
  ),
2116
2132
  /* @__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(
2117
- chunkLVR4SR65_js.EntityCard,
2133
+ chunkZGVN23J4_js.EntityCard,
2118
2134
  {
2119
2135
  accentGradient: "from-rose-500 to-orange-700",
2120
2136
  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" }) }),
@@ -2122,7 +2138,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2122
2138
  subtitle: secret.secretType,
2123
2139
  status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2124
2140
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2125
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.CopyableId, { id: secret.secretId }),
2141
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.CopyableId, { id: secret.secretId }),
2126
2142
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2127
2143
  /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2128
2144
  /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
@@ -2165,7 +2181,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2165
2181
  mobileAction
2166
2182
  ] }),
2167
2183
  /* @__PURE__ */ jsxRuntime.jsx(
2168
- chunkLVR4SR65_js.GlassModal,
2184
+ chunkZGVN23J4_js.GlassModal,
2169
2185
  {
2170
2186
  open: createOpen,
2171
2187
  onClose: () => setCreateOpen(false),
@@ -2183,16 +2199,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2183
2199
  onCreate({ name, value, secretType, description });
2184
2200
  setCreateOpen(false);
2185
2201
  },
2186
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2187
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2188
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2189
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2190
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2202
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
2203
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2204
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2205
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2206
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2191
2207
  ] })
2192
2208
  }
2193
2209
  ),
2194
2210
  /* @__PURE__ */ jsxRuntime.jsx(
2195
- chunkLVR4SR65_js.GlassModal,
2211
+ chunkZGVN23J4_js.GlassModal,
2196
2212
  {
2197
2213
  open: rotateFor !== null,
2198
2214
  onClose: () => setRotateFor(null),
@@ -2207,7 +2223,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2207
2223
  onRotate(rotateFor, value);
2208
2224
  setRotateFor(null);
2209
2225
  },
2210
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2226
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2211
2227
  }
2212
2228
  )
2213
2229
  ] });
@@ -2260,7 +2276,7 @@ function AgentsWorkspacePageView({
2260
2276
  }, [agents, selectedId]);
2261
2277
  const isEmpty = agents.length === 0;
2262
2278
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2263
- chunkLVR4SR65_js.HeroSection,
2279
+ chunkZGVN23J4_js.HeroSection,
2264
2280
  {
2265
2281
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
2266
2282
  label: labels.title,
@@ -2268,7 +2284,7 @@ function AgentsWorkspacePageView({
2268
2284
  subtitle: labels.subtitle,
2269
2285
  gradient: "from-violet-500 to-indigo-700",
2270
2286
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2271
- chunkLVR4SR65_js.CreateActionButton,
2287
+ chunkZGVN23J4_js.CreateActionButton,
2272
2288
  {
2273
2289
  mode: "desktop",
2274
2290
  label: labels.addAgent,
@@ -2279,7 +2295,7 @@ function AgentsWorkspacePageView({
2279
2295
  }
2280
2296
  );
2281
2297
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2282
- chunkLVR4SR65_js.CreateActionButton,
2298
+ chunkZGVN23J4_js.CreateActionButton,
2283
2299
  {
2284
2300
  mode: "mobile",
2285
2301
  label: labels.addAgent,
@@ -2287,8 +2303,8 @@ function AgentsWorkspacePageView({
2287
2303
  accent: "violet"
2288
2304
  }
2289
2305
  );
2290
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2291
- chunkLVR4SR65_js.PageEmptyState,
2306
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2307
+ chunkZGVN23J4_js.PageEmptyState,
2292
2308
  {
2293
2309
  title: labels.empty,
2294
2310
  message: labels.emptyMessage,
@@ -2296,7 +2312,7 @@ function AgentsWorkspacePageView({
2296
2312
  }
2297
2313
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2298
2314
  /* @__PURE__ */ jsxRuntime.jsx(
2299
- chunkLVR4SR65_js.SearchBar,
2315
+ chunkZGVN23J4_js.SearchBar,
2300
2316
  {
2301
2317
  searchTerm,
2302
2318
  onSearchChange: setSearchTerm,
@@ -2304,15 +2320,15 @@ function AgentsWorkspacePageView({
2304
2320
  }
2305
2321
  ),
2306
2322
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2307
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2323
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2308
2324
  const id = String(agent.agentId ?? agent.id ?? "");
2309
2325
  const active = id === selectedId;
2310
2326
  const initials = deriveInitials(String(agent.name ?? id));
2311
2327
  const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2312
2328
  return /* @__PURE__ */ jsxRuntime.jsx(
2313
- chunkLVR4SR65_js.ListCardItem,
2329
+ chunkZGVN23J4_js.ListCardItem,
2314
2330
  {
2315
- leading: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2331
+ leading: /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2316
2332
  trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
2317
2333
  "v",
2318
2334
  agent.activePromptVersion
@@ -2354,7 +2370,7 @@ function AgentsWorkspacePageView({
2354
2370
  },
2355
2371
  String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2356
2372
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2357
- chunkLVR4SR65_js.SectionCard,
2373
+ chunkZGVN23J4_js.SectionCard,
2358
2374
  {
2359
2375
  header: {
2360
2376
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2362,7 +2378,7 @@ function AgentsWorkspacePageView({
2362
2378
  subtitle: labels.noSelectionMessage
2363
2379
  },
2364
2380
  children: /* @__PURE__ */ jsxRuntime.jsx(
2365
- chunkLVR4SR65_js.PageEmptyState,
2381
+ chunkZGVN23J4_js.PageEmptyState,
2366
2382
  {
2367
2383
  title: labels.noSelection,
2368
2384
  message: labels.noSelectionMessage,
@@ -2397,7 +2413,7 @@ function AgentDetail({
2397
2413
  }) {
2398
2414
  const agentId = String(agent.agentId ?? agent.id ?? "");
2399
2415
  return /* @__PURE__ */ jsxRuntime.jsx(
2400
- chunkLVR4SR65_js.SectionCard,
2416
+ chunkZGVN23J4_js.SectionCard,
2401
2417
  {
2402
2418
  header: {
2403
2419
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2422,15 +2438,15 @@ function AgentDetail({
2422
2438
  ]
2423
2439
  }
2424
2440
  ),
2425
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.Tabs, { defaultValue: "general", className: "w-full", children: [
2426
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
2427
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "general", children: labels.generalTab }),
2428
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
2429
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
2430
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "model", children: labels.modelTab })
2441
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.Tabs, { defaultValue: "general", className: "w-full", children: [
2442
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
2443
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsTrigger, { value: "general", children: labels.generalTab }),
2444
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
2445
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
2446
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsTrigger, { value: "model", children: labels.modelTab })
2431
2447
  ] }),
2432
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
2433
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2448
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
2449
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2434
2450
  PromptTab,
2435
2451
  {
2436
2452
  agent,
@@ -2440,7 +2456,7 @@ function AgentDetail({
2440
2456
  onActivate: (promptId) => onActivatePrompt(agentId, promptId)
2441
2457
  }
2442
2458
  ) }),
2443
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2459
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2444
2460
  ToolsTab,
2445
2461
  {
2446
2462
  agent,
@@ -2450,7 +2466,7 @@ function AgentDetail({
2450
2466
  onDetach: (toolId) => onDetachTool(agentId, toolId)
2451
2467
  }
2452
2468
  ) }),
2453
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2469
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2454
2470
  ModelTab,
2455
2471
  {
2456
2472
  agent,
@@ -2482,7 +2498,7 @@ function GeneralTab({
2482
2498
  const initialRole = String(agent.role ?? "");
2483
2499
  const initialStatus = String(agent.status ?? "draft");
2484
2500
  return /* @__PURE__ */ jsxRuntime.jsx(
2485
- chunkLVR4SR65_js.SectionCard,
2501
+ chunkZGVN23J4_js.SectionCard,
2486
2502
  {
2487
2503
  variant: "glass",
2488
2504
  header: {
@@ -2511,10 +2527,10 @@ function GeneralTab({
2511
2527
  },
2512
2528
  className: "space-y-4",
2513
2529
  children: [
2514
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2515
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
2530
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
2531
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
2516
2532
  /* @__PURE__ */ jsxRuntime.jsx(
2517
- chunkLVR4SR65_js.FormSelect,
2533
+ chunkZGVN23J4_js.FormSelect,
2518
2534
  {
2519
2535
  name: "status",
2520
2536
  label: labels.status,
@@ -2526,9 +2542,9 @@ function GeneralTab({
2526
2542
  ]
2527
2543
  }
2528
2544
  ),
2529
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2545
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2530
2546
  /* @__PURE__ */ jsxRuntime.jsx(
2531
- chunkLVR4SR65_js.FormInput,
2547
+ chunkZGVN23J4_js.FormInput,
2532
2548
  {
2533
2549
  name: "maxTokens",
2534
2550
  label: labels.maxTokens,
@@ -2537,7 +2553,7 @@ function GeneralTab({
2537
2553
  }
2538
2554
  ),
2539
2555
  /* @__PURE__ */ jsxRuntime.jsx(
2540
- chunkLVR4SR65_js.FormInput,
2556
+ chunkZGVN23J4_js.FormInput,
2541
2557
  {
2542
2558
  name: "temperature",
2543
2559
  label: labels.temperature,
@@ -2549,7 +2565,7 @@ function GeneralTab({
2549
2565
  }
2550
2566
  )
2551
2567
  ] }),
2552
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2568
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2553
2569
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", color: "indigo", disabled: submitting, children: submitting ? labels.saving : labels.save }) })
2554
2570
  ]
2555
2571
  }
@@ -2569,7 +2585,7 @@ function PromptTab({
2569
2585
  const currentSystem = String(agent.systemPrompt ?? "");
2570
2586
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2571
2587
  /* @__PURE__ */ jsxRuntime.jsx(
2572
- chunkLVR4SR65_js.SectionCard,
2588
+ chunkZGVN23J4_js.SectionCard,
2573
2589
  {
2574
2590
  variant: "glass",
2575
2591
  header: {
@@ -2581,7 +2597,7 @@ function PromptTab({
2581
2597
  }
2582
2598
  ),
2583
2599
  /* @__PURE__ */ jsxRuntime.jsx(
2584
- chunkLVR4SR65_js.SectionCard,
2600
+ chunkZGVN23J4_js.SectionCard,
2585
2601
  {
2586
2602
  variant: "glass",
2587
2603
  header: {
@@ -2592,10 +2608,10 @@ function PromptTab({
2592
2608
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
2593
2609
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
2594
2610
  ] }),
2595
- children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: prompts.map((prompt) => {
2611
+ children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: prompts.map((prompt) => {
2596
2612
  const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
2597
2613
  return /* @__PURE__ */ jsxRuntime.jsxs(
2598
- chunkLVR4SR65_js.ListCardItem,
2614
+ chunkZGVN23J4_js.ListCardItem,
2599
2615
  {
2600
2616
  leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
2601
2617
  "v",
@@ -2613,7 +2629,7 @@ function PromptTab({
2613
2629
  }
2614
2630
  ),
2615
2631
  addOpen && /* @__PURE__ */ jsxRuntime.jsx(
2616
- chunkLVR4SR65_js.GlassModal,
2632
+ chunkZGVN23J4_js.GlassModal,
2617
2633
  {
2618
2634
  open: true,
2619
2635
  onClose: () => setAddOpen(false),
@@ -2634,10 +2650,10 @@ function PromptTab({
2634
2650
  });
2635
2651
  setAddOpen(false);
2636
2652
  },
2637
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2638
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
2653
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
2654
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
2639
2655
  /* @__PURE__ */ jsxRuntime.jsx(
2640
- chunkLVR4SR65_js.FormSelect,
2656
+ chunkZGVN23J4_js.FormSelect,
2641
2657
  {
2642
2658
  name: "isActive",
2643
2659
  label: labels.promptIsActive,
@@ -2648,10 +2664,10 @@ function PromptTab({
2648
2664
  defaultValue: "true"
2649
2665
  }
2650
2666
  ),
2651
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "reason", label: labels.promptReason }),
2652
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
2653
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
2654
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
2667
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormInput, { name: "reason", label: labels.promptReason }),
2668
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
2669
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
2670
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
2655
2671
  ] })
2656
2672
  }
2657
2673
  )
@@ -2674,15 +2690,15 @@ function ToolsTab({
2674
2690
  const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
2675
2691
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2676
2692
  /* @__PURE__ */ jsxRuntime.jsx(
2677
- chunkLVR4SR65_js.SectionCard,
2693
+ chunkZGVN23J4_js.SectionCard,
2678
2694
  {
2679
2695
  variant: "glass",
2680
2696
  header: {
2681
2697
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2682
2698
  title: labels.toolsAttached
2683
2699
  },
2684
- children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2685
- chunkLVR4SR65_js.ListCardItem,
2700
+ children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2701
+ chunkZGVN23J4_js.ListCardItem,
2686
2702
  {
2687
2703
  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" }) }),
2688
2704
  trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
@@ -2696,15 +2712,15 @@ function ToolsTab({
2696
2712
  }
2697
2713
  ),
2698
2714
  /* @__PURE__ */ jsxRuntime.jsx(
2699
- chunkLVR4SR65_js.SectionCard,
2715
+ chunkZGVN23J4_js.SectionCard,
2700
2716
  {
2701
2717
  variant: "glass",
2702
2718
  header: {
2703
2719
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2704
2720
  title: labels.toolsAvailable
2705
2721
  },
2706
- children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2707
- chunkLVR4SR65_js.ListCardItem,
2722
+ children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2723
+ chunkZGVN23J4_js.ListCardItem,
2708
2724
  {
2709
2725
  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" }) }),
2710
2726
  trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
@@ -2745,7 +2761,7 @@ function ModelTab({
2745
2761
  return matches.length > 0 ? matches : connections;
2746
2762
  }, [selectedModel, connections]);
2747
2763
  return /* @__PURE__ */ jsxRuntime.jsx(
2748
- chunkLVR4SR65_js.SectionCard,
2764
+ chunkZGVN23J4_js.SectionCard,
2749
2765
  {
2750
2766
  variant: "glass",
2751
2767
  header: {
@@ -2766,9 +2782,9 @@ function ModelTab({
2766
2782
  },
2767
2783
  className: "space-y-4",
2768
2784
  children: [
2769
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2785
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
2770
2786
  /* @__PURE__ */ jsxRuntime.jsx(
2771
- chunkLVR4SR65_js.FormSelect,
2787
+ chunkZGVN23J4_js.FormSelect,
2772
2788
  {
2773
2789
  label: labels.model,
2774
2790
  value: modelId,
@@ -2777,7 +2793,7 @@ function ModelTab({
2777
2793
  }
2778
2794
  ),
2779
2795
  /* @__PURE__ */ jsxRuntime.jsx(
2780
- chunkLVR4SR65_js.FormSelect,
2796
+ chunkZGVN23J4_js.FormSelect,
2781
2797
  {
2782
2798
  label: labels.connection,
2783
2799
  value: connectionId,
@@ -2979,11 +2995,9 @@ function AgentNewWizardPageView({
2979
2995
  labels.wizardStep4Subtitle,
2980
2996
  labels.wizardStep5Subtitle
2981
2997
  ];
2982
- const timelineSteps = stepTitles.map((title, idx) => ({
2998
+ const indicatorSteps = stepTitles.map((title, idx) => ({
2983
2999
  id: String(idx + 1),
2984
- name: title,
2985
- description: stepSubtitles[idx],
2986
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
3000
+ title
2987
3001
  }));
2988
3002
  function markTouched() {
2989
3003
  if (!touched) setTouched(true);
@@ -3069,7 +3083,7 @@ function AgentNewWizardPageView({
3069
3083
  }
3070
3084
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS));
3071
3085
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3072
- chunkLVR4SR65_js.HeroSection,
3086
+ chunkZGVN23J4_js.HeroSection,
3073
3087
  {
3074
3088
  icon: /* @__PURE__ */ jsxRuntime.jsx(
3075
3089
  "div",
@@ -3082,12 +3096,22 @@ function AgentNewWizardPageView({
3082
3096
  label: counter,
3083
3097
  title: labels.pageTitle,
3084
3098
  subtitle: stepSubtitles[step - 1],
3085
- gradient: activePreset.accent
3099
+ gradient: activePreset.accent,
3100
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3101
+ chunkZGVN23J4_js.StepIndicator,
3102
+ {
3103
+ accent: "indigo",
3104
+ currentStep: step - 1,
3105
+ onStepChange: (idx) => goToStep(idx + 1),
3106
+ progressLabel: labels.pageTitle,
3107
+ steps: indicatorSteps
3108
+ }
3109
+ )
3086
3110
  }
3087
3111
  );
3088
3112
  function renderStep1() {
3089
3113
  return /* @__PURE__ */ jsxRuntime.jsx(
3090
- chunkLVR4SR65_js.SectionCard,
3114
+ chunkZGVN23J4_js.SectionCard,
3091
3115
  {
3092
3116
  variant: "glass",
3093
3117
  header: {
@@ -3103,7 +3127,7 @@ function AgentNewWizardPageView({
3103
3127
  children: AGENT_PRESETS.map((preset) => {
3104
3128
  const selected = preset.id === presetId;
3105
3129
  return /* @__PURE__ */ jsxRuntime.jsx(
3106
- chunkLVR4SR65_js.FilterTileButton,
3130
+ chunkZGVN23J4_js.FilterTileButton,
3107
3131
  {
3108
3132
  isActive: selected,
3109
3133
  color: preset.tileColor,
@@ -3122,7 +3146,7 @@ function AgentNewWizardPageView({
3122
3146
  }
3123
3147
  function renderStep2() {
3124
3148
  return /* @__PURE__ */ jsxRuntime.jsx(
3125
- chunkLVR4SR65_js.SectionCard,
3149
+ chunkZGVN23J4_js.SectionCard,
3126
3150
  {
3127
3151
  variant: "glass",
3128
3152
  header: {
@@ -3150,9 +3174,9 @@ function AgentNewWizardPageView({
3150
3174
  e
3151
3175
  )) })
3152
3176
  ] }),
3153
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3177
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
3154
3178
  /* @__PURE__ */ jsxRuntime.jsx(
3155
- chunkLVR4SR65_js.FormInput,
3179
+ chunkZGVN23J4_js.FormInput,
3156
3180
  {
3157
3181
  label: labels.name,
3158
3182
  value: name,
@@ -3165,7 +3189,7 @@ function AgentNewWizardPageView({
3165
3189
  }
3166
3190
  ),
3167
3191
  /* @__PURE__ */ jsxRuntime.jsx(
3168
- chunkLVR4SR65_js.FormInput,
3192
+ chunkZGVN23J4_js.FormInput,
3169
3193
  {
3170
3194
  label: labels.role,
3171
3195
  value: role,
@@ -3178,7 +3202,7 @@ function AgentNewWizardPageView({
3178
3202
  )
3179
3203
  ] }),
3180
3204
  /* @__PURE__ */ jsxRuntime.jsx(
3181
- chunkLVR4SR65_js.FormTextarea,
3205
+ chunkZGVN23J4_js.FormTextarea,
3182
3206
  {
3183
3207
  label: labels.descriptionLabel,
3184
3208
  value: description,
@@ -3196,7 +3220,7 @@ function AgentNewWizardPageView({
3196
3220
  }
3197
3221
  function renderStep3() {
3198
3222
  return /* @__PURE__ */ jsxRuntime.jsx(
3199
- chunkLVR4SR65_js.SectionCard,
3223
+ chunkZGVN23J4_js.SectionCard,
3200
3224
  {
3201
3225
  variant: "glass",
3202
3226
  header: {
@@ -3204,9 +3228,9 @@ function AgentNewWizardPageView({
3204
3228
  subtitle: labels.connectionPickPrompt
3205
3229
  },
3206
3230
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3207
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3231
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
3208
3232
  /* @__PURE__ */ jsxRuntime.jsx(
3209
- chunkLVR4SR65_js.FormSelect,
3233
+ chunkZGVN23J4_js.FormSelect,
3210
3234
  {
3211
3235
  label: labels.connectionLabel,
3212
3236
  value: connectionId,
@@ -3219,7 +3243,7 @@ function AgentNewWizardPageView({
3219
3243
  }
3220
3244
  ),
3221
3245
  /* @__PURE__ */ jsxRuntime.jsx(
3222
- chunkLVR4SR65_js.FormSelect,
3246
+ chunkZGVN23J4_js.FormSelect,
3223
3247
  {
3224
3248
  label: labels.frameworkLabel,
3225
3249
  value: framework,
@@ -3231,7 +3255,7 @@ function AgentNewWizardPageView({
3231
3255
  }
3232
3256
  ),
3233
3257
  /* @__PURE__ */ jsxRuntime.jsx(
3234
- chunkLVR4SR65_js.FormSelect,
3258
+ chunkZGVN23J4_js.FormSelect,
3235
3259
  {
3236
3260
  label: labels.model,
3237
3261
  value: modelId,
@@ -3244,7 +3268,7 @@ function AgentNewWizardPageView({
3244
3268
  )
3245
3269
  ] }),
3246
3270
  /* @__PURE__ */ jsxRuntime.jsx(
3247
- chunkLVR4SR65_js.FormTextarea,
3271
+ chunkZGVN23J4_js.FormTextarea,
3248
3272
  {
3249
3273
  label: labels.outputSchemaLabel,
3250
3274
  value: outputSchema,
@@ -3263,7 +3287,7 @@ function AgentNewWizardPageView({
3263
3287
  function renderStep4() {
3264
3288
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3265
3289
  /* @__PURE__ */ jsxRuntime.jsx(
3266
- chunkLVR4SR65_js.SectionCard,
3290
+ chunkZGVN23J4_js.SectionCard,
3267
3291
  {
3268
3292
  variant: "glass",
3269
3293
  header: {
@@ -3423,7 +3447,7 @@ function AgentNewWizardPageView({
3423
3447
  }
3424
3448
  ),
3425
3449
  /* @__PURE__ */ jsxRuntime.jsx(
3426
- chunkLVR4SR65_js.SectionCard,
3450
+ chunkZGVN23J4_js.SectionCard,
3427
3451
  {
3428
3452
  variant: "glass",
3429
3453
  header: {
@@ -3466,7 +3490,7 @@ function AgentNewWizardPageView({
3466
3490
  }) })
3467
3491
  ] }),
3468
3492
  /* @__PURE__ */ jsxRuntime.jsx(
3469
- chunkLVR4SR65_js.FormInput,
3493
+ chunkZGVN23J4_js.FormInput,
3470
3494
  {
3471
3495
  label: labels.tagsLabel,
3472
3496
  value: tagsInput,
@@ -3487,7 +3511,7 @@ function AgentNewWizardPageView({
3487
3511
  const connectionLabel = connectionId ? connections.find((c) => c.id === connectionId)?.name ?? labels.connectionInline : labels.connectionInline;
3488
3512
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3489
3513
  /* @__PURE__ */ jsxRuntime.jsx(
3490
- chunkLVR4SR65_js.SectionCard,
3514
+ chunkZGVN23J4_js.SectionCard,
3491
3515
  {
3492
3516
  variant: "glass",
3493
3517
  header: {
@@ -3502,7 +3526,7 @@ function AgentNewWizardPageView({
3502
3526
  }
3503
3527
  ),
3504
3528
  /* @__PURE__ */ jsxRuntime.jsx(
3505
- chunkLVR4SR65_js.SectionCard,
3529
+ chunkZGVN23J4_js.SectionCard,
3506
3530
  {
3507
3531
  variant: "glass",
3508
3532
  header: {
@@ -3531,7 +3555,7 @@ function AgentNewWizardPageView({
3531
3555
  }
3532
3556
  ),
3533
3557
  /* @__PURE__ */ jsxRuntime.jsx(
3534
- chunkLVR4SR65_js.SectionCard,
3558
+ chunkZGVN23J4_js.SectionCard,
3535
3559
  {
3536
3560
  variant: "glass",
3537
3561
  header: {
@@ -3551,7 +3575,7 @@ function AgentNewWizardPageView({
3551
3575
  }
3552
3576
  ),
3553
3577
  /* @__PURE__ */ jsxRuntime.jsxs(
3554
- chunkLVR4SR65_js.SectionCard,
3578
+ chunkZGVN23J4_js.SectionCard,
3555
3579
  {
3556
3580
  variant: "glass",
3557
3581
  header: {
@@ -3595,22 +3619,10 @@ function AgentNewWizardPageView({
3595
3619
  if (step < TOTAL_STEPS) goNext();
3596
3620
  else void submit();
3597
3621
  },
3598
- className: "space-y-5",
3622
+ className: "space-y-4",
3599
3623
  children: [
3600
- /* @__PURE__ */ jsxRuntime.jsx(
3601
- chunkLVR4SR65_js.StepTimeline,
3602
- {
3603
- steps: timelineSteps,
3604
- progressLabel: labels.pageTitle,
3605
- onStepClick: (idx) => {
3606
- goToStep(idx + 1);
3607
- }
3608
- }
3609
- ),
3610
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-5", children: [
3611
- stepBody,
3612
- footer
3613
- ] })
3624
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
3625
+ footer
3614
3626
  ]
3615
3627
  }
3616
3628
  );
@@ -3696,14 +3708,24 @@ function DatasourceNewWizardPageView({
3696
3708
  const [readOnly, setReadOnly] = react.useState(true);
3697
3709
  const [maxPoolSize, setMaxPoolSize] = react.useState("5");
3698
3710
  const [timeoutMs, setTimeoutMs] = react.useState("5000");
3699
- const [allowedTables, setAllowedTables] = react.useState("");
3700
- const [blockedColumns, setBlockedColumns] = react.useState("");
3711
+ const [allowedTablesItems, setAllowedTablesItems] = react.useState([]);
3712
+ const [allowedTablesSelected, setAllowedTablesSelected] = react.useState([]);
3713
+ const [blockedColumnsItems, setBlockedColumnsItems] = react.useState([]);
3714
+ const [blockedColumnsSelected, setBlockedColumnsSelected] = react.useState([]);
3701
3715
  const [maskPii, setMaskPii] = react.useState(false);
3716
+ const allowedTablesStyle = {
3717
+ bg: "bg-amber-500/15",
3718
+ text: "text-amber-700 dark:text-amber-300"
3719
+ };
3720
+ const blockedColumnsStyle = {
3721
+ bg: "bg-rose-500/15",
3722
+ text: "text-rose-700 dark:text-rose-300"
3723
+ };
3702
3724
  const [submitting, setSubmitting] = react.useState(false);
3703
3725
  const [touched, setTouched] = react.useState(false);
3704
3726
  const [testStatus, setTestStatus] = react.useState("idle");
3705
- const dialectOption = react.useMemo(() => dialect ? chunkFIJMOTP4_js.findDialect(dialect) : null, [dialect]);
3706
- const category = react.useMemo(() => dialect ? chunkFIJMOTP4_js.findCategory(dialect) : null, [dialect]);
3727
+ const dialectOption = react.useMemo(() => dialect ? chunk62BD4WLW_js.findDialect(dialect) : null, [dialect]);
3728
+ const category = react.useMemo(() => dialect ? chunk62BD4WLW_js.findCategory(dialect) : null, [dialect]);
3707
3729
  react.useEffect(() => {
3708
3730
  if (dialectOption?.defaultPort && (port === "" || /^[0-9]+$/.test(port))) {
3709
3731
  setPort(String(dialectOption.defaultPort));
@@ -3767,10 +3789,9 @@ function DatasourceNewWizardPageView({
3767
3789
  if (Number.isFinite(pool) && pool > 0) payload.maxPoolSize = pool;
3768
3790
  const timeout = Number(timeoutMs);
3769
3791
  if (Number.isFinite(timeout) && timeout > 0) payload.timeoutMs = timeout;
3770
- const allowed = splitList(allowedTables);
3771
- if (allowed.length > 0) payload.allowedTables = allowed;
3772
- const blocked = splitList(blockedColumns);
3773
- if (blocked.length > 0) payload.blockedColumns = blocked;
3792
+ if (allowedTablesSelected.length > 0) payload.allowedTables = [...allowedTablesSelected];
3793
+ if (blockedColumnsSelected.length > 0) payload.blockedColumns = [...blockedColumnsSelected];
3794
+ if (maskPii) payload.maskPii = true;
3774
3795
  return payload;
3775
3796
  }
3776
3797
  async function handleTestConnection() {
@@ -3787,11 +3808,7 @@ function DatasourceNewWizardPageView({
3787
3808
  async function submit() {
3788
3809
  setSubmitting(true);
3789
3810
  try {
3790
- const payload = {
3791
- ...buildPayload(),
3792
- ...maskPii ? { maskPii: true } : {}
3793
- };
3794
- await onSubmit(payload);
3811
+ await onSubmit(buildPayload());
3795
3812
  } finally {
3796
3813
  setSubmitting(false);
3797
3814
  }
@@ -3827,29 +3844,37 @@ function DatasourceNewWizardPageView({
3827
3844
  labels.wizardStep3Subtitle,
3828
3845
  labels.wizardStep4Subtitle
3829
3846
  ];
3830
- const timelineSteps = stepTitles.map((title, idx) => ({
3847
+ const indicatorSteps = stepTitles.map((title, idx) => ({
3831
3848
  id: String(idx + 1),
3832
- name: title,
3833
- description: stepSubtitles[idx],
3834
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
3849
+ title
3835
3850
  }));
3836
3851
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS2));
3837
3852
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3838
- chunkLVR4SR65_js.HeroSection,
3853
+ chunkZGVN23J4_js.HeroSection,
3839
3854
  {
3840
3855
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
3841
3856
  label: counter,
3842
3857
  title: labels.pageTitle,
3843
3858
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
3844
- gradient: category?.gradient ?? "from-amber-500 to-orange-600"
3859
+ gradient: category?.gradient ?? "from-amber-500 to-orange-600",
3860
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3861
+ chunkZGVN23J4_js.StepIndicator,
3862
+ {
3863
+ accent: "indigo",
3864
+ currentStep: step - 1,
3865
+ onStepChange: (idx) => goToStep(idx + 1),
3866
+ progressLabel: labels.pageTitle,
3867
+ steps: indicatorSteps
3868
+ }
3869
+ )
3845
3870
  }
3846
3871
  );
3847
3872
  function renderStep1() {
3848
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkFIJMOTP4_js.DIALECT_CATEGORIES.map((cat) => {
3873
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunk62BD4WLW_js.DIALECT_CATEGORIES.map((cat) => {
3849
3874
  const color = CATEGORY_COLOR[cat.id] ?? "slate";
3850
3875
  const categoryLabel = labels[cat.labelKey] ?? cat.id;
3851
3876
  return /* @__PURE__ */ jsxRuntime.jsx(
3852
- chunkLVR4SR65_js.SectionCard,
3877
+ chunkZGVN23J4_js.SectionCard,
3853
3878
  {
3854
3879
  variant: "glass",
3855
3880
  header: {
@@ -3867,7 +3892,7 @@ function DatasourceNewWizardPageView({
3867
3892
  const selected = opt.value === dialect;
3868
3893
  const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
3869
3894
  return /* @__PURE__ */ jsxRuntime.jsx(
3870
- chunkLVR4SR65_js.FilterTileButton,
3895
+ chunkZGVN23J4_js.FilterTileButton,
3871
3896
  {
3872
3897
  isActive: selected,
3873
3898
  color,
@@ -3895,7 +3920,7 @@ function DatasourceNewWizardPageView({
3895
3920
  case "standard":
3896
3921
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3897
3922
  /* @__PURE__ */ jsxRuntime.jsx(
3898
- chunkLVR4SR65_js.FormInput,
3923
+ chunkZGVN23J4_js.FormInput,
3899
3924
  {
3900
3925
  label: labels.fieldHost,
3901
3926
  value: host,
@@ -3908,7 +3933,7 @@ function DatasourceNewWizardPageView({
3908
3933
  }
3909
3934
  ),
3910
3935
  /* @__PURE__ */ jsxRuntime.jsx(
3911
- chunkLVR4SR65_js.FormInput,
3936
+ chunkZGVN23J4_js.FormInput,
3912
3937
  {
3913
3938
  label: labels.fieldPort,
3914
3939
  type: "number",
@@ -3920,7 +3945,7 @@ function DatasourceNewWizardPageView({
3920
3945
  }
3921
3946
  ),
3922
3947
  /* @__PURE__ */ jsxRuntime.jsx(
3923
- chunkLVR4SR65_js.FormInput,
3948
+ chunkZGVN23J4_js.FormInput,
3924
3949
  {
3925
3950
  label: labels.fieldDatabase,
3926
3951
  value: database,
@@ -3933,7 +3958,7 @@ function DatasourceNewWizardPageView({
3933
3958
  }
3934
3959
  ),
3935
3960
  /* @__PURE__ */ jsxRuntime.jsx(
3936
- chunkLVR4SR65_js.FormInput,
3961
+ chunkZGVN23J4_js.FormInput,
3937
3962
  {
3938
3963
  label: labels.fieldUsername,
3939
3964
  value: username,
@@ -3945,7 +3970,7 @@ function DatasourceNewWizardPageView({
3945
3970
  }
3946
3971
  ),
3947
3972
  /* @__PURE__ */ jsxRuntime.jsx(
3948
- chunkLVR4SR65_js.FormInput,
3973
+ chunkZGVN23J4_js.FormInput,
3949
3974
  {
3950
3975
  label: labels.fieldPassword,
3951
3976
  type: "password",
@@ -3958,7 +3983,7 @@ function DatasourceNewWizardPageView({
3958
3983
  }
3959
3984
  ),
3960
3985
  /* @__PURE__ */ jsxRuntime.jsx(
3961
- chunkLVR4SR65_js.FormInput,
3986
+ chunkZGVN23J4_js.FormInput,
3962
3987
  {
3963
3988
  label: labels.fieldSchema,
3964
3989
  value: schema,
@@ -3972,7 +3997,7 @@ function DatasourceNewWizardPageView({
3972
3997
  ] });
3973
3998
  case "connection-string":
3974
3999
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
3975
- chunkLVR4SR65_js.FormInput,
4000
+ chunkZGVN23J4_js.FormInput,
3976
4001
  {
3977
4002
  label: labels.fieldConnectionString,
3978
4003
  value: connectionString,
@@ -3987,7 +4012,7 @@ function DatasourceNewWizardPageView({
3987
4012
  case "cloud-bigquery":
3988
4013
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3989
4014
  /* @__PURE__ */ jsxRuntime.jsx(
3990
- chunkLVR4SR65_js.FormInput,
4015
+ chunkZGVN23J4_js.FormInput,
3991
4016
  {
3992
4017
  label: labels.fieldProjectId,
3993
4018
  value: projectId,
@@ -4000,7 +4025,7 @@ function DatasourceNewWizardPageView({
4000
4025
  }
4001
4026
  ),
4002
4027
  /* @__PURE__ */ jsxRuntime.jsx(
4003
- chunkLVR4SR65_js.FormInput,
4028
+ chunkZGVN23J4_js.FormInput,
4004
4029
  {
4005
4030
  label: labels.fieldDataset,
4006
4031
  value: dataset,
@@ -4013,7 +4038,7 @@ function DatasourceNewWizardPageView({
4013
4038
  }
4014
4039
  ),
4015
4040
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
4016
- chunkLVR4SR65_js.FormInput,
4041
+ chunkZGVN23J4_js.FormInput,
4017
4042
  {
4018
4043
  label: labels.fieldKeyFile,
4019
4044
  value: keyFile,
@@ -4028,7 +4053,7 @@ function DatasourceNewWizardPageView({
4028
4053
  case "cloud-snowflake":
4029
4054
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4030
4055
  /* @__PURE__ */ jsxRuntime.jsx(
4031
- chunkLVR4SR65_js.FormInput,
4056
+ chunkZGVN23J4_js.FormInput,
4032
4057
  {
4033
4058
  label: labels.fieldAccount,
4034
4059
  value: account,
@@ -4041,7 +4066,7 @@ function DatasourceNewWizardPageView({
4041
4066
  }
4042
4067
  ),
4043
4068
  /* @__PURE__ */ jsxRuntime.jsx(
4044
- chunkLVR4SR65_js.FormInput,
4069
+ chunkZGVN23J4_js.FormInput,
4045
4070
  {
4046
4071
  label: labels.fieldWarehouse,
4047
4072
  value: warehouseField,
@@ -4054,7 +4079,7 @@ function DatasourceNewWizardPageView({
4054
4079
  }
4055
4080
  ),
4056
4081
  /* @__PURE__ */ jsxRuntime.jsx(
4057
- chunkLVR4SR65_js.FormInput,
4082
+ chunkZGVN23J4_js.FormInput,
4058
4083
  {
4059
4084
  label: labels.fieldDatabase,
4060
4085
  value: database,
@@ -4067,7 +4092,7 @@ function DatasourceNewWizardPageView({
4067
4092
  }
4068
4093
  ),
4069
4094
  /* @__PURE__ */ jsxRuntime.jsx(
4070
- chunkLVR4SR65_js.FormInput,
4095
+ chunkZGVN23J4_js.FormInput,
4071
4096
  {
4072
4097
  label: labels.fieldUsername,
4073
4098
  value: username,
@@ -4080,7 +4105,7 @@ function DatasourceNewWizardPageView({
4080
4105
  }
4081
4106
  ),
4082
4107
  /* @__PURE__ */ jsxRuntime.jsx(
4083
- chunkLVR4SR65_js.FormInput,
4108
+ chunkZGVN23J4_js.FormInput,
4084
4109
  {
4085
4110
  label: labels.fieldPassword,
4086
4111
  type: "password",
@@ -4093,7 +4118,7 @@ function DatasourceNewWizardPageView({
4093
4118
  }
4094
4119
  ),
4095
4120
  /* @__PURE__ */ jsxRuntime.jsx(
4096
- chunkLVR4SR65_js.FormInput,
4121
+ chunkZGVN23J4_js.FormInput,
4097
4122
  {
4098
4123
  label: labels.fieldSchema,
4099
4124
  value: schema,
@@ -4108,7 +4133,7 @@ function DatasourceNewWizardPageView({
4108
4133
  case "cloud-key":
4109
4134
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4110
4135
  /* @__PURE__ */ jsxRuntime.jsx(
4111
- chunkLVR4SR65_js.FormInput,
4136
+ chunkZGVN23J4_js.FormInput,
4112
4137
  {
4113
4138
  label: labels.fieldRegion,
4114
4139
  value: region,
@@ -4121,7 +4146,7 @@ function DatasourceNewWizardPageView({
4121
4146
  }
4122
4147
  ),
4123
4148
  /* @__PURE__ */ jsxRuntime.jsx(
4124
- chunkLVR4SR65_js.FormInput,
4149
+ chunkZGVN23J4_js.FormInput,
4125
4150
  {
4126
4151
  label: labels.fieldToken,
4127
4152
  type: "password",
@@ -4135,7 +4160,7 @@ function DatasourceNewWizardPageView({
4135
4160
  }
4136
4161
  ),
4137
4162
  /* @__PURE__ */ jsxRuntime.jsx(
4138
- chunkLVR4SR65_js.FormInput,
4163
+ chunkZGVN23J4_js.FormInput,
4139
4164
  {
4140
4165
  label: labels.fieldBucket,
4141
4166
  value: bucket,
@@ -4150,7 +4175,7 @@ function DatasourceNewWizardPageView({
4150
4175
  case "vector-key":
4151
4176
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4152
4177
  /* @__PURE__ */ jsxRuntime.jsx(
4153
- chunkLVR4SR65_js.FormInput,
4178
+ chunkZGVN23J4_js.FormInput,
4154
4179
  {
4155
4180
  label: labels.fieldApiKey,
4156
4181
  type: "password",
@@ -4164,7 +4189,7 @@ function DatasourceNewWizardPageView({
4164
4189
  }
4165
4190
  ),
4166
4191
  /* @__PURE__ */ jsxRuntime.jsx(
4167
- chunkLVR4SR65_js.FormInput,
4192
+ chunkZGVN23J4_js.FormInput,
4168
4193
  {
4169
4194
  label: labels.fieldEnvironment,
4170
4195
  value: environment,
@@ -4177,7 +4202,7 @@ function DatasourceNewWizardPageView({
4177
4202
  }
4178
4203
  ),
4179
4204
  /* @__PURE__ */ jsxRuntime.jsx(
4180
- chunkLVR4SR65_js.FormInput,
4205
+ chunkZGVN23J4_js.FormInput,
4181
4206
  {
4182
4207
  label: labels.fieldIndex,
4183
4208
  value: index,
@@ -4193,13 +4218,13 @@ function DatasourceNewWizardPageView({
4193
4218
  }
4194
4219
  function renderStep2() {
4195
4220
  if (!dialectOption) {
4196
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4221
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4197
4222
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: labels.wizardStep1Subtitle }),
4198
4223
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: () => goToStep(1), children: labels.wizardBack }) })
4199
4224
  ] });
4200
4225
  }
4201
4226
  return /* @__PURE__ */ jsxRuntime.jsx(
4202
- chunkLVR4SR65_js.SectionCard,
4227
+ chunkZGVN23J4_js.SectionCard,
4203
4228
  {
4204
4229
  variant: "glass",
4205
4230
  header: {
@@ -4210,7 +4235,7 @@ function DatasourceNewWizardPageView({
4210
4235
  },
4211
4236
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4212
4237
  /* @__PURE__ */ jsxRuntime.jsx(
4213
- chunkLVR4SR65_js.FormInput,
4238
+ chunkZGVN23J4_js.FormInput,
4214
4239
  {
4215
4240
  label: labels.fieldName,
4216
4241
  value: name,
@@ -4222,10 +4247,10 @@ function DatasourceNewWizardPageView({
4222
4247
  required: true
4223
4248
  }
4224
4249
  ),
4225
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: renderConnectionFields() }),
4250
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.FormGrid, { children: renderConnectionFields() }),
4226
4251
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
4227
4252
  /* @__PURE__ */ jsxRuntime.jsx(
4228
- chunkLVR4SR65_js.FormToggle,
4253
+ chunkZGVN23J4_js.FormToggle,
4229
4254
  {
4230
4255
  checked: ssl,
4231
4256
  onChange: (v) => {
@@ -4237,7 +4262,7 @@ function DatasourceNewWizardPageView({
4237
4262
  }
4238
4263
  ),
4239
4264
  /* @__PURE__ */ jsxRuntime.jsx(
4240
- chunkLVR4SR65_js.FormToggle,
4265
+ chunkZGVN23J4_js.FormToggle,
4241
4266
  {
4242
4267
  checked: readOnly,
4243
4268
  onChange: (v) => {
@@ -4259,13 +4284,13 @@ function DatasourceNewWizardPageView({
4259
4284
  onClick: () => void handleTestConnection(),
4260
4285
  disabled: testStatus === "testing",
4261
4286
  children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
4262
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Spinner, { size: "xs" }),
4287
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.Spinner, { size: "xs" }),
4263
4288
  labels.testing
4264
4289
  ] }) : labels.testConnection
4265
4290
  }
4266
4291
  ),
4267
- testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
4268
- testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.StatusBadge, { status: "error", label: labels.connectionFailed })
4292
+ testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
4293
+ testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.StatusBadge, { status: "error", label: labels.connectionFailed })
4269
4294
  ] })
4270
4295
  ] })
4271
4296
  }
@@ -4273,7 +4298,7 @@ function DatasourceNewWizardPageView({
4273
4298
  }
4274
4299
  function renderStep3() {
4275
4300
  return /* @__PURE__ */ jsxRuntime.jsx(
4276
- chunkLVR4SR65_js.SectionCard,
4301
+ chunkZGVN23J4_js.SectionCard,
4277
4302
  {
4278
4303
  variant: "glass",
4279
4304
  header: {
@@ -4281,9 +4306,9 @@ function DatasourceNewWizardPageView({
4281
4306
  subtitle: labels.governanceSectionSubtitle
4282
4307
  },
4283
4308
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4284
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4309
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
4285
4310
  /* @__PURE__ */ jsxRuntime.jsx(
4286
- chunkLVR4SR65_js.FormInput,
4311
+ chunkZGVN23J4_js.FormInput,
4287
4312
  {
4288
4313
  label: labels.fieldMaxPoolSize,
4289
4314
  type: "number",
@@ -4298,7 +4323,7 @@ function DatasourceNewWizardPageView({
4298
4323
  }
4299
4324
  ),
4300
4325
  /* @__PURE__ */ jsxRuntime.jsx(
4301
- chunkLVR4SR65_js.FormInput,
4326
+ chunkZGVN23J4_js.FormInput,
4302
4327
  {
4303
4328
  label: labels.fieldTimeoutMs,
4304
4329
  type: "number",
@@ -4312,34 +4337,56 @@ function DatasourceNewWizardPageView({
4312
4337
  }
4313
4338
  )
4314
4339
  ] }),
4340
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4341
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldAllowedTables }),
4342
+ /* @__PURE__ */ jsxRuntime.jsx(
4343
+ chunkZGVN23J4_js.ChipPicker,
4344
+ {
4345
+ items: allowedTablesItems,
4346
+ selectedIds: allowedTablesSelected,
4347
+ onChange: (ids) => {
4348
+ setAllowedTablesSelected(ids);
4349
+ markTouched();
4350
+ },
4351
+ onItemsChange: (items) => {
4352
+ setAllowedTablesItems(items);
4353
+ markTouched();
4354
+ },
4355
+ allowCustom: true,
4356
+ unselectedStyle: allowedTablesStyle,
4357
+ showActions: false,
4358
+ addPlaceholder: labels.fieldAllowedTablesPlaceholder,
4359
+ addAriaLabel: labels.fieldAllowedTables
4360
+ }
4361
+ ),
4362
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldAllowedTablesHint })
4363
+ ] }),
4364
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4365
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldBlockedColumns }),
4366
+ /* @__PURE__ */ jsxRuntime.jsx(
4367
+ chunkZGVN23J4_js.ChipPicker,
4368
+ {
4369
+ items: blockedColumnsItems,
4370
+ selectedIds: blockedColumnsSelected,
4371
+ onChange: (ids) => {
4372
+ setBlockedColumnsSelected(ids);
4373
+ markTouched();
4374
+ },
4375
+ onItemsChange: (items) => {
4376
+ setBlockedColumnsItems(items);
4377
+ markTouched();
4378
+ },
4379
+ allowCustom: true,
4380
+ unselectedStyle: blockedColumnsStyle,
4381
+ showActions: false,
4382
+ addPlaceholder: labels.fieldBlockedColumnsPlaceholder,
4383
+ addAriaLabel: labels.fieldBlockedColumns
4384
+ }
4385
+ ),
4386
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldBlockedColumnsHint })
4387
+ ] }),
4315
4388
  /* @__PURE__ */ jsxRuntime.jsx(
4316
- chunkLVR4SR65_js.FormInput,
4317
- {
4318
- label: labels.fieldAllowedTables,
4319
- value: allowedTables,
4320
- onValueChange: (v) => {
4321
- setAllowedTables(v);
4322
- markTouched();
4323
- },
4324
- placeholder: labels.fieldAllowedTablesPlaceholder,
4325
- hint: labels.fieldAllowedTablesHint
4326
- }
4327
- ),
4328
- /* @__PURE__ */ jsxRuntime.jsx(
4329
- chunkLVR4SR65_js.FormInput,
4330
- {
4331
- label: labels.fieldBlockedColumns,
4332
- value: blockedColumns,
4333
- onValueChange: (v) => {
4334
- setBlockedColumns(v);
4335
- markTouched();
4336
- },
4337
- placeholder: labels.fieldBlockedColumnsPlaceholder,
4338
- hint: labels.fieldBlockedColumnsHint
4339
- }
4340
- ),
4341
- /* @__PURE__ */ jsxRuntime.jsx(
4342
- chunkLVR4SR65_js.FormCheckbox,
4389
+ chunkZGVN23J4_js.FormCheckbox,
4343
4390
  {
4344
4391
  checked: maskPii,
4345
4392
  onChange: (v) => {
@@ -4357,11 +4404,11 @@ function DatasourceNewWizardPageView({
4357
4404
  function renderStep4() {
4358
4405
  const categoryLabel = category ? labels[category.labelKey] ?? category.id : labels.reviewNoneValue;
4359
4406
  const dialectLabel = dialectOption?.label ?? labels.reviewNoneValue;
4360
- const allowed = splitList(allowedTables);
4361
- const blocked = splitList(blockedColumns);
4407
+ const allowed = allowedTablesSelected;
4408
+ const blocked = blockedColumnsSelected;
4362
4409
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4363
4410
  /* @__PURE__ */ jsxRuntime.jsx(
4364
- chunkLVR4SR65_js.SectionCard,
4411
+ chunkZGVN23J4_js.SectionCard,
4365
4412
  {
4366
4413
  variant: "glass",
4367
4414
  header: {
@@ -4379,7 +4426,7 @@ function DatasourceNewWizardPageView({
4379
4426
  }
4380
4427
  ),
4381
4428
  /* @__PURE__ */ jsxRuntime.jsx(
4382
- chunkLVR4SR65_js.SectionCard,
4429
+ chunkZGVN23J4_js.SectionCard,
4383
4430
  {
4384
4431
  variant: "glass",
4385
4432
  header: {
@@ -4399,7 +4446,7 @@ function DatasourceNewWizardPageView({
4399
4446
  }
4400
4447
  ),
4401
4448
  /* @__PURE__ */ jsxRuntime.jsx(
4402
- chunkLVR4SR65_js.SectionCard,
4449
+ chunkZGVN23J4_js.SectionCard,
4403
4450
  {
4404
4451
  variant: "glass",
4405
4452
  header: {
@@ -4450,20 +4497,10 @@ function DatasourceNewWizardPageView({
4450
4497
  if (step < TOTAL_STEPS2) goNext();
4451
4498
  else void submit();
4452
4499
  },
4453
- className: "space-y-5",
4500
+ className: "space-y-4",
4454
4501
  children: [
4455
- /* @__PURE__ */ jsxRuntime.jsx(
4456
- chunkLVR4SR65_js.StepTimeline,
4457
- {
4458
- steps: timelineSteps,
4459
- progressLabel: labels.pageTitle,
4460
- onStepClick: (idx) => goToStep(idx + 1)
4461
- }
4462
- ),
4463
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-5", children: [
4464
- stepBody,
4465
- footer
4466
- ] })
4502
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
4503
+ footer
4467
4504
  ]
4468
4505
  }
4469
4506
  );
@@ -4478,9 +4515,6 @@ function ReviewRow2({ label, value }) {
4478
4515
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
4479
4516
  ] });
4480
4517
  }
4481
- function splitList(raw) {
4482
- return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
4483
- }
4484
4518
  async function simulateTest() {
4485
4519
  await new Promise((r) => setTimeout(r, 1500));
4486
4520
  return true;
@@ -4594,11 +4628,16 @@ function RuleNewWizardPageView({
4594
4628
  const [priority, setPriority] = react.useState(50);
4595
4629
  const [enabled, setEnabled] = react.useState(true);
4596
4630
  const [status, setStatus] = react.useState("active");
4597
- const [tagsInput, setTagsInput] = react.useState("");
4631
+ const [tagsItems, setTagsItems] = react.useState([]);
4632
+ const [tagsSelected, setTagsSelected] = react.useState([]);
4633
+ const tagsStyle = {
4634
+ bg: "bg-fuchsia-500/15",
4635
+ text: "text-fuchsia-700 dark:text-fuchsia-300"
4636
+ };
4598
4637
  const [combinator, setCombinator] = react.useState("and");
4599
- const [condition, setCondition] = react.useState(chunkEC34PGUO_js.defaultRuleCondition());
4638
+ const [condition, setCondition] = react.useState(chunkH475T2N7_js.defaultRuleCondition());
4600
4639
  const [actionTileId, setActionTileId] = react.useState("");
4601
- const [action, setAction] = react.useState(chunkEC34PGUO_js.defaultRuleAction());
4640
+ const [action, setAction] = react.useState(chunkH475T2N7_js.defaultRuleAction());
4602
4641
  const [validFromDate, setValidFromDate] = react.useState(null);
4603
4642
  const [validFromTime, setValidFromTime] = react.useState(null);
4604
4643
  const [validUntilDate, setValidUntilDate] = react.useState(null);
@@ -4644,49 +4683,40 @@ function RuleNewWizardPageView({
4644
4683
  next.setHours(time?.hours ?? 0, time?.minutes ?? 0, 0, 0);
4645
4684
  return next.toISOString();
4646
4685
  }
4647
- const tags = react.useMemo(
4648
- () => tagsInput.split(",").map((t) => t.trim()).filter((t) => t.length > 0),
4649
- [tagsInput]
4650
- );
4686
+ const tags = react.useMemo(() => [...tagsSelected], [tagsSelected]);
4651
4687
  function buildPayload() {
4652
4688
  const validFrom = combineDateTime(validFromDate, validFromTime);
4653
4689
  const validUntil = noExpiry ? null : combineDateTime(validUntilDate, validUntilTime);
4654
- const conditionWithCombinator = combinator === "not" ? {
4655
- operator: "boolean_expression",
4656
- combinator: "and",
4657
- operands: [condition],
4658
- // The engine ignores extra fields, so this is forward-compat.
4659
- ...{ notFlag: true }
4660
- } : combinator === "or" ? {
4690
+ const conditionWithCombinator = combinator === "and" ? condition : {
4661
4691
  operator: "boolean_expression",
4662
- combinator: "or",
4692
+ combinator,
4663
4693
  operands: [condition]
4664
- } : condition;
4694
+ };
4665
4695
  const finalAction = {
4666
4696
  type: action.type,
4667
4697
  params: {
4668
4698
  ...action.params ?? {},
4669
- actionVariant: actionTileId,
4670
- recurrence,
4671
- ...recurrence === "cron" && cronExpression ? { cronExpression } : {},
4672
- ...recurrence === "recurring" ? {
4673
- weekdays,
4674
- ...recurringTime ? { timeOfDay: `${pad(recurringTime.hours)}:${pad(recurringTime.minutes)}` } : {}
4675
- } : {}
4699
+ actionVariant: actionTileId
4676
4700
  }
4677
4701
  };
4678
- const wireStatus = status === "paused" ? "draft" : status;
4702
+ const recurrencePayload = recurrence === "cron" ? { kind: "cron", expression: cronExpression.trim() } : recurrence === "recurring" ? {
4703
+ kind: "recurring",
4704
+ weekdays: [...weekdays],
4705
+ timeOfDay: recurringTime ? `${pad(recurringTime.hours)}:${pad(recurringTime.minutes)}` : "00:00"
4706
+ } : { kind: "one-off" };
4679
4707
  return {
4680
4708
  name: name.trim() || "Untitled Rule",
4681
4709
  description: description.trim() || void 0,
4682
4710
  enabled,
4683
4711
  priority,
4684
- status: wireStatus,
4712
+ // `paused` ships as-is — backend understands it natively (Fallback 2).
4713
+ status,
4685
4714
  validFrom,
4686
4715
  validUntil,
4687
4716
  tags,
4688
4717
  condition: conditionWithCombinator,
4689
- action: finalAction
4718
+ action: finalAction,
4719
+ recurrence: recurrencePayload
4690
4720
  };
4691
4721
  }
4692
4722
  async function submit() {
@@ -4730,26 +4760,34 @@ function RuleNewWizardPageView({
4730
4760
  labels.wizardStep4Subtitle,
4731
4761
  labels.wizardStep5Subtitle
4732
4762
  ];
4733
- const timelineSteps = stepTitles.map((title, idx) => ({
4763
+ const indicatorSteps = stepTitles.map((title, idx) => ({
4734
4764
  id: String(idx + 1),
4735
- name: title,
4736
- description: stepSubtitles[idx],
4737
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
4765
+ title
4738
4766
  }));
4739
4767
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS3));
4740
4768
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
4741
- chunkLVR4SR65_js.HeroSection,
4769
+ chunkZGVN23J4_js.HeroSection,
4742
4770
  {
4743
4771
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
4744
4772
  label: counter,
4745
4773
  title: labels.pageTitle,
4746
4774
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
4747
- gradient: "from-fuchsia-500 to-purple-700"
4775
+ gradient: "from-fuchsia-500 to-purple-700",
4776
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4777
+ chunkZGVN23J4_js.StepIndicator,
4778
+ {
4779
+ accent: "violet",
4780
+ currentStep: step - 1,
4781
+ onStepChange: (idx) => goToStep(idx + 1),
4782
+ progressLabel: labels.pageTitle,
4783
+ steps: indicatorSteps
4784
+ }
4785
+ )
4748
4786
  }
4749
4787
  );
4750
4788
  function renderStep1() {
4751
4789
  return /* @__PURE__ */ jsxRuntime.jsx(
4752
- chunkLVR4SR65_js.SectionCard,
4790
+ chunkZGVN23J4_js.SectionCard,
4753
4791
  {
4754
4792
  variant: "glass",
4755
4793
  header: {
@@ -4758,7 +4796,7 @@ function RuleNewWizardPageView({
4758
4796
  },
4759
4797
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4760
4798
  /* @__PURE__ */ jsxRuntime.jsx(
4761
- chunkLVR4SR65_js.FormInput,
4799
+ chunkZGVN23J4_js.FormInput,
4762
4800
  {
4763
4801
  label: labels.nameLabel,
4764
4802
  value: name,
@@ -4771,7 +4809,7 @@ function RuleNewWizardPageView({
4771
4809
  }
4772
4810
  ),
4773
4811
  /* @__PURE__ */ jsxRuntime.jsx(
4774
- chunkLVR4SR65_js.FormTextarea,
4812
+ chunkZGVN23J4_js.FormTextarea,
4775
4813
  {
4776
4814
  label: labels.descriptionLabel,
4777
4815
  value: description,
@@ -4807,7 +4845,7 @@ function RuleNewWizardPageView({
4807
4845
  }
4808
4846
  ),
4809
4847
  /* @__PURE__ */ jsxRuntime.jsx(
4810
- chunkLVR4SR65_js.FormToggle,
4848
+ chunkZGVN23J4_js.FormToggle,
4811
4849
  {
4812
4850
  checked: enabled,
4813
4851
  onChange: (v) => {
@@ -4824,7 +4862,7 @@ function RuleNewWizardPageView({
4824
4862
  }
4825
4863
  function renderStep2() {
4826
4864
  return /* @__PURE__ */ jsxRuntime.jsx(
4827
- chunkLVR4SR65_js.SectionCard,
4865
+ chunkZGVN23J4_js.SectionCard,
4828
4866
  {
4829
4867
  variant: "glass",
4830
4868
  header: {
@@ -4835,7 +4873,7 @@ function RuleNewWizardPageView({
4835
4873
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4836
4874
  /* @__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 }),
4837
4875
  /* @__PURE__ */ jsxRuntime.jsx(
4838
- chunkLVR4SR65_js.SegmentedControl,
4876
+ chunkZGVN23J4_js.SegmentedControl,
4839
4877
  {
4840
4878
  segments: [
4841
4879
  { value: "and", label: labels.combinatorAnd },
@@ -4852,7 +4890,7 @@ function RuleNewWizardPageView({
4852
4890
  )
4853
4891
  ] }),
4854
4892
  /* @__PURE__ */ jsxRuntime.jsx(
4855
- chunkEC34PGUO_js.RuleConditionBuilder,
4893
+ chunkH475T2N7_js.RuleConditionBuilder,
4856
4894
  {
4857
4895
  value: condition,
4858
4896
  onChange: (next) => {
@@ -4868,7 +4906,7 @@ function RuleNewWizardPageView({
4868
4906
  function renderStep3() {
4869
4907
  const selectedTile = ACTION_TILES.find((t) => t.id === actionTileId) ?? null;
4870
4908
  return /* @__PURE__ */ jsxRuntime.jsx(
4871
- chunkLVR4SR65_js.SectionCard,
4909
+ chunkZGVN23J4_js.SectionCard,
4872
4910
  {
4873
4911
  variant: "glass",
4874
4912
  header: {
@@ -4888,7 +4926,7 @@ function RuleNewWizardPageView({
4888
4926
  const label = labels[tile.labelKey] ?? tile.id;
4889
4927
  const description2 = labels[tile.descriptionKey] ?? "";
4890
4928
  return /* @__PURE__ */ jsxRuntime.jsx(
4891
- chunkLVR4SR65_js.FilterTileButton,
4929
+ chunkZGVN23J4_js.FilterTileButton,
4892
4930
  {
4893
4931
  isActive: selected,
4894
4932
  color: tile.color,
@@ -4906,7 +4944,7 @@ function RuleNewWizardPageView({
4906
4944
  }
4907
4945
  ),
4908
4946
  selectedTile && /* @__PURE__ */ jsxRuntime.jsx(
4909
- chunkLVR4SR65_js.SectionCard,
4947
+ chunkZGVN23J4_js.SectionCard,
4910
4948
  {
4911
4949
  variant: "glass",
4912
4950
  header: {
@@ -4914,7 +4952,7 @@ function RuleNewWizardPageView({
4914
4952
  subtitle: labels.actionConfigSubtitle
4915
4953
  },
4916
4954
  children: /* @__PURE__ */ jsxRuntime.jsx(
4917
- chunkEC34PGUO_js.RuleActionBuilder,
4955
+ chunkH475T2N7_js.RuleActionBuilder,
4918
4956
  {
4919
4957
  value: action,
4920
4958
  onChange: (next) => {
@@ -4931,7 +4969,7 @@ function RuleNewWizardPageView({
4931
4969
  }
4932
4970
  function renderStep4() {
4933
4971
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(
4934
- chunkLVR4SR65_js.SectionCard,
4972
+ chunkZGVN23J4_js.SectionCard,
4935
4973
  {
4936
4974
  variant: "glass",
4937
4975
  header: {
@@ -4939,12 +4977,12 @@ function RuleNewWizardPageView({
4939
4977
  subtitle: labels.scheduleSectionSubtitle
4940
4978
  },
4941
4979
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4942
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4980
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZGVN23J4_js.FormGrid, { children: [
4943
4981
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
4944
4982
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
4945
4983
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4946
4984
  /* @__PURE__ */ jsxRuntime.jsx(
4947
- chunkLVR4SR65_js.DatePicker,
4985
+ chunkZGVN23J4_js.DatePicker,
4948
4986
  {
4949
4987
  value: validFromDate,
4950
4988
  onChange: (d) => {
@@ -4955,7 +4993,7 @@ function RuleNewWizardPageView({
4955
4993
  }
4956
4994
  ),
4957
4995
  /* @__PURE__ */ jsxRuntime.jsx(
4958
- chunkLVR4SR65_js.TimePicker,
4996
+ chunkZGVN23J4_js.TimePicker,
4959
4997
  {
4960
4998
  value: validFromTime,
4961
4999
  onChange: (t) => {
@@ -4971,7 +5009,7 @@ function RuleNewWizardPageView({
4971
5009
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
4972
5010
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4973
5011
  /* @__PURE__ */ jsxRuntime.jsx(
4974
- chunkLVR4SR65_js.DatePicker,
5012
+ chunkZGVN23J4_js.DatePicker,
4975
5013
  {
4976
5014
  value: validUntilDate,
4977
5015
  onChange: (d) => {
@@ -4982,7 +5020,7 @@ function RuleNewWizardPageView({
4982
5020
  }
4983
5021
  ),
4984
5022
  /* @__PURE__ */ jsxRuntime.jsx(
4985
- chunkLVR4SR65_js.TimePicker,
5023
+ chunkZGVN23J4_js.TimePicker,
4986
5024
  {
4987
5025
  value: validUntilTime,
4988
5026
  onChange: (t) => {
@@ -4996,7 +5034,7 @@ function RuleNewWizardPageView({
4996
5034
  ] })
4997
5035
  ] }),
4998
5036
  /* @__PURE__ */ jsxRuntime.jsx(
4999
- chunkLVR4SR65_js.FormCheckbox,
5037
+ chunkZGVN23J4_js.FormCheckbox,
5000
5038
  {
5001
5039
  checked: noExpiry,
5002
5040
  onChange: (v) => {
@@ -5010,7 +5048,7 @@ function RuleNewWizardPageView({
5010
5048
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5011
5049
  /* @__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 }),
5012
5050
  /* @__PURE__ */ jsxRuntime.jsx(
5013
- chunkLVR4SR65_js.SegmentedControl,
5051
+ chunkZGVN23J4_js.SegmentedControl,
5014
5052
  {
5015
5053
  segments: [
5016
5054
  { value: "active", label: labels.statusActive },
@@ -5026,23 +5064,34 @@ function RuleNewWizardPageView({
5026
5064
  }
5027
5065
  )
5028
5066
  ] }),
5029
- /* @__PURE__ */ jsxRuntime.jsx(
5030
- chunkLVR4SR65_js.FormInput,
5031
- {
5032
- label: labels.tagsLabel,
5033
- value: tagsInput,
5034
- onValueChange: (v) => {
5035
- setTagsInput(v);
5036
- markTouched();
5037
- },
5038
- placeholder: labels.tagsPlaceholder,
5039
- hint: labels.tagsHint
5040
- }
5041
- ),
5067
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
5068
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.tagsLabel }),
5069
+ /* @__PURE__ */ jsxRuntime.jsx(
5070
+ chunkZGVN23J4_js.ChipPicker,
5071
+ {
5072
+ items: tagsItems,
5073
+ selectedIds: tagsSelected,
5074
+ onChange: (ids) => {
5075
+ setTagsSelected(ids);
5076
+ markTouched();
5077
+ },
5078
+ onItemsChange: (items) => {
5079
+ setTagsItems(items);
5080
+ markTouched();
5081
+ },
5082
+ allowCustom: true,
5083
+ unselectedStyle: tagsStyle,
5084
+ showActions: false,
5085
+ addPlaceholder: labels.tagsPlaceholder,
5086
+ addAriaLabel: labels.tagsLabel
5087
+ }
5088
+ ),
5089
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.tagsHint })
5090
+ ] }),
5042
5091
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5043
5092
  /* @__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 }),
5044
5093
  /* @__PURE__ */ jsxRuntime.jsx(
5045
- chunkLVR4SR65_js.SegmentedControl,
5094
+ chunkZGVN23J4_js.SegmentedControl,
5046
5095
  {
5047
5096
  segments: [
5048
5097
  { value: "one-off", label: labels.recurrenceOneOff },
@@ -5059,7 +5108,7 @@ function RuleNewWizardPageView({
5059
5108
  )
5060
5109
  ] }),
5061
5110
  recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
5062
- chunkLVR4SR65_js.FormInput,
5111
+ chunkZGVN23J4_js.FormInput,
5063
5112
  {
5064
5113
  label: labels.cronExpressionLabel,
5065
5114
  value: cronExpression,
@@ -5074,34 +5123,30 @@ function RuleNewWizardPageView({
5074
5123
  recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
5075
5124
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5076
5125
  /* @__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 }),
5077
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: WEEKDAYS.map((d) => {
5078
- const selected = weekdays.includes(d.id);
5079
- const label = labels[d.labelKey] ?? d.id;
5080
- return /* @__PURE__ */ jsxRuntime.jsx(
5081
- "button",
5082
- {
5083
- type: "button",
5084
- "aria-pressed": selected,
5085
- onClick: () => {
5086
- setWeekdays(
5087
- (current) => current.includes(d.id) ? current.filter((id) => id !== d.id) : [...current, d.id]
5088
- );
5089
- markTouched();
5090
- },
5091
- className: [
5092
- "inline-flex h-9 min-w-9 items-center justify-center rounded-full px-3 text-xs font-semibold transition",
5093
- selected ? "bg-fuchsia-500 text-white shadow ring-2 ring-fuchsia-300/70" : "liquid-surface text-slate-700 dark:text-slate-300 hover:bg-fuchsia-500/10"
5094
- ].join(" "),
5095
- children: label
5126
+ /* @__PURE__ */ jsxRuntime.jsx(
5127
+ chunkZGVN23J4_js.ChipPicker,
5128
+ {
5129
+ items: WEEKDAYS.map((d) => ({
5130
+ id: d.id,
5131
+ name: labels[d.labelKey] ?? d.id,
5132
+ style: {
5133
+ bg: "bg-fuchsia-500/15",
5134
+ text: "text-fuchsia-700 dark:text-fuchsia-300"
5135
+ }
5136
+ })),
5137
+ selectedIds: weekdays,
5138
+ onChange: (ids) => {
5139
+ setWeekdays(ids);
5140
+ markTouched();
5096
5141
  },
5097
- d.id
5098
- );
5099
- }) })
5142
+ showActions: false
5143
+ }
5144
+ )
5100
5145
  ] }),
5101
5146
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5102
5147
  /* @__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 }),
5103
5148
  /* @__PURE__ */ jsxRuntime.jsx(
5104
- chunkLVR4SR65_js.TimePicker,
5149
+ chunkZGVN23J4_js.TimePicker,
5105
5150
  {
5106
5151
  value: recurringTime,
5107
5152
  onChange: (t) => {
@@ -5123,7 +5168,7 @@ function RuleNewWizardPageView({
5123
5168
  const actionSentence = humanReadableAction(payload.action, labels, ACTION_TILES, actionTileId);
5124
5169
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5125
5170
  /* @__PURE__ */ jsxRuntime.jsx(
5126
- chunkLVR4SR65_js.SectionCard,
5171
+ chunkZGVN23J4_js.SectionCard,
5127
5172
  {
5128
5173
  variant: "glass",
5129
5174
  header: {
@@ -5149,7 +5194,7 @@ function RuleNewWizardPageView({
5149
5194
  }
5150
5195
  ),
5151
5196
  /* @__PURE__ */ jsxRuntime.jsxs(
5152
- chunkLVR4SR65_js.SectionCard,
5197
+ chunkZGVN23J4_js.SectionCard,
5153
5198
  {
5154
5199
  variant: "glass",
5155
5200
  header: {
@@ -5168,7 +5213,7 @@ function RuleNewWizardPageView({
5168
5213
  }
5169
5214
  ),
5170
5215
  /* @__PURE__ */ jsxRuntime.jsxs(
5171
- chunkLVR4SR65_js.SectionCard,
5216
+ chunkZGVN23J4_js.SectionCard,
5172
5217
  {
5173
5218
  variant: "glass",
5174
5219
  header: {
@@ -5186,7 +5231,7 @@ function RuleNewWizardPageView({
5186
5231
  }
5187
5232
  ),
5188
5233
  /* @__PURE__ */ jsxRuntime.jsx(
5189
- chunkLVR4SR65_js.SectionCard,
5234
+ chunkZGVN23J4_js.SectionCard,
5190
5235
  {
5191
5236
  variant: "glass",
5192
5237
  header: {
@@ -5252,20 +5297,10 @@ function RuleNewWizardPageView({
5252
5297
  if (step < TOTAL_STEPS3) goNext();
5253
5298
  else void submit();
5254
5299
  },
5255
- className: "space-y-5",
5300
+ className: "space-y-4",
5256
5301
  children: [
5257
- /* @__PURE__ */ jsxRuntime.jsx(
5258
- chunkLVR4SR65_js.StepTimeline,
5259
- {
5260
- steps: timelineSteps,
5261
- progressLabel: labels.pageTitle,
5262
- onStepClick: (idx) => goToStep(idx + 1)
5263
- }
5264
- ),
5265
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-5", children: [
5266
- stepBody,
5267
- footer
5268
- ] })
5302
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
5303
+ footer
5269
5304
  ]
5270
5305
  }
5271
5306
  );
@@ -5330,31 +5365,31 @@ function humanReadableAction(action, labels, tiles, actionTileId) {
5330
5365
 
5331
5366
  Object.defineProperty(exports, "RolesPageView", {
5332
5367
  enumerable: true,
5333
- get: function () { return chunkYSYEV2Z6_js.RolesPageView; }
5368
+ get: function () { return chunkZ6FZQOTW_js.RolesPageView; }
5334
5369
  });
5335
5370
  Object.defineProperty(exports, "UsersPageView", {
5336
5371
  enumerable: true,
5337
- get: function () { return chunkYSYEV2Z6_js.UsersPageView; }
5372
+ get: function () { return chunkZ6FZQOTW_js.UsersPageView; }
5338
5373
  });
5339
5374
  Object.defineProperty(exports, "DIALECT_CATEGORIES", {
5340
5375
  enumerable: true,
5341
- get: function () { return chunkFIJMOTP4_js.DIALECT_CATEGORIES; }
5376
+ get: function () { return chunk62BD4WLW_js.DIALECT_CATEGORIES; }
5342
5377
  });
5343
5378
  Object.defineProperty(exports, "DatasourceFormModal", {
5344
5379
  enumerable: true,
5345
- get: function () { return chunkFIJMOTP4_js.DatasourceFormModal; }
5380
+ get: function () { return chunk62BD4WLW_js.DatasourceFormModal; }
5346
5381
  });
5347
5382
  Object.defineProperty(exports, "DatasourceModal", {
5348
5383
  enumerable: true,
5349
- get: function () { return chunkFIJMOTP4_js.DatasourceModal; }
5384
+ get: function () { return chunk62BD4WLW_js.DatasourceModal; }
5350
5385
  });
5351
5386
  Object.defineProperty(exports, "findCategory", {
5352
5387
  enumerable: true,
5353
- get: function () { return chunkFIJMOTP4_js.findCategory; }
5388
+ get: function () { return chunk62BD4WLW_js.findCategory; }
5354
5389
  });
5355
5390
  Object.defineProperty(exports, "findDialect", {
5356
5391
  enumerable: true,
5357
- get: function () { return chunkFIJMOTP4_js.findDialect; }
5392
+ get: function () { return chunk62BD4WLW_js.findDialect; }
5358
5393
  });
5359
5394
  exports.AgentNewWizardPageView = AgentNewWizardPageView;
5360
5395
  exports.AgentsConfigPageView = AgentsConfigPageView;