@burdenoff/microfe-vibecontrols 2026.601.19 → 2026.601.21

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.
@@ -1,56 +1,56 @@
1
- import { useAgentPluginsLazyQuery as e, useAgentSecretRevealLazyQuery as t, useCheckSessionHealthMutation as n, useCreateSessionMutation as r, useDeleteAgentMutation as i, useGetAgentQuery as a, useInstallAgentPluginMutation as ee, usePushAgentGatewayAuthMutation as te, useRemoveAgentPluginMutation as o, useSetupAgentGatewayAuthMutation as ne, useStartVibecontrolsAgentMutation as re, useStopVibecontrolsAgentMutation as ie, useUpdateAgentMutation as ae, useUpdateAgentPluginMutation as s, useVibecontrolsAgentHealthProbeStreamSubscription as oe, useVibecontrolsAgentHealthProbesQuery as se } from "../generated/wspace-operations.js";
2
- import { ConfirmDialog as ce } from "../components/shared/ConfirmDialog.js";
3
- import { QuotaExhaustedDialog as le } from "../components/shared/QuotaExhaustedDialog.js";
4
- import { getQuotaDialogContent as ue, isQuotaExhaustedError as de, markQuotaHandledLocally as fe } from "../utils/quotaUtils.js";
5
- import { useVibeControls as pe, useVibeNavigate as c } from "../providers/VibeControlsProvider.js";
6
- import { useVibeControlsStore as me } from "../store/vibeControlsStore.js";
7
- import { PageHeader as he } from "../components/shared/PageHeader.js";
8
- import { ErrorState as ge } from "../components/shared/ErrorState.js";
9
- import { EntityTagPicker as _e } from "../components/shared/EntityTagPicker.js";
10
- import { EmptyState as ve } from "../components/shared/EmptyState.js";
11
- import { StatusBadge as ye } from "../components/shared/StatusBadge.js";
1
+ import { useAgentPluginsLazyQuery as e, useAgentSecretRevealLazyQuery as t, useCheckSessionHealthMutation as n, useCreateSessionMutation as r, useDeleteAgentMutation as i, useGetAgentQuery as a, useInstallAgentPluginMutation as ee, useRemoveAgentPluginMutation as te, useSetupAgentGatewayAuthMutation as ne, useStartVibecontrolsAgentMutation as o, useStopVibecontrolsAgentMutation as re, useUpdateAgentMutation as ie, useUpdateAgentPluginMutation as ae, useVibecontrolsAgentHealthProbeStreamSubscription as s, useVibecontrolsAgentHealthProbesQuery as oe } from "../generated/wspace-operations.js";
2
+ import { ConfirmDialog as se } from "../components/shared/ConfirmDialog.js";
3
+ import { QuotaExhaustedDialog as ce } from "../components/shared/QuotaExhaustedDialog.js";
4
+ import { getQuotaDialogContent as le, isQuotaExhaustedError as ue, markQuotaHandledLocally as de } from "../utils/quotaUtils.js";
5
+ import { useVibeControls as fe, useVibeNavigate as pe } from "../providers/VibeControlsProvider.js";
6
+ import { useVibeControlsStore as c } from "../store/vibeControlsStore.js";
7
+ import { PageHeader as me } from "../components/shared/PageHeader.js";
8
+ import { ErrorState as he } from "../components/shared/ErrorState.js";
9
+ import { EntityTagPicker as ge } from "../components/shared/EntityTagPicker.js";
10
+ import { EmptyState as _e } from "../components/shared/EmptyState.js";
11
+ import { StatusBadge as ve } from "../components/shared/StatusBadge.js";
12
12
  import { Card as l } from "../components/shared/Card.js";
13
- import { useActiveAgentProfile as be } from "../hooks/useActiveAgentProfile.js";
13
+ import { useActiveAgentProfile as ye } from "../hooks/useActiveAgentProfile.js";
14
14
  import "../components/shared/index.js";
15
- import { isNative as xe, nativeCopyText as Se, nativeToast as Ce } from "../utils/nativeBridge.js";
16
- import { VIBE_PERMISSIONS as we } from "../constants/permissions.js";
17
- import { PageSkeleton as Te } from "../components/shared/PageSkeleton.js";
18
- import { AgentBackupTab as Ee } from "../components/agents/backup/AgentBackupTab.js";
19
- import { ConnectionLogPanel as De } from "../components/agents/ConnectionLogPanel.js";
20
- import { AgentMaintenanceTab as Oe } from "../components/agents/AgentMaintenanceTab.js";
21
- import { AgentConnectionRecovery as ke } from "../components/agents/AgentConnectionRecovery.js";
22
- import { AgentStorageConfig as Ae } from "../components/agents/AgentStorageConfig.js";
23
- import { AliasManager as je } from "../components/aliases/AliasManager.js";
24
- import { AgentStatusBadge as Me } from "../components/agents/AgentStatusBadge.js";
25
- import { RemoteTaskPermissionsCard as Ne } from "../components/agents/RemoteTaskPermissionsCard.js";
26
- import { PluginUIPanel as Pe } from "../components/agents/PluginUIPanel.js";
27
- import { OpenInBrowserEditorButton as Fe } from "../components/agents/OpenInBrowserEditorButton.js";
15
+ import { isNative as be, nativeCopyText as xe, nativeToast as Se } from "../utils/nativeBridge.js";
16
+ import { VIBE_PERMISSIONS as Ce } from "../constants/permissions.js";
17
+ import { PageSkeleton as we } from "../components/shared/PageSkeleton.js";
18
+ import { AgentBackupTab as Te } from "../components/agents/backup/AgentBackupTab.js";
19
+ import { ConnectionLogPanel as Ee } from "../components/agents/ConnectionLogPanel.js";
20
+ import { AgentMaintenanceTab as De } from "../components/agents/AgentMaintenanceTab.js";
21
+ import { AgentConnectionRecovery as Oe } from "../components/agents/AgentConnectionRecovery.js";
22
+ import { AgentStorageConfig as ke } from "../components/agents/AgentStorageConfig.js";
23
+ import { AliasManager as Ae } from "../components/aliases/AliasManager.js";
24
+ import { AgentStatusBadge as je } from "../components/agents/AgentStatusBadge.js";
25
+ import { RemoteTaskPermissionsCard as Me } from "../components/agents/RemoteTaskPermissionsCard.js";
26
+ import { PluginUIPanel as Ne } from "../components/agents/PluginUIPanel.js";
27
+ import { OpenInBrowserEditorButton as Pe } from "../components/agents/OpenInBrowserEditorButton.js";
28
28
  import "../components/agents/index.js";
29
- import { deriveAgentStatus as Ie } from "../utils/agentStatus.js";
30
- import { LogViewer as Le } from "../components/logs/LogViewer.js";
31
- import { ProfilesPanel as Re } from "../components/agent-manager/ProfilesPanel.js";
29
+ import { deriveAgentStatus as Fe } from "../utils/agentStatus.js";
30
+ import { LogViewer as Ie } from "../components/logs/LogViewer.js";
31
+ import { ProfilesPanel as Le } from "../components/agent-manager/ProfilesPanel.js";
32
32
  import "../components/agent-manager/index.js";
33
- import { NotesTabPanel as ze } from "../components/notes/NotesTabPanel.js";
33
+ import { NotesTabPanel as Re } from "../components/notes/NotesTabPanel.js";
34
34
  import "../components/notes/index.js";
