@datatechsolutions/ui 3.11.0 → 3.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-K4AJL4BH.mjs → chunk-3U3CIARA.mjs} +3 -3
  6. package/dist/{chunk-K4AJL4BH.mjs.map → chunk-3U3CIARA.mjs.map} +1 -1
  7. package/dist/{chunk-TCIK6WHT.mjs → chunk-7DZ2C5IN.mjs} +4 -4
  8. package/dist/{chunk-TCIK6WHT.mjs.map → chunk-7DZ2C5IN.mjs.map} +1 -1
  9. package/dist/{chunk-H475T2N7.js → chunk-APONR6ZM.js} +135 -135
  10. package/dist/{chunk-H475T2N7.js.map → chunk-APONR6ZM.js.map} +1 -1
  11. package/dist/{chunk-7MPIYSRH.js → chunk-BTMHQCDB.js} +36 -36
  12. package/dist/{chunk-7MPIYSRH.js.map → chunk-BTMHQCDB.js.map} +1 -1
  13. package/dist/{chunk-G52HXPSB.js → chunk-CLXEVSGB.js} +13 -13
  14. package/dist/{chunk-G52HXPSB.js.map → chunk-CLXEVSGB.js.map} +1 -1
  15. package/dist/{chunk-GTJGX7IZ.js → chunk-CVCMJJ56.js} +10 -10
  16. package/dist/{chunk-GTJGX7IZ.js.map → chunk-CVCMJJ56.js.map} +1 -1
  17. package/dist/{chunk-35O2X7WY.js → chunk-DPXCJVJT.js} +9 -9
  18. package/dist/{chunk-35O2X7WY.js.map → chunk-DPXCJVJT.js.map} +1 -1
  19. package/dist/{chunk-ZJMYLUZ2.mjs → chunk-E3NMVWRL.mjs} +4 -4
  20. package/dist/{chunk-ZJMYLUZ2.mjs.map → chunk-E3NMVWRL.mjs.map} +1 -1
  21. package/dist/{chunk-KTEEXEAX.mjs → chunk-I77TTBYO.mjs} +6 -6
  22. package/dist/{chunk-KTEEXEAX.mjs.map → chunk-I77TTBYO.mjs.map} +1 -1
  23. package/dist/{chunk-3US2QXEF.mjs → chunk-IHOCYBHM.mjs} +3 -3
  24. package/dist/{chunk-3US2QXEF.mjs.map → chunk-IHOCYBHM.mjs.map} +1 -1
  25. package/dist/{chunk-NM3YTQ26.mjs → chunk-K3LIDGMA.mjs} +3 -3
  26. package/dist/{chunk-NM3YTQ26.mjs.map → chunk-K3LIDGMA.mjs.map} +1 -1
  27. package/dist/{chunk-Z6FZQOTW.js → chunk-KDVZIDVF.js} +28 -28
  28. package/dist/{chunk-Z6FZQOTW.js.map → chunk-KDVZIDVF.js.map} +1 -1
  29. package/dist/{chunk-2AJ73ULK.mjs → chunk-LHAOIPYP.mjs} +3 -3
  30. package/dist/{chunk-2AJ73ULK.mjs.map → chunk-LHAOIPYP.mjs.map} +1 -1
  31. package/dist/{chunk-GKI74CPB.js → chunk-LM6BJOKX.js} +55 -55
  32. package/dist/{chunk-GKI74CPB.js.map → chunk-LM6BJOKX.js.map} +1 -1
  33. package/dist/{chunk-BO3RXG6M.js → chunk-MN777KLN.js} +45 -45
  34. package/dist/{chunk-BO3RXG6M.js.map → chunk-MN777KLN.js.map} +1 -1
  35. package/dist/{chunk-62BD4WLW.js → chunk-NW32BM3F.js} +34 -34
  36. package/dist/{chunk-62BD4WLW.js.map → chunk-NW32BM3F.js.map} +1 -1
  37. package/dist/{chunk-R3CGJK7D.mjs → chunk-O4DIKNNH.mjs} +3 -3
  38. package/dist/{chunk-R3CGJK7D.mjs.map → chunk-O4DIKNNH.mjs.map} +1 -1
  39. package/dist/{chunk-BCJATFZE.js → chunk-OD2AZBEX.js} +25 -25
  40. package/dist/{chunk-BCJATFZE.js.map → chunk-OD2AZBEX.js.map} +1 -1
  41. package/dist/{chunk-35P352JX.mjs → chunk-OKCEK7GH.mjs} +3 -3
  42. package/dist/{chunk-35P352JX.mjs.map → chunk-OKCEK7GH.mjs.map} +1 -1
  43. package/dist/{chunk-O2CUOJ74.js → chunk-OO4YMN4P.js} +4 -4
  44. package/dist/{chunk-O2CUOJ74.js.map → chunk-OO4YMN4P.js.map} +1 -1
  45. package/dist/{chunk-6TKCMQ75.js → chunk-OSXBMLZP.js} +68 -68
  46. package/dist/{chunk-6TKCMQ75.js.map → chunk-OSXBMLZP.js.map} +1 -1
  47. package/dist/{chunk-7V7WEXHS.mjs → chunk-Q6MMJYEG.mjs} +3 -3
  48. package/dist/{chunk-7V7WEXHS.mjs.map → chunk-Q6MMJYEG.mjs.map} +1 -1
  49. package/dist/{chunk-PHBZ3TXE.js → chunk-QASAHGLE.js} +4 -4
  50. package/dist/{chunk-PHBZ3TXE.js.map → chunk-QASAHGLE.js.map} +1 -1
  51. package/dist/{chunk-7D52TFVL.mjs → chunk-QDW3IJIL.mjs} +3 -3
  52. package/dist/{chunk-7D52TFVL.mjs.map → chunk-QDW3IJIL.mjs.map} +1 -1
  53. package/dist/{chunk-HUAWGBYL.mjs → chunk-QKWNQOJB.mjs} +3 -3
  54. package/dist/{chunk-HUAWGBYL.mjs.map → chunk-QKWNQOJB.mjs.map} +1 -1
  55. package/dist/{chunk-NRVV4PHB.mjs → chunk-S46LUR7O.mjs} +7 -7
  56. package/dist/{chunk-NRVV4PHB.mjs.map → chunk-S46LUR7O.mjs.map} +1 -1
  57. package/dist/{chunk-37FWIPYO.mjs → chunk-S4LHC5SF.mjs} +3 -3
  58. package/dist/{chunk-37FWIPYO.mjs.map → chunk-S4LHC5SF.mjs.map} +1 -1
  59. package/dist/{chunk-JTD3BBVI.js → chunk-SSKKTSMA.js} +35 -35
  60. package/dist/{chunk-JTD3BBVI.js.map → chunk-SSKKTSMA.js.map} +1 -1
  61. package/dist/{chunk-ZGVN23J4.js → chunk-TIJXCRM4.js} +3 -3
  62. package/dist/{chunk-ZGVN23J4.js.map → chunk-TIJXCRM4.js.map} +1 -1
  63. package/dist/{chunk-7KPMLHPR.mjs → chunk-VHU5FWFB.mjs} +3 -3
  64. package/dist/{chunk-7KPMLHPR.mjs.map → chunk-VHU5FWFB.mjs.map} +1 -1
  65. package/dist/index.js +663 -663
  66. package/dist/index.mjs +2 -2
  67. package/dist/platform/admin/index.js +10 -10
  68. package/dist/platform/admin/index.mjs +4 -4
  69. package/dist/platform/agents-workspace.js +7 -7
  70. package/dist/platform/agents-workspace.mjs +6 -6
  71. package/dist/platform/app-shell.js +4 -4
  72. package/dist/platform/app-shell.mjs +3 -3
  73. package/dist/platform/auth/index.js +22 -22
  74. package/dist/platform/auth/index.mjs +4 -4
  75. package/dist/platform/billing/index.js +4 -4
  76. package/dist/platform/billing/index.mjs +3 -3
  77. package/dist/platform/impersonation/index.js +4 -4
  78. package/dist/platform/impersonation/index.mjs +3 -3
  79. package/dist/platform/index.js +78 -78
  80. package/dist/platform/index.mjs +18 -18
  81. package/dist/platform/pages/index.js +471 -473
  82. package/dist/platform/pages/index.js.map +1 -1
  83. package/dist/platform/pages/index.mjs +173 -175
  84. package/dist/platform/pages/index.mjs.map +1 -1
  85. package/dist/platform/settings/index.js +7 -7
  86. package/dist/platform/settings/index.mjs +6 -6
  87. package/dist/platform/workflow-canvas-shell.js +5 -5
  88. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  89. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { adaptWorkflowGraphToUi, formatDurationMs } from '../../chunk-UQXVCVAN.mjs';
