@datatechsolutions/ui 3.6.0 → 3.6.2

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 (131) hide show
  1. package/dist/astrlabe/graph-node.js +8 -5
  2. package/dist/astrlabe/graph-node.mjs +4 -1
  3. package/dist/astrlabe/index.js +115 -114
  4. package/dist/astrlabe/index.mjs +7 -6
  5. package/dist/astrlabe/workflow-canvas.js +7 -6
  6. package/dist/astrlabe/workflow-canvas.mjs +6 -5
  7. package/dist/{chunk-I63NFWIA.mjs → chunk-2OPBUVTQ.mjs} +3 -3
  8. package/dist/{chunk-I63NFWIA.mjs.map → chunk-2OPBUVTQ.mjs.map} +1 -1
  9. package/dist/{chunk-XTXLRQ3H.mjs → chunk-34XRH2FX.mjs} +28 -28
  10. package/dist/chunk-34XRH2FX.mjs.map +1 -0
  11. package/dist/{chunk-QHP2MR2F.js → chunk-3JZGRXSG.js} +4 -4
  12. package/dist/{chunk-QHP2MR2F.js.map → chunk-3JZGRXSG.js.map} +1 -1
  13. package/dist/{chunk-JQYDJ75Q.mjs → chunk-3VYD7QL2.mjs} +3 -3
  14. package/dist/{chunk-JQYDJ75Q.mjs.map → chunk-3VYD7QL2.mjs.map} +1 -1
  15. package/dist/{chunk-MRRFDIUQ.mjs → chunk-4JRMXHPU.mjs} +5 -4
  16. package/dist/chunk-4JRMXHPU.mjs.map +1 -0
  17. package/dist/{chunk-4OFG6POC.mjs → chunk-5LCWQKGQ.mjs} +207 -1128
  18. package/dist/chunk-5LCWQKGQ.mjs.map +1 -0
  19. package/dist/{chunk-W5YCZOXO.js → chunk-7YK4WXHO.js} +79 -78
  20. package/dist/chunk-7YK4WXHO.js.map +1 -0
  21. package/dist/{chunk-YOJIPZ72.js → chunk-BBLBSDPN.js} +9 -9
  22. package/dist/{chunk-YOJIPZ72.js.map → chunk-BBLBSDPN.js.map} +1 -1
  23. package/dist/chunk-BHOT22QL.js +998 -0
  24. package/dist/chunk-BHOT22QL.js.map +1 -0
  25. package/dist/{chunk-DYWSG42B.mjs → chunk-C4AJWDFB.mjs} +11 -10
  26. package/dist/chunk-C4AJWDFB.mjs.map +1 -0
  27. package/dist/{chunk-UOABOFKO.mjs → chunk-CBFK4W4C.mjs} +3 -3
  28. package/dist/{chunk-UOABOFKO.mjs.map → chunk-CBFK4W4C.mjs.map} +1 -1
  29. package/dist/{chunk-P5F257N3.js → chunk-CVZXZK2X.js} +35 -34
  30. package/dist/chunk-CVZXZK2X.js.map +1 -0
  31. package/dist/{chunk-IHHGT3LP.mjs → chunk-CYAAL3BY.mjs} +6 -5
  32. package/dist/chunk-CYAAL3BY.mjs.map +1 -0
  33. package/dist/{chunk-LVK7VXW7.js → chunk-DMPBNWJB.js} +37 -36
  34. package/dist/chunk-DMPBNWJB.js.map +1 -0
  35. package/dist/{chunk-ESLKQJQS.mjs → chunk-DXLATMGD.mjs} +6 -5
  36. package/dist/chunk-DXLATMGD.mjs.map +1 -0
  37. package/dist/{chunk-P4YYEM4B.js → chunk-EZQ2D47U.js} +7 -10
  38. package/dist/chunk-EZQ2D47U.js.map +1 -0
  39. package/dist/{chunk-UWSMHKOF.js → chunk-FUHNEP3Y.js} +164 -163
  40. package/dist/chunk-FUHNEP3Y.js.map +1 -0
  41. package/dist/{chunk-YTE6WCBX.js → chunk-JHN2OUWG.js} +64 -63
  42. package/dist/chunk-JHN2OUWG.js.map +1 -0
  43. package/dist/{chunk-AMYQSPQC.js → chunk-JLECJI7S.js} +18 -17
  44. package/dist/chunk-JLECJI7S.js.map +1 -0
  45. package/dist/{chunk-VPOIX2DY.js → chunk-KMNWPC64.js} +40 -39
  46. package/dist/chunk-KMNWPC64.js.map +1 -0
  47. package/dist/{chunk-VUAGVZJM.mjs → chunk-NJ6HH4QP.mjs} +6 -5
  48. package/dist/chunk-NJ6HH4QP.mjs.map +1 -0
  49. package/dist/{chunk-OZNTQROP.mjs → chunk-PLTLRL2V.mjs} +7 -10
  50. package/dist/chunk-PLTLRL2V.mjs.map +1 -0
  51. package/dist/{chunk-WEZ722BS.mjs → chunk-PMMP76MV.mjs} +7 -6
  52. package/dist/chunk-PMMP76MV.mjs.map +1 -0
  53. package/dist/{chunk-NJZIE4EH.js → chunk-QF6WL7XU.js} +6 -5
  54. package/dist/chunk-QF6WL7XU.js.map +1 -0
  55. package/dist/{chunk-QRNFTG6A.js → chunk-QGLGQXJE.js} +4 -4
  56. package/dist/{chunk-QRNFTG6A.js.map → chunk-QGLGQXJE.js.map} +1 -1
  57. package/dist/{chunk-GCYYGSHU.js → chunk-R4EKPXX3.js} +564 -1525
  58. package/dist/chunk-R4EKPXX3.js.map +1 -0
  59. package/dist/{chunk-S7AV6XEY.js → chunk-RWYG7QHP.js} +128 -138
  60. package/dist/chunk-RWYG7QHP.js.map +1 -0
  61. package/dist/{chunk-WBEZATIB.js → chunk-RZ3NDH5S.js} +13 -13
  62. package/dist/{chunk-WBEZATIB.js.map → chunk-RZ3NDH5S.js.map} +1 -1
  63. package/dist/{chunk-HGWVJ3VB.mjs → chunk-SJVKID3E.mjs} +4 -3
  64. package/dist/chunk-SJVKID3E.mjs.map +1 -0
  65. package/dist/{chunk-7LILNZMR.mjs → chunk-TJEZL72T.mjs} +4 -3
  66. package/dist/chunk-TJEZL72T.mjs.map +1 -0
  67. package/dist/{chunk-3WXMBAGN.js → chunk-UDYEUTJC.js} +50 -50
  68. package/dist/chunk-UDYEUTJC.js.map +1 -0
  69. package/dist/{chunk-UGJZ3M4Q.js → chunk-VDLMWOQM.js} +55 -54
  70. package/dist/chunk-VDLMWOQM.js.map +1 -0
  71. package/dist/{chunk-QTA5I6FC.mjs → chunk-VZIUQE7B.mjs} +54 -64
  72. package/dist/chunk-VZIUQE7B.mjs.map +1 -0
  73. package/dist/chunk-WR55H7DH.mjs +934 -0
  74. package/dist/chunk-WR55H7DH.mjs.map +1 -0
  75. package/dist/{chunk-ZYVDDSAC.mjs → chunk-YRXDETBK.mjs} +6 -6
  76. package/dist/{chunk-ZYVDDSAC.mjs.map → chunk-YRXDETBK.mjs.map} +1 -1
  77. package/dist/{chunk-VDLAZR7S.mjs → chunk-ZYRL3WER.mjs} +5 -4
  78. package/dist/chunk-ZYRL3WER.mjs.map +1 -0
  79. package/dist/index.js +826 -825
  80. package/dist/index.mjs +4 -3
  81. package/dist/platform/admin/index.js +13 -12
  82. package/dist/platform/admin/index.mjs +7 -6
  83. package/dist/platform/agents-workspace.js +10 -9
  84. package/dist/platform/agents-workspace.mjs +9 -8
  85. package/dist/platform/app-shell.js +6 -5
  86. package/dist/platform/app-shell.mjs +5 -4
  87. package/dist/platform/auth/index.js +30 -29
  88. package/dist/platform/auth/index.mjs +7 -6
  89. package/dist/platform/billing/index.js +6 -5
  90. package/dist/platform/billing/index.mjs +5 -4
  91. package/dist/platform/impersonation/index.js +6 -5
  92. package/dist/platform/impersonation/index.mjs +5 -4
  93. package/dist/platform/index.js +87 -93
  94. package/dist/platform/index.js.map +1 -1
  95. package/dist/platform/index.mjs +23 -29
  96. package/dist/platform/index.mjs.map +1 -1
  97. package/dist/platform/pages/index.js +476 -470
  98. package/dist/platform/pages/index.js.map +1 -1
  99. package/dist/platform/pages/index.mjs +326 -320
  100. package/dist/platform/pages/index.mjs.map +1 -1
  101. package/dist/platform/settings/index.js +10 -9
  102. package/dist/platform/settings/index.mjs +9 -8
  103. package/dist/platform/workflow-canvas-shell.js +8 -7
  104. package/dist/platform/workflow-canvas-shell.mjs +7 -6
  105. package/package.json +1 -1
  106. package/dist/chunk-3WXMBAGN.js.map +0 -1
  107. package/dist/chunk-4OFG6POC.mjs.map +0 -1
  108. package/dist/chunk-7LILNZMR.mjs.map +0 -1
  109. package/dist/chunk-AMYQSPQC.js.map +0 -1
  110. package/dist/chunk-DYWSG42B.mjs.map +0 -1
  111. package/dist/chunk-ESLKQJQS.mjs.map +0 -1
  112. package/dist/chunk-GCYYGSHU.js.map +0 -1
  113. package/dist/chunk-HGWVJ3VB.mjs.map +0 -1
  114. package/dist/chunk-IHHGT3LP.mjs.map +0 -1
  115. package/dist/chunk-LVK7VXW7.js.map +0 -1
  116. package/dist/chunk-MRRFDIUQ.mjs.map +0 -1
  117. package/dist/chunk-NJZIE4EH.js.map +0 -1
  118. package/dist/chunk-OZNTQROP.mjs.map +0 -1
  119. package/dist/chunk-P4YYEM4B.js.map +0 -1
  120. package/dist/chunk-P5F257N3.js.map +0 -1
  121. package/dist/chunk-QTA5I6FC.mjs.map +0 -1
  122. package/dist/chunk-S7AV6XEY.js.map +0 -1
  123. package/dist/chunk-UGJZ3M4Q.js.map +0 -1
  124. package/dist/chunk-UWSMHKOF.js.map +0 -1
  125. package/dist/chunk-VDLAZR7S.mjs.map +0 -1
  126. package/dist/chunk-VPOIX2DY.js.map +0 -1
  127. package/dist/chunk-VUAGVZJM.mjs.map +0 -1
  128. package/dist/chunk-W5YCZOXO.js.map +0 -1
  129. package/dist/chunk-WEZ722BS.mjs.map +0 -1
  130. package/dist/chunk-XTXLRQ3H.mjs.map +0 -1
  131. package/dist/chunk-YTE6WCBX.js.map +0 -1
