@datatechsolutions/ui 3.10.0 → 3.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +108 -108
  6. package/dist/astrlabe/index.mjs +4 -4
  7. package/dist/astrlabe/workflow-canvas.js +4 -4
  8. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  9. package/dist/{chunk-JB3U6ORY.mjs → chunk-3U3CIARA.mjs} +3 -3
  10. package/dist/{chunk-JB3U6ORY.mjs.map → chunk-3U3CIARA.mjs.map} +1 -1
  11. package/dist/{chunk-5U43K6G3.mjs → chunk-7DZ2C5IN.mjs} +24 -22
  12. package/dist/chunk-7DZ2C5IN.mjs.map +1 -0
  13. package/dist/{chunk-EC34PGUO.js → chunk-APONR6ZM.js} +136 -136
  14. package/dist/chunk-APONR6ZM.js.map +1 -0
  15. package/dist/{chunk-AMESLEIO.js → chunk-BTMHQCDB.js} +63 -63
  16. package/dist/{chunk-AMESLEIO.js.map → chunk-BTMHQCDB.js.map} +1 -1
  17. package/dist/{chunk-L3R425GB.js → chunk-CLXEVSGB.js} +13 -13
  18. package/dist/{chunk-L3R425GB.js.map → chunk-CLXEVSGB.js.map} +1 -1
  19. package/dist/{chunk-TSNKICPP.js → chunk-CVCMJJ56.js} +10 -10
  20. package/dist/{chunk-TSNKICPP.js.map → chunk-CVCMJJ56.js.map} +1 -1
  21. package/dist/{chunk-MSMEECO6.js → chunk-DPXCJVJT.js} +9 -9
  22. package/dist/{chunk-MSMEECO6.js.map → chunk-DPXCJVJT.js.map} +1 -1
  23. package/dist/{chunk-A256OE5E.mjs → chunk-E3NMVWRL.mjs} +5 -5
  24. package/dist/chunk-E3NMVWRL.mjs.map +1 -0
  25. package/dist/{chunk-HEXTU6W3.mjs → chunk-I77TTBYO.mjs} +6 -6
  26. package/dist/{chunk-HEXTU6W3.mjs.map → chunk-I77TTBYO.mjs.map} +1 -1
  27. package/dist/{chunk-RHRJXK5R.mjs → chunk-IGOMJHC6.mjs} +11 -3
  28. package/dist/chunk-IGOMJHC6.mjs.map +1 -0
  29. package/dist/{chunk-DA3H7ERQ.mjs → chunk-IHOCYBHM.mjs} +3 -3
  30. package/dist/{chunk-DA3H7ERQ.mjs.map → chunk-IHOCYBHM.mjs.map} +1 -1
  31. package/dist/{chunk-C4D3EI5L.mjs → chunk-K3LIDGMA.mjs} +3 -3
  32. package/dist/{chunk-C4D3EI5L.mjs.map → chunk-K3LIDGMA.mjs.map} +1 -1
  33. package/dist/{chunk-YSYEV2Z6.js → chunk-KDVZIDVF.js} +46 -44
  34. package/dist/chunk-KDVZIDVF.js.map +1 -0
  35. package/dist/{chunk-NM37GLCL.mjs → chunk-LHAOIPYP.mjs} +3 -3
  36. package/dist/{chunk-NM37GLCL.mjs.map → chunk-LHAOIPYP.mjs.map} +1 -1
  37. package/dist/{chunk-MAOZWOA6.js → chunk-LM6BJOKX.js} +55 -55
  38. package/dist/{chunk-MAOZWOA6.js.map → chunk-LM6BJOKX.js.map} +1 -1
  39. package/dist/{chunk-2A45ZEK4.js → chunk-MN777KLN.js} +45 -45
  40. package/dist/{chunk-2A45ZEK4.js.map → chunk-MN777KLN.js.map} +1 -1
  41. package/dist/{chunk-FIJMOTP4.js → chunk-NW32BM3F.js} +34 -34
  42. package/dist/{chunk-FIJMOTP4.js.map → chunk-NW32BM3F.js.map} +1 -1
  43. package/dist/{chunk-W6MBDTKF.mjs → chunk-O4DIKNNH.mjs} +3 -3
  44. package/dist/{chunk-W6MBDTKF.mjs.map → chunk-O4DIKNNH.mjs.map} +1 -1
  45. package/dist/{chunk-5AKTDJFR.js → chunk-OD2AZBEX.js} +25 -25
  46. package/dist/{chunk-5AKTDJFR.js.map → chunk-OD2AZBEX.js.map} +1 -1
  47. package/dist/{chunk-5KI7FB3E.mjs → chunk-OKCEK7GH.mjs} +225 -234
  48. package/dist/chunk-OKCEK7GH.mjs.map +1 -0
  49. package/dist/{chunk-KHUWFL6W.js → chunk-OO4YMN4P.js} +4 -4
  50. package/dist/{chunk-KHUWFL6W.js.map → chunk-OO4YMN4P.js.map} +1 -1
  51. package/dist/{chunk-O4HH77A4.js → chunk-OSXBMLZP.js} +68 -68
  52. package/dist/{chunk-O4HH77A4.js.map → chunk-OSXBMLZP.js.map} +1 -1
  53. package/dist/{chunk-6ZYATZS3.mjs → chunk-Q6MMJYEG.mjs} +3 -3
  54. package/dist/{chunk-6ZYATZS3.mjs.map → chunk-Q6MMJYEG.mjs.map} +1 -1
  55. package/dist/{chunk-NSZN54HW.js → chunk-QASAHGLE.js} +4 -4
  56. package/dist/{chunk-NSZN54HW.js.map → chunk-QASAHGLE.js.map} +1 -1
  57. package/dist/{chunk-BU4WMSK3.mjs → chunk-QDW3IJIL.mjs} +3 -3
  58. package/dist/{chunk-BU4WMSK3.mjs.map → chunk-QDW3IJIL.mjs.map} +1 -1
  59. package/dist/{chunk-FENA4YGN.mjs → chunk-QKWNQOJB.mjs} +3 -3
  60. package/dist/{chunk-FENA4YGN.mjs.map → chunk-QKWNQOJB.mjs.map} +1 -1
  61. package/dist/{chunk-H7X3SXMB.mjs → chunk-S46LUR7O.mjs} +7 -7
  62. package/dist/{chunk-H7X3SXMB.mjs.map → chunk-S46LUR7O.mjs.map} +1 -1
  63. package/dist/{chunk-FD376DZ6.mjs → chunk-S4LHC5SF.mjs} +3 -3
  64. package/dist/{chunk-FD376DZ6.mjs.map → chunk-S4LHC5SF.mjs.map} +1 -1
  65. package/dist/{chunk-B76RTA7D.js → chunk-SSKKTSMA.js} +35 -35
  66. package/dist/{chunk-B76RTA7D.js.map → chunk-SSKKTSMA.js.map} +1 -1
  67. package/dist/{chunk-LVR4SR65.js → chunk-TIJXCRM4.js} +223 -234
  68. package/dist/chunk-TIJXCRM4.js.map +1 -0
  69. package/dist/{chunk-6UX2SRA2.mjs → chunk-VHU5FWFB.mjs} +3 -3
  70. package/dist/{chunk-6UX2SRA2.mjs.map → chunk-VHU5FWFB.mjs.map} +1 -1
  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 +663 -671
  76. package/dist/index.mjs +2 -2
  77. package/dist/platform/admin/index.js +10 -10
  78. package/dist/platform/admin/index.mjs +4 -4
  79. package/dist/platform/agents-workspace.js +7 -7
  80. package/dist/platform/agents-workspace.mjs +6 -6
  81. package/dist/platform/app-shell.js +4 -4
  82. package/dist/platform/app-shell.mjs +3 -3
  83. package/dist/platform/auth/index.js +22 -22
  84. package/dist/platform/auth/index.mjs +4 -4
  85. package/dist/platform/billing/index.js +4 -4
  86. package/dist/platform/billing/index.mjs +3 -3
  87. package/dist/platform/impersonation/index.js +4 -4
  88. package/dist/platform/impersonation/index.mjs +3 -3
  89. package/dist/platform/index.js +82 -82
  90. package/dist/platform/index.mjs +18 -18
  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 +734 -701
  94. package/dist/platform/pages/index.js.map +1 -1
  95. package/dist/platform/pages/index.mjs +452 -419
  96. package/dist/platform/pages/index.mjs.map +1 -1
  97. package/dist/platform/settings/index.js +7 -7
  98. package/dist/platform/settings/index.mjs +6 -6
  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 +5 -5
  104. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  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,15 +2,15 @@
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 chunkKDVZIDVF_js = require('../../chunk-KDVZIDVF.js');
6
+ var chunkNW32BM3F_js = require('../../chunk-NW32BM3F.js');
7
+ var chunkAPONR6ZM_js = require('../../chunk-APONR6ZM.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');
10
+ require('../../chunk-OSXBMLZP.js');
11
+ var chunkTIJXCRM4_js = require('../../chunk-TIJXCRM4.js');
12
12
  require('../../chunk-YXN2K77G.js');
13
- require('../../chunk-SY4MUT5V.js');
13
+ require('../../chunk-ZUU7G3PC.js');
14
14
  require('../../chunk-2OZZH2IO.js');
15
15
  require('../../chunk-EZQ2D47U.js');
16
16
  var chunkBHOT22QL_js = require('../../chunk-BHOT22QL.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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
173
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
174
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
175
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
176
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
178
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
345
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
346
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
348
347
  /* @__PURE__ */ jsxRuntime.jsx(
349
- chunkLVR4SR65_js.FormSelect,
348
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormInput, { name: "reason", label: labels.reason }),
357
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
358
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
359
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
536
535
  /* @__PURE__ */ jsxRuntime.jsx(
537
- chunkLVR4SR65_js.FormInput,
536
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
677
676
  /* @__PURE__ */ jsxRuntime.jsx(
678
- chunkLVR4SR65_js.FormSelect,
677
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
737
736
  /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkLVR4SR65_js.FormInput,
737
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
799
798
  /* @__PURE__ */ jsxRuntime.jsx(
800
- chunkLVR4SR65_js.FormInput,
799
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_js.FormInput,
823
822
  {
824
823
  label: "Credential secret id",
825
824
  value: stringProp(config, "credentialRef"),
@@ -956,15 +955,24 @@ 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
+ chunkTIJXCRM4_js.HeroSection,
960
959
  {
961
960
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
962
961
  label: labels.title,
963
962
  title: labels.title,
964
963
  subtitle: labels.subtitle,
965
964
  gradient: "from-fuchsia-500 to-purple-700",
966
- toolbar: /* @__PURE__ */ jsxRuntime.jsx(
967
- chunkLVR4SR65_js.CreateActionButton,
965
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
966
+ chunkTIJXCRM4_js.SearchBar,
967
+ {
968
+ searchTerm,
969
+ onSearchChange: setSearchTerm,
970
+ placeholder: labels.searchPlaceholder ?? labels.title,
971
+ noBorder: true
972
+ }
973
+ ) : void 0,
974
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
975
+ chunkTIJXCRM4_js.CreateActionButton,
968
976
  {
969
977
  mode: "desktop",
970
978
  label: labels.addRule,
@@ -975,7 +983,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
975
983
  }
976
984
  );
977
985
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
978
- chunkLVR4SR65_js.CreateActionButton,
986
+ chunkTIJXCRM4_js.CreateActionButton,
979
987
  {
980
988
  mode: "mobile",
981
989
  label: labels.addRule,
@@ -983,43 +991,33 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
983
991
  accent: "fuchsia"
984
992
  }
985
993
  );
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: [
987
- /* @__PURE__ */ jsxRuntime.jsx(
988
- chunkLVR4SR65_js.SearchBar,
989
- {
990
- searchTerm,
991
- onSearchChange: setSearchTerm,
992
- placeholder: labels.searchPlaceholder ?? labels.title
993
- }
994
- ),
995
- /* @__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,
997
- {
998
- accentGradient: "from-fuchsia-500 to-purple-700",
999
- 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" }) }),
1000
- title: rule.name,
1001
- subtitle: `${labels.order}: ${rule.order ?? 0}`,
1002
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1003
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1004
- /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1005
- /* @__PURE__ */ jsxRuntime.jsx(
1006
- chunkBHOT22QL_js.Button,
1007
- {
1008
- type: "button",
1009
- size: "sm",
1010
- color: "rose",
1011
- onClick: () => {
1012
- if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1013
- },
1014
- children: labels.delete
1015
- }
1016
- )
1017
- ] }),
1018
- children: rule.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1019
- },
1020
- rule.ruleId
1021
- )) })
1022
- ] });
994
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
995
+ chunkTIJXCRM4_js.EntityCard,
996
+ {
997
+ accentGradient: "from-fuchsia-500 to-purple-700",
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" }) }),
999
+ title: rule.name,
1000
+ subtitle: `${labels.order}: ${rule.order ?? 0}`,
1001
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1002
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1003
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1004
+ /* @__PURE__ */ jsxRuntime.jsx(
1005
+ chunkBHOT22QL_js.Button,
1006
+ {
1007
+ type: "button",
1008
+ size: "sm",
1009
+ color: "rose",
1010
+ onClick: () => {
1011
+ if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1012
+ },
1013
+ children: labels.delete
1014
+ }
1015
+ )
1016
+ ] }),
1017
+ children: rule.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1018
+ },
1019
+ rule.ruleId
1020
+ )) });
1023
1021
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1024
1022
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1025
1023
  hero,