3
- import { WorkflowWorkspace } from '../../chunk-TCIK6WHT.mjs';
4
- export { RolesPageView, UsersPageView } from '../../chunk-TCIK6WHT.mjs';
5
- import { DatasourceModal, findDialect, findCategory, DIALECT_CATEGORIES } from '../../chunk-37FWIPYO.mjs';
6
- export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-37FWIPYO.mjs';
7
- import { defaultRuleForm, RuleForm, ExecutionTimelinePanel, defaultRuleCondition, defaultRuleAction, RuleConditionBuilder, RuleActionBuilder } from '../../chunk-ZJMYLUZ2.mjs';
3
+ import { WorkflowWorkspace } from '../../chunk-7DZ2C5IN.mjs';
4
+ export { RolesPageView, UsersPageView } from '../../chunk-7DZ2C5IN.mjs';
5
+ import { DatasourceModal, findDialect, findCategory, DIALECT_CATEGORIES } from '../../chunk-S4LHC5SF.mjs';
6
+ export { DIALECT_CATEGORIES, DatasourceFormModal, DatasourceModal, findCategory, findDialect } from '../../chunk-S4LHC5SF.mjs';
7
+ import { defaultRuleForm, RuleForm, ExecutionTimelinePanel, defaultRuleCondition, defaultRuleAction, RuleConditionBuilder, RuleActionBuilder } from '../../chunk-E3NMVWRL.mjs';
8
8
  import '../../chunk-JB6RNAD2.mjs';