@@ -2,19 +2,20 @@
2
2
  'use strict';
3
3
 
4
4
  var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
5
- var chunk3WXMBAGN_js = require('../../chunk-3WXMBAGN.js');
6
- var chunkLVK7VXW7_js = require('../../chunk-LVK7VXW7.js');
7
- var chunkUWSMHKOF_js = require('../../chunk-UWSMHKOF.js');
5
+ var chunkUDYEUTJC_js = require('../../chunk-UDYEUTJC.js');
6
+ var chunkDMPBNWJB_js = require('../../chunk-DMPBNWJB.js');
7
+ var chunkFUHNEP3Y_js = require('../../chunk-FUHNEP3Y.js');
8
8
  require('../../chunk-55H6WZQP.js');
9
9
  require('../../chunk-DJDZIRM6.js');
10
- require('../../chunk-S7AV6XEY.js');
11
- var chunkGCYYGSHU_js = require('../../chunk-GCYYGSHU.js');
12
- require('../../chunk-UZ3CMNUJ.js');
10
+ require('../../chunk-RWYG7QHP.js');
11
+ var chunkR4EKPXX3_js = require('../../chunk-R4EKPXX3.js');
13
12
  require('../../chunk-YXN2K77G.js');
14
- var chunkS7KHTUHA_js = require('../../chunk-S7KHTUHA.js');
15
13
  require('../../chunk-SY4MUT5V.js');
16
14
  require('../../chunk-2OZZH2IO.js');
17
- require('../../chunk-P4YYEM4B.js');
15
+ require('../../chunk-EZQ2D47U.js');
16
+ var chunkBHOT22QL_js = require('../../chunk-BHOT22QL.js');
17
+ require('../../chunk-UZ3CMNUJ.js');
18
+ var chunkS7KHTUHA_js = require('../../chunk-S7KHTUHA.js');
18
19
  require('../../chunk-72SWXOD5.js');
19
20
  var react = require('react');
20
21
  var outline = require('@heroicons/react/24/outline');
@@ -26,36 +27,37 @@ function AgentsModelsPageView({ labels, models, loading }) {
26
27
  const filteredModels = searchTerm.trim() ? allModels.filter((model) => model.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allModels;
27
28
  const isEmpty = allModels.length === 0;
28
29
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
29
- chunkGCYYGSHU_js.HeroSection,
30
+ chunkR4EKPXX3_js.HeroSection,
30
31
  {
31
32
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
32
33
  label: labels.title,
33
34
  title: labels.title,
34
35
  subtitle: labels.subtitle,
35
- gradient: "from-emerald-500 to-teal-700",
36
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
37
- chunkGCYYGSHU_js.SearchBar,
38
- {
39
- searchTerm,
40
- onSearchChange: setSearchTerm,
41
- placeholder: labels.searchPlaceholder ?? labels.title,
42
- noBorder: true
43
- }
44
- ) : void 0
36
+ gradient: "from-emerald-500 to-teal-700"
45
37
  }
46
38
  );
47
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsxRuntime.jsx(
48
- chunkGCYYGSHU_js.EntityCard,
49
- {
50
- accentGradient: "from-emerald-500 to-teal-700",
51
- 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" }) }),
52
- title: model.name,
53
- subtitle: `${labels.provider}: ${model.provider}`,
54
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
55
- },
56
- model.id
57
- )) });
58
- return /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content });
39
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
40
+ /* @__PURE__ */ jsxRuntime.jsx(
41
+ chunkR4EKPXX3_js.SearchBar,
42
+ {
43
+ searchTerm,
44
+ onSearchChange: setSearchTerm,
45
+ placeholder: labels.searchPlaceholder ?? labels.title
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsxRuntime.jsx(
49
+ chunkR4EKPXX3_js.EntityCard,
50
+ {
51
+ accentGradient: "from-emerald-500 to-teal-700",
52
+ icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-emerald-500/10 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-6 w-6" }) }),
53
+ title: model.name,
54
+ subtitle: `${labels.provider}: ${model.provider}`,
55
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: model.enabled ? "emerald" : "zinc", children: model.enabled ? labels.enabled : labels.disabled })
56
+ },
57
+ model.id
58
+ )) })
59
+ ] });
60
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content });
59
61
  }
60
62
  function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpdate, onDelete }) {
61
63
  const [editing, setEditing] = react.useState(null);
@@ -66,7 +68,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
66
68
  const filteredAgents = searchTerm.trim() ? allAgents.filter((agent) => String(agent.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allAgents;
67
69
  const isEmpty = allAgents.length === 0;
68
70
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
69
- chunkGCYYGSHU_js.HeroSection,
71
+ chunkR4EKPXX3_js.HeroSection,
70
72
  {
71
73
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
72
74
  label: labels.title,
@@ -74,7 +76,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
74
76
  subtitle: labels.subtitle,
75
77
  gradient: "from-violet-500 to-indigo-700",
76
78
  toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
77
- chunkGCYYGSHU_js.SearchBar,
79
+ chunkR4EKPXX3_js.SearchBar,
78
80
  {
79
81
  searchTerm,
80
82
  onSearchChange: setSearchTerm,
@@ -83,7 +85,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
83
85
  }
84
86
  ) : void 0,
85
87
  actions: /* @__PURE__ */ jsxRuntime.jsx(
86
- chunkGCYYGSHU_js.CreateActionButton,
88
+ chunkR4EKPXX3_js.CreateActionButton,
87
89
  {
88
90
  mode: "desktop",
89
91
  label: labels.addAgent,
@@ -94,7 +96,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
94
96
  }
95
97
  );
96
98
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
97
- chunkGCYYGSHU_js.CreateActionButton,
99
+ chunkR4EKPXX3_js.CreateActionButton,
98
100
  {
99
101
  mode: "mobile",
100
102
  label: labels.addAgent,
@@ -102,23 +104,23 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
102
104
  accent: "violet"
103
105
  }
104
106
  );
105
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_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) => {
107
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_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) => {
106
108
  const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
107
109
  return /* @__PURE__ */ jsxRuntime.jsx(
108
- chunkGCYYGSHU_js.EntityCard,
110
+ chunkR4EKPXX3_js.EntityCard,
109
111
  {
110
112
  accentGradient: "from-violet-500 to-indigo-700",
111
113
  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" }) }),
112
114
  title: String(agent.name ?? ""),
113
115
  subtitle: String(modelRecord?.name ?? agent.modelId ?? ""),
114
- status: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.Badge, { color: "emerald", children: [
116
+ status: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
115
117
  "v",
116
118
  agent.activePromptVersion
117
119
  ] }) : null,
118
120
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
119
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(agent), children: labels.edit }),
121
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(agent), children: labels.edit }),
120
122
  /* @__PURE__ */ jsxRuntime.jsx(
121
- chunkGCYYGSHU_js.Button,
123
+ chunkBHOT22QL_js.Button,
122
124
  {
123
125
  type: "button",
124
126
  size: "sm",
@@ -142,7 +144,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
142
144
  );
143
145
  }) });
144
146
  const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
145
- chunkGCYYGSHU_js.GlassModal,
147
+ chunkR4EKPXX3_js.GlassModal,
146
148
  {
147
149
  open: true,
148
150
  onClose: () => {
@@ -165,18 +167,18 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
165
167
  outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
166
168
  });
167
169
  },
168
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
169
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
170
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
171
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
172
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
173
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
174
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
170
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
171
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
172
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
173
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
174
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
175
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
176
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
175
177
  ] })
176
178
  }
177
179
  );
178
180
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
179
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
181
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
180
182
  createOpen && renderForm({ title: labels.createTitle }, (input) => {
181
183
  onCreate(input);
182
184
  setCreateOpen(false);
@@ -234,24 +236,15 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
234
236
  }) : allPrompts;
235
237
  const isEmpty = allPrompts.length === 0;