@@ -1031,7 +1029,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
1031
1029
  {
1032
1030
  title: labels.createTitle,
1033
1031
  saveLabel: labels.save,
1034
- initial: chunkEC34PGUO_js.defaultRuleForm(),
1032
+ initial: chunkAPONR6ZM_js.defaultRuleForm(),
1035
1033
  onClose: () => setCreateOpen(false),
1036
1034
  onSubmit: (value) => {
1037
1035
  onCreate(value);
@@ -1063,7 +1061,7 @@ function RuleEditor({
1063
1061
  }) {
1064
1062
  const [value, setValue] = react.useState(initial);
1065
1063
  return /* @__PURE__ */ jsxRuntime.jsx(
1066
- chunkLVR4SR65_js.GlassModal,
1064
+ chunkTIJXCRM4_js.GlassModal,
1067
1065
  {
1068
1066
  open: true,
1069
1067
  onClose,
@@ -1075,12 +1073,12 @@ function RuleEditor({
1075
1073
  event.preventDefault();
1076
1074
  onSubmit(value);
1077
1075
  },
1078
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkEC34PGUO_js.RuleForm, { value, onChange: setValue })
1076
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkAPONR6ZM_js.RuleForm, { value, onChange: setValue })
1079
1077
  }
1080
1078
  );
1081
1079
  }
1082
1080
  function ruleToFormValue(rule) {
1083
- const base = chunkEC34PGUO_js.defaultRuleForm();
1081
+ const base = chunkAPONR6ZM_js.defaultRuleForm();
1084
1082
  const rawCondition = rule.condition ?? rule.conditions;
1085
1083
  const rawAction = pickAction(rule);
1086
1084
  return {
@@ -1095,7 +1093,10 @@ function ruleToFormValue(rule) {
1095
1093
  status: typeof rule.status === "string" ? rule.status : base.status,
1096
1094
  validFrom: typeof rule.validFrom === "string" ? rule.validFrom : base.validFrom,
1097
1095
  validUntil: typeof rule.validUntil === "string" ? rule.validUntil : base.validUntil,
1098
- tags: Array.isArray(rule.tags) ? rule.tags.filter((tag) => typeof tag === "string") : base.tags
1096
+ tags: Array.isArray(rule.tags) ? rule.tags.filter((tag) => typeof tag === "string") : base.tags,
1097
+ // Round-trip recurrence (Fallback 4) — backend persists it as the
1098
+ // structured `{ kind, ... }` blob the wizard sends.
1099
+ recurrence: rule.recurrence ?? null
1099
1100
  };
1100
1101
  }
1101
1102
  function pickAction(rule) {
@@ -1123,6 +1124,7 @@ var SAMPLE_DATASOURCES = [
1123
1124
  timeoutMs: 3e4,
1124
1125
  allowedTables: null,
1125
1126
  blockedColumns: null,
1127
+ maskPii: null,
1126
1128
  enabled: true,
1127
1129
  createdAt: "2026-03-20T10:00:00Z",
1128
1130
  updatedAt: "2026-03-20T10:00:00Z",
@@ -1139,6 +1141,7 @@ var SAMPLE_DATASOURCES = [
1139
1141
  timeoutMs: 15e3,
1140
1142
  allowedTables: null,
1141
1143
  blockedColumns: null,
1144
+ maskPii: null,
1142
1145
  enabled: true,
1143
1146
  createdAt: "2026-03-18T08:30:00Z",
1144
1147
  updatedAt: "2026-03-22T14:00:00Z",
@@ -1155,6 +1158,7 @@ var SAMPLE_DATASOURCES = [
1155
1158
  timeoutMs: 3e4,
1156
1159
  allowedTables: null,
1157
1160
  blockedColumns: null,
1161
+ maskPii: null,
1158
1162
  enabled: true,
1159
1163
  createdAt: "2026-03-15T09:00:00Z",
1160
1164
  updatedAt: "2026-03-21T11:00:00Z",
@@ -1171,6 +1175,7 @@ var SAMPLE_DATASOURCES = [
1171
1175
  timeoutMs: 1e4,
1172
1176
  allowedTables: null,
1173
1177
  blockedColumns: null,
1178
+ maskPii: null,
1174
1179
  enabled: false,
1175
1180
  createdAt: "2026-03-10T12:00:00Z",
1176
1181
  updatedAt: "2026-03-19T16:00:00Z",
@@ -1187,6 +1192,7 @@ var SAMPLE_DATASOURCES = [
1187
1192
  timeoutMs: 5e3,
1188
1193
  allowedTables: null,
1189
1194
  blockedColumns: null,
1195
+ maskPii: null,
1190
1196
  enabled: true,
1191
1197
  createdAt: "2026-03-12T07:00:00Z",
1192
1198
  updatedAt: "2026-03-23T09:00:00Z",
@@ -1203,6 +1209,7 @@ var SAMPLE_DATASOURCES = [
1203
1209
  timeoutMs: 2e4,
1204
1210
  allowedTables: null,
1205
1211
  blockedColumns: null,
1212
+ maskPii: null,
1206
1213
  enabled: true,
1207
1214
  createdAt: "2026-03-22T15:00:00Z",
1208
1215
  updatedAt: "2026-03-25T10:00:00Z",
@@ -1211,7 +1218,7 @@ var SAMPLE_DATASOURCES = [
1211
1218
  ];
1212
1219
  function getDialectLabel(dialect) {
1213
1220
  if (!dialect) return "Unknown";
1214
- for (const category of chunkFIJMOTP4_js.DIALECT_CATEGORIES) {
1221
+ for (const category of chunkNW32BM3F_js.DIALECT_CATEGORIES) {
1215
1222
  const found = category.dialects.find((d) => d.value === dialect);
1216
1223
  if (found) return found.label;
1217
1224
  }
@@ -1219,12 +1226,12 @@ function getDialectLabel(dialect) {
1219
1226
  }
1220
1227
  function getDialectGradient(dialect) {
1221
1228
  if (!dialect) return "from-gray-400 to-gray-500";
1222
- const category = chunkFIJMOTP4_js.findCategory(dialect);
1229
+ const category = chunkNW32BM3F_js.findCategory(dialect);
1223
1230
  return category?.gradient ?? "from-gray-400 to-gray-500";
1224
1231
  }
1225
1232
  function getDialectIcon(dialect) {
1226
1233
  if (!dialect) return outline.CircleStackIcon;
1227
- const category = chunkFIJMOTP4_js.findCategory(dialect);
1234
+ const category = chunkNW32BM3F_js.findCategory(dialect);
1228
1235
  return category?.icon ?? outline.CircleStackIcon;
1229
1236
  }
1230
1237
  var DIALECT_LOGO = {
@@ -1294,6 +1301,7 @@ function DatasourcesPageView({
1294
1301
  timeoutMs: 3e4,
1295
1302
  allowedTables: null,
1296
1303
  blockedColumns: null,
1304
+ maskPii: null,
1297
1305
  enabled: true,
1298
1306
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1299
1307
  updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1303,15 +1311,24 @@ function DatasourcesPageView({
1303
1311
  }
1304
1312
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1305
1313
  /* @__PURE__ */ jsxRuntime.jsx(
1306
- chunkLVR4SR65_js.HeroSection,
1314
+ chunkTIJXCRM4_js.HeroSection,
1307
1315
  {
1308
1316
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
1309
1317
  label: labels.title,
1310
1318
  title: labels.title,
1311
1319
  subtitle: labels.subtitle,
1312
1320
  gradient: "from-amber-500 to-orange-600",
1313
- toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1314
- chunkLVR4SR65_js.CreateActionButton,
1321
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1322
+ chunkTIJXCRM4_js.SearchBar,
1323
+ {
1324
+ searchTerm,
1325
+ onSearchChange: setSearchTerm,
1326
+ placeholder: labels.searchPlaceholder ?? labels.title,
1327
+ noBorder: true
1328
+ }
1329
+ ) : void 0,
1330
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
1331
+ chunkTIJXCRM4_js.CreateActionButton,
1315
1332
  {
1316
1333
  mode: "desktop",
1317
1334
  label: labels.addDatasource,
@@ -1322,7 +1339,7 @@ function DatasourcesPageView({
1322
1339
  }
1323
1340
  ),
1324
1341
  /* @__PURE__ */ jsxRuntime.jsx(
1325
- chunkLVR4SR65_js.CreateActionButton,
1342
+ chunkTIJXCRM4_js.CreateActionButton,
1326
1343
  {
1327
1344
  mode: "mobile",
1328
1345
  label: labels.addDatasource,
@@ -1330,16 +1347,8 @@ function DatasourcesPageView({
1330
1347
  accent: "amber"
1331
1348
  }
1332
1349
  ),
1333
- !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1334
- chunkLVR4SR65_js.SearchBar,
1335
- {
1336
- searchTerm,
1337
- onSearchChange: setSearchTerm,
1338
- placeholder: labels.searchPlaceholder ?? labels.title
1339
- }
1340
- ),
1341
1350
  isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1342
- chunkLVR4SR65_js.PageEmptyState,
1351
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkNW32BM3F_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.FormGrid, { children: [
1486
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1487
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1488
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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(chunkTIJXCRM4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1495
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.Table, { children: [
1496
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.TableRow, { children: [
1497
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableHeader, { children: labels.name }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableHeader, { children: labels.description }),
1499
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableHeader, { children: labels.version }),
1500
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableHeader, { children: labels.status }),
1501
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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(chunkTIJXCRM4_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.TableRow, { children: [
1504
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableCell, { children: workflow.name }),
1505
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableCell, { children: workflow.description }),
1506
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableCell, { children: String(workflow.version) }),
1507
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1508
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1501
1509
  /* @__PURE__ */ jsxRuntime.jsx(
1502
- chunkLVR4SR65_js.Form,
1510
+ chunkTIJXCRM4_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(chunkTIJXCRM4_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(chunkTIJXCRM4_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(chunkKDVZIDVF_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_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
+ chunkTIJXCRM4_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
+ chunkTIJXCRM4_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(chunkTIJXCRM4_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(chunkTIJXCRM4_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
+ chunkAPONR6ZM_js.ExecutionTimelinePanel,
1658
1674
  {
1659
1675
  entries,
1660
1676
  labels
@@ -1739,15 +1755,24 @@ 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
+ chunkTIJXCRM4_js.HeroSection,
1743
1759
  {
1744
1760
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
1745
1761
  label: labels.title,
1746
1762
  title: labels.title,
1747
1763
  subtitle: labels.subtitle,
1748
1764
  gradient: "from-sky-500 to-indigo-600",
1749
- toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1750
- chunkLVR4SR65_js.CreateActionButton,
1765
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1766
+ chunkTIJXCRM4_js.SearchBar,
1767
+ {
1768
+ searchTerm,
1769
+ onSearchChange: setSearchTerm,
1770
+ placeholder: labels.searchPlaceholder ?? labels.title,
1771
+ noBorder: true
1772
+ }
1773
+ ) : void 0,
1774
+ actions: /* @__PURE__ */ jsxRuntime.jsx(
1775
+ chunkTIJXCRM4_js.CreateActionButton,
1751
1776
  {
1752
1777
  mode: "desktop",
1753
1778
  label: labels.add,
@@ -1758,7 +1783,7 @@ function ConnectionsPageView({
1758
1783
  }
1759
1784
  );
1760
1785
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
1761
- chunkLVR4SR65_js.CreateActionButton,
1786
+ chunkTIJXCRM4_js.CreateActionButton,
1762
1787
  {
1763
1788
  mode: "mobile",
1764
1789
  label: labels.add,
@@ -1766,50 +1791,40 @@ function ConnectionsPageView({
1766
1791
  accent: "sky"
1767
1792
  }
1768
1793
  );
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: [
1770
- /* @__PURE__ */ jsxRuntime.jsx(
1771
- chunkLVR4SR65_js.SearchBar,
1772
- {
1773
- searchTerm,
1774
- onSearchChange: setSearchTerm,
1775
- placeholder: labels.searchPlaceholder ?? labels.title
1776
- }
1777
- ),
1778
- /* @__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,
1780
- {
1781
- accentGradient: "from-sky-500 to-indigo-600",
1782
- 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" }) }),
1783
- title: conn.name,
1784
- subtitle: providerLabel(conn.providerSlug),
1785
- status: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
1786
- /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1787
- conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "amber", children: "No secret" })
1788
- ] }),
1789
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1790
- /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1791
- /* @__PURE__ */ jsxRuntime.jsx(
1792
- chunkBHOT22QL_js.Button,
1793
- {
1794
- type: "button",
1795
- size: "sm",
1796
- color: "rose",
1797
- onClick: async () => {
1798
- if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1799
- },
1800
- children: labels.delete
1801
- }
1802
- )
1803
- ] }),
1804
- children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1805
- conn.region && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Region", value: conn.region }),
1806
- conn.endpoint && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1807
- conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1808
- ] })
1809
- },
1810
- conn.id
1811
- )) })
1812
- ] });
1794
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsxRuntime.jsx(
1795
+ chunkTIJXCRM4_js.EntityCard,
1796
+ {
1797
+ accentGradient: "from-sky-500 to-indigo-600",
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" }) }),
1799
+ title: conn.name,
1800
+ subtitle: providerLabel(conn.providerSlug),
1801
+ status: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
1802
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1803
+ conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "amber", children: "No secret" })
1804
+ ] }),
1805
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1806
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1807
+ /* @__PURE__ */ jsxRuntime.jsx(
1808
+ chunkBHOT22QL_js.Button,
1809
+ {
1810
+ type: "button",
1811
+ size: "sm",
1812
+ color: "rose",
1813
+ onClick: async () => {
1814
+ if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1815
+ },
1816
+ children: labels.delete
1817
+ }
1818
+ )
1819
+ ] }),
1820
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1821
+ conn.region && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Region", value: conn.region }),
1822
+ conn.endpoint && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1823
+ conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1824
+ ] })
1825
+ },
1826
+ conn.id
1827
+ )) });
1813
1828
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1814
1829
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1815
1830
  hero,
@@ -1929,7 +1944,7 @@ function ConnectionEditor({
1929
1944
  return preset.exampleModels?.join(", ") ?? "";
1930
1945
  }, [preset]);
1931
1946
  return /* @__PURE__ */ jsxRuntime.jsx(
1932
- chunkLVR4SR65_js.GlassModal,
1947
+ chunkTIJXCRM4_js.GlassModal,
1933
1948
  {
1934
1949
  open: true,
1935
1950
  onClose,
@@ -1942,9 +1957,9 @@ function ConnectionEditor({
1942
1957
  void handleSubmit();
1943
1958
  },
1944
1959
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1945
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
1960
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
1946
1961
  /* @__PURE__ */ jsxRuntime.jsx(
1947
- chunkLVR4SR65_js.FormSelect,
1962
+ chunkTIJXCRM4_js.FormSelect,
1948
1963
  {
1949
1964
  label: "Provider",
1950
1965
  value: value.providerSlug,
@@ -1955,7 +1970,7 @@ function ConnectionEditor({
1955
1970
  }
1956
1971
  ),
1957
1972
  /* @__PURE__ */ jsxRuntime.jsx(
1958
- chunkLVR4SR65_js.FormInput,
1973
+ chunkTIJXCRM4_js.FormInput,
1959
1974
  {
1960
1975
  label: "Display name",
1961
1976
  required: true,
@@ -1965,7 +1980,7 @@ function ConnectionEditor({
1965
1980
  }
1966
1981
  ),
1967
1982
  preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
1968
- chunkLVR4SR65_js.FormInput,
1983
+ chunkTIJXCRM4_js.FormInput,
1969
1984
  {
1970
1985
  label: "Region",
1971
1986
  value: value.region,
@@ -1974,7 +1989,7 @@ function ConnectionEditor({
1974
1989
  }
1975
1990
  ),
1976
1991
  preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
1977
- chunkLVR4SR65_js.FormInput,
1992
+ chunkTIJXCRM4_js.FormInput,
1978
1993
  {
1979
1994
  label: "Endpoint URL",
1980
1995
  value: value.endpoint,
@@ -1984,7 +1999,7 @@ function ConnectionEditor({
1984
1999
  )
1985
2000
  ] }),
1986
2001
  /* @__PURE__ */ jsxRuntime.jsx(
1987
- chunkLVR4SR65_js.FormInput,
2002
+ chunkTIJXCRM4_js.FormInput,
1988
2003
  {
1989
2004
  label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
1990
2005
  type: "password",
@@ -1995,7 +2010,7 @@ function ConnectionEditor({
1995
2010
  }
1996
2011
  ),
1997
2012
  /* @__PURE__ */ jsxRuntime.jsx(
1998
- chunkLVR4SR65_js.FormInput,
2013
+ chunkTIJXCRM4_js.FormInput,
1999
2014
  {
2000
2015
  label: "Model filter (comma-separated, optional)",
2001
2016
  value: value.modelFilter,
@@ -2007,7 +2022,7 @@ function ConnectionEditor({
2007
2022
  /* @__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
2023
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
2009
2024
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
2010
- chunkLVR4SR65_js.FormTextarea,
2025
+ chunkTIJXCRM4_js.FormTextarea,
2011
2026
  {
2012
2027
  rows: 4,
2013
2028
  value: value.configJson,
@@ -2077,7 +2092,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2077
2092
  { value: "password", label: labels.typePassword }
2078
2093
  ];
2079
2094
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2080
- chunkLVR4SR65_js.HeroSection,
2095
+ chunkTIJXCRM4_js.HeroSection,
2081
2096
  {
2082
2097
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
2083
2098
  label: labels.title,
@@ -2085,7 +2100,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2085
2100
  subtitle: labels.subtitle,
2086
2101
  gradient: "from-rose-500 to-orange-600",
2087
2102
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
2088
- chunkLVR4SR65_js.CreateActionButton,
2103
+ chunkTIJXCRM4_js.CreateActionButton,
2089
2104
  {
2090
2105
  mode: "desktop",
2091
2106
  label: labels.addCredential,
@@ -2096,7 +2111,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2096
2111
  }
2097
2112
  );
2098
2113
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2099
- chunkLVR4SR65_js.CreateActionButton,
2114
+ chunkTIJXCRM4_js.CreateActionButton,
2100
2115
  {
2101
2116
  mode: "mobile",
2102
2117
  label: labels.addCredential,
@@ -2104,9 +2119,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2104
2119
  accent: "rose"
2105
2120
  }
2106
2121
  );
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: [
2122
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2108
2123
  /* @__PURE__ */ jsxRuntime.jsx(
2109
- chunkLVR4SR65_js.SearchBar,
2124
+ chunkTIJXCRM4_js.SearchBar,
2110
2125
  {
2111
2126
  searchTerm,
2112
2127
  onSearchChange: setSearchTerm,
@@ -2114,7 +2129,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2114
2129
  }
2115
2130
  ),
2116
2131
  /* @__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,
2132
+ chunkTIJXCRM4_js.EntityCard,
2118
2133
  {
2119
2134
  accentGradient: "from-rose-500 to-orange-700",
2120
2135
  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 +2137,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2122
2137
  subtitle: secret.secretType,
2123
2138
  status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2124
2139
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2125
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.CopyableId, { id: secret.secretId }),
2140
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.CopyableId, { id: secret.secretId }),
2126
2141
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2127
2142
  /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2128
2143
  /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
@@ -2165,7 +2180,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2165
2180
  mobileAction
2166
2181
  ] }),
2167
2182
  /* @__PURE__ */ jsxRuntime.jsx(
2168
- chunkLVR4SR65_js.GlassModal,
2183
+ chunkTIJXCRM4_js.GlassModal,
2169
2184
  {
2170
2185
  open: createOpen,
2171
2186
  onClose: () => setCreateOpen(false),
@@ -2183,16 +2198,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2183
2198
  onCreate({ name, value, secretType, description });
2184
2199
  setCreateOpen(false);
2185
2200
  },
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 })
2201
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
2202
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2203
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2204
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2205
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2191
2206
  ] })
2192
2207
  }
2193
2208
  ),
2194
2209
  /* @__PURE__ */ jsxRuntime.jsx(
2195
- chunkLVR4SR65_js.GlassModal,
2210
+ chunkTIJXCRM4_js.GlassModal,
2196
2211
  {
2197
2212
  open: rotateFor !== null,
2198
2213
  onClose: () => setRotateFor(null),
@@ -2207,7 +2222,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2207
2222
  onRotate(rotateFor, value);
2208
2223
  setRotateFor(null);
2209
2224
  },
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" }) })
2225
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2211
2226
  }
2212
2227
  )
2213
2228
  ] });
@@ -2260,15 +2275,24 @@ function AgentsWorkspacePageView({
2260
2275
  }, [agents, selectedId]);
2261
2276
  const isEmpty = agents.length === 0;
2262
2277
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2263
- chunkLVR4SR65_js.HeroSection,
2278
+ chunkTIJXCRM4_js.HeroSection,
2264
2279
  {
2265
2280
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
2266
2281
  label: labels.title,
2267
2282
  title: labels.title,
2268
2283
  subtitle: labels.subtitle,
2269
2284
  gradient: "from-violet-500 to-indigo-700",
2285
+ toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2286
+ chunkTIJXCRM4_js.SearchBar,
2287
+ {
2288
+ searchTerm,
2289
+ onSearchChange: setSearchTerm,
2290
+ placeholder: labels.searchPlaceholder,
2291
+ noBorder: true
2292
+ }
2293
+ ) : void 0,
2270
2294
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2271
- chunkLVR4SR65_js.CreateActionButton,
2295
+ chunkTIJXCRM4_js.CreateActionButton,
2272
2296
  {
2273
2297
  mode: "desktop",
2274
2298
  label: labels.addAgent,
@@ -2279,7 +2303,7 @@ function AgentsWorkspacePageView({
2279
2303
  }
2280
2304
  );
2281
2305
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2282
- chunkLVR4SR65_js.CreateActionButton,
2306
+ chunkTIJXCRM4_js.CreateActionButton,
2283
2307
  {
2284
2308
  mode: "mobile",
2285
2309
  label: labels.addAgent,
@@ -2287,91 +2311,81 @@ function AgentsWorkspacePageView({
2287
2311
  accent: "violet"
2288
2312
  }
2289
2313
  );
2290
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2291
- chunkLVR4SR65_js.PageEmptyState,
2314
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2315
+ chunkTIJXCRM4_js.PageEmptyState,
2292
2316
  {
2293
2317
  title: labels.empty,
2294
2318
  message: labels.emptyMessage,
2295
2319
  iconName: "folder-open"
2296
2320
  }
2297
- ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2298
- /* @__PURE__ */ jsxRuntime.jsx(
2299
- chunkLVR4SR65_js.SearchBar,
2300
- {
2301
- searchTerm,
2302
- onSearchChange: setSearchTerm,
2303
- placeholder: labels.searchPlaceholder
2304
- }
2305
- ),
2306
- /* @__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) => {
2308
- const id = String(agent.agentId ?? agent.id ?? "");
2309
- const active = id === selectedId;
2310
- const initials = deriveInitials(String(agent.name ?? id));
2311
- const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2312
- return /* @__PURE__ */ jsxRuntime.jsx(
2313
- chunkLVR4SR65_js.ListCardItem,
2314
- {
2315
- leading: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2316
- trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
2317
- "v",
2318
- agent.activePromptVersion
2319
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", children: "draft" }),
2320
- pressable: true,
2321
- onPress: () => {
2322
- setSelectedId(id);
2323
- onSelectAgent?.(id);
2324
- },
2325
- className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2326
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
2327
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2328
- modelName && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2329
- ] })
2330
- },
2331
- id
2332
- );
2333
- }) }) }),
2334
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsxRuntime.jsx(
2335
- AgentDetail,
2336
- {
2337
- agent: selectedAgent,
2338
- labels,
2339
- models,
2340
- tools,
2341
- connections,
2342
- prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2343
- onUpdateAgent,
2344
- onDeleteAgent,
2345
- onCreatePrompt,
2346
- onActivatePrompt,
2347
- onAttachTool,
2348
- onDetachTool,
2349
- onUpdateModel,
2350
- onCleared: () => {
2351
- setSelectedId(null);
2352
- onSelectAgent?.(null);
2353
- }
2354
- },
2355
- String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2356
- ) : /* @__PURE__ */ jsxRuntime.jsx(
2357
- chunkLVR4SR65_js.SectionCard,
2321
+ ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2322
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2323
+ const id = String(agent.agentId ?? agent.id ?? "");
2324
+ const active = id === selectedId;
2325
+ const initials = deriveInitials(String(agent.name ?? id));
2326
+ const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2327
+ return /* @__PURE__ */ jsxRuntime.jsx(
2328
+ chunkTIJXCRM4_js.ListCardItem,
2358
2329
  {
2359
- header: {
2360
- icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
2361
- title: labels.noSelection,
2362
- subtitle: labels.noSelectionMessage
2330
+ leading: /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2331
+ trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
2332
+ "v",
2333
+ agent.activePromptVersion
2334
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", children: "draft" }),
2335
+ pressable: true,
2336
+ onPress: () => {
2337
+ setSelectedId(id);
2338
+ onSelectAgent?.(id);
2363
2339
  },
2364
- children: /* @__PURE__ */ jsxRuntime.jsx(
2365
- chunkLVR4SR65_js.PageEmptyState,
2366
- {
2367
- title: labels.noSelection,
2368
- message: labels.noSelectionMessage,
2369
- iconName: "folder-open"
2370
- }
2371
- )
2340
+ className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2341
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
2342
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2343
+ modelName && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2344
+ ] })
2345
+ },
2346
+ id
2347
+ );
2348
+ }) }) }),
2349
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsxRuntime.jsx(
2350
+ AgentDetail,
2351
+ {
2352
+ agent: selectedAgent,
2353
+ labels,
2354
+ models,
2355
+ tools,
2356
+ connections,
2357
+ prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2358
+ onUpdateAgent,
2359
+ onDeleteAgent,
2360
+ onCreatePrompt,
2361
+ onActivatePrompt,
2362
+ onAttachTool,
2363
+ onDetachTool,
2364
+ onUpdateModel,
2365
+ onCleared: () => {
2366
+ setSelectedId(null);
2367
+ onSelectAgent?.(null);
2372
2368
  }
2373
- ) })
2374
- ] })
2369
+ },
2370
+ String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2371
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
2372
+ chunkTIJXCRM4_js.SectionCard,
2373
+ {
2374
+ header: {
2375
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
2376
+ title: labels.noSelection,
2377
+ subtitle: labels.noSelectionMessage
2378
+ },
2379
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2380
+ chunkTIJXCRM4_js.PageEmptyState,
2381
+ {
2382
+ title: labels.noSelection,
2383
+ message: labels.noSelectionMessage,
2384
+ iconName: "folder-open"
2385
+ }
2386
+ )
2387
+ }
2388
+ ) })
2375
2389
  ] });