9
9
  import '../../chunk-LEXBTVGM.mjs';
10
- import '../../chunk-3US2QXEF.mjs';
11
- import { HeroSection, SearchBar, PageLoadingState, PageEmptyState, EntityCard, CreateActionButton, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId, ListCard, ListCardItem, Avatar, SectionCard, Tabs, TabsList, TabsTrigger, TabsContent, StepIndicator, FilterTileButton, FormToggle, Spinner, StatusBadge, ChipPicker, FormCheckbox, SegmentedControl, DatePicker, TimePicker } from '../../chunk-35P352JX.mjs';
10
+ import '../../chunk-IHOCYBHM.mjs';
11
+ import { HeroSection, SearchBar, PageLoadingState, PageEmptyState, EntityCard, CreateActionButton, GlassModal, FormGrid, FormSelect, FormInput, FormTextarea, SectionHeader, Text, Form, FormActionsRow, Table, TableHead, TableRow, TableHeader, TableBody, TableCell, InlineForm, CopyableId, ListCard, ListCardItem, Avatar, SectionCard, Tabs, TabsList, TabsTrigger, TabsContent, StepIndicator, FilterTileButton, FormToggle, Spinner, StatusBadge, ChipPicker, FormCheckbox, SegmentedControl, DatePicker, TimePicker } from '../../chunk-OKCEK7GH.mjs';
12
+ import '../../chunk-7VJ7CMMT.mjs';
12
13
  import '../../chunk-IGOMJHC6.mjs';
