@datatechsolutions/ui 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/astrlabe/index.js +113 -113
  2. package/dist/astrlabe/index.mjs +6 -6
  3. package/dist/astrlabe/workflow-canvas.js +6 -6
  4. package/dist/astrlabe/workflow-canvas.mjs +5 -5
  5. package/dist/brand/index.js +0 -14
  6. package/dist/brand/index.js.map +1 -1
  7. package/dist/brand/index.mjs +0 -14
  8. package/dist/brand/index.mjs.map +1 -1
  9. package/dist/{chunk-2WXRRQM3.mjs → chunk-2MJAHST4.mjs} +554 -516
  10. package/dist/chunk-2MJAHST4.mjs.map +1 -0
  11. package/dist/{chunk-FAGDZEKM.js → chunk-2OZZH2IO.js} +2 -2
  12. package/dist/chunk-2OZZH2IO.js.map +1 -0
  13. package/dist/{chunk-SYNVNTLJ.mjs → chunk-3AY5HIQ6.mjs} +2 -2
  14. package/dist/chunk-3AY5HIQ6.mjs.map +1 -0
  15. package/dist/{chunk-O6M3KDGT.mjs → chunk-3OLYSMI5.mjs} +41 -7
  16. package/dist/chunk-3OLYSMI5.mjs.map +1 -0
  17. package/dist/{chunk-GIQXB3BG.mjs → chunk-4PFU6A2B.mjs} +3 -3
  18. package/dist/{chunk-GIQXB3BG.mjs.map → chunk-4PFU6A2B.mjs.map} +1 -1
  19. package/dist/{chunk-3ZUMJTDT.mjs → chunk-5BEVTOZV.mjs} +4 -5
  20. package/dist/{chunk-3JJWPOK6.js.map → chunk-5BEVTOZV.mjs.map} +1 -1
  21. package/dist/{chunk-3JJWPOK6.js → chunk-5I7F7KZ6.js} +10 -11
  22. package/dist/chunk-5I7F7KZ6.js.map +1 -0
  23. package/dist/{chunk-BR2GAZKG.mjs → chunk-6V3DUBOZ.mjs} +7 -7
  24. package/dist/{chunk-BR2GAZKG.mjs.map → chunk-6V3DUBOZ.mjs.map} +1 -1
  25. package/dist/{chunk-5GDKCFM5.mjs → chunk-6W7VTZG6.mjs} +3 -3
  26. package/dist/{chunk-5GDKCFM5.mjs.map → chunk-6W7VTZG6.mjs.map} +1 -1
  27. package/dist/{chunk-IJAKZHXX.js → chunk-74MHWEDC.js} +684 -645
  28. package/dist/chunk-74MHWEDC.js.map +1 -0
  29. package/dist/{chunk-IRPS5UCS.mjs → chunk-7CEZB3ZD.mjs} +3 -3
  30. package/dist/{chunk-IRPS5UCS.mjs.map → chunk-7CEZB3ZD.mjs.map} +1 -1
  31. package/dist/{chunk-UDDZTTLO.mjs → chunk-7UHV6A4C.mjs} +6 -7
  32. package/dist/chunk-7UHV6A4C.mjs.map +1 -0
  33. package/dist/{chunk-ZM5MVWIT.js → chunk-A7FI4K7Z.js} +5 -6
  34. package/dist/chunk-A7FI4K7Z.js.map +1 -0
  35. package/dist/{chunk-MWPTSBAI.js → chunk-AVM53A3Y.js} +63 -29
  36. package/dist/chunk-AVM53A3Y.js.map +1 -0
  37. package/dist/{chunk-I2NZGVBG.js → chunk-AWDH6WNA.js} +1214 -5396
  38. package/dist/chunk-AWDH6WNA.js.map +1 -0
  39. package/dist/{chunk-ZJPNP2YW.mjs → chunk-BUDZNAKL.mjs} +2 -2
  40. package/dist/chunk-BUDZNAKL.mjs.map +1 -0
  41. package/dist/{chunk-OCELRSLO.js → chunk-BVXATTTA.js} +4 -4
  42. package/dist/{chunk-OCELRSLO.js.map → chunk-BVXATTTA.js.map} +1 -1
  43. package/dist/{chunk-W5OEBO6E.js → chunk-C4NRF2G2.js} +13 -14
  44. package/dist/chunk-C4NRF2G2.js.map +1 -0
  45. package/dist/{chunk-JSNRCYSO.js → chunk-CY2MBKVG.js} +4 -4
  46. package/dist/{chunk-JSNRCYSO.js.map → chunk-CY2MBKVG.js.map} +1 -1
  47. package/dist/{chunk-ZL6C2ZAF.js → chunk-FK3WDELF.js} +67 -67
  48. package/dist/{chunk-ZL6C2ZAF.js.map → chunk-FK3WDELF.js.map} +1 -1
  49. package/dist/{chunk-MVBIAXVN.mjs → chunk-IOEQ2GET.mjs} +14 -11
  50. package/dist/chunk-IOEQ2GET.mjs.map +1 -0
  51. package/dist/{chunk-AOUUZ52N.js → chunk-NCDBNGIB.js} +85 -86
  52. package/dist/chunk-NCDBNGIB.js.map +1 -0
  53. package/dist/{chunk-B67DP7MI.mjs → chunk-NJ5RVWLA.mjs} +4 -4
  54. package/dist/{chunk-B67DP7MI.mjs.map → chunk-NJ5RVWLA.mjs.map} +1 -1
  55. package/dist/{chunk-HDCUWUNH.js → chunk-NKXQYFS7.js} +28 -27
  56. package/dist/chunk-NKXQYFS7.js.map +1 -0
  57. package/dist/{chunk-JN6IL6OH.mjs → chunk-NOHHZ6FM.mjs} +1171 -5316
  58. package/dist/chunk-NOHHZ6FM.mjs.map +1 -0
  59. package/dist/{chunk-PCYL4MII.mjs → chunk-OASC7NYV.mjs} +156 -314
  60. package/dist/chunk-OASC7NYV.mjs.map +1 -0
  61. package/dist/{chunk-RXZNACMI.js → chunk-P43PX75J.js} +33 -33
  62. package/dist/{chunk-RXZNACMI.js.map → chunk-P43PX75J.js.map} +1 -1
  63. package/dist/{chunk-OL73LBX5.mjs → chunk-QLFSJ6HK.mjs} +3 -4
  64. package/dist/chunk-QLFSJ6HK.mjs.map +1 -0
  65. package/dist/{chunk-LEKZUS6N.mjs → chunk-QPSHM2JQ.mjs} +4 -5
  66. package/dist/chunk-QPSHM2JQ.mjs.map +1 -0
  67. package/dist/{chunk-NJFRJ6YD.js → chunk-QSMPKL27.js} +225 -384
  68. package/dist/chunk-QSMPKL27.js.map +1 -0
  69. package/dist/{chunk-ZV5EZXXO.mjs → chunk-RHRJXK5R.mjs} +3 -3
  70. package/dist/{chunk-ZV5EZXXO.mjs.map → chunk-RHRJXK5R.mjs.map} +1 -1
  71. package/dist/{chunk-F54Q2YJY.js → chunk-SY4MUT5V.js} +7 -7
  72. package/dist/{chunk-F54Q2YJY.js.map → chunk-SY4MUT5V.js.map} +1 -1
  73. package/dist/{chunk-5RM6NGZ6.mjs → chunk-UHMAKUON.mjs} +3 -3
  74. package/dist/{chunk-5RM6NGZ6.mjs.map → chunk-UHMAKUON.mjs.map} +1 -1
  75. package/dist/{chunk-TIJJHW2Z.js → chunk-V5VBYOF5.js} +36 -36
  76. package/dist/{chunk-TIJJHW2Z.js.map → chunk-V5VBYOF5.js.map} +1 -1
  77. package/dist/{chunk-KR2X2WHJ.js → chunk-VMGNQFRO.js} +53 -53
  78. package/dist/{chunk-KR2X2WHJ.js.map → chunk-VMGNQFRO.js.map} +1 -1
  79. package/dist/{chunk-HZ4LOVHM.js → chunk-VY52Y5GC.js} +2 -2
  80. package/dist/chunk-VY52Y5GC.js.map +1 -0
  81. package/dist/{chunk-TVMLV675.js → chunk-Z7VY5M4T.js} +98 -95
  82. package/dist/chunk-Z7VY5M4T.js.map +1 -0
  83. package/dist/{chunk-R4TQWXNG.mjs → chunk-ZM2Q2SMC.mjs} +6 -5
  84. package/dist/chunk-ZM2Q2SMC.mjs.map +1 -0
  85. package/dist/index.js +744 -904
  86. package/dist/index.mjs +4 -4
  87. package/dist/platform/admin/index.js +13 -13
  88. package/dist/platform/admin/index.mjs +7 -7
  89. package/dist/platform/agents-workspace.js +9 -9
  90. package/dist/platform/agents-workspace.mjs +8 -8
  91. package/dist/platform/app-shell.js +6 -6
  92. package/dist/platform/app-shell.mjs +5 -5
  93. package/dist/platform/auth/index.js +30 -30
  94. package/dist/platform/auth/index.mjs +7 -7
  95. package/dist/platform/billing/index.js +6 -6
  96. package/dist/platform/billing/index.mjs +5 -5
  97. package/dist/platform/impersonation/index.js +6 -6
  98. package/dist/platform/impersonation/index.mjs +5 -5
  99. package/dist/platform/index.js +102 -4812
  100. package/dist/platform/index.js.map +1 -1
  101. package/dist/platform/index.mjs +24 -4729
  102. package/dist/platform/index.mjs.map +1 -1
  103. package/dist/platform/pages/index.js +320 -204
  104. package/dist/platform/pages/index.js.map +1 -1
  105. package/dist/platform/pages/index.mjs +146 -30
  106. package/dist/platform/pages/index.mjs.map +1 -1
  107. package/dist/platform/rbac.js +2 -2
  108. package/dist/platform/rbac.mjs +1 -1
  109. package/dist/platform/settings/index.js +10 -10
  110. package/dist/platform/settings/index.mjs +9 -9
  111. package/dist/platform/utils/index.js +3 -3
  112. package/dist/platform/utils/index.js.map +1 -1
  113. package/dist/platform/utils/index.mjs +1 -1
  114. package/dist/platform/utils/index.mjs.map +1 -1
  115. package/dist/platform/workflow-api-client.js +62 -62
  116. package/dist/platform/workflow-api-client.mjs +2 -2
  117. package/dist/platform/workflow-canvas-shell.js +7 -7
  118. package/dist/platform/workflow-canvas-shell.mjs +6 -6
  119. package/package.json +15 -5
  120. package/src/styles/liquid-glass.css +283 -2
  121. package/dist/astrlabe/contracts.d.mts +0 -517
  122. package/dist/astrlabe/contracts.d.ts +0 -517
  123. package/dist/astrlabe/graph-node.d.mts +0 -28
  124. package/dist/astrlabe/graph-node.d.ts +0 -28
  125. package/dist/astrlabe/index.d.mts +0 -751
  126. package/dist/astrlabe/index.d.ts +0 -751
  127. package/dist/astrlabe/utils.d.mts +0 -60
  128. package/dist/astrlabe/utils.d.ts +0 -60
  129. package/dist/astrlabe/workflow-canvas.d.mts +0 -69
  130. package/dist/astrlabe/workflow-canvas.d.ts +0 -69
  131. package/dist/astrlabe/workflow-preview-canvas.d.mts +0 -10
  132. package/dist/astrlabe/workflow-preview-canvas.d.ts +0 -10
  133. package/dist/billing-panel-DsHhhJqG.d.mts +0 -18
  134. package/dist/billing-panel-DsHhhJqG.d.ts +0 -18
  135. package/dist/brand/index.d.mts +0 -85
  136. package/dist/brand/index.d.ts +0 -85
  137. package/dist/chunk-2WXRRQM3.mjs.map +0 -1
  138. package/dist/chunk-3ZUMJTDT.mjs.map +0 -1
  139. package/dist/chunk-AOUUZ52N.js.map +0 -1
  140. package/dist/chunk-FAGDZEKM.js.map +0 -1
  141. package/dist/chunk-HDCUWUNH.js.map +0 -1
  142. package/dist/chunk-HZ4LOVHM.js.map +0 -1
  143. package/dist/chunk-I2NZGVBG.js.map +0 -1
  144. package/dist/chunk-IJAKZHXX.js.map +0 -1
  145. package/dist/chunk-JN6IL6OH.mjs.map +0 -1
  146. package/dist/chunk-LEKZUS6N.mjs.map +0 -1
  147. package/dist/chunk-MVBIAXVN.mjs.map +0 -1
  148. package/dist/chunk-MWPTSBAI.js.map +0 -1
  149. package/dist/chunk-NJFRJ6YD.js.map +0 -1
  150. package/dist/chunk-O6M3KDGT.mjs.map +0 -1
  151. package/dist/chunk-OL73LBX5.mjs.map +0 -1
  152. package/dist/chunk-PCYL4MII.mjs.map +0 -1
  153. package/dist/chunk-R4TQWXNG.mjs.map +0 -1
  154. package/dist/chunk-SYNVNTLJ.mjs.map +0 -1
  155. package/dist/chunk-TVMLV675.js.map +0 -1
  156. package/dist/chunk-UDDZTTLO.mjs.map +0 -1
  157. package/dist/chunk-W5OEBO6E.js.map +0 -1
  158. package/dist/chunk-ZJPNP2YW.mjs.map +0 -1
  159. package/dist/chunk-ZM5MVWIT.js.map +0 -1
  160. package/dist/dynamic-island-confirm-BKsZkAEP.d.mts +0 -17
  161. package/dist/dynamic-island-confirm-BKsZkAEP.d.ts +0 -17
  162. package/dist/index-CoB18TbG.d.ts +0 -215
  163. package/dist/index-VI9gyJXl.d.mts +0 -215
  164. package/dist/index.d.mts +0 -5412
  165. package/dist/index.d.ts +0 -5412
  166. package/dist/layout-engine-YZcVr20M.d.mts +0 -19
  167. package/dist/layout-engine-YZcVr20M.d.ts +0 -19
  168. package/dist/lib/i18n-context.d.mts +0 -36
  169. package/dist/lib/i18n-context.d.ts +0 -36
  170. package/dist/lib/router-context.d.mts +0 -35
  171. package/dist/lib/router-context.d.ts +0 -35
  172. package/dist/navigation-BiWVffAN.d.mts +0 -49
  173. package/dist/navigation-BiWVffAN.d.ts +0 -49
  174. package/dist/platform/admin/index.d.mts +0 -17
  175. package/dist/platform/admin/index.d.ts +0 -17
  176. package/dist/platform/agents-workspace.d.mts +0 -19
  177. package/dist/platform/agents-workspace.d.ts +0 -19
  178. package/dist/platform/app-shell.d.mts +0 -58
  179. package/dist/platform/app-shell.d.ts +0 -58
  180. package/dist/platform/auth/index.d.mts +0 -73
  181. package/dist/platform/auth/index.d.ts +0 -73
  182. package/dist/platform/billing/index.d.mts +0 -29
  183. package/dist/platform/billing/index.d.ts +0 -29
  184. package/dist/platform/impersonation/index.d.mts +0 -19
  185. package/dist/platform/impersonation/index.d.ts +0 -19
  186. package/dist/platform/index.d.mts +0 -224
  187. package/dist/platform/index.d.ts +0 -224
  188. package/dist/platform/pages/index.d.mts +0 -432
  189. package/dist/platform/pages/index.d.ts +0 -432
  190. package/dist/platform/rbac.d.mts +0 -41
  191. package/dist/platform/rbac.d.ts +0 -41
  192. package/dist/platform/settings/index.d.mts +0 -31
  193. package/dist/platform/settings/index.d.ts +0 -31
  194. package/dist/platform/telemetry/index.d.mts +0 -51
  195. package/dist/platform/telemetry/index.d.ts +0 -51
  196. package/dist/platform/utils/index.d.mts +0 -32
  197. package/dist/platform/utils/index.d.ts +0 -32
  198. package/dist/platform/windsock-admin-client.d.mts +0 -57
  199. package/dist/platform/windsock-admin-client.d.ts +0 -57
  200. package/dist/platform/workflow-api-client.d.mts +0 -6
  201. package/dist/platform/workflow-api-client.d.ts +0 -6
  202. package/dist/platform/workflow-canvas-shell.d.mts +0 -18
  203. package/dist/platform/workflow-canvas-shell.d.ts +0 -18
  204. package/dist/rule-form-BYJzyork.d.mts +0 -128
  205. package/dist/rule-form-BYJzyork.d.ts +0 -128
  206. package/dist/workflow-api-client-BKD8OfP_.d.ts +0 -468
  207. package/dist/workflow-api-client-DoYj7nHz.d.mts +0 -468
  208. package/dist/workflow-store-o17I6L6A.d.ts +0 -79
  209. package/dist/workflow-store-ppVHdMZi.d.mts +0 -79
  210. package/src/brand/logos/kori-icon.svg +0 -45
  211. package/src/brand/logos/kori-logo-dark.svg +0 -40
  212. package/src/brand/logos/kori-logo.svg +0 -43