236
238
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
237
- chunkGCYYGSHU_js.HeroSection,
239
+ chunkR4EKPXX3_js.HeroSection,
238
240
  {
239
241
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
240
242
  label: labels.title,
241
243
  title: labels.title,
242
244
  subtitle: labels.subtitle,
243
245
  gradient: "from-sky-500 to-blue-700",
244
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
245
- chunkGCYYGSHU_js.SearchBar,
246
- {
247
- searchTerm,
248
- onSearchChange: setSearchTerm,
249
- placeholder: labels.searchPlaceholder ?? labels.title,
250
- noBorder: true
251
- }
252
- ) : void 0,
253
- actions: /* @__PURE__ */ jsxRuntime.jsx(
254
- chunkGCYYGSHU_js.CreateActionButton,
246
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
247
+ chunkR4EKPXX3_js.CreateActionButton,
255
248
  {
256
249
  mode: "desktop",
257
250
  label: labels.addPrompt,
@@ -262,7 +255,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
262
255
  }
263
256
  );
264
257
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
265
- chunkGCYYGSHU_js.CreateActionButton,
258
+ chunkR4EKPXX3_js.CreateActionButton,
266
259
  {
267
260
  mode: "mobile",
268
261
  label: labels.addPrompt,
@@ -270,41 +263,51 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
270
263
  accent: "sky"
271
264
  }
272
265
  );
273
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredPrompts.map((prompt) => {
274
- const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
275
- const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
276
- return /* @__PURE__ */ jsxRuntime.jsx(
277
- chunkGCYYGSHU_js.EntityCard,
266
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
267
+ /* @__PURE__ */ jsxRuntime.jsx(
268
+ chunkR4EKPXX3_js.SearchBar,
278
269
  {
279
- accentGradient: "from-sky-500 to-blue-700",
280
- 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" }) }),
281
- title: agentName,
282
- subtitle: `${prompt.locale} \xB7 v${prompt.version}`,
283
- status: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: "emerald", children: labels.isActive }) : null,
284
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
285
- !prompt.isActive && /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(prompt), children: labels.activate }),
286
- /* @__PURE__ */ jsxRuntime.jsx(
287
- chunkGCYYGSHU_js.Button,
288
- {
289
- type: "button",
290
- size: "sm",
291
- color: "rose",
292
- onClick: () => {
293
- if (window.confirm(labels.deleteConfirm)) onDelete(prompt);
294
- },
295
- children: labels.delete
296
- }
297
- )
298
- ] }),
299
- children: prompt.prompt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-3 text-xs text-slate-500 dark:text-slate-400", children: prompt.prompt })
300
- },
301
- key
302
- );
303
- }) });
270
+ searchTerm,
271
+ onSearchChange: setSearchTerm,
272
+ placeholder: labels.searchPlaceholder ?? labels.title
273
+ }
274
+ ),
275
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredPrompts.map((prompt) => {
276
+ const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
277
+ const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
278
+ return /* @__PURE__ */ jsxRuntime.jsx(
279
+ chunkR4EKPXX3_js.EntityCard,
280
+ {
281
+ accentGradient: "from-sky-500 to-blue-700",
282
+ 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" }) }),
283
+ title: agentName,
284
+ subtitle: `${prompt.locale} \xB7 v${prompt.version}`,
285
+ status: prompt.isActive ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "emerald", children: labels.isActive }) : null,
286
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
287
+ !prompt.isActive && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onActivate(prompt), children: labels.activate }),
288
+ /* @__PURE__ */ jsxRuntime.jsx(
289
+ chunkBHOT22QL_js.Button,
290
+ {
291
+ type: "button",
292
+ size: "sm",
293
+ color: "rose",
294
+ onClick: () => {
295
+ if (window.confirm(labels.deleteConfirm)) onDelete(prompt);
296
+ },
297
+ children: labels.delete
298
+ }
299
+ )
300
+ ] }),
301
+ children: prompt.prompt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-3 text-xs text-slate-500 dark:text-slate-400", children: prompt.prompt })
302
+ },
303
+ key
304
+ );
305
+ }) })
306
+ ] });
304
307
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
305
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
308
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
306
309
  /* @__PURE__ */ jsxRuntime.jsx(
307
- chunkGCYYGSHU_js.GlassModal,
310
+ chunkR4EKPXX3_js.GlassModal,
308
311
  {
309
312
  open: createOpen,
310
313
  onClose: () => setCreateOpen(false),
@@ -328,11 +331,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
328
331
  });
329
332
  setCreateOpen(false);
330
333
  },
331
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
332
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
333
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
334
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
335
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
336
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
334
337
  /* @__PURE__ */ jsxRuntime.jsx(
335
- chunkGCYYGSHU_js.FormSelect,
338
+ chunkR4EKPXX3_js.FormSelect,
336
339
  {
337
340
  name: "isActive",
338
341
  label: labels.isActive,
@@ -340,10 +343,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
340
343
  defaultValue: "true"
341
344
  }
342
345
  ),
343
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "reason", label: labels.reason }),
344
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
345
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
346
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
346
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "reason", label: labels.reason }),
347
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
348
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
349
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
347
350
  ] })
348
351
  }
349
352
  )
@@ -378,24 +381,15 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
378
381
  const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
379
382
  const isEmpty = allTools.length === 0;
380
383
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
381
- chunkGCYYGSHU_js.HeroSection,
384
+ chunkR4EKPXX3_js.HeroSection,
382
385
  {
383
386
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
384
387
  label: labels.title,
385
388
  title: labels.title,
386
389
  subtitle: labels.subtitle,
387
390
  gradient: "from-amber-500 to-orange-700",
388
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
389
- chunkGCYYGSHU_js.SearchBar,
390
- {
391
- searchTerm,
392
- onSearchChange: setSearchTerm,
393
- placeholder: labels.searchPlaceholder ?? labels.title,
394
- noBorder: true
395
- }
396
- ) : void 0,
397
- actions: /* @__PURE__ */ jsxRuntime.jsx(
398
- chunkGCYYGSHU_js.CreateActionButton,
391
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
392
+ chunkR4EKPXX3_js.CreateActionButton,
399
393
  {
400
394
  mode: "desktop",
401
395
  label: labels.addTool,
@@ -406,7 +400,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
406
400
  }
407
401
  );
408
402
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
409
- chunkGCYYGSHU_js.CreateActionButton,
403
+ chunkR4EKPXX3_js.CreateActionButton,
410
404
  {
411
405
  mode: "mobile",
412
406
  label: labels.addTool,
@@ -414,35 +408,45 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
414
408
  accent: "amber"
415
409
  }
416
410
  );