13
14
  import '../../chunk-3AY5HIQ6.mjs';
14
- import '../../chunk-7VJ7CMMT.mjs';
15
15
  import '../../chunk-PLTLRL2V.mjs';
16
16
  import { Badge, Button } from '../../chunk-WR55H7DH.mjs';
17
17
  import '../../chunk-D2JF6C3E.mjs';
@@ -962,7 +962,16 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
962
962
  title: labels.title,
963
963
  subtitle: labels.subtitle,
964
964
  gradient: "from-fuchsia-500 to-purple-700",
965
- toolbar: /* @__PURE__ */ jsx(
965
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
966
+ SearchBar,
967
+ {
968
+ searchTerm,
969
+ onSearchChange: setSearchTerm,
970
+ placeholder: labels.searchPlaceholder ?? labels.title,
971
+ noBorder: true
972
+ }
973
+ ) : void 0,
974
+ actions: /* @__PURE__ */ jsx(
966
975
  CreateActionButton,
967
976
  {
968
977
  mode: "desktop",
@@ -982,43 +991,33 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, o
982
991
  accent: "fuchsia"
983
992
  }
984
993
  );
985
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
986
- /* @__PURE__ */ jsx(
987
- SearchBar,
988
- {
989
- searchTerm,
990
- onSearchChange: setSearchTerm,
991
- placeholder: labels.searchPlaceholder ?? labels.title
992
- }
993
- ),
994
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsx(
995
- EntityCard,
996
- {
997
- accentGradient: "from-fuchsia-500 to-purple-700",
998
- icon: /* @__PURE__ */ 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__ */ jsx(AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
999
- title: rule.name,
1000
- subtitle: `${labels.order}: ${rule.order ?? 0}`,
1001
- status: /* @__PURE__ */ jsx(Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1002
- footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1003
- /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1004
- /* @__PURE__ */ jsx(
1005
- Button,
1006
- {
1007
- type: "button",
1008
- size: "sm",
1009
- color: "rose",
1010
- onClick: () => {
1011
- if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1012
- },
1013
- children: labels.delete
1014
- }
1015
- )
1016
- ] }),
1017
- children: rule.description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1018
- },
1019
- rule.ruleId
1020
- )) })
1021
- ] });
994
+ 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(
995
+ EntityCard,
996
+ {
997
+ accentGradient: "from-fuchsia-500 to-purple-700",
998
+ icon: /* @__PURE__ */ 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__ */ jsx(AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
999
+ title: rule.name,
1000
+ subtitle: `${labels.order}: ${rule.order ?? 0}`,
1001
+ status: /* @__PURE__ */ jsx(Badge, { color: rule.enabled ? "emerald" : "zinc", children: rule.enabled ? labels.enabled : labels.disabled }),
1002
+ footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1003
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(rule), children: labels.edit }),
1004
+ /* @__PURE__ */ jsx(
1005
+ Button,
1006
+ {
1007
+ type: "button",
1008
+ size: "sm",
1009
+ color: "rose",
1010
+ onClick: () => {
1011
+ if (window.confirm(labels.deleteConfirm)) onDelete(rule);
1012
+ },
1013
+ children: labels.delete
1014
+ }
1015
+ )
1016
+ ] }),
1017
+ children: rule.description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: rule.description })
1018
+ },
1019
+ rule.ruleId
1020
+ )) });
1022
1021
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1023
1022
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1024
1023
  hero,