@@ -1,26 +1,30 @@
1
1
  "use client";
2
2
  import { adaptWorkflowGraphToUi, formatDurationMs } from '../../chunk-UQXVCVAN.mjs';
3
- import { WorkflowWorkspace } from '../../chunk-O6M3KDGT.mjs';
4
- export { RolesPageView, UsersPageView } from '../../chunk-O6M3KDGT.mjs';
5
- import { DatasourceModal, findCategory, DIALECT_CATEGORIES } from '../../chunk-5RM6NGZ6.mjs';
6
- export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-5RM6NGZ6.mjs';
7
- import { defaultRuleForm, RuleForm, ExecutionTimelinePanel } from '../../chunk-2WXRRQM3.mjs';
3
+ import { WorkflowWorkspace } from '../../chunk-3OLYSMI5.mjs';
4
+ export { RolesPageView, UsersPageView } from '../../chunk-3OLYSMI5.mjs';
5
+ import { DatasourceModal, findCategory, DIALECT_CATEGORIES } from '../../chunk-UHMAKUON.mjs';
6
+ export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-UHMAKUON.mjs';
7
+ import { defaultRuleForm, RuleForm, ExecutionTimelinePanel } from '../../chunk-2MJAHST4.mjs';
8
8
  import '../../chunk-JB6RNAD2.mjs';