417
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsx(
418
- chunkGCYYGSHU_js.EntityCard,
419
- {
420
- accentGradient: "from-amber-500 to-orange-700",
421
- 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" }) }),
422
- title: tool.name,
423
- subtitle: toolTypeLabel(tool),
424
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: tool.enabled ? "emerald" : "zinc", children: tool.enabled ? labels.enabled : labels.disabled }),
425
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
426
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(tool), children: labels.edit }),
427
- /* @__PURE__ */ jsxRuntime.jsx(
428
- chunkGCYYGSHU_js.Button,
429
- {
430
- type: "button",
431
- size: "sm",
432
- color: "rose",
433
- onClick: () => {
434
- if (window.confirm(labels.deleteConfirm)) onDelete(tool);
435
- },
436
- children: labels.delete
437
- }
438
- )
439
- ] }),
440
- children: tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: tool.description })
441
- },
442
- tool.agentToolId
443
- )) });
411
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
412
+ /* @__PURE__ */ jsxRuntime.jsx(
413
+ chunkR4EKPXX3_js.SearchBar,
414
+ {
415
+ searchTerm,
416
+ onSearchChange: setSearchTerm,
417
+ placeholder: labels.searchPlaceholder ?? labels.title
418
+ }
419
+ ),
420
+ /* @__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(
421
+ chunkR4EKPXX3_js.EntityCard,
422
+ {
423
+ accentGradient: "from-amber-500 to-orange-700",
424
+ 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" }) }),
425
+ title: tool.name,
426
+ subtitle: toolTypeLabel(tool),
427
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: tool.enabled ? "emerald" : "zinc", children: tool.enabled ? labels.enabled : labels.disabled }),
428
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
429
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(tool), children: labels.edit }),
430
+ /* @__PURE__ */ jsxRuntime.jsx(
431
+ chunkBHOT22QL_js.Button,
432
+ {
433
+ type: "button",
434
+ size: "sm",
435
+ color: "rose",
436
+ onClick: () => {
437
+ if (window.confirm(labels.deleteConfirm)) onDelete(tool);
438
+ },
439
+ children: labels.delete
440
+ }
441
+ )
442
+ ] }),
443
+ children: tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: tool.description })
444
+ },
445
+ tool.agentToolId
446
+ )) })
447
+ ] });
444
448
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
445
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
449
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
446
450
  createOpen && /* @__PURE__ */ jsxRuntime.jsx(
447
451
  ToolEditor,
448
452
  {
@@ -500,7 +504,7 @@ function ToolEditor({
500
504
  setValue((v) => ({ ...v, [key]: next }));
501
505
  };
502
506
  return /* @__PURE__ */ jsxRuntime.jsx(
503
- chunkGCYYGSHU_js.GlassModal,
507
+ chunkR4EKPXX3_js.GlassModal,
504
508
  {
505
509
  open: true,
506
510
  onClose,
@@ -513,9 +517,9 @@ function ToolEditor({
513
517
  handleSubmit();
514
518
  },
515
519
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
516
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
520
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
517
521
  /* @__PURE__ */ jsxRuntime.jsx(
518
- chunkGCYYGSHU_js.FormInput,
522
+ chunkR4EKPXX3_js.FormInput,
519
523
  {
520
524
  label: "Name",
521
525
  required: true,
@@ -525,7 +529,7 @@ function ToolEditor({
525
529
  }
526
530
  ),
527
531
  /* @__PURE__ */ jsxRuntime.jsx(
528
- chunkGCYYGSHU_js.FormSelect,
532
+ chunkR4EKPXX3_js.FormSelect,
529
533
  {
530
534
  label: "Tool type",
531
535
  value: value.toolType,
@@ -535,7 +539,7 @@ function ToolEditor({
535
539
  }
536
540
  ),
537
541
  /* @__PURE__ */ jsxRuntime.jsx(
538
- chunkGCYYGSHU_js.FormSelect,
542
+ chunkR4EKPXX3_js.FormSelect,
539
543
  {
540
544
  label: "Enabled",
541
545
  value: value.enabled ? "true" : "false",
@@ -544,7 +548,7 @@ function ToolEditor({
544
548
  }
545
549
  ),
546
550
  /* @__PURE__ */ jsxRuntime.jsx(
547
- chunkGCYYGSHU_js.FormInput,
551
+ chunkR4EKPXX3_js.FormInput,
548
552
  {
549
553
  label: "Icon (optional)",
550
554
  value: value.icon ?? "",
@@ -554,7 +558,7 @@ function ToolEditor({
554
558
  )
555
559
  ] }),
556
560
  /* @__PURE__ */ jsxRuntime.jsx(
557
- chunkGCYYGSHU_js.FormTextarea,
561
+ chunkR4EKPXX3_js.FormTextarea,
558
562
  {
559
563
  label: "Description",
560
564
  rows: 2,
@@ -602,7 +606,7 @@ function ParametersEditor({
602
606
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
603
607
  parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
604
608
  /* @__PURE__ */ jsxRuntime.jsx(
605
- chunkGCYYGSHU_js.FormInput,
609
+ chunkR4EKPXX3_js.FormInput,
606
610
  {
607
611
  label: "Name",
608
612
  value: param.name,
@@ -611,7 +615,7 @@ function ParametersEditor({
611
615
  }
612
616
  ),
613
617
  /* @__PURE__ */ jsxRuntime.jsx(
614
- chunkGCYYGSHU_js.FormSelect,
618
+ chunkR4EKPXX3_js.FormSelect,
615
619
  {
616
620
  label: "Type",
617
621
  value: param.type,
@@ -620,7 +624,7 @@ function ParametersEditor({
620
624
  }
621
625
  ),
622
626
  /* @__PURE__ */ jsxRuntime.jsx(
623
- chunkGCYYGSHU_js.FormInput,
627
+ chunkR4EKPXX3_js.FormInput,
624
628
  {
625
629
  label: "Description",
626
630
  value: param.description,
@@ -639,9 +643,9 @@ function ParametersEditor({
639
643
  ),
640
644
  "Required"
641
645
  ] }),
642
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
646
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
643
647
  ] }, index)),
644
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add parameter" })
648
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add parameter" })
645
649
  ] })
646
650
  ] });
647
651
  }
@@ -654,9 +658,9 @@ function HandlerConfigEditor({
654
658
  if (toolType === "http") {
655
659
  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: [
656
660
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "HTTP handler" }),
657
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
661
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
658
662
  /* @__PURE__ */ jsxRuntime.jsx(
659
- chunkGCYYGSHU_js.FormSelect,
663
+ chunkR4EKPXX3_js.FormSelect,
660
664
  {
661
665
  label: "Method",
662
666
  value: stringProp(config, "method", "GET"),
@@ -665,7 +669,7 @@ function HandlerConfigEditor({
665
669
  }
666
670
  ),
667
671
  /* @__PURE__ */ jsxRuntime.jsx(
668
- chunkGCYYGSHU_js.FormInput,
672
+ chunkR4EKPXX3_js.FormInput,
669
673
  {
670
674
  label: "URL template",
671
675
  value: stringProp(config, "url"),
@@ -675,7 +679,7 @@ function HandlerConfigEditor({
675
679
  )
676
680
  ] }),
677
681
  /* @__PURE__ */ jsxRuntime.jsx(
678
- chunkGCYYGSHU_js.FormTextarea,
682
+ chunkR4EKPXX3_js.FormTextarea,
679
683
  {
680
684
  label: "Headers (JSON)",
681
685
  rows: 3,
@@ -685,7 +689,7 @@ function HandlerConfigEditor({
685
689
  }
686
690
  ),
687
691
  /* @__PURE__ */ jsxRuntime.jsx(
688
- chunkGCYYGSHU_js.FormTextarea,
692
+ chunkR4EKPXX3_js.FormTextarea,
689
693
  {
690
694
  label: "Body template",
691
695
  rows: 3,
@@ -700,7 +704,7 @@ function HandlerConfigEditor({
700
704
  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: [
701
705
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Function handler" }),
702
706
  /* @__PURE__ */ jsxRuntime.jsx(
703
- chunkGCYYGSHU_js.FormInput,
707
+ chunkR4EKPXX3_js.FormInput,
704
708
  {
705
709
  label: "Implementation key",
706
710
  value: stringProp(config, "implementationKey"),
@@ -714,9 +718,9 @@ function HandlerConfigEditor({
714
718
  if (toolType === "database_query") {
715
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: [
716
720
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Database query handler" }),
717
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
721
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
718
722
  /* @__PURE__ */ jsxRuntime.jsx(
719
- chunkGCYYGSHU_js.FormInput,
723
+ chunkR4EKPXX3_js.FormInput,
720
724
  {
721
725
  label: "Datasource ID",
722
726
  value: stringProp(config, "datasourceId"),
@@ -725,7 +729,7 @@ function HandlerConfigEditor({
725
729
  }
726
730
  ),
727
731
  /* @__PURE__ */ jsxRuntime.jsx(
728
- chunkGCYYGSHU_js.FormInput,
732
+ chunkR4EKPXX3_js.FormInput,
729
733
  {
730
734
  label: "Max rows",
731
735
  type: "number",
@@ -735,7 +739,7 @@ function HandlerConfigEditor({
735
739
  )
736
740
  ] }),
737
741
  /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkGCYYGSHU_js.FormTextarea,
742
+ chunkR4EKPXX3_js.FormTextarea,
739
743
  {
740
744
  label: "Query template",
741
745
  rows: 4,
@@ -751,7 +755,7 @@ function HandlerConfigEditor({
751
755
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
752
756
  /* @__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." }),
753
757
  /* @__PURE__ */ jsxRuntime.jsx(
754
- chunkGCYYGSHU_js.FormSelect,
758
+ chunkR4EKPXX3_js.FormSelect,
755
759
  {
756
760
  label: "Language",
757
761
  value: stringProp(config, "language", "javascript"),
@@ -763,7 +767,7 @@ function HandlerConfigEditor({
763
767
  }
764
768
  ),
765
769
  /* @__PURE__ */ jsxRuntime.jsx(
766
- chunkGCYYGSHU_js.FormTextarea,
770
+ chunkR4EKPXX3_js.FormTextarea,
767
771
  {
768
772
  label: "Code",
769
773
  rows: 6,
@@ -776,9 +780,9 @@ function HandlerConfigEditor({
776
780
  }
777
781
  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: [
778
782
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "API call handler" }),
779
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
783
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
780
784
  /* @__PURE__ */ jsxRuntime.jsx(
781
- chunkGCYYGSHU_js.FormInput,
785
+ chunkR4EKPXX3_js.FormInput,
782
786
  {
783
787
  label: "URL",
784
788
  value: stringProp(config, "url"),
@@ -786,7 +790,7 @@ function HandlerConfigEditor({
786
790
  }
787
791
  ),
788
792
  /* @__PURE__ */ jsxRuntime.jsx(
789
- chunkGCYYGSHU_js.FormSelect,
793
+ chunkR4EKPXX3_js.FormSelect,
790
794
  {
791
795
  label: "Auth",
792
796
  value: stringProp(config, "authType", "bearer"),
@@ -800,7 +804,7 @@ function HandlerConfigEditor({
800
804
  }
801
805
  ),
802
806
  /* @__PURE__ */ jsxRuntime.jsx(
803
- chunkGCYYGSHU_js.FormInput,
807
+ chunkR4EKPXX3_js.FormInput,
804
808
  {
805
809
  label: "Credential secret id",
806
810
  value: stringProp(config, "credentialRef"),
@@ -933,24 +937,15 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
933
937
  const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
934
938
  const isEmpty = allRules.length === 0;
935
939
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
936
- chunkGCYYGSHU_js.HeroSection,
940
+ chunkR4EKPXX3_js.HeroSection,
937
941
  {
938
942
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
939
943
  label: labels.title,
940
944
  title: labels.title,
941
945
  subtitle: labels.subtitle,
942
946
  gradient: "from-fuchsia-500 to-purple-700",
943
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
944
- chunkGCYYGSHU_js.SearchBar,
945
- {
946
- searchTerm,
947
- onSearchChange: setSearchTerm,
948
- placeholder: labels.searchPlaceholder ?? labels.title,
949
- noBorder: true
950
- }
951
- ) : void 0,
952
- actions: /* @__PURE__ */ jsxRuntime.jsx(
953
- chunkGCYYGSHU_js.CreateActionButton,
947
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
948
+ chunkR4EKPXX3_js.CreateActionButton,
954
949
  {
955
950
  mode: "desktop",
956
951
  label: labels.addRule,
@@ -961,7 +956,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
961
956
  }
962
957
  );
963
958
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
964
- chunkGCYYGSHU_js.CreateActionButton,
959
+ chunkR4EKPXX3_js.CreateActionButton,
965
960
  {
966
961
  mode: "mobile",
967
962
  label: labels.addRule,
@@ -969,41 +964,51 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
969
964
  accent: "fuchsia"
970
965
  }
971
966
  );
972
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
973
- chunkGCYYGSHU_js.EntityCard,
974
- {
975
- accentGradient: "from-fuchsia-500 to-purple-700",
976
- 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" }) }),
977
- title: rule.name,
978
- subtitle: `${labels.order}: ${rule.order ?? 0}`,
979
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
980
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
981
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
982
- /* @__PURE__ */ jsxRuntime.jsx(
983
- chunkGCYYGSHU_js.Button,
984
- {
985
- type: "button",
986
- size: "sm",
987
- color: "rose",
988
- onClick: () => {
989
- if (window.confirm(labels.deleteConfirm)) onDelete(rule);
990
- },
991
- children: labels.delete
992
- }
993
- )
994
- ] }),
995
- children: rule.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
996
- },
997
- rule.ruleId
998
- )) });
967
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
968
+ /* @__PURE__ */ jsxRuntime.jsx(
969
+ chunkR4EKPXX3_js.SearchBar,
970
+ {
971
+ searchTerm,
972
+ onSearchChange: setSearchTerm,
973
+ placeholder: labels.searchPlaceholder ?? labels.title
974
+ }
975
+ ),
976
+ /* @__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(
977
+ chunkR4EKPXX3_js.EntityCard,
978
+ {
979
+ accentGradient: "from-fuchsia-500 to-purple-700",
980
+ 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" }) }),
981
+ title: rule.name,
982
+ subtitle: `${labels.order}: ${rule.order ?? 0}`,
983
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
984
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
985
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
986
+ /* @__PURE__ */ jsxRuntime.jsx(
987
+ chunkBHOT22QL_js.Button,
988
+ {
989
+ type: "button",
990
+ size: "sm",
991
+ color: "rose",
992
+ onClick: () => {
993
+ if (window.confirm(labels.deleteConfirm)) onDelete(rule);
994
+ },
995
+ children: labels.delete
996
+ }
997
+ )
998
+ ] }),
999
+ children: rule.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1000
+ },
1001
+ rule.ruleId
1002
+ )) })
1003
+ ] });
999
1004
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1000
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
1005
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
1001
1006
  createOpen && /* @__PURE__ */ jsxRuntime.jsx(
1002
1007
  RuleEditor,
1003
1008
  {
1004
1009
  title: labels.createTitle,
1005
1010
  saveLabel: labels.save,
1006
- initial: chunkUWSMHKOF_js.defaultRuleForm(),
1011
+ initial: chunkFUHNEP3Y_js.defaultRuleForm(),
1007
1012
  onClose: () => setCreateOpen(false),
1008
1013
  onSubmit: (value) => {
1009
1014
  onCreate(value);
@@ -1035,7 +1040,7 @@ function RuleEditor({
1035
1040
  }) {
1036
1041
  const [value, setValue] = react.useState(initial);
1037
1042
  return /* @__PURE__ */ jsxRuntime.jsx(
1038
- chunkGCYYGSHU_js.GlassModal,
1043
+ chunkR4EKPXX3_js.GlassModal,
1039
1044
  {
1040
1045
  open: true,
1041
1046
  onClose,
@@ -1047,12 +1052,12 @@ function RuleEditor({
1047
1052
  event.preventDefault();
1048
1053
  onSubmit(value);
1049
1054
  },
1050
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkUWSMHKOF_js.RuleForm, { value, onChange: setValue })
1055
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkFUHNEP3Y_js.RuleForm, { value, onChange: setValue })
1051
1056
  }
1052
1057
  );
1053
1058
  }
1054
1059
  function ruleToFormValue(rule) {
1055
- const base = chunkUWSMHKOF_js.defaultRuleForm();
1060
+ const base = chunkFUHNEP3Y_js.defaultRuleForm();
1056
1061
  const rawCondition = rule.condition ?? rule.conditions;
1057
1062
  const rawAction = pickAction(rule);
1058
1063
  return {
@@ -1183,7 +1188,7 @@ var SAMPLE_DATASOURCES = [
1183
1188
  ];
1184
1189
  function getDialectLabel(dialect) {
1185
1190
  if (!dialect) return "Unknown";
1186
- for (const category of chunkLVK7VXW7_js.DIALECT_CATEGORIES) {
1191
+ for (const category of chunkDMPBNWJB_js.DIALECT_CATEGORIES) {
1187
1192
  const found = category.dialects.find((d) => d.value === dialect);
1188
1193
  if (found) return found.label;
1189
1194
  }
@@ -1191,12 +1196,12 @@ function getDialectLabel(dialect) {
1191
1196
  }
1192
1197
  function getDialectGradient(dialect) {
1193
1198
  if (!dialect) return "from-gray-400 to-gray-500";
1194
- const category = chunkLVK7VXW7_js.findCategory(dialect);
1199
+ const category = chunkDMPBNWJB_js.findCategory(dialect);
1195
1200
  return category?.gradient ?? "from-gray-400 to-gray-500";
1196
1201
  }
1197
1202
  function getDialectIcon(dialect) {
1198
1203
  if (!dialect) return outline.CircleStackIcon;
1199
- const category = chunkLVK7VXW7_js.findCategory(dialect);
1204
+ const category = chunkDMPBNWJB_js.findCategory(dialect);
1200
1205
  return category?.icon ?? outline.CircleStackIcon;
1201
1206
  }
1202
1207
  var DIALECT_LOGO = {
@@ -1266,24 +1271,15 @@ function DatasourcesPageView({
1266
1271
  }
1267
1272
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1268
1273
  /* @__PURE__ */ jsxRuntime.jsx(
1269
- chunkGCYYGSHU_js.HeroSection,
1274
+ chunkR4EKPXX3_js.HeroSection,
1270
1275
  {
1271
1276
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
1272
1277
  label: labels.title,
1273
1278
  title: labels.title,
1274
1279
  subtitle: labels.subtitle,
1275
1280
  gradient: "from-amber-500 to-orange-600",
1276
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1277
- chunkGCYYGSHU_js.SearchBar,
1278
- {
1279
- searchTerm,
1280
- onSearchChange: setSearchTerm,
1281
- placeholder: labels.searchPlaceholder ?? labels.title,
1282
- noBorder: true
1283
- }
1284
- ) : void 0,
1285
- actions: /* @__PURE__ */ jsxRuntime.jsx(
1286
- chunkGCYYGSHU_js.CreateActionButton,
1281
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1282
+ chunkR4EKPXX3_js.CreateActionButton,
1287
1283
  {
1288
1284
  mode: "desktop",
1289
1285
  label: labels.addDatasource,
@@ -1294,7 +1290,7 @@ function DatasourcesPageView({
1294
1290
  }
1295
1291
  ),
1296
1292
  /* @__PURE__ */ jsxRuntime.jsx(
1297
- chunkGCYYGSHU_js.CreateActionButton,
1293
+ chunkR4EKPXX3_js.CreateActionButton,
1298
1294
  {
1299
1295
  mode: "mobile",
1300
1296
  label: labels.addDatasource,
@@ -1302,8 +1298,16 @@ function DatasourcesPageView({
1302
1298
  accent: "amber"
1303
1299
  }
1304
1300
  ),
1301
+ !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1302
+ chunkR4EKPXX3_js.SearchBar,
1303
+ {
1304
+ searchTerm,
1305
+ onSearchChange: setSearchTerm,
1306
+ placeholder: labels.searchPlaceholder ?? labels.title
1307
+ }
1308
+ ),
1305
1309
  isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1306
- chunkGCYYGSHU_js.PageEmptyState,
1310
+ chunkR4EKPXX3_js.PageEmptyState,
1307
1311
  {
1308
1312
  title: labels.emptyTitle,
1309
1313
  message: labels.emptyDescription,
@@ -1317,15 +1321,15 @@ function DatasourcesPageView({
1317
1321
  const logoSrc = getDialectLogoSrc(ds.dialect);
1318
1322
  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" }) });
1319
1323
  return /* @__PURE__ */ jsxRuntime.jsx(
1320
- chunkGCYYGSHU_js.EntityCard,
1324
+ chunkR4EKPXX3_js.EntityCard,
1321
1325
  {
1322
1326
  accentGradient: gradient,
1323
1327
  icon: iconElement,
1324
1328
  title: ds.name ?? ds.id,
1325
1329
  subtitle: dialectLabel,
1326
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: ds.enabled ? "emerald" : "zinc", children: ds.enabled ? labels.enabled : labels.disabled }),
1330
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: ds.enabled ? "emerald" : "zinc", children: ds.enabled ? labels.enabled : labels.disabled }),
1327
1331
  footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs text-slate-500 dark:text-slate-400", children: [
1328
- ds.readOnly && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-900/30 dark:text-blue-300", children: "Read-only" }),
1332
+ ds.readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "blue", size: "xs", children: "Read-only" }),
1329
1333
  ds.timeoutMs && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1330
1334
  ds.timeoutMs / 1e3,
1331
1335
  "s timeout"
@@ -1347,7 +1351,7 @@ function DatasourcesPageView({
1347
1351
  );
1348
1352
  }) }),
1349
1353
  /* @__PURE__ */ jsxRuntime.jsx(
1350
- chunkLVK7VXW7_js.DatasourceModal,
1354
+ chunkDMPBNWJB_js.DatasourceModal,
1351
1355
  {
1352
1356
  open: modalOpen,
1353
1357
  onClose: () => setModalOpen(false),
@@ -1362,7 +1366,7 @@ function DashboardPageView({ labels, appLogo }) {
1362
1366
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center mb-6", children: appLogo }),
1363
1367
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-base text-slate-600 dark:text-slate-300", children: labels.subtitle })
1364
1368
  ] });
1365
- return /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content: null });
1369
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content: null });
1366
1370
  }
1367
1371
  function AgentsIndexPageView({ labels }) {
1368
1372
  const Link = chunkS7KHTUHA_js.useLink();
@@ -1376,43 +1380,44 @@ function AgentsIndexPageView({ labels }) {
1376
1380
  const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
1377
1381
  const isEmpty = allTiles.length === 0;
1378
1382
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1379
- chunkGCYYGSHU_js.HeroSection,
1383
+ chunkR4EKPXX3_js.HeroSection,
1380
1384
  {
1381
1385
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
1382
1386
  label: labels.title,
1383
1387
  title: labels.title,
1384
1388
  subtitle: labels.subtitle,
1385
- gradient: "from-violet-500 to-indigo-700",
1386
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1387
- chunkGCYYGSHU_js.SearchBar,
1388
- {
1389
- searchTerm,
1390
- onSearchChange: setSearchTerm,
1391
- placeholder: labels.searchPlaceholder ?? labels.title,
1392
- noBorder: true
1393
- }
1394
- ) : void 0
1389
+ gradient: "from-violet-500 to-indigo-700"
1395
1390
  }
1396
1391
  );
1397
- const content = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1398
- const Icon = tile.icon;
1399
- return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1400
- chunkGCYYGSHU_js.EntityCard,
1392
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1393
+ !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1394
+ chunkR4EKPXX3_js.SearchBar,
1401
1395
  {
1402
- accentGradient: tile.gradient,
1403
- 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" }) }),
1404
- title: tile.title,
1405
- children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: tile.subtitle })
1396
+ searchTerm,
1397
+ onSearchChange: setSearchTerm,
1398
+ placeholder: labels.searchPlaceholder ?? labels.title
1406
1399
  }
1407
- ) }, tile.id);
1408
- }) });
1409
- return /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content });
1400
+ ),
1401
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1402
+ const Icon = tile.icon;
1403
+ return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1404
+ chunkR4EKPXX3_js.EntityCard,
1405
+ {
1406
+ accentGradient: tile.gradient,
1407
+ 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" }) }),
1408
+ title: tile.title,
1409
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: tile.subtitle })
1410
+ }
1411
+ ) }, tile.id);
1412
+ }) })
1413
+ ] });
1414
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content });
1410
1415
  }