35
- import { useQueryBackedTab as Be } from "../hooks/useQueryBackedTab.js";
36
- import { mintScopedIframeToken as Ve } from "../services/iframeToken.js";
37
- import { AddTabDialog as He } from "../components/plugins/AddTabDialog.js";
38
- import { PluginIframeMount as Ue } from "../components/plugins/PluginIframeMount.js";
39
- import { useCallback as u, useEffect as d, useMemo as We, useRef as f, useState as p } from "react";
40
- import { useI18n as Ge } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
41
- import { ArrowLeft as Ke, ArrowUpCircle as qe, Bot as Je, Check as Ye, CheckCircle2 as Xe, Clock as Ze, Command as Qe, Copy as $e, Cpu as et, Database as tt, Download as nt, Edit3 as rt, Eye as it, EyeOff as at, FileText as ot, HardDrive as st, Info as ct, Key as lt, Link2 as m, Loader2 as h, Monitor as ut, Play as dt, Plus as ft, Puzzle as pt, RefreshCw as mt, ScrollText as ht, Search as gt, Server as _t, Settings as vt, Shield as yt, Square as bt, Tag as xt, Terminal as St, Trash2 as Ct, Unlink as wt, Users as Tt, Wrench as Et, X as g, Zap as Dt } from "lucide-react";
42
- import { useParams as Ot } from "react-router-dom";
43
- import { usePermissions as kt } from "@burdenoff/fe-libs/shared/providers/shell";
44
- import { AnimatePresence as At, motion as _ } from "framer-motion";
35
+ import { useQueryBackedTab as ze } from "../hooks/useQueryBackedTab.js";
36
+ import { mintScopedIframeToken as Be } from "../services/iframeToken.js";
37
+ import { AddTabDialog as Ve } from "../components/plugins/AddTabDialog.js";
38
+ import { PluginIframeMount as He } from "../components/plugins/PluginIframeMount.js";
39
+ import { useCallback as u, useEffect as d, useMemo as Ue, useRef as f, useState as p } from "react";
40
+ import { useI18n as We } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
41
+ import { ArrowLeft as Ge, ArrowUpCircle as Ke, Bot as qe, Check as Je, CheckCircle2 as Ye, Clock as Xe, Command as Ze, Copy as Qe, Cpu as $e, Database as et, Download as tt, Edit3 as nt, Eye as rt, EyeOff as it, FileText as at, HardDrive as ot, Info as st, Key as ct, Link2 as lt, Loader2 as m, Monitor as ut, Play as dt, Plus as ft, Puzzle as pt, RefreshCw as mt, ScrollText as ht, Search as gt, Server as _t, Settings as vt, Shield as yt, Square as bt, Tag as xt, Terminal as St, Trash2 as Ct, Unlink as h, Users as wt, Wrench as Tt, X as g, Zap as Et } from "lucide-react";
42
+ import { useParams as Dt } from "react-router-dom";
43
+ import { usePermissions as Ot } from "@burdenoff/fe-libs/shared/providers/shell";
44
+ import { AnimatePresence as kt, motion as _ } from "framer-motion";
45
45
  import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
46
- import { Checkbox as jt } from "@burdenoff/fe-libs/ui";
47
- import { useFeatureFlagDetails as Mt } from "@burdenoff/fe-libs/shared/feature-flags";
48
- import { PermissionButton as Nt } from "@burdenoff/fe-libs/shared/components";
49
- import { MotionPage as Pt } from "@burdenoff/fe-libs/shared/motion";
50
- import { usePluginContributions as Ft } from "@burdenoff/fe-libs/shared/plugins";
46
+ import { Checkbox as At } from "@burdenoff/fe-libs/ui";
47
+ import { useFeatureFlagDetails as jt } from "@burdenoff/fe-libs/shared/feature-flags";
48
+ import { PermissionButton as Mt } from "@burdenoff/fe-libs/shared/components";
49
+ import { MotionPage as Nt } from "@burdenoff/fe-libs/shared/motion";
50
+ import { usePluginContributions as Pt } from "@burdenoff/fe-libs/shared/plugins";
51
51
  //#region src/pages/AgentDetailsPage.tsx
52
- function It({ agent: e, onUpdate: t }) {
53
- let { t: n } = Ge(), [r] = ae(), [i] = ne(), [a, ee] = p(!1), [te, o] = p(null), [re, ie] = p(!1), [s, oe] = p(null), [se, ce] = p(!1), [le, ue] = p(!1), [de, fe] = p(!1), pe = !!(e.appId && e.appClientId), c = (e, t, r) => {
52
+ function Ft({ agent: e, onUpdate: t }) {
53
+ let { t: n } = We(), [r] = ie(), [i] = ne(), [a, ee] = p(!1), [te, o] = p(null), [re, ae] = p(!1), [s, oe] = p(null), [se, ce] = p(!1), [le, ue] = p(!1), [de, fe] = p(!1), pe = !!(e.appId && e.appClientId), c = (e, t, r) => {
54
54
  let i = n(e, r), a = i === e ? t : i;
55
55
  return r ? Object.entries(r).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), a) : a;
56
56
  }, me = e.metadata?.devportalApplicationId, he = async () => {
@@ -93,7 +93,7 @@ function It({ agent: e, onUpdate: t }) {
93
93
  className: "flex items-start gap-3",
94
94
  children: [/* @__PURE__ */ y("div", {
95
95
  className: "size-8 rounded-lg bg-status-success-bg flex items-center justify-center flex-shrink-0 mt-0.5",
96
- children: /* @__PURE__ */ y(m, { className: "size-4 text-status-success-text" })
96
+ children: /* @__PURE__ */ y(lt, { className: "size-4 text-status-success-text" })
97
97
  }), /* @__PURE__ */ b("div", {
98
98
  className: "flex-1 min-w-0 space-y-2",
99
99
  children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
@@ -116,12 +116,12 @@ function It({ agent: e, onUpdate: t }) {
116
116
  type: "button",
117
117
  onClick: async () => {
118
118
  if (e.appClientId) try {
119
- await Se(e.appClientId), xe() && Ce("Copied"), ue(!0), setTimeout(() => ue(!1), 2e3);
119
+ await xe(e.appClientId), be() && Se("Copied"), ue(!0), setTimeout(() => ue(!1), 2e3);
120
120
  } catch {}
121
121
  },
122
122
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
123
123
  title: c("agentDetails.copyClientId", "Copy Client ID"),
124
- children: le ? /* @__PURE__ */ y(Ye, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ y($e, { className: "size-3.5 text-text-secondary" })
124
+ children: le ? /* @__PURE__ */ y(Je, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ y(Qe, { className: "size-3.5 text-text-secondary" })
125
125
  })]
126
126
  })] }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
127
127
  className: "text-xs text-text-secondary mb-1",
@@ -153,19 +153,19 @@ function It({ agent: e, onUpdate: t }) {
153
153
  }),
154
154
  /* @__PURE__ */ y("button", {
155
155
  type: "button",
156
- onClick: () => ie(!re),
156
+ onClick: () => ae(!re),
157
157
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
158
- children: y(re ? at : it, { className: "size-3.5 text-text-secondary" })
158
+ children: y(re ? it : rt, { className: "size-3.5 text-text-secondary" })
159
159
  }),
160
160
  /* @__PURE__ */ y("button", {
161
161
  type: "button",
162
162
  onClick: async () => {
163
163
  if (s) try {
164
- await Se(s), xe() && Ce("Secret copied"), ce(!0), setTimeout(() => ce(!1), 2e3);
164
+ await xe(s), be() && Se("Secret copied"), ce(!0), setTimeout(() => ce(!1), 2e3);
165
165
  } catch {}
166
166
  },
167
167
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
168
- children: se ? /* @__PURE__ */ y(Ye, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ y($e, { className: "size-3.5 text-text-secondary" })
168
+ children: se ? /* @__PURE__ */ y(Je, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ y(Qe, { className: "size-3.5 text-text-secondary" })
169
169
  })
170
170
  ]
171
171
  })