9
9
  import '../../chunk-LEXBTVGM.mjs';
10
- import '../../chunk-PCYL4MII.mjs';
11
- import { HeroSection, PageLoadingState, PageEmptyState, EntityCard, Badge, ManagementPageLayout, CreateActionButton, Button, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId } from '../../chunk-JN6IL6OH.mjs';
10
+ import '../../chunk-OASC7NYV.mjs';
11
+ import { HeroSection, SearchBar, PageLoadingState, PageEmptyState, EntityCard, Badge, ManagementPageLayout, CreateActionButton, Button, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId } from '../../chunk-NOHHZ6FM.mjs';
12
12
  import '../../chunk-D2JF6C3E.mjs';
13
- import '../../chunk-7VJ7CMMT.mjs';
14
13
  import { useLink } from '../../chunk-QWG2FMUN.mjs';
15
- import '../../chunk-ZV5EZXXO.mjs';
16
- import '../../chunk-SYNVNTLJ.mjs';
14
+ import '../../chunk-RHRJXK5R.mjs';
15
+ import '../../chunk-3AY5HIQ6.mjs';
16
+ import '../../chunk-7VJ7CMMT.mjs';
17
17
  import '../../chunk-OZNTQROP.mjs';
18
18
  import '../../chunk-G7JQ4OCE.mjs';