@@ -1319,7 +1318,16 @@ function DatasourcesPageView({
1319
1318
  title: labels.title,
1320
1319
  subtitle: labels.subtitle,
1321
1320
  gradient: "from-amber-500 to-orange-600",
1322
- toolbar: /* @__PURE__ */ jsx(
1321
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
1322
+ SearchBar,
1323
+ {
1324
+ searchTerm,
1325
+ onSearchChange: setSearchTerm,
1326
+ placeholder: labels.searchPlaceholder ?? labels.title,
1327
+ noBorder: true
1328
+ }
1329
+ ) : void 0,
1330
+ actions: /* @__PURE__ */ jsx(
1323
1331
  CreateActionButton,
1324
1332
  {
1325
1333
  mode: "desktop",
@@ -1339,14 +1347,6 @@ function DatasourcesPageView({
1339
1347
  accent: "amber"
1340
1348
  }
1341
1349
  ),
1342
- !isEmpty && /* @__PURE__ */ jsx(
1343
- SearchBar,
1344
- {
1345
- searchTerm,
1346
- onSearchChange: setSearchTerm,
1347
- placeholder: labels.searchPlaceholder ?? labels.title
1348
- }
1349
- ),
1350
1350
  isEmpty ? /* @__PURE__ */ jsx(
1351
1351
  PageEmptyState,
1352
1352
  {
@@ -1762,7 +1762,16 @@ function ConnectionsPageView({
1762
1762
  title: labels.title,
1763
1763
  subtitle: labels.subtitle,
1764
1764
  gradient: "from-sky-500 to-indigo-600",
1765
- toolbar: /* @__PURE__ */ jsx(
1765
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
1766
+ SearchBar,
1767
+ {
1768
+ searchTerm,
1769
+ onSearchChange: setSearchTerm,
1770
+ placeholder: labels.searchPlaceholder ?? labels.title,
1771
+ noBorder: true
1772
+ }
1773
+ ) : void 0,
1774
+ actions: /* @__PURE__ */ jsx(
1766
1775
  CreateActionButton,
1767
1776
  {
1768
1777
  mode: "desktop",
@@ -1782,50 +1791,40 @@ function ConnectionsPageView({
1782
1791
  accent: "sky"
1783
1792
  }
1784
1793
  );
1785
- const content = loading ? /* @__PURE__ */ jsx(PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsx(PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1786
- /* @__PURE__ */ jsx(
1787
- SearchBar,
1788
- {
1789
- searchTerm,
1790
- onSearchChange: setSearchTerm,
1791
- placeholder: labels.searchPlaceholder ?? labels.title
1792
- }
1793
- ),
1794
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsx(
1795
- EntityCard,
1796
- {
1797
- accentGradient: "from-sky-500 to-indigo-600",
1798
- icon: /* @__PURE__ */ 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__ */ jsx(LinkIcon, { className: "h-6 w-6" }) }),
1799
- title: conn.name,
1800
- subtitle: providerLabel(conn.providerSlug),
1801
- status: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
1802
- /* @__PURE__ */ jsx(Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1803
- conn.credentialRef ? /* @__PURE__ */ jsx(Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsx(Badge, { color: "amber", children: "No secret" })
1804
- ] }),
1805
- footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1806
- /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1807
- /* @__PURE__ */ jsx(
1808
- Button,
1809
- {
1810
- type: "button",
1811
- size: "sm",
1812
- color: "rose",
1813
- onClick: async () => {
1814
- if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1815
- },
1816
- children: labels.delete
1817
- }
1818
- )
1819
- ] }),
1820
- children: /* @__PURE__ */ jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1821
- conn.region && /* @__PURE__ */ jsx(Row, { label: "Region", value: conn.region }),
1822
- conn.endpoint && /* @__PURE__ */ jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1823
- conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1824
- ] })
1825
- },
1826
- conn.id
1827
- )) })
1828
- ] });
1794
+ 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(
1795
+ EntityCard,
1796
+ {
1797
+ accentGradient: "from-sky-500 to-indigo-600",
1798
+ icon: /* @__PURE__ */ 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__ */ jsx(LinkIcon, { className: "h-6 w-6" }) }),
1799
+ title: conn.name,
1800
+ subtitle: providerLabel(conn.providerSlug),
1801
+ status: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
1802
+ /* @__PURE__ */ jsx(Badge, { color: conn.enabled ? "emerald" : "zinc", children: conn.enabled ? labels.enable : labels.disable }),
1803
+ conn.credentialRef ? /* @__PURE__ */ jsx(Badge, { color: "indigo", children: "Secret set" }) : /* @__PURE__ */ jsx(Badge, { color: "amber", children: "No secret" })
1804
+ ] }),
1805
+ footer: /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1806
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", outline: true, onClick: () => setEditing(conn), children: labels.edit }),
1807
+ /* @__PURE__ */ jsx(
1808
+ Button,
1809
+ {
1810
+ type: "button",
1811
+ size: "sm",
1812
+ color: "rose",
1813
+ onClick: async () => {
1814
+ if (window.confirm(labels.deleteConfirm)) await onDelete(conn);
1815
+ },
1816
+ children: labels.delete
1817
+ }
1818
+ )
1819
+ ] }),
1820
+ children: /* @__PURE__ */ jsxs("dl", { className: "mt-1 space-y-0.5 text-xs text-slate-500 dark:text-slate-400", children: [
1821
+ conn.region && /* @__PURE__ */ jsx(Row, { label: "Region", value: conn.region }),
1822
+ conn.endpoint && /* @__PURE__ */ jsx(Row, { label: "Endpoint", value: conn.endpoint }),
1823
+ conn.modelFilter && conn.modelFilter.length > 0 && /* @__PURE__ */ jsx(Row, { label: "Models", value: conn.modelFilter.join(", ") })
1824
+ ] })
1825
+ },
1826
+ conn.id
1827
+ )) });
1829
1828
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1830
1829
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1831
1830
  hero,
