@datatechsolutions/ui 3.9.1 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/astrlabe/index.js +107 -107
  2. package/dist/astrlabe/index.mjs +3 -3
  3. package/dist/astrlabe/workflow-canvas.js +3 -3
  4. package/dist/astrlabe/workflow-canvas.mjs +2 -2
  5. package/dist/{chunk-ZDXEGSCF.js → chunk-2A45ZEK4.js} +45 -45
  6. package/dist/{chunk-ZDXEGSCF.js.map → chunk-2A45ZEK4.js.map} +1 -1
  7. package/dist/{chunk-T4IYOKHR.js → chunk-5AKTDJFR.js} +25 -25
  8. package/dist/{chunk-T4IYOKHR.js.map → chunk-5AKTDJFR.js.map} +1 -1
  9. package/dist/{chunk-ZQRUAXGP.mjs → chunk-5KI7FB3E.mjs} +188 -48
  10. package/dist/chunk-5KI7FB3E.mjs.map +1 -0
  11. package/dist/{chunk-GQWC4EKE.mjs → chunk-5U43K6G3.mjs} +4 -4
  12. package/dist/{chunk-GQWC4EKE.mjs.map → chunk-5U43K6G3.mjs.map} +1 -1
  13. package/dist/{chunk-PD3JLDA5.mjs → chunk-6UX2SRA2.mjs} +3 -3
  14. package/dist/{chunk-PD3JLDA5.mjs.map → chunk-6UX2SRA2.mjs.map} +1 -1
  15. package/dist/{chunk-2ZY3IQ2I.mjs → chunk-6ZYATZS3.mjs} +3 -3
  16. package/dist/{chunk-2ZY3IQ2I.mjs.map → chunk-6ZYATZS3.mjs.map} +1 -1
  17. package/dist/{chunk-AXBD6OAF.mjs → chunk-A256OE5E.mjs} +11 -11
  18. package/dist/{chunk-AXBD6OAF.mjs.map → chunk-A256OE5E.mjs.map} +1 -1
  19. package/dist/{chunk-DQIEVLA3.js → chunk-AMESLEIO.js} +35 -35
  20. package/dist/{chunk-DQIEVLA3.js.map → chunk-AMESLEIO.js.map} +1 -1
  21. package/dist/{chunk-6E2YH67A.js → chunk-B76RTA7D.js} +35 -35
  22. package/dist/{chunk-6E2YH67A.js.map → chunk-B76RTA7D.js.map} +1 -1
  23. package/dist/{chunk-OVQ4MKCV.mjs → chunk-BU4WMSK3.mjs} +3 -3
  24. package/dist/{chunk-OVQ4MKCV.mjs.map → chunk-BU4WMSK3.mjs.map} +1 -1
  25. package/dist/{chunk-WS3IJFPW.mjs → chunk-C4D3EI5L.mjs} +3 -3
  26. package/dist/{chunk-WS3IJFPW.mjs.map → chunk-C4D3EI5L.mjs.map} +1 -1
  27. package/dist/{chunk-EAIE4QGD.mjs → chunk-DA3H7ERQ.mjs} +20 -20
  28. package/dist/{chunk-EAIE4QGD.mjs.map → chunk-DA3H7ERQ.mjs.map} +1 -1
  29. package/dist/{chunk-U6VFS3RD.js → chunk-EC34PGUO.js} +142 -142
  30. package/dist/{chunk-U6VFS3RD.js.map → chunk-EC34PGUO.js.map} +1 -1
  31. package/dist/{chunk-6QJI5YOJ.mjs → chunk-FD376DZ6.mjs} +3 -3
  32. package/dist/{chunk-6QJI5YOJ.mjs.map → chunk-FD376DZ6.mjs.map} +1 -1
  33. package/dist/{chunk-ZQEMKEEH.mjs → chunk-FENA4YGN.mjs} +3 -3
  34. package/dist/{chunk-ZQEMKEEH.mjs.map → chunk-FENA4YGN.mjs.map} +1 -1
  35. package/dist/{chunk-R6GEJBFC.js → chunk-FIJMOTP4.js} +34 -34
  36. package/dist/{chunk-R6GEJBFC.js.map → chunk-FIJMOTP4.js.map} +1 -1
  37. package/dist/{chunk-BWUFLW5W.mjs → chunk-H7X3SXMB.mjs} +6 -6
  38. package/dist/{chunk-BWUFLW5W.mjs.map → chunk-H7X3SXMB.mjs.map} +1 -1
  39. package/dist/{chunk-OEZ7GAJY.mjs → chunk-HEXTU6W3.mjs} +6 -6
  40. package/dist/{chunk-OEZ7GAJY.mjs.map → chunk-HEXTU6W3.mjs.map} +1 -1
  41. package/dist/{chunk-2E7HYTS7.mjs → chunk-JB3U6ORY.mjs} +3 -3
  42. package/dist/{chunk-2E7HYTS7.mjs.map → chunk-JB3U6ORY.mjs.map} +1 -1
  43. package/dist/{chunk-A2RIX2RK.js → chunk-KHUWFL6W.js} +4 -4
  44. package/dist/{chunk-A2RIX2RK.js.map → chunk-KHUWFL6W.js.map} +1 -1
  45. package/dist/{chunk-CRBGZA6Y.js → chunk-L3R425GB.js} +13 -13
  46. package/dist/{chunk-CRBGZA6Y.js.map → chunk-L3R425GB.js.map} +1 -1
  47. package/dist/{chunk-MT66VKLS.js → chunk-LVR4SR65.js} +189 -47
  48. package/dist/chunk-LVR4SR65.js.map +1 -0
  49. package/dist/{chunk-UZIICTIY.js → chunk-MAOZWOA6.js} +55 -55
  50. package/dist/{chunk-UZIICTIY.js.map → chunk-MAOZWOA6.js.map} +1 -1
  51. package/dist/{chunk-WJENX6KB.js → chunk-MSMEECO6.js} +9 -9
  52. package/dist/{chunk-WJENX6KB.js.map → chunk-MSMEECO6.js.map} +1 -1
  53. package/dist/{chunk-SJ6SUS7H.mjs → chunk-NM37GLCL.mjs} +3 -3
  54. package/dist/{chunk-SJ6SUS7H.mjs.map → chunk-NM37GLCL.mjs.map} +1 -1
  55. package/dist/{chunk-CLTNCBSP.js → chunk-NSZN54HW.js} +4 -4
  56. package/dist/{chunk-CLTNCBSP.js.map → chunk-NSZN54HW.js.map} +1 -1
  57. package/dist/{chunk-7AM2SXEF.js → chunk-O4HH77A4.js} +85 -85
  58. package/dist/{chunk-7AM2SXEF.js.map → chunk-O4HH77A4.js.map} +1 -1
  59. package/dist/{chunk-RFUSH7WD.js → chunk-TSNKICPP.js} +10 -10
  60. package/dist/{chunk-RFUSH7WD.js.map → chunk-TSNKICPP.js.map} +1 -1
  61. package/dist/{chunk-ARLYOLSO.mjs → chunk-W6MBDTKF.mjs} +3 -3
  62. package/dist/{chunk-ARLYOLSO.mjs.map → chunk-W6MBDTKF.mjs.map} +1 -1
  63. package/dist/{chunk-IVKFXPLO.js → chunk-YSYEV2Z6.js} +28 -28
  64. package/dist/{chunk-IVKFXPLO.js.map → chunk-YSYEV2Z6.js.map} +1 -1
  65. package/dist/index.d.mts +108 -4
  66. package/dist/index.d.ts +108 -4
  67. package/dist/index.js +670 -662
  68. package/dist/index.mjs +1 -1
  69. package/dist/platform/admin/index.js +9 -9
  70. package/dist/platform/admin/index.mjs +3 -3
  71. package/dist/platform/agents-workspace.js +6 -6
  72. package/dist/platform/agents-workspace.mjs +5 -5
  73. package/dist/platform/app-shell.js +3 -3
  74. package/dist/platform/app-shell.mjs +2 -2
  75. package/dist/platform/auth/index.js +21 -21
  76. package/dist/platform/auth/index.mjs +3 -3
  77. package/dist/platform/billing/index.js +3 -3
  78. package/dist/platform/billing/index.mjs +2 -2
  79. package/dist/platform/impersonation/index.js +3 -3
  80. package/dist/platform/impersonation/index.mjs +2 -2
  81. package/dist/platform/index.js +74 -74
  82. package/dist/platform/index.mjs +17 -17
  83. package/dist/platform/pages/index.d.mts +235 -3
  84. package/dist/platform/pages/index.d.ts +235 -3
  85. package/dist/platform/pages/index.js +1959 -246
  86. package/dist/platform/pages/index.js.map +1 -1
  87. package/dist/platform/pages/index.mjs +1728 -17
  88. package/dist/platform/pages/index.mjs.map +1 -1
  89. package/dist/platform/settings/index.js +6 -6
  90. package/dist/platform/settings/index.mjs +5 -5
  91. package/dist/platform/workflow-canvas-shell.js +4 -4
  92. package/dist/platform/workflow-canvas-shell.mjs +3 -3
  93. package/package.json +1 -1
  94. package/dist/chunk-MT66VKLS.js.map +0 -1
  95. package/dist/chunk-ZQRUAXGP.mjs.map +0 -1
@@ -2,13 +2,13 @@
2
2
  'use strict';
3
3
 
4
4
  var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
5
- var chunkIVKFXPLO_js = require('../../chunk-IVKFXPLO.js');
6
- var chunkR6GEJBFC_js = require('../../chunk-R6GEJBFC.js');
7
- var chunkU6VFS3RD_js = require('../../chunk-U6VFS3RD.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');
8
8
  require('../../chunk-55H6WZQP.js');
9
9
  require('../../chunk-DJDZIRM6.js');
10
- require('../../chunk-7AM2SXEF.js');
11
- var chunkMT66VKLS_js = require('../../chunk-MT66VKLS.js');
10
+ require('../../chunk-O4HH77A4.js');
11
+ var chunkLVR4SR65_js = require('../../chunk-LVR4SR65.js');
12
12
  require('../../chunk-YXN2K77G.js');
13
13
  require('../../chunk-SY4MUT5V.js');
14
14
  require('../../chunk-2OZZH2IO.js');
@@ -27,7 +27,7 @@ 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
- chunkMT66VKLS_js.HeroSection,
30
+ chunkLVR4SR65_js.HeroSection,
31
31
  {
32
32
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
33
33
  label: labels.title,
@@ -36,9 +36,9 @@ function AgentsModelsPageView({ labels, models, loading }) {
36
36
  gradient: "from-emerald-500 to-teal-700"
37
37
  }
38
38
  );
39
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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
40
  /* @__PURE__ */ jsxRuntime.jsx(
41
- chunkMT66VKLS_js.SearchBar,
41
+ chunkLVR4SR65_js.SearchBar,
42
42
  {
43
43
  searchTerm,
44
44
  onSearchChange: setSearchTerm,
@@ -46,7 +46,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
46
46
  }
47
47
  ),
48
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
- chunkMT66VKLS_js.EntityCard,
49
+ chunkLVR4SR65_js.EntityCard,
50
50
  {
51
51
  accentGradient: "from-emerald-500 to-teal-700",
52
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" }) }),
@@ -71,7 +71,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
71
71
  const filteredAgents = searchTerm.trim() ? allAgents.filter((agent) => String(agent.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allAgents;
72
72
  const isEmpty = allAgents.length === 0;
73
73
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
74
- chunkMT66VKLS_js.HeroSection,
74
+ chunkLVR4SR65_js.HeroSection,
75
75
  {
76
76
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
77
77
  label: labels.title,
@@ -79,7 +79,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
79
79
  subtitle: labels.subtitle,
80
80
  gradient: "from-violet-500 to-indigo-700",
81
81
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
82
- chunkMT66VKLS_js.SearchBar,
82
+ chunkLVR4SR65_js.SearchBar,
83
83
  {
84
84
  searchTerm,
85
85
  onSearchChange: setSearchTerm,
@@ -88,7 +88,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
88
88
  }
89
89
  ) : void 0,
90
90
  actions: /* @__PURE__ */ jsxRuntime.jsx(
91
- chunkMT66VKLS_js.CreateActionButton,
91
+ chunkLVR4SR65_js.CreateActionButton,
92
92
  {
93
93
  mode: "desktop",
94
94
  label: labels.addAgent,
@@ -99,7 +99,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
99
99
  }
100
100
  );
101
101
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
102
- chunkMT66VKLS_js.CreateActionButton,
102
+ chunkLVR4SR65_js.CreateActionButton,
103
103
  {
104
104
  mode: "mobile",
105
105
  label: labels.addAgent,
@@ -107,10 +107,10 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
107
107
  accent: "violet"
108
108
  }
109
109
  );
110
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_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) => {
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) => {
111
111
  const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
112
112
  return /* @__PURE__ */ jsxRuntime.jsx(
113
- chunkMT66VKLS_js.EntityCard,
113
+ chunkLVR4SR65_js.EntityCard,
114
114
  {
115
115
  accentGradient: "from-violet-500 to-indigo-700",
116
116
  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 +147,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
147
147
  );
148
148
  }) });
149
149
  const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
150
- chunkMT66VKLS_js.GlassModal,
150
+ chunkLVR4SR65_js.GlassModal,
151
151
  {
152
152
  open: true,
153
153
  onClose: () => {
@@ -170,13 +170,13 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
170
170
  outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
171
171
  });
172
172
  },
173
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
174
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
175
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
176
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
177
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_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(chunkMT66VKLS_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
179
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
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 })
180
180
  ] })
181
181
  }
182
182
  );
@@ -243,7 +243,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
243
243
  }) : allPrompts;
244
244
  const isEmpty = allPrompts.length === 0;
245
245
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
246
- chunkMT66VKLS_js.HeroSection,
246
+ chunkLVR4SR65_js.HeroSection,
247
247
  {
248
248
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
249
249
  label: labels.title,
@@ -251,7 +251,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
251
251
  subtitle: labels.subtitle,
252
252
  gradient: "from-sky-500 to-blue-700",
253
253
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
254
- chunkMT66VKLS_js.CreateActionButton,
254
+ chunkLVR4SR65_js.CreateActionButton,
255
255
  {
256
256
  mode: "desktop",
257
257
  label: labels.addPrompt,
@@ -262,7 +262,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
262
262
  }
263
263
  );
264
264
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
265
- chunkMT66VKLS_js.CreateActionButton,
265
+ chunkLVR4SR65_js.CreateActionButton,
266
266
  {
267
267
  mode: "mobile",
268
268
  label: labels.addPrompt,
@@ -270,9 +270,9 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
270
270
  accent: "sky"
271
271
  }
272
272
  );
273
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
274
274
  /* @__PURE__ */ jsxRuntime.jsx(
275
- chunkMT66VKLS_js.SearchBar,
275
+ chunkLVR4SR65_js.SearchBar,
276
276
  {
277
277
  searchTerm,
278
278
  onSearchChange: setSearchTerm,
@@ -283,7 +283,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
283
283
  const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
284
284
  const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
285
285
  return /* @__PURE__ */ jsxRuntime.jsx(
286
- chunkMT66VKLS_js.EntityCard,
286
+ chunkLVR4SR65_js.EntityCard,
287
287
  {
288
288
  accentGradient: "from-sky-500 to-blue-700",
289
289
  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 +318,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
318
318
  mobileAction
319
319
  ] }),
320
320
  /* @__PURE__ */ jsxRuntime.jsx(
321
- chunkMT66VKLS_js.GlassModal,
321
+ chunkLVR4SR65_js.GlassModal,
322
322
  {
323
323
  open: createOpen,
324
324
  onClose: () => setCreateOpen(false),
@@ -342,11 +342,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
342
342
  });
343
343
  setCreateOpen(false);
344
344
  },
345
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
346
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
347
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
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" }),
348
348
  /* @__PURE__ */ jsxRuntime.jsx(
349
- chunkMT66VKLS_js.FormSelect,
349
+ chunkLVR4SR65_js.FormSelect,
350
350
  {
351
351
  name: "isActive",
352
352
  label: labels.isActive,
@@ -354,10 +354,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
354
354
  defaultValue: "true"
355
355
  }
356
356
  ),
357
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "reason", label: labels.reason }),
358
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
359
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
360
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
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 })
361
361
  ] })
362
362
  }
363
363
  )
@@ -392,7 +392,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
392
392
  const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
393
393
  const isEmpty = allTools.length === 0;
394
394
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
395
- chunkMT66VKLS_js.HeroSection,
395
+ chunkLVR4SR65_js.HeroSection,
396
396
  {
397
397
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
398
398
  label: labels.title,
@@ -400,7 +400,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
400
400
  subtitle: labels.subtitle,
401
401
  gradient: "from-amber-500 to-orange-700",
402
402
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
403
- chunkMT66VKLS_js.CreateActionButton,
403
+ chunkLVR4SR65_js.CreateActionButton,
404
404
  {
405
405
  mode: "desktop",
406
406
  label: labels.addTool,
@@ -411,7 +411,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
411
411
  }
412
412
  );
413
413
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
414
- chunkMT66VKLS_js.CreateActionButton,
414
+ chunkLVR4SR65_js.CreateActionButton,
415
415
  {
416
416
  mode: "mobile",
417
417
  label: labels.addTool,
@@ -419,9 +419,9 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
419
419
  accent: "amber"
420
420
  }
421
421
  );