19
+ import { useState, useMemo, useEffect } from 'react';
19
20
  import { CubeTransparentIcon, CpuChipIcon, ChatBubbleLeftEllipsisIcon, WrenchScrewdriverIcon, AdjustmentsHorizontalIcon, CircleStackIcon, RectangleStackIcon, ClockIcon, LinkIcon, KeyIcon, ArrowPathIcon, TrashIcon } from '@heroicons/react/24/outline';
20
21
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
21
- import { useState, useMemo, useEffect } from 'react';
22
22
 
23
23
  function AgentsModelsPageView({ labels, models, loading }) {
24
+ const [searchTerm, setSearchTerm] = useState("");
25
+ const allModels = models;
26
+ const filteredModels = searchTerm.trim() ? allModels.filter((model) => model.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allModels;
27
+ const isEmpty = allModels.length === 0;
24
28
  const hero = /* @__PURE__ */ jsx(
25
29
  HeroSection,
26
30
  {
@@ -31,7 +35,15 @@ function AgentsModelsPageView({ labels, models, loading }) {
31
35
  gradient: "from-emerald-500 to-teal-700"
32
36
  }
33
37
  );
34
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : models.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: models.map((model) => /* @__PURE__ */ jsx(
38
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
39
+ SearchBar,
40
+ {
41
+ searchTerm,
42
+ onSearchChange: setSearchTerm,
43
+ placeholder: labels.searchPlaceholder ?? labels.title
44
+ }
45
+ ) : void 0;
46
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsx(
35
47
  EntityCard,
36
48
  {
37
49
  accentGradient: "from-emerald-500 to-teal-700",
@@ -42,7 +54,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
42
54
  },
43
55
  model.id
44
56
  )) });
45
- return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content });
57
+ return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content });
46
58
  }