2376
2390
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2377
2391
  hero,
@@ -2397,7 +2411,7 @@ function AgentDetail({
2397
2411
  }) {
2398
2412
  const agentId = String(agent.agentId ?? agent.id ?? "");
2399
2413
  return /* @__PURE__ */ jsxRuntime.jsx(
2400
- chunkLVR4SR65_js.SectionCard,
2414
+ chunkTIJXCRM4_js.SectionCard,
2401
2415
  {
2402
2416
  header: {
2403
2417
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2422,15 +2436,15 @@ function AgentDetail({
2422
2436
  ]
2423
2437
  }
2424
2438
  ),
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 })
2439
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.Tabs, { defaultValue: "general", className: "w-full", children: [
2440
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
2441
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsTrigger, { value: "general", children: labels.generalTab }),
2442
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
2443
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
2444
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsTrigger, { value: "model", children: labels.modelTab })
2431
2445
  ] }),
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(
2446
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
2447
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2434
2448
  PromptTab,
2435
2449
  {
2436
2450
  agent,
@@ -2440,7 +2454,7 @@ function AgentDetail({
2440
2454
  onActivate: (promptId) => onActivatePrompt(agentId, promptId)
2441
2455
  }
2442
2456
  ) }),
2443
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2457
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2444
2458
  ToolsTab,
