@burdenoff/microfe-botmanor 2026.1027.2 → 2026.1028.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 (91) hide show
  1. package/dist/botlit/BotlitRoutes.js +142 -132
  2. package/dist/botlit/BotlitRoutes.js.map +1 -1
  3. package/dist/botlit/components/AgentApprovalPanel.js +144 -126
  4. package/dist/botlit/components/AgentApprovalPanel.js.map +1 -1
  5. package/dist/botlit/components/ModelRegistrationPanel.js +4 -4
  6. package/dist/botlit/components/RetentionStatusPanel.js +95 -0
  7. package/dist/botlit/components/RetentionStatusPanel.js.map +1 -0
  8. package/dist/botlit/components/VersionHistoryPanel.js +92 -83
  9. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  10. package/dist/botlit/hooks/index.js +1 -0
  11. package/dist/botlit/hooks/useRetention.js +31 -0
  12. package/dist/botlit/hooks/useRetention.js.map +1 -0
  13. package/dist/botlit/pages/A2AAgentDetailPage.js +212 -203
  14. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  15. package/dist/botlit/pages/A2ARegistryPage.js +129 -117
  16. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  17. package/dist/botlit/pages/AgentApprovalsPage.js +122 -110
  18. package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
  19. package/dist/botlit/pages/AgentBuilderPage.js +18 -18
  20. package/dist/botlit/pages/AgentDetailPage.js +298 -273
  21. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  22. package/dist/botlit/pages/AgentsListPage.js +145 -121
  23. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  24. package/dist/botlit/pages/BotChannelsTab.js +238 -226
  25. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  26. package/dist/botlit/pages/BotDetailPage.js +307 -288
  27. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  28. package/dist/botlit/pages/BotWorkflowTab.js +125 -116
  29. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  30. package/dist/botlit/pages/BotsListPage.js +159 -144
  31. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  32. package/dist/botlit/pages/BucketsPage.js +279 -258
  33. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  34. package/dist/botlit/pages/ChannelDetailPage.js +346 -328
  35. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  36. package/dist/botlit/pages/ChannelRoutesPage.js +10 -10
  37. package/dist/botlit/pages/ChannelsPage.js +163 -148
  38. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  39. package/dist/botlit/pages/DashboardPage.js +129 -114
  40. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  41. package/dist/botlit/pages/ExecutionDetailPage.js +145 -139
  42. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
  43. package/dist/botlit/pages/ExecutionsPage.js +14 -14
  44. package/dist/botlit/pages/InstalledPackagesPage.js +245 -227
  45. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  46. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +168 -156
  47. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  48. package/dist/botlit/pages/KnowledgeBasesPage.js +91 -79
  49. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  50. package/dist/botlit/pages/MCPServerDetailPage.js +200 -188
  51. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  52. package/dist/botlit/pages/MCPServersPage.js +170 -155
  53. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  54. package/dist/botlit/pages/PoliciesPage.js +115 -104
  55. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  56. package/dist/botlit/pages/PolicyDetailPage.js +368 -324
  57. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
  58. package/dist/botlit/pages/PromptStudioPage.js +106 -97
  59. package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
  60. package/dist/botlit/pages/PromptTemplateDetailPage.js +359 -347
  61. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
  62. package/dist/botlit/pages/PromptTemplatesPage.js +127 -112
  63. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
  64. package/dist/botlit/pages/RetrievalProfileDetailPage.js +219 -210
  65. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
  66. package/dist/botlit/pages/RetrievalProfilesPage.js +112 -103
  67. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  68. package/dist/botlit/pages/SettingsPage.js +264 -252
  69. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  70. package/dist/botlit/pages/SkillDetailPage.js +235 -226
  71. package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
  72. package/dist/botlit/pages/SkillsPage.js +115 -106
  73. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  74. package/dist/botlit/pages/StorePackageDetailPage.js +194 -188
  75. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
  76. package/dist/botlit/pages/StorePage.js +161 -155
  77. package/dist/botlit/pages/StorePage.js.map +1 -1
  78. package/dist/botlit/permissions/PermissionRequired.js +45 -0
  79. package/dist/botlit/permissions/PermissionRequired.js.map +1 -0
  80. package/dist/botlit/permissions/botmanorPermissions.js +72 -0
  81. package/dist/botlit/permissions/botmanorPermissions.js.map +1 -0
  82. package/dist/botlit/permissions/index.js +3 -0
  83. package/dist/botlit/permissions/useBotmanorPermissions.js +19 -0
  84. package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -0
  85. package/dist/botlit/utils/policyConfig.js +67 -42
  86. package/dist/botlit/utils/policyConfig.js.map +1 -1
  87. package/dist/generated/global-types.js.map +1 -1
  88. package/dist/generated/wspace-operations.js +90 -54
  89. package/dist/generated/wspace-operations.js.map +1 -1
  90. package/dist/generated/wspace-types.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,19 +1,22 @@
1
1
  import { useBotlit as e } from "../providers/BotlitProvider.js";
2
- import { isMCPServerHealthy as t, mcpServerDescription as n, mcpServerEndpoint as r, useCreateMCPServer as ee, useDeleteMCPServer as i, useMCPResources as a, useMCPServer as o, useMCPTools as s, useTestMCPConnection as c, useUpdateMCPServer as te, useUpdateMCPTool as ne } from "../hooks/useMCPServers.js";
3
- import { formatRelativeTime as l } from "../utils/formatters.js";
4
- import { PageLayout as u } from "../components/PageLayout.js";
2
+ import { isMCPServerHealthy as t, mcpServerDescription as n, mcpServerEndpoint as r, useCreateMCPServer as ee, useDeleteMCPServer as te, useMCPResources as ne, useMCPServer as i, useMCPTools as re, useTestMCPConnection as ie, useUpdateMCPServer as ae, useUpdateMCPTool as oe } from "../hooks/useMCPServers.js";
3
+ import { formatRelativeTime as a } from "../utils/formatters.js";
4
+ import { BOTMANOR_PERMISSIONS as o } from "../permissions/botmanorPermissions.js";
5
+ import { BotmanorPermissionGate as s, useBotmanorCan as c } from "../permissions/useBotmanorPermissions.js";
6
+ import { PageLayout as l } from "../components/PageLayout.js";
7
+ import { Button as u } from "../components/Button.js";
8
+ import "../permissions/index.js";
5
9
  import { Card as d, CardContent as f, CardDescription as p, CardHeader as m, CardTitle as h } from "../components/Card.js";