47
59
  function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpdate, onDelete }) {
48
60
  const [editing, setEditing] = useState(null);
@@ -183,6 +195,7 @@ var LOCALE_OPTIONS = [
183
195
  ];
184
196
  function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onActivate, onDelete }) {
185
197
  const [createOpen, setCreateOpen] = useState(false);
198
+ const [searchTerm, setSearchTerm] = useState("");
186
199
  const agentOptions = useMemo(
187
200
  () => agents.map((agent) => ({
188
201
  value: String(agent.agentId ?? agent.id ?? ""),
@@ -226,7 +239,23 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
226
239
  accent: "sky"
227
240
  }
228
241
  );
229
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : prompts.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: prompts.map((prompt) => {
242
+ const allPrompts = prompts;
243
+ const filteredPrompts = searchTerm.trim() ? allPrompts.filter((prompt) => {
244
+ const term = searchTerm.trim().toLowerCase();
245
+ const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
246
+ const promptText = prompt.prompt ?? "";
247
+ return agentName.toLowerCase().includes(term) || promptText.toLowerCase().includes(term);
248
+ }) : allPrompts;
249
+ const isEmpty = allPrompts.length === 0;
250
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
251
+ SearchBar,
252
+ {
253
+ searchTerm,
254
+ onSearchChange: setSearchTerm,
255
+ placeholder: labels.searchPlaceholder ?? labels.title
256
+ }
257
+ ) : void 0;
258
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredPrompts.map((prompt) => {
230
259
  const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
231
260
  const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
232
261
  return /* @__PURE__ */ jsx(
@@ -258,7 +287,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
258
287
  );
259
288
  }) });
260
289
  return /* @__PURE__ */ jsxs(Fragment, { children: [
261
- /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content, mobileAction }),
290
+ /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content, mobileAction }),
262
291
  /* @__PURE__ */ jsx(
263
292
  GlassModal,
264
293
  {
@@ -329,6 +358,18 @@ var PARAMETER_TYPE_OPTIONS = [
329
358
  function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpdate, onDelete }) {
330
359
  const [editing, setEditing] = useState(null);
331
360
  const [createOpen, setCreateOpen] = useState(false);
361
+ const [searchTerm, setSearchTerm] = useState("");
362
+ const allTools = tools;
363
+ const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
364
+ const isEmpty = allTools.length === 0;
365
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
366
+ SearchBar,
367
+ {
368
+ searchTerm,
369
+ onSearchChange: setSearchTerm,
370
+ placeholder: labels.searchPlaceholder ?? labels.title
371
+ }
372
+ ) : void 0;
332
373
  const hero = /* @__PURE__ */ jsx(
333
374
  HeroSection,
334
375
  {
@@ -357,7 +398,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
357
398
  accent: "amber"
358
399
  }
359
400
  );
360
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : tools.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: tools.map((tool) => /* @__PURE__ */ jsx(
401
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredTools.map((tool) => /* @__PURE__ */ jsx(
361
402
  EntityCard,
362
403
  {
363
404
  accentGradient: "from-amber-500 to-orange-700",
@@ -385,7 +426,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
385
426
  tool.agentToolId
386
427
  )) });
387
428
  return /* @__PURE__ */ jsxs(Fragment, { children: [
388
- /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content, mobileAction }),
429
+ /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content, mobileAction }),
389
430
  createOpen && /* @__PURE__ */ jsx(
390
431
  ToolEditor,
391
432
  {
@@ -871,6 +912,18 @@ function setFromJson(set, key, raw) {
871
912
  function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete }) {
872
913
  const [createOpen, setCreateOpen] = useState(false);
873
914
  const [editing, setEditing] = useState(null);
915
+ const [searchTerm, setSearchTerm] = useState("");
916
+ const allRules = rules;
917
+ const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
918
+ const isEmpty = allRules.length === 0;
919
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
920
+ SearchBar,
921
+ {
922
+ searchTerm,
923
+ onSearchChange: setSearchTerm,
924
+ placeholder: labels.searchPlaceholder ?? labels.title
925
+ }
926
+ ) : void 0;
874
927
  const hero = /* @__PURE__ */ jsx(
875
928
  HeroSection,
876
929
  {
@@ -899,7 +952,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
899
952
  accent: "fuchsia"
900
953
  }
901
954
  );
902
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : rules.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: rules.map((rule) => /* @__PURE__ */ jsx(
955
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsx(
903
956
  EntityCard,
904
957
  {
905
958
  accentGradient: "from-fuchsia-500 to-purple-700",
@@ -927,7 +980,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
927
980
  rule.ruleId
928
981
  )) });
929
982
  return /* @__PURE__ */ jsxs(Fragment, { children: [
930
- /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content, mobileAction }),
983
+ /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content, mobileAction }),
931
984
  createOpen && /* @__PURE__ */ jsx(
932
985
  RuleEditor,
933
986
  {
@@ -1164,11 +1217,13 @@ function DatasourcesPageView({
1164
1217
  onCreate
1165
1218
  }) {
1166
1219
  const [modalOpen, setModalOpen] = useState(false);
1220
+ const [searchTerm, setSearchTerm] = useState("");
1167
1221
  const [localDatasources, setLocalDatasources] = useState(
1168
1222
  useSampleData ? SAMPLE_DATASOURCES : []
1169
1223
  );
1170
- const datasources = externalDatasources ?? localDatasources;
1171
- const isEmpty = datasources.length === 0;
1224
+ const allDatasources = externalDatasources ?? localDatasources;
1225
+ const datasources = searchTerm.trim() ? allDatasources.filter((ds) => ds.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allDatasources;
1226
+ const isEmpty = allDatasources.length === 0;
1172
1227
  function handleCreate(data) {
1173
1228
  if (onCreate) {
1174
1229
  onCreate(data);
@@ -1221,6 +1276,14 @@ function DatasourcesPageView({
1221
1276
  accent: "amber"
1222
1277
  }
1223
1278
  ),
1279
+ !isEmpty && /* @__PURE__ */ jsx(
1280
+ SearchBar,
1281
+ {
1282
+ searchTerm,
1283
+ onSearchChange: setSearchTerm,
1284
+ placeholder: labels.searchPlaceholder ?? labels.title
1285
+ }
1286
+ ),
1224
1287
  isEmpty ? /* @__PURE__ */ jsx(
1225
1288
  PageEmptyState,
1226
1289
  {
@@ -1285,12 +1348,15 @@ function DashboardPageView({ labels, appLogo }) {
1285
1348
  }
1286
1349
  function AgentsIndexPageView({ labels }) {
1287
1350
  const Link = useLink();
1288
- const tiles = [
1351
+ const [searchTerm, setSearchTerm] = useState("");
1352
+ const allTiles = [
1289
1353
  { id: "config", title: labels.configTitle, subtitle: labels.configSubtitle, href: "/agents/config", gradient: "from-violet-500 to-indigo-700", icon: CpuChipIcon },
1290
1354
  { id: "tools", title: labels.toolDefinitionsTitle, subtitle: labels.toolDefinitionsSubtitle, href: "/agents/tool-definitions", gradient: "from-amber-500 to-orange-700", icon: WrenchScrewdriverIcon },
1291
1355
  { id: "models", title: labels.modelsTitle, subtitle: labels.modelsSubtitle, href: "/agents/models", gradient: "from-emerald-500 to-teal-700", icon: CubeTransparentIcon },
1292
1356
  { id: "prompts", title: labels.promptsTitle, subtitle: labels.promptsSubtitle, href: "/agents/prompts", gradient: "from-sky-500 to-blue-700", icon: ChatBubbleLeftEllipsisIcon }
1293
1357
  ];
1358
+ const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
1359
+ const isEmpty = allTiles.length === 0;
1294
1360
  const hero = /* @__PURE__ */ jsx(
1295
1361
  HeroSection,
1296
1362
  {
@@ -1301,7 +1367,15 @@ function AgentsIndexPageView({ labels }) {
1301
1367
  gradient: "from-violet-500 to-indigo-700"
1302
1368
  }
1303
1369
  );
1304
- const content = /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: tiles.map((tile) => {
1370
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
1371
+ SearchBar,
1372
+ {
1373
+ searchTerm,
1374
+ onSearchChange: setSearchTerm,
1375
+ placeholder: labels.searchPlaceholder ?? labels.title
1376
+ }
1377
+ ) : void 0;
1378
+ const content = /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
1305
1379
  const Icon = tile.icon;
1306
1380
  return /* @__PURE__ */ jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsx(
1307
1381
  EntityCard,
@@ -1313,7 +1387,7 @@ function AgentsIndexPageView({ labels }) {
1313
1387
  }
1314
1388
  ) }, tile.id);
1315
1389
  }) });
1316
- return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content });
1390
+ return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content });
1317
1391
  }
1318
1392
  function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublish }) {
1319
1393
  const selectedWorkflow = workflows[0] ?? null;
@@ -1399,6 +1473,7 @@ var BADGE_COLOR = {
1399
1473
  };
1400
1474
  function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onView, onViewTimeline }) {
1401
1475
  const [statusFilter, setStatusFilter] = useState("all");
1476
+ const [searchTerm, setSearchTerm] = useState("");
1402
1477
  const statusOptions = useMemo(() => [
1403
1478
  { value: "all", label: labels.filterAll },
1404
1479
  { value: "pending", label: labels.statusPending },
@@ -1423,7 +1498,16 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1423
1498
  return status;
1424
1499
  }
1425
1500
  };
1426
- const filteredRuns = statusFilter === "all" ? runs : runs.filter((run) => run.status === statusFilter);
1501
+ const allRuns = runs;
1502
+ const term = searchTerm.trim().toLowerCase();
1503
+ const filteredRuns = allRuns.filter((run) => {
1504
+ if (statusFilter !== "all" && run.status !== statusFilter) return false;
1505
+ if (term && !run.id.toLowerCase().includes(term) && !run.workflowId.toLowerCase().includes(term)) {
1506
+ return false;
1507
+ }
1508
+ return true;
1509
+ });
1510
+ const isEmpty = allRuns.length === 0;
1427
1511
  const hero = /* @__PURE__ */ jsx(
1428
1512
  HeroSection,
1429
1513
  {
@@ -1444,6 +1528,14 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1444
1528
  ) })