1411
1416
  function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublish }) {
1412
1417
  const selectedWorkflow = workflows[0] ?? null;
1413
1418
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1414
1419
  /* @__PURE__ */ jsxRuntime.jsx(
1415
- chunkGCYYGSHU_js.SectionHeader,
1420
+ chunkR4EKPXX3_js.SectionHeader,
1416
1421
  {
1417
1422
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
1418
1423
  title: labels.title,
@@ -1421,9 +1426,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1421
1426
  }
1422
1427
  ),
1423
1428
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1424
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1429
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
1425
1430
  /* @__PURE__ */ jsxRuntime.jsx(
1426
- chunkGCYYGSHU_js.Form,
1431
+ chunkR4EKPXX3_js.Form,
1427
1432
  {
1428
1433
  onSubmit: (event) => {
1429
1434
  event.preventDefault();
@@ -1434,32 +1439,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1434
1439
  onCreate({ name, description });
1435
1440
  event.currentTarget.reset();
1436
1441
  },
1437
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
1438
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1439
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1440
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "submit", children: labels.create }) })
1442
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
1443
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
1444
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
1445
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
1441
1446
  ] })
1442
1447
  }
1443
1448
  )
1444
1449
  ] }),
1445
1450
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1446
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1447
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.Table, { children: [
1448
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.TableRow, { children: [
1449
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHeader, { children: labels.name }),
1450
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHeader, { children: labels.description }),
1451
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHeader, { children: labels.version }),
1452
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHeader, { children: labels.status }),
1453
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableHeader, { children: labels.actions })
1451
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
1452
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.Table, { children: [
1453
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.TableRow, { children: [
1454
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHeader, { children: labels.name }),
1455
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHeader, { children: labels.description }),
1456
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHeader, { children: labels.version }),
1457
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHeader, { children: labels.status }),
1458
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableHeader, { children: labels.actions })
1454
1459
  ] }) }),
