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