1445
1529
  }
1446
1530
  );
1531
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
1532
+ SearchBar,
1533
+ {
1534
+ searchTerm,
1535
+ onSearchChange: setSearchTerm,
1536
+ placeholder: labels.searchPlaceholder ?? labels.title
1537
+ }
1538
+ ) : void 0;
1447
1539
  const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRuns.map((run) => /* @__PURE__ */ jsxs(
1448
1540
  EntityCard,
1449
1541
  {
@@ -1470,7 +1562,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
1470
1562
  },
1471
1563
  run.id
1472
1564
  )) });
1473
- return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content });
1565
+ return /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content });
1474
1566
  }
1475
1567
  function RunTimelinePageView({ labels, entries, loading, runId }) {
1476
1568
  const hero = /* @__PURE__ */ jsx(
@@ -1581,6 +1673,18 @@ function ConnectionsPageView({
1581
1673
  }) {
1582
1674
  const [createOpen, setCreateOpen] = useState(false);
1583
1675
  const [editing, setEditing] = useState(null);
1676
+ const [searchTerm, setSearchTerm] = useState("");
1677
+ const allConnections = connections;
1678
+ const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
1679
+ const isEmpty = allConnections.length === 0;
1680
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
1681
+ SearchBar,
1682
+ {
1683
+ searchTerm,
1684
+ onSearchChange: setSearchTerm,
1685
+ placeholder: labels.searchPlaceholder ?? labels.title
1686
+ }
1687
+ ) : void 0;
1584
1688
  const hero = /* @__PURE__ */ jsx(
1585
1689
  HeroSection,
1586
1690
  {
@@ -1609,7 +1713,7 @@ function ConnectionsPageView({
1609
1713
  accent: "sky"
1610
1714
  }
1611
1715
  );
1612
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : connections.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: connections.map((conn) => /* @__PURE__ */ jsx(
1716
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsx(
1613
1717
  EntityCard,
1614
1718
  {
1615
1719
  accentGradient: "from-sky-500 to-indigo-600",
@@ -1644,7 +1748,7 @@ function ConnectionsPageView({
1644
1748
  conn.id
1645
1749
  )) });
1646
1750
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1647
- /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content, mobileAction }),
1751
+ /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content, mobileAction }),
1648
1752
  createOpen && /* @__PURE__ */ jsx(
1649
1753
  ConnectionEditor,
1650
1754
  {
@@ -1895,6 +1999,18 @@ function modelToFormValue(conn) {
1895
1999
  function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate, onDisable }) {
1896
2000
  const [createOpen, setCreateOpen] = useState(false);
1897
2001
  const [rotateFor, setRotateFor] = useState(null);
2002
+ const [searchTerm, setSearchTerm] = useState("");
2003
+ const allCredentials = credentials;
2004
+ const filteredCredentials = searchTerm.trim() ? allCredentials.filter((secret) => secret.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allCredentials;
2005
+ const isEmpty = allCredentials.length === 0;
2006
+ const summary = !isEmpty ? /* @__PURE__ */ jsx(
2007
+ SearchBar,
2008
+ {
2009
+ searchTerm,
2010
+ onSearchChange: setSearchTerm,
2011
+ placeholder: labels.searchPlaceholder ?? labels.title
2012
+ }
2013
+ ) : void 0;
1898
2014
  const typeOptions = [
1899
2015
  { value: "generic", label: labels.typeGeneric },
1900
2016
  { value: "api_key", label: labels.typeApiKey },
@@ -1929,7 +2045,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
1929
2045
  accent: "rose"
1930
2046
  }
1931
2047
  );
1932
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : credentials.length === 0 ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: credentials.map((secret) => /* @__PURE__ */ jsxs(
2048
+ const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredCredentials.map((secret) => /* @__PURE__ */ jsxs(
1933
2049
  EntityCard,
1934
2050
  {
1935
2051
  accentGradient: "from-rose-500 to-orange-700",
@@ -1974,7 +2090,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
1974
2090
  secret.secretId
1975
2091
  )) });
1976
2092
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1977
- /* @__PURE__ */ jsx(ManagementPageLayout, { hero, content, mobileAction }),
2093
+ /* @__PURE__ */ jsx(ManagementPageLayout, { hero, summary, content, mobileAction }),
1978
2094
  /* @__PURE__ */ jsx(
1979
2095
  GlassModal,
1980
2096
  {