1455
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.TableRow, { children: [
1456
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableCell, { children: workflow.name }),
1457
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableCell, { children: workflow.description }),
1458
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableCell, { children: String(workflow.version) }),
1459
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1460
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1460
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.TableRow, { children: [
1461
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableCell, { children: workflow.name }),
1462
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableCell, { children: workflow.description }),
1463
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableCell, { children: String(workflow.version) }),
1464
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
1465
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1461
1466
  /* @__PURE__ */ jsxRuntime.jsx(
1462
- chunkGCYYGSHU_js.Form,
1467
+ chunkR4EKPXX3_js.Form,
1463
1468
  {
1464
1469
  onSubmit: (event) => {
1465
1470
  event.preventDefault();
@@ -1469,17 +1474,17 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
1469
1474
  description: workflow.description ?? ""
1470
1475
  });
1471
1476
  },
1472
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1477
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
1473
1478
  }
1474
1479
  ),
1475
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
1480
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
1476
1481
  ] }) })
1477
1482
  ] }, workflow.id)) })
1478
1483
  ] })
1479
1484
  ] }),
1480
1485
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
1481
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1482
- 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(chunk3WXMBAGN_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Text, { children: labels.empty })
1486
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
1487
+ 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(chunkUDYEUTJC_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.Text, { children: labels.empty })
1483
1488
  ] })
1484
1489
  ] });
1485
1490
  }
@@ -1528,67 +1533,66 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1528
1533
  });
1529
1534
  const isEmpty = allRuns.length === 0;
1530
1535
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1531
- chunkGCYYGSHU_js.HeroSection,
1536
+ chunkR4EKPXX3_js.HeroSection,
1532
1537
  {
1533
1538
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1534
1539
  label: labels.title,
1535
1540
  title: labels.title,
1536
1541
  subtitle: labels.subtitle,
1537
1542
  gradient: "from-indigo-500 to-sky-700",
1538
- toolbar: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-end", children: [
1539
- !isEmpty && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1540
- chunkGCYYGSHU_js.SearchBar,
1541
- {
1542
- searchTerm,
1543
- onSearchChange: setSearchTerm,
1544
- placeholder: labels.searchPlaceholder ?? labels.title,
1545
- noBorder: true
1546
- }
1547
- ) }),
1548
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
1549
- chunkGCYYGSHU_js.FormSelect,
1550
- {
1551
- name: "statusFilter",
1552
- label: labels.filterStatus,
1553
- options: statusOptions,
1554
- value: statusFilter,
1555
- onValueChange: setStatusFilter
1556
- }
1557
- ) })
1558
- ] })
1543
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
1544
+ chunkR4EKPXX3_js.FormSelect,
1545
+ {
1546
+ name: "statusFilter",
1547
+ label: labels.filterStatus,
1548
+ options: statusOptions,
1549
+ value: statusFilter,
1550
+ onValueChange: setStatusFilter
1551
+ }
1552
+ ) })
1559
1553
  }
1560
1554
  );
1561
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRuns.map((run) => /* @__PURE__ */ jsxRuntime.jsxs(
1562
- chunkGCYYGSHU_js.EntityCard,
1563
- {
1564
- accentGradient: "from-indigo-500 to-sky-700",
1565
- 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" }) }),
1566
- title: run.id.slice(0, 8),
1567
- subtitle: `${labels.startedAt}: ${new Date(run.createdAt).toLocaleString()}`,
1568
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
1569
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1570
- onView && /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
1571
- onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
1572
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
1573
- run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
1574
- ] }),
1575
- children: [
1576
- /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
1577
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.duration }),
1578
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: chunk3T2WGL47_js.formatDurationMs(run.totalDurationMs) }),
1579
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.triggeredBy }),
1580
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right truncate", children: run.triggeredBy || "\u2014" })
1555
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1556
+ !isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
1557
+ chunkR4EKPXX3_js.SearchBar,
1558
+ {
1559
+ searchTerm,
1560
+ onSearchChange: setSearchTerm,
1561
+ placeholder: labels.searchPlaceholder ?? labels.title
1562
+ }
1563
+ ),
1564
+ /* @__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(
1565
+ chunkR4EKPXX3_js.EntityCard,
1566
+ {
1567
+ accentGradient: "from-indigo-500 to-sky-700",
1568
+ 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" }) }),
1569
+ title: run.id.slice(0, 8),
1570
+ subtitle: `${labels.startedAt}: ${new Date(run.createdAt).toLocaleString()}`,
1571
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: BADGE_COLOR[run.status] ?? "zinc", children: statusLabelFor(run.status) }),
1572
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1573
+ onView && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onView(run), children: labels.view }),
1574
+ onViewTimeline && labels.timeline && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onViewTimeline(run), children: labels.timeline }),
1575
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onReplay(run), children: labels.replay }),
1576
+ run.status === "running" && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "rose", onClick: () => onCancel(run), children: labels.cancel })
1581
1577
  ] }),
1582
- run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-2 text-xs text-rose-600 dark:text-rose-400", children: run.error })
1583
- ]
1584
- },
1585
- run.id
1586
- )) });
1587
- return /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content });
1578
+ children: [
1579
+ /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
1580
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.duration }),
1581
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: chunk3T2WGL47_js.formatDurationMs(run.totalDurationMs) }),
1582
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.triggeredBy }),
1583
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right truncate", children: run.triggeredBy || "\u2014" })
1584
+ ] }),
1585
+ run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 line-clamp-2 text-xs text-rose-600 dark:text-rose-400", children: run.error })
1586
+ ]
1587
+ },
1588
+ run.id
1589
+ )) })
1590
+ ] });
1591
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content });
1588
1592
  }
1589
1593
  function RunTimelinePageView({ labels, entries, loading, runId }) {
1590
1594
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1591
- chunkGCYYGSHU_js.HeroSection,
1595
+ chunkR4EKPXX3_js.HeroSection,
1592
1596
  {
1593
1597
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
1594
1598
  label: labels.title,
@@ -1598,23 +1602,23 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
1598
1602
  }
1599
1603
  );
1600
1604
  if (loading) {
1601
- return /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) });
1605
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content: /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) });
1602
1606
  }
1603
1607
  if (entries.length === 0) {
1604
1608
  return /* @__PURE__ */ jsxRuntime.jsx(
1605
- chunkGCYYGSHU_js.ManagementPageLayout,
1609
+ chunkR4EKPXX3_js.ManagementPageLayout,
1606
1610
  {
1607
1611
  hero,
1608
- content: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1612
+ content: /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
1609
1613
  }
1610
1614
  );