2445
2459
  {
2446
2460
  agent,
@@ -2450,7 +2464,7 @@ function AgentDetail({
2450
2464
  onDetach: (toolId) => onDetachTool(agentId, toolId)
2451
2465
  }
2452
2466
  ) }),
2453
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2467
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2454
2468
  ModelTab,
2455
2469
  {
2456
2470
  agent,
@@ -2482,7 +2496,7 @@ function GeneralTab({
2482
2496
  const initialRole = String(agent.role ?? "");
2483
2497
  const initialStatus = String(agent.status ?? "draft");
2484
2498
  return /* @__PURE__ */ jsxRuntime.jsx(
2485
- chunkLVR4SR65_js.SectionCard,
2499
+ chunkTIJXCRM4_js.SectionCard,
2486
2500
  {
2487
2501
  variant: "glass",
2488
2502
  header: {
@@ -2511,10 +2525,10 @@ function GeneralTab({
2511
2525
  },
2512
2526
  className: "space-y-4",
2513
2527
  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 }),
2528
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
2529
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
2516
2530
  /* @__PURE__ */ jsxRuntime.jsx(
2517
- chunkLVR4SR65_js.FormSelect,
2531
+ chunkTIJXCRM4_js.FormSelect,
2518
2532
  {
2519
2533
  name: "status",
2520
2534
  label: labels.status,
@@ -2526,9 +2540,9 @@ function GeneralTab({
2526
2540
  ]
2527
2541
  }
2528
2542
  ),
2529
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2543
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2530
2544
  /* @__PURE__ */ jsxRuntime.jsx(
2531
- chunkLVR4SR65_js.FormInput,
2545
+ chunkTIJXCRM4_js.FormInput,
2532
2546
  {
2533
2547
  name: "maxTokens",
2534
2548
  label: labels.maxTokens,
@@ -2537,7 +2551,7 @@ function GeneralTab({
2537
2551
  }
2538
2552
  ),
2539
2553
  /* @__PURE__ */ jsxRuntime.jsx(
2540
- chunkLVR4SR65_js.FormInput,
2554
+ chunkTIJXCRM4_js.FormInput,
2541
2555
  {
2542
2556
  name: "temperature",
2543
2557
  label: labels.temperature,
@@ -2549,7 +2563,7 @@ function GeneralTab({
2549
2563
  }
2550
2564
  )
2551
2565
  ] }),
2552
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2566
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2553
2567
  /* @__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
2568
  ]
2555
2569
  }
@@ -2569,7 +2583,7 @@ function PromptTab({
2569
2583
  const currentSystem = String(agent.systemPrompt ?? "");
2570
2584
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2571
2585
  /* @__PURE__ */ jsxRuntime.jsx(
2572
- chunkLVR4SR65_js.SectionCard,
2586
+ chunkTIJXCRM4_js.SectionCard,
2573
2587
  {
2574
2588
  variant: "glass",
2575
2589
  header: {
@@ -2581,7 +2595,7 @@ function PromptTab({
2581
2595
  }
2582
2596
  ),
2583
2597
  /* @__PURE__ */ jsxRuntime.jsx(
2584
- chunkLVR4SR65_js.SectionCard,
2598
+ chunkTIJXCRM4_js.SectionCard,
2585
2599
  {
2586
2600
  variant: "glass",
2587
2601
  header: {
@@ -2592,10 +2606,10 @@ function PromptTab({
2592
2606
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
2593
2607
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
2594
2608
  ] }),
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) => {
2609
+ children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: prompts.map((prompt) => {
2596
2610
  const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
2597
2611
  return /* @__PURE__ */ jsxRuntime.jsxs(
2598
- chunkLVR4SR65_js.ListCardItem,
2612
+ chunkTIJXCRM4_js.ListCardItem,
2599
2613
  {
2600
2614
  leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
2601
2615
  "v",
@@ -2613,7 +2627,7 @@ function PromptTab({
2613
2627
  }
2614
2628
  ),
2615
2629
  addOpen && /* @__PURE__ */ jsxRuntime.jsx(
2616
- chunkLVR4SR65_js.GlassModal,
2630
+ chunkTIJXCRM4_js.GlassModal,
2617
2631
  {
2618
2632
  open: true,
2619
2633
  onClose: () => setAddOpen(false),
@@ -2634,10 +2648,10 @@ function PromptTab({
2634
2648
  });
2635
2649
  setAddOpen(false);
2636
2650
  },
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" }),
2651
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
2652
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
2639
2653
  /* @__PURE__ */ jsxRuntime.jsx(
2640
- chunkLVR4SR65_js.FormSelect,
2654
+ chunkTIJXCRM4_js.FormSelect,
2641
2655
  {
2642
2656
  name: "isActive",
2643
2657
  label: labels.promptIsActive,
@@ -2648,10 +2662,10 @@ function PromptTab({
2648
2662
  defaultValue: "true"
2649
2663
  }
2650
2664
  ),
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 })
2665
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormInput, { name: "reason", label: labels.promptReason }),
2666
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
2667
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
2668
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
2655
2669
  ] })
2656
2670
  }
2657
2671
  )
@@ -2674,15 +2688,15 @@ function ToolsTab({
2674
2688
  const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
2675
2689
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2676
2690
  /* @__PURE__ */ jsxRuntime.jsx(
2677
- chunkLVR4SR65_js.SectionCard,
2691
+ chunkTIJXCRM4_js.SectionCard,
2678
2692
  {
2679
2693
  variant: "glass",
2680
2694
  header: {
2681
2695
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2682
2696
  title: labels.toolsAttached
2683
2697
  },
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,
2698
+ children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2699
+ chunkTIJXCRM4_js.ListCardItem,
2686
2700
  {
2687
2701
  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
2702
  trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
@@ -2696,15 +2710,15 @@ function ToolsTab({
2696
2710
  }
2697
2711
  ),
2698
2712
  /* @__PURE__ */ jsxRuntime.jsx(
2699
- chunkLVR4SR65_js.SectionCard,
2713
+ chunkTIJXCRM4_js.SectionCard,
2700
2714
  {
2701
2715
  variant: "glass",
2702
2716
  header: {
2703
2717
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2704
2718
  title: labels.toolsAvailable
2705
2719
  },
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,
2720
+ children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2721
+ chunkTIJXCRM4_js.ListCardItem,
2708
2722
  {
2709
2723
  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
2724
  trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
@@ -2745,7 +2759,7 @@ function ModelTab({
2745
2759
  return matches.length > 0 ? matches : connections;
2746
2760
  }, [selectedModel, connections]);
2747
2761
  return /* @__PURE__ */ jsxRuntime.jsx(
2748
- chunkLVR4SR65_js.SectionCard,
2762
+ chunkTIJXCRM4_js.SectionCard,
2749
2763
  {
2750
2764
  variant: "glass",
2751
2765
  header: {
@@ -2766,9 +2780,9 @@ function ModelTab({
2766
2780
  },
2767
2781
  className: "space-y-4",
2768
2782
  children: [
2769
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2783
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
2770
2784
  /* @__PURE__ */ jsxRuntime.jsx(
2771
- chunkLVR4SR65_js.FormSelect,
2785
+ chunkTIJXCRM4_js.FormSelect,
2772
2786
  {
2773
2787
  label: labels.model,
2774
2788
  value: modelId,
@@ -2777,7 +2791,7 @@ function ModelTab({
2777
2791
  }
2778
2792
  ),
2779
2793
  /* @__PURE__ */ jsxRuntime.jsx(
2780
- chunkLVR4SR65_js.FormSelect,
2794
+ chunkTIJXCRM4_js.FormSelect,
2781
2795
  {
2782
2796
  label: labels.connection,
2783
2797
  value: connectionId,
@@ -2979,11 +2993,9 @@ function AgentNewWizardPageView({
2979
2993
  labels.wizardStep4Subtitle,
2980
2994
  labels.wizardStep5Subtitle
2981
2995
  ];
2982
- const timelineSteps = stepTitles.map((title, idx) => ({
2996
+ const indicatorSteps = stepTitles.map((title, idx) => ({
2983
2997
  id: String(idx + 1),
2984
- name: title,
2985
- description: stepSubtitles[idx],
2986
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
2998
+ title
2987
2999
  }));
2988
3000
  function markTouched() {
2989
3001
  if (!touched) setTouched(true);
@@ -3069,7 +3081,7 @@ function AgentNewWizardPageView({
3069
3081
  }
3070
3082
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS));
3071
3083
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3072
- chunkLVR4SR65_js.HeroSection,
3084
+ chunkTIJXCRM4_js.HeroSection,
3073
3085
  {
3074
3086
  icon: /* @__PURE__ */ jsxRuntime.jsx(
3075
3087
  "div",
@@ -3082,12 +3094,22 @@ function AgentNewWizardPageView({
3082
3094
  label: counter,
3083
3095
  title: labels.pageTitle,
3084
3096
  subtitle: stepSubtitles[step - 1],
3085
- gradient: activePreset.accent
3097
+ gradient: activePreset.accent,
3098
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3099
+ chunkTIJXCRM4_js.StepIndicator,
3100
+ {
3101
+ accent: "indigo",
3102
+ currentStep: step - 1,
3103
+ onStepChange: (idx) => goToStep(idx + 1),
3104
+ progressLabel: labels.pageTitle,
3105
+ steps: indicatorSteps
3106
+ }
3107
+ )
3086
3108
  }
3087
3109
  );
3088
3110
  function renderStep1() {
3089
3111
  return /* @__PURE__ */ jsxRuntime.jsx(
3090
- chunkLVR4SR65_js.SectionCard,
3112
+ chunkTIJXCRM4_js.SectionCard,
3091
3113
  {
3092
3114
  variant: "glass",
3093
3115
  header: {
@@ -3103,7 +3125,7 @@ function AgentNewWizardPageView({
3103
3125
  children: AGENT_PRESETS.map((preset) => {
3104
3126
  const selected = preset.id === presetId;
3105
3127
  return /* @__PURE__ */ jsxRuntime.jsx(
3106
- chunkLVR4SR65_js.FilterTileButton,
3128
+ chunkTIJXCRM4_js.FilterTileButton,
3107
3129
  {
3108
3130
  isActive: selected,
3109
3131
  color: preset.tileColor,
@@ -3122,7 +3144,7 @@ function AgentNewWizardPageView({
3122
3144
  }
3123
3145
  function renderStep2() {
3124
3146
  return /* @__PURE__ */ jsxRuntime.jsx(
3125
- chunkLVR4SR65_js.SectionCard,
3147
+ chunkTIJXCRM4_js.SectionCard,
3126
3148
  {
3127
3149
  variant: "glass",
3128
3150
  header: {
@@ -3150,9 +3172,9 @@ function AgentNewWizardPageView({
3150
3172
  e
3151
3173
  )) })
3152
3174
  ] }),
3153
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3175
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
3154
3176
  /* @__PURE__ */ jsxRuntime.jsx(
3155
- chunkLVR4SR65_js.FormInput,
3177
+ chunkTIJXCRM4_js.FormInput,
3156
3178
  {
3157
3179
  label: labels.name,
3158
3180
  value: name,
@@ -3165,7 +3187,7 @@ function AgentNewWizardPageView({
3165
3187
  }
3166
3188
  ),
3167
3189
  /* @__PURE__ */ jsxRuntime.jsx(
3168
- chunkLVR4SR65_js.FormInput,
3190
+ chunkTIJXCRM4_js.FormInput,
3169
3191
  {
3170
3192
  label: labels.role,
3171
3193
  value: role,
@@ -3178,7 +3200,7 @@ function AgentNewWizardPageView({
3178
3200
  )
3179
3201
  ] }),
3180
3202
  /* @__PURE__ */ jsxRuntime.jsx(
3181
- chunkLVR4SR65_js.FormTextarea,
3203
+ chunkTIJXCRM4_js.FormTextarea,
3182
3204
  {
3183
3205
  label: labels.descriptionLabel,
3184
3206
  value: description,
@@ -3196,7 +3218,7 @@ function AgentNewWizardPageView({
3196
3218
  }
3197
3219
  function renderStep3() {
3198
3220
  return /* @__PURE__ */ jsxRuntime.jsx(
3199
- chunkLVR4SR65_js.SectionCard,
3221
+ chunkTIJXCRM4_js.SectionCard,
3200
3222
  {
3201
3223
  variant: "glass",
3202
3224
  header: {
@@ -3204,9 +3226,9 @@ function AgentNewWizardPageView({
3204
3226
  subtitle: labels.connectionPickPrompt
3205
3227
  },
3206
3228
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3207
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3229
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
3208
3230
  /* @__PURE__ */ jsxRuntime.jsx(
3209
- chunkLVR4SR65_js.FormSelect,
3231
+ chunkTIJXCRM4_js.FormSelect,
3210
3232
  {
3211
3233
  label: labels.connectionLabel,
3212
3234
  value: connectionId,
@@ -3219,7 +3241,7 @@ function AgentNewWizardPageView({
3219
3241
  }
3220
3242
  ),
3221
3243
  /* @__PURE__ */ jsxRuntime.jsx(
3222
- chunkLVR4SR65_js.FormSelect,
3244
+ chunkTIJXCRM4_js.FormSelect,
3223
3245
  {
3224
3246
  label: labels.frameworkLabel,
3225
3247
  value: framework,
@@ -3231,7 +3253,7 @@ function AgentNewWizardPageView({
3231
3253
  }
3232
3254
  ),
3233
3255
  /* @__PURE__ */ jsxRuntime.jsx(
3234
- chunkLVR4SR65_js.FormSelect,
3256
+ chunkTIJXCRM4_js.FormSelect,
3235
3257
  {
3236
3258
  label: labels.model,
3237
3259
  value: modelId,
@@ -3244,7 +3266,7 @@ function AgentNewWizardPageView({
3244
3266
  )
3245
3267
  ] }),
3246
3268
  /* @__PURE__ */ jsxRuntime.jsx(
3247
- chunkLVR4SR65_js.FormTextarea,
3269
+ chunkTIJXCRM4_js.FormTextarea,
3248
3270
  {
3249
3271
  label: labels.outputSchemaLabel,
3250
3272
  value: outputSchema,
@@ -3263,7 +3285,7 @@ function AgentNewWizardPageView({
3263
3285
  function renderStep4() {
3264
3286
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3265
3287
  /* @__PURE__ */ jsxRuntime.jsx(
3266
- chunkLVR4SR65_js.SectionCard,
3288
+ chunkTIJXCRM4_js.SectionCard,
3267
3289
  {
3268
3290
  variant: "glass",
3269
3291
  header: {
@@ -3423,7 +3445,7 @@ function AgentNewWizardPageView({
3423
3445
  }
3424
3446
  ),
3425
3447
  /* @__PURE__ */ jsxRuntime.jsx(
3426
- chunkLVR4SR65_js.SectionCard,
3448
+ chunkTIJXCRM4_js.SectionCard,
3427
3449
  {
3428
3450
  variant: "glass",
3429
3451
  header: {
@@ -3466,7 +3488,7 @@ function AgentNewWizardPageView({
3466
3488
  }) })
3467
3489
  ] }),
3468
3490
  /* @__PURE__ */ jsxRuntime.jsx(
3469
- chunkLVR4SR65_js.FormInput,
3491
+ chunkTIJXCRM4_js.FormInput,
3470
3492
  {
3471
3493
  label: labels.tagsLabel,
3472
3494
  value: tagsInput,
@@ -3487,7 +3509,7 @@ function AgentNewWizardPageView({
3487
3509
  const connectionLabel = connectionId ? connections.find((c) => c.id === connectionId)?.name ?? labels.connectionInline : labels.connectionInline;
3488
3510
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3489
3511
  /* @__PURE__ */ jsxRuntime.jsx(
3490
- chunkLVR4SR65_js.SectionCard,
3512
+ chunkTIJXCRM4_js.SectionCard,
3491
3513
  {
3492
3514
  variant: "glass",
3493
3515
  header: {
@@ -3502,7 +3524,7 @@ function AgentNewWizardPageView({
3502
3524
  }
3503
3525
  ),
3504
3526
  /* @__PURE__ */ jsxRuntime.jsx(
3505
- chunkLVR4SR65_js.SectionCard,
3527
+ chunkTIJXCRM4_js.SectionCard,
3506
3528
  {
3507
3529
  variant: "glass",
3508
3530
  header: {
@@ -3531,7 +3553,7 @@ function AgentNewWizardPageView({
3531
3553
  }
3532
3554
  ),
3533
3555
  /* @__PURE__ */ jsxRuntime.jsx(
3534
- chunkLVR4SR65_js.SectionCard,
3556
+ chunkTIJXCRM4_js.SectionCard,
3535
3557
  {
3536
3558
  variant: "glass",
3537
3559
  header: {
@@ -3551,7 +3573,7 @@ function AgentNewWizardPageView({
3551
3573
  }
3552
3574
  ),
3553
3575
  /* @__PURE__ */ jsxRuntime.jsxs(
3554
- chunkLVR4SR65_js.SectionCard,
3576
+ chunkTIJXCRM4_js.SectionCard,
3555
3577
  {
3556
3578
  variant: "glass",
3557
3579
  header: {
@@ -3595,22 +3617,10 @@ function AgentNewWizardPageView({
3595
3617
  if (step < TOTAL_STEPS) goNext();
3596
3618
  else void submit();
3597
3619
  },
3598
- className: "space-y-5",
3620
+ className: "space-y-4",
3599
3621
  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
- ] })
3622
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
3623
+ footer
3614
3624
  ]
3615
3625
  }
3616
3626
  );
@@ -3696,14 +3706,24 @@ function DatasourceNewWizardPageView({
3696
3706
  const [readOnly, setReadOnly] = react.useState(true);
3697
3707
  const [maxPoolSize, setMaxPoolSize] = react.useState("5");
3698
3708
  const [timeoutMs, setTimeoutMs] = react.useState("5000");
3699
- const [allowedTables, setAllowedTables] = react.useState("");
3700
- const [blockedColumns, setBlockedColumns] = react.useState("");
3709
+ const [allowedTablesItems, setAllowedTablesItems] = react.useState([]);
3710
+ const [allowedTablesSelected, setAllowedTablesSelected] = react.useState([]);
3711
+ const [blockedColumnsItems, setBlockedColumnsItems] = react.useState([]);
3712
+ const [blockedColumnsSelected, setBlockedColumnsSelected] = react.useState([]);
3701
3713
  const [maskPii, setMaskPii] = react.useState(false);
3714
+ const allowedTablesStyle = {
3715
+ bg: "bg-amber-500/15",
3716
+ text: "text-amber-700 dark:text-amber-300"
3717
+ };
3718
+ const blockedColumnsStyle = {
3719
+ bg: "bg-rose-500/15",
3720
+ text: "text-rose-700 dark:text-rose-300"
3721
+ };
3702
3722
  const [submitting, setSubmitting] = react.useState(false);
3703
3723
  const [touched, setTouched] = react.useState(false);
3704
3724
  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]);
3725
+ const dialectOption = react.useMemo(() => dialect ? chunkNW32BM3F_js.findDialect(dialect) : null, [dialect]);
3726
+ const category = react.useMemo(() => dialect ? chunkNW32BM3F_js.findCategory(dialect) : null, [dialect]);
3707
3727
  react.useEffect(() => {
3708
3728
  if (dialectOption?.defaultPort && (port === "" || /^[0-9]+$/.test(port))) {
3709
3729
  setPort(String(dialectOption.defaultPort));
@@ -3767,10 +3787,9 @@ function DatasourceNewWizardPageView({
3767
3787
  if (Number.isFinite(pool) && pool > 0) payload.maxPoolSize = pool;
3768
3788
  const timeout = Number(timeoutMs);
3769
3789
  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;
3790
+ if (allowedTablesSelected.length > 0) payload.allowedTables = [...allowedTablesSelected];
3791
+ if (blockedColumnsSelected.length > 0) payload.blockedColumns = [...blockedColumnsSelected];
3792
+ if (maskPii) payload.maskPii = true;
3774
3793
  return payload;
3775
3794
  }
3776
3795
  async function handleTestConnection() {
@@ -3787,11 +3806,7 @@ function DatasourceNewWizardPageView({
3787
3806
  async function submit() {
3788
3807
  setSubmitting(true);
3789
3808
  try {
3790
- const payload = {
3791
- ...buildPayload(),
3792
- ...maskPii ? { maskPii: true } : {}
3793
- };
3794
- await onSubmit(payload);
3809
+ await onSubmit(buildPayload());
3795
3810
  } finally {
3796
3811
  setSubmitting(false);
3797
3812
  }
@@ -3827,29 +3842,37 @@ function DatasourceNewWizardPageView({
3827
3842
  labels.wizardStep3Subtitle,
3828
3843
  labels.wizardStep4Subtitle
3829
3844
  ];
3830
- const timelineSteps = stepTitles.map((title, idx) => ({
3845
+ const indicatorSteps = stepTitles.map((title, idx) => ({
3831
3846
  id: String(idx + 1),
3832
- name: title,
3833
- description: stepSubtitles[idx],
3834
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
3847
+ title
3835
3848
  }));
3836
3849
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS2));
3837
3850
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3838
- chunkLVR4SR65_js.HeroSection,
3851
+ chunkTIJXCRM4_js.HeroSection,
3839
3852
  {
3840
3853
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
3841
3854
  label: counter,
3842
3855
  title: labels.pageTitle,
3843
3856
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
3844
- gradient: category?.gradient ?? "from-amber-500 to-orange-600"
3857
+ gradient: category?.gradient ?? "from-amber-500 to-orange-600",
3858
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3859
+ chunkTIJXCRM4_js.StepIndicator,
3860
+ {
3861
+ accent: "indigo",
3862
+ currentStep: step - 1,
3863
+ onStepChange: (idx) => goToStep(idx + 1),
3864
+ progressLabel: labels.pageTitle,
3865
+ steps: indicatorSteps
3866
+ }
3867
+ )
3845
3868
  }
3846
3869
  );
3847
3870
  function renderStep1() {
3848
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkFIJMOTP4_js.DIALECT_CATEGORIES.map((cat) => {
3871
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkNW32BM3F_js.DIALECT_CATEGORIES.map((cat) => {
3849
3872
  const color = CATEGORY_COLOR[cat.id] ?? "slate";
3850
3873
  const categoryLabel = labels[cat.labelKey] ?? cat.id;
3851
3874
  return /* @__PURE__ */ jsxRuntime.jsx(
3852
- chunkLVR4SR65_js.SectionCard,
3875
+ chunkTIJXCRM4_js.SectionCard,
3853
3876
  {
3854
3877
  variant: "glass",
3855
3878
  header: {
@@ -3867,7 +3890,7 @@ function DatasourceNewWizardPageView({
3867
3890
  const selected = opt.value === dialect;
3868
3891
  const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
3869
3892
  return /* @__PURE__ */ jsxRuntime.jsx(
3870
- chunkLVR4SR65_js.FilterTileButton,
3893
+ chunkTIJXCRM4_js.FilterTileButton,
3871
3894
  {
3872
3895
  isActive: selected,
3873
3896
  color,
@@ -3895,7 +3918,7 @@ function DatasourceNewWizardPageView({
3895
3918
  case "standard":
3896
3919
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3897
3920
  /* @__PURE__ */ jsxRuntime.jsx(
3898
- chunkLVR4SR65_js.FormInput,
3921
+ chunkTIJXCRM4_js.FormInput,
3899
3922
  {
3900
3923
  label: labels.fieldHost,
3901
3924
  value: host,
@@ -3908,7 +3931,7 @@ function DatasourceNewWizardPageView({
3908
3931
  }
3909
3932
  ),
3910
3933
  /* @__PURE__ */ jsxRuntime.jsx(
3911
- chunkLVR4SR65_js.FormInput,
3934
+ chunkTIJXCRM4_js.FormInput,
3912
3935
  {
3913
3936
  label: labels.fieldPort,
3914
3937
  type: "number",
@@ -3920,7 +3943,7 @@ function DatasourceNewWizardPageView({
3920
3943
  }
3921
3944
  ),
3922
3945
  /* @__PURE__ */ jsxRuntime.jsx(
3923
- chunkLVR4SR65_js.FormInput,
3946
+ chunkTIJXCRM4_js.FormInput,
3924
3947
  {
3925
3948
  label: labels.fieldDatabase,
3926
3949
  value: database,
@@ -3933,7 +3956,7 @@ function DatasourceNewWizardPageView({
3933
3956
  }
3934
3957
  ),
3935
3958
  /* @__PURE__ */ jsxRuntime.jsx(
3936
- chunkLVR4SR65_js.FormInput,
3959
+ chunkTIJXCRM4_js.FormInput,
3937
3960
  {
3938
3961
  label: labels.fieldUsername,
3939
3962
  value: username,
@@ -3945,7 +3968,7 @@ function DatasourceNewWizardPageView({
3945
3968
  }
3946
3969
  ),
3947
3970
  /* @__PURE__ */ jsxRuntime.jsx(
3948
- chunkLVR4SR65_js.FormInput,
3971
+ chunkTIJXCRM4_js.FormInput,
3949
3972
  {
3950
3973
  label: labels.fieldPassword,
3951
3974
  type: "password",
@@ -3958,7 +3981,7 @@ function DatasourceNewWizardPageView({
3958
3981
  }
3959
3982
  ),
3960
3983
  /* @__PURE__ */ jsxRuntime.jsx(
3961
- chunkLVR4SR65_js.FormInput,
3984
+ chunkTIJXCRM4_js.FormInput,
3962
3985
  {
3963
3986
  label: labels.fieldSchema,
3964
3987
  value: schema,
@@ -3972,7 +3995,7 @@ function DatasourceNewWizardPageView({
3972
3995
  ] });
3973
3996
  case "connection-string":
3974
3997
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
3975
- chunkLVR4SR65_js.FormInput,
3998
+ chunkTIJXCRM4_js.FormInput,
3976
3999
  {
3977
4000
  label: labels.fieldConnectionString,
3978
4001
  value: connectionString,
@@ -3987,7 +4010,7 @@ function DatasourceNewWizardPageView({
3987
4010
  case "cloud-bigquery":
3988
4011
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3989
4012
  /* @__PURE__ */ jsxRuntime.jsx(
3990
- chunkLVR4SR65_js.FormInput,
4013
+ chunkTIJXCRM4_js.FormInput,
3991
4014
  {
3992
4015
  label: labels.fieldProjectId,
3993
4016
  value: projectId,
@@ -4000,7 +4023,7 @@ function DatasourceNewWizardPageView({
4000
4023
  }
4001
4024
  ),
4002
4025
  /* @__PURE__ */ jsxRuntime.jsx(
4003
- chunkLVR4SR65_js.FormInput,
4026
+ chunkTIJXCRM4_js.FormInput,
4004
4027
  {
4005
4028
  label: labels.fieldDataset,
4006
4029
  value: dataset,
@@ -4013,7 +4036,7 @@ function DatasourceNewWizardPageView({
4013
4036
  }
4014
4037
  ),
4015
4038
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
4016
- chunkLVR4SR65_js.FormInput,
4039
+ chunkTIJXCRM4_js.FormInput,
4017
4040
  {
4018
4041
  label: labels.fieldKeyFile,
4019
4042
  value: keyFile,
@@ -4028,7 +4051,7 @@ function DatasourceNewWizardPageView({
4028
4051
  case "cloud-snowflake":
4029
4052
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4030
4053
  /* @__PURE__ */ jsxRuntime.jsx(
4031
- chunkLVR4SR65_js.FormInput,
4054
+ chunkTIJXCRM4_js.FormInput,
4032
4055
  {
4033
4056
  label: labels.fieldAccount,
4034
4057
  value: account,
@@ -4041,7 +4064,7 @@ function DatasourceNewWizardPageView({
4041
4064
  }
4042
4065
  ),
4043
4066
  /* @__PURE__ */ jsxRuntime.jsx(
4044
- chunkLVR4SR65_js.FormInput,
4067
+ chunkTIJXCRM4_js.FormInput,
4045
4068
  {
4046
4069
  label: labels.fieldWarehouse,
4047
4070
  value: warehouseField,
@@ -4054,7 +4077,7 @@ function DatasourceNewWizardPageView({
4054
4077
  }
4055
4078
  ),
4056
4079
  /* @__PURE__ */ jsxRuntime.jsx(
4057
- chunkLVR4SR65_js.FormInput,
4080
+ chunkTIJXCRM4_js.FormInput,
4058
4081
  {
4059
4082
  label: labels.fieldDatabase,
4060
4083
  value: database,
@@ -4067,7 +4090,7 @@ function DatasourceNewWizardPageView({
4067
4090
  }
4068
4091
  ),
4069
4092
  /* @__PURE__ */ jsxRuntime.jsx(
4070
- chunkLVR4SR65_js.FormInput,
4093
+ chunkTIJXCRM4_js.FormInput,
4071
4094
  {
4072
4095
  label: labels.fieldUsername,
4073
4096
  value: username,
@@ -4080,7 +4103,7 @@ function DatasourceNewWizardPageView({
4080
4103
  }
4081
4104
  ),
4082
4105
  /* @__PURE__ */ jsxRuntime.jsx(
4083
- chunkLVR4SR65_js.FormInput,
4106
+ chunkTIJXCRM4_js.FormInput,
4084
4107
  {
4085
4108
  label: labels.fieldPassword,
4086
4109
  type: "password",
@@ -4093,7 +4116,7 @@ function DatasourceNewWizardPageView({
4093
4116
  }
4094
4117
  ),
4095
4118
  /* @__PURE__ */ jsxRuntime.jsx(
4096
- chunkLVR4SR65_js.FormInput,
4119
+ chunkTIJXCRM4_js.FormInput,
4097
4120
  {
4098
4121
  label: labels.fieldSchema,
4099
4122
  value: schema,
@@ -4108,7 +4131,7 @@ function DatasourceNewWizardPageView({
4108
4131
  case "cloud-key":
4109
4132
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4110
4133
  /* @__PURE__ */ jsxRuntime.jsx(
4111
- chunkLVR4SR65_js.FormInput,
4134
+ chunkTIJXCRM4_js.FormInput,
4112
4135
  {
4113
4136
  label: labels.fieldRegion,
4114
4137
  value: region,
@@ -4121,7 +4144,7 @@ function DatasourceNewWizardPageView({
4121
4144
  }
4122
4145
  ),
4123
4146
  /* @__PURE__ */ jsxRuntime.jsx(
4124
- chunkLVR4SR65_js.FormInput,
4147
+ chunkTIJXCRM4_js.FormInput,
4125
4148
  {
4126
4149
  label: labels.fieldToken,
4127
4150
  type: "password",
@@ -4135,7 +4158,7 @@ function DatasourceNewWizardPageView({
4135
4158
  }
4136
4159
  ),
4137
4160
  /* @__PURE__ */ jsxRuntime.jsx(
4138
- chunkLVR4SR65_js.FormInput,
4161
+ chunkTIJXCRM4_js.FormInput,
4139
4162
  {
4140
4163
  label: labels.fieldBucket,
4141
4164
  value: bucket,
@@ -4150,7 +4173,7 @@ function DatasourceNewWizardPageView({
4150
4173
  case "vector-key":
4151
4174
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4152
4175
  /* @__PURE__ */ jsxRuntime.jsx(
4153
- chunkLVR4SR65_js.FormInput,
4176
+ chunkTIJXCRM4_js.FormInput,
4154
4177
  {
4155
4178
  label: labels.fieldApiKey,
4156
4179
  type: "password",
@@ -4164,7 +4187,7 @@ function DatasourceNewWizardPageView({
4164
4187
  }
4165
4188
  ),
4166
4189
  /* @__PURE__ */ jsxRuntime.jsx(
4167
- chunkLVR4SR65_js.FormInput,
4190
+ chunkTIJXCRM4_js.FormInput,
4168
4191
  {
4169
4192
  label: labels.fieldEnvironment,
4170
4193
  value: environment,
@@ -4177,7 +4200,7 @@ function DatasourceNewWizardPageView({
4177
4200
  }
4178
4201
  ),
4179
4202
  /* @__PURE__ */ jsxRuntime.jsx(
4180
- chunkLVR4SR65_js.FormInput,
4203
+ chunkTIJXCRM4_js.FormInput,
4181
4204
  {
4182
4205
  label: labels.fieldIndex,
4183
4206
  value: index,
@@ -4193,13 +4216,13 @@ function DatasourceNewWizardPageView({
4193
4216
  }
4194
4217
  function renderStep2() {
4195
4218
  if (!dialectOption) {
4196
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4219
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4197
4220
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: labels.wizardStep1Subtitle }),
4198
4221
  /* @__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
4222
  ] });
4200
4223
  }
4201
4224
  return /* @__PURE__ */ jsxRuntime.jsx(
4202
- chunkLVR4SR65_js.SectionCard,
4225
+ chunkTIJXCRM4_js.SectionCard,
4203
4226
  {
4204
4227
  variant: "glass",
4205
4228
  header: {
@@ -4210,7 +4233,7 @@ function DatasourceNewWizardPageView({
4210
4233
  },
4211
4234
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4212
4235
  /* @__PURE__ */ jsxRuntime.jsx(
4213
- chunkLVR4SR65_js.FormInput,
4236
+ chunkTIJXCRM4_js.FormInput,
4214
4237
  {
4215
4238
  label: labels.fieldName,
4216
4239
  value: name,
@@ -4222,10 +4245,10 @@ function DatasourceNewWizardPageView({
4222
4245
  required: true
4223
4246
  }
4224
4247
  ),
4225
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: renderConnectionFields() }),
4248
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.FormGrid, { children: renderConnectionFields() }),
4226
4249
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
4227
4250
  /* @__PURE__ */ jsxRuntime.jsx(
4228
- chunkLVR4SR65_js.FormToggle,
4251
+ chunkTIJXCRM4_js.FormToggle,
4229
4252
  {
4230
4253
  checked: ssl,
4231
4254
  onChange: (v) => {
@@ -4237,7 +4260,7 @@ function DatasourceNewWizardPageView({
4237
4260
  }
4238
4261
  ),
4239
4262
  /* @__PURE__ */ jsxRuntime.jsx(
4240
- chunkLVR4SR65_js.FormToggle,
4263
+ chunkTIJXCRM4_js.FormToggle,
4241
4264
  {
4242
4265
  checked: readOnly,
4243
4266
  onChange: (v) => {
@@ -4259,13 +4282,13 @@ function DatasourceNewWizardPageView({
4259
4282
  onClick: () => void handleTestConnection(),
4260
4283
  disabled: testStatus === "testing",
4261
4284
  children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
4262
- /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Spinner, { size: "xs" }),
4285
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.Spinner, { size: "xs" }),
4263
4286
  labels.testing
4264
4287
  ] }) : labels.testConnection
4265
4288
  }
4266
4289
  ),
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 })
4290
+ testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
4291
+ testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.StatusBadge, { status: "error", label: labels.connectionFailed })
4269
4292
  ] })
4270
4293
  ] })
4271
4294
  }
@@ -4273,7 +4296,7 @@ function DatasourceNewWizardPageView({
4273
4296
  }
4274
4297
  function renderStep3() {
4275
4298
  return /* @__PURE__ */ jsxRuntime.jsx(
4276
- chunkLVR4SR65_js.SectionCard,
4299
+ chunkTIJXCRM4_js.SectionCard,
4277
4300
  {
4278
4301
  variant: "glass",
4279
4302
  header: {
@@ -4281,9 +4304,9 @@ function DatasourceNewWizardPageView({
4281
4304
  subtitle: labels.governanceSectionSubtitle
4282
4305
  },
4283
4306
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4284
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4307
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
4285
4308
  /* @__PURE__ */ jsxRuntime.jsx(
4286
- chunkLVR4SR65_js.FormInput,
4309
+ chunkTIJXCRM4_js.FormInput,
4287
4310
  {
4288
4311
  label: labels.fieldMaxPoolSize,
4289
4312
  type: "number",
@@ -4298,7 +4321,7 @@ function DatasourceNewWizardPageView({
4298
4321
  }
4299
4322
  ),
4300
4323
  /* @__PURE__ */ jsxRuntime.jsx(
4301
- chunkLVR4SR65_js.FormInput,
4324
+ chunkTIJXCRM4_js.FormInput,
4302
4325
  {
4303
4326
  label: labels.fieldTimeoutMs,
4304
4327
  type: "number",
@@ -4312,34 +4335,56 @@ function DatasourceNewWizardPageView({
4312
4335
  }
4313
4336
  )
4314
4337
  ] }),
4338
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4339
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldAllowedTables }),
4340
+ /* @__PURE__ */ jsxRuntime.jsx(
4341
+ chunkTIJXCRM4_js.ChipPicker,
4342
+ {
4343
+ items: allowedTablesItems,
4344
+ selectedIds: allowedTablesSelected,
4345
+ onChange: (ids) => {
4346
+ setAllowedTablesSelected(ids);
4347
+ markTouched();
4348
+ },
4349
+ onItemsChange: (items) => {
4350
+ setAllowedTablesItems(items);
4351
+ markTouched();
4352
+ },
4353
+ allowCustom: true,
4354
+ unselectedStyle: allowedTablesStyle,
4355
+ showActions: false,
4356
+ addPlaceholder: labels.fieldAllowedTablesPlaceholder,
4357
+ addAriaLabel: labels.fieldAllowedTables
4358
+ }
4359
+ ),
4360
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldAllowedTablesHint })
4361
+ ] }),
4362
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
4363
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-medium text-gray-500 dark:text-gray-400", children: labels.fieldBlockedColumns }),
4364
+ /* @__PURE__ */ jsxRuntime.jsx(
4365
+ chunkTIJXCRM4_js.ChipPicker,
4366
+ {
4367
+ items: blockedColumnsItems,
4368
+ selectedIds: blockedColumnsSelected,
4369
+ onChange: (ids) => {
4370
+ setBlockedColumnsSelected(ids);
4371
+ markTouched();
4372
+ },
4373
+ onItemsChange: (items) => {
4374
+ setBlockedColumnsItems(items);
4375
+ markTouched();
4376
+ },
4377
+ allowCustom: true,
4378
+ unselectedStyle: blockedColumnsStyle,
4379
+ showActions: false,
4380
+ addPlaceholder: labels.fieldBlockedColumnsPlaceholder,
4381
+ addAriaLabel: labels.fieldBlockedColumns
4382
+ }
4383
+ ),
4384
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.fieldBlockedColumnsHint })
4385
+ ] }),
4315
4386
  /* @__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,
4387
+ chunkTIJXCRM4_js.FormCheckbox,
4343
4388
  {
4344
4389
  checked: maskPii,
4345
4390
  onChange: (v) => {
@@ -4357,11 +4402,11 @@ function DatasourceNewWizardPageView({
4357
4402
  function renderStep4() {
4358
4403
  const categoryLabel = category ? labels[category.labelKey] ?? category.id : labels.reviewNoneValue;
4359
4404
  const dialectLabel = dialectOption?.label ?? labels.reviewNoneValue;
4360
- const allowed = splitList(allowedTables);
4361
- const blocked = splitList(blockedColumns);
4405
+ const allowed = allowedTablesSelected;
4406
+ const blocked = blockedColumnsSelected;
4362
4407
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4363
4408
  /* @__PURE__ */ jsxRuntime.jsx(
4364
- chunkLVR4SR65_js.SectionCard,
4409
+ chunkTIJXCRM4_js.SectionCard,
4365
4410
  {
4366
4411
  variant: "glass",
4367
4412
  header: {
@@ -4379,7 +4424,7 @@ function DatasourceNewWizardPageView({
4379
4424
  }
4380
4425
  ),
4381
4426
  /* @__PURE__ */ jsxRuntime.jsx(
4382
- chunkLVR4SR65_js.SectionCard,
4427
+ chunkTIJXCRM4_js.SectionCard,
4383
4428
  {
4384
4429
  variant: "glass",
4385
4430
  header: {
@@ -4399,7 +4444,7 @@ function DatasourceNewWizardPageView({
4399
4444
  }
4400
4445
  ),
4401
4446
  /* @__PURE__ */ jsxRuntime.jsx(
4402
- chunkLVR4SR65_js.SectionCard,
4447
+ chunkTIJXCRM4_js.SectionCard,
4403
4448
  {
4404
4449
  variant: "glass",
4405
4450
  header: {
@@ -4450,20 +4495,10 @@ function DatasourceNewWizardPageView({
4450
4495
  if (step < TOTAL_STEPS2) goNext();
4451
4496
  else void submit();
4452
4497
  },
4453
- className: "space-y-5",
4498
+ className: "space-y-4",
4454
4499
  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
- ] })
4500
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
4501
+ footer
4467
4502
  ]
4468
4503
  }
4469
4504
  );
@@ -4478,9 +4513,6 @@ function ReviewRow2({ label, value }) {
4478
4513
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
4479
4514
  ] });
4480
4515
  }
4481
- function splitList(raw) {
4482
- return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
4483
- }
4484
4516
  async function simulateTest() {
4485
4517
  await new Promise((r) => setTimeout(r, 1500));
4486
4518
  return true;
@@ -4594,11 +4626,16 @@ function RuleNewWizardPageView({
4594
4626
  const [priority, setPriority] = react.useState(50);
4595
4627
  const [enabled, setEnabled] = react.useState(true);
4596
4628
  const [status, setStatus] = react.useState("active");
4597
- const [tagsInput, setTagsInput] = react.useState("");
4629
+ const [tagsItems, setTagsItems] = react.useState([]);
4630
+ const [tagsSelected, setTagsSelected] = react.useState([]);
4631
+ const tagsStyle = {
4632
+ bg: "bg-fuchsia-500/15",
4633
+ text: "text-fuchsia-700 dark:text-fuchsia-300"
4634
+ };
4598
4635
  const [combinator, setCombinator] = react.useState("and");
4599
- const [condition, setCondition] = react.useState(chunkEC34PGUO_js.defaultRuleCondition());
4636
+ const [condition, setCondition] = react.useState(chunkAPONR6ZM_js.defaultRuleCondition());
4600
4637
  const [actionTileId, setActionTileId] = react.useState("");
4601
- const [action, setAction] = react.useState(chunkEC34PGUO_js.defaultRuleAction());
4638
+ const [action, setAction] = react.useState(chunkAPONR6ZM_js.defaultRuleAction());
4602
4639
  const [validFromDate, setValidFromDate] = react.useState(null);
4603
4640
  const [validFromTime, setValidFromTime] = react.useState(null);
4604
4641
  const [validUntilDate, setValidUntilDate] = react.useState(null);
@@ -4644,49 +4681,40 @@ function RuleNewWizardPageView({
4644
4681
  next.setHours(time?.hours ?? 0, time?.minutes ?? 0, 0, 0);
4645
4682
  return next.toISOString();
4646
4683
  }
4647
- const tags = react.useMemo(
4648
- () => tagsInput.split(",").map((t) => t.trim()).filter((t) => t.length > 0),
4649
- [tagsInput]
4650
- );
4684
+ const tags = react.useMemo(() => [...tagsSelected], [tagsSelected]);
4651
4685
  function buildPayload() {
4652
4686
  const validFrom = combineDateTime(validFromDate, validFromTime);
4653
4687
  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" ? {
4688
+ const conditionWithCombinator = combinator === "and" ? condition : {
4661
4689
  operator: "boolean_expression",
4662
- combinator: "or",
4690
+ combinator,
4663
4691
  operands: [condition]
4664
- } : condition;
4692
+ };
4665
4693
  const finalAction = {
4666
4694
  type: action.type,
4667
4695
  params: {
4668
4696
  ...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
- } : {}
4697
+ actionVariant: actionTileId
4676
4698
  }
4677
4699
  };
4678
- const wireStatus = status === "paused" ? "draft" : status;
4700
+ const recurrencePayload = recurrence === "cron" ? { kind: "cron", expression: cronExpression.trim() } : recurrence === "recurring" ? {
4701
+ kind: "recurring",
4702
+ weekdays: [...weekdays],
4703
+ timeOfDay: recurringTime ? `${pad(recurringTime.hours)}:${pad(recurringTime.minutes)}` : "00:00"
4704
+ } : { kind: "one-off" };
4679
4705
  return {
4680
4706
  name: name.trim() || "Untitled Rule",
4681
4707
  description: description.trim() || void 0,
4682
4708
  enabled,
4683
4709
  priority,
4684
- status: wireStatus,
4710
+ // `paused` ships as-is — backend understands it natively (Fallback 2).
4711
+ status,
4685
4712
  validFrom,
4686
4713
  validUntil,
4687
4714
  tags,
4688
4715
  condition: conditionWithCombinator,
4689
- action: finalAction
4716
+ action: finalAction,
4717
+ recurrence: recurrencePayload
4690
4718
  };
4691
4719
  }
4692
4720
  async function submit() {
@@ -4730,26 +4758,34 @@ function RuleNewWizardPageView({
4730
4758
  labels.wizardStep4Subtitle,
4731
4759
  labels.wizardStep5Subtitle
4732
4760
  ];
4733
- const timelineSteps = stepTitles.map((title, idx) => ({
4761
+ const indicatorSteps = stepTitles.map((title, idx) => ({
4734
4762
  id: String(idx + 1),
4735
- name: title,
4736
- description: stepSubtitles[idx],
4737
- status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
4763
+ title
4738
4764
  }));
4739
4765
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS3));
4740
4766
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
4741
- chunkLVR4SR65_js.HeroSection,
4767
+ chunkTIJXCRM4_js.HeroSection,
4742
4768
  {
4743
4769
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
4744
4770
  label: counter,
4745
4771
  title: labels.pageTitle,
4746
4772
  subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
4747
- gradient: "from-fuchsia-500 to-purple-700"
4773
+ gradient: "from-fuchsia-500 to-purple-700",
4774
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4775
+ chunkTIJXCRM4_js.StepIndicator,
4776
+ {
4777
+ accent: "violet",
4778
+ currentStep: step - 1,
4779
+ onStepChange: (idx) => goToStep(idx + 1),
4780
+ progressLabel: labels.pageTitle,
4781
+ steps: indicatorSteps
4782
+ }
4783
+ )
4748
4784
  }
4749
4785
  );
4750
4786
  function renderStep1() {
4751
4787
  return /* @__PURE__ */ jsxRuntime.jsx(
4752
- chunkLVR4SR65_js.SectionCard,
4788
+ chunkTIJXCRM4_js.SectionCard,
4753
4789
  {
4754
4790
  variant: "glass",
4755
4791
  header: {
@@ -4758,7 +4794,7 @@ function RuleNewWizardPageView({
4758
4794
  },
4759
4795
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4760
4796
  /* @__PURE__ */ jsxRuntime.jsx(
4761
- chunkLVR4SR65_js.FormInput,
4797
+ chunkTIJXCRM4_js.FormInput,
4762
4798
  {
4763
4799
  label: labels.nameLabel,
4764
4800
  value: name,
@@ -4771,7 +4807,7 @@ function RuleNewWizardPageView({
4771
4807
  }
4772
4808
  ),
4773
4809
  /* @__PURE__ */ jsxRuntime.jsx(
4774
- chunkLVR4SR65_js.FormTextarea,
4810
+ chunkTIJXCRM4_js.FormTextarea,
4775
4811
  {
4776
4812
  label: labels.descriptionLabel,
4777
4813
  value: description,
@@ -4807,7 +4843,7 @@ function RuleNewWizardPageView({
4807
4843
  }
4808
4844
  ),
4809
4845
  /* @__PURE__ */ jsxRuntime.jsx(
4810
- chunkLVR4SR65_js.FormToggle,
4846
+ chunkTIJXCRM4_js.FormToggle,
4811
4847
  {
4812
4848
  checked: enabled,
4813
4849
  onChange: (v) => {
@@ -4824,7 +4860,7 @@ function RuleNewWizardPageView({
4824
4860
  }
4825
4861
  function renderStep2() {
4826
4862
  return /* @__PURE__ */ jsxRuntime.jsx(
4827
- chunkLVR4SR65_js.SectionCard,
4863
+ chunkTIJXCRM4_js.SectionCard,
4828
4864
  {
4829
4865
  variant: "glass",
4830
4866
  header: {
@@ -4835,7 +4871,7 @@ function RuleNewWizardPageView({
4835
4871
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4836
4872
  /* @__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
4873
  /* @__PURE__ */ jsxRuntime.jsx(
4838
- chunkLVR4SR65_js.SegmentedControl,
4874
+ chunkTIJXCRM4_js.SegmentedControl,
4839
4875
  {
4840
4876
  segments: [
4841
4877
  { value: "and", label: labels.combinatorAnd },
@@ -4852,7 +4888,7 @@ function RuleNewWizardPageView({
4852
4888
  )
4853
4889
  ] }),
4854
4890
  /* @__PURE__ */ jsxRuntime.jsx(
4855
- chunkEC34PGUO_js.RuleConditionBuilder,
4891
+ chunkAPONR6ZM_js.RuleConditionBuilder,
4856
4892
  {
4857
4893
  value: condition,
4858
4894
  onChange: (next) => {
@@ -4868,7 +4904,7 @@ function RuleNewWizardPageView({
4868
4904
  function renderStep3() {
4869
4905
  const selectedTile = ACTION_TILES.find((t) => t.id === actionTileId) ?? null;
4870
4906
  return /* @__PURE__ */ jsxRuntime.jsx(
4871
- chunkLVR4SR65_js.SectionCard,
4907
+ chunkTIJXCRM4_js.SectionCard,
4872
4908
  {
4873
4909
  variant: "glass",
4874
4910
  header: {
@@ -4888,7 +4924,7 @@ function RuleNewWizardPageView({
4888
4924
  const label = labels[tile.labelKey] ?? tile.id;
4889
4925
  const description2 = labels[tile.descriptionKey] ?? "";
4890
4926
  return /* @__PURE__ */ jsxRuntime.jsx(
4891
- chunkLVR4SR65_js.FilterTileButton,
4927
+ chunkTIJXCRM4_js.FilterTileButton,
4892
4928
  {
4893
4929
  isActive: selected,
4894
4930
  color: tile.color,
@@ -4906,7 +4942,7 @@ function RuleNewWizardPageView({
4906
4942
  }
4907
4943
  ),
4908
4944
  selectedTile && /* @__PURE__ */ jsxRuntime.jsx(
4909
- chunkLVR4SR65_js.SectionCard,
4945
+ chunkTIJXCRM4_js.SectionCard,
4910
4946
  {
4911
4947
  variant: "glass",
4912
4948
  header: {
@@ -4914,7 +4950,7 @@ function RuleNewWizardPageView({
4914
4950
  subtitle: labels.actionConfigSubtitle
4915
4951
  },
4916
4952
  children: /* @__PURE__ */ jsxRuntime.jsx(
4917
- chunkEC34PGUO_js.RuleActionBuilder,
4953
+ chunkAPONR6ZM_js.RuleActionBuilder,
4918
4954
  {
4919
4955
  value: action,
4920
4956
  onChange: (next) => {
@@ -4931,7 +4967,7 @@ function RuleNewWizardPageView({
4931
4967
  }
4932
4968
  function renderStep4() {
4933
4969
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(
4934
- chunkLVR4SR65_js.SectionCard,
4970
+ chunkTIJXCRM4_js.SectionCard,
4935
4971
  {
4936
4972
  variant: "glass",
4937
4973
  header: {
@@ -4939,12 +4975,12 @@ function RuleNewWizardPageView({
4939
4975
  subtitle: labels.scheduleSectionSubtitle
4940
4976
  },
4941
4977
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4942
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4978
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkTIJXCRM4_js.FormGrid, { children: [
4943
4979
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
4944
4980
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
4945
4981
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4946
4982
  /* @__PURE__ */ jsxRuntime.jsx(
4947
- chunkLVR4SR65_js.DatePicker,
4983
+ chunkTIJXCRM4_js.DatePicker,
4948
4984
  {
4949
4985
  value: validFromDate,
4950
4986
  onChange: (d) => {
@@ -4955,7 +4991,7 @@ function RuleNewWizardPageView({
4955
4991
  }
4956
4992
  ),
4957
4993
  /* @__PURE__ */ jsxRuntime.jsx(
4958
- chunkLVR4SR65_js.TimePicker,
4994
+ chunkTIJXCRM4_js.TimePicker,
4959
4995
  {
4960
4996
  value: validFromTime,
4961
4997
  onChange: (t) => {
@@ -4971,7 +5007,7 @@ function RuleNewWizardPageView({
4971
5007
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
4972
5008
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4973
5009
  /* @__PURE__ */ jsxRuntime.jsx(
4974
- chunkLVR4SR65_js.DatePicker,
5010
+ chunkTIJXCRM4_js.DatePicker,
4975
5011
  {
4976
5012
  value: validUntilDate,
4977
5013
  onChange: (d) => {
@@ -4982,7 +5018,7 @@ function RuleNewWizardPageView({
4982
5018
  }
4983
5019
  ),
4984
5020
  /* @__PURE__ */ jsxRuntime.jsx(
4985
- chunkLVR4SR65_js.TimePicker,
5021
+ chunkTIJXCRM4_js.TimePicker,
4986
5022
  {
4987
5023
  value: validUntilTime,
4988
5024
  onChange: (t) => {
@@ -4996,7 +5032,7 @@ function RuleNewWizardPageView({
4996
5032
  ] })
4997
5033
  ] }),
4998
5034
  /* @__PURE__ */ jsxRuntime.jsx(
4999
- chunkLVR4SR65_js.FormCheckbox,
5035
+ chunkTIJXCRM4_js.FormCheckbox,
5000
5036
  {
5001
5037
  checked: noExpiry,
5002
5038
  onChange: (v) => {
@@ -5010,7 +5046,7 @@ function RuleNewWizardPageView({
5010
5046
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5011
5047
  /* @__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
5048
  /* @__PURE__ */ jsxRuntime.jsx(
5013
- chunkLVR4SR65_js.SegmentedControl,
5049
+ chunkTIJXCRM4_js.SegmentedControl,
5014
5050
  {
5015
5051
  segments: [
5016
5052
  { value: "active", label: labels.statusActive },
@@ -5026,23 +5062,34 @@ function RuleNewWizardPageView({
5026
5062
  }
5027
5063
  )
5028
5064
  ] }),
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
- ),
5065
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
5066
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.tagsLabel }),
5067
+ /* @__PURE__ */ jsxRuntime.jsx(
5068
+ chunkTIJXCRM4_js.ChipPicker,
5069
+ {
5070
+ items: tagsItems,
5071
+ selectedIds: tagsSelected,
5072
+ onChange: (ids) => {
5073
+ setTagsSelected(ids);
5074
+ markTouched();
5075
+ },
5076
+ onItemsChange: (items) => {
5077
+ setTagsItems(items);
5078
+ markTouched();
5079
+ },
5080
+ allowCustom: true,
5081
+ unselectedStyle: tagsStyle,
5082
+ showActions: false,
5083
+ addPlaceholder: labels.tagsPlaceholder,
5084
+ addAriaLabel: labels.tagsLabel
5085
+ }
5086
+ ),
5087
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-slate-500 dark:text-slate-400", children: labels.tagsHint })
5088
+ ] }),
5042
5089
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5043
5090
  /* @__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
5091
  /* @__PURE__ */ jsxRuntime.jsx(
5045
- chunkLVR4SR65_js.SegmentedControl,
5092
+ chunkTIJXCRM4_js.SegmentedControl,
5046
5093
  {
5047
5094
  segments: [
5048
5095
  { value: "one-off", label: labels.recurrenceOneOff },
@@ -5059,7 +5106,7 @@ function RuleNewWizardPageView({
5059
5106
  )
5060
5107
  ] }),
5061
5108
  recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
5062
- chunkLVR4SR65_js.FormInput,
5109
+ chunkTIJXCRM4_js.FormInput,
5063
5110
  {
5064
5111
  label: labels.cronExpressionLabel,
5065
5112
  value: cronExpression,
@@ -5074,34 +5121,30 @@ function RuleNewWizardPageView({
5074
5121
  recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
5075
5122
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5076
5123
  /* @__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
5124
+ /* @__PURE__ */ jsxRuntime.jsx(
5125
+ chunkTIJXCRM4_js.ChipPicker,
5126
+ {
5127
+ items: WEEKDAYS.map((d) => ({
5128
+ id: d.id,
5129
+ name: labels[d.labelKey] ?? d.id,
5130
+ style: {
5131
+ bg: "bg-fuchsia-500/15",
5132
+ text: "text-fuchsia-700 dark:text-fuchsia-300"
5133
+ }
5134
+ })),
5135
+ selectedIds: weekdays,
5136
+ onChange: (ids) => {
5137
+ setWeekdays(ids);
5138
+ markTouched();
5096
5139
  },
5097
- d.id
5098
- );
5099
- }) })
5140
+ showActions: false
5141
+ }
5142
+ )
5100
5143
  ] }),
5101
5144
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5102
5145
  /* @__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
5146
  /* @__PURE__ */ jsxRuntime.jsx(
5104
- chunkLVR4SR65_js.TimePicker,
5147
+ chunkTIJXCRM4_js.TimePicker,
5105
5148
  {
5106
5149
  value: recurringTime,
5107
5150
  onChange: (t) => {
@@ -5123,7 +5166,7 @@ function RuleNewWizardPageView({
5123
5166
  const actionSentence = humanReadableAction(payload.action, labels, ACTION_TILES, actionTileId);
5124
5167
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5125
5168
  /* @__PURE__ */ jsxRuntime.jsx(
5126
- chunkLVR4SR65_js.SectionCard,
5169
+ chunkTIJXCRM4_js.SectionCard,
5127
5170
  {
5128
5171
  variant: "glass",
5129
5172
  header: {
@@ -5149,7 +5192,7 @@ function RuleNewWizardPageView({
5149
5192
  }
5150
5193
  ),
5151
5194
  /* @__PURE__ */ jsxRuntime.jsxs(
5152
- chunkLVR4SR65_js.SectionCard,
5195
+ chunkTIJXCRM4_js.SectionCard,
5153
5196
  {
5154
5197
  variant: "glass",
5155
5198
  header: {
@@ -5168,7 +5211,7 @@ function RuleNewWizardPageView({
5168
5211
  }
5169
5212
  ),
5170
5213
  /* @__PURE__ */ jsxRuntime.jsxs(
5171
- chunkLVR4SR65_js.SectionCard,
5214
+ chunkTIJXCRM4_js.SectionCard,
5172
5215
  {
5173
5216
  variant: "glass",
5174
5217
  header: {
@@ -5186,7 +5229,7 @@ function RuleNewWizardPageView({
5186
5229
  }
5187
5230
  ),
5188
5231
  /* @__PURE__ */ jsxRuntime.jsx(
5189
- chunkLVR4SR65_js.SectionCard,
5232
+ chunkTIJXCRM4_js.SectionCard,
5190
5233
  {
5191
5234
  variant: "glass",
5192
5235
  header: {
@@ -5252,20 +5295,10 @@ function RuleNewWizardPageView({
5252
5295
  if (step < TOTAL_STEPS3) goNext();
5253
5296
  else void submit();
5254
5297
  },
5255
- className: "space-y-5",
5298
+ className: "space-y-4",
5256
5299
  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
- ] })
5300
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-5 sm:p-8", children: stepBody }),
5301
+ footer
5269
5302
  ]
5270
5303
  }
5271
5304
  );
@@ -5330,31 +5363,31 @@ function humanReadableAction(action, labels, tiles, actionTileId) {
5330
5363
 
5331
5364
  Object.defineProperty(exports, "RolesPageView", {
5332
5365
  enumerable: true,
5333
- get: function () { return chunkYSYEV2Z6_js.RolesPageView; }
5366
+ get: function () { return chunkKDVZIDVF_js.RolesPageView; }
5334
5367
  });
5335
5368
  Object.defineProperty(exports, "UsersPageView", {
5336
5369
  enumerable: true,
5337
- get: function () { return chunkYSYEV2Z6_js.UsersPageView; }
5370
+ get: function () { return chunkKDVZIDVF_js.UsersPageView; }
5338
5371
  });
5339
5372
  Object.defineProperty(exports, "DIALECT_CATEGORIES", {
5340
5373
  enumerable: true,
5341
- get: function () { return chunkFIJMOTP4_js.DIALECT_CATEGORIES; }
5374
+ get: function () { return chunkNW32BM3F_js.DIALECT_CATEGORIES; }
5342
5375
  });
5343
5376
  Object.defineProperty(exports, "DatasourceFormModal", {
5344
5377
  enumerable: true,
5345
- get: function () { return chunkFIJMOTP4_js.DatasourceFormModal; }
5378
+ get: function () { return chunkNW32BM3F_js.DatasourceFormModal; }
5346
5379
  });
5347
5380
  Object.defineProperty(exports, "DatasourceModal", {
5348
5381
  enumerable: true,
5349
- get: function () { return chunkFIJMOTP4_js.DatasourceModal; }
5382
+ get: function () { return chunkNW32BM3F_js.DatasourceModal; }
5350
5383
  });
5351
5384
  Object.defineProperty(exports, "findCategory", {
5352
5385
  enumerable: true,
5353
- get: function () { return chunkFIJMOTP4_js.findCategory; }
5386
+ get: function () { return chunkNW32BM3F_js.findCategory; }
5354
5387
  });
5355
5388
  Object.defineProperty(exports, "findDialect", {
5356
5389
  enumerable: true,
5357
- get: function () { return chunkFIJMOTP4_js.findDialect; }
5390
+ get: function () { return chunkNW32BM3F_js.findDialect; }
5358
5391
  });
5359
5392
  exports.AgentNewWizardPageView = AgentNewWizardPageView;
5360
5393
  exports.AgentsConfigPageView = AgentsConfigPageView;