6
- import { Button as g } from "../components/Button.js";
7
- import { Badge as _, StatusBadge as re } from "../components/Badge.js";
10
+ import { Badge as g, StatusBadge as _ } from "../components/Badge.js";
8
11
  import { isNative as v, nativeImpact as y, nativeNotify as b } from "../../utils/nativeBridge.js";
9
12
  import { EmptyState as x } from "../components/EmptyState.js";
10
- import { FormField as S, Input as C, Textarea as w } from "../components/Input.js";
13
+ import { FormField as S, Input as C, Textarea as se } from "../components/Input.js";
11
14
  import "../hooks/index.js";
12
- import { useMemo as ie, useState as T } from "react";
13
- import { GlassCard as ae, PagePurpose as oe } from "@burdenoff/fe-libs/ui";
14
- import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
15
- import { useParams as se } from "react-router";
16
- import { AlertTriangle as ce, ArrowLeft as le, CheckCircle as ue, Clock as de, Edit as fe, ExternalLink as pe, Plug as k, PlugZap as A, RefreshCw as j, Save as M, Server as N, Settings as P, Trash2 as F, Wrench as I, XCircle as L } from "lucide-react";
15
+ import { useMemo as ce, useState as w } from "react";
16
+ import { GlassCard as le, PagePurpose as ue } from "@burdenoff/fe-libs/ui";
17
+ import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
18
+ import { useParams as de } from "react-router";
19
+ import { AlertTriangle as fe, ArrowLeft as pe, CheckCircle as me, Clock as he, Edit as ge, ExternalLink as O, Plug as k, PlugZap as A, RefreshCw as j, Save as M, Server as N, Settings as P, Trash2 as F, Wrench as I, XCircle as L } from "lucide-react";
17
20
  import { toast as R } from "sonner";
18
21
  //#region src/botlit/pages/MCPServerDetailPage.tsx