@@ -185,7 +185,7 @@ function It({ agent: e, onUpdate: t }) {
185
185
  disabled: a,
186
186
  className: "flex items-center gap-2 px-3 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 hover:bg-action-primary-bg/20 rounded-md transition-colors disabled:opacity-50",
187
187
  title: c("agentDetails.repushCredentialsTitle", "Rotate the OAuth secret and push it to the agent. Use this if the agent shows degraded with \"boot state awaiting-config\"."),
188
- children: [a ? /* @__PURE__ */ y(h, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(mt, { className: "size-3" }), c("agentDetails.repushCredentials", "Re-push credentials")]
188
+ children: [a ? /* @__PURE__ */ y(m, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(mt, { className: "size-3" }), c("agentDetails.repushCredentials", "Re-push credentials")]
189
189
  }),
190
190
  /* @__PURE__ */ b("button", {
191
191
  type: "button",
@@ -209,7 +209,7 @@ function It({ agent: e, onUpdate: t }) {
209
209
  },
210
210
  disabled: de,
211
211
  className: "flex items-center gap-2 px-3 py-1.5 text-xs text-status-error-text hover:bg-status-error-bg rounded-md transition-colors disabled:opacity-50",
212
- children: [de ? /* @__PURE__ */ y(h, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(wt, { className: "size-3" }), c("agentDetails.unlinkApp", "Unlink App")]
212
+ children: [de ? /* @__PURE__ */ y(m, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(h, { className: "size-3" }), c("agentDetails.unlinkApp", "Unlink App")]
213
213
  })
214
214
  ]
215
215
  })
@@ -233,11 +233,11 @@ function It({ agent: e, onUpdate: t }) {
233
233
  onClick: he,
234
234
  disabled: a,
235
235
  className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
236
- children: a ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(h, { className: "size-4 animate-spin" }), c("agentDetails.settingUp", "Setting up...")] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(m, { className: "size-4" }), c("agentDetails.setupGatewayAuth", "Setup Gateway Auth")] })
236
+ children: a ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(m, { className: "size-4 animate-spin" }), c("agentDetails.settingUp", "Setting up...")] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(lt, { className: "size-4" }), c("agentDetails.setupGatewayAuth", "Setup Gateway Auth")] })
237
237
  })] })]
238
238
  })] });
239
239
  }
240
- var Lt = [
240
+ var It = [
241
241
  "overview",
242
242
  "profiles",
243
243
  "security",
@@ -251,11 +251,11 @@ var Lt = [
251
251
  "backup",
252
252
  "maintenance"
253
253
  ];
254
- function Rt() {
255
- let { t: ne } = Ge(), { id: m } = Ot(), { basePath: wt } = pe(), Rt = wt || "", x = c(), { hasPermission: zt, isLoading: Bt, permissions: Vt } = kt(), S = u((e, t, n) => {
256
- let r = ne(e, n), i = r === e ? t : r;
254
+ function Lt() {
255
+ let { t: lt } = We(), { id: h } = Dt(), { basePath: Lt } = fe(), Rt = Lt || "", x = pe(), { hasPermission: zt, isLoading: Bt, permissions: Vt } = Ot(), S = u((e, t, n) => {
256
+ let r = lt(e, n), i = r === e ? t : r;
257
257
  return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
258
- }, [ne]), [Ht] = ae({ refetchQueries: ["GetAgent"] }), [Ut] = i({
258
+ }, [lt]), [Ht] = ie({ refetchQueries: ["GetAgent"] }), [Ut] = i({
259
259
  refetchQueries: ["ListAgents", "VibeControlsInitialData"],
260
260
  awaitRefetchQueries: !0,
261
261
  update(e, t, { variables: n }) {
@@ -265,10 +265,10 @@ function Rt() {
265
265
  id: r
266
266
  }) }), e.gc());
267
267
  }
268
- }), [Wt] = n({ refetchQueries: ["GetAgent"] }), [Gt] = re(), [Kt] = ie(), [C, qt] = p(null), [Jt, Yt] = p(null), Xt = me((e) => e.setActiveAgentId);
268
+ }), [Wt] = n({ refetchQueries: ["GetAgent"] }), [Gt] = o(), [Kt] = re(), [C, qt] = p(null), [Jt, Yt] = p(null), Xt = c((e) => e.setActiveAgentId);
269
269
  d(() => {
270
- m && Xt(m);
271
- }, [m, Xt]);
270
+ h && Xt(h);
271
+ }, [h, Xt]);
272
272
  let [Zt, Qt] = p(!1), [$t, w] = p(null), [en, tn] = p(!1), [nn, T] = p(null), [rn, an] = p(!1), [on, sn] = p(!1), [cn, ln] = p(""), [E, un] = p(!1), [dn, fn] = p(null), pn = f(null), mn = f(null), hn = f(null), gn = f(null), _n = f(null), [vn, yn] = p(!1), [bn, xn] = p(!1), [D, Sn] = p(null), [Cn, wn] = p(!1), [Tn, En] = p(null), [Dn] = t({ fetchPolicy: "network-only" }), [O, k] = p(!1), [On, A] = p(null), [j, kn] = p(!1), M = f(null), An = f(null), jn = f(null), Mn = f(null), [Nn] = r({ refetchQueries: ["GetAgent", "ListSessions"] });