1611
1615
  }
1612
1616
  return /* @__PURE__ */ jsxRuntime.jsx(
1613
- chunkGCYYGSHU_js.ManagementPageLayout,
1617
+ chunkR4EKPXX3_js.ManagementPageLayout,
1614
1618
  {
1615
1619
  hero,
1616
1620
  content: /* @__PURE__ */ jsxRuntime.jsx(
1617
- chunkUWSMHKOF_js.ExecutionTimelinePanel,
1621
+ chunkFUHNEP3Y_js.ExecutionTimelinePanel,
1618
1622
  {
1619
1623
  entries,
1620
1624
  labels
@@ -1700,24 +1704,15 @@ function ConnectionsPageView({
1700
1704
  const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
1701
1705
  const isEmpty = allConnections.length === 0;
1702
1706
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
1703
- chunkGCYYGSHU_js.HeroSection,
1707
+ chunkR4EKPXX3_js.HeroSection,
1704
1708
  {
1705
1709
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
1706
1710
  label: labels.title,
1707
1711
  title: labels.title,
1708
1712
  subtitle: labels.subtitle,
1709
1713
  gradient: "from-sky-500 to-indigo-600",
1710
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
1711
- chunkGCYYGSHU_js.SearchBar,
1712
- {
1713
- searchTerm,
1714
- onSearchChange: setSearchTerm,
1715
- placeholder: labels.searchPlaceholder ?? labels.title,
1716
- noBorder: true
1717
- }
1718
- ) : void 0,
1719
- actions: /* @__PURE__ */ jsxRuntime.jsx(
1720
- chunkGCYYGSHU_js.CreateActionButton,
1714
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
1715
+ chunkR4EKPXX3_js.CreateActionButton,
1721
1716
  {
1722
1717
  mode: "desktop",
1723
1718
  label: labels.add,
@@ -1728,7 +1723,7 @@ function ConnectionsPageView({
1728
1723
  }
1729
1724
  );
1730
1725
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
1731
- chunkGCYYGSHU_js.CreateActionButton,
1726
+ chunkR4EKPXX3_js.CreateActionButton,
1732
1727
  {
1733
1728
  mode: "mobile",
1734
1729
  label: labels.add,
@@ -1736,42 +1731,52 @@ function ConnectionsPageView({
1736
1731
  accent: "sky"
1737
1732
  }
1738
1733
  );
1739
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsxRuntime.jsx(
1740
- chunkGCYYGSHU_js.EntityCard,
1741
- {
1742
- accentGradient: "from-sky-500 to-indigo-600",
1743
- 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" }) }),
1744
- title: conn.name,
1745
- subtitle: providerLabel(conn.providerSlug),
1746
- status: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
1747
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1748
- conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: "amber", children: "No secret" })
1749
- ] }),
1750
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1751
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1752
- /* @__PURE__ */ jsxRuntime.jsx(
1753
- chunkGCYYGSHU_js.Button,
1754
- {
1755
- type: "button",
1756
- size: "sm",
1757
- color: "rose",
1758
- onClick: async () => {
1759
- if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1760
- },
1761
- children: labels.delete
1762
- }
1763
- )
1764
- ] }),
1765
- children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1766
- conn.region && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Region", value: conn.region }),
1767
- conn.endpoint && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1768
- conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1769
- ] })
1770
- },
1771
- conn.id
1772
- )) });
1734
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1735
+ /* @__PURE__ */ jsxRuntime.jsx(
1736
+ chunkR4EKPXX3_js.SearchBar,
1737
+ {
1738
+ searchTerm,
1739
+ onSearchChange: setSearchTerm,
1740
+ placeholder: labels.searchPlaceholder ?? labels.title
1741
+ }
1742
+ ),
1743
+ /* @__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(
1744
+ chunkR4EKPXX3_js.EntityCard,
1745
+ {
1746
+ accentGradient: "from-sky-500 to-indigo-600",
1747
+ 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" }) }),
1748
+ title: conn.name,
1749
+ subtitle: providerLabel(conn.providerSlug),
1750
+ status: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
1751
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1752
+ conn.credentialRef ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "amber", children: "No secret" })
1753
+ ] }),
1754
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1755
+ /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1756
+ /* @__PURE__ */ jsxRuntime.jsx(
1757
+ chunkBHOT22QL_js.Button,
1758
+ {
1759
+ type: "button",
1760
+ size: "sm",
1761
+ color: "rose",
1762
+ onClick: async () => {
1763
+ if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1764
+ },
1765
+ children: labels.delete
1766
+ }
1767
+ )
1768
+ ] }),
1769
+ children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1770
+ conn.region && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Region", value: conn.region }),
1771
+ conn.endpoint && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1772
+ conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1773
+ ] })
1774
+ },
1775
+ conn.id
1776
+ )) })
1777
+ ] });
1773
1778
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1774
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
1779
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
1775
1780
  createOpen && /* @__PURE__ */ jsxRuntime.jsx(
1776
1781
  ConnectionEditor,
1777
1782
  {
@@ -1885,7 +1890,7 @@ function ConnectionEditor({
1885
1890
  return preset.exampleModels?.join(", ") ?? "";
1886
1891
  }, [preset]);
1887
1892
  return /* @__PURE__ */ jsxRuntime.jsx(
1888
- chunkGCYYGSHU_js.GlassModal,
1893
+ chunkR4EKPXX3_js.GlassModal,
1889
1894
  {
1890
1895
  open: true,
1891
1896
  onClose,
@@ -1898,9 +1903,9 @@ function ConnectionEditor({
1898
1903
  void handleSubmit();
1899
1904
  },
1900
1905
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1901
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
1906
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
1902
1907
  /* @__PURE__ */ jsxRuntime.jsx(
1903
- chunkGCYYGSHU_js.FormSelect,
1908
+ chunkR4EKPXX3_js.FormSelect,
1904
1909
  {
1905
1910
  label: "Provider",
1906
1911
  value: value.providerSlug,
@@ -1911,7 +1916,7 @@ function ConnectionEditor({
1911
1916
  }
1912
1917
  ),
1913
1918
  /* @__PURE__ */ jsxRuntime.jsx(
1914
- chunkGCYYGSHU_js.FormInput,
1919
+ chunkR4EKPXX3_js.FormInput,
1915
1920
  {
1916
1921
  label: "Display name",
1917
1922
  required: true,
@@ -1921,7 +1926,7 @@ function ConnectionEditor({
1921
1926
  }
1922
1927
  ),
1923
1928
  preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
1924
- chunkGCYYGSHU_js.FormInput,
1929
+ chunkR4EKPXX3_js.FormInput,
1925
1930
  {
1926
1931
  label: "Region",
1927
1932
  value: value.region,
@@ -1930,7 +1935,7 @@ function ConnectionEditor({
1930
1935
  }
1931
1936
  ),
1932
1937
  preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
1933
- chunkGCYYGSHU_js.FormInput,
1938
+ chunkR4EKPXX3_js.FormInput,
1934
1939
  {
1935
1940
  label: "Endpoint URL",
1936
1941
  value: value.endpoint,
@@ -1940,7 +1945,7 @@ function ConnectionEditor({
1940
1945
  )
1941
1946
  ] }),
1942
1947
  /* @__PURE__ */ jsxRuntime.jsx(
1943
- chunkGCYYGSHU_js.FormInput,
1948
+ chunkR4EKPXX3_js.FormInput,
1944
1949
  {
1945
1950
  label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
1946
1951
  type: "password",
@@ -1951,7 +1956,7 @@ function ConnectionEditor({
1951
1956
  }
1952
1957
  ),
1953
1958
  /* @__PURE__ */ jsxRuntime.jsx(
1954
- chunkGCYYGSHU_js.FormInput,
1959
+ chunkR4EKPXX3_js.FormInput,
1955
1960
  {
1956
1961
  label: "Model filter (comma-separated, optional)",
1957
1962
  value: value.modelFilter,
@@ -1963,7 +1968,7 @@ function ConnectionEditor({
1963
1968
  /* @__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: [
1964
1969
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
1965
1970
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
1966
- chunkGCYYGSHU_js.FormTextarea,
1971
+ chunkR4EKPXX3_js.FormTextarea,
1967
1972
  {
1968
1973
  rows: 4,
1969
1974
  value: value.configJson,
@@ -2033,24 +2038,15 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2033
2038
  { value: "password", label: labels.typePassword }
2034
2039
  ];
2035
2040
  const hero = /* @__PURE__ */ jsxRuntime.jsx(
2036
- chunkGCYYGSHU_js.HeroSection,
2041
+ chunkR4EKPXX3_js.HeroSection,
2037
2042
  {
2038
2043
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
2039
2044
  label: labels.title,
2040
2045
  title: labels.title,
2041
2046
  subtitle: labels.subtitle,
2042
2047
  gradient: "from-rose-500 to-orange-600",
2043
- toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
2044
- chunkGCYYGSHU_js.SearchBar,
2045
- {
2046
- searchTerm,
2047
- onSearchChange: setSearchTerm,
2048
- placeholder: labels.searchPlaceholder ?? labels.title,
2049
- noBorder: true
2050
- }
2051
- ) : void 0,
2052
- actions: /* @__PURE__ */ jsxRuntime.jsx(
2053
- chunkGCYYGSHU_js.CreateActionButton,
2048
+ toolbar: /* @__PURE__ */ jsxRuntime.jsx(
2049
+ chunkR4EKPXX3_js.CreateActionButton,
2054
2050
  {
2055
2051
  mode: "desktop",
2056
2052
  label: labels.addCredential,
@@ -2061,7 +2057,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2061
2057
  }
2062
2058
  );
2063
2059
  const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
2064
- chunkGCYYGSHU_js.CreateActionButton,
2060
+ chunkR4EKPXX3_js.CreateActionButton,
2065
2061
  {
2066
2062
  mode: "mobile",
2067
2063
  label: labels.addCredential,
@@ -2069,54 +2065,64 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2069
2065
  accent: "rose"
2070
2066
  }
2071
2067
  );
2072
- const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredCredentials.map((secret) => /* @__PURE__ */ jsxRuntime.jsxs(
2073
- chunkGCYYGSHU_js.EntityCard,
2074
- {
2075
- accentGradient: "from-rose-500 to-orange-700",
2076
- 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" }) }),
2077
- title: secret.name,
2078
- subtitle: secret.secretType,
2079
- status: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2080
- footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2081
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.CopyableId, { id: secret.secretId }),
2082
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2083
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2084
- /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
2085
- labels.rotate
2086
- ] }),
2087
- !secret.disabled && /* @__PURE__ */ jsxRuntime.jsxs(
2088
- chunkGCYYGSHU_js.Button,
2089
- {
2090
- type: "button",
2091
- size: "sm",
2092
- color: "rose",
2093
- onClick: () => {
2094
- if (window.confirm(labels.disableConfirm)) onDisable(secret);
2095
- },
2096
- children: [
2097
- /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "mr-1 h-3.5 w-3.5" }),
2098
- labels.disable
2099
- ]
2100
- }
2101
- )
2102
- ] })
2103
- ] }),
2104
- children: [
2105
- secret.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: secret.description }),
2106
- /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-2 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
2107
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.createdAt }),
2108
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: new Date(secret.createdAt).toLocaleDateString() }),
2109
- /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.expiresAt }),
2110
- /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: secret.expiresAt ? new Date(secret.expiresAt).toLocaleDateString() : labels.neverExpires })
2111
- ] })
2112
- ]
2113
- },
2114
- secret.secretId
2115
- )) });
2068
+ const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2069
+ /* @__PURE__ */ jsxRuntime.jsx(
2070
+ chunkR4EKPXX3_js.SearchBar,
2071
+ {
2072
+ searchTerm,
2073
+ onSearchChange: setSearchTerm,
2074
+ placeholder: labels.searchPlaceholder ?? labels.title
2075
+ }
2076
+ ),
2077
+ /* @__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(
2078
+ chunkR4EKPXX3_js.EntityCard,
2079
+ {
2080
+ accentGradient: "from-rose-500 to-orange-700",
2081
+ 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" }) }),
2082
+ title: secret.name,
2083
+ subtitle: secret.secretType,
2084
+ status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
2085
+ footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
2086
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.CopyableId, { id: secret.secretId }),
2087
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2088
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
2089
+ /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
2090
+ labels.rotate
2091
+ ] }),
2092
+ !secret.disabled && /* @__PURE__ */ jsxRuntime.jsxs(
2093
+ chunkBHOT22QL_js.Button,
2094
+ {
2095
+ type: "button",
2096
+ size: "sm",
2097
+ color: "rose",
2098
+ onClick: () => {
2099
+ if (window.confirm(labels.disableConfirm)) onDisable(secret);
2100
+ },
2101
+ children: [
2102
+ /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "mr-1 h-3.5 w-3.5" }),
2103
+ labels.disable
2104
+ ]
2105
+ }
2106
+ )
2107
+ ] })
2108
+ ] }),
2109
+ children: [
2110
+ secret.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: secret.description }),
2111
+ /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-2 grid grid-cols-2 gap-1 text-xs text-slate-500 dark:text-slate-400", children: [
2112
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.createdAt }),
2113
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: new Date(secret.createdAt).toLocaleDateString() }),
2114
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: labels.expiresAt }),
2115
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-right", children: secret.expiresAt ? new Date(secret.expiresAt).toLocaleDateString() : labels.neverExpires })
2116
+ ] })
2117
+ ]
2118
+ },
2119
+ secret.secretId
2120
+ )) })
2121
+ ] });
2116
2122
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2117
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.ManagementPageLayout, { hero, content, mobileAction }),
2123
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.ManagementPageLayout, { hero, content, mobileAction }),
2118
2124
  /* @__PURE__ */ jsxRuntime.jsx(
2119
- chunkGCYYGSHU_js.GlassModal,
2125
+ chunkR4EKPXX3_js.GlassModal,
2120
2126
  {
2121
2127
  open: createOpen,
2122
2128
  onClose: () => setCreateOpen(false),
@@ -2134,16 +2140,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2134
2140
  onCreate({ name, value, secretType, description });
2135
2141
  setCreateOpen(false);
2136
2142
  },
2137
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.FormGrid, { children: [
2138
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2139
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2140
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2141
- /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2143
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkR4EKPXX3_js.FormGrid, { children: [
2144
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
2145
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
2146
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
2147
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
2142
2148
  ] })
2143
2149
  }
2144
2150
  ),