422
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
423
423
  /* @__PURE__ */ jsxRuntime.jsx(
424
- chunkMT66VKLS_js.SearchBar,
424
+ chunkLVR4SR65_js.SearchBar,
425
425
  {
426
426
  searchTerm,
427
427
  onSearchChange: setSearchTerm,
@@ -429,7 +429,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
429
429
  }
430
430
  ),
431
431
  /* @__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
- chunkMT66VKLS_js.EntityCard,
432
+ chunkLVR4SR65_js.EntityCard,
433
433
  {
434
434
  accentGradient: "from-amber-500 to-orange-700",
435
435
  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 +519,7 @@ function ToolEditor({
519
519
  setValue((v) => ({ ...v, [key]: next }));
520
520
  };
521
521
  return /* @__PURE__ */ jsxRuntime.jsx(
522
- chunkMT66VKLS_js.GlassModal,
522
+ chunkLVR4SR65_js.GlassModal,
523
523
  {
524
524
  open: true,
525
525
  onClose,
@@ -532,9 +532,9 @@ function ToolEditor({
532
532
  handleSubmit();
533
533
  },
534
534
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
535
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
535
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
536
536
  /* @__PURE__ */ jsxRuntime.jsx(
537
- chunkMT66VKLS_js.FormInput,
537
+ chunkLVR4SR65_js.FormInput,
538
538
  {
539
539
  label: "Name",
540
540
  required: true,
@@ -544,7 +544,7 @@ function ToolEditor({
544
544
  }
545
545
  ),
546
546
  /* @__PURE__ */ jsxRuntime.jsx(
547
- chunkMT66VKLS_js.FormSelect,
547
+ chunkLVR4SR65_js.FormSelect,
548
548
  {
549
549
  label: "Tool type",
550
550
  value: value.toolType,
@@ -554,7 +554,7 @@ function ToolEditor({
554
554
  }
555
555
  ),
556
556
  /* @__PURE__ */ jsxRuntime.jsx(
557
- chunkMT66VKLS_js.FormSelect,
557
+ chunkLVR4SR65_js.FormSelect,
558
558
  {
559
559
  label: "Enabled",
560
560
  value: value.enabled ? "true" : "false",
@@ -563,7 +563,7 @@ function ToolEditor({
563
563
  }
564
564
  ),
565
565
  /* @__PURE__ */ jsxRuntime.jsx(
566
- chunkMT66VKLS_js.FormInput,
566
+ chunkLVR4SR65_js.FormInput,
567
567
  {
568
568
  label: "Icon (optional)",
569
569
  value: value.icon ?? "",
@@ -573,7 +573,7 @@ function ToolEditor({
573
573
  )
574
574
  ] }),
575
575
  /* @__PURE__ */ jsxRuntime.jsx(
576
- chunkMT66VKLS_js.FormTextarea,
576
+ chunkLVR4SR65_js.FormTextarea,
577
577
  {
578
578
  label: "Description",
579
579
  rows: 2,
@@ -621,7 +621,7 @@ function ParametersEditor({
621
621
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
622
622
  parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
623
623
  /* @__PURE__ */ jsxRuntime.jsx(
624
- chunkMT66VKLS_js.FormInput,
624
+ chunkLVR4SR65_js.FormInput,
625
625
  {
626
626
  label: "Name",
627
627
  value: param.name,
@@ -630,7 +630,7 @@ function ParametersEditor({
630
630
  }
631
631
  ),
632
632
  /* @__PURE__ */ jsxRuntime.jsx(
633
- chunkMT66VKLS_js.FormSelect,
633
+ chunkLVR4SR65_js.FormSelect,
634
634
  {
635
635
  label: "Type",
636
636
  value: param.type,
@@ -639,7 +639,7 @@ function ParametersEditor({
639
639
  }
640
640
  ),
641
641
  /* @__PURE__ */ jsxRuntime.jsx(
642
- chunkMT66VKLS_js.FormInput,
642
+ chunkLVR4SR65_js.FormInput,
643
643
  {
644
644
  label: "Description",
645
645
  value: param.description,
@@ -673,9 +673,9 @@ function HandlerConfigEditor({
673
673
  if (toolType === "http") {
674
674
  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
675
  /* @__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(chunkMT66VKLS_js.FormGrid, { children: [
676
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
677
677
  /* @__PURE__ */ jsxRuntime.jsx(
678
- chunkMT66VKLS_js.FormSelect,
678
+ chunkLVR4SR65_js.FormSelect,
679
679
  {
680
680
  label: "Method",
681
681
  value: stringProp(config, "method", "GET"),
@@ -684,7 +684,7 @@ function HandlerConfigEditor({
684
684
  }
685
685
  ),
686
686
  /* @__PURE__ */ jsxRuntime.jsx(
687
- chunkMT66VKLS_js.FormInput,
687
+ chunkLVR4SR65_js.FormInput,
688
688
  {
689
689
  label: "URL template",
690
690
  value: stringProp(config, "url"),
@@ -694,7 +694,7 @@ function HandlerConfigEditor({
694
694
  )
695
695
  ] }),
696
696
  /* @__PURE__ */ jsxRuntime.jsx(
697
- chunkMT66VKLS_js.FormTextarea,
697
+ chunkLVR4SR65_js.FormTextarea,
698
698
  {
699
699
  label: "Headers (JSON)",
700
700
  rows: 3,
@@ -704,7 +704,7 @@ function HandlerConfigEditor({
704
704
  }
705
705
  ),
706
706
  /* @__PURE__ */ jsxRuntime.jsx(
707
- chunkMT66VKLS_js.FormTextarea,
707
+ chunkLVR4SR65_js.FormTextarea,
708
708
  {
709
709
  label: "Body template",
710
710
  rows: 3,
@@ -719,7 +719,7 @@ function HandlerConfigEditor({
719
719
  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
720
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Function handler" }),
721
721
  /* @__PURE__ */ jsxRuntime.jsx(
722
- chunkMT66VKLS_js.FormInput,
722
+ chunkLVR4SR65_js.FormInput,
723
723
  {
724
724
  label: "Implementation key",
725
725
  value: stringProp(config, "implementationKey"),
@@ -733,9 +733,9 @@ function HandlerConfigEditor({
733
733
  if (toolType === "database_query") {
734
734
  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
735
  /* @__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(chunkMT66VKLS_js.FormGrid, { children: [
736
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
737
737
  /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkMT66VKLS_js.FormInput,
738
+ chunkLVR4SR65_js.FormInput,
739
739
  {
740
740
  label: "Datasource ID",
741
741
  value: stringProp(config, "datasourceId"),
@@ -744,7 +744,7 @@ function HandlerConfigEditor({
744
744
  }
745
745
  ),
746
746
  /* @__PURE__ */ jsxRuntime.jsx(
747
- chunkMT66VKLS_js.FormInput,
747
+ chunkLVR4SR65_js.FormInput,
748
748
  {
749
749
  label: "Max rows",
750
750
  type: "number",
@@ -754,7 +754,7 @@ function HandlerConfigEditor({
754
754
  )
755
755
  ] }),
756
756
  /* @__PURE__ */ jsxRuntime.jsx(
757
- chunkMT66VKLS_js.FormTextarea,
757
+ chunkLVR4SR65_js.FormTextarea,
758
758
  {
759
759
  label: "Query template",
760
760
  rows: 4,
@@ -770,7 +770,7 @@ function HandlerConfigEditor({
770
770
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
771
771
  /* @__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
772
  /* @__PURE__ */ jsxRuntime.jsx(
773
- chunkMT66VKLS_js.FormSelect,
773
+ chunkLVR4SR65_js.FormSelect,
774
774
  {
775
775
  label: "Language",
776
776
  value: stringProp(config, "language", "javascript"),
@@ -782,7 +782,7 @@ function HandlerConfigEditor({
782
782
  }
783
783
  ),
784
784
  /* @__PURE__ */ jsxRuntime.jsx(
785
- chunkMT66VKLS_js.FormTextarea,
785
+ chunkLVR4SR65_js.FormTextarea,
786
786
  {
787
787
  label: "Code",
788
788
  rows: 6,
@@ -795,9 +795,9 @@ function HandlerConfigEditor({
795
795
  }
796
796
  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
797
  /* @__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(chunkMT66VKLS_js.FormGrid, { children: [
798
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
799
799
  /* @__PURE__ */ jsxRuntime.jsx(
800
- chunkMT66VKLS_js.FormInput,
800
+ chunkLVR4SR65_js.FormInput,
801
801
  {
802
802
  label: "URL",
803
803
  value: stringProp(config, "url"),
@@ -805,7 +805,7 @@ function HandlerConfigEditor({
805
805
  }
806
806
  ),
807
807
  /* @__PURE__ */ jsxRuntime.jsx(
808
- chunkMT66VKLS_js.FormSelect,
808
+ chunkLVR4SR65_js.FormSelect,
809
809
  {
810
810
  label: "Auth",
811
811
  value: stringProp(config, "authType", "bearer"),
@@ -819,7 +819,7 @@ function HandlerConfigEditor({
819
819
  }
820
820
  ),
821
821
  /* @__PURE__ */ jsxRuntime.jsx(
822
- chunkMT66VKLS_js.FormInput,
822
+ chunkLVR4SR65_js.FormInput,
823
823
  {
824
824
  label: "Credential secret id",
825
825
  value: stringProp(config, "credentialRef"),
@@ -944,15 +944,19 @@ function setFromJson(set, key, raw) {
944
944
  set(key, raw);
945
945
  }
946
946
  }
947
- function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete }) {
947
+ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, onAddClick }) {
948
948
  const [createOpen, setCreateOpen] = react.useState(false);
949
+ const openCreate = () => {
950
+ if (onAddClick) onAddClick();
951
+ else setCreateOpen(true);
952
+ };
949
953
  const [editing, setEditing] = react.useState(null);
950
954
  const [searchTerm, setSearchTerm] = react.useState("");
951
955
  const allRules = rules;
952
956
  const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
953
957
  const isEmpty = allRules.length === 0;
954
958
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
955
- chunkMT66VKLS_js.HeroSection,
959
+ chunkLVR4SR65_js.HeroSection,
956
960
  {
957
961
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
958
962
  label: labels.title,
@@ -960,28 +964,28 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
960
964
  subtitle: labels.subtitle,
961
965
  gradient: "from-fuchsia-500 to-purple-700",
962
966
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
963
- chunkMT66VKLS_js.CreateActionButton,
967
+ chunkLVR4SR65_js.CreateActionButton,
964
968
  {
965
969
  mode: "desktop",
966
970
  label: labels.addRule,
967
- onClick: () => setCreateOpen(true),
971
+ onClick: openCreate,
968
972
  accent: "fuchsia"
969
973
  }
970
974
  )
971
975
  }
972
976
  );
973
977
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
974
- chunkMT66VKLS_js.CreateActionButton,
978
+ chunkLVR4SR65_js.CreateActionButton,
975
979
  {
976
980
  mode: "mobile",
977
981
  label: labels.addRule,
978
- onClick: () => setCreateOpen(true),
982
+ onClick: openCreate,
979
983
  accent: "fuchsia"
980
984
  }
981
985
  );
982
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
983
987
  /* @__PURE__ */ jsxRuntime.jsx(
984
- chunkMT66VKLS_js.SearchBar,
988
+ chunkLVR4SR65_js.SearchBar,
985
989
  {
986
990
  searchTerm,
987
991
  onSearchChange: setSearchTerm,
@@ -989,7 +993,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
989
993
  }
990
994
  ),
991
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(
992
- chunkMT66VKLS_js.EntityCard,
996
+ chunkLVR4SR65_js.EntityCard,
993
997
  {
994
998
  accentGradient: "from-fuchsia-500 to-purple-700",
995
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" }) }),
@@ -1027,7 +1031,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
1027
1031
  {
1028
1032
  title: labels.createTitle,
1029
1033
  saveLabel: labels.save,
1030
- initial: chunkU6VFS3RD_js.defaultRuleForm(),
1034
+ initial: chunkEC34PGUO_js.defaultRuleForm(),
1031
1035
  onClose: () => setCreateOpen(false),
1032
1036
  onSubmit: (value) => {
1033
1037
  onCreate(value);
@@ -1059,7 +1063,7 @@ function RuleEditor({
1059
1063
  }) {
1060
1064
  const [value, setValue] = react.useState(initial);
1061
1065
  return /* @__PURE__ */ jsxRuntime.jsx(
1062
- chunkMT66VKLS_js.GlassModal,
1066
+ chunkLVR4SR65_js.GlassModal,
1063
1067
  {
1064
1068
  open: true,
1065
1069
  onClose,
@@ -1071,12 +1075,12 @@ function RuleEditor({
1071
1075
  event.preventDefault();
1072
1076
  onSubmit(value);
1073
1077
  },
1074
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkU6VFS3RD_js.RuleForm, { value, onChange: setValue })
1078
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkEC34PGUO_js.RuleForm, { value, onChange: setValue })
1075
1079
  }
1076
1080
  );
1077
1081
  }
1078
1082
  function ruleToFormValue(rule) {
1079
- const base = chunkU6VFS3RD_js.defaultRuleForm();
1083
+ const base = chunkEC34PGUO_js.defaultRuleForm();
1080
1084
  const rawCondition = rule.condition ?? rule.conditions;
1081
1085
  const rawAction = pickAction(rule);
1082
1086
  return {
@@ -1207,7 +1211,7 @@ var SAMPLE_DATASOURCES = [
1207
1211
  ];
1208
1212
  function getDialectLabel(dialect) {
1209
1213
  if (!dialect) return "Unknown";
1210
- for (const category of chunkR6GEJBFC_js.DIALECT_CATEGORIES) {
1214
+ for (const category of chunkFIJMOTP4_js.DIALECT_CATEGORIES) {
1211
1215
  const found = category.dialects.find((d) => d.value === dialect);
1212
1216
  if (found) return found.label;
1213
1217
  }
@@ -1215,12 +1219,12 @@ function getDialectLabel(dialect) {
1215
1219
  }
1216
1220
  function getDialectGradient(dialect) {
1217
1221
  if (!dialect) return "from-gray-400 to-gray-500";
1218
- const category = chunkR6GEJBFC_js.findCategory(dialect);
1222
+ const category = chunkFIJMOTP4_js.findCategory(dialect);
1219
1223
  return category?.gradient ?? "from-gray-400 to-gray-500";
1220
1224
  }
1221
1225
  function getDialectIcon(dialect) {
1222
1226
  if (!dialect) return outline.CircleStackIcon;
1223
- const category = chunkR6GEJBFC_js.findCategory(dialect);
1227
+ const category = chunkFIJMOTP4_js.findCategory(dialect);
1224
1228
  return category?.icon ?? outline.CircleStackIcon;
1225
1229
  }
1226
1230
  var DIALECT_LOGO = {
@@ -1259,9 +1263,14 @@ function DatasourcesPageView({
1259
1263
  labels,
1260
1264
  datasources: externalDatasources,
1261
1265
  useSampleData = false,
1262
- onCreate
1266
+ onCreate,
1267
+ onAddClick
1263
1268
  }) {
1264
1269
  const [modalOpen, setModalOpen] = react.useState(false);
1270
+ const openCreate = () => {
1271
+ if (onAddClick) onAddClick();
1272
+ else setModalOpen(true);
1273
+ };
1265
1274
  const [searchTerm, setSearchTerm] = react.useState("");
1266
1275
  const [localDatasources, setLocalDatasources] = react.useState(
1267
1276
  useSampleData ? SAMPLE_DATASOURCES : []
@@ -1294,7 +1303,7 @@ function DatasourcesPageView({
1294
1303
  }
1295
1304
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1296
1305
  /* @__PURE__ */ jsxRuntime.jsx(
1297
- chunkMT66VKLS_js.HeroSection,
1306
+ chunkLVR4SR65_js.HeroSection,
1298
1307
  {
1299
1308
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
1300
1309
  label: labels.title,
@@ -1302,27 +1311,27 @@ function DatasourcesPageView({
1302
1311
  subtitle: labels.subtitle,
1303
1312
  gradient: "from-amber-500 to-orange-600",
1304
1313
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1305
- chunkMT66VKLS_js.CreateActionButton,
1314
+ chunkLVR4SR65_js.CreateActionButton,
1306
1315
  {
1307
1316
  mode: "desktop",
1308
1317
  label: labels.addDatasource,
1309
- onClick: () => setModalOpen(true),
1318
+ onClick: openCreate,
1310
1319
  accent: "amber"
1311
1320
  }
1312
1321
  )
1313
1322
  }
1314
1323
  ),
1315
1324
  /* @__PURE__ */ jsxRuntime.jsx(
1316
- chunkMT66VKLS_js.CreateActionButton,
1325
+ chunkLVR4SR65_js.CreateActionButton,
1317
1326
  {
1318
1327
  mode: "mobile",
1319
1328
  label: labels.addDatasource,
1320
- onClick: () => setModalOpen(true),
1329
+ onClick: openCreate,
1321
1330
  accent: "amber"
1322
1331
  }
1323
1332
  ),
1324
1333
  !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1325
- chunkMT66VKLS_js.SearchBar,
1334
+ chunkLVR4SR65_js.SearchBar,
1326
1335
  {
1327
1336
  searchTerm,
1328
1337
  onSearchChange: setSearchTerm,
@@ -1330,7 +1339,7 @@ function DatasourcesPageView({
1330
1339
  }
1331
1340
  ),
1332
1341
  isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1333
- chunkMT66VKLS_js.PageEmptyState,
1342
+ chunkLVR4SR65_js.PageEmptyState,
1334
1343
  {
1335
1344
  title: labels.emptyTitle,
1336
1345
  message: labels.emptyDescription,
@@ -1344,7 +1353,7 @@ function DatasourcesPageView({
1344
1353
  const logoSrc = getDialectLogoSrc(ds.dialect);
1345
1354
  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" }) });
1346
1355
  return /* @__PURE__ */ jsxRuntime.jsx(
1347
- chunkMT66VKLS_js.EntityCard,
1356
+ chunkLVR4SR65_js.EntityCard,
1348
1357
  {
1349
1358
  accentGradient: gradient,
1350
1359
  icon: iconElement,
@@ -1374,7 +1383,7 @@ function DatasourcesPageView({
1374
1383
  );
1375
1384
  }) }),
1376
1385
  /* @__PURE__ */ jsxRuntime.jsx(
1377
- chunkR6GEJBFC_js.DatasourceModal,
1386
+ chunkFIJMOTP4_js.DatasourceModal,
1378
1387
  {
1379
1388
  open: modalOpen,
1380
1389
  onClose: () => setModalOpen(false),
@@ -1403,7 +1412,7 @@ function AgentsIndexPageView({ labels }) {
1403
1412
  const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
1404
1413
  const isEmpty = allTiles.length === 0;
1405
1414
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1406
- chunkMT66VKLS_js.HeroSection,
1415
+ chunkLVR4SR65_js.HeroSection,
1407
1416
  {
1408
1417
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
1409
1418
  label: labels.title,
@@ -1414,7 +1423,7 @@ function AgentsIndexPageView({ labels }) {
1414
1423
  );
1415
1424
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1416
1425
  !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1417
- chunkMT66VKLS_js.SearchBar,
1426
+ chunkLVR4SR65_js.SearchBar,
1418
1427
  {
1419
1428
  searchTerm,
1420
1429
  onSearchChange: setSearchTerm,
@@ -1424,7 +1433,7 @@ function AgentsIndexPageView({ labels }) {
1424
1433
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1425
1434
  const Icon = tile.icon;
1426
1435
  return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1427
- chunkMT66VKLS_js.EntityCard,
1436
+ chunkLVR4SR65_js.EntityCard,
1428
1437
  {
1429
1438
  accentGradient: tile.gradient,
1430
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" }) }),
@@ -1443,7 +1452,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1443
1452
  const selectedWorkflow = workflows[0] ?? null;
1444
1453
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1445
1454
  /* @__PURE__ */ jsxRuntime.jsx(
1446
- chunkMT66VKLS_js.SectionHeader,
1455
+ chunkLVR4SR65_js.SectionHeader,
1447
1456
  {
1448
1457
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
1449
1458
  title: labels.title,
@@ -1452,9 +1461,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1452
1461
  }
1453
1462
  ),
1454
1463
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1455
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1464
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1456
1465
  /* @__PURE__ */ jsxRuntime.jsx(
1457
- chunkMT66VKLS_js.Form,
1466
+ chunkLVR4SR65_js.Form,
1458
1467
  {
1459
1468
  onSubmit: (event) => {
1460
1469
  event.preventDefault();
@@ -1465,32 +1474,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1465
1474
  onCreate({ name, description });
1466
1475
  event.currentTarget.reset();
1467
1476
  },
1468
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
1469
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1470
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1471
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
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 }) })
1472
1481
  ] })
1473
1482
  }
1474
1483
  )
1475
1484
  ] }),
1476
1485
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1477
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1478
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.Table, { children: [
1479
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.TableRow, { children: [
1480
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHeader, { children: labels.name }),
1481
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHeader, { children: labels.description }),
1482
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHeader, { children: labels.version }),
1483
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHeader, { children: labels.status }),
1484
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableHeader, { children: labels.actions })
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 })
1485
1494
  ] }) }),
1486
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.TableRow, { children: [
1487
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableCell, { children: workflow.name }),
1488
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableCell, { children: workflow.description }),
1489
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableCell, { children: String(workflow.version) }),
1490
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1491
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
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: [
1492
1501
  /* @__PURE__ */ jsxRuntime.jsx(
1493
- chunkMT66VKLS_js.Form,
1502
+ chunkLVR4SR65_js.Form,
1494
1503
  {
1495
1504
  onSubmit: (event) => {
1496
1505
  event.preventDefault();
@@ -1500,7 +1509,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1500
1509
  description: workflow.description ?? ""
1501
1510
  });
1502
1511
  },
1503
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1512
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1504
1513
  }
1505
1514
  ),
1506
1515
  /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
@@ -1509,8 +1518,8 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1509
1518
  ] })
1510
1519
  ] }),
1511
1520
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1512
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1513
- 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(chunkIVKFXPLO_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.Text, { children: labels.empty })
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 })
1514
1523
  ] })
1515
1524
  ] });
1516
1525
  }
@@ -1559,7 +1568,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1559
1568
  });
1560
1569
  const isEmpty = allRuns.length === 0;
1561
1570
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1562
- chunkMT66VKLS_js.HeroSection,
1571
+ chunkLVR4SR65_js.HeroSection,
1563
1572
  {
1564
1573
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1565
1574
  label: labels.title,
@@ -1567,7 +1576,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1567
1576
  subtitle: labels.subtitle,
1568
1577
  gradient: "from-indigo-500 to-sky-700",
1569
1578
  toolbar: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
1570
- chunkMT66VKLS_js.FormSelect,
1579
+ chunkLVR4SR65_js.FormSelect,
1571
1580
  {
1572
1581
  name: "statusFilter",
1573
1582
  label: labels.filterStatus,
@@ -1578,9 +1587,9 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1578
1587
  ) })
1579
1588
  }
1580
1589
  );
1581
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
1582
1591
  !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1583
- chunkMT66VKLS_js.SearchBar,
1592
+ chunkLVR4SR65_js.SearchBar,
1584
1593
  {
1585
1594
  searchTerm,
1586
1595
  onSearchChange: setSearchTerm,
@@ -1588,7 +1597,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1588
1597
  }
1589
1598
  ),
1590
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(
1591
- chunkMT66VKLS_js.EntityCard,
1600
+ chunkLVR4SR65_js.EntityCard,
1592
1601
  {
1593
1602
  accentGradient: "from-indigo-500 to-sky-700",
1594
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" }) }),
@@ -1621,7 +1630,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1621
1630
  }
1622
1631
  function RunTimelinePageView({ labels, entries, loading, runId }) {
1623
1632
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1624
- chunkMT66VKLS_js.HeroSection,
1633
+ chunkLVR4SR65_js.HeroSection,
1625
1634
  {
1626
1635
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1627
1636
  label: labels.title,
@@ -1633,19 +1642,19 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
1633
1642
  if (loading) {
1634
1643
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1635
1644
  hero,
1636
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {})
1645
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {})
1637
1646
  ] });
1638
1647
  }
1639
1648
  if (entries.length === 0) {
1640
1649
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1641
1650
  hero,
1642
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1651
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1643
1652
  ] });
1644
1653
  }
1645
1654
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1646
1655
  hero,
1647
1656
  /* @__PURE__ */ jsxRuntime.jsx(
1648
- chunkU6VFS3RD_js.ExecutionTimelinePanel,
1657
+ chunkEC34PGUO_js.ExecutionTimelinePanel,
1649
1658
  {
1650
1659
  entries,
1651
1660
  labels
@@ -1730,7 +1739,7 @@ function ConnectionsPageView({
1730
1739
  const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
1731
1740
  const isEmpty = allConnections.length === 0;
1732
1741
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1733
- chunkMT66VKLS_js.HeroSection,
1742
+ chunkLVR4SR65_js.HeroSection,
1734
1743
  {
1735
1744
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
1736
1745
  label: labels.title,
@@ -1738,7 +1747,7 @@ function ConnectionsPageView({
1738
1747
  subtitle: labels.subtitle,
1739
1748
  gradient: "from-sky-500 to-indigo-600",
1740
1749
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1741
- chunkMT66VKLS_js.CreateActionButton,
1750
+ chunkLVR4SR65_js.CreateActionButton,
1742
1751
  {
1743
1752
  mode: "desktop",
1744
1753
  label: labels.add,
@@ -1749,7 +1758,7 @@ function ConnectionsPageView({
1749
1758
  }
1750
1759
  );
1751
1760
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
1752
- chunkMT66VKLS_js.CreateActionButton,
1761
+ chunkLVR4SR65_js.CreateActionButton,
1753
1762
  {
1754
1763
  mode: "mobile",
1755
1764
  label: labels.add,
@@ -1757,9 +1766,9 @@ function ConnectionsPageView({
1757
1766
  accent: "sky"
1758
1767
  }
1759
1768
  );
1760
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
1761
1770
  /* @__PURE__ */ jsxRuntime.jsx(
1762
- chunkMT66VKLS_js.SearchBar,
1771
+ chunkLVR4SR65_js.SearchBar,
1763
1772
  {
1764
1773
  searchTerm,
1765
1774
  onSearchChange: setSearchTerm,
@@ -1767,7 +1776,7 @@ function ConnectionsPageView({
1767
1776
  }
1768
1777
  ),
1769
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(
1770
- chunkMT66VKLS_js.EntityCard,
1779
+ chunkLVR4SR65_js.EntityCard,
1771
1780
  {
1772
1781
  accentGradient: "from-sky-500 to-indigo-600",
1773
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" }) }),
@@ -1920,7 +1929,7 @@ function ConnectionEditor({
1920
1929
  return preset.exampleModels?.join(", ") ?? "";
1921
1930
  }, [preset]);
1922
1931
  return /* @__PURE__ */ jsxRuntime.jsx(
1923
- chunkMT66VKLS_js.GlassModal,
1932
+ chunkLVR4SR65_js.GlassModal,
1924
1933
  {
1925
1934
  open: true,
1926
1935
  onClose,
@@ -1933,9 +1942,9 @@ function ConnectionEditor({
1933
1942
  void handleSubmit();
1934
1943
  },
1935
1944
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1936
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
1945
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
1937
1946
  /* @__PURE__ */ jsxRuntime.jsx(
1938
- chunkMT66VKLS_js.FormSelect,
1947
+ chunkLVR4SR65_js.FormSelect,
1939
1948
  {
1940
1949
  label: "Provider",
1941
1950
  value: value.providerSlug,
@@ -1946,7 +1955,7 @@ function ConnectionEditor({
1946
1955
  }
1947
1956
  ),
1948
1957
  /* @__PURE__ */ jsxRuntime.jsx(
1949
- chunkMT66VKLS_js.FormInput,
1958
+ chunkLVR4SR65_js.FormInput,
1950
1959
  {
1951
1960
  label: "Display name",
1952
1961
  required: true,
@@ -1956,7 +1965,7 @@ function ConnectionEditor({
1956
1965
  }
1957
1966
  ),
1958
1967
  preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
1959
- chunkMT66VKLS_js.FormInput,
1968
+ chunkLVR4SR65_js.FormInput,
1960
1969
  {
1961
1970
  label: "Region",
1962
1971
  value: value.region,
@@ -1965,7 +1974,7 @@ function ConnectionEditor({
1965
1974
  }
1966
1975
  ),
1967
1976
  preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
1968
- chunkMT66VKLS_js.FormInput,
1977
+ chunkLVR4SR65_js.FormInput,
1969
1978
  {
1970
1979
  label: "Endpoint URL",
1971
1980
  value: value.endpoint,
@@ -1975,7 +1984,7 @@ function ConnectionEditor({
1975
1984
  )
1976
1985
  ] }),
1977
1986
  /* @__PURE__ */ jsxRuntime.jsx(
1978
- chunkMT66VKLS_js.FormInput,
1987
+ chunkLVR4SR65_js.FormInput,
1979
1988
  {
1980
1989
  label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
1981
1990
  type: "password",
@@ -1986,7 +1995,7 @@ function ConnectionEditor({
1986
1995
  }
1987
1996
  ),
1988
1997
  /* @__PURE__ */ jsxRuntime.jsx(
1989
- chunkMT66VKLS_js.FormInput,
1998
+ chunkLVR4SR65_js.FormInput,
1990
1999
  {
1991
2000
  label: "Model filter (comma-separated, optional)",
1992
2001
  value: value.modelFilter,
@@ -1998,7 +2007,7 @@ function ConnectionEditor({
1998
2007
  /* @__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: [
1999
2008
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
2000
2009
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
2001
- chunkMT66VKLS_js.FormTextarea,
2010
+ chunkLVR4SR65_js.FormTextarea,
2002
2011
  {
2003
2012
  rows: 4,
2004
2013
  value: value.configJson,
@@ -2068,7 +2077,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2068
2077
  { value: "password", label: labels.typePassword }
2069
2078
  ];
2070
2079
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2071
- chunkMT66VKLS_js.HeroSection,
2080
+ chunkLVR4SR65_js.HeroSection,
2072
2081
  {
2073
2082
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
2074
2083
  label: labels.title,
@@ -2076,7 +2085,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2076
2085
  subtitle: labels.subtitle,
2077
2086
  gradient: "from-rose-500 to-orange-600",
2078
2087
  toolbar: /* @__PURE__ */ jsxRuntime.jsx(
2079
- chunkMT66VKLS_js.CreateActionButton,
2088
+ chunkLVR4SR65_js.CreateActionButton,
2080
2089
  {
2081
2090
  mode: "desktop",
2082
2091
  label: labels.addCredential,
@@ -2087,7 +2096,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2087
2096
  }
2088
2097
  );
2089
2098
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2090
- chunkMT66VKLS_js.CreateActionButton,
2099
+ chunkLVR4SR65_js.CreateActionButton,
2091
2100
  {
2092
2101
  mode: "mobile",
2093
2102
  label: labels.addCredential,
@@ -2095,9 +2104,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2095
2104
  accent: "rose"
2096
2105
  }
2097
2106
  );
2098
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
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: [
2099
2108
  /* @__PURE__ */ jsxRuntime.jsx(
2100
- chunkMT66VKLS_js.SearchBar,
2109
+ chunkLVR4SR65_js.SearchBar,
2101
2110
  {
2102
2111
  searchTerm,
2103
2112
  onSearchChange: setSearchTerm,
@@ -2105,7 +2114,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2105
2114
  }
2106
2115
  ),
2107
2116
  /* @__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(
2108
- chunkMT66VKLS_js.EntityCard,
2117
+ chunkLVR4SR65_js.EntityCard,
2109
2118
  {
2110
2119
  accentGradient: "from-rose-500 to-orange-700",
2111
2120
  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" }) }),
@@ -2113,7 +2122,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2113
2122
  subtitle: secret.secretType,
2114
2123
  status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2115
2124
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2116
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.CopyableId, { id: secret.secretId }),
2125
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.CopyableId, { id: secret.secretId }),
2117
2126
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2118
2127
  /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2119
2128
  /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
@@ -2156,7 +2165,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2156
2165
  mobileAction
2157
2166
  ] }),
2158
2167
  /* @__PURE__ */ jsxRuntime.jsx(
2159
- chunkMT66VKLS_js.GlassModal,
2168
+ chunkLVR4SR65_js.GlassModal,
2160
2169
  {
2161
2170
  open: createOpen,
2162
2171
  onClose: () => setCreateOpen(false),
@@ -2174,16 +2183,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2174
2183
  onCreate({ name, value, secretType, description });
2175
2184
  setCreateOpen(false);
2176
2185
  },
2177
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
2178
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2179
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2180
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2181
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
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 })
2182
2191
  ] })
2183
2192
  }
2184
2193
  ),
2185
2194
  /* @__PURE__ */ jsxRuntime.jsx(
2186
- chunkMT66VKLS_js.GlassModal,
2195
+ chunkLVR4SR65_js.GlassModal,
2187
2196
  {
2188
2197
  open: rotateFor !== null,
2189
2198
  onClose: () => setRotateFor(null),
@@ -2198,7 +2207,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2198
2207
  onRotate(rotateFor, value);
2199
2208
  setRotateFor(null);
2200
2209
  },
2201
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
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" }) })
2202
2211
  }
2203
2212
  )
2204
2213
  ] });
@@ -2251,7 +2260,7 @@ function AgentsWorkspacePageView({
2251
2260
  }, [agents, selectedId]);
2252
2261
  const isEmpty = agents.length === 0;
2253
2262
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2254
- chunkMT66VKLS_js.HeroSection,
2263
+ chunkLVR4SR65_js.HeroSection,
2255
2264
  {
2256
2265
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
2257
2266
  label: labels.title,
@@ -2259,7 +2268,7 @@ function AgentsWorkspacePageView({
2259
2268
  subtitle: labels.subtitle,
2260
2269
  gradient: "from-violet-500 to-indigo-700",
2261
2270
  actions: /* @__PURE__ */ jsxRuntime.jsx(
2262
- chunkMT66VKLS_js.CreateActionButton,
2271
+ chunkLVR4SR65_js.CreateActionButton,
2263
2272
  {
2264
2273
  mode: "desktop",
2265
2274
  label: labels.addAgent,
@@ -2270,7 +2279,7 @@ function AgentsWorkspacePageView({
2270
2279
  }
2271
2280
  );
2272
2281
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2273
- chunkMT66VKLS_js.CreateActionButton,
2282
+ chunkLVR4SR65_js.CreateActionButton,
2274
2283
  {
2275
2284
  mode: "mobile",
2276
2285
  label: labels.addAgent,
@@ -2278,8 +2287,8 @@ function AgentsWorkspacePageView({
2278
2287
  accent: "violet"
2279
2288
  }
2280
2289
  );
2281
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2282
- chunkMT66VKLS_js.PageEmptyState,
2290
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2291
+ chunkLVR4SR65_js.PageEmptyState,
2283
2292
  {
2284
2293
  title: labels.empty,
2285
2294
  message: labels.emptyMessage,
@@ -2287,7 +2296,7 @@ function AgentsWorkspacePageView({
2287
2296
  }
2288
2297
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2289
2298
  /* @__PURE__ */ jsxRuntime.jsx(
2290
- chunkMT66VKLS_js.SearchBar,
2299
+ chunkLVR4SR65_js.SearchBar,
2291
2300
  {
2292
2301
  searchTerm,
2293
2302
  onSearchChange: setSearchTerm,
@@ -2295,15 +2304,15 @@ function AgentsWorkspacePageView({
2295
2304
  }
2296
2305
  ),
2297
2306
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2298
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2307
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2299
2308
  const id = String(agent.agentId ?? agent.id ?? "");
2300
2309
  const active = id === selectedId;
2301
2310
  const initials = deriveInitials(String(agent.name ?? id));
2302
2311
  const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2303
2312
  return /* @__PURE__ */ jsxRuntime.jsx(
2304
- chunkMT66VKLS_js.ListCardItem,
2313
+ chunkLVR4SR65_js.ListCardItem,
2305
2314
  {
2306
- leading: /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2315
+ leading: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Avatar, { tone: active ? "violet" : "slate", initials }),
2307
2316
  trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
2308
2317
  "v",
2309
2318
  agent.activePromptVersion
@@ -2345,7 +2354,7 @@ function AgentsWorkspacePageView({
2345
2354
  },
2346
2355
  String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2347
2356
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2348
- chunkMT66VKLS_js.SectionCard,
2357
+ chunkLVR4SR65_js.SectionCard,
2349
2358
  {
2350
2359
  header: {
2351
2360
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2353,7 +2362,7 @@ function AgentsWorkspacePageView({
2353
2362
  subtitle: labels.noSelectionMessage
2354
2363
  },
2355
2364
  children: /* @__PURE__ */ jsxRuntime.jsx(
2356
- chunkMT66VKLS_js.PageEmptyState,
2365
+ chunkLVR4SR65_js.PageEmptyState,
2357
2366
  {
2358
2367
  title: labels.noSelection,
2359
2368
  message: labels.noSelectionMessage,
@@ -2388,7 +2397,7 @@ function AgentDetail({
2388
2397
  }) {
2389
2398
  const agentId = String(agent.agentId ?? agent.id ?? "");
2390
2399
  return /* @__PURE__ */ jsxRuntime.jsx(
2391
- chunkMT66VKLS_js.SectionCard,
2400
+ chunkLVR4SR65_js.SectionCard,
2392
2401
  {
2393
2402
  header: {
2394
2403
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
@@ -2413,15 +2422,15 @@ function AgentDetail({
2413
2422
  ]
2414
2423
  }
2415
2424
  ),
2416
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.Tabs, { defaultValue: "general", className: "w-full", children: [
2417
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
2418
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsTrigger, { value: "general", children: labels.generalTab }),
2419
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
2420
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
2421
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsTrigger, { value: "model", children: labels.modelTab })
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 })
2422
2431
  ] }),
2423
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
2424
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
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(
2425
2434
  PromptTab,
2426
2435
  {
2427
2436
  agent,
@@ -2431,7 +2440,7 @@ function AgentDetail({
2431
2440
  onActivate: (promptId) => onActivatePrompt(agentId, promptId)
2432
2441
  }
2433
2442
  ) }),
2434
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2443
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2435
2444
  ToolsTab,
2436
2445
  {
2437
2446
  agent,
@@ -2441,7 +2450,7 @@ function AgentDetail({
2441
2450
  onDetach: (toolId) => onDetachTool(agentId, toolId)
2442
2451
  }
2443
2452
  ) }),
2444
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2453
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2445
2454
  ModelTab,
2446
2455
  {
2447
2456
  agent,
@@ -2473,7 +2482,7 @@ function GeneralTab({
2473
2482
  const initialRole = String(agent.role ?? "");
2474
2483
  const initialStatus = String(agent.status ?? "draft");
2475
2484
  return /* @__PURE__ */ jsxRuntime.jsx(
2476
- chunkMT66VKLS_js.SectionCard,
2485
+ chunkLVR4SR65_js.SectionCard,
2477
2486
  {
2478
2487
  variant: "glass",
2479
2488
  header: {
@@ -2502,10 +2511,10 @@ function GeneralTab({
2502
2511
  },
2503
2512
  className: "space-y-4",
2504
2513
  children: [
2505
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
2506
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
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 }),
2507
2516
  /* @__PURE__ */ jsxRuntime.jsx(
2508
- chunkMT66VKLS_js.FormSelect,
2517
+ chunkLVR4SR65_js.FormSelect,
2509
2518
  {
2510
2519
  name: "status",
2511
2520
  label: labels.status,
@@ -2517,9 +2526,9 @@ function GeneralTab({
2517
2526
  ]
2518
2527
  }
2519
2528
  ),
2520
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2529
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
2521
2530
  /* @__PURE__ */ jsxRuntime.jsx(
2522
- chunkMT66VKLS_js.FormInput,
2531
+ chunkLVR4SR65_js.FormInput,
2523
2532
  {
2524
2533
  name: "maxTokens",
2525
2534
  label: labels.maxTokens,
@@ -2528,7 +2537,7 @@ function GeneralTab({
2528
2537
  }
2529
2538
  ),
2530
2539
  /* @__PURE__ */ jsxRuntime.jsx(
2531
- chunkMT66VKLS_js.FormInput,
2540
+ chunkLVR4SR65_js.FormInput,
2532
2541
  {
2533
2542
  name: "temperature",
2534
2543
  label: labels.temperature,
@@ -2540,7 +2549,7 @@ function GeneralTab({
2540
2549
  }
2541
2550
  )
2542
2551
  ] }),
2543
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2552
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
2544
2553
  /* @__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 }) })
2545
2554
  ]
2546
2555
  }
@@ -2560,7 +2569,7 @@ function PromptTab({
2560
2569
  const currentSystem = String(agent.systemPrompt ?? "");
2561
2570
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2562
2571
  /* @__PURE__ */ jsxRuntime.jsx(
2563
- chunkMT66VKLS_js.SectionCard,
2572
+ chunkLVR4SR65_js.SectionCard,
2564
2573
  {
2565
2574
  variant: "glass",
2566
2575
  header: {
@@ -2572,7 +2581,7 @@ function PromptTab({
2572
2581
  }
2573
2582
  ),
2574
2583
  /* @__PURE__ */ jsxRuntime.jsx(
2575
- chunkMT66VKLS_js.SectionCard,
2584
+ chunkLVR4SR65_js.SectionCard,
2576
2585
  {
2577
2586
  variant: "glass",
2578
2587
  header: {
@@ -2583,10 +2592,10 @@ function PromptTab({
2583
2592
  /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
2584
2593
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
2585
2594
  ] }),
2586
- children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.ListCard, { children: prompts.map((prompt) => {
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) => {
2587
2596
  const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
2588
2597
  return /* @__PURE__ */ jsxRuntime.jsxs(
2589
- chunkMT66VKLS_js.ListCardItem,
2598
+ chunkLVR4SR65_js.ListCardItem,
2590
2599
  {
2591
2600
  leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
2592
2601
  "v",
@@ -2604,7 +2613,7 @@ function PromptTab({
2604
2613
  }
2605
2614
  ),
2606
2615
  addOpen && /* @__PURE__ */ jsxRuntime.jsx(
2607
- chunkMT66VKLS_js.GlassModal,
2616
+ chunkLVR4SR65_js.GlassModal,
2608
2617
  {
2609
2618
  open: true,
2610
2619
  onClose: () => setAddOpen(false),
@@ -2625,10 +2634,10 @@ function PromptTab({
2625
2634
  });
2626
2635
  setAddOpen(false);
2627
2636
  },
2628
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
2629
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
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" }),
2630
2639
  /* @__PURE__ */ jsxRuntime.jsx(
2631
- chunkMT66VKLS_js.FormSelect,
2640
+ chunkLVR4SR65_js.FormSelect,
2632
2641
  {
2633
2642
  name: "isActive",
2634
2643
  label: labels.promptIsActive,
@@ -2639,10 +2648,10 @@ function PromptTab({
2639
2648
  defaultValue: "true"
2640
2649
  }
2641
2650
  ),
2642
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormInput, { name: "reason", label: labels.promptReason }),
2643
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
2644
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
2645
- /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
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 })
2646
2655
  ] })
2647
2656
  }
2648
2657
  )
@@ -2665,15 +2674,15 @@ function ToolsTab({
2665
2674
  const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
2666
2675
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2667
2676
  /* @__PURE__ */ jsxRuntime.jsx(
2668
- chunkMT66VKLS_js.SectionCard,
2677
+ chunkLVR4SR65_js.SectionCard,
2669
2678
  {
2670
2679
  variant: "glass",
2671
2680
  header: {
2672
2681
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2673
2682
  title: labels.toolsAttached
2674
2683
  },
2675
- children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2676
- chunkMT66VKLS_js.ListCardItem,
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,
2677
2686
  {
2678
2687
  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" }) }),
2679
2688
  trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
@@ -2687,15 +2696,15 @@ function ToolsTab({
2687
2696
  }
2688
2697
  ),
2689
2698
  /* @__PURE__ */ jsxRuntime.jsx(
2690
- chunkMT66VKLS_js.SectionCard,
2699
+ chunkLVR4SR65_js.SectionCard,
2691
2700
  {
2692
2701
  variant: "glass",
2693
2702
  header: {
2694
2703
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
2695
2704
  title: labels.toolsAvailable
2696
2705
  },
2697
- children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMT66VKLS_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
2698
- chunkMT66VKLS_js.ListCardItem,
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,
2699
2708
  {
2700
2709
  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" }) }),
2701
2710
  trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
@@ -2736,7 +2745,7 @@ function ModelTab({
2736
2745
  return matches.length > 0 ? matches : connections;
2737
2746
  }, [selectedModel, connections]);
2738
2747
  return /* @__PURE__ */ jsxRuntime.jsx(
2739
- chunkMT66VKLS_js.SectionCard,
2748
+ chunkLVR4SR65_js.SectionCard,
2740
2749
  {
2741
2750
  variant: "glass",
2742
2751
  header: {
@@ -2757,9 +2766,9 @@ function ModelTab({
2757
2766
  },
2758
2767
  className: "space-y-4",
2759
2768
  children: [
2760
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
2769
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
2761
2770
  /* @__PURE__ */ jsxRuntime.jsx(
2762
- chunkMT66VKLS_js.FormSelect,
2771
+ chunkLVR4SR65_js.FormSelect,
2763
2772
  {
2764
2773
  label: labels.model,
2765
2774
  value: modelId,
@@ -2768,7 +2777,7 @@ function ModelTab({
2768
2777
  }
2769
2778
  ),
2770
2779
  /* @__PURE__ */ jsxRuntime.jsx(
2771
- chunkMT66VKLS_js.FormSelect,
2780
+ chunkLVR4SR65_js.FormSelect,
2772
2781
  {
2773
2782
  label: labels.connection,
2774
2783
  value: connectionId,
@@ -2820,14 +2829,14 @@ function RangeSliderField({
2820
2829
  step,
2821
2830
  zones,
2822
2831
  trackGradient,
2823
- formatValue,
2832
+ formatValue: formatValue2,
2824
2833
  ariaLabel
2825
2834
  }) {
2826
2835
  const percent = (value - min) / (max - min) * 100;
2827
2836
  const activeZone = zones?.find((z) => value <= z.max) ?? zones?.[zones.length - 1];
2828
2837
  const thumbColor = activeZone?.thumbColor ?? "#6366f1";
2829
2838
  const glow = hexToGlow(thumbColor);
2830
- const displayValue = formatValue ? formatValue(value) : value.toString();
2839
+ const displayValue = formatValue2 ? formatValue2(value) : value.toString();
2831
2840
  const ariaText = activeZone ? `${displayValue} \u2014 ${activeZone.label}` : displayValue;
2832
2841
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2833
2842
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
@@ -3060,7 +3069,7 @@ function AgentNewWizardPageView({
3060
3069
  }
3061
3070
  const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS));
3062
3071
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
3063
- chunkMT66VKLS_js.HeroSection,
3072
+ chunkLVR4SR65_js.HeroSection,
3064
3073
  {
3065
3074
  icon: /* @__PURE__ */ jsxRuntime.jsx(
3066
3075
  "div",
@@ -3078,7 +3087,7 @@ function AgentNewWizardPageView({
3078
3087
  );
3079
3088
  function renderStep1() {
3080
3089
  return /* @__PURE__ */ jsxRuntime.jsx(
3081
- chunkMT66VKLS_js.SectionCard,
3090
+ chunkLVR4SR65_js.SectionCard,
3082
3091
  {
3083
3092
  variant: "glass",
3084
3093
  header: {
@@ -3094,7 +3103,7 @@ function AgentNewWizardPageView({
3094
3103
  children: AGENT_PRESETS.map((preset) => {
3095
3104
  const selected = preset.id === presetId;
3096
3105
  return /* @__PURE__ */ jsxRuntime.jsx(
3097
- chunkMT66VKLS_js.FilterTileButton,
3106
+ chunkLVR4SR65_js.FilterTileButton,
3098
3107
  {
3099
3108
  isActive: selected,
3100
3109
  color: preset.tileColor,
@@ -3113,7 +3122,7 @@ function AgentNewWizardPageView({
3113
3122
  }
3114
3123
  function renderStep2() {
3115
3124
  return /* @__PURE__ */ jsxRuntime.jsx(
3116
- chunkMT66VKLS_js.SectionCard,
3125
+ chunkLVR4SR65_js.SectionCard,
3117
3126
  {
3118
3127
  variant: "glass",
3119
3128
  header: {
@@ -3141,9 +3150,9 @@ function AgentNewWizardPageView({
3141
3150
  e
3142
3151
  )) })
3143
3152
  ] }),
3144
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
3153
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3145
3154
  /* @__PURE__ */ jsxRuntime.jsx(
3146
- chunkMT66VKLS_js.FormInput,
3155
+ chunkLVR4SR65_js.FormInput,
3147
3156
  {
3148
3157
  label: labels.name,
3149
3158
  value: name,
@@ -3156,7 +3165,7 @@ function AgentNewWizardPageView({
3156
3165
  }
3157
3166
  ),
3158
3167
  /* @__PURE__ */ jsxRuntime.jsx(
3159
- chunkMT66VKLS_js.FormInput,
3168
+ chunkLVR4SR65_js.FormInput,
3160
3169
  {
3161
3170
  label: labels.role,
3162
3171
  value: role,
@@ -3169,7 +3178,7 @@ function AgentNewWizardPageView({
3169
3178
  )
3170
3179
  ] }),
3171
3180
  /* @__PURE__ */ jsxRuntime.jsx(
3172
- chunkMT66VKLS_js.FormTextarea,
3181
+ chunkLVR4SR65_js.FormTextarea,
3173
3182
  {
3174
3183
  label: labels.descriptionLabel,
3175
3184
  value: description,
@@ -3187,7 +3196,7 @@ function AgentNewWizardPageView({
3187
3196
  }
3188
3197
  function renderStep3() {
3189
3198
  return /* @__PURE__ */ jsxRuntime.jsx(
3190
- chunkMT66VKLS_js.SectionCard,
3199
+ chunkLVR4SR65_js.SectionCard,
3191
3200
  {
3192
3201
  variant: "glass",
3193
3202
  header: {
@@ -3195,9 +3204,9 @@ function AgentNewWizardPageView({
3195
3204
  subtitle: labels.connectionPickPrompt
3196
3205
  },
3197
3206
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3198
- /* @__PURE__ */ jsxRuntime.jsxs(chunkMT66VKLS_js.FormGrid, { children: [
3207
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
3199
3208
  /* @__PURE__ */ jsxRuntime.jsx(
3200
- chunkMT66VKLS_js.FormSelect,
3209
+ chunkLVR4SR65_js.FormSelect,
3201
3210
  {
3202
3211
  label: labels.connectionLabel,
3203
3212
  value: connectionId,
@@ -3210,7 +3219,7 @@ function AgentNewWizardPageView({
3210
3219
  }
3211
3220
  ),
3212
3221
  /* @__PURE__ */ jsxRuntime.jsx(
3213
- chunkMT66VKLS_js.FormSelect,
3222
+ chunkLVR4SR65_js.FormSelect,
3214
3223
  {
3215
3224
  label: labels.frameworkLabel,
3216
3225
  value: framework,
@@ -3222,7 +3231,7 @@ function AgentNewWizardPageView({
3222
3231
  }
3223
3232
  ),
3224
3233
  /* @__PURE__ */ jsxRuntime.jsx(
3225
- chunkMT66VKLS_js.FormSelect,
3234
+ chunkLVR4SR65_js.FormSelect,
3226
3235
  {
3227
3236
  label: labels.model,
3228
3237
  value: modelId,
@@ -3235,7 +3244,7 @@ function AgentNewWizardPageView({
3235
3244
  )
3236
3245
  ] }),
3237
3246
  /* @__PURE__ */ jsxRuntime.jsx(
3238
- chunkMT66VKLS_js.FormTextarea,
3247
+ chunkLVR4SR65_js.FormTextarea,
3239
3248
  {
3240
3249
  label: labels.outputSchemaLabel,
3241
3250
  value: outputSchema,
@@ -3254,7 +3263,7 @@ function AgentNewWizardPageView({
3254
3263
  function renderStep4() {
3255
3264
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3256
3265
  /* @__PURE__ */ jsxRuntime.jsx(
3257
- chunkMT66VKLS_js.SectionCard,
3266
+ chunkLVR4SR65_js.SectionCard,
3258
3267
  {
3259
3268
  variant: "glass",
3260
3269
  header: {
@@ -3414,7 +3423,7 @@ function AgentNewWizardPageView({
3414
3423
  }
3415
3424
  ),
3416
3425
  /* @__PURE__ */ jsxRuntime.jsx(
3417
- chunkMT66VKLS_js.SectionCard,
3426
+ chunkLVR4SR65_js.SectionCard,
3418
3427
  {
3419
3428
  variant: "glass",
3420
3429
  header: {
@@ -3457,7 +3466,7 @@ function AgentNewWizardPageView({
3457
3466
  }) })
3458
3467
  ] }),
3459
3468
  /* @__PURE__ */ jsxRuntime.jsx(
3460
- chunkMT66VKLS_js.FormInput,
3469
+ chunkLVR4SR65_js.FormInput,
3461
3470
  {
3462
3471
  label: labels.tagsLabel,
3463
3472
  value: tagsInput,
@@ -3478,7 +3487,7 @@ function AgentNewWizardPageView({
3478
3487
  const connectionLabel = connectionId ? connections.find((c) => c.id === connectionId)?.name ?? labels.connectionInline : labels.connectionInline;
3479
3488
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3480
3489
  /* @__PURE__ */ jsxRuntime.jsx(
3481
- chunkMT66VKLS_js.SectionCard,
3490
+ chunkLVR4SR65_js.SectionCard,
3482
3491
  {
3483
3492
  variant: "glass",
3484
3493
  header: {
@@ -3493,7 +3502,7 @@ function AgentNewWizardPageView({
3493
3502
  }
3494
3503
  ),
3495
3504
  /* @__PURE__ */ jsxRuntime.jsx(
3496
- chunkMT66VKLS_js.SectionCard,
3505
+ chunkLVR4SR65_js.SectionCard,
3497
3506
  {
3498
3507
  variant: "glass",
3499
3508
  header: {
@@ -3522,7 +3531,7 @@ function AgentNewWizardPageView({
3522
3531
  }
3523
3532
  ),
3524
3533
  /* @__PURE__ */ jsxRuntime.jsx(
3525
- chunkMT66VKLS_js.SectionCard,
3534
+ chunkLVR4SR65_js.SectionCard,
3526
3535
  {
3527
3536
  variant: "glass",
3528
3537
  header: {
@@ -3542,7 +3551,7 @@ function AgentNewWizardPageView({
3542
3551
  }
3543
3552
  ),
3544
3553
  /* @__PURE__ */ jsxRuntime.jsxs(
3545
- chunkMT66VKLS_js.SectionCard,
3554
+ chunkLVR4SR65_js.SectionCard,
3546
3555
  {
3547
3556
  variant: "glass",
3548
3557
  header: {
@@ -3589,7 +3598,7 @@ function AgentNewWizardPageView({
3589
3598
  className: "space-y-5",
3590
3599
  children: [
3591
3600
  /* @__PURE__ */ jsxRuntime.jsx(
3592
- chunkMT66VKLS_js.StepTimeline,
3601
+ chunkLVR4SR65_js.StepTimeline,
3593
3602
  {
3594
3603
  steps: timelineSteps,
3595
3604
  progressLabel: labels.pageTitle,
@@ -3616,34 +3625,1736 @@ function ReviewRow({ label, value }) {
3616
3625
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
3617
3626
  ] });
3618
3627
  }
3628
+ var DIALECT_LOGO_SRC = {
3629
+ bigquery: "/logos/datasources/bigquery.svg",
3630
+ postgres: "/logos/datasources/postgres.svg",
3631
+ postgresql: "/logos/datasources/postgres.svg",
3632
+ mysql: "/logos/datasources/mysql.svg",
3633
+ mariadb: "/logos/datasources/mariadb.svg",
3634
+ snowflake: "/logos/datasources/snowflake.svg",
3635
+ mongodb: "/logos/datasources/mongodb.svg",
3636
+ redis: "/logos/datasources/redis.svg",
3637
+ clickhouse: "/logos/datasources/clickhouse.svg",
3638
+ elasticsearch: "/logos/datasources/elasticsearch.svg",
3639
+ duckdb: "/logos/datasources/duckdb.svg",
3640
+ sqlite: "/logos/datasources/sqlite.svg",
3641
+ oracle: "/logos/datasources/oracle.svg",
3642
+ mssql: "/logos/datasources/mssql.svg",
3643
+ sqlserver: "/logos/datasources/mssql.svg",
3644
+ cassandra: "/logos/datasources/cassandra.svg",
3645
+ dynamodb: "/logos/datasources/dynamodb.svg",
3646
+ cockroach: "/logos/datasources/cockroachdb.svg",
3647
+ cockroachdb: "/logos/datasources/cockroachdb.svg",
3648
+ supabase: "/logos/datasources/supabase.svg",
3649
+ firebase: "/logos/datasources/firebase.svg",
3650
+ neo4j: "/logos/datasources/neo4j.svg",
3651
+ neptune: "/logos/datasources/neptune.svg",
3652
+ timestream: "/logos/datasources/timestream.svg",
3653
+ opensearch: "/logos/datasources/opensearch.svg"
3654
+ };
3655
+ var CATEGORY_COLOR = {
3656
+ relational: "blue",
3657
+ nosql: "emerald",
3658
+ warehouse: "purple",
3659
+ timeseries: "sky",
3660
+ graph: "pink",
3661
+ keyvalue: "red",
3662
+ search: "amber"
3663
+ };
3664
+ var TOTAL_STEPS2 = 4;
3665
+ function DatasourceNewWizardPageView({
3666
+ labels,
3667
+ initialStep,
3668
+ onStepChange,
3669
+ onSubmit,
3670
+ onCancel,
3671
+ onTestConnection
3672
+ }) {
3673
+ const clampedInitial = Math.min(TOTAL_STEPS2, Math.max(1, initialStep ?? 1));
3674
+ const [step, setStep] = react.useState(clampedInitial);
3675
+ const [dialect, setDialect] = react.useState("");
3676
+ const [name, setName] = react.useState("");
3677
+ const [host, setHost] = react.useState("");
3678
+ const [port, setPort] = react.useState("");
3679
+ const [database, setDatabase] = react.useState("");
3680
+ const [username, setUsername] = react.useState("");
3681
+ const [password, setPassword] = react.useState("");
3682
+ const [schema, setSchema] = react.useState("");
3683
+ const [connectionString, setConnectionString] = react.useState("");
3684
+ const [projectId, setProjectId] = react.useState("");
3685
+ const [dataset, setDataset] = react.useState("");
3686
+ const [keyFile, setKeyFile] = react.useState("");
3687
+ const [account, setAccount] = react.useState("");
3688
+ const [warehouseField, setWarehouseField] = react.useState("");
3689
+ const [region, setRegion] = react.useState("");
3690
+ const [bucket, setBucket] = react.useState("");
3691
+ const [token, setToken] = react.useState("");
3692
+ const [apiKey, setApiKey] = react.useState("");
3693
+ const [environment, setEnvironment] = react.useState("");
3694
+ const [index, setIndex] = react.useState("");
3695
+ const [ssl, setSsl] = react.useState(true);
3696
+ const [readOnly, setReadOnly] = react.useState(true);
3697
+ const [maxPoolSize, setMaxPoolSize] = react.useState("5");
3698
+ const [timeoutMs, setTimeoutMs] = react.useState("5000");
3699
+ const [allowedTables, setAllowedTables] = react.useState("");
3700
+ const [blockedColumns, setBlockedColumns] = react.useState("");
3701
+ const [maskPii, setMaskPii] = react.useState(false);
3702
+ const [submitting, setSubmitting] = react.useState(false);
3703
+ const [touched, setTouched] = react.useState(false);
3704
+ 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]);
3707
+ react.useEffect(() => {
3708
+ if (dialectOption?.defaultPort && (port === "" || /^[0-9]+$/.test(port))) {
3709
+ setPort(String(dialectOption.defaultPort));
3710
+ }
3711
+ }, [dialect]);
3712
+ react.useEffect(() => {
3713
+ const next = Math.min(TOTAL_STEPS2, Math.max(1, initialStep ?? 1));
3714
+ if (next !== step) setStep(next);
3715
+ }, [initialStep]);
3716
+ function markTouched() {
3717
+ if (!touched) setTouched(true);
3718
+ }
3719
+ const goToStep = react.useCallback((next) => {
3720
+ const clamped = Math.min(TOTAL_STEPS2, Math.max(1, next));
3721
+ setStep(clamped);
3722
+ onStepChange?.(clamped);
3723
+ }, [onStepChange]);
3724
+ function canAdvance(from) {
3725
+ if (from === 1) return Boolean(dialect);
3726
+ if (from === 2) return name.trim().length > 0;
3727
+ return true;
3728
+ }
3729
+ const goNext = react.useCallback(() => {
3730
+ if (!canAdvance(step)) return;
3731
+ if (step < TOTAL_STEPS2) goToStep(step + 1);
3732
+ }, [step, dialect, name]);
3733
+ const goBack = react.useCallback(() => {
3734
+ if (step > 1) goToStep(step - 1);
3735
+ }, [step, goToStep]);
3736
+ const cancelWithConfirm = react.useCallback(() => {
3737
+ if (touched && !window.confirm(labels.wizardCancelConfirm)) return;
3738
+ onCancel();
3739
+ }, [touched, labels.wizardCancelConfirm, onCancel]);
3740
+ function buildPayload() {
3741
+ const payload = {
3742
+ name: name.trim(),
3743
+ dialect,
3744
+ ssl,
3745
+ readOnly
3746
+ };
3747
+ if (host.trim()) payload.host = host.trim();
3748
+ const portNum = Number(port);
3749
+ if (Number.isFinite(portNum) && portNum > 0) payload.port = portNum;
3750
+ if (database.trim()) payload.database = database.trim();
3751
+ if (username.trim()) payload.username = username.trim();
3752
+ if (password) payload.password = password;
3753
+ if (schema.trim()) payload.schema = schema.trim();
3754
+ if (connectionString.trim()) payload.connectionString = connectionString.trim();
3755
+ if (projectId.trim()) payload.projectId = projectId.trim();
3756
+ if (dataset.trim()) payload.dataset = dataset.trim();
3757
+ if (keyFile.trim()) payload.keyFile = keyFile.trim();
3758
+ if (account.trim()) payload.account = account.trim();
3759
+ if (warehouseField.trim()) payload.warehouse = warehouseField.trim();
3760
+ if (region.trim()) payload.region = region.trim();
3761
+ if (bucket.trim()) payload.bucket = bucket.trim();
3762
+ if (token) payload.token = token;
3763
+ if (apiKey) payload.apiKey = apiKey;
3764
+ if (environment.trim()) payload.environment = environment.trim();
3765
+ if (index.trim()) payload.index = index.trim();
3766
+ const pool = Number(maxPoolSize);
3767
+ if (Number.isFinite(pool) && pool > 0) payload.maxPoolSize = pool;
3768
+ const timeout = Number(timeoutMs);
3769
+ 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;
3774
+ return payload;
3775
+ }
3776
+ async function handleTestConnection() {
3777
+ setTestStatus("testing");
3778
+ try {
3779
+ const ok = onTestConnection ? await onTestConnection(buildPayload()) : await simulateTest();
3780
+ setTestStatus(ok ? "success" : "failed");
3781
+ setTimeout(() => setTestStatus("idle"), 3500);
3782
+ } catch {
3783
+ setTestStatus("failed");
3784
+ setTimeout(() => setTestStatus("idle"), 3500);
3785
+ }
3786
+ }
3787
+ async function submit() {
3788
+ setSubmitting(true);
3789
+ try {
3790
+ const payload = {
3791
+ ...buildPayload(),
3792
+ ...maskPii ? { maskPii: true } : {}
3793
+ };
3794
+ await onSubmit(payload);
3795
+ } finally {
3796
+ setSubmitting(false);
3797
+ }
3798
+ }
3799
+ react.useEffect(() => {
3800
+ function onKey(e) {
3801
+ if (e.key === "Escape") {
3802
+ e.preventDefault();
3803
+ cancelWithConfirm();
3804
+ return;
3805
+ }
3806
+ if (e.key === "Enter") {
3807
+ const target = e.target;
3808
+ const tag = target?.tagName?.toLowerCase();
3809
+ if (tag === "textarea" || tag === "select" || tag === "input" || tag === "button") return;
3810
+ e.preventDefault();
3811
+ if (step < TOTAL_STEPS2) goNext();
3812
+ else void submit();
3813
+ }
3814
+ }
3815
+ window.addEventListener("keydown", onKey);
3816
+ return () => window.removeEventListener("keydown", onKey);
3817
+ }, [step, dialect, name, touched]);
3818
+ const stepTitles = [
3819
+ labels.wizardStep1Title,
3820
+ labels.wizardStep2Title,
3821
+ labels.wizardStep3Title,
3822
+ labels.wizardStep4Title
3823
+ ];
3824
+ const stepSubtitles = [
3825
+ labels.wizardStep1Subtitle,
3826
+ labels.wizardStep2Subtitle,
3827
+ labels.wizardStep3Subtitle,
3828
+ labels.wizardStep4Subtitle
3829
+ ];
3830
+ const timelineSteps = stepTitles.map((title, idx) => ({
3831
+ id: String(idx + 1),
3832
+ name: title,
3833
+ description: stepSubtitles[idx],
3834
+ status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
3835
+ }));
3836
+ const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS2));
3837
+ const hero = /* @__PURE__ */ jsxRuntime.jsx(
3838
+ chunkLVR4SR65_js.HeroSection,
3839
+ {
3840
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
3841
+ label: counter,
3842
+ title: labels.pageTitle,
3843
+ subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
3844
+ gradient: category?.gradient ?? "from-amber-500 to-orange-600"
3845
+ }
3846
+ );
3847
+ function renderStep1() {
3848
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkFIJMOTP4_js.DIALECT_CATEGORIES.map((cat) => {
3849
+ const color = CATEGORY_COLOR[cat.id] ?? "slate";
3850
+ const categoryLabel = labels[cat.labelKey] ?? cat.id;
3851
+ return /* @__PURE__ */ jsxRuntime.jsx(
3852
+ chunkLVR4SR65_js.SectionCard,
3853
+ {
3854
+ variant: "glass",
3855
+ header: {
3856
+ title: categoryLabel,
3857
+ icon: /* @__PURE__ */ jsxRuntime.jsx(cat.icon, { className: "h-4 w-4" }),
3858
+ gradient: cat.gradient
3859
+ },
3860
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3861
+ "div",
3862
+ {
3863
+ role: "radiogroup",
3864
+ "aria-label": categoryLabel,
3865
+ className: "grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-4",
3866
+ children: cat.dialects.map((opt) => {
3867
+ const selected = opt.value === dialect;
3868
+ const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
3869
+ return /* @__PURE__ */ jsxRuntime.jsx(
3870
+ chunkLVR4SR65_js.FilterTileButton,
3871
+ {
3872
+ isActive: selected,
3873
+ color,
3874
+ icon: logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: opt.label, className: "h-5 w-5 object-contain" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
3875
+ label: opt.label,
3876
+ count: opt.formType.replace("-", " "),
3877
+ onClick: () => {
3878
+ setDialect(opt.value);
3879
+ markTouched();
3880
+ }
3881
+ },
3882
+ opt.value
3883
+ );
3884
+ })
3885
+ }
3886
+ )
3887
+ },
3888
+ cat.id
3889
+ );
3890
+ }) });
3891
+ }
3892
+ function renderConnectionFields() {
3893
+ if (!dialectOption) return null;
3894
+ switch (dialectOption.formType) {
3895
+ case "standard":
3896
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3897
+ /* @__PURE__ */ jsxRuntime.jsx(
3898
+ chunkLVR4SR65_js.FormInput,
3899
+ {
3900
+ label: labels.fieldHost,
3901
+ value: host,
3902
+ onValueChange: (v) => {
3903
+ setHost(v);
3904
+ markTouched();
3905
+ },
3906
+ placeholder: labels.fieldHostPlaceholder,
3907
+ required: true
3908
+ }
3909
+ ),
3910
+ /* @__PURE__ */ jsxRuntime.jsx(
3911
+ chunkLVR4SR65_js.FormInput,
3912
+ {
3913
+ label: labels.fieldPort,
3914
+ type: "number",
3915
+ value: port,
3916
+ onValueChange: (v) => {
3917
+ setPort(v);
3918
+ markTouched();
3919
+ }
3920
+ }
3921
+ ),
3922
+ /* @__PURE__ */ jsxRuntime.jsx(
3923
+ chunkLVR4SR65_js.FormInput,
3924
+ {
3925
+ label: labels.fieldDatabase,
3926
+ value: database,
3927
+ onValueChange: (v) => {
3928
+ setDatabase(v);
3929
+ markTouched();
3930
+ },
3931
+ placeholder: labels.fieldDatabasePlaceholder,
3932
+ required: true
3933
+ }
3934
+ ),
3935
+ /* @__PURE__ */ jsxRuntime.jsx(
3936
+ chunkLVR4SR65_js.FormInput,
3937
+ {
3938
+ label: labels.fieldUsername,
3939
+ value: username,
3940
+ onValueChange: (v) => {
3941
+ setUsername(v);
3942
+ markTouched();
3943
+ },
3944
+ placeholder: labels.fieldUsernamePlaceholder
3945
+ }
3946
+ ),
3947
+ /* @__PURE__ */ jsxRuntime.jsx(
3948
+ chunkLVR4SR65_js.FormInput,
3949
+ {
3950
+ label: labels.fieldPassword,
3951
+ type: "password",
3952
+ value: password,
3953
+ onValueChange: (v) => {
3954
+ setPassword(v);
3955
+ markTouched();
3956
+ },
3957
+ placeholder: labels.fieldPasswordPlaceholder
3958
+ }
3959
+ ),
3960
+ /* @__PURE__ */ jsxRuntime.jsx(
3961
+ chunkLVR4SR65_js.FormInput,
3962
+ {
3963
+ label: labels.fieldSchema,
3964
+ value: schema,
3965
+ onValueChange: (v) => {
3966
+ setSchema(v);
3967
+ markTouched();
3968
+ },
3969
+ placeholder: labels.fieldSchemaPlaceholder
3970
+ }
3971
+ )
3972
+ ] });
3973
+ case "connection-string":
3974
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
3975
+ chunkLVR4SR65_js.FormInput,
3976
+ {
3977
+ label: labels.fieldConnectionString,
3978
+ value: connectionString,
3979
+ onValueChange: (v) => {
3980
+ setConnectionString(v);
3981
+ markTouched();
3982
+ },
3983
+ placeholder: labels.fieldConnectionStringPlaceholder,
3984
+ required: true
3985
+ }
3986
+ ) });
3987
+ case "cloud-bigquery":
3988
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3989
+ /* @__PURE__ */ jsxRuntime.jsx(
3990
+ chunkLVR4SR65_js.FormInput,
3991
+ {
3992
+ label: labels.fieldProjectId,
3993
+ value: projectId,
3994
+ onValueChange: (v) => {
3995
+ setProjectId(v);
3996
+ markTouched();
3997
+ },
3998
+ placeholder: labels.fieldProjectIdPlaceholder,
3999
+ required: true
4000
+ }
4001
+ ),
4002
+ /* @__PURE__ */ jsxRuntime.jsx(
4003
+ chunkLVR4SR65_js.FormInput,
4004
+ {
4005
+ label: labels.fieldDataset,
4006
+ value: dataset,
4007
+ onValueChange: (v) => {
4008
+ setDataset(v);
4009
+ markTouched();
4010
+ },
4011
+ placeholder: labels.fieldDatasetPlaceholder,
4012
+ required: true
4013
+ }
4014
+ ),
4015
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
4016
+ chunkLVR4SR65_js.FormInput,
4017
+ {
4018
+ label: labels.fieldKeyFile,
4019
+ value: keyFile,
4020
+ onValueChange: (v) => {
4021
+ setKeyFile(v);
4022
+ markTouched();
4023
+ },
4024
+ placeholder: labels.fieldKeyFilePlaceholder
4025
+ }
4026
+ ) })
4027
+ ] });
4028
+ case "cloud-snowflake":
4029
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4030
+ /* @__PURE__ */ jsxRuntime.jsx(
4031
+ chunkLVR4SR65_js.FormInput,
4032
+ {
4033
+ label: labels.fieldAccount,
4034
+ value: account,
4035
+ onValueChange: (v) => {
4036
+ setAccount(v);
4037
+ markTouched();
4038
+ },
4039
+ placeholder: labels.fieldAccountPlaceholder,
4040
+ required: true
4041
+ }
4042
+ ),
4043
+ /* @__PURE__ */ jsxRuntime.jsx(
4044
+ chunkLVR4SR65_js.FormInput,
4045
+ {
4046
+ label: labels.fieldWarehouse,
4047
+ value: warehouseField,
4048
+ onValueChange: (v) => {
4049
+ setWarehouseField(v);
4050
+ markTouched();
4051
+ },
4052
+ placeholder: labels.fieldWarehousePlaceholder,
4053
+ required: true
4054
+ }
4055
+ ),
4056
+ /* @__PURE__ */ jsxRuntime.jsx(
4057
+ chunkLVR4SR65_js.FormInput,
4058
+ {
4059
+ label: labels.fieldDatabase,
4060
+ value: database,
4061
+ onValueChange: (v) => {
4062
+ setDatabase(v);
4063
+ markTouched();
4064
+ },
4065
+ placeholder: labels.fieldDatabasePlaceholder,
4066
+ required: true
4067
+ }
4068
+ ),
4069
+ /* @__PURE__ */ jsxRuntime.jsx(
4070
+ chunkLVR4SR65_js.FormInput,
4071
+ {
4072
+ label: labels.fieldUsername,
4073
+ value: username,
4074
+ onValueChange: (v) => {
4075
+ setUsername(v);
4076
+ markTouched();
4077
+ },
4078
+ placeholder: labels.fieldUsernamePlaceholder,
4079
+ required: true
4080
+ }
4081
+ ),
4082
+ /* @__PURE__ */ jsxRuntime.jsx(
4083
+ chunkLVR4SR65_js.FormInput,
4084
+ {
4085
+ label: labels.fieldPassword,
4086
+ type: "password",
4087
+ value: password,
4088
+ onValueChange: (v) => {
4089
+ setPassword(v);
4090
+ markTouched();
4091
+ },
4092
+ placeholder: labels.fieldPasswordPlaceholder
4093
+ }
4094
+ ),
4095
+ /* @__PURE__ */ jsxRuntime.jsx(
4096
+ chunkLVR4SR65_js.FormInput,
4097
+ {
4098
+ label: labels.fieldSchema,
4099
+ value: schema,
4100
+ onValueChange: (v) => {
4101
+ setSchema(v);
4102
+ markTouched();
4103
+ },
4104
+ placeholder: labels.fieldSchemaPlaceholder
4105
+ }
4106
+ )
4107
+ ] });
4108
+ case "cloud-key":
4109
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4110
+ /* @__PURE__ */ jsxRuntime.jsx(
4111
+ chunkLVR4SR65_js.FormInput,
4112
+ {
4113
+ label: labels.fieldRegion,
4114
+ value: region,
4115
+ onValueChange: (v) => {
4116
+ setRegion(v);
4117
+ markTouched();
4118
+ },
4119
+ placeholder: labels.fieldRegionPlaceholder,
4120
+ required: true
4121
+ }
4122
+ ),
4123
+ /* @__PURE__ */ jsxRuntime.jsx(
4124
+ chunkLVR4SR65_js.FormInput,
4125
+ {
4126
+ label: labels.fieldToken,
4127
+ type: "password",
4128
+ value: token,
4129
+ onValueChange: (v) => {
4130
+ setToken(v);
4131
+ markTouched();
4132
+ },
4133
+ placeholder: labels.fieldTokenPlaceholder,
4134
+ required: true
4135
+ }
4136
+ ),
4137
+ /* @__PURE__ */ jsxRuntime.jsx(
4138
+ chunkLVR4SR65_js.FormInput,
4139
+ {
4140
+ label: labels.fieldBucket,
4141
+ value: bucket,
4142
+ onValueChange: (v) => {
4143
+ setBucket(v);
4144
+ markTouched();
4145
+ },
4146
+ placeholder: labels.fieldBucketPlaceholder
4147
+ }
4148
+ )
4149
+ ] });
4150
+ case "vector-key":
4151
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4152
+ /* @__PURE__ */ jsxRuntime.jsx(
4153
+ chunkLVR4SR65_js.FormInput,
4154
+ {
4155
+ label: labels.fieldApiKey,
4156
+ type: "password",
4157
+ value: apiKey,
4158
+ onValueChange: (v) => {
4159
+ setApiKey(v);
4160
+ markTouched();
4161
+ },
4162
+ placeholder: labels.fieldApiKeyPlaceholder,
4163
+ required: true
4164
+ }
4165
+ ),
4166
+ /* @__PURE__ */ jsxRuntime.jsx(
4167
+ chunkLVR4SR65_js.FormInput,
4168
+ {
4169
+ label: labels.fieldEnvironment,
4170
+ value: environment,
4171
+ onValueChange: (v) => {
4172
+ setEnvironment(v);
4173
+ markTouched();
4174
+ },
4175
+ placeholder: labels.fieldEnvironmentPlaceholder,
4176
+ required: true
4177
+ }
4178
+ ),
4179
+ /* @__PURE__ */ jsxRuntime.jsx(
4180
+ chunkLVR4SR65_js.FormInput,
4181
+ {
4182
+ label: labels.fieldIndex,
4183
+ value: index,
4184
+ onValueChange: (v) => {
4185
+ setIndex(v);
4186
+ markTouched();
4187
+ },
4188
+ placeholder: labels.fieldIndexPlaceholder
4189
+ }
4190
+ )
4191
+ ] });
4192
+ }
4193
+ }
4194
+ function renderStep2() {
4195
+ if (!dialectOption) {
4196
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
4197
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: labels.wizardStep1Subtitle }),
4198
+ /* @__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
+ ] });
4200
+ }
4201
+ return /* @__PURE__ */ jsxRuntime.jsx(
4202
+ chunkLVR4SR65_js.SectionCard,
4203
+ {
4204
+ variant: "glass",
4205
+ header: {
4206
+ title: dialectOption.label,
4207
+ subtitle: labels.wizardStep2Subtitle,
4208
+ icon: category?.icon ? /* @__PURE__ */ jsxRuntime.jsx(category.icon, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-4 w-4" }),
4209
+ gradient: category?.gradient
4210
+ },
4211
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4212
+ /* @__PURE__ */ jsxRuntime.jsx(
4213
+ chunkLVR4SR65_js.FormInput,
4214
+ {
4215
+ label: labels.fieldName,
4216
+ value: name,
4217
+ onValueChange: (v) => {
4218
+ setName(v);
4219
+ markTouched();
4220
+ },
4221
+ placeholder: labels.fieldNamePlaceholder,
4222
+ required: true
4223
+ }
4224
+ ),
4225
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: renderConnectionFields() }),
4226
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
4227
+ /* @__PURE__ */ jsxRuntime.jsx(
4228
+ chunkLVR4SR65_js.FormToggle,
4229
+ {
4230
+ checked: ssl,
4231
+ onChange: (v) => {
4232
+ setSsl(v);
4233
+ markTouched();
4234
+ },
4235
+ label: labels.fieldSsl,
4236
+ variant: "inline"
4237
+ }
4238
+ ),
4239
+ /* @__PURE__ */ jsxRuntime.jsx(
4240
+ chunkLVR4SR65_js.FormToggle,
4241
+ {
4242
+ checked: readOnly,
4243
+ onChange: (v) => {
4244
+ setReadOnly(v);
4245
+ markTouched();
4246
+ },
4247
+ label: labels.fieldReadOnly,
4248
+ variant: "inline"
4249
+ }
4250
+ )
4251
+ ] }),
4252
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: labels.fieldReadOnlyHelp }),
4253
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
4254
+ /* @__PURE__ */ jsxRuntime.jsx(
4255
+ chunkBHOT22QL_js.Button,
4256
+ {
4257
+ type: "button",
4258
+ outline: true,
4259
+ onClick: () => void handleTestConnection(),
4260
+ disabled: testStatus === "testing",
4261
+ children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
4262
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Spinner, { size: "xs" }),
4263
+ labels.testing
4264
+ ] }) : labels.testConnection
4265
+ }
4266
+ ),
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 })
4269
+ ] })
4270
+ ] })
4271
+ }
4272
+ );
4273
+ }
4274
+ function renderStep3() {
4275
+ return /* @__PURE__ */ jsxRuntime.jsx(
4276
+ chunkLVR4SR65_js.SectionCard,
4277
+ {
4278
+ variant: "glass",
4279
+ header: {
4280
+ title: labels.governanceSectionTitle,
4281
+ subtitle: labels.governanceSectionSubtitle
4282
+ },
4283
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4284
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4285
+ /* @__PURE__ */ jsxRuntime.jsx(
4286
+ chunkLVR4SR65_js.FormInput,
4287
+ {
4288
+ label: labels.fieldMaxPoolSize,
4289
+ type: "number",
4290
+ min: 1,
4291
+ max: 100,
4292
+ value: maxPoolSize,
4293
+ onValueChange: (v) => {
4294
+ setMaxPoolSize(v);
4295
+ markTouched();
4296
+ },
4297
+ hint: labels.fieldMaxPoolSizeHint
4298
+ }
4299
+ ),
4300
+ /* @__PURE__ */ jsxRuntime.jsx(
4301
+ chunkLVR4SR65_js.FormInput,
4302
+ {
4303
+ label: labels.fieldTimeoutMs,
4304
+ type: "number",
4305
+ min: 100,
4306
+ value: timeoutMs,
4307
+ onValueChange: (v) => {
4308
+ setTimeoutMs(v);
4309
+ markTouched();
4310
+ },
4311
+ hint: labels.fieldTimeoutMsHint
4312
+ }
4313
+ )
4314
+ ] }),
4315
+ /* @__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,
4343
+ {
4344
+ checked: maskPii,
4345
+ onChange: (v) => {
4346
+ setMaskPii(v);
4347
+ markTouched();
4348
+ },
4349
+ label: labels.fieldMaskPii,
4350
+ description: labels.fieldMaskPiiDescription
4351
+ }
4352
+ )
4353
+ ] })
4354
+ }
4355
+ );
4356
+ }
4357
+ function renderStep4() {
4358
+ const categoryLabel = category ? labels[category.labelKey] ?? category.id : labels.reviewNoneValue;
4359
+ const dialectLabel = dialectOption?.label ?? labels.reviewNoneValue;
4360
+ const allowed = splitList(allowedTables);
4361
+ const blocked = splitList(blockedColumns);
4362
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4363
+ /* @__PURE__ */ jsxRuntime.jsx(
4364
+ chunkLVR4SR65_js.SectionCard,
4365
+ {
4366
+ variant: "glass",
4367
+ header: {
4368
+ title: labels.wizardStep1Title,
4369
+ subtitle: labels.wizardStep1Subtitle
4370
+ },
4371
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
4372
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4373
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4374
+ ] }),
4375
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
4376
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCategoryLabel, value: categoryLabel }),
4377
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewDialectLabel, value: dialectLabel })
4378
+ ] })
4379
+ }
4380
+ ),
4381
+ /* @__PURE__ */ jsxRuntime.jsx(
4382
+ chunkLVR4SR65_js.SectionCard,
4383
+ {
4384
+ variant: "glass",
4385
+ header: {
4386
+ title: labels.wizardStep2Title,
4387
+ subtitle: labels.wizardStep2Subtitle
4388
+ },
4389
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
4390
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4391
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4392
+ ] }),
4393
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
4394
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewNameLabel, value: name || labels.reviewNoneValue }),
4395
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCredentialsLabel, value: labels.reviewCredentialsRedacted }),
4396
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewSslLabel, value: ssl ? labels.reviewYes : labels.reviewNo }),
4397
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewReadOnlyLabel, value: readOnly ? labels.reviewYes : labels.reviewNo })
4398
+ ] })
4399
+ }
4400
+ ),
4401
+ /* @__PURE__ */ jsxRuntime.jsx(
4402
+ chunkLVR4SR65_js.SectionCard,
4403
+ {
4404
+ variant: "glass",
4405
+ header: {
4406
+ title: labels.wizardStep3Title,
4407
+ subtitle: labels.wizardStep3Subtitle
4408
+ },
4409
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
4410
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
4411
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
4412
+ ] }),
4413
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
4414
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewPoolLabel, value: maxPoolSize || labels.reviewNoneValue }),
4415
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewTimeoutLabel, value: timeoutMs ? `${timeoutMs}ms` : labels.reviewNoneValue }),
4416
+ /* @__PURE__ */ jsxRuntime.jsx(
4417
+ ReviewRow2,
4418
+ {
4419
+ label: labels.reviewAllowedTablesLabel,
4420
+ value: allowed.length > 0 ? allowed.join(", ") : labels.reviewNoneValue
4421
+ }
4422
+ ),
4423
+ /* @__PURE__ */ jsxRuntime.jsx(
4424
+ ReviewRow2,
4425
+ {
4426
+ label: labels.reviewBlockedColumnsLabel,
4427
+ value: blocked.length > 0 ? blocked.join(", ") : labels.reviewNoneValue
4428
+ }
4429
+ ),
4430
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewMaskPiiLabel, value: maskPii ? labels.reviewYes : labels.reviewNo })
4431
+ ] })
4432
+ }
4433
+ )
4434
+ ] });
4435
+ }
4436
+ const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : renderStep4();
4437
+ const advanceDisabled = !canAdvance(step);
4438
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
4439
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
4440
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4441
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
4442
+ step < TOTAL_STEPS2 ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "amber", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "amber", onClick: () => void submit(), disabled: submitting || !dialect || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate })
4443
+ ] })
4444
+ ] });
4445
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(
4446
+ "form",
4447
+ {
4448
+ onSubmit: (e) => {
4449
+ e.preventDefault();
4450
+ if (step < TOTAL_STEPS2) goNext();
4451
+ else void submit();
4452
+ },
4453
+ className: "space-y-5",
4454
+ 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
+ ] })
4467
+ ]
4468
+ }
4469
+ );
4470
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4471
+ hero,
4472
+ content
4473
+ ] });
4474
+ }
4475
+ function ReviewRow2({ label, value }) {
4476
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
4477
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-gray-400 dark:text-gray-500", children: label }),
4478
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
4479
+ ] });
4480
+ }
4481
+ function splitList(raw) {
4482
+ return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
4483
+ }
4484
+ async function simulateTest() {
4485
+ await new Promise((r) => setTimeout(r, 1500));
4486
+ return true;
4487
+ }
4488
+ function RangeSliderField2({
4489
+ sliderId,
4490
+ label,
4491
+ value,
4492
+ onChange,
4493
+ min,
4494
+ max,
4495
+ step,
4496
+ zones,
4497
+ trackGradient,
4498
+ formatValue: formatValue2,
4499
+ ariaLabel
4500
+ }) {
4501
+ const percent = (value - min) / (max - min) * 100;
4502
+ const activeZone = zones?.find((z) => value <= z.max) ?? zones?.[zones.length - 1];
4503
+ const thumbColor = activeZone?.thumbColor ?? "#6366f1";
4504
+ const glow = hexToGlow2(thumbColor);
4505
+ const displayValue = formatValue2 ? formatValue2(value) : value.toString();
4506
+ const ariaText = activeZone ? `${displayValue} \u2014 ${activeZone.label}` : displayValue;
4507
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4508
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
4509
+ /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: sliderId, className: "text-xs font-medium text-gray-500 dark:text-gray-400", children: label }),
4510
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold tabular-nums text-gray-900 dark:text-white", children: displayValue })
4511
+ ] }),
4512
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
4513
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700", children: /* @__PURE__ */ jsxRuntime.jsx(
4514
+ "div",
4515
+ {
4516
+ className: "h-full rounded-full transition-all duration-300 ease-out motion-reduce:transition-none",
4517
+ style: {
4518
+ width: `${Math.max(0, Math.min(100, percent))}%`,
4519
+ background: trackGradient ?? `linear-gradient(90deg, ${thumbColor}, ${thumbColor})`
4520
+ }
4521
+ }
4522
+ ) }),
4523
+ /* @__PURE__ */ jsxRuntime.jsx(
4524
+ "input",
4525
+ {
4526
+ id: sliderId,
4527
+ "data-slider-id": sliderId,
4528
+ type: "range",
4529
+ min,
4530
+ max,
4531
+ step,
4532
+ value,
4533
+ onChange: (e) => onChange(parseFloat(e.target.value)),
4534
+ "aria-label": ariaLabel ?? label,
4535
+ "aria-valuemin": min,
4536
+ "aria-valuemax": max,
4537
+ "aria-valuenow": value,
4538
+ "aria-valuetext": ariaText,
4539
+ className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 [&::-webkit-slider-thumb]:h-5 [&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-gray-900"
4540
+ }
4541
+ ),
4542
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-slider-id="${sliderId}"]::-webkit-slider-thumb { background: ${thumbColor}; box-shadow: 0 0 8px ${glow}; } [data-slider-id="${sliderId}"]::-moz-range-thumb { background: ${thumbColor}; border: 2px solid white; box-shadow: 0 0 8px ${glow}; }` })
4543
+ ] }),
4544
+ zones && zones.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex items-center justify-between", children: zones.map((z) => {
4545
+ const isActive = z.label === activeZone?.label;
4546
+ return /* @__PURE__ */ jsxRuntime.jsx(
4547
+ "span",
4548
+ {
4549
+ className: `text-[10px] font-medium transition-colors motion-reduce:transition-none ${isActive ? z.color : "text-gray-400 dark:text-gray-500"}`,
4550
+ children: z.label
4551
+ },
4552
+ z.label
4553
+ );
4554
+ }) })
4555
+ ] });
4556
+ }
4557
+ function hexToGlow2(hex) {
4558
+ const m = /^#?([0-9a-f]{6})$/i.exec(hex);
4559
+ if (!m) return "rgba(99,102,241,0.5)";
4560
+ const int = parseInt(m[1], 16);
4561
+ const r = int >> 16 & 255;
4562
+ const g = int >> 8 & 255;
4563
+ const b = int & 255;
4564
+ return `rgba(${r},${g},${b},0.5)`;
4565
+ }
4566
+ var ACTION_TILES = [
4567
+ { id: "notify", color: "sky", icon: outline.BellAlertIcon, labelKey: "actionNotifyLabel", descriptionKey: "actionNotifyDescription" },
4568
+ { id: "call-webhook", color: "indigo", icon: outline.GlobeAltIcon, labelKey: "actionWebhookLabel", descriptionKey: "actionWebhookDescription" },
4569
+ { id: "mutate", color: "amber", icon: outline.PencilIcon, labelKey: "actionMutateLabel", descriptionKey: "actionMutateDescription" },
4570
+ { id: "escalate", color: "rose", icon: outline.ArrowUpCircleIcon, labelKey: "actionEscalateLabel", descriptionKey: "actionEscalateDescription" },
4571
+ { id: "route-to-agent", color: "violet", icon: outline.SparklesIcon, labelKey: "actionRouteLabel", descriptionKey: "actionRouteDescription" }
4572
+ ];
4573
+ var WEEKDAYS = [
4574
+ { id: "mon", labelKey: "weekdayMon" },
4575
+ { id: "tue", labelKey: "weekdayTue" },
4576
+ { id: "wed", labelKey: "weekdayWed" },
4577
+ { id: "thu", labelKey: "weekdayThu" },
4578
+ { id: "fri", labelKey: "weekdayFri" },
4579
+ { id: "sat", labelKey: "weekdaySat" },
4580
+ { id: "sun", labelKey: "weekdaySun" }
4581
+ ];
4582
+ var TOTAL_STEPS3 = 5;
4583
+ function RuleNewWizardPageView({
4584
+ labels,
4585
+ initialStep,
4586
+ onStepChange,
4587
+ onSubmit,
4588
+ onCancel
4589
+ }) {
4590
+ const clampedInitial = Math.min(TOTAL_STEPS3, Math.max(1, initialStep ?? 1));
4591
+ const [step, setStep] = react.useState(clampedInitial);
4592
+ const [name, setName] = react.useState("");
4593
+ const [description, setDescription] = react.useState("");
4594
+ const [priority, setPriority] = react.useState(50);
4595
+ const [enabled, setEnabled] = react.useState(true);
4596
+ const [status, setStatus] = react.useState("active");
4597
+ const [tagsInput, setTagsInput] = react.useState("");
4598
+ const [combinator, setCombinator] = react.useState("and");
4599
+ const [condition, setCondition] = react.useState(chunkEC34PGUO_js.defaultRuleCondition());
4600
+ const [actionTileId, setActionTileId] = react.useState("");
4601
+ const [action, setAction] = react.useState(chunkEC34PGUO_js.defaultRuleAction());
4602
+ const [validFromDate, setValidFromDate] = react.useState(null);
4603
+ const [validFromTime, setValidFromTime] = react.useState(null);
4604
+ const [validUntilDate, setValidUntilDate] = react.useState(null);
4605
+ const [validUntilTime, setValidUntilTime] = react.useState(null);
4606
+ const [noExpiry, setNoExpiry] = react.useState(true);
4607
+ const [recurrence, setRecurrence] = react.useState("one-off");
4608
+ const [cronExpression, setCronExpression] = react.useState("");
4609
+ const [weekdays, setWeekdays] = react.useState([]);
4610
+ const [recurringTime, setRecurringTime] = react.useState(null);
4611
+ const [submitting, setSubmitting] = react.useState(false);
4612
+ const [touched, setTouched] = react.useState(false);
4613
+ function markTouched() {
4614
+ if (!touched) setTouched(true);
4615
+ }
4616
+ react.useEffect(() => {
4617
+ const next = Math.min(TOTAL_STEPS3, Math.max(1, initialStep ?? 1));
4618
+ if (next !== step) setStep(next);
4619
+ }, [initialStep]);
4620
+ const goToStep = react.useCallback((next) => {
4621
+ const clamped = Math.min(TOTAL_STEPS3, Math.max(1, next));
4622
+ setStep(clamped);
4623
+ onStepChange?.(clamped);
4624
+ }, [onStepChange]);
4625
+ function canAdvance(from) {
4626
+ if (from === 1) return name.trim().length > 0;
4627
+ if (from === 3) return actionTileId.length > 0;
4628
+ return true;
4629
+ }
4630
+ const goNext = react.useCallback(() => {
4631
+ if (!canAdvance(step)) return;
4632
+ if (step < TOTAL_STEPS3) goToStep(step + 1);
4633
+ }, [step, name, actionTileId]);
4634
+ const goBack = react.useCallback(() => {
4635
+ if (step > 1) goToStep(step - 1);
4636
+ }, [step, goToStep]);
4637
+ const cancelWithConfirm = react.useCallback(() => {
4638
+ if (touched && !window.confirm(labels.wizardCancelConfirm)) return;
4639
+ onCancel();
4640
+ }, [touched, labels.wizardCancelConfirm, onCancel]);
4641
+ function combineDateTime(date, time) {
4642
+ if (!date) return null;
4643
+ const next = new Date(date);
4644
+ next.setHours(time?.hours ?? 0, time?.minutes ?? 0, 0, 0);
4645
+ return next.toISOString();
4646
+ }
4647
+ const tags = react.useMemo(
4648
+ () => tagsInput.split(",").map((t) => t.trim()).filter((t) => t.length > 0),
4649
+ [tagsInput]
4650
+ );
4651
+ function buildPayload() {
4652
+ const validFrom = combineDateTime(validFromDate, validFromTime);
4653
+ 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" ? {
4661
+ operator: "boolean_expression",
4662
+ combinator: "or",
4663
+ operands: [condition]
4664
+ } : condition;
4665
+ const finalAction = {
4666
+ type: action.type,
4667
+ params: {
4668
+ ...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
+ } : {}
4676
+ }
4677
+ };
4678
+ const wireStatus = status === "paused" ? "draft" : status;
4679
+ return {
4680
+ name: name.trim() || "Untitled Rule",
4681
+ description: description.trim() || void 0,
4682
+ enabled,
4683
+ priority,
4684
+ status: wireStatus,
4685
+ validFrom,
4686
+ validUntil,
4687
+ tags,
4688
+ condition: conditionWithCombinator,
4689
+ action: finalAction
4690
+ };
4691
+ }
4692
+ async function submit() {
4693
+ setSubmitting(true);
4694
+ try {
4695
+ await onSubmit(buildPayload());
4696
+ } finally {
4697
+ setSubmitting(false);
4698
+ }
4699
+ }
4700
+ react.useEffect(() => {
4701
+ function onKey(e) {
4702
+ if (e.key === "Escape") {
4703
+ e.preventDefault();
4704
+ cancelWithConfirm();
4705
+ return;
4706
+ }
4707
+ if (e.key === "Enter") {
4708
+ const target = e.target;
4709
+ const tag = target?.tagName?.toLowerCase();
4710
+ if (tag === "textarea" || tag === "select" || tag === "input" || tag === "button") return;
4711
+ e.preventDefault();
4712
+ if (step < TOTAL_STEPS3) goNext();
4713
+ else void submit();
4714
+ }
4715
+ }
4716
+ window.addEventListener("keydown", onKey);
4717
+ return () => window.removeEventListener("keydown", onKey);
4718
+ }, [step, name, actionTileId, touched]);
4719
+ const stepTitles = [
4720
+ labels.wizardStep1Title,
4721
+ labels.wizardStep2Title,
4722
+ labels.wizardStep3Title,
4723
+ labels.wizardStep4Title,
4724
+ labels.wizardStep5Title
4725
+ ];
4726
+ const stepSubtitles = [
4727
+ labels.wizardStep1Subtitle,
4728
+ labels.wizardStep2Subtitle,
4729
+ labels.wizardStep3Subtitle,
4730
+ labels.wizardStep4Subtitle,
4731
+ labels.wizardStep5Subtitle
4732
+ ];
4733
+ const timelineSteps = stepTitles.map((title, idx) => ({
4734
+ id: String(idx + 1),
4735
+ name: title,
4736
+ description: stepSubtitles[idx],
4737
+ status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
4738
+ }));
4739
+ const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS3));
4740
+ const hero = /* @__PURE__ */ jsxRuntime.jsx(
4741
+ chunkLVR4SR65_js.HeroSection,
4742
+ {
4743
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
4744
+ label: counter,
4745
+ title: labels.pageTitle,
4746
+ subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
4747
+ gradient: "from-fuchsia-500 to-purple-700"
4748
+ }
4749
+ );
4750
+ function renderStep1() {
4751
+ return /* @__PURE__ */ jsxRuntime.jsx(
4752
+ chunkLVR4SR65_js.SectionCard,
4753
+ {
4754
+ variant: "glass",
4755
+ header: {
4756
+ title: labels.wizardStep1Title,
4757
+ subtitle: labels.wizardStep1Subtitle
4758
+ },
4759
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4760
+ /* @__PURE__ */ jsxRuntime.jsx(
4761
+ chunkLVR4SR65_js.FormInput,
4762
+ {
4763
+ label: labels.nameLabel,
4764
+ value: name,
4765
+ onValueChange: (v) => {
4766
+ setName(v);
4767
+ markTouched();
4768
+ },
4769
+ placeholder: labels.namePlaceholder,
4770
+ required: true
4771
+ }
4772
+ ),
4773
+ /* @__PURE__ */ jsxRuntime.jsx(
4774
+ chunkLVR4SR65_js.FormTextarea,
4775
+ {
4776
+ label: labels.descriptionLabel,
4777
+ value: description,
4778
+ onValueChange: (v) => {
4779
+ setDescription(v);
4780
+ markTouched();
4781
+ },
4782
+ placeholder: labels.descriptionPlaceholder,
4783
+ rows: 3
4784
+ }
4785
+ ),
4786
+ /* @__PURE__ */ jsxRuntime.jsx(
4787
+ RangeSliderField2,
4788
+ {
4789
+ sliderId: "wizard-rule-priority",
4790
+ label: labels.priorityLabel,
4791
+ value: priority,
4792
+ onChange: (v) => {
4793
+ setPriority(Math.round(v));
4794
+ markTouched();
4795
+ },
4796
+ min: 0,
4797
+ max: 100,
4798
+ step: 1,
4799
+ trackGradient: "linear-gradient(90deg, #10b981, #38bdf8 33%, #f59e0b 66%, #f43f5e)",
4800
+ formatValue: (v) => String(Math.round(v)),
4801
+ zones: [
4802
+ { label: labels.priorityLow, max: 25, color: "text-emerald-500", thumbColor: "#10b981" },
4803
+ { label: labels.priorityNormal, max: 50, color: "text-sky-500", thumbColor: "#38bdf8" },
4804
+ { label: labels.priorityHigh, max: 75, color: "text-amber-500", thumbColor: "#f59e0b" },
4805
+ { label: labels.priorityCritical, max: 100, color: "text-rose-500", thumbColor: "#f43f5e" }
4806
+ ]
4807
+ }
4808
+ ),
4809
+ /* @__PURE__ */ jsxRuntime.jsx(
4810
+ chunkLVR4SR65_js.FormToggle,
4811
+ {
4812
+ checked: enabled,
4813
+ onChange: (v) => {
4814
+ setEnabled(v);
4815
+ markTouched();
4816
+ },
4817
+ label: labels.enabledLabel,
4818
+ variant: "card"
4819
+ }
4820
+ )
4821
+ ] })
4822
+ }
4823
+ );
4824
+ }
4825
+ function renderStep2() {
4826
+ return /* @__PURE__ */ jsxRuntime.jsx(
4827
+ chunkLVR4SR65_js.SectionCard,
4828
+ {
4829
+ variant: "glass",
4830
+ header: {
4831
+ title: labels.conditionSectionTitle,
4832
+ subtitle: labels.conditionSectionSubtitle
4833
+ },
4834
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4835
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4836
+ /* @__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
+ /* @__PURE__ */ jsxRuntime.jsx(
4838
+ chunkLVR4SR65_js.SegmentedControl,
4839
+ {
4840
+ segments: [
4841
+ { value: "and", label: labels.combinatorAnd },
4842
+ { value: "or", label: labels.combinatorOr },
4843
+ { value: "not", label: labels.combinatorNot }
4844
+ ],
4845
+ value: combinator,
4846
+ onChange: (v) => {
4847
+ setCombinator(v);
4848
+ markTouched();
4849
+ },
4850
+ size: "sm"
4851
+ }
4852
+ )
4853
+ ] }),
4854
+ /* @__PURE__ */ jsxRuntime.jsx(
4855
+ chunkEC34PGUO_js.RuleConditionBuilder,
4856
+ {
4857
+ value: condition,
4858
+ onChange: (next) => {
4859
+ setCondition(next);
4860
+ markTouched();
4861
+ }
4862
+ }
4863
+ )
4864
+ ] })
4865
+ }
4866
+ );
4867
+ }
4868
+ function renderStep3() {
4869
+ const selectedTile = ACTION_TILES.find((t) => t.id === actionTileId) ?? null;
4870
+ return /* @__PURE__ */ jsxRuntime.jsx(
4871
+ chunkLVR4SR65_js.SectionCard,
4872
+ {
4873
+ variant: "glass",
4874
+ header: {
4875
+ title: labels.actionSectionTitle,
4876
+ subtitle: labels.actionSectionSubtitle
4877
+ },
4878
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4879
+ /* @__PURE__ */ jsxRuntime.jsx(
4880
+ "div",
4881
+ {
4882
+ role: "radiogroup",
4883
+ "aria-label": labels.actionSectionTitle,
4884
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
4885
+ children: ACTION_TILES.map((tile) => {
4886
+ const Icon = tile.icon;
4887
+ const selected = tile.id === actionTileId;
4888
+ const label = labels[tile.labelKey] ?? tile.id;
4889
+ const description2 = labels[tile.descriptionKey] ?? "";
4890
+ return /* @__PURE__ */ jsxRuntime.jsx(
4891
+ chunkLVR4SR65_js.FilterTileButton,
4892
+ {
4893
+ isActive: selected,
4894
+ color: tile.color,
4895
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-5 w-5" }),
4896
+ label,
4897
+ count: description2,
4898
+ onClick: () => {
4899
+ setActionTileId(tile.id);
4900
+ markTouched();
4901
+ }
4902
+ },
4903
+ tile.id
4904
+ );
4905
+ })
4906
+ }
4907
+ ),
4908
+ selectedTile && /* @__PURE__ */ jsxRuntime.jsx(
4909
+ chunkLVR4SR65_js.SectionCard,
4910
+ {
4911
+ variant: "glass",
4912
+ header: {
4913
+ title: labels[selectedTile.labelKey] ?? selectedTile.id,
4914
+ subtitle: labels.actionConfigSubtitle
4915
+ },
4916
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4917
+ chunkEC34PGUO_js.RuleActionBuilder,
4918
+ {
4919
+ value: action,
4920
+ onChange: (next) => {
4921
+ setAction(next);
4922
+ markTouched();
4923
+ }
4924
+ }
4925
+ )
4926
+ }
4927
+ )
4928
+ ] })
4929
+ }
4930
+ );
4931
+ }
4932
+ function renderStep4() {
4933
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(
4934
+ chunkLVR4SR65_js.SectionCard,
4935
+ {
4936
+ variant: "glass",
4937
+ header: {
4938
+ title: labels.scheduleSectionTitle,
4939
+ subtitle: labels.scheduleSectionSubtitle
4940
+ },
4941
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
4942
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
4943
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
4944
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
4945
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4946
+ /* @__PURE__ */ jsxRuntime.jsx(
4947
+ chunkLVR4SR65_js.DatePicker,
4948
+ {
4949
+ value: validFromDate,
4950
+ onChange: (d) => {
4951
+ setValidFromDate(d);
4952
+ markTouched();
4953
+ },
4954
+ placeholder: labels.validFromDateLabel
4955
+ }
4956
+ ),
4957
+ /* @__PURE__ */ jsxRuntime.jsx(
4958
+ chunkLVR4SR65_js.TimePicker,
4959
+ {
4960
+ value: validFromTime,
4961
+ onChange: (t) => {
4962
+ setValidFromTime(t);
4963
+ markTouched();
4964
+ },
4965
+ placeholder: labels.validFromTimeLabel
4966
+ }
4967
+ )
4968
+ ] })
4969
+ ] }),
4970
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
4971
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
4972
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
4973
+ /* @__PURE__ */ jsxRuntime.jsx(
4974
+ chunkLVR4SR65_js.DatePicker,
4975
+ {
4976
+ value: validUntilDate,
4977
+ onChange: (d) => {
4978
+ setValidUntilDate(d);
4979
+ markTouched();
4980
+ },
4981
+ placeholder: labels.validUntilDateLabel
4982
+ }
4983
+ ),
4984
+ /* @__PURE__ */ jsxRuntime.jsx(
4985
+ chunkLVR4SR65_js.TimePicker,
4986
+ {
4987
+ value: validUntilTime,
4988
+ onChange: (t) => {
4989
+ setValidUntilTime(t);
4990
+ markTouched();
4991
+ },
4992
+ placeholder: labels.validUntilTimeLabel
4993
+ }
4994
+ )
4995
+ ] })
4996
+ ] })
4997
+ ] }),
4998
+ /* @__PURE__ */ jsxRuntime.jsx(
4999
+ chunkLVR4SR65_js.FormCheckbox,
5000
+ {
5001
+ checked: noExpiry,
5002
+ onChange: (v) => {
5003
+ setNoExpiry(v);
5004
+ markTouched();
5005
+ },
5006
+ label: labels.noExpiryLabel,
5007
+ description: labels.noExpiryDescription
5008
+ }
5009
+ ),
5010
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5011
+ /* @__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
+ /* @__PURE__ */ jsxRuntime.jsx(
5013
+ chunkLVR4SR65_js.SegmentedControl,
5014
+ {
5015
+ segments: [
5016
+ { value: "active", label: labels.statusActive },
5017
+ { value: "paused", label: labels.statusPaused },
5018
+ { value: "archived", label: labels.statusArchived }
5019
+ ],
5020
+ value: status,
5021
+ onChange: (v) => {
5022
+ setStatus(v);
5023
+ markTouched();
5024
+ },
5025
+ size: "sm"
5026
+ }
5027
+ )
5028
+ ] }),
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
+ ),
5042
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5043
+ /* @__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
+ /* @__PURE__ */ jsxRuntime.jsx(
5045
+ chunkLVR4SR65_js.SegmentedControl,
5046
+ {
5047
+ segments: [
5048
+ { value: "one-off", label: labels.recurrenceOneOff },
5049
+ { value: "cron", label: labels.recurrenceCron },
5050
+ { value: "recurring", label: labels.recurrenceRecurring }
5051
+ ],
5052
+ value: recurrence,
5053
+ onChange: (v) => {
5054
+ setRecurrence(v);
5055
+ markTouched();
5056
+ },
5057
+ size: "sm"
5058
+ }
5059
+ )
5060
+ ] }),
5061
+ recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
5062
+ chunkLVR4SR65_js.FormInput,
5063
+ {
5064
+ label: labels.cronExpressionLabel,
5065
+ value: cronExpression,
5066
+ onValueChange: (v) => {
5067
+ setCronExpression(v);
5068
+ markTouched();
5069
+ },
5070
+ placeholder: labels.cronExpressionPlaceholder,
5071
+ hint: labels.cronExpressionHint
5072
+ }
5073
+ ),
5074
+ recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
5075
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5076
+ /* @__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
5096
+ },
5097
+ d.id
5098
+ );
5099
+ }) })
5100
+ ] }),
5101
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
5102
+ /* @__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
+ /* @__PURE__ */ jsxRuntime.jsx(
5104
+ chunkLVR4SR65_js.TimePicker,
5105
+ {
5106
+ value: recurringTime,
5107
+ onChange: (t) => {
5108
+ setRecurringTime(t);
5109
+ markTouched();
5110
+ },
5111
+ placeholder: labels.timeOfDayLabel
5112
+ }
5113
+ )
5114
+ ] })
5115
+ ] })
5116
+ ] })
5117
+ }
5118
+ ) });
5119
+ }
5120
+ function renderStep5() {
5121
+ const payload = buildPayload();
5122
+ const conditionSentence = humanReadableCondition(payload.condition, labels);
5123
+ const actionSentence = humanReadableAction(payload.action, labels, ACTION_TILES, actionTileId);
5124
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5125
+ /* @__PURE__ */ jsxRuntime.jsx(
5126
+ chunkLVR4SR65_js.SectionCard,
5127
+ {
5128
+ variant: "glass",
5129
+ header: {
5130
+ title: labels.wizardStep1Title,
5131
+ subtitle: labels.wizardStep1Subtitle
5132
+ },
5133
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
5134
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5135
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5136
+ ] }),
5137
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5138
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewNameLabel, value: payload.name }),
5139
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewPriorityLabel, value: String(payload.priority) }),
5140
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewEnabledLabel, value: payload.enabled ? labels.reviewYes : labels.reviewNo }),
5141
+ /* @__PURE__ */ jsxRuntime.jsx(
5142
+ ReviewRow3,
5143
+ {
5144
+ label: labels.reviewDescriptionLabel,
5145
+ value: payload.description ?? labels.reviewNoneValue
5146
+ }
5147
+ )
5148
+ ] })
5149
+ }
5150
+ ),
5151
+ /* @__PURE__ */ jsxRuntime.jsxs(
5152
+ chunkLVR4SR65_js.SectionCard,
5153
+ {
5154
+ variant: "glass",
5155
+ header: {
5156
+ title: labels.wizardStep2Title,
5157
+ subtitle: labels.wizardStep2Subtitle
5158
+ },
5159
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
5160
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5161
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5162
+ ] }),
5163
+ children: [
5164
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: conditionSentence }),
5165
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewCombinatorLabel, value: combinator.toUpperCase() }),
5166
+ /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.condition, null, 2) })
5167
+ ]
5168
+ }
5169
+ ),
5170
+ /* @__PURE__ */ jsxRuntime.jsxs(
5171
+ chunkLVR4SR65_js.SectionCard,
5172
+ {
5173
+ variant: "glass",
5174
+ header: {
5175
+ title: labels.wizardStep3Title,
5176
+ subtitle: labels.wizardStep3Subtitle
5177
+ },
5178
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
5179
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5180
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5181
+ ] }),
5182
+ children: [
5183
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: actionSentence }),
5184
+ /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.action, null, 2) })
5185
+ ]
5186
+ }
5187
+ ),
5188
+ /* @__PURE__ */ jsxRuntime.jsx(
5189
+ chunkLVR4SR65_js.SectionCard,
5190
+ {
5191
+ variant: "glass",
5192
+ header: {
5193
+ title: labels.wizardStep4Title,
5194
+ subtitle: labels.wizardStep4Subtitle
5195
+ },
5196
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(4), children: [
5197
+ /* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
5198
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
5199
+ ] }),
5200
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
5201
+ /* @__PURE__ */ jsxRuntime.jsx(
5202
+ ReviewRow3,
5203
+ {
5204
+ label: labels.reviewValidFromLabel,
5205
+ value: payload.validFrom ?? labels.reviewNoneValue
5206
+ }
5207
+ ),
5208
+ /* @__PURE__ */ jsxRuntime.jsx(
5209
+ ReviewRow3,
5210
+ {
5211
+ label: labels.reviewValidUntilLabel,
5212
+ value: payload.validUntil ?? (noExpiry ? labels.noExpiryLabel : labels.reviewNoneValue)
5213
+ }
5214
+ ),
5215
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewStatusLabel, value: payload.status ?? "active" }),
5216
+ /* @__PURE__ */ jsxRuntime.jsx(
5217
+ ReviewRow3,
5218
+ {
5219
+ label: labels.reviewTagsLabel,
5220
+ value: payload.tags && payload.tags.length > 0 ? payload.tags.join(", ") : labels.reviewNoneValue
5221
+ }
5222
+ ),
5223
+ /* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewRecurrenceLabel, value: recurrence })
5224
+ ] })
5225
+ }
5226
+ )
5227
+ ] });
5228
+ }
5229
+ const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : step === 4 ? renderStep4() : renderStep5();
5230
+ const advanceDisabled = !canAdvance(step);
5231
+ const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
5232
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
5233
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
5234
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
5235
+ step < TOTAL_STEPS3 ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "fuchsia", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(
5236
+ chunkBHOT22QL_js.Button,
5237
+ {
5238
+ type: "button",
5239
+ color: "fuchsia",
5240
+ onClick: () => void submit(),
5241
+ disabled: submitting || !name.trim() || !actionTileId,
5242
+ children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate
5243
+ }
5244
+ )
5245
+ ] })
5246
+ ] });
5247
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(
5248
+ "form",
5249
+ {
5250
+ onSubmit: (e) => {
5251
+ e.preventDefault();
5252
+ if (step < TOTAL_STEPS3) goNext();
5253
+ else void submit();
5254
+ },
5255
+ className: "space-y-5",
5256
+ 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
+ ] })
5269
+ ]
5270
+ }
5271
+ );
5272
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5273
+ hero,
5274
+ content
5275
+ ] });
5276
+ }
5277
+ function ReviewRow3({ label, value }) {
5278
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
5279
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-gray-400 dark:text-gray-500", children: label }),
5280
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 whitespace-pre-wrap break-words text-xs font-semibold text-gray-900 dark:text-white", children: value })
5281
+ ] });
5282
+ }
5283
+ function pad(n) {
5284
+ return String(n).padStart(2, "0");
5285
+ }
5286
+ function humanReadableCondition(cond, labels) {
5287
+ if (!cond) return labels.reviewNoneValue;
5288
+ if (cond.operator === "boolean_expression" && Array.isArray(cond.operands)) {
5289
+ const inner = cond.operands.map((o) => humanReadableCondition(o, labels)).join(` ${cond.combinator?.toUpperCase() ?? "AND"} `);
5290
+ return `(${inner})`;
5291
+ }
5292
+ const field = cond.field ?? "?";
5293
+ switch (cond.operator) {
5294
+ case "truthy":
5295
+ return `${field} is set`;
5296
+ case "eq":
5297
+ return `${field} = ${formatValue(cond.value)}`;
5298
+ case "neq":
5299
+ return `${field} \u2260 ${formatValue(cond.value)}`;
5300
+ case "gt":
5301
+ return `${field} > ${formatValue(cond.value)}`;
5302
+ case "gte":
5303
+ return `${field} \u2265 ${formatValue(cond.value)}`;
5304
+ case "lt":
5305
+ return `${field} < ${formatValue(cond.value)}`;
5306
+ case "lte":
5307
+ return `${field} \u2264 ${formatValue(cond.value)}`;
5308
+ case "contains":
5309
+ return `${field} contains "${formatValue(cond.value)}"`;
5310
+ case "regex_match":
5311
+ return `${field} matches /${cond.pattern ?? ""}/`;
5312
+ case "threshold":
5313
+ return `${field} ${cond.comparison ?? "gte"} ${formatValue(cond.value)}`;
5314
+ case "time_window":
5315
+ return `${field} within time-window(${(cond.windows ?? []).length})`;
5316
+ default:
5317
+ return `${cond.operator}(${field})`;
5318
+ }
5319
+ }
5320
+ function formatValue(v) {
5321
+ if (v === null || v === void 0) return "";
5322
+ return String(v);
5323
+ }
5324
+ function humanReadableAction(action, labels, tiles, actionTileId) {
5325
+ const tile = tiles.find((t) => t.id === actionTileId);
5326
+ const tileLabel = tile ? labels[tile.labelKey] ?? tile.id : action.type;
5327
+ const paramSummary = action.params ? Object.entries(action.params).slice(0, 3).map(([k, v]) => `${k}=${String(v)}`).join(", ") : "";
5328
+ return paramSummary ? `${tileLabel} \u2014 ${paramSummary}` : tileLabel;
5329
+ }
3619
5330
 
3620
5331
  Object.defineProperty(exports, "RolesPageView", {
3621
5332
  enumerable: true,
3622
- get: function () { return chunkIVKFXPLO_js.RolesPageView; }
5333
+ get: function () { return chunkYSYEV2Z6_js.RolesPageView; }
3623
5334
  });
3624
5335
  Object.defineProperty(exports, "UsersPageView", {
3625
5336
  enumerable: true,
3626
- get: function () { return chunkIVKFXPLO_js.UsersPageView; }
5337
+ get: function () { return chunkYSYEV2Z6_js.UsersPageView; }
3627
5338
  });
3628
5339
  Object.defineProperty(exports, "DIALECT_CATEGORIES", {
3629
5340
  enumerable: true,
3630
- get: function () { return chunkR6GEJBFC_js.DIALECT_CATEGORIES; }
5341
+ get: function () { return chunkFIJMOTP4_js.DIALECT_CATEGORIES; }
3631
5342
  });
3632
5343
  Object.defineProperty(exports, "DatasourceFormModal", {
3633
5344
  enumerable: true,
3634
- get: function () { return chunkR6GEJBFC_js.DatasourceFormModal; }
5345
+ get: function () { return chunkFIJMOTP4_js.DatasourceFormModal; }
3635
5346
  });
3636
5347
  Object.defineProperty(exports, "DatasourceModal", {
3637
5348
  enumerable: true,
3638
- get: function () { return chunkR6GEJBFC_js.DatasourceModal; }
5349
+ get: function () { return chunkFIJMOTP4_js.DatasourceModal; }
3639
5350
  });
3640
5351
  Object.defineProperty(exports, "findCategory", {
3641
5352
  enumerable: true,
3642
- get: function () { return chunkR6GEJBFC_js.findCategory; }
5353
+ get: function () { return chunkFIJMOTP4_js.findCategory; }
3643
5354
  });
3644
5355
  Object.defineProperty(exports, "findDialect", {
3645
5356
  enumerable: true,
3646
- get: function () { return chunkR6GEJBFC_js.findDialect; }
5357
+ get: function () { return chunkFIJMOTP4_js.findDialect; }
3647
5358
  });
3648
5359
  exports.AgentNewWizardPageView = AgentNewWizardPageView;
3649
5360
  exports.AgentsConfigPageView = AgentsConfigPageView;
@@ -3655,7 +5366,9 @@ exports.AgentsWorkspacePageView = AgentsWorkspacePageView;
3655
5366
  exports.ConnectionsPageView = ConnectionsPageView;
3656
5367
  exports.CredentialsPageView = CredentialsPageView;
3657
5368
  exports.DashboardPageView = DashboardPageView;
5369
+ exports.DatasourceNewWizardPageView = DatasourceNewWizardPageView;
3658
5370
  exports.DatasourcesPageView = DatasourcesPageView;
5371
+ exports.RuleNewWizardPageView = RuleNewWizardPageView;
3659
5372
  exports.RulesPageView = RulesPageView;
3660
5373
  exports.RunTimelinePageView = RunTimelinePageView;
3661
5374
  exports.TOOL_TYPES = TOOL_TYPES;