@@ -2283,6 +2282,15 @@ function AgentsWorkspacePageView({
2283
2282
  title: labels.title,
2284
2283
  subtitle: labels.subtitle,
2285
2284
  gradient: "from-violet-500 to-indigo-700",
2285
+ toolbar: !isEmpty ? /* @__PURE__ */ jsx(
2286
+ SearchBar,
2287
+ {
2288
+ searchTerm,
2289
+ onSearchChange: setSearchTerm,
2290
+ placeholder: labels.searchPlaceholder,
2291
+ noBorder: true
2292
+ }
2293
+ ) : void 0,
2286
2294
  actions: /* @__PURE__ */ jsx(
2287
2295
  CreateActionButton,
2288
2296
  {
@@ -2310,84 +2318,74 @@ function AgentsWorkspacePageView({
2310
2318
  message: labels.emptyMessage,
2311
2319
  iconName: "folder-open"
2312
2320
  }
2313
- ) : /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2314
- /* @__PURE__ */ jsx(
2315
- SearchBar,
2316
- {
2317
- searchTerm,
2318
- onSearchChange: setSearchTerm,
2319
- placeholder: labels.searchPlaceholder
2320
- }
2321
- ),
2322
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2323
- /* @__PURE__ */ jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsx(ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2324
- const id = String(agent.agentId ?? agent.id ?? "");
2325
- const active = id === selectedId;
2326
- const initials = deriveInitials(String(agent.name ?? id));
2327
- const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2328
- return /* @__PURE__ */ jsx(
2329
- ListCardItem,
2330
- {
2331
- leading: /* @__PURE__ */ jsx(Avatar, { tone: active ? "violet" : "slate", initials }),
2332
- trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxs(Badge, { color: "emerald", children: [
2333
- "v",
2334
- agent.activePromptVersion
2335
- ] }) : /* @__PURE__ */ jsx(Badge, { color: "zinc", children: "draft" }),
2336
- pressable: true,
2337
- onPress: () => {
2338
- setSelectedId(id);
2339
- onSelectAgent?.(id);
2340
- },
2341
- className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2342
- children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2343
- /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2344
- modelName && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2345
- ] })
2346
- },
2347
- id
2348
- );
2349
- }) }) }),
2350
- /* @__PURE__ */ jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsx(
2351
- AgentDetail,
2352
- {
2353
- agent: selectedAgent,
2354
- labels,
2355
- models,
2356
- tools,
2357
- connections,
2358
- prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2359
- onUpdateAgent,
2360
- onDeleteAgent,
2361
- onCreatePrompt,
2362
- onActivatePrompt,
2363
- onAttachTool,
2364
- onDetachTool,
2365
- onUpdateModel,
2366
- onCleared: () => {
2367
- setSelectedId(null);
2368
- onSelectAgent?.(null);
2369
- }
2370
- },
2371
- String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2372
- ) : /* @__PURE__ */ jsx(
2373
- SectionCard,
2321
+ ) : /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
2322
+ /* @__PURE__ */ jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsx(ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
2323
+ const id = String(agent.agentId ?? agent.id ?? "");
2324
+ const active = id === selectedId;
2325
+ const initials = deriveInitials(String(agent.name ?? id));
2326
+ const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
2327
+ return /* @__PURE__ */ jsx(
2328
+ ListCardItem,
2374
2329
  {
2375
- header: {
2376
- icon: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-4 w-4" }),
2377
- title: labels.noSelection,
2378
- subtitle: labels.noSelectionMessage
2330
+ leading: /* @__PURE__ */ jsx(Avatar, { tone: active ? "violet" : "slate", initials }),
2331
+ trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxs(Badge, { color: "emerald", children: [
2332
+ "v",
2333
+ agent.activePromptVersion
2334
+ ] }) : /* @__PURE__ */ jsx(Badge, { color: "zinc", children: "draft" }),
2335
+ pressable: true,
2336
+ onPress: () => {
2337
+ setSelectedId(id);
2338
+ onSelectAgent?.(id);
2379
2339
  },
2380
- children: /* @__PURE__ */ jsx(
2381
- PageEmptyState,
2382
- {
2383
- title: labels.noSelection,
2384
- message: labels.noSelectionMessage,
2385
- iconName: "folder-open"
2386
- }
2387
- )
2340
+ className: active ? "bg-violet-500/5 dark:bg-violet-400/10" : "",
2341
+ children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2342
+ /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold text-slate-900 dark:text-slate-100", children: String(agent.name ?? id) }),
2343
+ modelName && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-slate-500 dark:text-slate-400", children: modelName })
2344
+ ] })
2345
+ },
2346
+ id
2347
+ );
2348
+ }) }) }),
2349
+ /* @__PURE__ */ jsx("div", { children: selectedAgent ? /* @__PURE__ */ jsx(
2350
+ AgentDetail,
2351
+ {
2352
+ agent: selectedAgent,
2353
+ labels,
2354
+ models,
2355
+ tools,
2356
+ connections,
2357
+ prompts: promptsByAgent[String(selectedAgent.agentId ?? selectedAgent.id ?? "")] ?? [],
2358
+ onUpdateAgent,
2359
+ onDeleteAgent,
2360
+ onCreatePrompt,
2361
+ onActivatePrompt,
2362
+ onAttachTool,
2363
+ onDetachTool,
2364
+ onUpdateModel,
2365
+ onCleared: () => {
2366
+ setSelectedId(null);
2367
+ onSelectAgent?.(null);
2388
2368
  }
2389
- ) })
2390
- ] })
2369
+ },
2370
+ String(selectedAgent.agentId ?? selectedAgent.id ?? "")
2371
+ ) : /* @__PURE__ */ jsx(
2372
+ SectionCard,
2373
+ {
2374
+ header: {
2375
+ icon: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-4 w-4" }),
2376
+ title: labels.noSelection,
2377
+ subtitle: labels.noSelectionMessage
2378
+ },
2379
+ children: /* @__PURE__ */ jsx(
2380
+ PageEmptyState,
2381
+ {
2382
+ title: labels.noSelection,
2383
+ message: labels.noSelectionMessage,
2384
+ iconName: "folder-open"
2385
+ }
2386
+ )
2387
+ }
2388
+ ) })
2391
2389
  ] });
2392
2390
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
2393
2391
  hero,