2145
2151
  /* @__PURE__ */ jsxRuntime.jsx(
2146
- chunkGCYYGSHU_js.GlassModal,
2152
+ chunkR4EKPXX3_js.GlassModal,
2147
2153
  {
2148
2154
  open: rotateFor !== null,
2149
2155
  onClose: () => setRotateFor(null),
@@ -2158,7 +2164,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2158
2164
  onRotate(rotateFor, value);
2159
2165
  setRotateFor(null);
2160
2166
  },
2161
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2167
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4EKPXX3_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
2162
2168
  }
2163
2169
  )
2164
2170
  ] });
@@ -2166,31 +2172,31 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
2166
2172
 
2167
2173
  Object.defineProperty(exports, "RolesPageView", {
2168
2174
  enumerable: true,
2169
- get: function () { return chunk3WXMBAGN_js.RolesPageView; }
2175
+ get: function () { return chunkUDYEUTJC_js.RolesPageView; }
2170
2176
  });
2171
2177
  Object.defineProperty(exports, "UsersPageView", {
2172
2178
  enumerable: true,
2173
- get: function () { return chunk3WXMBAGN_js.UsersPageView; }
2179
+ get: function () { return chunkUDYEUTJC_js.UsersPageView; }
2174
2180
  });
2175
2181
  Object.defineProperty(exports, "DIALECT_CATEGORIES", {
2176
2182
  enumerable: true,
2177
- get: function () { return chunkLVK7VXW7_js.DIALECT_CATEGORIES; }
2183
+ get: function () { return chunkDMPBNWJB_js.DIALECT_CATEGORIES; }
2178
2184
  });
2179
2185
  Object.defineProperty(exports, "DatasourceFormModal", {
2180
2186
  enumerable: true,
2181
- get: function () { return chunkLVK7VXW7_js.DatasourceFormModal; }
2187
+ get: function () { return chunkDMPBNWJB_js.DatasourceFormModal; }
2182
2188
  });
2183
2189
  Object.defineProperty(exports, "DatasourceModal", {
2184
2190
  enumerable: true,
2185
- get: function () { return chunkLVK7VXW7_js.DatasourceModal; }
2191
+ get: function () { return chunkDMPBNWJB_js.DatasourceModal; }
2186
2192
  });
2187
2193
  Object.defineProperty(exports, "findCategory", {
2188
2194
  enumerable: true,
2189
- get: function () { return chunkLVK7VXW7_js.findCategory; }
2195
+ get: function () { return chunkDMPBNWJB_js.findCategory; }
2190
2196
  });
2191
2197
  Object.defineProperty(exports, "findDialect", {
2192
2198
  enumerable: true,
2193
- get: function () { return chunkLVK7VXW7_js.findDialect; }
2199
+ get: function () { return chunkDMPBNWJB_js.findDialect; }
2194
2200
  });
2195
2201
  exports.AgentsConfigPageView = AgentsConfigPageView;
2196
2202
  exports.AgentsIndexPageView = AgentsIndexPageView;