@burdenoff/microfe-vibecontrols 2026.709.2 → 2026.710.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 (45) hide show
  1. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js +87 -85
  2. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js.map +1 -1
  3. package/dist/components/ai/InstructionFilesManager.js +138 -136
  4. package/dist/components/ai/InstructionFilesManager.js.map +1 -1
  5. package/dist/components/ai/PluginHarnessPicker.js +70 -64
  6. package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
  7. package/dist/components/docs/DocsEditPanel.js +1 -1
  8. package/dist/components/docs/DocsEditPanel.js.map +1 -1
  9. package/dist/components/docs/DocsPageTree.js +1 -1
  10. package/dist/components/docs/DocsPageTree.js.map +1 -1
  11. package/dist/components/docs/DocsTabPanel.js +108 -106
  12. package/dist/components/docs/DocsTabPanel.js.map +1 -1
  13. package/dist/components/notes/NotesTabPanel.js +99 -99
  14. package/dist/components/notes/NotesTabPanel.js.map +1 -1
  15. package/dist/components/scorecard/ScorecardPanel.js +309 -308
  16. package/dist/components/scorecard/ScorecardPanel.js.map +1 -1
  17. package/dist/components/sessions/SessionPublicLinkPanel.js +104 -102
  18. package/dist/components/sessions/SessionPublicLinkPanel.js.map +1 -1
  19. package/dist/components/settings/AdvancedSection.js +92 -90
  20. package/dist/components/settings/AdvancedSection.js.map +1 -1
  21. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js +104 -102
  22. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js.map +1 -1
  23. package/dist/constants/permissions.js +7 -0
  24. package/dist/constants/permissions.js.map +1 -1
  25. package/dist/pages/ActionsPage.js +303 -303
  26. package/dist/pages/ActionsPage.js.map +1 -1
  27. package/dist/pages/AgentDetailsPage.js +520 -516
  28. package/dist/pages/AgentDetailsPage.js.map +1 -1
  29. package/dist/pages/AgentsPage.js +287 -283
  30. package/dist/pages/AgentsPage.js.map +1 -1
  31. package/dist/pages/TargetsPage.js +554 -549
  32. package/dist/pages/TargetsPage.js.map +1 -1
  33. package/dist/pages/VibeAuditPage.js +2 -2
  34. package/dist/pages/VibeAuditPage.js.map +1 -1
  35. package/dist/pages/VibeDeckPage.js +257 -257
  36. package/dist/pages/VibeDeckPage.js.map +1 -1
  37. package/dist/pages/VibeDetailsPage.js +688 -693
  38. package/dist/pages/VibeDetailsPage.js.map +1 -1
  39. package/dist/pages/VibesPage.js +49 -41
  40. package/dist/pages/VibesPage.js.map +1 -1
  41. package/dist/pages/WebhooksPage.js +162 -138
  42. package/dist/pages/WebhooksPage.js.map +1 -1
  43. package/dist/pages/tunnels/DomainsTab.js +54 -47
  44. package/dist/pages/tunnels/DomainsTab.js.map +1 -1
  45. package/package.json +1 -1
@@ -18,15 +18,15 @@ import { PromptDialog as De } from "../components/shared/PromptDialog.js";
18
18
  import { useActiveAgentProfile as Oe } from "../hooks/useActiveAgentProfile.js";
19
19
  import "../components/shared/index.js";
20
20
  import { isNative as ke, nativeCopyText as Ae, nativeToast as je } from "../utils/nativeBridge.js";
21
- import { VIBE_PERMISSIONS as Me } from "../constants/permissions.js";
22
- import { PageSkeleton as Ne } from "../components/shared/PageSkeleton.js";
23
- import { AgentBackupTab as Pe } from "../components/agents/backup/AgentBackupTab.js";
24
- import { ConnectionLogPanel as Fe } from "../components/agents/ConnectionLogPanel.js";
25
- import { AgentMaintenanceTab as Ie } from "../components/agents/AgentMaintenanceTab.js";
26
- import { AgentConnectionRecovery as Le } from "../components/agents/AgentConnectionRecovery.js";
27
- import { AgentStorageConfig as Re } from "../components/agents/AgentStorageConfig.js";
28
- import { AliasManager as ze } from "../components/aliases/AliasManager.js";
29
- import { notify as a } from "../lib/toast.js";
21
+ import { VIBE_PERMISSIONS as a } from "../constants/permissions.js";
22
+ import { PageSkeleton as Me } from "../components/shared/PageSkeleton.js";
23
+ import { AgentBackupTab as Ne } from "../components/agents/backup/AgentBackupTab.js";
24
+ import { ConnectionLogPanel as Pe } from "../components/agents/ConnectionLogPanel.js";
25
+ import { AgentMaintenanceTab as Fe } from "../components/agents/AgentMaintenanceTab.js";
26
+ import { AgentConnectionRecovery as Ie } from "../components/agents/AgentConnectionRecovery.js";
27
+ import { AgentStorageConfig as Le } from "../components/agents/AgentStorageConfig.js";
28
+ import { AliasManager as Re } from "../components/aliases/AliasManager.js";
29
+ import { notify as ze } from "../lib/toast.js";
30
30
  import { AgentStatusBadge as Be } from "../components/agents/AgentStatusBadge.js";
31
31
  import { RemoteTaskPermissionsCard as Ve } from "../components/agents/RemoteTaskPermissionsCard.js";
32
32
  import { GatewayAuthCard as He } from "../components/agents/GatewayAuthCard.js";
@@ -45,19 +45,19 @@ import { useQueryBackedTab as Ze } from "../hooks/useQueryBackedTab.js";
45
45
  import { mintScopedIframeToken as Qe } from "../services/iframeToken.js";
46
46
  import { AddTabDialog as $e } from "../components/plugins/AddTabDialog.js";
47
47
  import { PluginIframeMount as et } from "../components/plugins/PluginIframeMount.js";