19
22
  function z(e, t) {
@@ -21,16 +24,16 @@ function z(e, t) {
21
24
  return typeof n == "string" && n !== "" ? n : void 0;
22
25
  }
23
26
  var B = ({ isNew: B }) => {
24
- let { serverId: V } = se(), { navigateTo: H } = e(), { data: U, loading: me, refetch: W } = o(B ? void 0 : V), { data: G } = s(B ? void 0 : V), { data: K } = a(B ? void 0 : V), [he, ge] = ee(), [_e, ve] = te(), [ye, be] = i(), [xe, Se] = c(), [Ce, we] = ne(), [Te, q] = T(!1), [Ee, J] = T(!1), [Y, X] = T({
27
+ let { serverId: V } = de(), { navigateTo: H } = e(), _e = c(), { data: U, loading: ve, refetch: W } = i(B ? void 0 : V), { data: G } = re(B ? void 0 : V), { data: K } = ne(B ? void 0 : V), [ye, be] = ee(), [xe, Se] = ae(), [Ce, we] = te(), [Te, Ee] = ie(), [De, Oe] = oe(), [ke, q] = w(!1), [Ae, J] = w(!1), [Y, X] = w({
25
28
  name: "",
26
29
  description: "",
27
30
  transport: "HTTP_JSON",
28
31
  baseUrl: "",
29
32
  authMethod: "NONE",
30
33
  secretRefId: ""
31
- }), [Z, De] = T(null), Q = ie(() => G.find((e) => e.name === Z) ?? null, [G, Z]), Oe = async () => {
34
+ }), [Z, je] = w(null), Q = ce(() => G.find((e) => e.name === Z) ?? null, [G, Z]), Me = async () => {
32
35
  if (!(!Y.name || !Y.baseUrl)) try {
33
- let e = await he({
36
+ let e = await ye({
34
37
  name: Y.name,
35
38
  type: Y.transport,
36
39
  config: {
@@ -44,15 +47,15 @@ var B = ({ isNew: B }) => {
44
47
  } catch (e) {
45
48
  R.error(e instanceof Error ? e.message : "Failed to connect MCP server");
46
49
  }
47
- }, ke = async () => {
50
+ }, Ne = async () => {
48
51
  if (V) try {
49
- await xe(V) ? R.success("MCP server is reachable") : R.error("MCP server did not respond"), W();
52
+ await Te(V) ? R.success("MCP server is reachable") : R.error("MCP server did not respond"), W();
50
53
  } catch (e) {
51
54
  R.error(e instanceof Error ? e.message : "Failed to test MCP connection");
52
55
  }
53
- }, Ae = async () => {
56
+ }, Pe = async () => {
54
57
  if (!(!V || !Y.name)) try {
55
- await _e({
58
+ await xe({
56
59
  serverId: V,
57
60
  input: {
58
61
  name: Y.name,
@@ -67,13 +70,13 @@ var B = ({ isNew: B }) => {
67
70
  } catch (e) {
68
71
  R.error(e instanceof Error ? e.message : "Failed to update MCP server");
69
72
  }
70
- }, je = async () => {
73
+ }, Fe = async () => {
71
74
  if (V) try {
72
- await ye(V), v() && b("success"), R.success("MCP server disconnected"), H("mcp");
75
+ await Ce(V), v() && b("success"), R.success("MCP server disconnected"), H("mcp");
73
76
  } catch (e) {
74
77
  v() && b("error"), R.error(e instanceof Error ? e.message : "Failed to disconnect MCP server");
75
78
  }
76
- }, Me = () => {
79
+ }, Ie = () => {
77
80
  U && (X({
78
81
  name: U.name,
79
82
  description: n(U) ?? "",
@@ -88,9 +91,9 @@ var B = ({ isNew: B }) => {
88
91
  case "MEDIUM": return "warning";
89
92
  default: return "success";
90
93
  }
91
- }, Ne = async (e, t) => {
94
+ }, Le = async (e, t) => {
92
95
  try {
93
- await Ce({
96
+ await De({
94
97
  toolId: e,
95
98
  input: { riskLevel: t }
96
99
  }), R.success("Tool risk level updated");
@@ -98,32 +101,32 @@ var B = ({ isNew: B }) => {
98
101
  R.error(e instanceof Error ? e.message : "Failed to update tool risk level");
99
102
  }
100
103
  };
101
- return B ? /* @__PURE__ */ D(u, {
104
+ return B ? /* @__PURE__ */ E(l, {
102
105
  title: "Add MCP Server",
103
106
  description: "Connect a new Model Context Protocol server",
104
- actions: /* @__PURE__ */ O("div", {
107
+ actions: /* @__PURE__ */ D("div", {
105
108
  className: "flex gap-2",
106
- children: [/* @__PURE__ */ D(g, {
109
+ children: [/* @__PURE__ */ E(u, {
107
110
  variant: "outline",
108
111
  onClick: () => H("mcp"),
109
112
  children: "Cancel"
110
- }), /* @__PURE__ */ D(g, {
111
- leftIcon: /* @__PURE__ */ D(M, { size: 16 }),
112
- onClick: Oe,
113
- isLoading: ge.loading,
113
+ }), /* @__PURE__ */ E(u, {
114
+ leftIcon: /* @__PURE__ */ E(M, { size: 16 }),
115
+ onClick: Me,
116
+ isLoading: be.loading,
114
117
  disabled: !Y.name || !Y.baseUrl,
115
118
  children: "Connect"
116
119
  })]
117
120
  }),
118
- children: /* @__PURE__ */ D("div", {
121
+ children: /* @__PURE__ */ E("div", {
119
122
  className: "max-w-2xl space-y-6",
120
- children: /* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(m, { children: /* @__PURE__ */ D(h, { children: "Server Configuration" }) }), /* @__PURE__ */ O(f, {
123
+ children: /* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(m, { children: /* @__PURE__ */ E(h, { children: "Server Configuration" }) }), /* @__PURE__ */ D(f, {
121
124
  className: "space-y-4",
122
125
  children: [
123
- /* @__PURE__ */ D(S, {
126
+ /* @__PURE__ */ E(S, {
124
127
  label: "Server Name",
125
128
  required: !0,
126
- children: /* @__PURE__ */ D(C, {
129
+ children: /* @__PURE__ */ E(C, {
127
130
  placeholder: "e.g., GitHub MCP Server",
128
131
  value: Y.name,
129
132
  onChange: (e) => X({
@@ -132,9 +135,9 @@ var B = ({ isNew: B }) => {
132
135
  })
133
136
  })
134
137
  }),
135
- /* @__PURE__ */ D(S, {
138
+ /* @__PURE__ */ E(S, {
136
139
  label: "Description",
137
- children: /* @__PURE__ */ D(w, {
140
+ children: /* @__PURE__ */ E(se, {
138
141
  placeholder: "What capabilities does this server provide?",
139
142
  value: Y.description,
140
143
  onChange: (e) => X({
@@ -144,12 +147,12 @@ var B = ({ isNew: B }) => {
144
147
  rows: 3
145
148
  })
146
149
  }),
147
- /* @__PURE__ */ O("div", {
150
+ /* @__PURE__ */ D("div", {
148
151
  className: "grid grid-cols-2 gap-4",
149
- children: [/* @__PURE__ */ D(S, {
152
+ children: [/* @__PURE__ */ E(S, {
150
153
  label: "Transport",
151
154
  required: !0,
152
- children: /* @__PURE__ */ O("select", {
155
+ children: /* @__PURE__ */ D("select", {
153
156
  className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
154
157
  value: Y.transport,
155
158
  onChange: (e) => X({
@@ -157,27 +160,27 @@ var B = ({ isNew: B }) => {
157
160
  transport: e.target.value
158
161
  }),
159
162
  children: [
160
- /* @__PURE__ */ D("option", {
163
+ /* @__PURE__ */ E("option", {
161
164
  value: "HTTP_JSON",
162
165
  children: "HTTP JSON"
163
166
  }),
164
- /* @__PURE__ */ D("option", {
167
+ /* @__PURE__ */ E("option", {
165
168
  value: "JSON_RPC",
166
169
  children: "JSON RPC"
167
170
  }),
168
- /* @__PURE__ */ D("option", {
171
+ /* @__PURE__ */ E("option", {
169
172
  value: "SSE",
170
173
  children: "Server-Sent Events"
171
174
  }),
172
- /* @__PURE__ */ D("option", {
175
+ /* @__PURE__ */ E("option", {
173
176
  value: "CUSTOM",
174
177
  children: "Custom"
175
178
  })
176
179
  ]
177
180
  })
178
- }), /* @__PURE__ */ D(S, {
181
+ }), /* @__PURE__ */ E(S, {
179
182
  label: "Auth Method",
180
- children: /* @__PURE__ */ O("select", {
183
+ children: /* @__PURE__ */ D("select", {
181
184
  className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
182
185
  value: Y.authMethod,
183
186
  onChange: (e) => X({
@@ -185,19 +188,19 @@ var B = ({ isNew: B }) => {
185
188
  authMethod: e.target.value
186
189
  }),
187
190
  children: [
188
- /* @__PURE__ */ D("option", {
191
+ /* @__PURE__ */ E("option", {
189
192
  value: "NONE",
190
193
  children: "None"
191
194
  }),
192
- /* @__PURE__ */ D("option", {
195
+ /* @__PURE__ */ E("option", {
193
196
  value: "API_KEY",
194
197
  children: "API Key"
195
198
  }),
196
- /* @__PURE__ */ D("option", {
199
+ /* @__PURE__ */ E("option", {
197
200
  value: "OAUTH",
198
201
  children: "OAuth"
199
202
  }),
200
- /* @__PURE__ */ D("option", {
203
+ /* @__PURE__ */ E("option", {
201
204
  value: "CUSTOM_HEADER",
202
205
  children: "Custom Header"
203
206
  })
@@ -205,10 +208,10 @@ var B = ({ isNew: B }) => {
205
208
  })
206
209
  })]
207
210
  }),
208
- /* @__PURE__ */ D(S, {
211
+ /* @__PURE__ */ E(S, {
209
212
  label: "Base URL",
210
213
  required: !0,
211
- children: /* @__PURE__ */ D(C, {
214
+ children: /* @__PURE__ */ E(C, {
212
215
  placeholder: "e.g., https://mcp.example.com",
213
216
  value: Y.baseUrl,
214
217
  onChange: (e) => X({
@@ -217,9 +220,9 @@ var B = ({ isNew: B }) => {
217
220
  })
218
221
  })
219
222
  }),
220
- Y.authMethod !== "NONE" && /* @__PURE__ */ D(S, {
223
+ Y.authMethod !== "NONE" && /* @__PURE__ */ E(S, {
221
224
  label: "Secret Reference ID",
222
- children: /* @__PURE__ */ D(C, {
225
+ children: /* @__PURE__ */ E(C, {
223
226
  placeholder: "e.g., secret-mcp-github",
224
227
  value: Y.secretRefId,
225
228
  onChange: (e) => X({
@@ -231,288 +234,297 @@ var B = ({ isNew: B }) => {
231
234
  ]
232
235
  })] })
233
236
  })
234
- }) : me ? /* @__PURE__ */ D(u, {
237
+ }) : ve ? /* @__PURE__ */ E(l, {
235
238
  title: "Loading...",
236
- children: /* @__PURE__ */ D("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
237
- }) : U ? /* @__PURE__ */ D(u, {
238
- title: /* @__PURE__ */ O("div", {
239
+ children: /* @__PURE__ */ E("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
240
+ }) : U ? /* @__PURE__ */ E(l, {
241
+ title: /* @__PURE__ */ D("div", {
239
242
  className: "flex items-center gap-3",
240
243
  children: [
241
- /* @__PURE__ */ D(g, {
244
+ /* @__PURE__ */ E(u, {
242
245
  variant: "ghost",
243
246
  size: "icon",
244
247
  onClick: () => H("mcp"),
245
- children: /* @__PURE__ */ D(le, { size: 20 })
248
+ children: /* @__PURE__ */ E(pe, { size: 20 })
246
249
  }),
247
- /* @__PURE__ */ D("div", {
250
+ /* @__PURE__ */ E("div", {
248
251
  className: "p-2 rounded-lg bg-action-primary-bg/10",
249
- children: t(U.status) ? /* @__PURE__ */ D(A, { className: "h-6 w-6 text-status-success-text" }) : /* @__PURE__ */ D(k, { className: "h-6 w-6 text-text-secondary" })
252
+ children: t(U.status) ? /* @__PURE__ */ E(A, { className: "h-6 w-6 text-status-success-text" }) : /* @__PURE__ */ E(k, { className: "h-6 w-6 text-text-secondary" })
250
253
  }),
251
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("div", {
254
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ D("div", {
252
255
  className: "flex items-center gap-2",
253
- children: [/* @__PURE__ */ D("span", { children: U.name }), /* @__PURE__ */ D(re, { status: U.status })]
254
- }), /* @__PURE__ */ D("p", {
256
+ children: [/* @__PURE__ */ E("span", { children: U.name }), /* @__PURE__ */ E(_, { status: U.status })]
257
+ }), /* @__PURE__ */ E("p", {
255
258
  className: "text-sm font-normal text-text-secondary",
256
259
  children: n(U)
257
260
  })] })
258
261
  ]
259
262
  }),
260
- actions: /* @__PURE__ */ O("div", {
263
+ actions: /* @__PURE__ */ D("div", {
261
264
  className: "flex gap-2",
262
- children: [/* @__PURE__ */ D(g, {
263
- variant: "outline",
264
- leftIcon: /* @__PURE__ */ D(j, { size: 16 }),
265
- onClick: ke,
266
- isLoading: Se.loading,
267
- children: "Test"
268
- }), Te ? /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(g, {
265
+ children: [/* @__PURE__ */ E(s, {
266
+ permission: o.MCP_TEST,
267
+ children: /* @__PURE__ */ E(u, {
268
+ variant: "outline",
269
+ leftIcon: /* @__PURE__ */ E(j, { size: 16 }),
270
+ onClick: Ne,
271
+ isLoading: Ee.loading,
272
+ children: "Test"
273
+ })
274
+ }), ke ? /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(u, {
269
275
  variant: "outline",
270
276
  onClick: () => q(!1),
271
277
  children: "Cancel"
272
- }), /* @__PURE__ */ D(g, {
273
- leftIcon: /* @__PURE__ */ D(M, { size: 16 }),
274
- onClick: Ae,
275
- isLoading: ve.loading,
278
+ }), /* @__PURE__ */ E(u, {
279
+ leftIcon: /* @__PURE__ */ E(M, { size: 16 }),
280
+ onClick: Pe,
281
+ isLoading: Se.loading,
276
282
  children: "Save"
277
- })] }) : /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(g, {
278
- variant: "outline",
279
- leftIcon: /* @__PURE__ */ D(fe, { size: 16 }),
280
- onClick: Me,
281
- children: "Edit"
282
- }), Ee ? /* @__PURE__ */ O("div", {
283
+ })] }) : /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(s, {
284
+ permission: o.MCP_UPDATE,
285
+ children: /* @__PURE__ */ E(u, {
286
+ variant: "outline",
287
+ leftIcon: /* @__PURE__ */ E(ge, { size: 16 }),
288
+ onClick: Ie,
289
+ children: "Edit"
290
+ })
291
+ }), Ae ? /* @__PURE__ */ D("div", {
283
292
  className: "flex gap-2",
284
- children: [/* @__PURE__ */ D(g, {
293
+ children: [/* @__PURE__ */ E(u, {
285
294
  variant: "outline",
286
295
  size: "sm",
287
296
  onClick: () => J(!1),
288
297
  children: "Cancel"
289
- }), /* @__PURE__ */ D(g, {
298
+ }), /* @__PURE__ */ E(u, {
290
299
  variant: "destructive",
291
300
  size: "sm",
292
301
  onClick: () => {
293
- y("medium"), je();
302
+ y("medium"), Fe();
294
303
  },
295
- isLoading: be.loading,
304
+ isLoading: we.loading,
296
305
  children: "Confirm"
297
306
  })]
298
- }) : /* @__PURE__ */ D(g, {
299
- variant: "destructive",
300
- leftIcon: /* @__PURE__ */ D(F, { size: 16 }),
301
- onClick: () => J(!0),
302
- children: "Delete"
307
+ }) : /* @__PURE__ */ E(s, {
308
+ permission: o.MCP_DELETE,
309
+ children: /* @__PURE__ */ E(u, {
310
+ variant: "destructive",
311
+ leftIcon: /* @__PURE__ */ E(F, { size: 16 }),
312
+ onClick: () => J(!0),
313
+ children: "Delete"
314
+ })
303
315
  })] })]
304
316
  }),
305
- children: /* @__PURE__ */ O("div", {
317
+ children: /* @__PURE__ */ D("div", {
306
318
  className: "space-y-6",
307
319
  children: [
308
- /* @__PURE__ */ D(oe, {
309
- icon: /* @__PURE__ */ D(N, { size: 18 }),
320
+ /* @__PURE__ */ E(ue, {
321
+ icon: /* @__PURE__ */ E(N, { size: 18 }),
310
322
  children: "This is one connected MCP server and everything it exposes to your agents — its health, the tools and resources it provides, and its connection settings. Check that it is healthy and that the right tools are available, then your agents can call them (subject to your tool policies) to take real actions."
311
323
  }),
312
- /* @__PURE__ */ O("div", {
324
+ /* @__PURE__ */ D("div", {
313
325
  className: "grid grid-cols-2 md:grid-cols-4 gap-4",
314
326
  children: [
315
- /* @__PURE__ */ O(ae, {
327
+ /* @__PURE__ */ D(le, {
316
328
  treatment: "glass",
317
329
  glow: !0,
318
330
  className: "p-6 text-center",
319
331
  children: [
320
- /* @__PURE__ */ D("div", {
332
+ /* @__PURE__ */ E("div", {
321
333
  className: "p-3 rounded-full bg-action-primary-bg/10 w-fit mx-auto mb-2",
322
334
  children: ((e) => {
323
335
  switch (e) {
324
- case "CONNECTED": return /* @__PURE__ */ D(ue, { className: "h-5 w-5 text-status-success-text" });
325
- case "CONNECTING": return /* @__PURE__ */ D(ce, { className: "h-5 w-5 text-status-warning-text" });
336
+ case "CONNECTED": return /* @__PURE__ */ E(me, { className: "h-5 w-5 text-status-success-text" });
337
+ case "CONNECTING": return /* @__PURE__ */ E(fe, { className: "h-5 w-5 text-status-warning-text" });
326
338
  case "ERROR":
327
- case "DISCONNECTED": return /* @__PURE__ */ D(L, { className: "h-5 w-5 text-status-error-text" });
328
- default: return /* @__PURE__ */ D(de, { className: "h-5 w-5 text-text-secondary" });
339
+ case "DISCONNECTED": return /* @__PURE__ */ E(L, { className: "h-5 w-5 text-status-error-text" });
340
+ default: return /* @__PURE__ */ E(he, { className: "h-5 w-5 text-text-secondary" });
329
341
  }
330
342
  })(U.status)
331
343
  }),
332
- /* @__PURE__ */ D("p", {
344
+ /* @__PURE__ */ E("p", {
333
345
  className: "text-lg font-bold capitalize text-text-primary",
334
346
  children: U.status.toLowerCase()
335
347
  }),
336
- /* @__PURE__ */ D("p", {
348
+ /* @__PURE__ */ E("p", {
337
349
  className: "text-sm text-text-secondary",
338
350
  children: "Health Status"
339
351
  })
340
352
  ]
341
353
  }),
342
- /* @__PURE__ */ D(d, { children: /* @__PURE__ */ O(f, {
354
+ /* @__PURE__ */ E(d, { children: /* @__PURE__ */ D(f, {
343
355
  className: "pt-6 text-center",
344
- children: [/* @__PURE__ */ D("p", {
356
+ children: [/* @__PURE__ */ E("p", {
345
357
  className: "text-3xl font-bold text-text-primary",
346
358
  children: G.length
347
- }), /* @__PURE__ */ D("p", {
359
+ }), /* @__PURE__ */ E("p", {
348
360
  className: "text-sm text-text-secondary",
349
361
  children: "Tools Available"
350
362
  })]
351
363
  }) }),
352
- /* @__PURE__ */ D(d, { children: /* @__PURE__ */ O(f, {
364
+ /* @__PURE__ */ E(d, { children: /* @__PURE__ */ D(f, {
353
365
  className: "pt-6 text-center",
354
- children: [/* @__PURE__ */ D("p", {
366
+ children: [/* @__PURE__ */ E("p", {
355
367
  className: "text-3xl font-bold text-text-primary",
356
368
  children: K.length
357
- }), /* @__PURE__ */ D("p", {
369
+ }), /* @__PURE__ */ E("p", {
358
370
  className: "text-sm text-text-secondary",
359
371
  children: "Resources"
360
372
  })]
361
373
  }) }),
362
- /* @__PURE__ */ D(d, { children: /* @__PURE__ */ O(f, {
374
+ /* @__PURE__ */ E(d, { children: /* @__PURE__ */ D(f, {
363
375
  className: "pt-6 text-center",
364
- children: [/* @__PURE__ */ D("p", {
376
+ children: [/* @__PURE__ */ E("p", {
365
377
  className: "text-3xl font-bold text-text-primary",
366
- children: U.lastConnectedAt ? l(U.lastConnectedAt) : "Never"
367
- }), /* @__PURE__ */ D("p", {
378
+ children: U.lastConnectedAt ? a(U.lastConnectedAt) : "Never"
379
+ }), /* @__PURE__ */ E("p", {
368
380
  className: "text-sm text-text-secondary",
369
381
  children: "Last Connected"
370
382
  })]
371
383
  }) })
372
384
  ]
373
385
  }),
374
- /* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(m, { children: /* @__PURE__ */ O(h, {
386
+ /* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(m, { children: /* @__PURE__ */ D(h, {
375
387
  className: "flex items-center gap-2",
376
- children: [/* @__PURE__ */ D(N, { size: 18 }), "Connection Details"]
377
- }) }), /* @__PURE__ */ O(f, { children: [/* @__PURE__ */ O("div", {
388
+ children: [/* @__PURE__ */ E(N, { size: 18 }), "Connection Details"]
389
+ }) }), /* @__PURE__ */ D(f, { children: [/* @__PURE__ */ D("div", {
378
390
  className: "grid grid-cols-2 md:grid-cols-4 gap-6",
379
391
  children: [
380
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
392
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
381
393
  className: "text-sm text-text-secondary",
382
394
  children: "Transport"
383
- }), /* @__PURE__ */ D(_, {
395
+ }), /* @__PURE__ */ E(g, {
384
396
  variant: "outline",
385
397
  className: "capitalize mt-1",
386
398
  children: U.type.toLowerCase().replace("_", " ")
387
399
  })] }),
388
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
400
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
389
401
  className: "text-sm text-text-secondary",
390
402
  children: "Base URL"
391
- }), /* @__PURE__ */ D("p", {
403
+ }), /* @__PURE__ */ E("p", {
392
404
  className: "font-medium text-sm truncate",
393
405
  children: r(U) ?? "—"
394
406
  })] }),
395
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
407
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
396
408
  className: "text-sm text-text-secondary",
397
409
  children: "Auth Method"
398
- }), /* @__PURE__ */ D(_, {
410
+ }), /* @__PURE__ */ E(g, {
399
411
  variant: "outline",
400
412
  className: "capitalize mt-1",
401
413
  children: (z(U.config, "authMethod") ?? "NONE").toLowerCase().replace("_", " ")
402
414
  })] }),
403
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
415
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
404
416
  className: "text-sm text-text-secondary",
405
417
  children: "Last Tested"
406
- }), /* @__PURE__ */ D("p", {
418
+ }), /* @__PURE__ */ E("p", {
407
419
  className: "font-medium",
408
- children: U.lastErrorAt ? l(U.lastErrorAt) : "Never"
420
+ children: U.lastErrorAt ? a(U.lastErrorAt) : "Never"
409
421
  })] })
410
422
  ]
411
- }), U.errorMessage && /* @__PURE__ */ O("div", {
423
+ }), U.errorMessage && /* @__PURE__ */ D("div", {
412
424
  className: "mt-4 p-3 bg-status-error-bg-subtle rounded-lg text-sm text-status-error-text",
413
425
  children: [
414
- /* @__PURE__ */ D("strong", { children: "Error:" }),
426
+ /* @__PURE__ */ E("strong", { children: "Error:" }),
415
427
  " ",
416
428
  U.errorMessage
417
429
  ]
418
430
  })] })] }),
419
- /* @__PURE__ */ O("div", {
431
+ /* @__PURE__ */ D("div", {
420
432
  className: "grid grid-cols-12 gap-6",
421
- children: [/* @__PURE__ */ D("div", {
433
+ children: [/* @__PURE__ */ E("div", {
422
434
  className: "col-span-5",
423
- children: /* @__PURE__ */ O(d, {
435
+ children: /* @__PURE__ */ D(d, {
424
436
  className: "h-full",
425
- children: [/* @__PURE__ */ O(m, { children: [/* @__PURE__ */ O(h, {
437
+ children: [/* @__PURE__ */ D(m, { children: [/* @__PURE__ */ D(h, {
426
438
  className: "flex items-center gap-2",
427
439
  children: [
428
- /* @__PURE__ */ D(I, { size: 18 }),
440
+ /* @__PURE__ */ E(I, { size: 18 }),
429
441
  "Tools (",
430
442
  G.length,
431
443
  ")"
432
444
  ]
433
- }), /* @__PURE__ */ D(p, { children: "Available tools from this MCP server" })] }), /* @__PURE__ */ D(f, {
445
+ }), /* @__PURE__ */ E(p, { children: "Available tools from this MCP server" })] }), /* @__PURE__ */ E(f, {
434
446
  className: "p-0",
435
- children: G.length > 0 ? /* @__PURE__ */ D("div", {
447
+ children: G.length > 0 ? /* @__PURE__ */ E("div", {
436
448
  className: "divide-y divide-border-subtle max-h-96 overflow-auto",
437
- children: G.map((e) => /* @__PURE__ */ O("button", {
449
+ children: G.map((e) => /* @__PURE__ */ D("button", {
438
450
  type: "button",
439
451
  className: `w-full text-left p-4 hover:bg-accent transition-colors ${Q?.id === e.id ? "bg-accent" : ""}`,
440
- onClick: () => De(e.name),
441
- children: [/* @__PURE__ */ O("div", {
452
+ onClick: () => je(e.name),
453
+ children: [/* @__PURE__ */ D("div", {
442
454
  className: "flex items-center justify-between gap-2",
443
- children: [/* @__PURE__ */ D("p", {
455
+ children: [/* @__PURE__ */ E("p", {
444
456
  className: "font-medium truncate",
445
457
  children: e.name
446
- }), /* @__PURE__ */ D(_, {
458
+ }), /* @__PURE__ */ E(g, {
447
459
  variant: $(e.riskLevel),
448
460
  className: "shrink-0",
449
461
  children: e.riskLevel
450
462
  })]
451
- }), /* @__PURE__ */ D("p", {
463
+ }), /* @__PURE__ */ E("p", {
452
464
  className: "text-sm text-text-secondary line-clamp-1",
453
465
  children: e.description
454
466
  })]
455
467
  }, e.id))
456
- }) : /* @__PURE__ */ O("div", {
468
+ }) : /* @__PURE__ */ D("div", {
457
469
  className: "p-8 text-center text-text-secondary",
458
- children: [/* @__PURE__ */ D(I, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }), /* @__PURE__ */ D("p", { children: "No tools available" })]
470
+ children: [/* @__PURE__ */ E(I, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }), /* @__PURE__ */ E("p", { children: "No tools available" })]
459
471
  })
460
472
  })]
461
473
  })
462
- }), /* @__PURE__ */ D("div", {
474
+ }), /* @__PURE__ */ E("div", {
463
475
  className: "col-span-7",
464
- children: Q ? /* @__PURE__ */ O(d, {
476
+ children: Q ? /* @__PURE__ */ D(d, {
465
477
  className: "h-full",
466
- children: [/* @__PURE__ */ D(m, { children: /* @__PURE__ */ O("div", {
478
+ children: [/* @__PURE__ */ E(m, { children: /* @__PURE__ */ D("div", {
467
479
  className: "flex items-start justify-between gap-4",
468
- children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D(h, { children: Q.name }), /* @__PURE__ */ D(p, { children: Q.description })] }), /* @__PURE__ */ D(_, {
480
+ children: [/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E(h, { children: Q.name }), /* @__PURE__ */ E(p, { children: Q.description })] }), /* @__PURE__ */ E(g, {
469
481
  variant: $(Q.riskLevel),
470
482
  children: Q.riskLevel
471
483
  })]
472
- }) }), /* @__PURE__ */ O(f, {
484
+ }) }), /* @__PURE__ */ D(f, {
473
485
  className: "space-y-4",
474
- children: [/* @__PURE__ */ O("div", { children: [
475
- /* @__PURE__ */ D("p", {
486
+ children: [/* @__PURE__ */ D("div", { children: [
487
+ /* @__PURE__ */ E("p", {
476
488
  className: "text-sm font-medium mb-2",
477
489
  children: "Risk Level"
478
490
  }),
479
- /* @__PURE__ */ O("select", {
491
+ /* @__PURE__ */ D("select", {
480
492
  className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
481
493
  value: Q.riskLevel,
482
- disabled: we.loading,
483
- onChange: (e) => void Ne(Q.id, e.target.value),
494
+ disabled: Oe.loading || !_e(o.MCP_UPDATE),
495
+ onChange: (e) => void Le(Q.id, e.target.value),
484
496
  children: [
485
- /* @__PURE__ */ D("option", {
497
+ /* @__PURE__ */ E("option", {
486
498
  value: "LOW",
487
499
  children: "Low — safe read/notify actions"
488
500
  }),
489
- /* @__PURE__ */ D("option", {
501
+ /* @__PURE__ */ E("option", {
490
502
  value: "MEDIUM",
491
503
  children: "Medium — state-changing actions"
492
504
  }),
493
- /* @__PURE__ */ D("option", {
505
+ /* @__PURE__ */ E("option", {
494
506
  value: "HIGH",
495
507
  children: "High — destructive or sensitive actions"
496
508
  })
497
509
  ]
498
510
  }),
499
- /* @__PURE__ */ D("p", {
511
+ /* @__PURE__ */ E("p", {
500
512
  className: "text-xs text-text-secondary mt-1",
501
513
  children: "Agents can only invoke tools up to the maximum risk level allowed by your workspace tool policies."
502
514
  })
503
- ] }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
515
+ ] }), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
504
516
  className: "text-sm font-medium mb-2",
505
517
  children: "Input Schema"
506
- }), /* @__PURE__ */ D("div", {
518
+ }), /* @__PURE__ */ E("div", {
507
519
  className: "p-3 bg-bg-sunken rounded-lg font-mono text-xs overflow-auto max-h-96",
508
- children: /* @__PURE__ */ D("pre", { children: JSON.stringify(Q.inputSchema, null, 2) })
520
+ children: /* @__PURE__ */ E("pre", { children: JSON.stringify(Q.inputSchema, null, 2) })
509
521
  })] })]
510
522
  })]
511
- }) : /* @__PURE__ */ D(d, {
523
+ }) : /* @__PURE__ */ E(d, {
512
524
  className: "h-full",
513
- children: /* @__PURE__ */ D(f, {
525
+ children: /* @__PURE__ */ E(f, {
514
526
  className: "h-full flex items-center justify-center",
515
- children: /* @__PURE__ */ D(x, {
527
+ children: /* @__PURE__ */ E(x, {
516
528
  illustration: "onboarding",
517
529
  title: "Select a tool",
518
530
  description: "Choose a tool from the list to view its details"
@@ -521,66 +533,66 @@ var B = ({ isNew: B }) => {
521
533
  })
522
534
  })]
523
535
  }),
524
- K.length > 0 && /* @__PURE__ */ O(d, { children: [/* @__PURE__ */ O(m, { children: [/* @__PURE__ */ D(h, { children: "Resources" }), /* @__PURE__ */ D(p, { children: "Available resources exposed by this server" })] }), /* @__PURE__ */ D(f, { children: /* @__PURE__ */ D("div", {
536
+ K.length > 0 && /* @__PURE__ */ D(d, { children: [/* @__PURE__ */ D(m, { children: [/* @__PURE__ */ E(h, { children: "Resources" }), /* @__PURE__ */ E(p, { children: "Available resources exposed by this server" })] }), /* @__PURE__ */ E(f, { children: /* @__PURE__ */ E("div", {
525
537
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
526
- children: K.map((e) => /* @__PURE__ */ O("div", {
538
+ children: K.map((e) => /* @__PURE__ */ D("div", {
527
539
  className: "p-4 border border-border-subtle rounded-lg hover:bg-accent/50 transition-colors",
528
- children: [/* @__PURE__ */ O("div", {
540
+ children: [/* @__PURE__ */ D("div", {
529
541
  className: "flex items-start justify-between",
530
- children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
542
+ children: [/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
531
543
  className: "font-medium",
532
544
  children: e.name
533
- }), /* @__PURE__ */ D("p", {
545
+ }), /* @__PURE__ */ E("p", {
534
546
  className: "text-sm text-text-secondary",
535
547
  children: e.description
536
- })] }), /* @__PURE__ */ D(pe, {
548
+ })] }), /* @__PURE__ */ E(O, {
537
549
  size: 14,
538
550
  className: "text-text-secondary"
539
551
  })]
540
- }), /* @__PURE__ */ O("div", {
552
+ }), /* @__PURE__ */ D("div", {
541
553
  className: "mt-2 flex items-center gap-2",
542
- children: [/* @__PURE__ */ D(_, {
554
+ children: [/* @__PURE__ */ E(g, {
543
555
  variant: "outline",
544
556
  className: "text-xs font-mono",
545
557
  children: e.mimeType || "unknown"
546
- }), /* @__PURE__ */ D("span", {
558
+ }), /* @__PURE__ */ E("span", {
547
559
  className: "text-xs text-text-secondary truncate",
548
560
  children: e.uri
549
561
  })]
550
562
  })]
551
563
  }, e.uri))
552
564
  }) })] }),
553
- /* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(m, { children: /* @__PURE__ */ O(h, {
565
+ /* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(m, { children: /* @__PURE__ */ D(h, {
554
566
  className: "flex items-center gap-2",
555
- children: [/* @__PURE__ */ D(P, { size: 18 }), "Metadata"]
556
- }) }), /* @__PURE__ */ D(f, { children: /* @__PURE__ */ O("div", {
567
+ children: [/* @__PURE__ */ E(P, { size: 18 }), "Metadata"]
568
+ }) }), /* @__PURE__ */ E(f, { children: /* @__PURE__ */ D("div", {
557
569
  className: "grid grid-cols-2 md:grid-cols-4 gap-6 text-sm",
558
570
  children: [
559
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
571
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
560
572
  className: "text-text-secondary",
561
573
  children: "Created"
562
- }), /* @__PURE__ */ D("p", {
574
+ }), /* @__PURE__ */ E("p", {
563
575
  className: "font-medium",
564
- children: l(U.createdAt)
576
+ children: a(U.createdAt)
565
577
  })] }),
566
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
578
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
567
579
  className: "text-text-secondary",
568
580
  children: "Updated"
569
- }), /* @__PURE__ */ D("p", {
581
+ }), /* @__PURE__ */ E("p", {
570
582
  className: "font-medium",
571
- children: l(U.updatedAt)
583
+ children: a(U.updatedAt)
572
584
  })] }),
573
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
585
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
574
586
  className: "text-text-secondary",
575
587
  children: "Last Connected"
576
- }), /* @__PURE__ */ D("p", {
588
+ }), /* @__PURE__ */ E("p", {
577
589
  className: "font-medium",
578
- children: U.lastConnectedAt ? l(U.lastConnectedAt) : "Never"
590
+ children: U.lastConnectedAt ? a(U.lastConnectedAt) : "Never"
579
591
  })] }),
580
- /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
592
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
581
593
  className: "text-text-secondary",
582
594
  children: "Credentials"
583
- }), /* @__PURE__ */ D(_, {
595
+ }), /* @__PURE__ */ E(g, {
584
596
  variant: U.credentialsHash ? "success" : "secondary",
585
597
  children: U.credentialsHash ? "Configured" : "None"
586
598
  })] })
@@ -588,13 +600,13 @@ var B = ({ isNew: B }) => {
588
600
  }) })] })
589
601
  ]
590
602
  })
591
- }) : /* @__PURE__ */ D(u, {
603
+ }) : /* @__PURE__ */ E(l, {
592
604
  title: "Server Not Found",
593
- children: /* @__PURE__ */ D(x, {
605
+ children: /* @__PURE__ */ E(x, {
594
606
  illustration: "empty-generic",
595
607
  title: "Server Not Found",
596
608
  description: "This MCP server doesn't exist.",
597
- action: /* @__PURE__ */ D(g, {
609
+ action: /* @__PURE__ */ E(u, {
598
610
  onClick: () => H("mcp"),
599
611
  children: "Back to MCP Servers"
600
612
  })