273
273
  d(() => {
274
274
  if (!O) return;
@@ -282,16 +282,16 @@ function Rt() {
282
282
  return () => cancelAnimationFrame(e);
283
283
  }, [O]);
284
284
  let { data: Pn, loading: Fn, error: In, refetch: N } = a({
285
- variables: { id: m || "" },
286
- skip: !m,
285
+ variables: { id: h || "" },
286
+ skip: !h,
287
287
  fetchPolicy: "cache-and-network"
288
- }), P = Pn?.vibecontrolsAgent, F = se({
288
+ }), P = Pn?.vibecontrolsAgent, F = oe({
289
289
  fetchPolicy: "cache-and-network",
290
290
  nextFetchPolicy: "cache-first",
291
291
  notifyOnNetworkStatusChange: !0,
292
- skip: !m,
292
+ skip: !h,
293
293
  pollInterval: 3e4
294
- }), { data: Ln } = oe({ skip: !m }), Rn = F.data === void 0 && Ln === void 0, I = We(() => {
294
+ }), { data: Ln } = s({ skip: !h }), Rn = F.data === void 0 && Ln === void 0, I = Ue(() => {
295
295
  let e = /* @__PURE__ */ new Map(), t = Ln?.vibecontrolsAgentHealthProbeStream ?? F.data?.vibecontrolsAgentHealthProbes ?? [];
296
296
  for (let n of t) e.set(n.agentId, {
297
297
  agentId: n.agentId,
@@ -299,7 +299,7 @@ function Rt() {
299
299
  errorMessage: n.errorMessage
300
300
  });
301
301
  return e;
302
- }, [F.data, Ln]), L = We(() => P ? Ie({
302
+ }, [F.data, Ln]), L = Ue(() => P ? Fe({
303
303
  id: P.id,
304
304
  isActive: P.isActive,
305
305
  metadata: P.metadata
@@ -307,14 +307,14 @@ function Rt() {
307
307
  P,
308
308
  I,
309
309
  Rn
310
- ]), zn = L === "STOPPED" || L === "OFFLINE", { active: R } = be(P?.id ?? null), z = Mt("vibes.tabs.iframe-host")?.value === !0, Bn = We(() => {
310
+ ]), zn = L === "STOPPED" || L === "OFFLINE", { active: R } = ye(P?.id ?? null), z = jt("vibes.tabs.iframe-host")?.value === !0, Bn = Ue(() => {
311
311
  if (!z || !P?.tunnelUrl) return [];
312
312
  let e = P.id, t = R ?? "default";
313
313
  return [{
314
314
  tunnelUrl: P.tunnelUrl,
315
315
  profile: t,
316
316
  label: P.name ?? P.id,
317
- mintIframeToken: async ({ pathPrefixes: n }) => Ve(e, t, n)
317
+ mintIframeToken: async ({ pathPrefixes: n }) => Be(e, t, n)
318
318
  }];
319
319
  }, [
320
320
  z,
@@ -322,17 +322,17 @@ function Rt() {
322
322
  P?.tunnelUrl,
323
323
  P?.name,
324
324
  R
325
- ]), B = Ft(Bn, {
325
+ ]), B = Pt(Bn, {
326
326
  mountPoint: "agent.detailTab",
327
327
  enabled: z && Bn.length > 0
328
- }), [V, Vn] = Be(We(() => {
328
+ }), [V, Vn] = ze(Ue(() => {
329
329
  let e = B.data.filter((e) => e.contribution.mountPoint === "agent.detailTab").map((e) => e.contribution.id);
330
- return [...Lt, ...e];
330
+ return [...It, ...e];
331
331
  }, [B.data]), "overview"), [Hn, Un] = p(!1), Wn = f(!1);
332
332
  d(() => {
333
333
  P && !Wn.current && (Wn.current = !0, Wt().catch(() => {}));
334
334
  }, [P, Wt]);
335
- let [Gn] = te(), Kn = f(!1);
335
+ let [Gn] = ne(), Kn = f(!1);
336
336
  d(() => {
337
337
  if (!P || Kn.current) return;
338
338
  let e = !!(P.appId && P.appClientId), t = !!P.tunnelUrl;
@@ -344,7 +344,7 @@ function Rt() {
344
344
  Gn,
345
345
  N
346
346
  ]);
347
- let [H, qn] = p([]), [Jn, Yn] = p([]), [Xn, Zn] = p(!0), [U, W] = p(null), [Qn, G] = p(null), [$n, er] = p(!1), [tr, nr] = p(!1), [rr, ir] = p(!1), [ar, or] = p(!1), [sr, cr] = p(!1), [lr, ur] = p("plugin"), dr = f(null), [K, fr] = p("installed"), [q, pr] = p(""), [J, mr] = p([]), [hr, gr] = p(!1), [_r, vr] = p(null), [Y, yr] = p(null), [br] = e(), [xr] = ee(), [Sr] = o(), [Cr] = s(), X = u(async () => {
347
+ let [H, qn] = p([]), [Jn, Yn] = p([]), [Xn, Zn] = p(!0), [U, W] = p(null), [Qn, G] = p(null), [$n, er] = p(!1), [tr, nr] = p(!1), [rr, ir] = p(!1), [ar, or] = p(!1), [sr, cr] = p(!1), [lr, ur] = p("plugin"), dr = f(null), [K, fr] = p("installed"), [q, pr] = p(""), [J, mr] = p([]), [hr, gr] = p(!1), [_r, vr] = p(null), [Y, yr] = p(null), [br] = e(), [xr] = ee(), [Sr] = te(), [Cr] = ae(), X = u(async () => {
348
348
  if (P?.id) {
349
349
  Zn(!0), G(null);
350
350
  try {
@@ -411,8 +411,8 @@ function Rt() {
411
411
  if (t?.installAgentPlugin?.success) await X();
412
412
  else throw Error(t?.installAgentPlugin?.error || S("agentDetails.installFailed", "Install failed"));
413
413
  } catch (e) {
414
- if (de(e)) {
415
- fe(), ur("plugin"), cr(!0);
414
+ if (ue(e)) {
415
+ de(), ur("plugin"), cr(!0);
416
416
  return;
417
417
  }
418
418
  G(e instanceof Error ? e.message : S("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => G(null), 5e3);
@@ -565,7 +565,7 @@ function Rt() {
565
565
  children: "Loading permissions…"
566
566
  })
567
567
  });
568
- if (Vt && (Vt.permissionStrings?.length ?? 0) > 0 && !zt(we.AGENT_READ)) return /* @__PURE__ */ y("div", {
568
+ if (Vt && (Vt.permissionStrings?.length ?? 0) > 0 && !zt(Ce.AGENT_READ)) return /* @__PURE__ */ y("div", {
569
569
  className: "flex items-center justify-center min-h-[400px]",
570
570
  children: /* @__PURE__ */ b("div", {
571
571
  className: "text-center space-y-2",
@@ -653,7 +653,7 @@ function Rt() {
653
653
  }, Rr = async () => {
654
654
  let e = await kr();
655
655
  if (e) try {
656
- await Se(e), xe() && Ce("API key copied"), xn(!0), setTimeout(() => xn(!1), 2e3);
656
+ await xe(e), be() && Se("API key copied"), xn(!0), setTimeout(() => xn(!1), 2e3);
657
657
  } catch {
658
658
  console.error("Failed to copy API key");
659
659
  }
@@ -705,8 +705,8 @@ function Rt() {
705
705
  workingDirectory: r
706
706
  } } }), k(!1), M.current && (M.current.value = ""), An.current && (An.current.selectedIndex = 0), jn.current && (jn.current.value = ""), Mn.current && (Mn.current.value = ""), T(S("sessions.createdSuccess", "Session created successfully")), setTimeout(() => T(null), 3e3);
707
707
  } catch (e) {
708
- if (de(e)) {
709
- k(!1), fe(), ur("session"), cr(!0);
708
+ if (ue(e)) {
709
+ k(!1), de(), ur("session"), cr(!0);
710
710
  return;
711
711
  }
712
712
  A(e instanceof Error ? e.message : S("sessions.failedCreate", "Failed to create session"));
@@ -720,39 +720,39 @@ function Rt() {
720
720
  let t = Date.now() - new Date(e).getTime();
721
721
  return t < 6e4 ? S("health.justNow", "Just now") : t < 36e5 ? S("agentDetails.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? S("agentDetails.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : new Date(e).toLocaleDateString();
722
722
  };
723
- if (Fn && !P) return /* @__PURE__ */ b(Pt, {
723
+ if (Fn && !P) return /* @__PURE__ */ b(Nt, {
724
724
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
725
725
  children: [/* @__PURE__ */ b("button", {
726
726
  type: "button",
727
727
  onClick: $,
728
728
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
729
- children: [/* @__PURE__ */ y(Ke, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
730
- }), /* @__PURE__ */ y(Te, { variant: "detail" })]
729
+ children: [/* @__PURE__ */ y(Ge, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
730
+ }), /* @__PURE__ */ y(we, { variant: "detail" })]
731
731
  });
732
- if (In && !P) return /* @__PURE__ */ b(Pt, {
732
+ if (In && !P) return /* @__PURE__ */ b(Nt, {
733
733
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
734
734
  children: [/* @__PURE__ */ b("button", {
735
735
  type: "button",
736
736
  onClick: $,
737
737
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
738
- children: [/* @__PURE__ */ y(Ke, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
739
- }), /* @__PURE__ */ y(ge, {
738
+ children: [/* @__PURE__ */ y(Ge, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
739
+ }), /* @__PURE__ */ y(he, {
740
740
  title: S("agentDetails.failedLoad", "Failed to load agent"),
741
741
  message: In.message,
742
742
  onRetry: () => N()
743
743
  })]
744
744
  });
745
- if (!P) return /* @__PURE__ */ b(Pt, {
745
+ if (!P) return /* @__PURE__ */ b(Nt, {
746
746
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
747
747
  children: [/* @__PURE__ */ b("button", {
748
748
  type: "button",
749
749
  onClick: $,
750
750
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
751
- children: [/* @__PURE__ */ y(Ke, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
752
- }), /* @__PURE__ */ y(ve, {
751
+ children: [/* @__PURE__ */ y(Ge, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
752
+ }), /* @__PURE__ */ y(_e, {
753
753
  icon: /* @__PURE__ */ y(_t, { className: "size-8 text-text-secondary" }),
754
754
  title: S("agentDetails.notFound", "Agent not found"),
755
- description: `${S("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${m}" ${S("agentDetails.notFoundDescriptionSuffix", "exists")}`,
755
+ description: `${S("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${h}" ${S("agentDetails.notFoundDescriptionSuffix", "exists")}`,
756
756
  action: /* @__PURE__ */ y("button", {
757
757
  type: "button",
758
758
  onClick: $,
@@ -770,7 +770,7 @@ function Rt() {
770
770
  {
771
771
  id: "profiles",
772
772
  label: S("agentDetails.profiles", "Profiles"),
773
- icon: Tt
773
+ icon: wt
774
774
  },
775
775
  {
776
776
  id: "security",
@@ -802,31 +802,31 @@ function Rt() {
802
802
  {
803
803
  id: "vibes",
804
804
  label: S("nav.vibes", "Vibes"),
805
- icon: Dt,
805
+ icon: Et,
806
806
  badge: `${Q.length}`
807
807
  },
808
808
  {
809
809
  id: "notes",
810
810
  label: S("vibeDetails.notes", "Notes"),
811
- icon: ot
811
+ icon: at
812
812
  },
813
813
  {
814
814
  id: "aliases",
815
815
  label: S("agentDetails.aliases", "Aliases"),
816
- icon: Qe
816
+ icon: Ze
817
817
  },
818
818
  {
819
819
  id: "backup",
820
820
  label: S("agentDetails.backup", "Backup"),
821
- icon: tt
821
+ icon: et
822
822
  },
823
823
  {
824
824
  id: "maintenance",
825
825
  label: S("agentDetails.maintenance.tab", "Maintenance"),
826
- icon: Et
826
+ icon: Tt
827
827
  }
828
828
  ], Jr = Z.filter((e) => e.status === "RUNNING").length;
829
- return P?.tunnelUrl, /* @__PURE__ */ b(Pt, {
829
+ return P?.tunnelUrl, /* @__PURE__ */ b(Nt, {
830
830
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
831
831
  children: [
832
832
  nn && /* @__PURE__ */ y("div", {
@@ -841,9 +841,9 @@ function Rt() {
841
841
  type: "button",
842
842
  onClick: $,
843
843
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
844
- children: [/* @__PURE__ */ y(Ke, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
844
+ children: [/* @__PURE__ */ y(Ge, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
845
845
  }),
846
- /* @__PURE__ */ y(he, {
846
+ /* @__PURE__ */ y(me, {
847
847
  title: P.name,
848
848
  description: P.hostname || S("agentDetails.noHostnameConfigured", "No hostname configured"),
849
849
  breadcrumb: [{
@@ -859,7 +859,7 @@ function Rt() {
859
859
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
860
860
  title: S("agentDetails.openAiChat", "Open AI chat with this agent"),
861
861
  "data-testid": "agent-open-ai-chat",
862
- children: [/* @__PURE__ */ y(Je, { className: "size-4" }), /* @__PURE__ */ y("span", {
862
+ children: [/* @__PURE__ */ y(qe, { className: "size-4" }), /* @__PURE__ */ y("span", {
863
863
  className: "hidden sm:inline",
864
864
  children: S("agentDetails.aiChat", "AI Chat")
865
865
  })]
@@ -878,14 +878,14 @@ function Rt() {
878
878
  disabled: C !== null,
879
879
  "aria-busy": C === "start",
880
880
  className: "flex items-center gap-2 px-3 py-2 bg-status-success-bg text-status-success-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
881
- children: [C === "start" ? /* @__PURE__ */ y(h, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(dt, { className: "size-4" }), C === "start" ? S("agentDetails.starting", "Starting…") : S("agentDetails.start", "Start")]
881
+ children: [C === "start" ? /* @__PURE__ */ y(m, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(dt, { className: "size-4" }), C === "start" ? S("agentDetails.starting", "Starting…") : S("agentDetails.start", "Start")]
882
882
  }) : /* @__PURE__ */ b("button", {
883
883
  type: "button",
884
884
  onClick: Mr,
885
885
  disabled: C !== null,
886
886
  "aria-busy": C === "stop",
887
887
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
888
- children: [C === "stop" ? /* @__PURE__ */ y(h, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(bt, { className: "size-4" }), C === "stop" ? S("agentDetails.stopping", "Stopping…") : S("sessions.stop", "Stop")]
888
+ children: [C === "stop" ? /* @__PURE__ */ y(m, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(bt, { className: "size-4" }), C === "stop" ? S("agentDetails.stopping", "Stopping…") : S("sessions.stop", "Stop")]
889
889
  }),
890
890
  L === "DEGRADED" && /* @__PURE__ */ b("button", {
891
891
  type: "button",
@@ -894,9 +894,9 @@ function Rt() {
894
894
  "aria-busy": C === "start",
895
895
  className: "flex items-center gap-2 px-3 py-2 bg-status-warning-bg text-status-warning-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
896
896
  title: I.get(P.id)?.errorMessage ? `Retry lifecycle/start — last error: ${I.get(P.id)?.errorMessage}` : "Retry lifecycle/start",
897
- children: [C === "start" ? /* @__PURE__ */ y(h, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(mt, { className: "size-4" }), C === "start" ? S("agentDetails.reconnecting", "Reconnecting…") : S("agentDetails.reconnect", "Reconnect")]
897
+ children: [C === "start" ? /* @__PURE__ */ y(m, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(mt, { className: "size-4" }), C === "start" ? S("agentDetails.reconnecting", "Reconnecting…") : S("agentDetails.reconnect", "Reconnect")]
898
898
  }),
899
- /* @__PURE__ */ y(Fe, {
899
+ /* @__PURE__ */ y(Pe, {
900
900
  agentId: P.id,
901
901
  tunnelUrl: P.tunnelUrl || null,
902
902
  profile: R
@@ -940,7 +940,7 @@ function Rt() {
940
940
  disabled: !cn.trim() || cn.trim() === P.name || E,
941
941
  className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
942
942
  "data-testid": "agent-details-rename-save",
943
- children: [E ? /* @__PURE__ */ y(h, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ y(Ye, { className: "size-3.5" }), S("agentDetails.saveName", "Save")]
943
+ children: [E ? /* @__PURE__ */ y(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ y(Je, { className: "size-3.5" }), S("agentDetails.saveName", "Save")]
944
944
  }),
945
945
  /* @__PURE__ */ y("button", {
946
946
  type: "button",
@@ -963,7 +963,7 @@ function Rt() {
963
963
  className: "inline-flex items-center gap-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors",
964
964
  title: S("agentDetails.renameTooltip", "Rename this agent"),
965
965
  "data-testid": "agent-details-rename-trigger",
966
- children: [/* @__PURE__ */ y(rt, { className: "size-3.5" }), S("agentDetails.rename", "Rename")]
966
+ children: [/* @__PURE__ */ y(nt, { className: "size-3.5" }), S("agentDetails.rename", "Rename")]
967
967
  })
968
968
  }),
969
969
  L === "DEGRADED" && /* @__PURE__ */ b("div", {
@@ -971,7 +971,7 @@ function Rt() {
971
971
  "aria-live": "polite",
972
972
  className: "flex items-start gap-3 rounded-lg border border-status-warning-border bg-status-warning-bg/30 px-4 py-3 text-sm text-text-primary",
973
973
  children: [
974
- /* @__PURE__ */ y(h, { className: "size-4 mt-0.5 flex-shrink-0 animate-spin text-status-warning-text" }),
974
+ /* @__PURE__ */ y(m, { className: "size-4 mt-0.5 flex-shrink-0 animate-spin text-status-warning-text" }),
975
975
  /* @__PURE__ */ b("div", {
976
976
  className: "flex-1 min-w-0 space-y-1",
977
977
  children: [
@@ -1013,7 +1013,7 @@ function Rt() {
1013
1013
  }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
1014
1014
  className: "text-sm text-text-secondary",
1015
1015
  children: S("sessions.filterStatus", "Status")
1016
- }), /* @__PURE__ */ y(Me, {
1016
+ }), /* @__PURE__ */ y(je, {
1017
1017
  status: L,
1018
1018
  reason: I.get(P.id)?.errorMessage ?? (P.lastGatewayAuthPushStatus === "failed" ? P.lastGatewayAuthPushError ?? "Gateway-auth push failed" : null),
1019
1019
  linkTo: "?tab=connection",
@@ -1029,7 +1029,7 @@ function Rt() {
1029
1029
  className: "flex items-center gap-3",
1030
1030
  children: [/* @__PURE__ */ y("div", {
1031
1031
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1032
- children: /* @__PURE__ */ y(et, { className: "size-5 text-text-secondary" })
1032
+ children: /* @__PURE__ */ y($e, { className: "size-5 text-text-secondary" })
1033
1033
  }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
1034
1034
  className: "text-sm text-text-secondary",
1035
1035
  children: S("analytics.platform", "Platform")
@@ -1049,7 +1049,7 @@ function Rt() {
1049
1049
  className: "flex items-center gap-3",
1050
1050
  children: [/* @__PURE__ */ y("div", {
1051
1051
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1052
- children: /* @__PURE__ */ y(st, { className: "size-5 text-text-secondary" })
1052
+ children: /* @__PURE__ */ y(ot, { className: "size-5 text-text-secondary" })
1053
1053
  }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
1054
1054
  className: "text-sm text-text-secondary",
1055
1055
  children: S("agentDetails.version", "Version")
@@ -1134,7 +1134,7 @@ function Rt() {
1134
1134
  ]
1135
1135
  })
1136
1136
  }),
1137
- /* @__PURE__ */ b(At, {
1137
+ /* @__PURE__ */ b(kt, {
1138
1138
  mode: "wait",
1139
1139
  children: [
1140
1140
  V === "overview" && /* @__PURE__ */ b(_.div, {
@@ -1157,7 +1157,7 @@ function Rt() {
1157
1157
  className: "p-4 border-b border-border-default",
1158
1158
  children: /* @__PURE__ */ b("h3", {
1159
1159
  className: "font-semibold text-text-primary flex items-center gap-2",
1160
- children: [/* @__PURE__ */ y(Xe, { className: "size-5" }), S("agentDetails.capabilities", "Capabilities")]
1160
+ children: [/* @__PURE__ */ y(Ye, { className: "size-5" }), S("agentDetails.capabilities", "Capabilities")]
1161
1161
  })
1162
1162
  }), /* @__PURE__ */ y("div", {
1163
1163
  className: "p-4",
@@ -1227,7 +1227,7 @@ function Rt() {
1227
1227
  })
1228
1228
  }), /* @__PURE__ */ y("div", {
1229
1229
  className: "p-4",
1230
- children: /* @__PURE__ */ y(_e, {
1230
+ children: /* @__PURE__ */ y(ge, {
1231
1231
  entityType: "VIBECONTROLS_AGENT",
1232
1232
  entityId: P.id
1233
1233
  })
@@ -1236,7 +1236,7 @@ function Rt() {
1236
1236
  className: "p-4 border-b border-border-default",
1237
1237
  children: /* @__PURE__ */ b("h3", {
1238
1238
  className: "font-semibold text-text-primary flex items-center gap-2",
1239
- children: [/* @__PURE__ */ y(Dt, { className: "size-5" }), S("health.tunnel", "Tunnel")]
1239
+ children: [/* @__PURE__ */ y(Et, { className: "size-5" }), S("health.tunnel", "Tunnel")]
1240
1240
  })
1241
1241
  }), /* @__PURE__ */ y("div", {
1242
1242
  className: "p-4",
@@ -1299,7 +1299,7 @@ function Rt() {
1299
1299
  className: "p-4 border-b border-border-default",
1300
1300
  children: /* @__PURE__ */ b("h3", {
1301
1301
  className: "font-semibold text-text-primary flex items-center gap-2",
1302
- children: [/* @__PURE__ */ y(Ze, { className: "size-5" }), S("vibeDetails.timeline", "Timeline")]
1302
+ children: [/* @__PURE__ */ y(Xe, { className: "size-5" }), S("vibeDetails.timeline", "Timeline")]
1303
1303
  })
1304
1304
  }), /* @__PURE__ */ y("div", {
1305
1305
  className: "p-4",
@@ -1346,7 +1346,7 @@ function Rt() {
1346
1346
  y: -8
1347
1347
  },
1348
1348
  transition: { duration: .2 },
1349
- children: /* @__PURE__ */ y(Re, { agentId: P.id })
1349
+ children: /* @__PURE__ */ y(Le, { agentId: P.id })
1350
1350
  }, "profiles"),
1351
1351
  V === "security" && /* @__PURE__ */ b(_.div, {
1352
1352
  initial: {
@@ -1368,7 +1368,7 @@ function Rt() {
1368
1368
  className: "p-4 border-b border-border-default",
1369
1369
  children: /* @__PURE__ */ b("h3", {
1370
1370
  className: "font-semibold text-text-primary flex items-center gap-2",
1371
- children: [/* @__PURE__ */ y(lt, { className: "size-5" }), S("agentDetails.agentApiKey", "Agent API Key")]
1371
+ children: [/* @__PURE__ */ y(ct, { className: "size-5" }), S("agentDetails.agentApiKey", "Agent API Key")]
1372
1372
  })
1373
1373
  }), /* @__PURE__ */ b("div", {
1374
1374
  className: "p-4",
@@ -1391,14 +1391,14 @@ function Rt() {
1391
1391
  disabled: Cn,
1392
1392
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0 disabled:opacity-50",
1393
1393
  title: vn ? S("agentDetails.hideApiKey", "Hide API key") : S("agentDetails.showApiKey", "Show API key"),
1394
- children: y(vn ? at : it, { className: "size-4 text-text-secondary" })
1394
+ children: y(vn ? it : rt, { className: "size-4 text-text-secondary" })
1395
1395
  }),
1396
1396
  /* @__PURE__ */ y("button", {
1397
1397
  type: "button",
1398
1398
  onClick: Rr,
1399
1399
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
1400
1400
  title: S("agentDetails.copyApiKey", "Copy API key"),
1401
- children: bn ? /* @__PURE__ */ y(Ye, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ y($e, { className: "size-4 text-text-secondary" })
1401
+ children: bn ? /* @__PURE__ */ y(Je, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ y(Qe, { className: "size-4 text-text-secondary" })
1402
1402
  })
1403
1403
  ]
1404
1404
  }) : /* @__PURE__ */ y("p", {
@@ -1409,23 +1409,23 @@ function Rt() {
1409
1409
  children: "This key authenticates requests sent to the agent. The key is revealed only on explicit operator action and every read is audited."
1410
1410
  })]
1411
1411
  })] }),
1412
- /* @__PURE__ */ y(ke, {
1412
+ /* @__PURE__ */ y(Oe, {
1413
1413
  agentId: P.id,
1414
1414
  currentTunnelUrl: P.tunnelUrl,
1415
1415
  onUpdated: () => N()
1416
1416
  }),
1417
- /* @__PURE__ */ y(Ae, {
1417
+ /* @__PURE__ */ y(ke, {
1418
1418
  agentId: P.id,
1419
1419
  storageAdapter: P.storageAdapter,
1420
1420
  dbPath: P.dbPath,
1421
1421
  hasStorageOptions: P.hasStorageOptions,
1422
1422
  onUpdated: () => N()
1423
1423
  }),
1424
- /* @__PURE__ */ y(It, {
1424
+ /* @__PURE__ */ y(Ft, {
1425
1425
  agent: P,
1426
1426
  onUpdate: () => N()
1427
1427
  }),
1428
- /* @__PURE__ */ y(Ne, { agent: {
1428
+ /* @__PURE__ */ y(Me, { agent: {
1429
1429
  id: P.id,
1430
1430
  profile: R ?? "default"
1431
1431
  } })
@@ -1443,13 +1443,13 @@ function Rt() {
1443
1443
  id: "available",
1444
1444
  label: "Available",
1445
1445
  count: n.length,
1446
- icon: nt
1446
+ icon: tt
1447
1447
  },
1448
1448
  {
1449
1449
  id: "store",
1450
1450
  label: "Store",
1451
1451
  count: J.length,
1452
- icon: nt
1452
+ icon: tt
1453
1453
  },
1454
1454
  {
1455
1455
  id: "ui-plugins",
@@ -1565,7 +1565,7 @@ function Rt() {
1565
1565
  }),
1566
1566
  !P?.isActive && /* @__PURE__ */ b("p", {
1567
1567
  className: "text-sm text-text-muted flex items-center gap-1.5",
1568
- children: [/* @__PURE__ */ y(ct, { className: "size-4 flex-shrink-0" }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
1568
+ children: [/* @__PURE__ */ y(st, { className: "size-4 flex-shrink-0" }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
1569
1569
  }),
1570
1570
  K === "installed" && /* @__PURE__ */ y(v, { children: t.length > 0 ? /* @__PURE__ */ y("div", {
1571
1571
  className: "space-y-2",
@@ -1659,14 +1659,14 @@ function Rt() {
1659
1659
  disabled: U === e.packageName,
1660
1660
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-primary bg-bg-secondary border border-border-default rounded-md hover:bg-bg-elevated transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
1661
1661
  title: S("agentDetails.updatePlugin", "Update plugin (latest or a specific version)"),
1662
- children: [U === e.packageName ? /* @__PURE__ */ y(h, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(qe, { className: "size-3" }), S("agentDetails.update", "Update")]
1662
+ children: [U === e.packageName ? /* @__PURE__ */ y(m, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(Ke, { className: "size-3" }), S("agentDetails.update", "Update")]
1663
1663
  }),
1664
1664
  !e.isCore && /* @__PURE__ */ b("button", {
1665
1665
  type: "button",
1666
1666
  onClick: () => Tr(e.packageName),
1667
1667
  disabled: U === e.packageName,
1668
1668
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-status-error-text bg-status-error-bg/15 border border-status-error-border/40 rounded-md hover:bg-status-error-bg/25 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
1669
- children: [U === e.packageName ? /* @__PURE__ */ y(h, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(Ct, { className: "size-3" }), S("sessions.remove", "Remove")]
1669
+ children: [U === e.packageName ? /* @__PURE__ */ y(m, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(Ct, { className: "size-3" }), S("sessions.remove", "Remove")]
1670
1670
  })
1671
1671
  ]
1672
1672
  })]
@@ -1700,7 +1700,7 @@ function Rt() {
1700
1700
  onClick: () => wr(e.packageName),
1701
1701
  disabled: U === e.packageName,
1702
1702
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 sm:ml-3",
1703
- children: [U === e.packageName ? /* @__PURE__ */ y(h, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(nt, { className: "size-3" }), "Install"]
1703
+ children: [U === e.packageName ? /* @__PURE__ */ y(m, { className: "size-3 animate-spin" }) : /* @__PURE__ */ y(tt, { className: "size-3" }), "Install"]
1704
1704
  })]
1705
1705
  }, e.packageName))
1706
1706
  }) : /* @__PURE__ */ y("p", {
@@ -1774,7 +1774,7 @@ function Rt() {
1774
1774
  }, e.id);
1775
1775
  })
1776
1776
  })] }),
1777
- K === "ui-plugins" && /* @__PURE__ */ y(v, { children: r.length > 0 || P?.tunnelUrl ? /* @__PURE__ */ y(Pe, {
1777
+ K === "ui-plugins" && /* @__PURE__ */ y(v, { children: r.length > 0 || P?.tunnelUrl ? /* @__PURE__ */ y(Ne, {
1778
1778
  availablePlugins: [...P?.tunnelUrl ? [{
1779
1779
  pluginName: "code-server",
1780
1780
  displayName: "Code Server (VS Code)",
@@ -1796,7 +1796,7 @@ function Rt() {
1796
1796
  }) }),
1797
1797
  Xn && H.length === 0 && /* @__PURE__ */ b("div", {
1798
1798
  className: "flex items-center gap-2 text-sm text-text-secondary",
1799
- children: [/* @__PURE__ */ y(h, { className: "size-4 animate-spin" }), "Loading plugins..."]
1799
+ children: [/* @__PURE__ */ y(m, { className: "size-4 animate-spin" }), "Loading plugins..."]
1800
1800
  })
1801
1801
  ]
1802
1802
  })] })
@@ -1827,8 +1827,8 @@ function Rt() {
1827
1827
  Z.length,
1828
1828
  ")"
1829
1829
  ]
1830
- }), /* @__PURE__ */ y(Nt, {
1831
- permission: we.SESSION_CREATE,
1830
+ }), /* @__PURE__ */ y(Mt, {
1831
+ permission: Ce.SESSION_CREATE,
1832
1832
  deniedBehavior: "disable",
1833
1833
  deniedTooltip: "You don't have permission to create sessions",
1834
1834
  children: /* @__PURE__ */ b("button", {
@@ -1860,12 +1860,12 @@ function Rt() {
1860
1860
  children: e.type
1861
1861
  })]
1862
1862
  })]
1863
- }), /* @__PURE__ */ y(ye, { status: e.status })]
1863
+ }), /* @__PURE__ */ y(ve, { status: e.status })]
1864
1864
  }, e.id))
1865
1865
  }) : /* @__PURE__ */ b("div", {
1866
1866
  className: "p-6 text-center text-text-secondary flex flex-col items-center gap-3",
1867
- children: [/* @__PURE__ */ y("span", { children: S("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ y(Nt, {
1868
- permission: we.SESSION_CREATE,
1867
+ children: [/* @__PURE__ */ y("span", { children: S("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ y(Mt, {
1868
+ permission: Ce.SESSION_CREATE,
1869
1869
  deniedBehavior: "disable",
1870
1870
  deniedTooltip: "You don't have permission to create sessions",
1871
1871
  children: /* @__PURE__ */ b("button", {
@@ -1893,7 +1893,7 @@ function Rt() {
1893
1893
  transition: { duration: .2 },
1894
1894
  children: /* @__PURE__ */ y(l, {
1895
1895
  className: "min-h-[60vh]",
1896
- children: /* @__PURE__ */ y(De, {
1896
+ children: /* @__PURE__ */ y(Ee, {
1897
1897
  agentId: P.id,
1898
1898
  agentName: P.name
1899
1899
  })
@@ -1921,7 +1921,7 @@ function Rt() {
1921
1921
  })
1922
1922
  }), /* @__PURE__ */ y("div", {
1923
1923
  className: "p-4",
1924
- children: /* @__PURE__ */ y(Le, {
1924
+ children: /* @__PURE__ */ y(Ie, {
1925
1925
  agentId: P.id,
1926
1926
  profile: R,
1927
1927
  className: "min-h-[28rem]"
@@ -1947,7 +1947,7 @@ function Rt() {
1947
1947
  children: /* @__PURE__ */ b("h3", {
1948
1948
  className: "font-semibold text-text-primary flex items-center gap-2",
1949
1949
  children: [
1950
- /* @__PURE__ */ y(Dt, { className: "size-5" }),
1950
+ /* @__PURE__ */ y(Et, { className: "size-5" }),
1951
1951
  S("nav.vibes", "Vibes"),
1952
1952
  " (",
1953
1953
  Q.length,
@@ -1966,7 +1966,7 @@ function Rt() {
1966
1966
  className: "p-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 cursor-pointer hover:bg-bg-sunken/50 transition-colors",
1967
1967
  children: [/* @__PURE__ */ b("div", {
1968
1968
  className: "flex items-center gap-3 min-w-0",
1969
- children: [/* @__PURE__ */ y(Dt, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ b("div", {
1969
+ children: [/* @__PURE__ */ y(Et, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ b("div", {
1970
1970
  className: "min-w-0",
1971
1971
  children: [/* @__PURE__ */ y("p", {
1972
1972
  className: "font-medium text-text-primary truncate",
@@ -1976,7 +1976,7 @@ function Rt() {
1976
1976
  children: e.type
1977
1977
  })]
1978
1978
  })]
1979
- }), /* @__PURE__ */ y(ye, { status: e.status })]
1979
+ }), /* @__PURE__ */ y(ve, { status: e.status })]
1980
1980
  }, e.id))
1981
1981
  }) : /* @__PURE__ */ y("div", {
1982
1982
  className: "p-6 text-center text-text-secondary",
@@ -1998,7 +1998,7 @@ function Rt() {
1998
1998
  },
1999
1999
  transition: { duration: .2 },
2000
2000
  className: "space-y-6",
2001
- children: /* @__PURE__ */ y(ze, {
2001
+ children: /* @__PURE__ */ y(Re, {
2002
2002
  context: "agent",
2003
2003
  agentVibes: Q.map((e) => ({
2004
2004
  id: e.id,
@@ -2021,7 +2021,7 @@ function Rt() {
2021
2021
  },
2022
2022
  transition: { duration: .2 },
2023
2023
  className: "space-y-6",
2024
- children: /* @__PURE__ */ y(je, { agent: {
2024
+ children: /* @__PURE__ */ y(Ae, { agent: {
2025
2025
  id: P.id,
2026
2026
  profile: P.metadata?.profile ?? "default"
2027
2027
  } })
@@ -2040,7 +2040,7 @@ function Rt() {
2040
2040
  y: -8
2041
2041
  },
2042
2042
  transition: { duration: .2 },
2043
- children: /* @__PURE__ */ y(Ee, {
2043
+ children: /* @__PURE__ */ y(Te, {
2044
2044
  agentId: P.id,
2045
2045
  profile: R
2046
2046
  })
@@ -2062,7 +2062,7 @@ function Rt() {
2062
2062
  children: /* @__PURE__ */ b(l, {
2063
2063
  className: "p-6 text-center text-text-secondary",
2064
2064
  children: [
2065
- /* @__PURE__ */ y(tt, { className: "size-8 mx-auto mb-2 text-text-muted" }),
2065
+ /* @__PURE__ */ y(et, { className: "size-8 mx-auto mb-2 text-text-muted" }),
2066
2066
  /* @__PURE__ */ y("p", { children: S("agentDetails.backupRequiresTunnelAndApiKey", "Agent tunnel URL and API key are required for backup management.") }),
2067
2067
  /* @__PURE__ */ y("p", {
2068
2068
  className: "text-sm mt-1",
@@ -2085,7 +2085,7 @@ function Rt() {
2085
2085
  y: -8
2086
2086
  },
2087
2087
  transition: { duration: .2 },
2088
- children: /* @__PURE__ */ y(Oe, {
2088
+ children: /* @__PURE__ */ y(De, {
2089
2089
  agentId: P.id,
2090
2090
  agentVersion: P.version,
2091
2091
  onAfterDestructiveNuke: Nr
@@ -2110,7 +2110,7 @@ function Rt() {
2110
2110
  className: "space-y-6",
2111
2111
  children: /* @__PURE__ */ y(l, { children: /* @__PURE__ */ y("div", {
2112
2112
  className: "p-0 h-[600px]",
2113
- children: /* @__PURE__ */ y(Ue, {
2113
+ children: /* @__PURE__ */ y(He, {
2114
2114
  contribution: e,
2115
2115
  tunnel: e.tunnel,
2116
2116
  restPaths: e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`],
@@ -2130,7 +2130,7 @@ function Rt() {
2130
2130
  })()
2131
2131
  ]
2132
2132
  }),
2133
- z && P && /* @__PURE__ */ y(He, {
2133
+ z && P && /* @__PURE__ */ y(Ve, {
2134
2134
  isOpen: Hn,
2135
2135
  onClose: () => Un(!1),
2136
2136
  mountPoint: "agent.detailTab",
@@ -2225,7 +2225,7 @@ function Rt() {
2225
2225
  onClick: () => an((e) => !e),
2226
2226
  className: "p-0.5 rounded-full text-text-muted hover:text-text-secondary transition-colors",
2227
2227
  "aria-label": "What is AI Context?",
2228
- children: /* @__PURE__ */ y(ct, { className: "size-3.5" })
2228
+ children: /* @__PURE__ */ y(st, { className: "size-3.5" })
2229
2229
  }), rn && /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y("div", {
2230
2230
  role: "button",
2231
2231
  tabIndex: 0,
@@ -2396,16 +2396,16 @@ function Rt() {
2396
2396
  ]
2397
2397
  })
2398
2398
  }),
2399
- /* @__PURE__ */ y(le, {
2399
+ /* @__PURE__ */ y(ce, {
2400
2400
  isOpen: sr,
2401
2401
  onClose: () => cr(!1),
2402
2402
  onConfirm: () => {
2403
2403
  cr(!1), x("/billing/plans");
2404
2404
  },
2405
- title: ue(lr).title,
2406
- message: ue(lr).message
2405
+ title: le(lr).title,
2406
+ message: le(lr).message
2407
2407
  }),
2408
- /* @__PURE__ */ y(ce, {
2408
+ /* @__PURE__ */ y(se, {
2409
2409
  isOpen: $n,
2410
2410
  onClose: () => {
2411
2411
  ar || er(!1);
@@ -2420,7 +2420,7 @@ function Rt() {
2420
2420
  className: "space-y-2",
2421
2421
  children: [/* @__PURE__ */ b("label", {
2422
2422
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
2423
- children: [/* @__PURE__ */ y(jt, {
2423
+ children: [/* @__PURE__ */ y(At, {
2424
2424
  checked: tr,
2425
2425
  disabled: ar,
2426
2426
  onCheckedChange: (e) => nr(e === !0),
@@ -2437,7 +2437,7 @@ function Rt() {
2437
2437
  })]
2438
2438
  }), /* @__PURE__ */ b("label", {
2439
2439
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
2440
- children: [/* @__PURE__ */ y(jt, {
2440
+ children: [/* @__PURE__ */ y(At, {
2441
2441
  checked: rr,
2442
2442
  disabled: ar,
2443
2443
  onCheckedChange: (e) => ir(e === !0),
@@ -2459,6 +2459,6 @@ function Rt() {
2459
2459
  });
2460
2460
  }
2461
2461
  //#endregion
2462
- export { Rt as AgentDetailsPage };
2462
+ export { Lt as AgentDetailsPage };
2463
2463
 
2464
2464
  //# sourceMappingURL=AgentDetailsPage.js.map