48
- import { useCallback as o, useEffect as s, useMemo as tt, useRef as nt, useState as c } from "react";
49
- import { ArrowLeft as l, ArrowUpCircle as rt, Bot as it, Check as at, CheckCircle2 as ot, Clock as st, Command as ct, Copy as lt, Cpu as ut, Database as dt, Download as ft, Edit3 as pt, Eye as mt, EyeOff as ht, FileText as gt, HardDrive as _t, Info as vt, Key as yt, Loader2 as u, Monitor as bt, Play as xt, Plus as St, Puzzle as d, RefreshCw as Ct, ScrollText as wt, Server as f, Settings as Tt, Shield as Et, Square as Dt, Tag as Ot, Terminal as p, Trash2 as kt, Users as At, Wrench as jt, X as Mt, Zap as m } from "lucide-react";
50
- import { useParams as Nt } from "react-router-dom";
51
- import { usePermissions as Pt } from "@burdenoff/fe-libs/shared/providers/shell";
52
- import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
53
- import { Button as v, Checkbox as Ft, NextSteps as It, PagePurpose as Lt } from "@burdenoff/fe-libs/ui";
54
- import { useFeatureFlagDetails as Rt } from "@burdenoff/fe-libs/shared/feature-flags";
55
- import { PermissionButton as zt } from "@burdenoff/fe-libs/shared/components";
56
- import { Tabs as Bt } from "@burdenoff/fe-libs/chrome";
57
- import { MotionPage as y } from "@burdenoff/fe-libs/shared/motion";
58
- import { usePluginContributions as Vt } from "@burdenoff/fe-libs/shared/plugins";
48
+ import { useCallback as o, useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
49
+ import { ArrowLeft as d, ArrowUpCircle as tt, Bot as nt, Check as rt, CheckCircle2 as it, Clock as at, Command as ot, Copy as st, Cpu as ct, Database as lt, Download as ut, Edit3 as dt, Eye as ft, EyeOff as pt, FileText as mt, HardDrive as ht, Info as gt, Key as _t, Loader2 as f, Monitor as vt, Play as yt, Plus as bt, Puzzle as p, RefreshCw as xt, ScrollText as St, Server as m, Settings as Ct, Shield as wt, Square as Tt, Tag as Et, Terminal as h, Trash2 as Dt, Users as Ot, Wrench as kt, X as At, Zap as g } from "lucide-react";
50
+ import { useParams as jt } from "react-router-dom";
51
+ import { usePermissions as Mt } from "@burdenoff/fe-libs/shared/providers/shell";
52
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
53
+ import { Button as b, Checkbox as Nt, NextSteps as Pt, PagePurpose as Ft } from "@burdenoff/fe-libs/ui";
54
+ import { useFeatureFlagDetails as It } from "@burdenoff/fe-libs/shared/feature-flags";
55
+ import { PermissionButton as Lt } from "@burdenoff/fe-libs/shared/components";
56
+ import { Tabs as Rt } from "@burdenoff/fe-libs/chrome";
57
+ import { MotionPage as zt } from "@burdenoff/fe-libs/shared/motion";
58
+ import { usePluginContributions as Bt } from "@burdenoff/fe-libs/shared/plugins";
59
59
  //#region src/pages/AgentDetailsPage.tsx
60
- var Ht = [
60
+ var Vt = [
61
61
  "overview",
62
62
  "profiles",
63
63
  "security",
@@ -71,8 +71,8 @@ var Ht = [
71
71
  "backup",
72
72
  "maintenance"
73
73
  ];
74
- function b() {
75
- let { id: b } = Nt(), { basePath: Ut } = ge(), Wt = Ut || "", x = _e(), { hasPermission: Gt, isLoading: Kt, permissions: qt } = Pt(), S = ue(), [Jt] = oe({ refetchQueries: ["GetAgent"] }), [Yt] = r({
74
+ function x() {
75
+ let { id: x } = jt(), { basePath: Ht } = ge(), Ut = Ht || "", S = _e(), { hasPermission: Wt, isLoading: Gt, permissions: Kt } = Mt(), C = ue(), [qt] = oe({ refetchQueries: ["GetAgent"] }), [Jt] = r({
76
76
  refetchQueries: ["ListAgents", "VibeControlsInitialData"],
77
77
  awaitRefetchQueries: !0,
78
78
  update(e, t, { variables: n }) {
@@ -82,21 +82,21 @@ function b() {
82
82
  id: r
83
83
  }) }), e.gc());
84
84
  }
85
- }), [Xt] = n({ refetchQueries: ["GetAgent"] }), [Zt] = ie(), [Qt] = ae(), [C, $t] = c(null), en = ve((e) => e.setActiveAgentId);
85
+ }), [Yt] = n({ refetchQueries: ["GetAgent"] }), [Xt] = ie(), [Zt] = ae(), [w, Qt] = u(null), $t = ve((e) => e.setActiveAgentId);
86
86
  s(() => {
87
- b && en(b);
88
- }, [b, en]);
89
- let [tn, nn] = c(!1), [rn, w] = c(!1), [T, an] = c(""), [E, on] = c(!1), [sn, D] = c(null), cn = nt(null), [O, ln] = c(!1), [un, dn] = c(!1), [k, fn] = c(null), [pn, mn] = c(!1), [hn, gn] = c(null), [_n] = t({ fetchPolicy: "network-only" }), [vn, yn] = c(!1), { data: bn, loading: xn, error: Sn, refetch: A } = ee({
90
- variables: { id: b || "" },
91
- skip: !b,
87
+ x && $t(x);
88
+ }, [x, $t]);
89
+ let [en, tn] = u(!1), [nn, rn] = u(!1), [T, an] = u(""), [E, on] = u(!1), [sn, D] = u(null), cn = l(null), [O, ln] = u(!1), [un, dn] = u(!1), [k, fn] = u(null), [pn, mn] = u(!1), [hn, gn] = u(null), [_n] = t({ fetchPolicy: "network-only" }), [vn, yn] = u(!1), { data: bn, loading: xn, error: Sn, refetch: A } = ee({
90
+ variables: { id: x || "" },
91
+ skip: !x,
92
92
  fetchPolicy: "cache-and-network"
93
93
  }), j = bn?.vibecontrolsAgent, M = le({
94
94
  fetchPolicy: "cache-and-network",
95
95
  nextFetchPolicy: "cache-first",
96
96
  notifyOnNetworkStatusChange: !0,
97
- skip: !b,
97
+ skip: !x,
98
98
  pollInterval: 3e4
99
- }), { data: Cn } = ce({ skip: !b }), wn = M.data === void 0 && Cn === void 0, N = tt(() => {
99
+ }), { data: Cn } = ce({ skip: !x }), wn = M.data === void 0 && Cn === void 0, N = c(() => {
100
100
  let e = /* @__PURE__ */ new Map(), t = Cn?.vibecontrolsAgentHealthProbeStream ?? M.data?.vibecontrolsAgentHealthProbes ?? [];
101
101
  for (let n of t) e.set(n.agentId, {
102
102
  agentId: n.agentId,
@@ -104,7 +104,7 @@ function b() {
104
104
  errorMessage: n.errorMessage
105
105
  });
106
106
  return e;
107
- }, [M.data, Cn]), P = tt(() => j ? qe({
107
+ }, [M.data, Cn]), P = c(() => j ? qe({
108
108
  id: j.id,
109
109
  isActive: j.isActive,
110
110
  metadata: j.metadata
@@ -112,7 +112,7 @@ function b() {
112
112
  j,
113
113
  N,
114
114
  wn
115
- ]), Tn = P === "STOPPED" || P === "OFFLINE", { active: F } = Oe(j?.id ?? null), I = Rt("vibes.tabs.iframe-host")?.value === !0, En = tt(() => {
115
+ ]), Tn = P === "STOPPED" || P === "OFFLINE", { active: F } = Oe(j?.id ?? null), I = It("vibes.tabs.iframe-host")?.value === !0, En = c(() => {
116
116
  if (!I || !j?.tunnelUrl) return [];
117
117
  let e = j.id, t = F ?? "default";
118
118
  return [{
@@ -127,17 +127,17 @@ function b() {
127
127
  j?.tunnelUrl,
128
128
  j?.name,
129
129
  F
130
- ]), L = Vt(En, {
130
+ ]), L = Bt(En, {
131
131
  mountPoint: "agent.detailTab",
132
132
  enabled: I && En.length > 0
133
- }), [R, z] = Ze(tt(() => {
133
+ }), [R, z] = Ze(c(() => {
134
134
  let e = L.data.filter((e) => e.contribution.mountPoint === "agent.detailTab").map((e) => e.contribution.id);
135
- return [...Ht, ...e];
136
- }, [L.data]), "overview"), [Dn, On] = c(!1), kn = nt(!1);
135
+ return [...Vt, ...e];
136
+ }, [L.data]), "overview"), [Dn, On] = u(!1), kn = l(!1);
137
137
  s(() => {
138
- j && !kn.current && (kn.current = !0, Xt().catch(() => {}));
139
- }, [j, Xt]);
140
- let [An] = re(), jn = nt(!1);
138
+ j && !kn.current && (kn.current = !0, Yt().catch(() => {}));
139
+ }, [j, Yt]);
140
+ let [An] = re(), jn = l(!1);
141
141
  s(() => {
142
142
  if (!j || jn.current) return;
143
143
  let e = !!(j.appId && j.appClientId), t = !!j.tunnelUrl;
@@ -149,7 +149,7 @@ function b() {
149
149
  An,
150
150
  A
151
151
  ]);
152
- let [B, Mn] = c([]), [Nn, Pn] = c([]), [Fn, In] = c(!0), [V, H] = c(null), [Ln, U] = c(null), [Rn, zn] = c(null), [Bn, Vn] = c(null), [Hn, Un] = c(!1), [Wn, Gn] = c(!1), [Kn, qn] = c(!1), [W, Jn] = c(!1), [Yn, G] = c(!1), [Xn, Zn] = c("plugin"), Qn = nt(null), [K, $n] = c("installed"), [q, er] = c(""), [J, tr] = c([]), [nr, rr] = c(!1), [ir, ar] = c(null), [Y, or] = c(null), [sr] = e(), [cr] = te(), [lr] = ne(), [ur] = se(), X = o(async () => {
152
+ let [B, Mn] = u([]), [Nn, Pn] = u([]), [Fn, In] = u(!0), [V, H] = u(null), [Ln, U] = u(null), [Rn, zn] = u(null), [Bn, Vn] = u(null), [Hn, Un] = u(!1), [Wn, Gn] = u(!1), [Kn, qn] = u(!1), [W, Jn] = u(!1), [Yn, G] = u(!1), [Xn, Zn] = u("plugin"), Qn = l(null), [K, $n] = u("installed"), [q, er] = u(""), [J, tr] = u([]), [nr, rr] = u(!1), [ir, ar] = u(null), [Y, or] = u(null), [sr] = e(), [cr] = te(), [lr] = ne(), [ur] = se(), X = o(async () => {
153
153
  if (j?.id) {
154
154
  In(!0), U(null);
155
155
  try {
@@ -214,13 +214,13 @@ function b() {
214
214
  packageName: e
215
215
  } });
216
216
  if (t?.installAgentPlugin?.success) await X();
217
- else throw Error(t?.installAgentPlugin?.error || S("agentDetails.installFailed", "Install failed"));
217
+ else throw Error(t?.installAgentPlugin?.error || C("agentDetails.installFailed", "Install failed"));
218
218
  } catch (e) {
219
219
  if (me(e)) {
220
220
  he(), Zn("plugin"), G(!0);
221
221
  return;
222
222
  }
223
- U(e instanceof Error ? e.message : S("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => U(null), 5e3);
223
+ U(e instanceof Error ? e.message : C("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => U(null), 5e3);
224
224
  } finally {
225
225
  H(null);
226
226
  }
@@ -229,7 +229,7 @@ function b() {
229
229
  j?.id,
230
230
  cr,
231
231
  X,
232
- S
232
+ C
233
233
  ]), fr = o((e) => {
234
234
  zn(e);
235
235
  }, []), pr = o(async (e) => {
@@ -241,9 +241,9 @@ function b() {
241
241
  packageName: e
242
242
  } });
243
243
  if (t?.removeAgentPlugin?.success) await X();
244
- else throw Error(t?.removeAgentPlugin?.error || S("agentDetails.removeFailed", "Remove failed"));
244
+ else throw Error(t?.removeAgentPlugin?.error || C("agentDetails.removeFailed", "Remove failed"));
245
245
  } catch (e) {
246
- U(e instanceof Error ? e.message : S("agentDetails.pluginRemoveFailed", "Failed to remove plugin")), setTimeout(() => U(null), 5e3);
246
+ U(e instanceof Error ? e.message : C("agentDetails.pluginRemoveFailed", "Failed to remove plugin")), setTimeout(() => U(null), 5e3);
247
247
  } finally {
248
248
  H(null);
249
249
  }
@@ -252,7 +252,7 @@ function b() {
252
252
  j?.id,
253
253
  lr,
254
254
  X,
255
- S
255
+ C
256
256
  ]), mr = o((e) => {
257
257
  Vn(e);
258
258
  }, []), hr = o(async (e, t) => {
@@ -265,9 +265,9 @@ function b() {
265
265
  version: t ?? null
266
266
  } }), r = n?.updateAgentPlugin;
267
267
  if (r?.ok) await X();
268
- else throw Error(r?.error || S("agentDetails.updateFailed", "Plugin update failed"));
268
+ else throw Error(r?.error || C("agentDetails.updateFailed", "Plugin update failed"));
269
269
  } catch (e) {
270
- U(e instanceof Error ? e.message : S("agentDetails.pluginUpdateFailed", "Failed to update plugin")), setTimeout(() => U(null), 5e3);
270
+ U(e instanceof Error ? e.message : C("agentDetails.pluginUpdateFailed", "Failed to update plugin")), setTimeout(() => U(null), 5e3);
271
271
  } finally {
272
272
  H(null);
273
273
  }
@@ -276,7 +276,7 @@ function b() {
276
276
  j?.id,
277
277
  ur,
278
278
  X,
279
- S
279
+ C
280
280
  ]), Z = j?.sessions || [], Q = j?.vibes || [], gr = o(async () => {
281
281
  rr(!0), ar(null);
282
282
  try {
@@ -365,68 +365,68 @@ function b() {
365
365
  k,
366
366
  _n
367
367
  ]);
368
- if (Kt) return /* @__PURE__ */ g("div", {
368
+ if (Gt) return /* @__PURE__ */ v("div", {
369
369
  className: "flex items-center justify-center min-h-[400px]",
370
- children: /* @__PURE__ */ g("p", {
370
+ children: /* @__PURE__ */ v("p", {
371
371
  className: "text-text-secondary",
372
372
  children: "Loading permissions…"
373
373
  })
374
374
  });
375
- if (qt && (qt.permissionStrings?.length ?? 0) > 0 && !Gt(Me.AGENT_READ)) return /* @__PURE__ */ g("div", {
375
+ if (Kt && (Kt.permissionStrings?.length ?? 0) > 0 && !Wt(a.AGENT_READ)) return /* @__PURE__ */ v("div", {
376
376
  className: "flex items-center justify-center min-h-[400px]",
377
- children: /* @__PURE__ */ _("div", {
377
+ children: /* @__PURE__ */ y("div", {
378
378
  className: "text-center space-y-2",
379
- children: [/* @__PURE__ */ g("h2", {
379
+ children: [/* @__PURE__ */ v("h2", {
380
380
  className: "text-lg font-semibold text-text-primary",
381
381
  children: "Access Denied"
382
- }), /* @__PURE__ */ g("p", {
382
+ }), /* @__PURE__ */ v("p", {
383
383
  className: "text-sm text-text-secondary",
384
384
  children: "You don't have permission to access this page."
385
385
  })]
386
386
  })
387
387
  });
388
388
  let $ = () => {
389
- x("/agents");
389
+ S("/agents");
390
390
  }, yr = async (e) => {
391
- if (!(!j?.id || C)) {
392
- $t(e);
391
+ if (!(!j?.id || w)) {
392
+ Qt(e);
393
393
  try {
394
- let t = e === "start" ? await Zt({ variables: { agentId: j.id } }) : await Qt({ variables: { agentId: j.id } }), n = e === "start" ? t.data?.startVibecontrolsAgent : t.data?.stopVibecontrolsAgent;
394
+ let t = e === "start" ? await Xt({ variables: { agentId: j.id } }) : await Zt({ variables: { agentId: j.id } }), n = e === "start" ? t.data?.startVibecontrolsAgent : t.data?.stopVibecontrolsAgent;
395
395
  if (!n || n.success === !1) throw Error(n?.error || `Failed to ${e} agent`);
396
- a.success(e === "start" ? S("agentDetails.agentStarted", "Agent started") : S("agentDetails.agentStopped", "Agent stopped")), await Promise.all([A(), M.refetch()]).catch(() => {});
396
+ ze.success(e === "start" ? C("agentDetails.agentStarted", "Agent started") : C("agentDetails.agentStopped", "Agent stopped")), await Promise.all([A(), M.refetch()]).catch(() => {});
397
397
  } catch (t) {
398
398
  let n = t instanceof Error ? t.message : "", r = /unable to connect|fetch failed|timed? ?out|ECONN|agent returned 5|network/i.test(n);
399
- a.error(r ? S("agentDetails.agentUnreachable", `Couldn't reach the agent to ${e} it — it may be offline or its tunnel is down. Start it from the host with: vibe start`) : n || S("agentDetails.lifecycleFailed", "Failed to {{action}} agent", { action: e }));
399
+ ze.error(r ? C("agentDetails.agentUnreachable", `Couldn't reach the agent to ${e} it — it may be offline or its tunnel is down. Start it from the host with: vibe start`) : n || C("agentDetails.lifecycleFailed", "Failed to {{action}} agent", { action: e }));
400
400
  } finally {
401
- $t(null);
401
+ Qt(null);
402
402
  }
403
403
  }
404
404
  }, br = () => void yr("start"), xr = () => void yr("stop"), Sr = async () => {
405
- await Promise.all([A(), M.refetch()]).catch(() => {}), x("/agents");
405
+ await Promise.all([A(), M.refetch()]).catch(() => {}), S("/agents");
406
406
  }, Cr = () => {
407
- nn(!0);
407
+ tn(!0);
408
408
  }, wr = async () => {
409
409
  if (!j?.id) return;
410
410
  let e = T.trim();
411
411
  if (!e || e === j.name) {
412
- w(!1);
412
+ rn(!1);
413
413
  return;
414
414
  }
415
415
  on(!0), D(null);
416
416
  try {
417
- let t = await Jt({ variables: {
417
+ let t = await qt({ variables: {
418
418
  id: j.id,
419
419
  input: { name: e }
420
420
  } });
421
421
  if (t.error) throw t.error;
422
- w(!1);
422
+ rn(!1);
423
423
  } catch (e) {
424
424
  D(e instanceof Error ? e.message : String(e));
425
425
  } finally {
426
426
  on(!1);
427
427
  }
428
428
  }, Tr = () => {
429
- w(!1), an(""), D(null);
429
+ rn(!1), an(""), D(null);
430
430
  }, Er = async () => {
431
431
  let e = await vr();
432
432
  if (e) try {
@@ -442,7 +442,7 @@ function b() {
442
442
  if (j?.id) {
443
443
  Jn(!0);
444
444
  try {
445
- await Yt({ variables: {
445
+ await Jt({ variables: {
446
446
  id: j.id,
447
447
  uninstallFromTarget: Wn,
448
448
  deleteTarget: Kn
@@ -454,261 +454,261 @@ function b() {
454
454
  }
455
455
  }
456
456
  }, Ar = (e) => {
457
- x(`/sessions/${e}`);
457
+ S(`/sessions/${e}`);
458
458
  }, jr = () => {
459
459
  yn(!0);
460
460
  }, Mr = (e) => {
461
- x(`/vibes/${e}`);
461
+ S(`/vibes/${e}`);
462
462
  }, Nr = (e) => {
463
- if (!e) return S("health.never", "Never");
463
+ if (!e) return C("health.never", "Never");
464
464
  let t = Date.now() - new Date(e).getTime();
465
- 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();
465
+ return t < 6e4 ? C("health.justNow", "Just now") : t < 36e5 ? C("agentDetails.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? C("agentDetails.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : new Date(e).toLocaleDateString();
466
466
  };
467
- if (xn && !j) return /* @__PURE__ */ _(y, {
467
+ if (xn && !j) return /* @__PURE__ */ y(zt, {
468
468
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
469
- children: [/* @__PURE__ */ _("button", {
469
+ children: [/* @__PURE__ */ y("button", {
470
470
  type: "button",
471
471
  onClick: $,
472
472
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
473
- children: [/* @__PURE__ */ g(l, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
474
- }), /* @__PURE__ */ g(Ne, { variant: "detail" })]
473
+ children: [/* @__PURE__ */ v(d, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
474
+ }), /* @__PURE__ */ v(Me, { variant: "detail" })]
475
475
  });
476
- if (Sn && !j) return /* @__PURE__ */ _(y, {
476
+ if (Sn && !j) return /* @__PURE__ */ y(zt, {
477
477
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
478
- children: [/* @__PURE__ */ _("button", {
478
+ children: [/* @__PURE__ */ y("button", {
479
479
  type: "button",
480
480
  onClick: $,
481
481
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
482
- children: [/* @__PURE__ */ g(l, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
483
- }), /* @__PURE__ */ g(be, {
484
- title: S("agentDetails.failedLoad", "Failed to load agent"),
482
+ children: [/* @__PURE__ */ v(d, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
483
+ }), /* @__PURE__ */ v(be, {
484
+ title: C("agentDetails.failedLoad", "Failed to load agent"),
485
485
  message: Sn.message,
486
486
  onRetry: () => A()
487
487
  })]
488
488
  });
489
- if (!j) return /* @__PURE__ */ _(y, {
489
+ if (!j) return /* @__PURE__ */ y(zt, {
490
490
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
491
- children: [/* @__PURE__ */ _("button", {
491
+ children: [/* @__PURE__ */ y("button", {
492
492
  type: "button",
493
493
  onClick: $,
494
494
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
495
- children: [/* @__PURE__ */ g(l, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
496
- }), /* @__PURE__ */ g(Se, {
497
- icon: /* @__PURE__ */ g(f, { className: "size-8 text-text-secondary" }),
498
- title: S("agentDetails.notFound", "Agent not found"),
499
- description: `${S("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${b}" ${S("agentDetails.notFoundDescriptionSuffix", "exists")}`,
500
- action: /* @__PURE__ */ g(v, {
495
+ children: [/* @__PURE__ */ v(d, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
496
+ }), /* @__PURE__ */ v(Se, {
497
+ icon: /* @__PURE__ */ v(m, { className: "size-8 text-text-secondary" }),
498
+ title: C("agentDetails.notFound", "Agent not found"),
499
+ description: `${C("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${x}" ${C("agentDetails.notFoundDescriptionSuffix", "exists")}`,
500
+ action: /* @__PURE__ */ v(b, {
501
501
  type: "button",
502
502
  onClick: $,
503
- children: S("agentDetails.backToAgents", "Back to Agents")
503
+ children: C("agentDetails.backToAgents", "Back to Agents")
504
504
  })
505
505
  })]
506
506
  });
507
507
  let Pr = [
508
508
  {
509
509
  id: "overview",
510
- label: S("nav.overview", "Overview"),
511
- icon: f
510
+ label: C("nav.overview", "Overview"),
511
+ icon: m
512
512
  },
513
513
  {
514
514
  id: "profiles",
515
- label: S("agentDetails.profiles", "Profiles"),
516
- icon: At
515
+ label: C("agentDetails.profiles", "Profiles"),
516
+ icon: Ot
517
517
  },
518
518
  {
519
519
  id: "security",
520
- label: S("agentDetails.security", "Security"),
521
- icon: Et
520
+ label: C("agentDetails.security", "Security"),
521
+ icon: wt
522
522
  },
523
523
  {
524
524
  id: "plugins",
525
- label: S("agentDetails.plugins", "Plugins"),
526
- icon: d,
525
+ label: C("agentDetails.plugins", "Plugins"),
526
+ icon: p,
527
527
  badge: `${B.length}`
528
528
  },
529
529
  {
530
530
  id: "sessions",
531
- label: S("nav.sessions", "Sessions"),
532
- icon: p,
531
+ label: C("nav.sessions", "Sessions"),
532
+ icon: h,
533
533
  badge: `${Z.length}`
534
534
  },
535
535
  {
536
536
  id: "logs",
537
- label: S("nav.logs", "Logs"),
538
- icon: wt
537
+ label: C("nav.logs", "Logs"),
538
+ icon: St
539
539
  },
540
540
  {
541
541
  id: "connection",
542
- label: S("agentDetails.connection", "Connection Log"),
543
- icon: wt
542
+ label: C("agentDetails.connection", "Connection Log"),
543
+ icon: St
544
544
  },
545
545
  {
546
546
  id: "vibes",
547
- label: S("nav.vibes", "Vibes"),
548
- icon: m,
547
+ label: C("nav.vibes", "Vibes"),
548
+ icon: g,
549
549
  badge: `${Q.length}`
550
550
  },
551
551
  {
552
552
  id: "notes",
553
- label: S("vibeDetails.notes", "Notes"),
554
- icon: gt
553
+ label: C("vibeDetails.notes", "Notes"),
554
+ icon: mt
555
555
  },
556
556
  {
557
557
  id: "aliases",
558
- label: S("agentDetails.aliases", "Aliases"),
559
- icon: ct
558
+ label: C("agentDetails.aliases", "Aliases"),
559
+ icon: ot
560
560
  },
561
561
  {
562
562
  id: "backup",
563
- label: S("agentDetails.backup", "Backup"),
564
- icon: dt
563
+ label: C("agentDetails.backup", "Backup"),
564
+ icon: lt
565
565
  },
566
566
  {
567
567
  id: "maintenance",
568
- label: S("agentDetails.maintenance.tab", "Maintenance"),
569
- icon: jt
568
+ label: C("agentDetails.maintenance.tab", "Maintenance"),
569
+ icon: kt
570
570
  }
571
571
  ], Fr = Z.filter((e) => e.status === "RUNNING").length;
572
- return /* @__PURE__ */ _(y, {
572
+ return /* @__PURE__ */ y(zt, {
573
573
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
574
574
  children: [
575
- /* @__PURE__ */ _("button", {
575
+ /* @__PURE__ */ y("button", {
576
576
  type: "button",
577
577
  onClick: $,
578
578
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
579
- children: [/* @__PURE__ */ g(l, { className: "size-4" }), S("agentDetails.backToAgents", "Back to Agents")]
579
+ children: [/* @__PURE__ */ v(d, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
580
580
  }),
581
- /* @__PURE__ */ g(ye, {
581
+ /* @__PURE__ */ v(ye, {
582
582
  title: j.name,
583
- description: j.hostname || S("agentDetails.noHostnameConfigured", "No hostname configured"),
583
+ description: j.hostname || C("agentDetails.noHostnameConfigured", "No hostname configured"),
584
584
  breadcrumb: [{
585
- label: S("nav.agents", "Agents"),
586
- path: Wt ? `${Wt}/agents` : "/agents"
585
+ label: C("nav.agents", "Agents"),
586
+ path: Ut ? `${Ut}/agents` : "/agents"
587
587
  }, { label: j.name }],
588
- actions: /* @__PURE__ */ _("div", {
588
+ actions: /* @__PURE__ */ y("div", {
589
589
  className: "flex flex-wrap items-center gap-2",
590
590
  children: [
591
- Tn ? /* @__PURE__ */ _(v, {
591
+ Tn ? /* @__PURE__ */ y(b, {
592
592
  type: "button",
593
593
  onClick: br,
594
- disabled: C !== null,
595
- "aria-busy": C === "start",
596
- children: [C === "start" ? /* @__PURE__ */ g(u, {
594
+ disabled: w !== null,
595
+ "aria-busy": w === "start",
596
+ children: [w === "start" ? /* @__PURE__ */ v(f, {
597
597
  className: "size-4 animate-spin",
598
598
  "aria-hidden": "true"
599
- }) : /* @__PURE__ */ g(xt, {
599
+ }) : /* @__PURE__ */ v(yt, {
600
600
  className: "size-4",
601
601
  "aria-hidden": "true"
602
- }), C === "start" ? S("agentDetails.starting", "Starting…") : S("agentDetails.start", "Start")]
603
- }) : /* @__PURE__ */ _(v, {
602
+ }), w === "start" ? C("agentDetails.starting", "Starting…") : C("agentDetails.start", "Start")]
603
+ }) : /* @__PURE__ */ y(b, {
604
604
  type: "button",
605
605
  variant: "outline",
606
606
  onClick: xr,
607
- disabled: C !== null,
608
- "aria-busy": C === "stop",
609
- children: [C === "stop" ? /* @__PURE__ */ g(u, {
607
+ disabled: w !== null,
608
+ "aria-busy": w === "stop",
609
+ children: [w === "stop" ? /* @__PURE__ */ v(f, {
610
610
  className: "size-4 animate-spin",
611
611
  "aria-hidden": "true"
612
- }) : /* @__PURE__ */ g(Dt, {
612
+ }) : /* @__PURE__ */ v(Tt, {
613
613
  className: "size-4",
614
614
  "aria-hidden": "true"
615
- }), C === "stop" ? S("agentDetails.stopping", "Stopping…") : S("sessions.stop", "Stop")]
615
+ }), w === "stop" ? C("agentDetails.stopping", "Stopping…") : C("sessions.stop", "Stop")]
616
616
  }),
617
- P === "DEGRADED" && /* @__PURE__ */ _(v, {
617
+ P === "DEGRADED" && /* @__PURE__ */ y(b, {
618
618
  type: "button",
619
619
  variant: "secondary",
620
620
  onClick: br,
621
- disabled: C !== null,
622
- "aria-busy": C === "start",
621
+ disabled: w !== null,
622
+ "aria-busy": w === "start",
623
623
  className: "text-status-warning-text hover:text-status-warning-text",
624
624
  title: N.get(j.id)?.errorMessage ? `Retry lifecycle/start — last error: ${N.get(j.id)?.errorMessage}` : "Retry lifecycle/start",
625
- children: [C === "start" ? /* @__PURE__ */ g(u, {
625
+ children: [w === "start" ? /* @__PURE__ */ v(f, {
626
626
  className: "size-4 animate-spin",
627
627
  "aria-hidden": "true"
628
- }) : /* @__PURE__ */ g(Ct, {
628
+ }) : /* @__PURE__ */ v(xt, {
629
629
  className: "size-4",
630
630
  "aria-hidden": "true"
631
- }), C === "start" ? S("agentDetails.reconnecting", "Reconnecting…") : S("agentDetails.reconnect", "Reconnect")]
631
+ }), w === "start" ? C("agentDetails.reconnecting", "Reconnecting…") : C("agentDetails.reconnect", "Reconnect")]
632
632
  }),
633
- /* @__PURE__ */ g(Ke, {
633
+ /* @__PURE__ */ v(Ke, {
634
634
  agentId: j.id,
635
635
  tunnelUrl: j.tunnelUrl || null,
636
636
  profile: F
637
637
  }),
638
- /* @__PURE__ */ _(v, {
638
+ /* @__PURE__ */ y(b, {
639
639
  type: "button",
640
640
  variant: "outline",
641
641
  onClick: Cr,
642
- children: [/* @__PURE__ */ g(Tt, {
642
+ children: [/* @__PURE__ */ v(Ct, {
643
643
  className: "size-4",
644
644
  "aria-hidden": "true"
645
- }), S("agentDetails.configure", "Configure")]
645
+ }), C("agentDetails.configure", "Configure")]
646
646
  }),
647
- /* @__PURE__ */ g(Te, {
648
- ariaLabel: S("agentDetails.agentActions", "Agent actions"),
649
- title: S("agentDetails.agentActions", "Agent actions"),
647
+ /* @__PURE__ */ v(Te, {
648
+ ariaLabel: C("agentDetails.agentActions", "Agent actions"),
649
+ title: C("agentDetails.agentActions", "Agent actions"),
650
650
  align: "end",
651
651
  items: [
652
652
  {
653
653
  key: "ai-chat",
654
- label: S("agentDetails.aiChat", "AI Chat"),
655
- icon: it,
656
- onSelect: () => x("/ai?contextLevel=agent")
654
+ label: C("agentDetails.aiChat", "AI Chat"),
655
+ icon: nt,
656
+ onSelect: () => S("/ai?contextLevel=agent")
657
657
  },
658
658
  {
659
659
  key: "refresh",
660
- label: S("common.refresh", "Refresh"),
661
- icon: Ct,
660
+ label: C("common.refresh", "Refresh"),
661
+ icon: xt,
662
662
  onSelect: () => void A(),
663
663
  disabled: xn
664
664
  },
665
- {
665
+ ...Wt(a.AGENT_DELETE) ? [{
666
666
  key: "remove",
667
- label: S("sessions.remove", "Remove"),
668
- icon: kt,
667
+ label: C("sessions.remove", "Remove"),
668
+ icon: Dt,
669
669
  onSelect: Or,
670
670
  variant: "danger",
671
671
  separatorBefore: !0
672
- }
672
+ }] : []
673
673
  ]
674
674
  })
675
675
  ]
676
676
  })
677
677
  }),
678
- /* @__PURE__ */ g(Lt, {
679
- icon: /* @__PURE__ */ g(f, { className: "size-4" }),
680
- children: S("agentDetails.purpose", "This page is the control panel for one agent — the program running on your machine that VibeControls uses to execute work. Here you check its health and connection, start or restart it, push gateway credentials, review its sessions and security, and copy the commands to (re)install it. Come here when an agent is degraded or you need to confirm it is reachable.")
678
+ /* @__PURE__ */ v(Ft, {
679
+ icon: /* @__PURE__ */ v(m, { className: "size-4" }),
680
+ children: C("agentDetails.purpose", "This page is the control panel for one agent — the program running on your machine that VibeControls uses to execute work. Here you check its health and connection, start or restart it, push gateway credentials, review its sessions and security, and copy the commands to (re)install it. Come here when an agent is degraded or you need to confirm it is reachable.")
681
681
  }),
682
- /* @__PURE__ */ g(It, {
682
+ /* @__PURE__ */ v(Pt, {
683
683
  storageKey: "vibecontrols-agent-details",
684
684
  steps: [
685
685
  {
686
686
  id: "start-session",
687
- label: S("agentDetails.next.startSession", "Start a session on this agent"),
688
- description: S("agentDetails.next.startSessionDesc", "Open a terminal or task that runs on this machine."),
689
- icon: /* @__PURE__ */ g(St, { className: "size-4" }),
687
+ label: C("agentDetails.next.startSession", "Start a session on this agent"),
688
+ description: C("agentDetails.next.startSessionDesc", "Open a terminal or task that runs on this machine."),
689
+ icon: /* @__PURE__ */ v(bt, { className: "size-4" }),
690
690
  onClick: jr
691
691
  },
692
692
  {
693
693
  id: "check-connection",
694
- label: S("agentDetails.next.checkConnection", "Check the connection"),
695
- description: S("agentDetails.next.checkConnectionDesc", "Verify the tunnel URL and reachability on the Connection tab."),
696
- icon: /* @__PURE__ */ g(f, { className: "size-4" }),
694
+ label: C("agentDetails.next.checkConnection", "Check the connection"),
695
+ description: C("agentDetails.next.checkConnectionDesc", "Verify the tunnel URL and reachability on the Connection tab."),
696
+ icon: /* @__PURE__ */ v(m, { className: "size-4" }),
697
697
  onClick: () => z("connection")
698
698
  },
699
699
  {
700
700
  id: "review-security",
701
- label: S("agentDetails.next.reviewSecurity", "Review security & credentials"),
702
- description: S("agentDetails.next.reviewSecurityDesc", "Confirm gateway auth is pushed and scopes are correct."),
703
- icon: /* @__PURE__ */ g(it, { className: "size-4" }),
701
+ label: C("agentDetails.next.reviewSecurity", "Review security & credentials"),
702
+ description: C("agentDetails.next.reviewSecurityDesc", "Confirm gateway auth is pushed and scopes are correct."),
703
+ icon: /* @__PURE__ */ v(nt, { className: "size-4" }),
704
704
  onClick: () => z("security")
705
705
  }
706
706
  ]
707
707
  }),
708
- /* @__PURE__ */ g("div", {
708
+ /* @__PURE__ */ v("div", {
709
709
  className: "flex items-center gap-2 -mt-2",
710
- children: rn ? /* @__PURE__ */ _(h, { children: [
711
- /* @__PURE__ */ g("input", {
710
+ children: nn ? /* @__PURE__ */ y(_, { children: [
711
+ /* @__PURE__ */ v("input", {
712
712
  ref: cn,
713
713
  type: "text",
714
714
  value: T,
@@ -718,94 +718,94 @@ function b() {
718
718
  },
719
719
  disabled: E,
720
720
  maxLength: 120,
721
- "aria-label": S("agentDetails.renameInput", "New agent name"),
721
+ "aria-label": C("agentDetails.renameInput", "New agent name"),
722
722
  className: "flex-1 max-w-md px-3 py-1.5 text-sm bg-bg-surface border border-border-subtle rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong",
723
723
  placeholder: j.name,
724
724
  "data-testid": "agent-details-rename-input"
725
725
  }),
726
- /* @__PURE__ */ _("button", {
726
+ /* @__PURE__ */ y("button", {
727
727
  type: "button",
728
728
  onClick: () => void wr(),
729
729
  disabled: !T.trim() || T.trim() === j.name || E,
730
730
  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-bgHover transition-colors disabled:opacity-60 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
731
731
  "data-testid": "agent-details-rename-save",
732
- children: [E ? /* @__PURE__ */ g(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ g(at, { className: "size-3.5" }), S("agentDetails.saveName", "Save")]
732
+ children: [E ? /* @__PURE__ */ v(f, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ v(rt, { className: "size-3.5" }), C("agentDetails.saveName", "Save")]
733
733
  }),
734
- /* @__PURE__ */ g("button", {
734
+ /* @__PURE__ */ v("button", {
735
735
  type: "button",
736
736
  onClick: Tr,
737
737
  disabled: E,
738
738
  className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary disabled:opacity-60",
739
739
  "data-testid": "agent-details-rename-cancel",
740
- children: S("common.cancel", "Cancel")
740
+ children: C("common.cancel", "Cancel")
741
741
  }),
742
- sn && /* @__PURE__ */ g("span", {
742
+ sn && /* @__PURE__ */ v("span", {
743
743
  className: "text-xs text-status-error-text",
744
744
  role: "alert",
745
745
  children: sn
746
746
  })
747
- ] }) : /* @__PURE__ */ _("button", {
747
+ ] }) : /* @__PURE__ */ y("button", {
748
748
  type: "button",
749
749
  onClick: () => {
750
- D(null), an(j.name), w(!0), requestAnimationFrame(() => cn.current?.select());
750
+ D(null), an(j.name), rn(!0), requestAnimationFrame(() => cn.current?.select());
751
751
  },
752
752
  className: "inline-flex items-center gap-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors",
753
- title: S("agentDetails.renameTooltip", "Rename this agent"),
753
+ title: C("agentDetails.renameTooltip", "Rename this agent"),
754
754
  "data-testid": "agent-details-rename-trigger",
755
- children: [/* @__PURE__ */ g(pt, { className: "size-3.5" }), S("agentDetails.rename", "Rename")]
755
+ children: [/* @__PURE__ */ v(dt, { className: "size-3.5" }), C("agentDetails.rename", "Rename")]
756
756
  })
757
757
  }),
758
- P === "DEGRADED" && /* @__PURE__ */ _("div", {
758
+ P === "DEGRADED" && /* @__PURE__ */ y("div", {
759
759
  role: "status",
760
760
  "aria-live": "polite",
761
761
  className: "flex items-start gap-3 rounded-lg border border-status-warning-border bg-status-warning-bg-subtle px-4 py-3 text-sm text-text-primary",
762
762
  children: [
763
- /* @__PURE__ */ g(u, {
763
+ /* @__PURE__ */ v(f, {
764
764
  className: "size-4 mt-0.5 flex-shrink-0 animate-spin text-status-warning-text",
765
765
  "aria-hidden": "true"
766
766
  }),
767
- /* @__PURE__ */ _("div", {
767
+ /* @__PURE__ */ y("div", {
768
768
  className: "flex-1 min-w-0 space-y-1",
769
769
  children: [
770
- /* @__PURE__ */ g("p", {
770
+ /* @__PURE__ */ v("p", {
771
771
  className: "font-medium",
772
- children: S("agentDetails.degradedBanner.title", "Agent is degraded — auto-reconnecting in the background")
772
+ children: C("agentDetails.degradedBanner.title", "Agent is degraded — auto-reconnecting in the background")
773
773
  }),
774
- N.get(j.id)?.errorMessage && /* @__PURE__ */ g("p", {
774
+ N.get(j.id)?.errorMessage && /* @__PURE__ */ v("p", {
775
775
  className: "text-xs text-text-secondary",
776
- children: /* @__PURE__ */ g("span", {
776
+ children: /* @__PURE__ */ v("span", {
777
777
  className: "font-mono text-status-warning-text",
778
778
  children: N.get(j.id)?.errorMessage
779
779
  })
780
780
  }),
781
- /* @__PURE__ */ g("p", {
781
+ /* @__PURE__ */ v("p", {
782
782
  className: "text-xs text-text-secondary",
783
- children: S("agentDetails.degradedBanner.action", "Health probes run every ~30s; the badge flips back to Active automatically once a probe succeeds. You can click Reconnect above to retry now, or check the Connection tab for the probe history.")
783
+ children: C("agentDetails.degradedBanner.action", "Health probes run every ~30s; the badge flips back to Active automatically once a probe succeeds. You can click Reconnect above to retry now, or check the Connection tab for the probe history.")
784
784
  })
785
785
  ]
786
786
  }),
787
- /* @__PURE__ */ g("button", {
787
+ /* @__PURE__ */ v("button", {
788
788
  type: "button",
789
789
  onClick: () => z("connection"),
790
790
  className: "text-xs font-medium text-text-link hover:underline flex-shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus rounded",
791
- children: S("agentDetails.degradedBanner.viewLog", "View log →")
791
+ children: C("agentDetails.degradedBanner.viewLog", "View log →")
792
792
  })
793
793
  ]
794
794
  }),
795
- /* @__PURE__ */ _("div", {
795
+ /* @__PURE__ */ y("div", {
796
796
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
797
797
  children: [
798
- /* @__PURE__ */ g(i, {
798
+ /* @__PURE__ */ v(i, {
799
799
  className: "p-4",
800
- children: /* @__PURE__ */ _("div", {
800
+ children: /* @__PURE__ */ y("div", {
801
801
  className: "flex items-center gap-3",
802
- children: [/* @__PURE__ */ g("div", {
802
+ children: [/* @__PURE__ */ v("div", {
803
803
  className: "size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center",
804
- children: /* @__PURE__ */ g(f, { className: "size-5 text-action-primary-bg" })
805
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
804
+ children: /* @__PURE__ */ v(m, { className: "size-5 text-action-primary-bg" })
805
+ }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
806
806
  className: "text-sm text-text-secondary",
807
- children: S("sessions.filterStatus", "Status")
808
- }), /* @__PURE__ */ g(Be, {
807
+ children: C("sessions.filterStatus", "Status")
808
+ }), /* @__PURE__ */ v(Be, {
809
809
  status: P,
810
810
  reason: N.get(j.id)?.errorMessage ?? (j.lastGatewayAuthPushStatus === "failed" ? j.lastGatewayAuthPushError ?? "Gateway-auth push failed" : null),
811
811
  linkTo: "?tab=connection",
@@ -815,17 +815,17 @@ function b() {
815
815
  })] })]
816
816
  })
817
817
  }),
818
- /* @__PURE__ */ g(i, {
818
+ /* @__PURE__ */ v(i, {
819
819
  className: "p-4",
820
- children: /* @__PURE__ */ _("div", {
820
+ children: /* @__PURE__ */ y("div", {
821
821
  className: "flex items-center gap-3",
822
- children: [/* @__PURE__ */ g("div", {
822
+ children: [/* @__PURE__ */ v("div", {
823
823
  className: "size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center",
824
- children: /* @__PURE__ */ g(ut, { className: "size-5 text-action-primary-bg" })
825
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
824
+ children: /* @__PURE__ */ v(ct, { className: "size-5 text-action-primary-bg" })
825
+ }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
826
826
  className: "text-sm text-text-secondary",
827
- children: S("analytics.platform", "Platform")
828
- }), /* @__PURE__ */ _("p", {
827
+ children: C("analytics.platform", "Platform")
828
+ }), /* @__PURE__ */ y("p", {
829
829
  className: "font-semibold text-text-primary",
830
830
  children: [
831
831
  j.platform,
@@ -835,51 +835,51 @@ function b() {
835
835
  })] })]
836
836
  })
837
837
  }),
838
- /* @__PURE__ */ g(i, {
838
+ /* @__PURE__ */ v(i, {
839
839
  className: "p-4",
840
- children: /* @__PURE__ */ _("div", {
840
+ children: /* @__PURE__ */ y("div", {
841
841
  className: "flex items-center gap-3",
842
- children: [/* @__PURE__ */ g("div", {
842
+ children: [/* @__PURE__ */ v("div", {
843
843
  className: "size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center",
844
- children: /* @__PURE__ */ g(_t, { className: "size-5 text-action-primary-bg" })
845
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
844
+ children: /* @__PURE__ */ v(ht, { className: "size-5 text-action-primary-bg" })
845
+ }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
846
846
  className: "text-sm text-text-secondary",
847
- children: S("agentDetails.version", "Version")
848
- }), /* @__PURE__ */ _("p", {
847
+ children: C("agentDetails.version", "Version")
848
+ }), /* @__PURE__ */ y("p", {
849
849
  className: "font-semibold text-text-primary",
850
850
  children: ["v", j.version]
851
851
  })] })]
852
852
  })
853
853
  }),
854
- /* @__PURE__ */ g(i, {
854
+ /* @__PURE__ */ v(i, {
855
855
  className: "p-4",
856
- children: /* @__PURE__ */ _("div", {
856
+ children: /* @__PURE__ */ y("div", {
857
857
  className: "flex items-center gap-3",
858
- children: [/* @__PURE__ */ g("div", {
858
+ children: [/* @__PURE__ */ v("div", {
859
859
  className: "size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center",
860
- children: /* @__PURE__ */ g(p, { className: "size-5 text-action-primary-bg" })
861
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
860
+ children: /* @__PURE__ */ v(h, { className: "size-5 text-action-primary-bg" })
861
+ }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
862
862
  className: "text-sm text-text-secondary",
863
- children: S("nav.sessions", "Sessions")
864
- }), /* @__PURE__ */ _("p", {
863
+ children: C("nav.sessions", "Sessions")
864
+ }), /* @__PURE__ */ y("p", {
865
865
  className: "font-semibold text-text-primary",
866
866
  children: [
867
867
  Fr,
868
868
  " ",
869
- S("health.active", "active")
869
+ C("health.active", "active")
870
870
  ]
871
871
  })] })]
872
872
  })
873
873
  })
874
874
  ]
875
875
  }),
876
- /* @__PURE__ */ _("div", {
876
+ /* @__PURE__ */ y("div", {
877
877
  className: "flex items-end border-b border-border-default",
878
- children: [/* @__PURE__ */ g(Bt, {
878
+ children: [/* @__PURE__ */ v(Rt, {
879
879
  items: [...Pr.map(({ id: e, label: t, icon: n, badge: r }) => ({
880
880
  id: e,
881
881
  label: t,
882
- icon: /* @__PURE__ */ g(n, {
882
+ icon: /* @__PURE__ */ v(n, {
883
883
  className: "size-4",
884
884
  "aria-hidden": "true"
885
885
  }),
@@ -892,83 +892,83 @@ function b() {
892
892
  onTabChange: z,
893
893
  variant: "underline",
894
894
  className: "min-w-0 flex-1 border-b-0"
895
- }), I && j && /* @__PURE__ */ _("button", {
895
+ }), I && j && /* @__PURE__ */ y("button", {
896
896
  type: "button",
897
897
  onClick: () => On(!0),
898
898
  className: "-mb-px flex shrink-0 items-center gap-1 p-2 text-xs sm:text-sm border-b-2 border-transparent text-text-secondary hover:text-text-primary hover:border-border-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus rounded-t",
899
899
  title: "Install a UI plugin tab",
900
900
  "aria-label": "Add tab",
901
- children: [/* @__PURE__ */ g("span", {
901
+ children: [/* @__PURE__ */ v("span", {
902
902
  "aria-hidden": !0,
903
903
  children: "+"
904
- }), /* @__PURE__ */ g("span", {
904
+ }), /* @__PURE__ */ v("span", {
905
905
  className: "hidden sm:inline",
906
906
  children: "Add tab"
907
907
  })]
908
908
  })]
909
909
  }),
910
- /* @__PURE__ */ _(Ee, {
910
+ /* @__PURE__ */ y(Ee, {
911
911
  tabKey: R,
912
912
  children: [
913
- R === "overview" && /* @__PURE__ */ _("div", {
913
+ R === "overview" && /* @__PURE__ */ y("div", {
914
914
  className: "space-y-6",
915
915
  children: [
916
- /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
916
+ /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
917
917
  className: "p-4 border-b border-border-default",
918
- children: /* @__PURE__ */ _("h3", {
918
+ children: /* @__PURE__ */ y("h3", {
919
919
  className: "font-semibold text-text-primary flex items-center gap-2",
920
- children: [/* @__PURE__ */ g(ot, { className: "size-5" }), S("agentDetails.capabilities", "Capabilities")]
920
+ children: [/* @__PURE__ */ v(it, { className: "size-5" }), C("agentDetails.capabilities", "Capabilities")]
921
921
  })
922
- }), /* @__PURE__ */ g("div", {
922
+ }), /* @__PURE__ */ v("div", {
923
923
  className: "p-4",
924
- children: /* @__PURE__ */ g("div", {
924
+ children: /* @__PURE__ */ v("div", {
925
925
  className: "flex flex-wrap gap-2",
926
926
  children: j.capabilities && typeof j.capabilities == "object" && (Array.isArray(j.capabilities) ? j.capabilities.length > 0 : Object.keys(j.capabilities).length > 0) ? (Array.isArray(j.capabilities) ? j.capabilities : (() => {
927
927
  let e = j.capabilities, t = Object.keys(e);
928
928
  return t.length > 0 && t.every((e) => /^\d+$/.test(e)) ? Object.values(e) : t;
929
- })()).map((e) => /* @__PURE__ */ g("span", {
929
+ })()).map((e) => /* @__PURE__ */ v("span", {
930
930
  className: "px-2 py-0.5 bg-bg-sunken text-text-secondary text-xs rounded-pill",
931
931
  children: e
932
- }, e)) : /* @__PURE__ */ _("div", {
932
+ }, e)) : /* @__PURE__ */ y("div", {
933
933
  className: "space-y-2 text-sm text-text-secondary",
934
934
  children: [
935
- /* @__PURE__ */ g("p", { children: S("agentDetails.noCapabilitiesConfigured", "No capabilities configured") }),
936
- /* @__PURE__ */ _("p", {
935
+ /* @__PURE__ */ v("p", { children: C("agentDetails.noCapabilitiesConfigured", "No capabilities configured") }),
936
+ /* @__PURE__ */ y("p", {
937
937
  className: "text-xs",
938
938
  children: [
939
939
  "Capabilities are feature tags the agent advertises to vibes (e.g.",
940
940
  " ",
941
- /* @__PURE__ */ g("code", {
941
+ /* @__PURE__ */ v("code", {
942
942
  className: "text-text-primary",
943
943
  children: "docker"
944
944
  }),
945
945
  ",",
946
946
  " ",
947
- /* @__PURE__ */ g("code", {
947
+ /* @__PURE__ */ v("code", {
948
948
  className: "text-text-primary",
949
949
  children: "gpu"
950
950
  }),
951
951
  ",",
952
952
  " ",
953
- /* @__PURE__ */ g("code", {
953
+ /* @__PURE__ */ v("code", {
954
954
  className: "text-text-primary",
955
955
  children: "node20"
956
956
  }),
957
957
  ",",
958
958
  " ",
959
- /* @__PURE__ */ g("code", {
959
+ /* @__PURE__ */ v("code", {
960
960
  className: "text-text-primary",
961
961
  children: "git"
962
962
  }),
963
963
  "). Vibes use them to pick an agent that can run their workloads."
964
964
  ]
965
965
  }),
966
- /* @__PURE__ */ _("p", {
966
+ /* @__PURE__ */ y("p", {
967
967
  className: "text-xs",
968
968
  children: [
969
969
  "Add from the agent host CLI:",
970
970
  " ",
971
- /* @__PURE__ */ g("code", {
971
+ /* @__PURE__ */ v("code", {
972
972
  className: "text-text-primary",
973
973
  children: "vibe agent caps add docker gpu"
974
974
  }),
@@ -979,33 +979,33 @@ function b() {
979
979
  })
980
980
  })
981
981
  })] }),
982
- /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
982
+ /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
983
983
  className: "p-4 border-b border-border-default",
984
- children: /* @__PURE__ */ _("h3", {
984
+ children: /* @__PURE__ */ y("h3", {
985
985
  className: "font-semibold text-text-primary flex items-center gap-2",
986
- children: [/* @__PURE__ */ g(Ot, { className: "size-5" }), "Tags"]
986
+ children: [/* @__PURE__ */ v(Et, { className: "size-5" }), "Tags"]
987
987
  })
988
- }), /* @__PURE__ */ g("div", {
988
+ }), /* @__PURE__ */ v("div", {
989
989
  className: "p-4",
990
- children: /* @__PURE__ */ g(xe, {
990
+ children: /* @__PURE__ */ v(xe, {
991
991
  entityType: "VIBECONTROLS_AGENT",
992
992
  entityId: j.id
993
993
  })
994
994
  })] }),
995
- j.tunnelUrl && /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
995
+ j.tunnelUrl && /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
996
996
  className: "p-4 border-b border-border-default",
997
- children: /* @__PURE__ */ _("h3", {
997
+ children: /* @__PURE__ */ y("h3", {
998
998
  className: "font-semibold text-text-primary flex items-center gap-2",
999
- children: [/* @__PURE__ */ g(m, { className: "size-5" }), S("health.tunnel", "Tunnel")]
999
+ children: [/* @__PURE__ */ v(g, { className: "size-5" }), C("health.tunnel", "Tunnel")]
1000
1000
  })
1001
- }), /* @__PURE__ */ g("div", {
1001
+ }), /* @__PURE__ */ v("div", {
1002
1002
  className: "p-4",
1003
- children: /* @__PURE__ */ _("div", {
1003
+ children: /* @__PURE__ */ y("div", {
1004
1004
  className: "flex-1 min-w-0",
1005
- children: [/* @__PURE__ */ g("p", {
1005
+ children: [/* @__PURE__ */ v("p", {
1006
1006
  className: "text-sm text-text-secondary mb-1",
1007
- children: S("agentDetails.tunnelUrl", "Tunnel URL")
1008
- }), /* @__PURE__ */ g("a", {
1007
+ children: C("agentDetails.tunnelUrl", "Tunnel URL")
1008
+ }), /* @__PURE__ */ v("a", {
1009
1009
  href: j.tunnelUrl,
1010
1010
  target: "_blank",
1011
1011
  rel: "noopener noreferrer",
@@ -1014,76 +1014,76 @@ function b() {
1014
1014
  })]
1015
1015
  })
1016
1016
  })] }),
1017
- /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
1017
+ /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
1018
1018
  className: "p-4 border-b border-border-default",
1019
- children: /* @__PURE__ */ _("h3", {
1019
+ children: /* @__PURE__ */ y("h3", {
1020
1020
  className: "font-semibold text-text-primary flex items-center gap-2",
1021
- children: [/* @__PURE__ */ g(Tt, { className: "size-5" }), S("agentDetails.configuration", "Configuration")]
1021
+ children: [/* @__PURE__ */ v(Ct, { className: "size-5" }), C("agentDetails.configuration", "Configuration")]
1022
1022
  })
1023
- }), /* @__PURE__ */ _("div", {
1023
+ }), /* @__PURE__ */ y("div", {
1024
1024
  className: "p-4 space-y-4",
1025
- children: [/* @__PURE__ */ _("div", {
1025
+ children: [/* @__PURE__ */ y("div", {
1026
1026
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
1027
1027
  children: [
1028
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1028
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1029
1029
  className: "text-sm text-text-secondary",
1030
- children: S("analytics.platform", "Platform")
1031
- }), /* @__PURE__ */ g("p", {
1030
+ children: C("analytics.platform", "Platform")
1031
+ }), /* @__PURE__ */ v("p", {
1032
1032
  className: "font-medium text-text-primary",
1033
1033
  children: j.platform
1034
1034
  })] }),
1035
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1035
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1036
1036
  className: "text-sm text-text-secondary",
1037
- children: S("analytics.architecture", "Architecture")
1038
- }), /* @__PURE__ */ g("p", {
1037
+ children: C("analytics.architecture", "Architecture")
1038
+ }), /* @__PURE__ */ v("p", {
1039
1039
  className: "font-medium text-text-primary",
1040
1040
  children: j.architecture
1041
1041
  })] }),
1042
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1042
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1043
1043
  className: "text-sm text-text-secondary",
1044
- children: S("agentDetails.version", "Version")
1045
- }), /* @__PURE__ */ g("p", {
1044
+ children: C("agentDetails.version", "Version")
1045
+ }), /* @__PURE__ */ v("p", {
1046
1046
  className: "font-medium text-text-primary",
1047
1047
  children: j.version
1048
1048
  })] })
1049
1049
  ]
1050
- }), j.aiContext && /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1050
+ }), j.aiContext && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1051
1051
  className: "text-sm text-text-secondary mb-1",
1052
1052
  children: "AI Context"
1053
- }), /* @__PURE__ */ g("pre", {
1053
+ }), /* @__PURE__ */ v("pre", {
1054
1054
  className: "text-sm text-text-primary bg-bg-sunken border border-border-default rounded-md p-3 whitespace-pre-wrap font-sans",
1055
1055
  children: j.aiContext
1056
1056
  })] })]
1057
1057
  })] }),
1058
- /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
1058
+ /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
1059
1059
  className: "p-4 border-b border-border-default",
1060
- children: /* @__PURE__ */ _("h3", {
1060
+ children: /* @__PURE__ */ y("h3", {
1061
1061
  className: "font-semibold text-text-primary flex items-center gap-2",
1062
- children: [/* @__PURE__ */ g(st, { className: "size-5" }), S("vibeDetails.timeline", "Timeline")]
1062
+ children: [/* @__PURE__ */ v(at, { className: "size-5" }), C("vibeDetails.timeline", "Timeline")]
1063
1063
  })
1064
- }), /* @__PURE__ */ g("div", {
1064
+ }), /* @__PURE__ */ v("div", {
1065
1065
  className: "p-4",
1066
- children: /* @__PURE__ */ _("div", {
1066
+ children: /* @__PURE__ */ y("div", {
1067
1067
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 text-sm",
1068
1068
  children: [
1069
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1069
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1070
1070
  className: "text-text-secondary",
1071
- children: S("health.lastHeartbeat", "Last Heartbeat")
1072
- }), /* @__PURE__ */ g("p", {
1071
+ children: C("health.lastHeartbeat", "Last Heartbeat")
1072
+ }), /* @__PURE__ */ v("p", {
1073
1073
  className: "font-medium text-text-primary",
1074
1074
  children: Nr(j.lastHeartbeat)
1075
1075
  })] }),
1076
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1076
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1077
1077
  className: "text-text-secondary",
1078
- children: S("vibeDetails.created", "Created")
1079
- }), /* @__PURE__ */ g("p", {
1078
+ children: C("vibeDetails.created", "Created")
1079
+ }), /* @__PURE__ */ v("p", {
1080
1080
  className: "font-medium text-text-primary",
1081
1081
  children: Nr(j.createdAt)
1082
1082
  })] }),
1083
- /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
1083
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
1084
1084
  className: "text-text-secondary",
1085
- children: S("vibeDetails.updated", "Updated")
1086
- }), /* @__PURE__ */ g("p", {
1085
+ children: C("vibeDetails.updated", "Updated")
1086
+ }), /* @__PURE__ */ v("p", {
1087
1087
  className: "font-medium text-text-primary",
1088
1088
  children: Nr(j.updatedAt)
1089
1089
  })] })
@@ -1092,83 +1092,83 @@ function b() {
1092
1092
  })] })
1093
1093
  ]
1094
1094
  }),
1095
- R === "profiles" && /* @__PURE__ */ g(Ye, { agentId: j.id }),
1096
- R === "security" && /* @__PURE__ */ _("div", {
1095
+ R === "profiles" && /* @__PURE__ */ v(Ye, { agentId: j.id }),
1096
+ R === "security" && /* @__PURE__ */ y("div", {
1097
1097
  className: "space-y-6",
1098
1098
  children: [
1099
- /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
1099
+ /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
1100
1100
  className: "p-4 border-b border-border-default",
1101
- children: /* @__PURE__ */ _("h3", {
1101
+ children: /* @__PURE__ */ y("h3", {
1102
1102
  className: "font-semibold text-text-primary flex items-center gap-2",
1103
- children: [/* @__PURE__ */ g(yt, { className: "size-5" }), S("agentDetails.agentApiKey", "Agent API Key")]
1103
+ children: [/* @__PURE__ */ v(_t, { className: "size-5" }), C("agentDetails.agentApiKey", "Agent API Key")]
1104
1104
  })
1105
- }), /* @__PURE__ */ _("div", {
1105
+ }), /* @__PURE__ */ y("div", {
1106
1106
  className: "p-4",
1107
- children: [j.tunnelUrl ? /* @__PURE__ */ _("div", {
1107
+ children: [j.tunnelUrl ? /* @__PURE__ */ y("div", {
1108
1108
  className: "flex items-center gap-3",
1109
1109
  children: [
1110
- /* @__PURE__ */ _("div", {
1110
+ /* @__PURE__ */ y("div", {
1111
1111
  className: "flex-1 min-w-0",
1112
- children: [/* @__PURE__ */ g("code", {
1112
+ children: [/* @__PURE__ */ v("code", {
1113
1113
  className: "text-sm font-mono text-text-primary bg-bg-sunken px-3 py-2 rounded-md block truncate",
1114
- children: O && k ? k : pn ? S("agentDetails.revealLoading", "Revealing…") : "•".repeat(32)
1115
- }), hn && /* @__PURE__ */ g("p", {
1114
+ children: O && k ? k : pn ? C("agentDetails.revealLoading", "Revealing…") : "•".repeat(32)
1115
+ }), hn && /* @__PURE__ */ v("p", {
1116
1116
  className: "text-xs text-status-error-text mt-1",
1117
1117
  children: hn
1118
1118
  })]
1119
1119
  }),
1120
- /* @__PURE__ */ g("button", {
1120
+ /* @__PURE__ */ v("button", {
1121
1121
  type: "button",
1122
1122
  onClick: () => void Dr(),
1123
1123
  disabled: pn,
1124
1124
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0 disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
1125
- "aria-label": O ? S("agentDetails.hideApiKey", "Hide API key") : S("agentDetails.showApiKey", "Show API key"),
1126
- title: O ? S("agentDetails.hideApiKey", "Hide API key") : S("agentDetails.showApiKey", "Show API key"),
1127
- children: g(O ? ht : mt, {
1125
+ "aria-label": O ? C("agentDetails.hideApiKey", "Hide API key") : C("agentDetails.showApiKey", "Show API key"),
1126
+ title: O ? C("agentDetails.hideApiKey", "Hide API key") : C("agentDetails.showApiKey", "Show API key"),
1127
+ children: v(O ? pt : ft, {
1128
1128
  className: "size-4 text-text-secondary",
1129
1129
  "aria-hidden": "true"
1130
1130
  })
1131
1131
  }),
1132
- /* @__PURE__ */ g("button", {
1132
+ /* @__PURE__ */ v("button", {
1133
1133
  type: "button",
1134
1134
  onClick: Er,
1135
1135
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
1136
- "aria-label": S("agentDetails.copyApiKey", "Copy API key"),
1137
- title: S("agentDetails.copyApiKey", "Copy API key"),
1138
- children: un ? /* @__PURE__ */ g(at, {
1136
+ "aria-label": C("agentDetails.copyApiKey", "Copy API key"),
1137
+ title: C("agentDetails.copyApiKey", "Copy API key"),
1138
+ children: un ? /* @__PURE__ */ v(rt, {
1139
1139
  className: "size-4 text-status-success-text",
1140
1140
  "aria-hidden": "true"
1141
- }) : /* @__PURE__ */ g(lt, {
1141
+ }) : /* @__PURE__ */ v(st, {
1142
1142
  className: "size-4 text-text-secondary",
1143
1143
  "aria-hidden": "true"
1144
1144
  })
1145
1145
  })
1146
1146
  ]
1147
- }) : /* @__PURE__ */ g("p", {
1147
+ }) : /* @__PURE__ */ v("p", {
1148
1148
  className: "text-sm text-text-secondary",
1149
1149
  children: "Agent tunnel not configured. Bring the agent online first."
1150
- }), /* @__PURE__ */ g("p", {
1150
+ }), /* @__PURE__ */ v("p", {
1151
1151
  className: "mt-2 text-xs text-text-muted",
1152
1152
  children: "This key authenticates requests sent to the agent. The key is revealed only on explicit operator action and every read is audited."
1153
1153
  })]
1154
1154
  })] }),
1155
- /* @__PURE__ */ g(Le, {
1155
+ /* @__PURE__ */ v(Ie, {
1156
1156
  agentId: j.id,
1157
1157
  currentTunnelUrl: j.tunnelUrl,
1158
1158
  onUpdated: () => A()
1159
1159
  }),
1160
- /* @__PURE__ */ g(Re, {
1160
+ /* @__PURE__ */ v(Le, {
1161
1161
  agentId: j.id,
1162
1162
  storageAdapter: j.storageAdapter,
1163
1163
  dbPath: j.dbPath,
1164
1164
  hasStorageOptions: j.hasStorageOptions,
1165
1165
  onUpdated: () => A()
1166
1166
  }),
1167
- /* @__PURE__ */ g(He, {
1167
+ /* @__PURE__ */ v(He, {
1168
1168
  agent: j,
1169
1169
  onUpdate: () => A()
1170
1170
  }),
1171
- /* @__PURE__ */ g(Ve, { agent: {
1171
+ /* @__PURE__ */ v(Ve, { agent: {
1172
1172
  id: j.id,
1173
1173
  profile: F ?? "default"
1174
1174
  } })
@@ -1180,43 +1180,43 @@ function b() {
1180
1180
  id: "installed",
1181
1181
  label: "Installed",
1182
1182
  count: t.length,
1183
- icon: d
1183
+ icon: p
1184
1184
  },
1185
1185
  {
1186
1186
  id: "available",
1187
1187
  label: "Available",
1188
1188
  count: n.length,
1189
- icon: ft
1189
+ icon: ut
1190
1190
  },
1191
1191
  {
1192
1192
  id: "store",
1193
1193
  label: "Store",
1194
1194
  count: J.length,
1195
- icon: ft
1195
+ icon: ut
1196
1196
  },
1197
1197
  {
1198
1198
  id: "ui-plugins",
1199
1199
  label: "UI Plugins",
1200
1200
  count: ee.length,
1201
- icon: bt
1201
+ icon: vt
1202
1202
  }
1203
1203
  ];
1204
- return /* @__PURE__ */ g("div", {
1204
+ return /* @__PURE__ */ v("div", {
1205
1205
  className: "space-y-6",
1206
- children: /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ _("div", {
1206
+ children: /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ y("div", {
1207
1207
  className: "p-4 border-b border-border-default space-y-3",
1208
1208
  children: [
1209
- /* @__PURE__ */ _("div", {
1209
+ /* @__PURE__ */ y("div", {
1210
1210
  className: "flex items-center justify-between gap-2",
1211
- children: [/* @__PURE__ */ _("h3", {
1211
+ children: [/* @__PURE__ */ y("h3", {
1212
1212
  className: "font-semibold text-text-primary flex items-center gap-2 min-w-0",
1213
1213
  children: [
1214
- /* @__PURE__ */ g(d, {
1214
+ /* @__PURE__ */ v(p, {
1215
1215
  className: "size-5",
1216
1216
  "aria-hidden": "true"
1217
1217
  }),
1218
1218
  "Plugins",
1219
- B.length > 0 && /* @__PURE__ */ _("span", {
1219
+ B.length > 0 && /* @__PURE__ */ y("span", {
1220
1220
  className: "text-sm font-normal text-text-secondary",
1221
1221
  children: [
1222
1222
  "(",
@@ -1228,29 +1228,29 @@ function b() {
1228
1228
  ]
1229
1229
  })
1230
1230
  ]
1231
- }), /* @__PURE__ */ g("button", {
1231
+ }), /* @__PURE__ */ v("button", {
1232
1232
  type: "button",
1233
1233
  onClick: X,
1234
1234
  disabled: Fn,
1235
1235
  className: "p-1.5 text-text-secondary hover:bg-bg-sunken rounded transition-colors disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
1236
- "aria-label": S("agentDetails.refreshPlugins", "Refresh plugins"),
1237
- title: S("agentDetails.refreshPlugins", "Refresh plugins"),
1238
- children: /* @__PURE__ */ g(Ct, {
1236
+ "aria-label": C("agentDetails.refreshPlugins", "Refresh plugins"),
1237
+ title: C("agentDetails.refreshPlugins", "Refresh plugins"),
1238
+ children: /* @__PURE__ */ v(xt, {
1239
1239
  className: `size-4 ${Fn ? "animate-spin" : ""}`,
1240
1240
  "aria-hidden": "true"
1241
1241
  })
1242
1242
  })]
1243
1243
  }),
1244
- /* @__PURE__ */ g(Ce, {
1244
+ /* @__PURE__ */ v(Ce, {
1245
1245
  value: q,
1246
1246
  onChange: er,
1247
- placeholder: S("agentDetails.searchPluginsPlaceholder", "Search plugins by name, package, description, or tag...")
1247
+ placeholder: C("agentDetails.searchPluginsPlaceholder", "Search plugins by name, package, description, or tag...")
1248
1248
  }),
1249
- /* @__PURE__ */ g(Bt, {
1249
+ /* @__PURE__ */ v(Rt, {
1250
1250
  items: te.map(({ id: e, label: t, count: n, icon: r }) => ({
1251
1251
  id: e,
1252
1252
  label: t,
1253
- icon: /* @__PURE__ */ g(r, {
1253
+ icon: /* @__PURE__ */ v(r, {
1254
1254
  className: "size-4",
1255
1255
  "aria-hidden": "true"
1256
1256
  }),
@@ -1263,102 +1263,102 @@ function b() {
1263
1263
  className: "max-w-full overflow-x-auto"
1264
1264
  })
1265
1265
  ]
1266
- }), /* @__PURE__ */ _("div", {
1266
+ }), /* @__PURE__ */ y("div", {
1267
1267
  className: "p-4 space-y-4",
1268
1268
  children: [
1269
- Ln && /* @__PURE__ */ _("div", {
1269
+ Ln && /* @__PURE__ */ y("div", {
1270
1270
  role: "alert",
1271
1271
  className: "flex items-center gap-2 p-3 bg-status-error-bg-subtle border border-status-error-border text-status-error-text rounded-md text-sm",
1272
1272
  children: [
1273
- /* @__PURE__ */ g(Mt, {
1273
+ /* @__PURE__ */ v(At, {
1274
1274
  className: "size-4 flex-shrink-0",
1275
1275
  "aria-hidden": "true"
1276
1276
  }),
1277
- /* @__PURE__ */ g("span", {
1277
+ /* @__PURE__ */ v("span", {
1278
1278
  className: "flex-1 min-w-0 break-words",
1279
1279
  children: Ln
1280
1280
  }),
1281
- /* @__PURE__ */ g("button", {
1281
+ /* @__PURE__ */ v("button", {
1282
1282
  type: "button",
1283
1283
  onClick: () => U(null),
1284
- "aria-label": S("agentDetails.dismissError", "Dismiss error"),
1284
+ "aria-label": C("agentDetails.dismissError", "Dismiss error"),
1285
1285
  className: "flex-shrink-0 p-0.5 hover:bg-status-error-border/40 rounded focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
1286
- children: /* @__PURE__ */ g(Mt, {
1286
+ children: /* @__PURE__ */ v(At, {
1287
1287
  className: "size-3.5",
1288
1288
  "aria-hidden": "true"
1289
1289
  })
1290
1290
  })
1291
1291
  ]
1292
1292
  }),
1293
- !j?.isActive && /* @__PURE__ */ _("p", {
1293
+ !j?.isActive && /* @__PURE__ */ y("p", {
1294
1294
  role: "status",
1295
1295
  className: "text-sm text-text-muted flex items-center gap-1.5",
1296
- children: [/* @__PURE__ */ g(vt, {
1296
+ children: [/* @__PURE__ */ v(gt, {
1297
1297
  className: "size-4 flex-shrink-0",
1298
1298
  "aria-hidden": "true"
1299
1299
  }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
1300
1300
  }),
1301
- K === "installed" && /* @__PURE__ */ g(h, { children: t.length > 0 ? /* @__PURE__ */ g("div", {
1301
+ K === "installed" && /* @__PURE__ */ v(_, { children: t.length > 0 ? /* @__PURE__ */ v("div", {
1302
1302
  className: "space-y-2",
1303
- children: t.map((e) => /* @__PURE__ */ _("div", {
1303
+ children: t.map((e) => /* @__PURE__ */ y("div", {
1304
1304
  className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
1305
- children: [/* @__PURE__ */ _("div", {
1305
+ children: [/* @__PURE__ */ y("div", {
1306
1306
  className: "min-w-0",
1307
1307
  children: [
1308
- /* @__PURE__ */ _("p", {
1308
+ /* @__PURE__ */ y("p", {
1309
1309
  className: "text-sm font-medium text-text-primary flex items-center gap-1.5 flex-wrap",
1310
1310
  children: [
1311
1311
  e.pluginName,
1312
- /* @__PURE__ */ g("span", {
1312
+ /* @__PURE__ */ v("span", {
1313
1313
  className: "text-xs text-text-muted font-normal",
1314
1314
  children: e.version === "latest" ? e.version : `v${e.version}`
1315
1315
  }),
1316
- e.isCore && /* @__PURE__ */ g("span", {
1316
+ e.isCore && /* @__PURE__ */ v("span", {
1317
1317
  className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded",
1318
1318
  children: "core"
1319
1319
  }),
1320
- e.loaded && /* @__PURE__ */ g("span", {
1320
+ e.loaded && /* @__PURE__ */ v("span", {
1321
1321
  className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-status-success-bg-subtle text-status-success-text rounded",
1322
1322
  children: "loaded"
1323
1323
  }),
1324
- e.hasProviders && /* @__PURE__ */ g("span", {
1324
+ e.hasProviders && /* @__PURE__ */ v("span", {
1325
1325
  className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded",
1326
1326
  children: "provider"
1327
1327
  }),
1328
- e.hasUI && /* @__PURE__ */ g("span", {
1328
+ e.hasUI && /* @__PURE__ */ v("span", {
1329
1329
  className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded",
1330
1330
  children: "ui"
1331
1331
  })
1332
1332
  ]
1333
1333
  }),
1334
- e.description && /* @__PURE__ */ g("p", {
1334
+ e.description && /* @__PURE__ */ v("p", {
1335
1335
  className: "text-xs text-text-secondary mt-0.5",
1336
1336
  children: e.description
1337
1337
  }),
1338
- /* @__PURE__ */ _("div", {
1338
+ /* @__PURE__ */ y("div", {
1339
1339
  className: "flex items-center gap-2 mt-0.5 flex-wrap",
1340
1340
  children: [
1341
- !e.isCore && /* @__PURE__ */ g("span", {
1341
+ !e.isCore && /* @__PURE__ */ v("span", {
1342
1342
  className: "text-xs text-text-muted font-mono",
1343
1343
  children: e.packageName
1344
1344
  }),
1345
- e.cliCommand && /* @__PURE__ */ _("span", {
1345
+ e.cliCommand && /* @__PURE__ */ y("span", {
1346
1346
  className: "text-xs text-text-muted",
1347
1347
  children: [
1348
1348
  "cli:",
1349
1349
  " ",
1350
- /* @__PURE__ */ _("code", {
1350
+ /* @__PURE__ */ y("code", {
1351
1351
  className: "text-xs font-mono",
1352
1352
  children: ["vibe ", e.cliCommand]
1353
1353
  })
1354
1354
  ]
1355
1355
  }),
1356
- e.apiPrefix && /* @__PURE__ */ _("span", {
1356
+ e.apiPrefix && /* @__PURE__ */ y("span", {
1357
1357
  className: "text-xs text-text-muted",
1358
1358
  children: [
1359
1359
  "api:",
1360
1360
  " ",
1361
- /* @__PURE__ */ g("code", {
1361
+ /* @__PURE__ */ v("code", {
1362
1362
  className: "text-xs font-mono",
1363
1363
  children: e.apiPrefix
1364
1364
  })
@@ -1366,170 +1366,174 @@ function b() {
1366
1366
  })
1367
1367
  ]
1368
1368
  }),
1369
- e.tags && e.tags.length > 0 && /* @__PURE__ */ g("div", {
1369
+ e.tags && e.tags.length > 0 && /* @__PURE__ */ v("div", {
1370
1370
  className: "flex gap-1 mt-1 flex-wrap",
1371
- children: e.tags.map((e) => /* @__PURE__ */ g("span", {
1371
+ children: e.tags.map((e) => /* @__PURE__ */ v("span", {
1372
1372
  className: "inline-flex px-1.5 py-0.5 text-xs bg-bg-sunken text-text-muted rounded",
1373
1373
  children: e
1374
1374
  }, e))
1375
1375
  })
1376
1376
  ]
1377
- }), /* @__PURE__ */ _("div", {
1377
+ }), /* @__PURE__ */ y("div", {
1378
1378
  className: "flex flex-wrap items-center gap-2 flex-shrink-0 sm:ml-3",
1379
1379
  children: [
1380
- e.hasUI && /* @__PURE__ */ _(v, {
1380
+ e.hasUI && /* @__PURE__ */ y(b, {
1381
1381
  type: "button",
1382
1382
  variant: "outline",
1383
1383
  size: "sm",
1384
1384
  onClick: () => $n("ui-plugins"),
1385
1385
  title: `Open ${e.pluginName} UI`,
1386
- children: [/* @__PURE__ */ g(bt, {
1386
+ children: [/* @__PURE__ */ v(vt, {
1387
1387
  className: "size-3",
1388
1388
  "aria-hidden": "true"
1389
1389
  }), "Open UI"]
1390
1390
  }),
1391
- !e.isCore && /* @__PURE__ */ _(v, {
1391
+ !e.isCore && /* @__PURE__ */ y(b, {
1392
1392
  type: "button",
1393
1393
  variant: "outline",
1394
1394
  size: "sm",
1395
1395
  onClick: () => mr(e.packageName),
1396
1396
  disabled: V === e.packageName,
1397
- title: S("agentDetails.updatePlugin", "Update plugin (latest or a specific version)"),
1398
- children: [V === e.packageName ? /* @__PURE__ */ g(u, {
1397
+ title: C("agentDetails.updatePlugin", "Update plugin (latest or a specific version)"),
1398
+ children: [V === e.packageName ? /* @__PURE__ */ v(f, {
1399
1399
  className: "size-3 animate-spin",
1400
1400
  "aria-hidden": "true"
1401
- }) : /* @__PURE__ */ g(rt, {
1401
+ }) : /* @__PURE__ */ v(tt, {
1402
1402
  className: "size-3",
1403
1403
  "aria-hidden": "true"
1404
- }), S("agentDetails.update", "Update")]
1404
+ }), C("agentDetails.update", "Update")]
1405
1405
  }),
1406
- !e.isCore && /* @__PURE__ */ _(v, {
1407
- type: "button",
1408
- variant: "outline",
1409
- size: "sm",
1410
- onClick: () => fr(e.packageName),
1411
- disabled: V === e.packageName,
1412
- className: "text-status-error-text hover:bg-status-error-bg-subtle hover:text-status-error-text",
1413
- children: [V === e.packageName ? /* @__PURE__ */ g(u, {
1414
- className: "size-3 animate-spin",
1415
- "aria-hidden": "true"
1416
- }) : /* @__PURE__ */ g(kt, {
1417
- className: "size-3",
1418
- "aria-hidden": "true"
1419
- }), S("sessions.remove", "Remove")]
1406
+ !e.isCore && /* @__PURE__ */ v(Lt, {
1407
+ permission: a.AGENT_UPDATE,
1408
+ deniedBehavior: "hide",
1409
+ children: /* @__PURE__ */ y(b, {
1410
+ type: "button",
1411
+ variant: "outline",
1412
+ size: "sm",
1413
+ onClick: () => fr(e.packageName),
1414
+ disabled: V === e.packageName,
1415
+ className: "text-status-error-text hover:bg-status-error-bg-subtle hover:text-status-error-text",
1416
+ children: [V === e.packageName ? /* @__PURE__ */ v(f, {
1417
+ className: "size-3 animate-spin",
1418
+ "aria-hidden": "true"
1419
+ }) : /* @__PURE__ */ v(Dt, {
1420
+ className: "size-3",
1421
+ "aria-hidden": "true"
1422
+ }), C("sessions.remove", "Remove")]
1423
+ })
1420
1424
  })
1421
1425
  ]
1422
1426
  })]
1423
1427
  }, e.packageName))
1424
- }) : /* @__PURE__ */ g("p", {
1428
+ }) : /* @__PURE__ */ v("p", {
1425
1429
  className: "text-sm text-text-muted",
1426
1430
  children: q ? "No installed plugins match your search." : "No plugin data available. Check agent connectivity or refresh."
1427
1431
  }) }),
1428
- K === "available" && /* @__PURE__ */ g(h, { children: n.length > 0 ? /* @__PURE__ */ g("div", {
1432
+ K === "available" && /* @__PURE__ */ v(_, { children: n.length > 0 ? /* @__PURE__ */ v("div", {
1429
1433
  className: "space-y-2",
1430
- children: n.map((e) => /* @__PURE__ */ _("div", {
1434
+ children: n.map((e) => /* @__PURE__ */ y("div", {
1431
1435
  className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
1432
- children: [/* @__PURE__ */ _("div", {
1436
+ children: [/* @__PURE__ */ y("div", {
1433
1437
  className: "min-w-0",
1434
1438
  children: [
1435
- /* @__PURE__ */ g("p", {
1439
+ /* @__PURE__ */ v("p", {
1436
1440
  className: "text-sm font-medium text-text-primary",
1437
1441
  children: e.name
1438
1442
  }),
1439
- /* @__PURE__ */ g("p", {
1443
+ /* @__PURE__ */ v("p", {
1440
1444
  className: "text-xs text-text-secondary mt-0.5",
1441
1445
  children: e.description
1442
1446
  }),
1443
- /* @__PURE__ */ g("p", {
1447
+ /* @__PURE__ */ v("p", {
1444
1448
  className: "text-xs text-text-muted font-mono mt-0.5",
1445
1449
  children: e.packageName
1446
1450
  })
1447
1451
  ]
1448
- }), /* @__PURE__ */ _(v, {
1452
+ }), /* @__PURE__ */ y(b, {
1449
1453
  type: "button",
1450
1454
  size: "sm",
1451
1455
  onClick: () => dr(e.packageName),
1452
1456
  disabled: V === e.packageName,
1453
1457
  className: "flex-shrink-0 sm:ml-3",
1454
- children: [V === e.packageName ? /* @__PURE__ */ g(u, {
1458
+ children: [V === e.packageName ? /* @__PURE__ */ v(f, {
1455
1459
  className: "size-3 animate-spin",
1456
1460
  "aria-hidden": "true"
1457
- }) : /* @__PURE__ */ g(ft, {
1461
+ }) : /* @__PURE__ */ v(ut, {
1458
1462
  className: "size-3",
1459
1463
  "aria-hidden": "true"
1460
1464
  }), "Install"]
1461
1465
  })]
1462
1466
  }, e.packageName))
1463
- }) : /* @__PURE__ */ g("p", {
1467
+ }) : /* @__PURE__ */ v("p", {
1464
1468
  className: "text-sm text-text-muted",
1465
1469
  children: q ? "No available plugins match your search." : Nn.every((e) => e.installed) ? "All available plugins are already installed." : "No available plugins found."
1466
1470
  }) }),
1467
- K === "store" && /* @__PURE__ */ _(h, { children: [ir && /* @__PURE__ */ _("div", {
1471
+ K === "store" && /* @__PURE__ */ y(_, { children: [ir && /* @__PURE__ */ y("div", {
1468
1472
  role: "alert",
1469
1473
  className: "flex items-center gap-2 p-3 bg-status-error-bg-subtle border border-status-error-border text-status-error-text rounded-md text-sm",
1470
- children: [/* @__PURE__ */ g(Mt, {
1474
+ children: [/* @__PURE__ */ v(At, {
1471
1475
  className: "size-4 flex-shrink-0",
1472
1476
  "aria-hidden": "true"
1473
- }), /* @__PURE__ */ g("span", {
1477
+ }), /* @__PURE__ */ v("span", {
1474
1478
  className: "flex-1 min-w-0 break-words",
1475
1479
  children: ir
1476
1480
  })]
1477
- }), nr ? /* @__PURE__ */ g("p", {
1481
+ }), nr ? /* @__PURE__ */ v("p", {
1478
1482
  role: "status",
1479
1483
  className: "text-sm text-text-muted",
1480
1484
  children: "Loading purchased plugins…"
1481
- }) : J.length === 0 ? /* @__PURE__ */ _("div", {
1485
+ }) : J.length === 0 ? /* @__PURE__ */ y("div", {
1482
1486
  className: "py-8 text-center",
1483
- children: [/* @__PURE__ */ g("p", {
1487
+ children: [/* @__PURE__ */ v("p", {
1484
1488
  className: "text-sm text-text-muted",
1485
1489
  children: "No plugins purchased from the Burdenoff store yet."
1486
- }), /* @__PURE__ */ g("a", {
1490
+ }), /* @__PURE__ */ v("a", {
1487
1491
  href: "/store/marketplace",
1488
1492
  className: "mt-2 inline-flex items-center gap-1 text-xs font-semibold text-text-link hover:underline",
1489
1493
  children: "Browse the store →"
1490
1494
  })]
1491
- }) : /* @__PURE__ */ g("div", {
1495
+ }) : /* @__PURE__ */ v("div", {
1492
1496
  className: "space-y-2",
1493
1497
  children: J.map((e) => {
1494
1498
  let t = (e.product?.manifest ?? {}).digital?.install, n = typeof t?.packageName == "string" ? t.packageName : null, r = B.some((e) => e.packageName === n);
1495
- return /* @__PURE__ */ _("div", {
1499
+ return /* @__PURE__ */ y("div", {
1496
1500
  className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
1497
- children: [/* @__PURE__ */ _("div", {
1501
+ children: [/* @__PURE__ */ y("div", {
1498
1502
  className: "flex items-start gap-3 min-w-0 flex-1",
1499
- children: [e.product?.icon ? /* @__PURE__ */ g("img", {
1503
+ children: [e.product?.icon ? /* @__PURE__ */ v("img", {
1500
1504
  src: e.product.icon,
1501
1505
  alt: "",
1502
1506
  className: "size-10 rounded-md object-cover flex-shrink-0"
1503
- }) : /* @__PURE__ */ g("div", {
1507
+ }) : /* @__PURE__ */ v("div", {
1504
1508
  className: "size-10 flex-shrink-0 rounded-md bg-bg-sunken flex items-center justify-center",
1505
- children: /* @__PURE__ */ g(d, {
1509
+ children: /* @__PURE__ */ v(p, {
1506
1510
  className: "size-5 text-text-muted",
1507
1511
  "aria-hidden": "true"
1508
1512
  })
1509
- }), /* @__PURE__ */ _("div", {
1513
+ }), /* @__PURE__ */ y("div", {
1510
1514
  className: "min-w-0 flex-1",
1511
1515
  children: [
1512
- /* @__PURE__ */ _("div", {
1516
+ /* @__PURE__ */ y("div", {
1513
1517
  className: "flex items-center gap-2",
1514
- children: [/* @__PURE__ */ g("h4", {
1518
+ children: [/* @__PURE__ */ v("h4", {
1515
1519
  className: "text-sm font-semibold text-text-primary truncate",
1516
1520
  children: e.product?.name ?? "Unknown"
1517
- }), e.licenseKey && /* @__PURE__ */ g("span", {
1521
+ }), e.licenseKey && /* @__PURE__ */ v("span", {
1518
1522
  className: "text-xs bg-status-success-bg-subtle text-status-success-text px-1.5 py-0.5 rounded-full",
1519
1523
  children: "Licensed"
1520
1524
  })]
1521
1525
  }),
1522
- n && /* @__PURE__ */ g("p", {
1526
+ n && /* @__PURE__ */ v("p", {
1523
1527
  className: "text-xs text-text-muted font-mono truncate",
1524
1528
  children: n
1525
1529
  }),
1526
- e.product?.description && /* @__PURE__ */ g("p", {
1530
+ e.product?.description && /* @__PURE__ */ v("p", {
1527
1531
  className: "text-xs text-text-secondary line-clamp-2 mt-1",
1528
1532
  children: e.product.description
1529
1533
  })
1530
1534
  ]
1531
1535
  })]
1532
- }), /* @__PURE__ */ g(v, {
1536
+ }), /* @__PURE__ */ v(b, {
1533
1537
  type: "button",
1534
1538
  size: "sm",
1535
1539
  onClick: () => void _r(e.productId, e.licenseKey),
@@ -1541,7 +1545,7 @@ function b() {
1541
1545
  }, e.id);
1542
1546
  })
1543
1547
  })] }),
1544
- K === "ui-plugins" && /* @__PURE__ */ g(h, { children: r.length > 0 || j?.tunnelUrl ? /* @__PURE__ */ g(Ge, {
1548
+ K === "ui-plugins" && /* @__PURE__ */ v(_, { children: r.length > 0 || j?.tunnelUrl ? /* @__PURE__ */ v(Ge, {
1545
1549
  availablePlugins: [...j?.tunnelUrl ? [{
1546
1550
  pluginName: "code-server",
1547
1551
  displayName: "Code Server (VS Code)",
@@ -1557,14 +1561,14 @@ function b() {
1557
1561
  tunnelUrl: j?.tunnelUrl || null,
1558
1562
  agentId: j?.id ?? null,
1559
1563
  profile: F
1560
- }) : /* @__PURE__ */ g("p", {
1564
+ }) : /* @__PURE__ */ v("p", {
1561
1565
  className: "text-sm text-text-muted",
1562
1566
  children: q ? "No UI plugins match your search." : "No plugins with UI are currently installed."
1563
1567
  }) }),
1564
- Fn && B.length === 0 && /* @__PURE__ */ _("div", {
1568
+ Fn && B.length === 0 && /* @__PURE__ */ y("div", {
1565
1569
  role: "status",
1566
1570
  className: "flex items-center gap-2 text-sm text-text-secondary",
1567
- children: [/* @__PURE__ */ g(u, {
1571
+ children: [/* @__PURE__ */ v(f, {
1568
1572
  className: "size-4 animate-spin",
1569
1573
  "aria-hidden": "true"
1570
1574
  }), "Loading plugins..."]
@@ -1573,35 +1577,35 @@ function b() {
1573
1577
  })] })
1574
1578
  });
1575
1579
  })(),
1576
- R === "sessions" && /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ _("div", {
1580
+ R === "sessions" && /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ y("div", {
1577
1581
  className: "p-4 border-b border-border-default flex items-center justify-between gap-3 flex-wrap",
1578
- children: [/* @__PURE__ */ _("h3", {
1582
+ children: [/* @__PURE__ */ y("h3", {
1579
1583
  className: "font-semibold text-text-primary flex items-center gap-2",
1580
1584
  children: [
1581
- /* @__PURE__ */ g(p, { className: "size-5" }),
1582
- S("nav.sessions", "Sessions"),
1585
+ /* @__PURE__ */ v(h, { className: "size-5" }),
1586
+ C("nav.sessions", "Sessions"),
1583
1587
  " (",
1584
1588
  Z.length,
1585
1589
  ")"
1586
1590
  ]
1587
- }), /* @__PURE__ */ g(zt, {
1588
- permission: Me.SESSION_CREATE,
1591
+ }), /* @__PURE__ */ v(Lt, {
1592
+ permission: a.SESSION_CREATE,
1589
1593
  deniedBehavior: "disable",
1590
1594
  deniedTooltip: "You don't have permission to create sessions",
1591
- children: /* @__PURE__ */ _(v, {
1595
+ children: /* @__PURE__ */ y(b, {
1592
1596
  type: "button",
1593
1597
  size: "sm",
1594
1598
  "data-testid": "create-session-btn",
1595
1599
  onClick: jr,
1596
- children: [/* @__PURE__ */ g(St, {
1600
+ children: [/* @__PURE__ */ v(bt, {
1597
1601
  className: "size-4",
1598
1602
  "aria-hidden": "true"
1599
- }), S("sessions.createSession", "Create Session")]
1603
+ }), C("sessions.createSession", "Create Session")]
1600
1604
  })
1601
1605
  })]
1602
- }), Z.length > 0 ? /* @__PURE__ */ g("div", {
1606
+ }), Z.length > 0 ? /* @__PURE__ */ v("div", {
1603
1607
  className: "divide-y divide-border-default",
1604
- children: Z.map((e) => /* @__PURE__ */ _("div", {
1608
+ children: Z.map((e) => /* @__PURE__ */ y("div", {
1605
1609
  role: "button",
1606
1610
  tabIndex: 0,
1607
1611
  onKeyDown: (t) => {
@@ -1609,77 +1613,77 @@ function b() {
1609
1613
  },
1610
1614
  onClick: () => Ar(e.id),
1611
1615
  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 duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-inset",
1612
- children: [/* @__PURE__ */ _("div", {
1616
+ children: [/* @__PURE__ */ y("div", {
1613
1617
  className: "flex items-center gap-3 min-w-0",
1614
- children: [/* @__PURE__ */ g(p, {
1618
+ children: [/* @__PURE__ */ v(h, {
1615
1619
  className: "size-5 text-text-secondary flex-shrink-0",
1616
1620
  "aria-hidden": "true"
1617
- }), /* @__PURE__ */ _("div", {
1621
+ }), /* @__PURE__ */ y("div", {
1618
1622
  className: "min-w-0",
1619
- children: [/* @__PURE__ */ g("p", {
1623
+ children: [/* @__PURE__ */ v("p", {
1620
1624
  className: "font-medium text-text-primary truncate",
1621
1625
  children: e.name
1622
- }), /* @__PURE__ */ g("p", {
1626
+ }), /* @__PURE__ */ v("p", {
1623
1627
  className: "text-sm text-text-secondary truncate",
1624
1628
  children: e.type
1625
1629
  })]
1626
1630
  })]
1627
- }), /* @__PURE__ */ g(we, { status: e.status })]
1631
+ }), /* @__PURE__ */ v(we, { status: e.status })]
1628
1632
  }, e.id))
1629
- }) : /* @__PURE__ */ _("div", {
1633
+ }) : /* @__PURE__ */ y("div", {
1630
1634
  className: "p-6 text-center text-text-secondary flex flex-col items-center gap-3",
1631
- children: [/* @__PURE__ */ g("span", { children: S("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ g(zt, {
1632
- permission: Me.SESSION_CREATE,
1635
+ children: [/* @__PURE__ */ v("span", { children: C("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ v(Lt, {
1636
+ permission: a.SESSION_CREATE,
1633
1637
  deniedBehavior: "disable",
1634
1638
  deniedTooltip: "You don't have permission to create sessions",
1635
- children: /* @__PURE__ */ _(v, {
1639
+ children: /* @__PURE__ */ y(b, {
1636
1640
  type: "button",
1637
1641
  size: "sm",
1638
1642
  "data-testid": "create-session-empty-btn",
1639
1643
  onClick: jr,
1640
- children: [/* @__PURE__ */ g(St, {
1644
+ children: [/* @__PURE__ */ v(bt, {
1641
1645
  className: "size-4",
1642
1646
  "aria-hidden": "true"
1643
- }), S("sessions.createSession", "Create Session")]
1647
+ }), C("sessions.createSession", "Create Session")]
1644
1648
  })
1645
1649
  })]
1646
1650
  })] }),
1647
- R === "connection" && /* @__PURE__ */ g(i, {
1651
+ R === "connection" && /* @__PURE__ */ v(i, {
1648
1652
  className: "min-h-[60vh]",
1649
- children: /* @__PURE__ */ g(Fe, {
1653
+ children: /* @__PURE__ */ v(Pe, {
1650
1654
  agentId: j.id,
1651
1655
  agentName: j.name
1652
1656
  })
1653
1657
  }),
1654
- R === "logs" && /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
1658
+ R === "logs" && /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
1655
1659
  className: "p-4 border-b border-border-default flex items-center justify-between",
1656
- children: /* @__PURE__ */ _("h3", {
1660
+ children: /* @__PURE__ */ y("h3", {
1657
1661
  className: "font-semibold text-text-primary flex items-center gap-2",
1658
- children: [/* @__PURE__ */ g(wt, { className: "size-5" }), S("nav.logs", "Logs")]
1662
+ children: [/* @__PURE__ */ v(St, { className: "size-5" }), C("nav.logs", "Logs")]
1659
1663
  })
1660
- }), /* @__PURE__ */ g("div", {
1664
+ }), /* @__PURE__ */ v("div", {
1661
1665
  className: "p-4",
1662
- children: /* @__PURE__ */ g(Je, {
1666
+ children: /* @__PURE__ */ v(Je, {
1663
1667
  agentId: j.id,
1664
1668
  profile: F,
1665
1669
  className: "min-h-[28rem]"
1666
1670
  })
1667
1671
  })] }),
1668
- R === "vibes" && /* @__PURE__ */ _(i, { children: [/* @__PURE__ */ g("div", {
1672
+ R === "vibes" && /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v("div", {
1669
1673
  className: "p-4 border-b border-border-default flex items-center justify-between",
1670
- children: /* @__PURE__ */ _("h3", {
1674
+ children: /* @__PURE__ */ y("h3", {
1671
1675
  className: "font-semibold text-text-primary flex items-center gap-2",
1672
1676
  children: [
1673
- /* @__PURE__ */ g(m, { className: "size-5" }),
1674
- S("nav.vibes", "Vibes"),
1677
+ /* @__PURE__ */ v(g, { className: "size-5" }),
1678
+ C("nav.vibes", "Vibes"),
1675
1679
  " (",
1676
1680
  Q.length,
1677
1681
  ")"
1678
1682
  ]
1679
1683
  })
1680
- }), Q.length > 0 ? /* @__PURE__ */ g("div", {
1684
+ }), Q.length > 0 ? /* @__PURE__ */ v("div", {
1681
1685
  className: "divide-y divide-border-default",
1682
- children: Q.map((e) => /* @__PURE__ */ _("div", {
1686
+ children: Q.map((e) => /* @__PURE__ */ y("div", {
1683
1687
  role: "button",
1684
1688
  tabIndex: 0,
1685
1689
  onKeyDown: (t) => {
@@ -1687,30 +1691,30 @@ function b() {
1687
1691
  },
1688
1692
  onClick: () => Mr(e.id),
1689
1693
  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 duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-inset",
1690
- children: [/* @__PURE__ */ _("div", {
1694
+ children: [/* @__PURE__ */ y("div", {
1691
1695
  className: "flex items-center gap-3 min-w-0",
1692
- children: [/* @__PURE__ */ g(m, {
1696
+ children: [/* @__PURE__ */ v(g, {
1693
1697
  className: "size-5 text-text-secondary flex-shrink-0",
1694
1698
  "aria-hidden": "true"
1695
- }), /* @__PURE__ */ _("div", {
1699
+ }), /* @__PURE__ */ y("div", {
1696
1700
  className: "min-w-0",
1697
- children: [/* @__PURE__ */ g("p", {
1701
+ children: [/* @__PURE__ */ v("p", {
1698
1702
  className: "font-medium text-text-primary truncate",
1699
1703
  children: e.name
1700
- }), /* @__PURE__ */ g("p", {
1704
+ }), /* @__PURE__ */ v("p", {
1701
1705
  className: "text-sm text-text-secondary truncate",
1702
1706
  children: e.type
1703
1707
  })]
1704
1708
  })]
1705
- }), /* @__PURE__ */ g(we, { status: e.status })]
1709
+ }), /* @__PURE__ */ v(we, { status: e.status })]
1706
1710
  }, e.id))
1707
- }) : /* @__PURE__ */ g("div", {
1711
+ }) : /* @__PURE__ */ v("div", {
1708
1712
  className: "p-6 text-center text-text-secondary",
1709
- children: S("agentDetails.noVibesUsingAgent", "No vibes using this agent")
1713
+ children: C("agentDetails.noVibesUsingAgent", "No vibes using this agent")
1710
1714
  })] }),
1711
- R === "notes" && /* @__PURE__ */ g("div", {
1715
+ R === "notes" && /* @__PURE__ */ v("div", {
1712
1716
  className: "space-y-6",
1713
- children: /* @__PURE__ */ g(Xe, {
1717
+ children: /* @__PURE__ */ v(Xe, {
1714
1718
  context: "agent",
1715
1719
  agentVibes: Q.map((e) => ({
1716
1720
  id: e.id,
@@ -1718,43 +1722,43 @@ function b() {
1718
1722
  }))
1719
1723
  })
1720
1724
  }),
1721
- R === "aliases" && /* @__PURE__ */ g("div", {
1725
+ R === "aliases" && /* @__PURE__ */ v("div", {
1722
1726
  className: "space-y-6",
1723
- children: /* @__PURE__ */ g(ze, { agent: {
1727
+ children: /* @__PURE__ */ v(Re, { agent: {
1724
1728
  id: j.id,
1725
1729
  profile: j.metadata?.profile ?? "default"
1726
1730
  } })
1727
1731
  }),
1728
- R === "backup" && j.tunnelUrl && /* @__PURE__ */ g(Pe, {
1732
+ R === "backup" && j.tunnelUrl && /* @__PURE__ */ v(Ne, {
1729
1733
  agentId: j.id,
1730
1734
  profile: F
1731
1735
  }),
1732
- R === "backup" && !j.tunnelUrl && /* @__PURE__ */ _(i, {
1736
+ R === "backup" && !j.tunnelUrl && /* @__PURE__ */ y(i, {
1733
1737
  className: "p-6 text-center text-text-secondary",
1734
1738
  children: [
1735
- /* @__PURE__ */ g(dt, {
1739
+ /* @__PURE__ */ v(lt, {
1736
1740
  className: "size-8 mx-auto mb-2 text-text-muted",
1737
1741
  "aria-hidden": "true"
1738
1742
  }),
1739
- /* @__PURE__ */ g("p", { children: S("agentDetails.backupRequiresTunnelAndApiKey", "Agent tunnel URL and API key are required for backup management.") }),
1740
- /* @__PURE__ */ g("p", {
1743
+ /* @__PURE__ */ v("p", { children: C("agentDetails.backupRequiresTunnelAndApiKey", "Agent tunnel URL and API key are required for backup management.") }),
1744
+ /* @__PURE__ */ v("p", {
1741
1745
  className: "text-sm mt-1",
1742
- children: S("agentDetails.configureConnectionInOverview", "Configure the agent connection in the Overview tab.")
1746
+ children: C("agentDetails.configureConnectionInOverview", "Configure the agent connection in the Overview tab.")
1743
1747
  })
1744
1748
  ]
1745
1749
  }),
1746
- R === "maintenance" && /* @__PURE__ */ g(Ie, {
1750
+ R === "maintenance" && /* @__PURE__ */ v(Fe, {
1747
1751
  agentId: j.id,
1748
1752
  agentVersion: j.version,
1749
1753
  onAfterDestructiveNuke: Sr
1750
1754
  }),
1751
1755
  I && (() => {
1752
1756
  let e = L.data.find((e) => e.contribution.id === R);
1753
- return !e || !j ? null : /* @__PURE__ */ g("div", {
1757
+ return !e || !j ? null : /* @__PURE__ */ v("div", {
1754
1758
  className: "space-y-6",
1755
- children: /* @__PURE__ */ g(i, { children: /* @__PURE__ */ g("div", {
1759
+ children: /* @__PURE__ */ v(i, { children: /* @__PURE__ */ v("div", {
1756
1760
  className: "p-0 h-[70vh] max-h-[40rem] min-h-[20rem]",
1757
- children: /* @__PURE__ */ g(et, {
1761
+ children: /* @__PURE__ */ v(et, {
1758
1762
  contribution: e,
1759
1763
  tunnel: e.tunnel,
1760
1764
  restPaths: e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`],
@@ -1774,7 +1778,7 @@ function b() {
1774
1778
  })()
1775
1779
  ]
1776
1780
  }),
1777
- I && j && /* @__PURE__ */ g($e, {
1781
+ I && j && /* @__PURE__ */ v($e, {
1778
1782
  isOpen: Dn,
1779
1783
  onClose: () => On(!1),
1780
1784
  mountPoint: "agent.detailTab",
@@ -1784,7 +1788,7 @@ function b() {
1784
1788
  L.refetch();
1785
1789
  }
1786
1790
  }),
1787
- /* @__PURE__ */ g(Ue, {
1791
+ /* @__PURE__ */ v(Ue, {
1788
1792
  agent: {
1789
1793
  id: j.id,
1790
1794
  name: j.name,
@@ -1795,100 +1799,100 @@ function b() {
1795
1799
  aiContext: j.aiContext,
1796
1800
  metadata: j.metadata
1797
1801
  },
1798
- isOpen: tn,
1799
- onClose: () => nn(!1),
1800
- onSaved: () => a.success(S("agentDetails.configurationUpdated", "Agent configuration updated successfully"))
1802
+ isOpen: en,
1803
+ onClose: () => tn(!1),
1804
+ onSaved: () => ze.success(C("agentDetails.configurationUpdated", "Agent configuration updated successfully"))
1801
1805
  }),
1802
- /* @__PURE__ */ g(We, {
1806
+ /* @__PURE__ */ v(We, {
1803
1807
  agentId: j.id,
1804
1808
  agentName: j.name,
1805
1809
  probe: N.get(j.id),
1806
1810
  isOpen: vn,
1807
1811
  onClose: () => yn(!1),
1808
- onCreated: () => a.success(S("sessions.createdSuccess", "Session created successfully")),
1812
+ onCreated: () => ze.success(C("sessions.createdSuccess", "Session created successfully")),
1809
1813
  onQuotaExhausted: () => {
1810
1814
  yn(!1), he(), Zn("session"), G(!0);
1811
1815
  }
1812
1816
  }),
1813
- /* @__PURE__ */ g(de, {
1817
+ /* @__PURE__ */ v(de, {
1814
1818
  isOpen: Rn !== null,
1815
1819
  onClose: () => zn(null),
1816
1820
  onConfirm: () => {
1817
1821
  let e = Rn;
1818
1822
  zn(null), e && pr(e);
1819
1823
  },
1820
- title: S("agentDetails.removePluginTitle", "Remove plugin"),
1821
- message: S("agentDetails.removePluginConfirm", "Remove plugin {{packageName}}?", { packageName: Rn ?? "" }),
1822
- confirmLabel: S("sessions.remove", "Remove"),
1824
+ title: C("agentDetails.removePluginTitle", "Remove plugin"),
1825
+ message: C("agentDetails.removePluginConfirm", "Remove plugin {{packageName}}?", { packageName: Rn ?? "" }),
1826
+ confirmLabel: C("sessions.remove", "Remove"),
1823
1827
  variant: "danger"
1824
1828
  }),
1825
- /* @__PURE__ */ g(De, {
1829
+ /* @__PURE__ */ v(De, {
1826
1830
  isOpen: Bn !== null,
1827
1831
  onClose: () => Vn(null),
1828
1832
  onSubmit: (e) => {
1829
1833
  let t = Bn;
1830
1834
  Vn(null), t && hr(t, e || void 0);
1831
1835
  },
1832
- title: S("agentDetails.updatePluginTitle", "Update plugin"),
1833
- description: S("agentDetails.updatePluginPrompt", "Update {{packageName}} to which version? Leave blank for latest.", { packageName: Bn ?? "" }),
1834
- label: S("agentDetails.updatePluginVersionLabel", "Version"),
1835
- placeholder: S("agentDetails.updatePluginVersionPlaceholder", "latest"),
1836
- confirmLabel: S("agentDetails.update", "Update")
1836
+ title: C("agentDetails.updatePluginTitle", "Update plugin"),
1837
+ description: C("agentDetails.updatePluginPrompt", "Update {{packageName}} to which version? Leave blank for latest.", { packageName: Bn ?? "" }),
1838
+ label: C("agentDetails.updatePluginVersionLabel", "Version"),
1839
+ placeholder: C("agentDetails.updatePluginVersionPlaceholder", "latest"),
1840
+ confirmLabel: C("agentDetails.update", "Update")
1837
1841
  }),
1838
- /* @__PURE__ */ g(fe, {
1842
+ /* @__PURE__ */ v(fe, {
1839
1843
  isOpen: Yn,
1840
1844
  onClose: () => G(!1),
1841
1845
  onConfirm: () => {
1842
- G(!1), x("/billing/plans");
1846
+ G(!1), S("/billing/plans");
1843
1847
  },
1844
1848
  title: pe(Xn).title,
1845
1849
  message: pe(Xn).message
1846
1850
  }),
1847
- /* @__PURE__ */ g(de, {
1851
+ /* @__PURE__ */ v(de, {
1848
1852
  isOpen: Hn,
1849
1853
  onClose: () => {
1850
1854
  W || Un(!1);
1851
1855
  },
1852
1856
  onConfirm: kr,
1853
- title: S("agentDetails.removeAgentTitle", "Remove agent"),
1854
- message: S("agentDetails.removeAgentMessage", "Remove “{{name}}” from this workspace.", { name: j.name }),
1855
- confirmLabel: S("sessions.remove", "Remove"),
1857
+ title: C("agentDetails.removeAgentTitle", "Remove agent"),
1858
+ message: C("agentDetails.removeAgentMessage", "Remove “{{name}}” from this workspace.", { name: j.name }),
1859
+ confirmLabel: C("sessions.remove", "Remove"),
1856
1860
  variant: "danger",
1857
1861
  isLoading: W,
1858
- children: /* @__PURE__ */ _("div", {
1862
+ children: /* @__PURE__ */ y("div", {
1859
1863
  className: "space-y-2",
1860
- children: [/* @__PURE__ */ _("label", {
1864
+ children: [/* @__PURE__ */ y("label", {
1861
1865
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
1862
- children: [/* @__PURE__ */ g(Ft, {
1866
+ children: [/* @__PURE__ */ v(Nt, {
1863
1867
  checked: Wn,
1864
1868
  disabled: W,
1865
1869
  onCheckedChange: (e) => Gn(e === !0),
1866
1870
  className: "mt-0.5"
1867
- }), /* @__PURE__ */ _("span", {
1871
+ }), /* @__PURE__ */ y("span", {
1868
1872
  className: "min-w-0",
1869
- children: [/* @__PURE__ */ g("span", {
1873
+ children: [/* @__PURE__ */ v("span", {
1870
1874
  className: "block text-sm font-medium text-text-primary",
1871
- children: S("agentDetails.uninstallFromTarget", "Uninstall agent from the target")
1872
- }), /* @__PURE__ */ g("span", {
1875
+ children: C("agentDetails.uninstallFromTarget", "Uninstall agent from the target")
1876
+ }), /* @__PURE__ */ v("span", {
1873
1877
  className: "block text-xs text-text-secondary mt-0.5",
1874
- children: S("agentDetails.uninstallFromTargetDesc", "Also wipe all agent state + VibeControls plugins and uninstall the agent from the host machine. This cannot be undone.")
1878
+ children: C("agentDetails.uninstallFromTargetDesc", "Also wipe all agent state + VibeControls plugins and uninstall the agent from the host machine. This cannot be undone.")
1875
1879
  })]
1876
1880
  })]
1877
- }), /* @__PURE__ */ _("label", {
1881
+ }), /* @__PURE__ */ y("label", {
1878
1882
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
1879
- children: [/* @__PURE__ */ g(Ft, {
1883
+ children: [/* @__PURE__ */ v(Nt, {
1880
1884
  checked: Kn,
1881
1885
  disabled: W,
1882
1886
  onCheckedChange: (e) => qn(e === !0),
1883
1887
  className: "mt-0.5"
1884
- }), /* @__PURE__ */ _("span", {
1888
+ }), /* @__PURE__ */ y("span", {
1885
1889
  className: "min-w-0",
1886
- children: [/* @__PURE__ */ g("span", {
1890
+ children: [/* @__PURE__ */ v("span", {
1887
1891
  className: "block text-sm font-medium text-text-primary",
1888
- children: S("agentDetails.deleteTarget", "Delete the mapped target")
1889
- }), /* @__PURE__ */ g("span", {
1892
+ children: C("agentDetails.deleteTarget", "Delete the mapped target")
1893
+ }), /* @__PURE__ */ v("span", {
1890
1894
  className: "block text-xs text-text-secondary mt-0.5",
1891
- children: S("agentDetails.deleteTargetDesc", "Also delete the target this agent is mapped to. Any other agents on the same target are removed too. This cannot be undone.")
1895
+ children: C("agentDetails.deleteTargetDesc", "Also delete the target this agent is mapped to. Any other agents on the same target are removed too. This cannot be undone.")
1892
1896
  })]
1893
1897
  })]
1894
1898
  })]
@@ -1898,6 +1902,6 @@ function b() {
1898
1902
  });
1899
1903
  }
1900
1904
  //#endregion
1901
- export { b as AgentDetailsPage };
1905
+ export { x as AgentDetailsPage };
1902
1906
 
1903
1907
  //# sourceMappingURL=AgentDetailsPage.js.map