@burdenoff/microfe-vibecontrols 2026.526.1 → 2026.526.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/ai/PluginHarnessPicker.js +64 -65
- package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
- package/dist/components/shared/PluginGate.js +70 -71
- package/dist/components/shared/PluginGate.js.map +1 -1
- package/dist/generated/wspace-operations.js +4 -4
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/hooks/usePluginAvailability.js +59 -83
- package/dist/hooks/usePluginAvailability.js.map +1 -1
- package/dist/pages/AgentDetailsPage.js +486 -508
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +457 -457
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/ai/AIPage.js +10 -10
- package/dist/pages/ai/AISessionDetailPage.js +4 -4
- package/dist/pages/ai/AgentManagerPage.js +11 -11
- package/dist/pages/ai/AgentManagerPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,13 +32,13 @@ import { AddTabDialog as Ae } from "../components/plugins/AddTabDialog.js";
|
|
|
32
32
|
import { PluginIframeMount as je } from "../components/plugins/PluginIframeMount.js";
|
|
33
33
|
import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
|
|
34
34
|
import { useI18n as Me } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
35
|
-
import { ArrowLeft as g, Check as Ne, CheckCircle2 as Pe, Clock as Fe, Command as Ie, Copy as Le, Cpu as Re, Database as ze, Download as Be, Eye as Ve, EyeOff as He, FileText as Ue, HardDrive as We, Info as
|
|
36
|
-
import { useParams as
|
|
37
|
-
import { usePermissions as
|
|
38
|
-
import { AnimatePresence as
|
|
39
|
-
import { Fragment as
|
|
40
|
-
import { useFeatureFlagDetails as
|
|
41
|
-
import { MotionPage as
|
|
35
|
+
import { ArrowLeft as g, Check as Ne, CheckCircle2 as Pe, Clock as Fe, Command as Ie, Copy as Le, Cpu as Re, Database as ze, Download as Be, Eye as Ve, EyeOff as He, FileText as Ue, HardDrive as We, Info as Ge, Key as Ke, Link2 as _, Loader2 as v, Monitor as qe, Play as Je, Puzzle as y, RefreshCw as Ye, ScrollText as Xe, Search as Ze, Server as Qe, Settings as $e, Shield as et, Square as tt, Tag as nt, Terminal as b, Trash2 as rt, Unlink as it, Users as at, X as x, Zap as S } from "lucide-react";
|
|
36
|
+
import { useParams as ot } from "react-router-dom";
|
|
37
|
+
import { usePermissions as st } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
38
|
+
import { AnimatePresence as ct, motion as C } from "framer-motion";
|
|
39
|
+
import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
40
|
+
import { useFeatureFlagDetails as lt } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
41
|
+
import { MotionPage as D } from "@burdenoff/fe-libs/shared/motion";
|
|
42
42
|
import { usePluginContributions as ut } from "@burdenoff/fe-libs/shared/plugins";
|
|
43
43
|
//#region src/pages/AgentDetailsPage.tsx
|
|
44
44
|
function dt({ agent: e, onUpdate: t }) {
|
|
@@ -57,53 +57,53 @@ function dt({ agent: e, onUpdate: t }) {
|
|
|
57
57
|
ee(!1);
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
61
61
|
className: "p-4 border-b border-border-default",
|
|
62
|
-
children: /* @__PURE__ */
|
|
62
|
+
children: /* @__PURE__ */ E("h3", {
|
|
63
63
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
64
|
-
children: [/* @__PURE__ */
|
|
64
|
+
children: [/* @__PURE__ */ T(et, { className: "w-5 h-5" }), l("agentDetails.gatewayAuthTitle", "Gateway Auth (OAuth2)")]
|
|
65
65
|
})
|
|
66
|
-
}), /* @__PURE__ */
|
|
66
|
+
}), /* @__PURE__ */ E("div", {
|
|
67
67
|
className: "p-4 space-y-3",
|
|
68
|
-
children: [ne && /* @__PURE__ */
|
|
68
|
+
children: [ne && /* @__PURE__ */ E("div", {
|
|
69
69
|
className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
70
70
|
children: [
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
/* @__PURE__ */
|
|
71
|
+
/* @__PURE__ */ T(x, { className: "w-4 h-4 flex-shrink-0" }),
|
|
72
|
+
/* @__PURE__ */ T("span", {
|
|
73
73
|
className: "flex-1",
|
|
74
74
|
children: ne
|
|
75
75
|
}),
|
|
76
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ T("button", {
|
|
77
77
|
onClick: () => o(null),
|
|
78
78
|
className: "flex-shrink-0 p-0.5 hover:bg-status-error-text/10 rounded",
|
|
79
|
-
children: /* @__PURE__ */
|
|
79
|
+
children: /* @__PURE__ */ T(x, { className: "w-3.5 h-3.5" })
|
|
80
80
|
})
|
|
81
81
|
]
|
|
82
|
-
}), he ? /* @__PURE__ */
|
|
83
|
-
/* @__PURE__ */
|
|
82
|
+
}), he ? /* @__PURE__ */ E(w, { children: [
|
|
83
|
+
/* @__PURE__ */ E("div", {
|
|
84
84
|
className: "flex items-start gap-3",
|
|
85
|
-
children: [/* @__PURE__ */
|
|
85
|
+
children: [/* @__PURE__ */ T("div", {
|
|
86
86
|
className: "w-8 h-8 rounded-lg bg-status-success-bg flex items-center justify-center flex-shrink-0 mt-0.5",
|
|
87
|
-
children: /* @__PURE__ */
|
|
88
|
-
}), /* @__PURE__ */
|
|
87
|
+
children: /* @__PURE__ */ T(_, { className: "w-4 h-4 text-status-success-text" })
|
|
88
|
+
}), /* @__PURE__ */ E("div", {
|
|
89
89
|
className: "flex-1 min-w-0 space-y-2",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
90
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
91
91
|
className: "text-sm font-medium text-text-primary",
|
|
92
92
|
children: l("agentDetails.linkedToOauthApp", "Linked to OAuth App")
|
|
93
|
-
}), /* @__PURE__ */
|
|
93
|
+
}), /* @__PURE__ */ T("p", {
|
|
94
94
|
className: "text-xs text-text-muted",
|
|
95
95
|
children: l("agentDetails.gatewayAuthLinkedDescription", "This agent can authenticate with the API gateway using Client Credentials.")
|
|
96
|
-
})] }), /* @__PURE__ */
|
|
96
|
+
})] }), /* @__PURE__ */ E("div", {
|
|
97
97
|
className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
|
|
98
|
-
children: [/* @__PURE__ */
|
|
98
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
99
99
|
className: "text-xs text-text-secondary mb-1",
|
|
100
100
|
children: l("agentDetails.clientId", "Client ID")
|
|
101
|
-
}), /* @__PURE__ */
|
|
101
|
+
}), /* @__PURE__ */ E("div", {
|
|
102
102
|
className: "flex items-center gap-2",
|
|
103
|
-
children: [/* @__PURE__ */
|
|
103
|
+
children: [/* @__PURE__ */ T("code", {
|
|
104
104
|
className: "text-xs font-mono text-text-primary bg-bg-sunken px-2 py-1 rounded truncate block flex-1",
|
|
105
105
|
children: e.appClientId
|
|
106
|
-
}), /* @__PURE__ */
|
|
106
|
+
}), /* @__PURE__ */ T("button", {
|
|
107
107
|
onClick: async () => {
|
|
108
108
|
if (e.appClientId) try {
|
|
109
109
|
await pe(e.appClientId), fe() && me("Copied"), le(!0), setTimeout(() => le(!1), 2e3);
|
|
@@ -111,70 +111,70 @@ function dt({ agent: e, onUpdate: t }) {
|
|
|
111
111
|
},
|
|
112
112
|
className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
113
113
|
title: l("agentDetails.copyClientId", "Copy Client ID"),
|
|
114
|
-
children: ce ? /* @__PURE__ */
|
|
114
|
+
children: ce ? /* @__PURE__ */ T(Ne, { className: "w-3.5 h-3.5 text-status-success-text" }) : /* @__PURE__ */ T(Le, { className: "w-3.5 h-3.5 text-text-secondary" })
|
|
115
115
|
})]
|
|
116
|
-
})] }), /* @__PURE__ */
|
|
116
|
+
})] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
117
117
|
className: "text-xs text-text-secondary mb-1",
|
|
118
118
|
children: l("agentDetails.appId", "App ID")
|
|
119
|
-
}), /* @__PURE__ */
|
|
119
|
+
}), /* @__PURE__ */ T("code", {
|
|
120
120
|
className: "text-xs font-mono text-text-muted bg-bg-sunken px-2 py-1 rounded truncate block",
|
|
121
121
|
children: e.appId
|
|
122
122
|
})] })]
|
|
123
123
|
})]
|
|
124
124
|
})]
|
|
125
125
|
}),
|
|
126
|
-
c && /* @__PURE__ */
|
|
126
|
+
c && /* @__PURE__ */ E("div", {
|
|
127
127
|
className: "p-3 bg-status-warning-bg/20 border border-status-warning-text/20 rounded-lg space-y-2",
|
|
128
128
|
children: [
|
|
129
|
-
/* @__PURE__ */
|
|
129
|
+
/* @__PURE__ */ T("p", {
|
|
130
130
|
className: "text-sm font-medium text-status-warning-text",
|
|
131
131
|
children: l("agentDetails.clientSecretOneTimeTitle", "Client Secret (one-time display)")
|
|
132
132
|
}),
|
|
133
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ T("p", {
|
|
134
134
|
className: "text-xs text-text-secondary",
|
|
135
135
|
children: l("agentDetails.clientSecretOneTimeDescription", "This secret has been automatically sent to the agent. Save it now if you need it — it won't be shown again.")
|
|
136
136
|
}),
|
|
137
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ E("div", {
|
|
138
138
|
className: "flex items-center gap-2",
|
|
139
139
|
children: [
|
|
140
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ T("code", {
|
|
141
141
|
className: "text-xs font-mono text-text-primary bg-bg-sunken px-2 py-1 rounded flex-1 truncate",
|
|
142
142
|
children: s ? c : "•".repeat(32)
|
|
143
143
|
}),
|
|
144
|
-
/* @__PURE__ */
|
|
144
|
+
/* @__PURE__ */ T("button", {
|
|
145
145
|
onClick: () => ie(!s),
|
|
146
146
|
className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
147
|
-
children:
|
|
147
|
+
children: T(s ? He : Ve, { className: "w-3.5 h-3.5 text-text-secondary" })
|
|
148
148
|
}),
|
|
149
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ T("button", {
|
|
150
150
|
onClick: async () => {
|
|
151
151
|
if (c) try {
|
|
152
152
|
await pe(c), fe() && me("Secret copied"), se(!0), setTimeout(() => se(!1), 2e3);
|
|
153
153
|
} catch {}
|
|
154
154
|
},
|
|
155
155
|
className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
156
|
-
children: oe ? /* @__PURE__ */
|
|
156
|
+
children: oe ? /* @__PURE__ */ T(Ne, { className: "w-3.5 h-3.5 text-status-success-text" }) : /* @__PURE__ */ T(Le, { className: "w-3.5 h-3.5 text-text-secondary" })
|
|
157
157
|
})
|
|
158
158
|
]
|
|
159
159
|
})
|
|
160
160
|
]
|
|
161
161
|
}),
|
|
162
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ E("div", {
|
|
163
163
|
className: "flex items-center gap-2",
|
|
164
164
|
children: [
|
|
165
|
-
ge && /* @__PURE__ */
|
|
165
|
+
ge && /* @__PURE__ */ E("a", {
|
|
166
166
|
href: `/devportal/apps/${ge}`,
|
|
167
167
|
className: "flex items-center gap-2 px-3 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 hover:bg-action-primary-bg/20 rounded-md transition-colors",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ T(qe, { className: "w-3 h-3" }), l("agentDetails.viewInDeveloperPortal", "View in Developer Portal")]
|
|
169
169
|
}),
|
|
170
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ E("button", {
|
|
171
171
|
onClick: _e,
|
|
172
172
|
disabled: a,
|
|
173
173
|
className: "flex items-center gap-2 px-3 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 hover:bg-action-primary-bg/20 rounded-md transition-colors disabled:opacity-50",
|
|
174
174
|
title: l("agentDetails.repushCredentialsTitle", "Rotate the OAuth secret and push it to the agent. Use this if the agent shows degraded with \"boot state awaiting-config\"."),
|
|
175
|
-
children: [a ? /* @__PURE__ */
|
|
175
|
+
children: [a ? /* @__PURE__ */ T(v, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ T(Ye, { className: "w-3 h-3" }), l("agentDetails.repushCredentials", "Re-push credentials")]
|
|
176
176
|
}),
|
|
177
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ E("button", {
|
|
178
178
|
onClick: async () => {
|
|
179
179
|
if (window.confirm(l("agentDetails.confirmUnlinkOauthApp", "Remove the linked OAuth app from this agent? The app will still exist in auth-svc."))) {
|
|
180
180
|
de(!0), o(null);
|
|
@@ -195,41 +195,41 @@ function dt({ agent: e, onUpdate: t }) {
|
|
|
195
195
|
},
|
|
196
196
|
disabled: ue,
|
|
197
197
|
className: "flex items-center gap-2 px-3 py-1.5 text-xs text-status-error-text hover:bg-status-error-bg rounded-md transition-colors disabled:opacity-50",
|
|
198
|
-
children: [ue ? /* @__PURE__ */
|
|
198
|
+
children: [ue ? /* @__PURE__ */ T(v, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ T(it, { className: "w-3 h-3" }), l("agentDetails.unlinkApp", "Unlink App")]
|
|
199
199
|
})
|
|
200
200
|
]
|
|
201
201
|
})
|
|
202
|
-
] }) : /* @__PURE__ */
|
|
202
|
+
] }) : /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ E("div", {
|
|
203
203
|
className: "flex items-start gap-3",
|
|
204
|
-
children: [/* @__PURE__ */
|
|
204
|
+
children: [/* @__PURE__ */ T("div", {
|
|
205
205
|
className: "w-8 h-8 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0 mt-0.5",
|
|
206
|
-
children: /* @__PURE__ */
|
|
207
|
-
}), /* @__PURE__ */
|
|
206
|
+
children: /* @__PURE__ */ T(et, { className: "w-4 h-4 text-text-muted" })
|
|
207
|
+
}), /* @__PURE__ */ E("div", {
|
|
208
208
|
className: "flex-1",
|
|
209
|
-
children: [/* @__PURE__ */
|
|
209
|
+
children: [/* @__PURE__ */ T("p", {
|
|
210
210
|
className: "text-sm font-medium text-text-primary",
|
|
211
211
|
children: l("agentDetails.noOauthAppLinked", "No OAuth App Linked")
|
|
212
|
-
}), /* @__PURE__ */
|
|
212
|
+
}), /* @__PURE__ */ T("p", {
|
|
213
213
|
className: "text-xs text-text-muted mt-0.5",
|
|
214
214
|
children: l("agentDetails.gatewayAuthSetupDescription", "Set up gateway auth to allow this agent to communicate with the API gateways using OAuth2 Client Credentials. This creates an OAuth app, registers it in the Developer Portal, and pushes the credentials to the agent.")
|
|
215
215
|
})]
|
|
216
216
|
})]
|
|
217
|
-
}), /* @__PURE__ */
|
|
217
|
+
}), /* @__PURE__ */ T("button", {
|
|
218
218
|
onClick: _e,
|
|
219
219
|
disabled: a,
|
|
220
220
|
className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
221
|
-
children: a ? /* @__PURE__ */
|
|
221
|
+
children: a ? /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(v, { className: "w-4 h-4 animate-spin" }), l("agentDetails.settingUp", "Setting up...")] }) : /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(_, { className: "w-4 h-4" }), l("agentDetails.setupGatewayAuth", "Setup Gateway Auth")] })
|
|
222
222
|
})] })]
|
|
223
223
|
})] });
|
|
224
224
|
}
|
|
225
225
|
function ft() {
|
|
226
|
-
let { t: te } = Me(), { id:
|
|
226
|
+
let { t: te } = Me(), { id: _ } = ot(), { basePath: it } = c(), ft = it || "", O = ae(), { hasPermission: pt, isLoading: mt } = st(), k = d((e, t, n) => {
|
|
227
227
|
let r = te(e, n), i = r === e ? t : r;
|
|
228
228
|
return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
|
|
229
229
|
}, [te]), [ht] = re({ refetchQueries: ["GetAgent"] }), [gt] = n(), [_t] = t({ refetchQueries: ["GetAgent"] }), [vt] = ne(), [yt] = o(), [A, bt] = h(null), [xt, St] = h(null), Ct = oe((e) => e.setActiveAgentId);
|
|
230
230
|
f(() => {
|
|
231
|
-
|
|
232
|
-
}, [
|
|
231
|
+
_ && Ct(_);
|
|
232
|
+
}, [_, Ct]);
|
|
233
233
|
let wt = [
|
|
234
234
|
"overview",
|
|
235
235
|
"profiles",
|
|
@@ -242,16 +242,16 @@ function ft() {
|
|
|
242
242
|
"aliases",
|
|
243
243
|
"backup"
|
|
244
244
|
], [Tt, Et] = h(!1), [Dt, j] = h(null), [Ot, kt] = h(!1), [At, M] = h(null), [jt, Mt] = h(!1), Nt = m(null), Pt = m(null), Ft = m(null), It = m(null), Lt = m(null), [N, Rt] = h(!1), [zt, Bt] = h(!1), { data: Vt, loading: Ht, error: Ut, refetch: P } = r({
|
|
245
|
-
variables: { id:
|
|
246
|
-
skip: !
|
|
245
|
+
variables: { id: _ || "" },
|
|
246
|
+
skip: !_,
|
|
247
247
|
fetchPolicy: "cache-and-network"
|
|
248
248
|
}), F = Vt?.vibecontrolsAgent, I = ie({
|
|
249
249
|
fetchPolicy: "cache-and-network",
|
|
250
250
|
nextFetchPolicy: "cache-first",
|
|
251
251
|
notifyOnNetworkStatusChange: !0,
|
|
252
|
-
skip: !
|
|
252
|
+
skip: !_,
|
|
253
253
|
pollInterval: 3e4
|
|
254
|
-
}), { data: Wt } = s({ skip: !
|
|
254
|
+
}), { data: Wt } = s({ skip: !_ }), Gt = I.data === void 0 && Wt === void 0, Kt = p(() => {
|
|
255
255
|
let e = /* @__PURE__ */ new Map(), t = Wt?.vibecontrolsAgentHealthProbeStream ?? I.data?.vibecontrolsAgentHealthProbes ?? [];
|
|
256
256
|
for (let n of t) e.set(n.agentId, {
|
|
257
257
|
agentId: n.agentId,
|
|
@@ -267,8 +267,8 @@ function ft() {
|
|
|
267
267
|
F,
|
|
268
268
|
Kt,
|
|
269
269
|
Gt
|
|
270
|
-
]), Jt = qt === "STOPPED" || qt === "OFFLINE", { active: L } = ge(F?.id ?? null), R =
|
|
271
|
-
if (!
|
|
270
|
+
]), Jt = qt === "STOPPED" || qt === "OFFLINE", { active: L } = ge(F?.id ?? null), R = lt("vibes.tabs.iframe-host")?.value === !0, Yt = p(() => {
|
|
271
|
+
if (!R || !F?.tunnelUrl) return [];
|
|
272
272
|
let e = F.id, t = L ?? "default";
|
|
273
273
|
return [{
|
|
274
274
|
tunnelUrl: F.tunnelUrl,
|
|
@@ -277,18 +277,18 @@ function ft() {
|
|
|
277
277
|
mintIframeToken: async ({ pathPrefixes: n }) => ke(e, t, n)
|
|
278
278
|
}];
|
|
279
279
|
}, [
|
|
280
|
-
|
|
280
|
+
R,
|
|
281
281
|
F?.id,
|
|
282
282
|
F?.tunnelUrl,
|
|
283
283
|
F?.name,
|
|
284
284
|
L
|
|
285
|
-
]),
|
|
285
|
+
]), z = ut(Yt, {
|
|
286
286
|
mountPoint: "agent.detailTab",
|
|
287
|
-
enabled:
|
|
288
|
-
}), [
|
|
289
|
-
let e =
|
|
287
|
+
enabled: R && Yt.length > 0
|
|
288
|
+
}), [B, Xt] = Oe(p(() => {
|
|
289
|
+
let e = z.data.filter((e) => e.contribution.mountPoint === "agent.detailTab").map((e) => e.contribution.id);
|
|
290
290
|
return [...wt, ...e];
|
|
291
|
-
}, [
|
|
291
|
+
}, [z.data, wt]), "overview"), [Zt, Qt] = h(!1), $t = m(!1);
|
|
292
292
|
f(() => {
|
|
293
293
|
F && !$t.current && ($t.current = !0, _t().catch(() => {}));
|
|
294
294
|
}, [F, _t]);
|
|
@@ -304,11 +304,11 @@ function ft() {
|
|
|
304
304
|
en,
|
|
305
305
|
P
|
|
306
306
|
]);
|
|
307
|
-
let [
|
|
307
|
+
let [V, nn] = h([]), [rn, an] = h([]), [on, sn] = h(!0), [H, U] = h(null), [cn, W] = h(null), [ln, un] = h(!1), dn = m(null), [G, K] = h("installed"), [q, fn] = h(""), [J, pn] = h([]), [mn, hn] = h(!1), [gn, _n] = h(null), [Y, vn] = h(null), [yn] = e(), [bn] = i(), [xn] = ee(), X = d(async () => {
|
|
308
308
|
if (F?.id) {
|
|
309
|
-
sn(!0),
|
|
309
|
+
sn(!0), W(null);
|
|
310
310
|
try {
|
|
311
|
-
let { data: e } = await
|
|
311
|
+
let { data: e } = await yn({ variables: {
|
|
312
312
|
agentId: F.id,
|
|
313
313
|
profile: L
|
|
314
314
|
} }), t = e?.agentPlugins;
|
|
@@ -338,17 +338,17 @@ function ft() {
|
|
|
338
338
|
tags: [...e.tags],
|
|
339
339
|
installed: e.installed
|
|
340
340
|
}));
|
|
341
|
-
nn(e), an(n), t.error &&
|
|
341
|
+
nn(e), an(n), t.error && W(t.error);
|
|
342
342
|
}
|
|
343
343
|
} catch {
|
|
344
|
-
|
|
344
|
+
W("Agent unreachable — unable to fetch plugin list");
|
|
345
345
|
} finally {
|
|
346
346
|
sn(!1);
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
349
|
}, [
|
|
350
350
|
F?.id,
|
|
351
|
-
|
|
351
|
+
yn,
|
|
352
352
|
L
|
|
353
353
|
]);
|
|
354
354
|
f(() => {
|
|
@@ -360,11 +360,11 @@ function ft() {
|
|
|
360
360
|
L,
|
|
361
361
|
X
|
|
362
362
|
]);
|
|
363
|
-
let
|
|
364
|
-
if (F?.id
|
|
365
|
-
|
|
363
|
+
let Sn = d(async (e) => {
|
|
364
|
+
if (F?.id) {
|
|
365
|
+
U(e);
|
|
366
366
|
try {
|
|
367
|
-
let { data: t } = await
|
|
367
|
+
let { data: t } = await bn({ variables: {
|
|
368
368
|
agentId: F.id,
|
|
369
369
|
packageName: e
|
|
370
370
|
} });
|
|
@@ -375,40 +375,38 @@ function ft() {
|
|
|
375
375
|
un(!0);
|
|
376
376
|
return;
|
|
377
377
|
}
|
|
378
|
-
|
|
378
|
+
W(e instanceof Error ? e.message : k("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => W(null), 5e3);
|
|
379
379
|
} finally {
|
|
380
|
-
|
|
380
|
+
U(null);
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
}, [
|
|
384
384
|
F?.id,
|
|
385
|
-
|
|
385
|
+
bn,
|
|
386
386
|
X,
|
|
387
|
-
k
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
W(e);
|
|
387
|
+
k
|
|
388
|
+
]), Cn = d(async (e) => {
|
|
389
|
+
if (F?.id && window.confirm(k("agentDetails.removePluginConfirm", "Remove plugin {{packageName}}?", { packageName: e }))) {
|
|
390
|
+
U(e);
|
|
392
391
|
try {
|
|
393
|
-
let { data: t } = await
|
|
392
|
+
let { data: t } = await xn({ variables: {
|
|
394
393
|
agentId: F.id,
|
|
395
394
|
packageName: e
|
|
396
395
|
} });
|
|
397
396
|
if (t?.removeAgentPlugin?.success) await X();
|
|
398
397
|
else throw Error(t?.removeAgentPlugin?.error || k("agentDetails.removeFailed", "Remove failed"));
|
|
399
398
|
} catch (e) {
|
|
400
|
-
|
|
399
|
+
W(e instanceof Error ? e.message : k("agentDetails.pluginRemoveFailed", "Failed to remove plugin")), setTimeout(() => W(null), 5e3);
|
|
401
400
|
} finally {
|
|
402
|
-
|
|
401
|
+
U(null);
|
|
403
402
|
}
|
|
404
403
|
}
|
|
405
404
|
}, [
|
|
406
405
|
F?.id,
|
|
407
|
-
|
|
406
|
+
xn,
|
|
408
407
|
X,
|
|
409
|
-
k
|
|
410
|
-
|
|
411
|
-
]), Z = F?.sessions || [], Q = F?.vibes || [], Tn = d(async () => {
|
|
408
|
+
k
|
|
409
|
+
]), Z = F?.sessions || [], Q = F?.vibes || [], wn = d(async () => {
|
|
412
410
|
hn(!0), _n(null);
|
|
413
411
|
try {
|
|
414
412
|
let e = await (await fetch(typeof window < "u" && window.__BURDENOFF_GLOBAL_GATEWAY__ || "/global/graphql", {
|
|
@@ -431,16 +429,16 @@ function ft() {
|
|
|
431
429
|
}
|
|
432
430
|
}, []);
|
|
433
431
|
f(() => {
|
|
434
|
-
|
|
432
|
+
G === "store" && J.length === 0 && !mn && wn();
|
|
435
433
|
}, [
|
|
436
|
-
|
|
437
|
-
|
|
434
|
+
G,
|
|
435
|
+
J.length,
|
|
438
436
|
mn,
|
|
439
|
-
|
|
437
|
+
wn
|
|
440
438
|
]);
|
|
441
|
-
let
|
|
439
|
+
let Tn = d(async (e, t) => {
|
|
442
440
|
if (F?.id) {
|
|
443
|
-
|
|
441
|
+
vn(e);
|
|
444
442
|
try {
|
|
445
443
|
let n = await (await fetch(typeof window < "u" && window.__BURDENOFF_WSPACE_GATEWAY__ || "/workspaces/graphql", {
|
|
446
444
|
method: "POST",
|
|
@@ -458,41 +456,41 @@ function ft() {
|
|
|
458
456
|
if (n.errors?.length) throw Error(n.errors[0]?.message ?? "Install failed");
|
|
459
457
|
let r = n.data?.installStorePluginOnAgent;
|
|
460
458
|
if (!r?.success) throw Error(r?.error ?? "Install failed");
|
|
461
|
-
await X(),
|
|
459
|
+
await X(), K("installed");
|
|
462
460
|
} catch (e) {
|
|
463
461
|
_n(e instanceof Error ? e.message : "Install failed");
|
|
464
462
|
} finally {
|
|
465
|
-
|
|
463
|
+
vn(null);
|
|
466
464
|
}
|
|
467
465
|
}
|
|
468
466
|
}, [F?.id, X]);
|
|
469
467
|
if (f(() => {
|
|
470
468
|
if (typeof window > "u" || !F?.id) return;
|
|
471
469
|
let e = new URLSearchParams(window.location.search), t = e.get("install"), n = e.get("licenseKey");
|
|
472
|
-
if (t && t !==
|
|
473
|
-
|
|
470
|
+
if (t && t !== Y) {
|
|
471
|
+
K("store"), Tn(t, n);
|
|
474
472
|
let e = new URL(window.location.href);
|
|
475
473
|
e.searchParams.delete("install"), e.searchParams.delete("licenseKey"), window.history.replaceState({}, "", e.toString());
|
|
476
474
|
}
|
|
477
475
|
}, [
|
|
478
476
|
F?.id,
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
]), mt) return /* @__PURE__ */
|
|
477
|
+
Tn,
|
|
478
|
+
Y
|
|
479
|
+
]), mt) return /* @__PURE__ */ T("div", {
|
|
482
480
|
className: "flex items-center justify-center min-h-[400px]",
|
|
483
|
-
children: /* @__PURE__ */
|
|
481
|
+
children: /* @__PURE__ */ T("p", {
|
|
484
482
|
className: "text-text-secondary",
|
|
485
483
|
children: "Loading permissions..."
|
|
486
484
|
})
|
|
487
485
|
});
|
|
488
|
-
if (!pt(_e.AGENT_READ)) return /* @__PURE__ */
|
|
486
|
+
if (!pt(_e.AGENT_READ)) return /* @__PURE__ */ T("div", {
|
|
489
487
|
className: "flex items-center justify-center min-h-[400px]",
|
|
490
|
-
children: /* @__PURE__ */
|
|
488
|
+
children: /* @__PURE__ */ E("div", {
|
|
491
489
|
className: "text-center space-y-2",
|
|
492
|
-
children: [/* @__PURE__ */
|
|
490
|
+
children: [/* @__PURE__ */ T("h2", {
|
|
493
491
|
className: "text-lg font-semibold text-foreground",
|
|
494
492
|
children: "Access Denied"
|
|
495
|
-
}), /* @__PURE__ */
|
|
493
|
+
}), /* @__PURE__ */ T("p", {
|
|
496
494
|
className: "text-sm text-text-secondary",
|
|
497
495
|
children: "You don't have permission to access this page."
|
|
498
496
|
})]
|
|
@@ -500,7 +498,7 @@ function ft() {
|
|
|
500
498
|
});
|
|
501
499
|
let $ = () => {
|
|
502
500
|
O("/agents");
|
|
503
|
-
},
|
|
501
|
+
}, En = async (e) => {
|
|
504
502
|
if (!(!F?.id || A)) {
|
|
505
503
|
bt(e), St(null);
|
|
506
504
|
try {
|
|
@@ -514,9 +512,9 @@ function ft() {
|
|
|
514
512
|
bt(null);
|
|
515
513
|
}
|
|
516
514
|
}
|
|
517
|
-
},
|
|
515
|
+
}, Dn = () => void En("start"), On = () => void En("stop"), kn = () => {
|
|
518
516
|
j(null), Et(!0);
|
|
519
|
-
},
|
|
517
|
+
}, An = async () => {
|
|
520
518
|
if (!F?.id) return;
|
|
521
519
|
let e = Nt.current?.value?.trim(), t = Pt.current?.value?.trim(), n = Ft.current?.value?.trim(), r = It.current?.value?.trim(), i = Lt.current?.value?.trim();
|
|
522
520
|
if (!e) {
|
|
@@ -547,101 +545,101 @@ function ft() {
|
|
|
547
545
|
} finally {
|
|
548
546
|
kt(!1);
|
|
549
547
|
}
|
|
550
|
-
},
|
|
548
|
+
}, jn = async () => {
|
|
551
549
|
if (F?.agentApiKey) try {
|
|
552
550
|
await pe(F.agentApiKey), fe() && me("API key copied"), Bt(!0), setTimeout(() => Bt(!1), 2e3);
|
|
553
551
|
} catch {
|
|
554
552
|
console.error("Failed to copy API key");
|
|
555
553
|
}
|
|
556
|
-
},
|
|
554
|
+
}, Mn = async () => {
|
|
557
555
|
if (F?.id && window.confirm(k("agentDetails.removeAgentConfirm", "Are you sure you want to remove agent \"{{name}}\"?", { name: F.name }))) try {
|
|
558
556
|
await gt({ variables: { id: F.id } }), $();
|
|
559
557
|
} catch (e) {
|
|
560
558
|
console.error("Failed to remove agent:", e);
|
|
561
559
|
}
|
|
562
|
-
},
|
|
560
|
+
}, Nn = (e) => {
|
|
563
561
|
O(`/sessions/${e}`);
|
|
564
|
-
},
|
|
562
|
+
}, Pn = (e) => {
|
|
565
563
|
O(`/vibes/${e}`);
|
|
566
|
-
},
|
|
564
|
+
}, Fn = (e) => {
|
|
567
565
|
if (!e) return k("health.never", "Never");
|
|
568
566
|
let t = Date.now() - new Date(e).getTime();
|
|
569
567
|
return t < 6e4 ? k("health.justNow", "Just now") : t < 36e5 ? k("agentDetails.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? k("agentDetails.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : new Date(e).toLocaleDateString();
|
|
570
568
|
};
|
|
571
|
-
if (Ht && !F) return /* @__PURE__ */ D
|
|
569
|
+
if (Ht && !F) return /* @__PURE__ */ E(D, {
|
|
572
570
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
573
|
-
children: [/* @__PURE__ */
|
|
571
|
+
children: [/* @__PURE__ */ E("button", {
|
|
574
572
|
onClick: $,
|
|
575
573
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
576
|
-
children: [/* @__PURE__ */
|
|
577
|
-
}), /* @__PURE__ */
|
|
574
|
+
children: [/* @__PURE__ */ T(g, { className: "w-4 h-4" }), k("agentDetails.backToAgents", "Back to Agents")]
|
|
575
|
+
}), /* @__PURE__ */ T(ve, { variant: "detail" })]
|
|
578
576
|
});
|
|
579
|
-
if (Ut && !F) return /* @__PURE__ */ D
|
|
577
|
+
if (Ut && !F) return /* @__PURE__ */ E(D, {
|
|
580
578
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
581
|
-
children: [/* @__PURE__ */
|
|
579
|
+
children: [/* @__PURE__ */ E("button", {
|
|
582
580
|
onClick: $,
|
|
583
581
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
584
|
-
children: [/* @__PURE__ */
|
|
585
|
-
}), /* @__PURE__ */
|
|
582
|
+
children: [/* @__PURE__ */ T(g, { className: "w-4 h-4" }), k("agentDetails.backToAgents", "Back to Agents")]
|
|
583
|
+
}), /* @__PURE__ */ T(ce, {
|
|
586
584
|
title: k("agentDetails.failedLoad", "Failed to load agent"),
|
|
587
585
|
message: Ut.message,
|
|
588
586
|
onRetry: () => P()
|
|
589
587
|
})]
|
|
590
588
|
});
|
|
591
|
-
if (!F) return /* @__PURE__ */ D
|
|
589
|
+
if (!F) return /* @__PURE__ */ E(D, {
|
|
592
590
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
593
|
-
children: [/* @__PURE__ */
|
|
591
|
+
children: [/* @__PURE__ */ E("button", {
|
|
594
592
|
onClick: $,
|
|
595
593
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
596
|
-
children: [/* @__PURE__ */
|
|
597
|
-
}), /* @__PURE__ */
|
|
598
|
-
icon: /* @__PURE__ */
|
|
594
|
+
children: [/* @__PURE__ */ T(g, { className: "w-4 h-4" }), k("agentDetails.backToAgents", "Back to Agents")]
|
|
595
|
+
}), /* @__PURE__ */ T(he, {
|
|
596
|
+
icon: /* @__PURE__ */ T(Qe, { className: "w-8 h-8 text-text-secondary" }),
|
|
599
597
|
title: k("agentDetails.notFound", "Agent not found"),
|
|
600
|
-
description: `${k("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${
|
|
601
|
-
action: /* @__PURE__ */
|
|
598
|
+
description: `${k("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${_}" ${k("agentDetails.notFoundDescriptionSuffix", "exists")}`,
|
|
599
|
+
action: /* @__PURE__ */ T("button", {
|
|
602
600
|
onClick: $,
|
|
603
601
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
604
602
|
children: k("agentDetails.backToAgents", "Back to Agents")
|
|
605
603
|
})
|
|
606
604
|
})]
|
|
607
605
|
});
|
|
608
|
-
let
|
|
606
|
+
let In = [
|
|
609
607
|
{
|
|
610
608
|
id: "overview",
|
|
611
609
|
label: k("nav.overview", "Overview"),
|
|
612
|
-
icon:
|
|
610
|
+
icon: Qe
|
|
613
611
|
},
|
|
614
612
|
{
|
|
615
613
|
id: "profiles",
|
|
616
614
|
label: k("agentDetails.profiles", "Profiles"),
|
|
617
|
-
icon:
|
|
615
|
+
icon: at
|
|
618
616
|
},
|
|
619
617
|
{
|
|
620
618
|
id: "security",
|
|
621
619
|
label: k("agentDetails.security", "Security"),
|
|
622
|
-
icon:
|
|
620
|
+
icon: et
|
|
623
621
|
},
|
|
624
622
|
{
|
|
625
623
|
id: "plugins",
|
|
626
624
|
label: k("agentDetails.plugins", "Plugins"),
|
|
627
|
-
icon:
|
|
628
|
-
badge: `${
|
|
625
|
+
icon: y,
|
|
626
|
+
badge: `${V.length}`
|
|
629
627
|
},
|
|
630
628
|
{
|
|
631
629
|
id: "sessions",
|
|
632
630
|
label: k("nav.sessions", "Sessions"),
|
|
633
|
-
icon:
|
|
631
|
+
icon: b,
|
|
634
632
|
badge: `${Z.length}`
|
|
635
633
|
},
|
|
636
634
|
{
|
|
637
635
|
id: "logs",
|
|
638
636
|
label: k("nav.logs", "Logs"),
|
|
639
|
-
icon:
|
|
637
|
+
icon: Xe
|
|
640
638
|
},
|
|
641
639
|
{
|
|
642
640
|
id: "vibes",
|
|
643
641
|
label: k("nav.vibes", "Vibes"),
|
|
644
|
-
icon:
|
|
642
|
+
icon: S,
|
|
645
643
|
badge: `${Q.length}`
|
|
646
644
|
},
|
|
647
645
|
{
|
|
@@ -659,101 +657,101 @@ function ft() {
|
|
|
659
657
|
label: k("agentDetails.backup", "Backup"),
|
|
660
658
|
icon: ze
|
|
661
659
|
}
|
|
662
|
-
],
|
|
663
|
-
return F?.tunnelUrl, /* @__PURE__ */ D
|
|
660
|
+
], Ln = Z.filter((e) => e.status === "RUNNING").length;
|
|
661
|
+
return F?.tunnelUrl, /* @__PURE__ */ E(D, {
|
|
664
662
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
665
663
|
children: [
|
|
666
|
-
At && /* @__PURE__ */
|
|
664
|
+
At && /* @__PURE__ */ T("div", {
|
|
667
665
|
className: "fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-success-bg text-status-success-text px-4 py-3 rounded-md shadow-lg",
|
|
668
666
|
children: At
|
|
669
667
|
}),
|
|
670
|
-
xt && /* @__PURE__ */
|
|
668
|
+
xt && /* @__PURE__ */ T("div", {
|
|
671
669
|
className: "fixed top-16 left-4 right-4 sm:left-auto z-50 bg-status-error-bg text-status-error-text px-4 py-3 rounded-md shadow-lg",
|
|
672
670
|
children: xt
|
|
673
671
|
}),
|
|
674
|
-
/* @__PURE__ */
|
|
672
|
+
/* @__PURE__ */ E("button", {
|
|
675
673
|
onClick: $,
|
|
676
674
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
677
|
-
children: [/* @__PURE__ */
|
|
675
|
+
children: [/* @__PURE__ */ T(g, { className: "w-4 h-4" }), k("agentDetails.backToAgents", "Back to Agents")]
|
|
678
676
|
}),
|
|
679
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ T(se, {
|
|
680
678
|
title: F.name,
|
|
681
679
|
description: F.hostname || k("agentDetails.noHostnameConfigured", "No hostname configured"),
|
|
682
680
|
breadcrumb: [{
|
|
683
681
|
label: k("nav.agents", "Agents"),
|
|
684
682
|
path: ft ? `${ft}/agents` : "/agents"
|
|
685
683
|
}, { label: F.name }],
|
|
686
|
-
actions: /* @__PURE__ */
|
|
684
|
+
actions: /* @__PURE__ */ E("div", {
|
|
687
685
|
className: "flex flex-wrap items-center gap-2",
|
|
688
686
|
children: [
|
|
689
|
-
/* @__PURE__ */
|
|
687
|
+
/* @__PURE__ */ T("button", {
|
|
690
688
|
onClick: () => P(),
|
|
691
689
|
disabled: Ht,
|
|
692
690
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
|
|
693
691
|
title: k("common.refresh", "Refresh"),
|
|
694
|
-
children: /* @__PURE__ */
|
|
692
|
+
children: /* @__PURE__ */ T(Ye, { className: `w-4 h-4 ${Ht ? "animate-spin" : ""}` })
|
|
695
693
|
}),
|
|
696
|
-
Jt ? /* @__PURE__ */
|
|
697
|
-
onClick:
|
|
694
|
+
Jt ? /* @__PURE__ */ E("button", {
|
|
695
|
+
onClick: Dn,
|
|
698
696
|
disabled: A !== null,
|
|
699
697
|
"aria-busy": A === "start",
|
|
700
698
|
className: "flex items-center gap-2 px-3 py-2 bg-status-success-bg text-status-success-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
701
|
-
children: [A === "start" ? /* @__PURE__ */
|
|
702
|
-
}) : /* @__PURE__ */
|
|
703
|
-
onClick:
|
|
699
|
+
children: [A === "start" ? /* @__PURE__ */ T(v, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ T(Je, { className: "w-4 h-4" }), A === "start" ? k("agentDetails.starting", "Starting…") : k("agentDetails.start", "Start")]
|
|
700
|
+
}) : /* @__PURE__ */ E("button", {
|
|
701
|
+
onClick: On,
|
|
704
702
|
disabled: A !== null,
|
|
705
703
|
"aria-busy": A === "stop",
|
|
706
704
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
707
|
-
children: [A === "stop" ? /* @__PURE__ */
|
|
705
|
+
children: [A === "stop" ? /* @__PURE__ */ T(v, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ T(tt, { className: "w-4 h-4" }), A === "stop" ? k("agentDetails.stopping", "Stopping…") : k("sessions.stop", "Stop")]
|
|
708
706
|
}),
|
|
709
|
-
/* @__PURE__ */
|
|
707
|
+
/* @__PURE__ */ T(Ce, {
|
|
710
708
|
tunnelUrl: F.tunnelUrl || null,
|
|
711
709
|
agentApiKey: F.agentApiKey || null,
|
|
712
710
|
profile: L
|
|
713
711
|
}),
|
|
714
|
-
/* @__PURE__ */
|
|
715
|
-
onClick:
|
|
712
|
+
/* @__PURE__ */ E("button", {
|
|
713
|
+
onClick: kn,
|
|
716
714
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
|
|
717
|
-
children: [/* @__PURE__ */
|
|
715
|
+
children: [/* @__PURE__ */ T($e, { className: "w-4 h-4" }), k("agentDetails.configure", "Configure")]
|
|
718
716
|
}),
|
|
719
|
-
/* @__PURE__ */
|
|
720
|
-
onClick:
|
|
717
|
+
/* @__PURE__ */ E("button", {
|
|
718
|
+
onClick: Mn,
|
|
721
719
|
className: "flex items-center gap-2 px-3 py-2 bg-status-error-bg text-status-error-text rounded-md hover:opacity-80 transition-colors",
|
|
722
|
-
children: [/* @__PURE__ */
|
|
720
|
+
children: [/* @__PURE__ */ T(rt, { className: "w-4 h-4" }), k("sessions.remove", "Remove")]
|
|
723
721
|
})
|
|
724
722
|
]
|
|
725
723
|
})
|
|
726
724
|
}),
|
|
727
|
-
/* @__PURE__ */
|
|
725
|
+
/* @__PURE__ */ E("div", {
|
|
728
726
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
|
|
729
727
|
children: [
|
|
730
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ T(u, {
|
|
731
729
|
className: "p-4",
|
|
732
|
-
children: /* @__PURE__ */
|
|
730
|
+
children: /* @__PURE__ */ E("div", {
|
|
733
731
|
className: "flex items-center gap-3",
|
|
734
|
-
children: [/* @__PURE__ */
|
|
732
|
+
children: [/* @__PURE__ */ T("div", {
|
|
735
733
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
736
|
-
children: /* @__PURE__ */
|
|
737
|
-
}), /* @__PURE__ */
|
|
734
|
+
children: /* @__PURE__ */ T(Qe, { className: "w-5 h-5 text-text-secondary" })
|
|
735
|
+
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
738
736
|
className: "text-sm text-text-secondary",
|
|
739
737
|
children: k("sessions.filterStatus", "Status")
|
|
740
|
-
}), /* @__PURE__ */
|
|
738
|
+
}), /* @__PURE__ */ T(xe, {
|
|
741
739
|
status: qt,
|
|
742
740
|
reason: Kt.get(F.id)?.errorMessage ?? (F.lastGatewayAuthPushStatus === "failed" ? F.lastGatewayAuthPushError ?? "Gateway-auth push failed" : null)
|
|
743
741
|
})] })]
|
|
744
742
|
})
|
|
745
743
|
}),
|
|
746
|
-
/* @__PURE__ */
|
|
744
|
+
/* @__PURE__ */ T(u, {
|
|
747
745
|
className: "p-4",
|
|
748
|
-
children: /* @__PURE__ */
|
|
746
|
+
children: /* @__PURE__ */ E("div", {
|
|
749
747
|
className: "flex items-center gap-3",
|
|
750
|
-
children: [/* @__PURE__ */
|
|
748
|
+
children: [/* @__PURE__ */ T("div", {
|
|
751
749
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
752
|
-
children: /* @__PURE__ */
|
|
753
|
-
}), /* @__PURE__ */
|
|
750
|
+
children: /* @__PURE__ */ T(Re, { className: "w-5 h-5 text-text-secondary" })
|
|
751
|
+
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
754
752
|
className: "text-sm text-text-secondary",
|
|
755
753
|
children: k("analytics.platform", "Platform")
|
|
756
|
-
}), /* @__PURE__ */
|
|
754
|
+
}), /* @__PURE__ */ E("p", {
|
|
757
755
|
className: "font-semibold text-text-primary",
|
|
758
756
|
children: [
|
|
759
757
|
F.platform,
|
|
@@ -763,36 +761,36 @@ function ft() {
|
|
|
763
761
|
})] })]
|
|
764
762
|
})
|
|
765
763
|
}),
|
|
766
|
-
/* @__PURE__ */
|
|
764
|
+
/* @__PURE__ */ T(u, {
|
|
767
765
|
className: "p-4",
|
|
768
|
-
children: /* @__PURE__ */
|
|
766
|
+
children: /* @__PURE__ */ E("div", {
|
|
769
767
|
className: "flex items-center gap-3",
|
|
770
|
-
children: [/* @__PURE__ */
|
|
768
|
+
children: [/* @__PURE__ */ T("div", {
|
|
771
769
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
772
|
-
children: /* @__PURE__ */
|
|
773
|
-
}), /* @__PURE__ */
|
|
770
|
+
children: /* @__PURE__ */ T(We, { className: "w-5 h-5 text-text-secondary" })
|
|
771
|
+
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
774
772
|
className: "text-sm text-text-secondary",
|
|
775
773
|
children: k("agentDetails.version", "Version")
|
|
776
|
-
}), /* @__PURE__ */
|
|
774
|
+
}), /* @__PURE__ */ E("p", {
|
|
777
775
|
className: "font-semibold text-text-primary",
|
|
778
776
|
children: ["v", F.version]
|
|
779
777
|
})] })]
|
|
780
778
|
})
|
|
781
779
|
}),
|
|
782
|
-
/* @__PURE__ */
|
|
780
|
+
/* @__PURE__ */ T(u, {
|
|
783
781
|
className: "p-4",
|
|
784
|
-
children: /* @__PURE__ */
|
|
782
|
+
children: /* @__PURE__ */ E("div", {
|
|
785
783
|
className: "flex items-center gap-3",
|
|
786
|
-
children: [/* @__PURE__ */
|
|
784
|
+
children: [/* @__PURE__ */ T("div", {
|
|
787
785
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
788
|
-
children: /* @__PURE__ */
|
|
789
|
-
}), /* @__PURE__ */
|
|
786
|
+
children: /* @__PURE__ */ T(b, { className: "w-5 h-5 text-text-secondary" })
|
|
787
|
+
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
790
788
|
className: "text-sm text-text-secondary",
|
|
791
789
|
children: k("nav.sessions", "Sessions")
|
|
792
|
-
}), /* @__PURE__ */
|
|
790
|
+
}), /* @__PURE__ */ E("p", {
|
|
793
791
|
className: "font-semibold text-text-primary",
|
|
794
792
|
children: [
|
|
795
|
-
|
|
793
|
+
Ln,
|
|
796
794
|
" ",
|
|
797
795
|
k("health.active", "active")
|
|
798
796
|
]
|
|
@@ -801,32 +799,32 @@ function ft() {
|
|
|
801
799
|
})
|
|
802
800
|
]
|
|
803
801
|
}),
|
|
804
|
-
/* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ T("div", {
|
|
805
803
|
className: "border-b border-border-default",
|
|
806
|
-
children: /* @__PURE__ */
|
|
804
|
+
children: /* @__PURE__ */ E("nav", {
|
|
807
805
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
808
806
|
"aria-label": k("agentDetails.tabsAriaLabel", "Agent tabs"),
|
|
809
807
|
children: [
|
|
810
|
-
|
|
811
|
-
let t = e.icon, n =
|
|
812
|
-
return /* @__PURE__ */
|
|
808
|
+
In.map((e) => {
|
|
809
|
+
let t = e.icon, n = B === e.id;
|
|
810
|
+
return /* @__PURE__ */ E("button", {
|
|
813
811
|
onClick: () => Xt(e.id),
|
|
814
812
|
className: `flex shrink-0 items-center gap-1.5 px-3 py-2.5 text-xs sm:gap-2 sm:px-4 sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${n ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
|
|
815
813
|
"aria-selected": n,
|
|
816
814
|
role: "tab",
|
|
817
815
|
children: [
|
|
818
|
-
/* @__PURE__ */
|
|
816
|
+
/* @__PURE__ */ T(t, { className: "w-4 h-4" }),
|
|
819
817
|
e.label,
|
|
820
|
-
e.badge && /* @__PURE__ */
|
|
818
|
+
e.badge && /* @__PURE__ */ T("span", {
|
|
821
819
|
className: `hidden rounded-full px-1.5 py-0.5 text-[10px] sm:inline-flex sm:text-xs ${n ? "bg-action-primary-bg/10 text-action-primary-bg" : "bg-bg-sunken text-text-muted"}`,
|
|
822
820
|
children: e.badge
|
|
823
821
|
})
|
|
824
822
|
]
|
|
825
823
|
}, e.id);
|
|
826
824
|
}),
|
|
827
|
-
|
|
828
|
-
let t =
|
|
829
|
-
return /* @__PURE__ */
|
|
825
|
+
R && z.data.map((e) => {
|
|
826
|
+
let t = B === e.contribution.id;
|
|
827
|
+
return /* @__PURE__ */ T("button", {
|
|
830
828
|
onClick: () => Xt(e.contribution.id),
|
|
831
829
|
className: `flex shrink-0 items-center gap-1.5 px-3 py-2.5 text-xs sm:gap-2 sm:px-4 sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${t ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
|
|
832
830
|
"aria-selected": t,
|
|
@@ -835,16 +833,16 @@ function ft() {
|
|
|
835
833
|
children: e.contribution.title
|
|
836
834
|
}, `plugin-${e.contribution.id}`);
|
|
837
835
|
}),
|
|
838
|
-
|
|
836
|
+
R && F && /* @__PURE__ */ E("button", {
|
|
839
837
|
type: "button",
|
|
840
838
|
onClick: () => Qt(!0),
|
|
841
839
|
className: "flex shrink-0 items-center gap-1 px-2 py-2 text-xs sm:text-sm border-b-2 border-transparent text-text-secondary hover:text-text-primary hover:border-border-default",
|
|
842
840
|
title: "Install a UI plugin tab",
|
|
843
841
|
"aria-label": "Add tab",
|
|
844
|
-
children: [/* @__PURE__ */
|
|
842
|
+
children: [/* @__PURE__ */ T("span", {
|
|
845
843
|
"aria-hidden": !0,
|
|
846
844
|
children: "+"
|
|
847
|
-
}), /* @__PURE__ */
|
|
845
|
+
}), /* @__PURE__ */ T("span", {
|
|
848
846
|
className: "hidden sm:inline",
|
|
849
847
|
children: "Add tab"
|
|
850
848
|
})]
|
|
@@ -852,10 +850,10 @@ function ft() {
|
|
|
852
850
|
]
|
|
853
851
|
})
|
|
854
852
|
}),
|
|
855
|
-
/* @__PURE__ */
|
|
853
|
+
/* @__PURE__ */ E(ct, {
|
|
856
854
|
mode: "wait",
|
|
857
855
|
children: [
|
|
858
|
-
|
|
856
|
+
B === "overview" && /* @__PURE__ */ E(C.div, {
|
|
859
857
|
initial: {
|
|
860
858
|
opacity: 0,
|
|
861
859
|
y: 8
|
|
@@ -871,62 +869,62 @@ function ft() {
|
|
|
871
869
|
transition: { duration: .2 },
|
|
872
870
|
className: "space-y-6",
|
|
873
871
|
children: [
|
|
874
|
-
/* @__PURE__ */
|
|
872
|
+
/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
875
873
|
className: "p-4 border-b border-border-default",
|
|
876
|
-
children: /* @__PURE__ */
|
|
874
|
+
children: /* @__PURE__ */ E("h3", {
|
|
877
875
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
878
|
-
children: [/* @__PURE__ */
|
|
876
|
+
children: [/* @__PURE__ */ T(Pe, { className: "w-5 h-5" }), k("agentDetails.capabilities", "Capabilities")]
|
|
879
877
|
})
|
|
880
|
-
}), /* @__PURE__ */
|
|
878
|
+
}), /* @__PURE__ */ T("div", {
|
|
881
879
|
className: "p-4",
|
|
882
|
-
children: /* @__PURE__ */
|
|
880
|
+
children: /* @__PURE__ */ T("div", {
|
|
883
881
|
className: "flex flex-wrap gap-2",
|
|
884
882
|
children: F.capabilities && typeof F.capabilities == "object" && (Array.isArray(F.capabilities) ? F.capabilities.length > 0 : Object.keys(F.capabilities).length > 0) ? (Array.isArray(F.capabilities) ? F.capabilities : (() => {
|
|
885
883
|
let e = F.capabilities, t = Object.keys(e);
|
|
886
884
|
return t.length > 0 && t.every((e) => /^\d+$/.test(e)) ? Object.values(e) : t;
|
|
887
|
-
})()).map((e) => /* @__PURE__ */
|
|
885
|
+
})()).map((e) => /* @__PURE__ */ T("span", {
|
|
888
886
|
className: "px-3 py-1 bg-bg-sunken text-text-primary text-sm rounded-full",
|
|
889
887
|
children: e
|
|
890
|
-
}, e)) : /* @__PURE__ */
|
|
888
|
+
}, e)) : /* @__PURE__ */ E("div", {
|
|
891
889
|
className: "space-y-2 text-sm text-text-secondary",
|
|
892
890
|
children: [
|
|
893
|
-
/* @__PURE__ */
|
|
894
|
-
/* @__PURE__ */
|
|
891
|
+
/* @__PURE__ */ T("p", { children: k("agentDetails.noCapabilitiesConfigured", "No capabilities configured") }),
|
|
892
|
+
/* @__PURE__ */ E("p", {
|
|
895
893
|
className: "text-xs",
|
|
896
894
|
children: [
|
|
897
895
|
"Capabilities are feature tags the agent advertises to vibes (e.g.",
|
|
898
896
|
" ",
|
|
899
|
-
/* @__PURE__ */
|
|
897
|
+
/* @__PURE__ */ T("code", {
|
|
900
898
|
className: "text-text-primary",
|
|
901
899
|
children: "docker"
|
|
902
900
|
}),
|
|
903
901
|
",",
|
|
904
902
|
" ",
|
|
905
|
-
/* @__PURE__ */
|
|
903
|
+
/* @__PURE__ */ T("code", {
|
|
906
904
|
className: "text-text-primary",
|
|
907
905
|
children: "gpu"
|
|
908
906
|
}),
|
|
909
907
|
",",
|
|
910
908
|
" ",
|
|
911
|
-
/* @__PURE__ */
|
|
909
|
+
/* @__PURE__ */ T("code", {
|
|
912
910
|
className: "text-text-primary",
|
|
913
911
|
children: "node20"
|
|
914
912
|
}),
|
|
915
913
|
",",
|
|
916
914
|
" ",
|
|
917
|
-
/* @__PURE__ */
|
|
915
|
+
/* @__PURE__ */ T("code", {
|
|
918
916
|
className: "text-text-primary",
|
|
919
917
|
children: "git"
|
|
920
918
|
}),
|
|
921
919
|
"). Vibes use them to pick an agent that can run their workloads."
|
|
922
920
|
]
|
|
923
921
|
}),
|
|
924
|
-
/* @__PURE__ */
|
|
922
|
+
/* @__PURE__ */ E("p", {
|
|
925
923
|
className: "text-xs",
|
|
926
924
|
children: [
|
|
927
925
|
"Add from the agent host CLI:",
|
|
928
926
|
" ",
|
|
929
|
-
/* @__PURE__ */
|
|
927
|
+
/* @__PURE__ */ T("code", {
|
|
930
928
|
className: "text-text-primary",
|
|
931
929
|
children: "vibe agent caps add docker gpu"
|
|
932
930
|
}),
|
|
@@ -937,33 +935,33 @@ function ft() {
|
|
|
937
935
|
})
|
|
938
936
|
})
|
|
939
937
|
})] }),
|
|
940
|
-
/* @__PURE__ */
|
|
938
|
+
/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
941
939
|
className: "p-4 border-b border-border-default",
|
|
942
|
-
children: /* @__PURE__ */
|
|
940
|
+
children: /* @__PURE__ */ E("h3", {
|
|
943
941
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
944
|
-
children: [/* @__PURE__ */
|
|
942
|
+
children: [/* @__PURE__ */ T(nt, { className: "w-5 h-5" }), "Tags"]
|
|
945
943
|
})
|
|
946
|
-
}), /* @__PURE__ */
|
|
944
|
+
}), /* @__PURE__ */ T("div", {
|
|
947
945
|
className: "p-4",
|
|
948
|
-
children: /* @__PURE__ */
|
|
946
|
+
children: /* @__PURE__ */ T(de, {
|
|
949
947
|
entityType: "VIBECONTROLS_AGENT",
|
|
950
948
|
entityId: F.id
|
|
951
949
|
})
|
|
952
950
|
})] }),
|
|
953
|
-
F.tunnelUrl && /* @__PURE__ */
|
|
951
|
+
F.tunnelUrl && /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
954
952
|
className: "p-4 border-b border-border-default",
|
|
955
|
-
children: /* @__PURE__ */
|
|
953
|
+
children: /* @__PURE__ */ E("h3", {
|
|
956
954
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
957
|
-
children: [/* @__PURE__ */
|
|
955
|
+
children: [/* @__PURE__ */ T(S, { className: "w-5 h-5" }), k("health.tunnel", "Tunnel")]
|
|
958
956
|
})
|
|
959
|
-
}), /* @__PURE__ */
|
|
957
|
+
}), /* @__PURE__ */ T("div", {
|
|
960
958
|
className: "p-4",
|
|
961
|
-
children: /* @__PURE__ */
|
|
959
|
+
children: /* @__PURE__ */ E("div", {
|
|
962
960
|
className: "flex-1 min-w-0",
|
|
963
|
-
children: [/* @__PURE__ */
|
|
961
|
+
children: [/* @__PURE__ */ T("p", {
|
|
964
962
|
className: "text-sm text-text-secondary mb-1",
|
|
965
963
|
children: k("agentDetails.tunnelUrl", "Tunnel URL")
|
|
966
|
-
}), /* @__PURE__ */
|
|
964
|
+
}), /* @__PURE__ */ T("a", {
|
|
967
965
|
href: F.tunnelUrl,
|
|
968
966
|
target: "_blank",
|
|
969
967
|
rel: "noopener noreferrer",
|
|
@@ -972,85 +970,85 @@ function ft() {
|
|
|
972
970
|
})]
|
|
973
971
|
})
|
|
974
972
|
})] }),
|
|
975
|
-
/* @__PURE__ */
|
|
973
|
+
/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
976
974
|
className: "p-4 border-b border-border-default",
|
|
977
|
-
children: /* @__PURE__ */
|
|
975
|
+
children: /* @__PURE__ */ E("h3", {
|
|
978
976
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
979
|
-
children: [/* @__PURE__ */
|
|
977
|
+
children: [/* @__PURE__ */ T($e, { className: "w-5 h-5" }), k("agentDetails.configuration", "Configuration")]
|
|
980
978
|
})
|
|
981
|
-
}), /* @__PURE__ */
|
|
979
|
+
}), /* @__PURE__ */ E("div", {
|
|
982
980
|
className: "p-4 space-y-4",
|
|
983
|
-
children: [/* @__PURE__ */
|
|
981
|
+
children: [/* @__PURE__ */ E("div", {
|
|
984
982
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
985
983
|
children: [
|
|
986
|
-
/* @__PURE__ */
|
|
984
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
987
985
|
className: "text-sm text-text-secondary",
|
|
988
986
|
children: k("analytics.platform", "Platform")
|
|
989
|
-
}), /* @__PURE__ */
|
|
987
|
+
}), /* @__PURE__ */ T("p", {
|
|
990
988
|
className: "font-medium text-text-primary",
|
|
991
989
|
children: F.platform
|
|
992
990
|
})] }),
|
|
993
|
-
/* @__PURE__ */
|
|
991
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
994
992
|
className: "text-sm text-text-secondary",
|
|
995
993
|
children: k("analytics.architecture", "Architecture")
|
|
996
|
-
}), /* @__PURE__ */
|
|
994
|
+
}), /* @__PURE__ */ T("p", {
|
|
997
995
|
className: "font-medium text-text-primary",
|
|
998
996
|
children: F.architecture
|
|
999
997
|
})] }),
|
|
1000
|
-
/* @__PURE__ */
|
|
998
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1001
999
|
className: "text-sm text-text-secondary",
|
|
1002
1000
|
children: k("agentDetails.version", "Version")
|
|
1003
|
-
}), /* @__PURE__ */
|
|
1001
|
+
}), /* @__PURE__ */ T("p", {
|
|
1004
1002
|
className: "font-medium text-text-primary",
|
|
1005
1003
|
children: F.version
|
|
1006
1004
|
})] })
|
|
1007
1005
|
]
|
|
1008
|
-
}), F.aiContext && /* @__PURE__ */
|
|
1006
|
+
}), F.aiContext && /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1009
1007
|
className: "text-sm text-text-secondary mb-1",
|
|
1010
1008
|
children: "AI Context"
|
|
1011
|
-
}), /* @__PURE__ */
|
|
1009
|
+
}), /* @__PURE__ */ T("pre", {
|
|
1012
1010
|
className: "text-sm text-text-primary bg-bg-sunken border border-border-default rounded-md p-3 whitespace-pre-wrap font-sans",
|
|
1013
1011
|
children: F.aiContext
|
|
1014
1012
|
})] })]
|
|
1015
1013
|
})] }),
|
|
1016
|
-
/* @__PURE__ */
|
|
1014
|
+
/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1017
1015
|
className: "p-4 border-b border-border-default",
|
|
1018
|
-
children: /* @__PURE__ */
|
|
1016
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1019
1017
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1020
|
-
children: [/* @__PURE__ */
|
|
1018
|
+
children: [/* @__PURE__ */ T(Fe, { className: "w-5 h-5" }), k("vibeDetails.timeline", "Timeline")]
|
|
1021
1019
|
})
|
|
1022
|
-
}), /* @__PURE__ */
|
|
1020
|
+
}), /* @__PURE__ */ T("div", {
|
|
1023
1021
|
className: "p-4",
|
|
1024
|
-
children: /* @__PURE__ */
|
|
1022
|
+
children: /* @__PURE__ */ E("div", {
|
|
1025
1023
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 text-sm",
|
|
1026
1024
|
children: [
|
|
1027
|
-
/* @__PURE__ */
|
|
1025
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1028
1026
|
className: "text-text-secondary",
|
|
1029
1027
|
children: k("health.lastHeartbeat", "Last Heartbeat")
|
|
1030
|
-
}), /* @__PURE__ */
|
|
1028
|
+
}), /* @__PURE__ */ T("p", {
|
|
1031
1029
|
className: "font-medium text-text-primary",
|
|
1032
|
-
children:
|
|
1030
|
+
children: Fn(F.lastHeartbeat)
|
|
1033
1031
|
})] }),
|
|
1034
|
-
/* @__PURE__ */
|
|
1032
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1035
1033
|
className: "text-text-secondary",
|
|
1036
1034
|
children: k("vibeDetails.created", "Created")
|
|
1037
|
-
}), /* @__PURE__ */
|
|
1035
|
+
}), /* @__PURE__ */ T("p", {
|
|
1038
1036
|
className: "font-medium text-text-primary",
|
|
1039
|
-
children:
|
|
1037
|
+
children: Fn(F.createdAt)
|
|
1040
1038
|
})] }),
|
|
1041
|
-
/* @__PURE__ */
|
|
1039
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1042
1040
|
className: "text-text-secondary",
|
|
1043
1041
|
children: k("vibeDetails.updated", "Updated")
|
|
1044
|
-
}), /* @__PURE__ */
|
|
1042
|
+
}), /* @__PURE__ */ T("p", {
|
|
1045
1043
|
className: "font-medium text-text-primary",
|
|
1046
|
-
children:
|
|
1044
|
+
children: Fn(F.updatedAt)
|
|
1047
1045
|
})] })
|
|
1048
1046
|
]
|
|
1049
1047
|
})
|
|
1050
1048
|
})] })
|
|
1051
1049
|
]
|
|
1052
1050
|
}, "overview"),
|
|
1053
|
-
|
|
1051
|
+
B === "profiles" && /* @__PURE__ */ T(C.div, {
|
|
1054
1052
|
initial: {
|
|
1055
1053
|
opacity: 0,
|
|
1056
1054
|
y: 8
|
|
@@ -1064,9 +1062,9 @@ function ft() {
|
|
|
1064
1062
|
y: -8
|
|
1065
1063
|
},
|
|
1066
1064
|
transition: { duration: .2 },
|
|
1067
|
-
children: /* @__PURE__ */
|
|
1065
|
+
children: /* @__PURE__ */ T(Ee, { agentId: F.id })
|
|
1068
1066
|
}, "profiles"),
|
|
1069
|
-
|
|
1067
|
+
B === "security" && /* @__PURE__ */ E(C.div, {
|
|
1070
1068
|
initial: {
|
|
1071
1069
|
opacity: 0,
|
|
1072
1070
|
y: 8
|
|
@@ -1082,35 +1080,35 @@ function ft() {
|
|
|
1082
1080
|
transition: { duration: .2 },
|
|
1083
1081
|
className: "space-y-6",
|
|
1084
1082
|
children: [
|
|
1085
|
-
F.tunnelUrl && F.agentApiKey && /* @__PURE__ */
|
|
1083
|
+
F.tunnelUrl && F.agentApiKey && /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1086
1084
|
className: "p-4 border-b border-border-default",
|
|
1087
|
-
children: /* @__PURE__ */
|
|
1085
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1088
1086
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1089
|
-
children: [/* @__PURE__ */
|
|
1087
|
+
children: [/* @__PURE__ */ T(Ge, { className: "w-5 h-5" }), k("agentDetails.apiAuthentication", "API Authentication")]
|
|
1090
1088
|
})
|
|
1091
|
-
}), /* @__PURE__ */
|
|
1089
|
+
}), /* @__PURE__ */ E("div", {
|
|
1092
1090
|
className: "p-4 space-y-3",
|
|
1093
1091
|
children: [
|
|
1094
|
-
/* @__PURE__ */
|
|
1092
|
+
/* @__PURE__ */ T("p", {
|
|
1095
1093
|
className: "text-sm text-text-secondary",
|
|
1096
1094
|
children: k("agentDetails.apiAuthenticationDescription", "All requests to the agent (except health checks) require authentication. You can pass the API key in two ways:")
|
|
1097
1095
|
}),
|
|
1098
|
-
/* @__PURE__ */
|
|
1096
|
+
/* @__PURE__ */ E("div", {
|
|
1099
1097
|
className: "space-y-2",
|
|
1100
|
-
children: [/* @__PURE__ */
|
|
1098
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1101
1099
|
className: "text-xs font-medium text-text-primary mb-1",
|
|
1102
1100
|
children: k("agentDetails.authHeaderRecommended", "Header (recommended)")
|
|
1103
|
-
}), /* @__PURE__ */
|
|
1101
|
+
}), /* @__PURE__ */ E("code", {
|
|
1104
1102
|
className: "block text-xs font-mono bg-bg-sunken px-3 py-2 rounded-md text-text-primary overflow-x-auto",
|
|
1105
1103
|
children: [
|
|
1106
1104
|
"x-agent-api-key: ",
|
|
1107
1105
|
F.agentApiKey.slice(0, 12),
|
|
1108
1106
|
"..."
|
|
1109
1107
|
]
|
|
1110
|
-
})] }), /* @__PURE__ */
|
|
1108
|
+
})] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
1111
1109
|
className: "text-xs font-medium text-text-primary mb-1",
|
|
1112
1110
|
children: k("agentDetails.authQueryParameter", "URL query parameter")
|
|
1113
|
-
}), /* @__PURE__ */
|
|
1111
|
+
}), /* @__PURE__ */ E("code", {
|
|
1114
1112
|
className: "block text-xs font-mono bg-bg-sunken px-3 py-2 rounded-md text-text-primary overflow-x-auto break-all",
|
|
1115
1113
|
children: [
|
|
1116
1114
|
F.tunnelUrl,
|
|
@@ -1120,19 +1118,19 @@ function ft() {
|
|
|
1120
1118
|
]
|
|
1121
1119
|
})] })]
|
|
1122
1120
|
}),
|
|
1123
|
-
/* @__PURE__ */
|
|
1121
|
+
/* @__PURE__ */ E("p", {
|
|
1124
1122
|
className: "text-xs text-text-muted",
|
|
1125
1123
|
children: [
|
|
1126
1124
|
k("agentDetails.authExemptPrefix", "The"),
|
|
1127
1125
|
" ",
|
|
1128
|
-
/* @__PURE__ */
|
|
1126
|
+
/* @__PURE__ */ T("code", {
|
|
1129
1127
|
className: "font-mono",
|
|
1130
1128
|
children: "/health"
|
|
1131
1129
|
}),
|
|
1132
1130
|
" ",
|
|
1133
1131
|
k("agentDetails.authExemptAnd", "and"),
|
|
1134
1132
|
" ",
|
|
1135
|
-
/* @__PURE__ */
|
|
1133
|
+
/* @__PURE__ */ T("code", {
|
|
1136
1134
|
className: "font-mono",
|
|
1137
1135
|
children: "/api/agent/identity"
|
|
1138
1136
|
}),
|
|
@@ -1142,58 +1140,58 @@ function ft() {
|
|
|
1142
1140
|
})
|
|
1143
1141
|
]
|
|
1144
1142
|
})] }),
|
|
1145
|
-
/* @__PURE__ */
|
|
1143
|
+
/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1146
1144
|
className: "p-4 border-b border-border-default",
|
|
1147
|
-
children: /* @__PURE__ */
|
|
1145
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1148
1146
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1149
|
-
children: [/* @__PURE__ */
|
|
1147
|
+
children: [/* @__PURE__ */ T(Ke, { className: "w-5 h-5" }), k("agentDetails.agentApiKey", "Agent API Key")]
|
|
1150
1148
|
})
|
|
1151
|
-
}), /* @__PURE__ */
|
|
1149
|
+
}), /* @__PURE__ */ E("div", {
|
|
1152
1150
|
className: "p-4",
|
|
1153
|
-
children: [F.agentApiKey ? /* @__PURE__ */
|
|
1151
|
+
children: [F.agentApiKey ? /* @__PURE__ */ E("div", {
|
|
1154
1152
|
className: "flex items-center gap-3",
|
|
1155
1153
|
children: [
|
|
1156
|
-
/* @__PURE__ */
|
|
1154
|
+
/* @__PURE__ */ T("div", {
|
|
1157
1155
|
className: "flex-1 min-w-0",
|
|
1158
|
-
children: /* @__PURE__ */
|
|
1156
|
+
children: /* @__PURE__ */ T("code", {
|
|
1159
1157
|
className: "text-sm font-mono text-text-primary bg-bg-sunken px-3 py-2 rounded-md block truncate",
|
|
1160
1158
|
children: N ? F.agentApiKey : "•".repeat(Math.min(F.agentApiKey.length, 32))
|
|
1161
1159
|
})
|
|
1162
1160
|
}),
|
|
1163
|
-
/* @__PURE__ */
|
|
1161
|
+
/* @__PURE__ */ T("button", {
|
|
1164
1162
|
onClick: () => Rt(!N),
|
|
1165
1163
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
1166
1164
|
title: N ? k("agentDetails.hideApiKey", "Hide API key") : k("agentDetails.showApiKey", "Show API key"),
|
|
1167
|
-
children:
|
|
1165
|
+
children: T(N ? He : Ve, { className: "w-4 h-4 text-text-secondary" })
|
|
1168
1166
|
}),
|
|
1169
|
-
/* @__PURE__ */
|
|
1170
|
-
onClick:
|
|
1167
|
+
/* @__PURE__ */ T("button", {
|
|
1168
|
+
onClick: jn,
|
|
1171
1169
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
1172
1170
|
title: k("agentDetails.copyApiKey", "Copy API key"),
|
|
1173
|
-
children: zt ? /* @__PURE__ */
|
|
1171
|
+
children: zt ? /* @__PURE__ */ T(Ne, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ T(Le, { className: "w-4 h-4 text-text-secondary" })
|
|
1174
1172
|
})
|
|
1175
1173
|
]
|
|
1176
|
-
}) : /* @__PURE__ */
|
|
1174
|
+
}) : /* @__PURE__ */ T("p", {
|
|
1177
1175
|
className: "text-sm text-text-secondary",
|
|
1178
1176
|
children: "No API key configured. Set one via the Configure button or agent CLI."
|
|
1179
|
-
}), /* @__PURE__ */
|
|
1177
|
+
}), /* @__PURE__ */ T("p", {
|
|
1180
1178
|
className: "mt-2 text-xs text-text-muted",
|
|
1181
1179
|
children: "This key authenticates requests sent to the agent. It typically changes on each agent restart."
|
|
1182
1180
|
})]
|
|
1183
1181
|
})] }),
|
|
1184
|
-
/* @__PURE__ */
|
|
1182
|
+
/* @__PURE__ */ T(dt, {
|
|
1185
1183
|
agent: F,
|
|
1186
1184
|
onUpdate: () => P()
|
|
1187
1185
|
})
|
|
1188
1186
|
]
|
|
1189
1187
|
}, "security"),
|
|
1190
|
-
|
|
1191
|
-
let e =
|
|
1188
|
+
B === "plugins" && (() => {
|
|
1189
|
+
let e = q.toLowerCase(), t = V.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 = rn.filter((t) => !t.installed && (!e || t.name.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e) || t.description.toLowerCase().includes(e))), r = V.filter((e) => e.hasUI), i = r.filter((t) => !e || t.pluginName.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e)), a = [
|
|
1192
1190
|
{
|
|
1193
1191
|
id: "installed",
|
|
1194
1192
|
label: "Installed",
|
|
1195
1193
|
count: t.length,
|
|
1196
|
-
icon:
|
|
1194
|
+
icon: y
|
|
1197
1195
|
},
|
|
1198
1196
|
{
|
|
1199
1197
|
id: "available",
|
|
@@ -1204,17 +1202,17 @@ function ft() {
|
|
|
1204
1202
|
{
|
|
1205
1203
|
id: "store",
|
|
1206
1204
|
label: "Store",
|
|
1207
|
-
count:
|
|
1205
|
+
count: J.length,
|
|
1208
1206
|
icon: Be
|
|
1209
1207
|
},
|
|
1210
1208
|
{
|
|
1211
1209
|
id: "ui-plugins",
|
|
1212
1210
|
label: "UI Plugins",
|
|
1213
1211
|
count: i.length,
|
|
1214
|
-
icon:
|
|
1212
|
+
icon: qe
|
|
1215
1213
|
}
|
|
1216
1214
|
];
|
|
1217
|
-
return /* @__PURE__ */
|
|
1215
|
+
return /* @__PURE__ */ T(C.div, {
|
|
1218
1216
|
initial: {
|
|
1219
1217
|
opacity: 0,
|
|
1220
1218
|
y: 8
|
|
@@ -1229,65 +1227,65 @@ function ft() {
|
|
|
1229
1227
|
},
|
|
1230
1228
|
transition: { duration: .2 },
|
|
1231
1229
|
className: "space-y-6",
|
|
1232
|
-
children: /* @__PURE__ */
|
|
1230
|
+
children: /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ E("div", {
|
|
1233
1231
|
className: "p-4 border-b border-border-default space-y-3",
|
|
1234
1232
|
children: [
|
|
1235
|
-
/* @__PURE__ */
|
|
1233
|
+
/* @__PURE__ */ E("div", {
|
|
1236
1234
|
className: "flex items-center justify-between",
|
|
1237
|
-
children: [/* @__PURE__ */
|
|
1235
|
+
children: [/* @__PURE__ */ E("h3", {
|
|
1238
1236
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1239
1237
|
children: [
|
|
1240
|
-
/* @__PURE__ */
|
|
1238
|
+
/* @__PURE__ */ T(y, { className: "w-5 h-5" }),
|
|
1241
1239
|
"Plugins",
|
|
1242
|
-
|
|
1240
|
+
V.length > 0 && /* @__PURE__ */ E("span", {
|
|
1243
1241
|
className: "text-sm font-normal text-text-secondary",
|
|
1244
1242
|
children: [
|
|
1245
1243
|
"(",
|
|
1246
|
-
|
|
1244
|
+
V.filter((e) => e.isCore).length,
|
|
1247
1245
|
" core,",
|
|
1248
1246
|
" ",
|
|
1249
|
-
|
|
1247
|
+
V.filter((e) => !e.isCore).length,
|
|
1250
1248
|
" external)"
|
|
1251
1249
|
]
|
|
1252
1250
|
})
|
|
1253
1251
|
]
|
|
1254
|
-
}), /* @__PURE__ */
|
|
1252
|
+
}), /* @__PURE__ */ T("button", {
|
|
1255
1253
|
onClick: X,
|
|
1256
1254
|
disabled: on,
|
|
1257
1255
|
className: "p-1.5 text-text-secondary hover:bg-bg-sunken rounded transition-colors disabled:opacity-50",
|
|
1258
1256
|
title: k("agentDetails.refreshPlugins", "Refresh plugins"),
|
|
1259
|
-
children: /* @__PURE__ */
|
|
1257
|
+
children: /* @__PURE__ */ T(Ye, { className: `w-4 h-4 ${on ? "animate-spin" : ""}` })
|
|
1260
1258
|
})]
|
|
1261
1259
|
}),
|
|
1262
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ E("div", {
|
|
1263
1261
|
className: "relative",
|
|
1264
1262
|
children: [
|
|
1265
|
-
/* @__PURE__ */
|
|
1266
|
-
/* @__PURE__ */
|
|
1263
|
+
/* @__PURE__ */ T(Ze, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted" }),
|
|
1264
|
+
/* @__PURE__ */ T("input", {
|
|
1267
1265
|
type: "text",
|
|
1268
|
-
value:
|
|
1266
|
+
value: q,
|
|
1269
1267
|
onChange: (e) => fn(e.target.value),
|
|
1270
1268
|
placeholder: k("agentDetails.searchPluginsPlaceholder", "Search plugins by name, package, description, or tag..."),
|
|
1271
1269
|
className: "w-full pl-9 pr-8 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-1 focus:ring-action-primary-bg focus:border-action-primary-bg"
|
|
1272
1270
|
}),
|
|
1273
|
-
|
|
1271
|
+
q && /* @__PURE__ */ T("button", {
|
|
1274
1272
|
onClick: () => fn(""),
|
|
1275
1273
|
className: "absolute right-2 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-text-secondary rounded",
|
|
1276
|
-
children: /* @__PURE__ */
|
|
1274
|
+
children: /* @__PURE__ */ T(x, { className: "w-3.5 h-3.5" })
|
|
1277
1275
|
})
|
|
1278
1276
|
]
|
|
1279
1277
|
}),
|
|
1280
|
-
/* @__PURE__ */
|
|
1278
|
+
/* @__PURE__ */ T("div", {
|
|
1281
1279
|
className: "flex gap-1 border-b border-border-default -mx-4 overflow-x-auto px-4 pb-1",
|
|
1282
1280
|
children: a.map((e) => {
|
|
1283
|
-
let t =
|
|
1284
|
-
return /* @__PURE__ */
|
|
1285
|
-
onClick: () =>
|
|
1281
|
+
let t = G === e.id, n = e.icon;
|
|
1282
|
+
return /* @__PURE__ */ E("button", {
|
|
1283
|
+
onClick: () => K(e.id),
|
|
1286
1284
|
className: `flex shrink-0 items-center gap-1.5 px-3 py-2 text-xs sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${t ? "border-action-primary-bg text-action-primary-text" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
|
|
1287
1285
|
children: [
|
|
1288
|
-
/* @__PURE__ */
|
|
1286
|
+
/* @__PURE__ */ T(n, { className: "w-3.5 h-3.5" }),
|
|
1289
1287
|
e.label,
|
|
1290
|
-
/* @__PURE__ */
|
|
1288
|
+
/* @__PURE__ */ T("span", {
|
|
1291
1289
|
className: `text-xs px-1.5 py-0.5 rounded-full ${t ? "bg-action-primary-bg/15 text-action-primary-bg" : "bg-bg-secondary text-text-muted"}`,
|
|
1292
1290
|
children: e.count
|
|
1293
1291
|
})
|
|
@@ -1296,107 +1294,89 @@ function ft() {
|
|
|
1296
1294
|
})
|
|
1297
1295
|
})
|
|
1298
1296
|
]
|
|
1299
|
-
}), /* @__PURE__ */
|
|
1297
|
+
}), /* @__PURE__ */ E("div", {
|
|
1300
1298
|
className: "p-4 space-y-4",
|
|
1301
1299
|
children: [
|
|
1302
|
-
cn && /* @__PURE__ */
|
|
1300
|
+
cn && /* @__PURE__ */ E("div", {
|
|
1303
1301
|
className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1304
1302
|
children: [
|
|
1305
|
-
/* @__PURE__ */
|
|
1306
|
-
/* @__PURE__ */
|
|
1303
|
+
/* @__PURE__ */ T(x, { className: "w-4 h-4 flex-shrink-0" }),
|
|
1304
|
+
/* @__PURE__ */ T("span", {
|
|
1307
1305
|
className: "flex-1",
|
|
1308
1306
|
children: cn
|
|
1309
1307
|
}),
|
|
1310
|
-
/* @__PURE__ */
|
|
1311
|
-
onClick: () =>
|
|
1308
|
+
/* @__PURE__ */ T("button", {
|
|
1309
|
+
onClick: () => W(null),
|
|
1312
1310
|
className: "flex-shrink-0 p-0.5 hover:bg-status-error-text/10 rounded",
|
|
1313
|
-
children: /* @__PURE__ */
|
|
1311
|
+
children: /* @__PURE__ */ T(x, { className: "w-3.5 h-3.5" })
|
|
1314
1312
|
})
|
|
1315
1313
|
]
|
|
1316
1314
|
}),
|
|
1317
|
-
!F?.isActive && /* @__PURE__ */
|
|
1315
|
+
!F?.isActive && /* @__PURE__ */ E("p", {
|
|
1318
1316
|
className: "text-sm text-text-muted flex items-center gap-1.5",
|
|
1319
|
-
children: [/* @__PURE__ */
|
|
1320
|
-
}),
|
|
1321
|
-
R && /* @__PURE__ */ D("p", {
|
|
1322
|
-
className: "text-sm text-status-warning-text bg-status-warning-bg border border-status-warning-border rounded-md px-3 py-2 flex items-center gap-1.5",
|
|
1323
|
-
children: [
|
|
1324
|
-
/* @__PURE__ */ E(_, { className: "w-4 h-4 flex-shrink-0" }),
|
|
1325
|
-
"Viewing the ",
|
|
1326
|
-
/* @__PURE__ */ E("span", {
|
|
1327
|
-
className: "font-medium",
|
|
1328
|
-
children: L
|
|
1329
|
-
}),
|
|
1330
|
-
" profile. Install/remove are temporarily disabled on non-default profiles — they currently only affect the ",
|
|
1331
|
-
/* @__PURE__ */ E("span", {
|
|
1332
|
-
className: "font-medium",
|
|
1333
|
-
children: "default"
|
|
1334
|
-
}),
|
|
1335
|
-
" ",
|
|
1336
|
-
"profile. Switch to the default profile to manage plugins."
|
|
1337
|
-
]
|
|
1317
|
+
children: [/* @__PURE__ */ T(Ge, { className: "w-4 h-4 flex-shrink-0" }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
|
|
1338
1318
|
}),
|
|
1339
|
-
|
|
1319
|
+
G === "installed" && /* @__PURE__ */ T(w, { children: t.length > 0 ? /* @__PURE__ */ T("div", {
|
|
1340
1320
|
className: "space-y-2",
|
|
1341
|
-
children: t.map((e) => /* @__PURE__ */
|
|
1321
|
+
children: t.map((e) => /* @__PURE__ */ E("div", {
|
|
1342
1322
|
className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
|
|
1343
|
-
children: [/* @__PURE__ */
|
|
1323
|
+
children: [/* @__PURE__ */ E("div", {
|
|
1344
1324
|
className: "min-w-0",
|
|
1345
1325
|
children: [
|
|
1346
|
-
/* @__PURE__ */
|
|
1326
|
+
/* @__PURE__ */ E("p", {
|
|
1347
1327
|
className: "text-sm font-medium text-text-primary flex items-center gap-1.5 flex-wrap",
|
|
1348
1328
|
children: [
|
|
1349
1329
|
e.pluginName,
|
|
1350
|
-
/* @__PURE__ */
|
|
1330
|
+
/* @__PURE__ */ T("span", {
|
|
1351
1331
|
className: "text-xs text-text-muted font-normal",
|
|
1352
1332
|
children: e.version === "latest" ? e.version : `v${e.version}`
|
|
1353
1333
|
}),
|
|
1354
|
-
e.isCore && /* @__PURE__ */
|
|
1334
|
+
e.isCore && /* @__PURE__ */ T("span", {
|
|
1355
1335
|
className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-action-primary-bg/10 text-action-primary-bg rounded border border-action-primary-bg/20",
|
|
1356
1336
|
children: "core"
|
|
1357
1337
|
}),
|
|
1358
|
-
e.loaded && /* @__PURE__ */
|
|
1338
|
+
e.loaded && /* @__PURE__ */ T("span", {
|
|
1359
1339
|
className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-status-success-bg text-status-success-text rounded",
|
|
1360
1340
|
children: "loaded"
|
|
1361
1341
|
}),
|
|
1362
|
-
e.hasProviders && /* @__PURE__ */
|
|
1342
|
+
e.hasProviders && /* @__PURE__ */ T("span", {
|
|
1363
1343
|
className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-status-warning-bg-subtle text-status-warning-text rounded",
|
|
1364
1344
|
children: "provider"
|
|
1365
1345
|
}),
|
|
1366
|
-
e.hasUI && /* @__PURE__ */
|
|
1346
|
+
e.hasUI && /* @__PURE__ */ T("span", {
|
|
1367
1347
|
className: "inline-flex items-center px-1.5 py-0.5 text-xs bg-accent-purple-subtle text-accent-purple rounded",
|
|
1368
1348
|
children: "ui"
|
|
1369
1349
|
})
|
|
1370
1350
|
]
|
|
1371
1351
|
}),
|
|
1372
|
-
e.description && /* @__PURE__ */
|
|
1352
|
+
e.description && /* @__PURE__ */ T("p", {
|
|
1373
1353
|
className: "text-xs text-text-secondary mt-0.5",
|
|
1374
1354
|
children: e.description
|
|
1375
1355
|
}),
|
|
1376
|
-
/* @__PURE__ */
|
|
1356
|
+
/* @__PURE__ */ E("div", {
|
|
1377
1357
|
className: "flex items-center gap-2 mt-0.5 flex-wrap",
|
|
1378
1358
|
children: [
|
|
1379
|
-
!e.isCore && /* @__PURE__ */
|
|
1359
|
+
!e.isCore && /* @__PURE__ */ T("span", {
|
|
1380
1360
|
className: "text-xs text-text-muted font-mono",
|
|
1381
1361
|
children: e.packageName
|
|
1382
1362
|
}),
|
|
1383
|
-
e.cliCommand && /* @__PURE__ */
|
|
1363
|
+
e.cliCommand && /* @__PURE__ */ E("span", {
|
|
1384
1364
|
className: "text-xs text-text-muted",
|
|
1385
1365
|
children: [
|
|
1386
1366
|
"cli:",
|
|
1387
1367
|
" ",
|
|
1388
|
-
/* @__PURE__ */
|
|
1368
|
+
/* @__PURE__ */ E("code", {
|
|
1389
1369
|
className: "text-xs font-mono",
|
|
1390
1370
|
children: ["vibe ", e.cliCommand]
|
|
1391
1371
|
})
|
|
1392
1372
|
]
|
|
1393
1373
|
}),
|
|
1394
|
-
e.apiPrefix && /* @__PURE__ */
|
|
1374
|
+
e.apiPrefix && /* @__PURE__ */ E("span", {
|
|
1395
1375
|
className: "text-xs text-text-muted",
|
|
1396
1376
|
children: [
|
|
1397
1377
|
"api:",
|
|
1398
1378
|
" ",
|
|
1399
|
-
/* @__PURE__ */
|
|
1379
|
+
/* @__PURE__ */ T("code", {
|
|
1400
1380
|
className: "text-xs font-mono",
|
|
1401
1381
|
children: e.apiPrefix
|
|
1402
1382
|
})
|
|
@@ -1404,133 +1384,131 @@ function ft() {
|
|
|
1404
1384
|
})
|
|
1405
1385
|
]
|
|
1406
1386
|
}),
|
|
1407
|
-
e.tags && e.tags.length > 0 && /* @__PURE__ */
|
|
1387
|
+
e.tags && e.tags.length > 0 && /* @__PURE__ */ T("div", {
|
|
1408
1388
|
className: "flex gap-1 mt-1 flex-wrap",
|
|
1409
|
-
children: e.tags.map((e) => /* @__PURE__ */
|
|
1389
|
+
children: e.tags.map((e) => /* @__PURE__ */ T("span", {
|
|
1410
1390
|
className: "inline-flex px-1.5 py-0.5 text-[10px] bg-bg-secondary text-text-muted rounded",
|
|
1411
1391
|
children: e
|
|
1412
1392
|
}, e))
|
|
1413
1393
|
})
|
|
1414
1394
|
]
|
|
1415
|
-
}), /* @__PURE__ */
|
|
1395
|
+
}), /* @__PURE__ */ E("div", {
|
|
1416
1396
|
className: "flex items-center gap-2 flex-shrink-0 sm:ml-3",
|
|
1417
|
-
children: [e.hasUI && /* @__PURE__ */
|
|
1418
|
-
onClick: () =>
|
|
1397
|
+
children: [e.hasUI && /* @__PURE__ */ E("button", {
|
|
1398
|
+
onClick: () => K("ui-plugins"),
|
|
1419
1399
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 rounded-md hover:bg-action-primary-bg/20 transition-colors border border-action-primary-bg/20",
|
|
1420
1400
|
title: `Open ${e.pluginName} UI`,
|
|
1421
|
-
children: [/* @__PURE__ */
|
|
1422
|
-
}), !e.isCore && /* @__PURE__ */
|
|
1423
|
-
onClick: () =>
|
|
1424
|
-
disabled:
|
|
1425
|
-
title: R ? `Plugin removal currently only affects the default profile, not "${L}". Switch to the default profile to manage plugins.` : void 0,
|
|
1401
|
+
children: [/* @__PURE__ */ T(qe, { className: "w-3 h-3" }), "Open UI"]
|
|
1402
|
+
}), !e.isCore && /* @__PURE__ */ E("button", {
|
|
1403
|
+
onClick: () => Cn(e.packageName),
|
|
1404
|
+
disabled: H === e.packageName,
|
|
1426
1405
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-status-error-text bg-status-error-bg rounded-md hover:bg-status-error-bg/80 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1427
|
-
children: [
|
|
1406
|
+
children: [H === e.packageName ? /* @__PURE__ */ T(v, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ T(rt, { className: "w-3 h-3" }), "Remove"]
|
|
1428
1407
|
})]
|
|
1429
1408
|
})]
|
|
1430
1409
|
}, e.packageName))
|
|
1431
|
-
}) : /* @__PURE__ */
|
|
1410
|
+
}) : /* @__PURE__ */ T("p", {
|
|
1432
1411
|
className: "text-sm text-text-muted",
|
|
1433
|
-
children:
|
|
1412
|
+
children: q ? "No installed plugins match your search." : "No plugin data available. Check agent connectivity or refresh."
|
|
1434
1413
|
}) }),
|
|
1435
|
-
|
|
1414
|
+
G === "available" && /* @__PURE__ */ T(w, { children: n.length > 0 ? /* @__PURE__ */ T("div", {
|
|
1436
1415
|
className: "space-y-2",
|
|
1437
|
-
children: n.map((e) => /* @__PURE__ */
|
|
1416
|
+
children: n.map((e) => /* @__PURE__ */ E("div", {
|
|
1438
1417
|
className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
|
|
1439
|
-
children: [/* @__PURE__ */
|
|
1418
|
+
children: [/* @__PURE__ */ E("div", {
|
|
1440
1419
|
className: "min-w-0",
|
|
1441
1420
|
children: [
|
|
1442
|
-
/* @__PURE__ */
|
|
1421
|
+
/* @__PURE__ */ T("p", {
|
|
1443
1422
|
className: "text-sm font-medium text-text-primary",
|
|
1444
1423
|
children: e.name
|
|
1445
1424
|
}),
|
|
1446
|
-
/* @__PURE__ */
|
|
1425
|
+
/* @__PURE__ */ T("p", {
|
|
1447
1426
|
className: "text-xs text-text-secondary mt-0.5",
|
|
1448
1427
|
children: e.description
|
|
1449
1428
|
}),
|
|
1450
|
-
/* @__PURE__ */
|
|
1429
|
+
/* @__PURE__ */ T("p", {
|
|
1451
1430
|
className: "text-xs text-text-muted font-mono mt-0.5",
|
|
1452
1431
|
children: e.packageName
|
|
1453
1432
|
})
|
|
1454
1433
|
]
|
|
1455
|
-
}), /* @__PURE__ */
|
|
1456
|
-
onClick: () =>
|
|
1457
|
-
disabled:
|
|
1458
|
-
title: R ? `Plugin installs currently only affect the default profile, not "${L}". Switch to the default profile to manage plugins.` : void 0,
|
|
1434
|
+
}), /* @__PURE__ */ E("button", {
|
|
1435
|
+
onClick: () => Sn(e.packageName),
|
|
1436
|
+
disabled: H === e.packageName,
|
|
1459
1437
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 sm:ml-3",
|
|
1460
|
-
children: [
|
|
1438
|
+
children: [H === e.packageName ? /* @__PURE__ */ T(v, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ T(Be, { className: "w-3 h-3" }), "Install"]
|
|
1461
1439
|
})]
|
|
1462
1440
|
}, e.packageName))
|
|
1463
|
-
}) : /* @__PURE__ */
|
|
1441
|
+
}) : /* @__PURE__ */ T("p", {
|
|
1464
1442
|
className: "text-sm text-text-muted",
|
|
1465
|
-
children:
|
|
1443
|
+
children: q ? "No available plugins match your search." : rn.every((e) => e.installed) ? "All available plugins are already installed." : "No available plugins found."
|
|
1466
1444
|
}) }),
|
|
1467
|
-
|
|
1445
|
+
G === "store" && /* @__PURE__ */ E(w, { children: [gn && /* @__PURE__ */ E("div", {
|
|
1468
1446
|
className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1469
|
-
children: [/* @__PURE__ */
|
|
1447
|
+
children: [/* @__PURE__ */ T(x, { className: "w-4 h-4 flex-shrink-0" }), /* @__PURE__ */ T("span", {
|
|
1470
1448
|
className: "flex-1",
|
|
1471
1449
|
children: gn
|
|
1472
1450
|
})]
|
|
1473
|
-
}), mn ? /* @__PURE__ */
|
|
1451
|
+
}), mn ? /* @__PURE__ */ T("p", {
|
|
1474
1452
|
className: "text-sm text-text-muted",
|
|
1475
1453
|
children: "Loading purchased plugins…"
|
|
1476
|
-
}) :
|
|
1454
|
+
}) : J.length === 0 ? /* @__PURE__ */ E("div", {
|
|
1477
1455
|
className: "py-8 text-center",
|
|
1478
|
-
children: [/* @__PURE__ */
|
|
1456
|
+
children: [/* @__PURE__ */ T("p", {
|
|
1479
1457
|
className: "text-sm text-text-muted",
|
|
1480
1458
|
children: "No plugins purchased from the Burdenoff store yet."
|
|
1481
|
-
}), /* @__PURE__ */
|
|
1459
|
+
}), /* @__PURE__ */ T("a", {
|
|
1482
1460
|
href: "/store/marketplace",
|
|
1483
1461
|
className: "mt-2 inline-flex items-center gap-1 text-xs font-semibold text-action-primary-text hover:underline",
|
|
1484
1462
|
children: "Browse the store →"
|
|
1485
1463
|
})]
|
|
1486
|
-
}) : /* @__PURE__ */
|
|
1464
|
+
}) : /* @__PURE__ */ T("div", {
|
|
1487
1465
|
className: "space-y-2",
|
|
1488
|
-
children:
|
|
1489
|
-
let t = (e.product?.manifest ?? {}).digital?.install, n = typeof t?.packageName == "string" ? t.packageName : null, r =
|
|
1490
|
-
return /* @__PURE__ */
|
|
1466
|
+
children: J.map((e) => {
|
|
1467
|
+
let t = (e.product?.manifest ?? {}).digital?.install, n = typeof t?.packageName == "string" ? t.packageName : null, r = V.some((e) => e.packageName === n);
|
|
1468
|
+
return /* @__PURE__ */ E("div", {
|
|
1491
1469
|
className: "flex flex-col sm:flex-row sm:items-center justify-between gap-2 p-3 bg-bg-sunken rounded-lg",
|
|
1492
|
-
children: [/* @__PURE__ */
|
|
1470
|
+
children: [/* @__PURE__ */ E("div", {
|
|
1493
1471
|
className: "flex items-start gap-3 min-w-0 flex-1",
|
|
1494
|
-
children: [e.product?.icon ? /* @__PURE__ */
|
|
1472
|
+
children: [e.product?.icon ? /* @__PURE__ */ T("img", {
|
|
1495
1473
|
src: e.product.icon,
|
|
1496
1474
|
alt: "",
|
|
1497
1475
|
className: "w-10 h-10 rounded-md object-cover flex-shrink-0"
|
|
1498
|
-
}) : /* @__PURE__ */
|
|
1476
|
+
}) : /* @__PURE__ */ T("div", {
|
|
1499
1477
|
className: "w-10 h-10 flex-shrink-0 rounded-md bg-bg-secondary flex items-center justify-center",
|
|
1500
|
-
children: /* @__PURE__ */
|
|
1501
|
-
}), /* @__PURE__ */
|
|
1478
|
+
children: /* @__PURE__ */ T(y, { className: "w-5 h-5 text-text-muted" })
|
|
1479
|
+
}), /* @__PURE__ */ E("div", {
|
|
1502
1480
|
className: "min-w-0 flex-1",
|
|
1503
1481
|
children: [
|
|
1504
|
-
/* @__PURE__ */
|
|
1482
|
+
/* @__PURE__ */ E("div", {
|
|
1505
1483
|
className: "flex items-center gap-2",
|
|
1506
|
-
children: [/* @__PURE__ */
|
|
1484
|
+
children: [/* @__PURE__ */ T("h4", {
|
|
1507
1485
|
className: "text-sm font-semibold text-text-primary truncate",
|
|
1508
1486
|
children: e.product?.name ?? "Unknown"
|
|
1509
|
-
}), e.licenseKey && /* @__PURE__ */
|
|
1487
|
+
}), e.licenseKey && /* @__PURE__ */ T("span", {
|
|
1510
1488
|
className: "text-[10px] bg-status-success-bg text-status-success-text px-1.5 py-0.5 rounded-full",
|
|
1511
1489
|
children: "Licensed"
|
|
1512
1490
|
})]
|
|
1513
1491
|
}),
|
|
1514
|
-
n && /* @__PURE__ */
|
|
1492
|
+
n && /* @__PURE__ */ T("p", {
|
|
1515
1493
|
className: "text-xs text-text-muted font-mono truncate",
|
|
1516
1494
|
children: n
|
|
1517
1495
|
}),
|
|
1518
|
-
e.product?.description && /* @__PURE__ */
|
|
1496
|
+
e.product?.description && /* @__PURE__ */ T("p", {
|
|
1519
1497
|
className: "text-xs text-text-secondary line-clamp-2 mt-1",
|
|
1520
1498
|
children: e.product.description
|
|
1521
1499
|
})
|
|
1522
1500
|
]
|
|
1523
1501
|
})]
|
|
1524
|
-
}), /* @__PURE__ */
|
|
1525
|
-
onClick: () => void
|
|
1526
|
-
disabled: r ||
|
|
1502
|
+
}), /* @__PURE__ */ T("button", {
|
|
1503
|
+
onClick: () => void Tn(e.productId, e.licenseKey),
|
|
1504
|
+
disabled: r || Y === e.productId || !n,
|
|
1527
1505
|
className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold rounded-md bg-action-primary-bg text-action-primary-text hover:opacity-90 disabled:opacity-60 flex-shrink-0",
|
|
1528
|
-
children: r ? "Installed" :
|
|
1506
|
+
children: r ? "Installed" : Y === e.productId ? "Installing…" : "Install"
|
|
1529
1507
|
})]
|
|
1530
1508
|
}, e.id);
|
|
1531
1509
|
})
|
|
1532
1510
|
})] }),
|
|
1533
|
-
|
|
1511
|
+
G === "ui-plugins" && /* @__PURE__ */ T(w, { children: r.length > 0 || F?.tunnelUrl ? /* @__PURE__ */ T(Se, {
|
|
1534
1512
|
availablePlugins: [...F?.tunnelUrl ? [{
|
|
1535
1513
|
pluginName: "code-server",
|
|
1536
1514
|
displayName: "Code Server (VS Code)",
|
|
@@ -1545,19 +1523,19 @@ function ft() {
|
|
|
1545
1523
|
}))],
|
|
1546
1524
|
tunnelUrl: F?.tunnelUrl || null,
|
|
1547
1525
|
agentApiKey: F?.agentApiKey
|
|
1548
|
-
}) : /* @__PURE__ */
|
|
1526
|
+
}) : /* @__PURE__ */ T("p", {
|
|
1549
1527
|
className: "text-sm text-text-muted",
|
|
1550
|
-
children:
|
|
1528
|
+
children: q ? "No UI plugins match your search." : "No plugins with UI are currently installed."
|
|
1551
1529
|
}) }),
|
|
1552
|
-
on &&
|
|
1530
|
+
on && V.length === 0 && /* @__PURE__ */ E("div", {
|
|
1553
1531
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
1554
|
-
children: [/* @__PURE__ */
|
|
1532
|
+
children: [/* @__PURE__ */ T(v, { className: "w-4 h-4 animate-spin" }), "Loading plugins..."]
|
|
1555
1533
|
})
|
|
1556
1534
|
]
|
|
1557
1535
|
})] })
|
|
1558
1536
|
}, "plugins");
|
|
1559
1537
|
})(),
|
|
1560
|
-
|
|
1538
|
+
B === "sessions" && /* @__PURE__ */ T(C.div, {
|
|
1561
1539
|
initial: {
|
|
1562
1540
|
opacity: 0,
|
|
1563
1541
|
y: 8
|
|
@@ -1571,43 +1549,43 @@ function ft() {
|
|
|
1571
1549
|
y: -8
|
|
1572
1550
|
},
|
|
1573
1551
|
transition: { duration: .2 },
|
|
1574
|
-
children: /* @__PURE__ */
|
|
1552
|
+
children: /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1575
1553
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
1576
|
-
children: /* @__PURE__ */
|
|
1554
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1577
1555
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1578
1556
|
children: [
|
|
1579
|
-
/* @__PURE__ */
|
|
1557
|
+
/* @__PURE__ */ T(b, { className: "w-5 h-5" }),
|
|
1580
1558
|
k("nav.sessions", "Sessions"),
|
|
1581
1559
|
" (",
|
|
1582
1560
|
Z.length,
|
|
1583
1561
|
")"
|
|
1584
1562
|
]
|
|
1585
1563
|
})
|
|
1586
|
-
}), Z.length > 0 ? /* @__PURE__ */
|
|
1564
|
+
}), Z.length > 0 ? /* @__PURE__ */ T("div", {
|
|
1587
1565
|
className: "divide-y divide-border-primary",
|
|
1588
|
-
children: Z.map((e) => /* @__PURE__ */
|
|
1589
|
-
onClick: () =>
|
|
1566
|
+
children: Z.map((e) => /* @__PURE__ */ E("div", {
|
|
1567
|
+
onClick: () => Nn(e.id),
|
|
1590
1568
|
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",
|
|
1591
|
-
children: [/* @__PURE__ */
|
|
1569
|
+
children: [/* @__PURE__ */ E("div", {
|
|
1592
1570
|
className: "flex items-center gap-3 min-w-0",
|
|
1593
|
-
children: [/* @__PURE__ */
|
|
1571
|
+
children: [/* @__PURE__ */ T(b, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ E("div", {
|
|
1594
1572
|
className: "min-w-0",
|
|
1595
|
-
children: [/* @__PURE__ */
|
|
1573
|
+
children: [/* @__PURE__ */ T("p", {
|
|
1596
1574
|
className: "font-medium text-text-primary truncate",
|
|
1597
1575
|
children: e.name
|
|
1598
|
-
}), /* @__PURE__ */
|
|
1576
|
+
}), /* @__PURE__ */ T("p", {
|
|
1599
1577
|
className: "text-sm text-text-secondary truncate",
|
|
1600
1578
|
children: e.type
|
|
1601
1579
|
})]
|
|
1602
1580
|
})]
|
|
1603
|
-
}), /* @__PURE__ */
|
|
1581
|
+
}), /* @__PURE__ */ T(l, { status: e.status })]
|
|
1604
1582
|
}, e.id))
|
|
1605
|
-
}) : /* @__PURE__ */
|
|
1583
|
+
}) : /* @__PURE__ */ T("div", {
|
|
1606
1584
|
className: "p-6 text-center text-text-secondary",
|
|
1607
1585
|
children: k("agentDetails.noSessionsOnAgent", "No sessions on this agent")
|
|
1608
1586
|
})] })
|
|
1609
1587
|
}, "sessions"),
|
|
1610
|
-
|
|
1588
|
+
B === "logs" && /* @__PURE__ */ T(C.div, {
|
|
1611
1589
|
initial: {
|
|
1612
1590
|
opacity: 0,
|
|
1613
1591
|
y: 8
|
|
@@ -1621,22 +1599,22 @@ function ft() {
|
|
|
1621
1599
|
y: -8
|
|
1622
1600
|
},
|
|
1623
1601
|
transition: { duration: .2 },
|
|
1624
|
-
children: /* @__PURE__ */
|
|
1602
|
+
children: /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1625
1603
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
1626
|
-
children: /* @__PURE__ */
|
|
1604
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1627
1605
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1628
|
-
children: [/* @__PURE__ */
|
|
1606
|
+
children: [/* @__PURE__ */ T(Xe, { className: "w-5 h-5" }), k("nav.logs", "Logs")]
|
|
1629
1607
|
})
|
|
1630
|
-
}), /* @__PURE__ */
|
|
1608
|
+
}), /* @__PURE__ */ T("div", {
|
|
1631
1609
|
className: "p-4",
|
|
1632
|
-
children: /* @__PURE__ */
|
|
1610
|
+
children: /* @__PURE__ */ T(Te, {
|
|
1633
1611
|
agentId: F.id,
|
|
1634
1612
|
profile: L,
|
|
1635
1613
|
className: "min-h-[28rem]"
|
|
1636
1614
|
})
|
|
1637
1615
|
})] })
|
|
1638
1616
|
}, "logs"),
|
|
1639
|
-
|
|
1617
|
+
B === "vibes" && /* @__PURE__ */ T(C.div, {
|
|
1640
1618
|
initial: {
|
|
1641
1619
|
opacity: 0,
|
|
1642
1620
|
y: 8
|
|
@@ -1650,43 +1628,43 @@ function ft() {
|
|
|
1650
1628
|
y: -8
|
|
1651
1629
|
},
|
|
1652
1630
|
transition: { duration: .2 },
|
|
1653
|
-
children: /* @__PURE__ */
|
|
1631
|
+
children: /* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T("div", {
|
|
1654
1632
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
1655
|
-
children: /* @__PURE__ */
|
|
1633
|
+
children: /* @__PURE__ */ E("h3", {
|
|
1656
1634
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1657
1635
|
children: [
|
|
1658
|
-
/* @__PURE__ */
|
|
1636
|
+
/* @__PURE__ */ T(S, { className: "w-5 h-5" }),
|
|
1659
1637
|
k("nav.vibes", "Vibes"),
|
|
1660
1638
|
" (",
|
|
1661
1639
|
Q.length,
|
|
1662
1640
|
")"
|
|
1663
1641
|
]
|
|
1664
1642
|
})
|
|
1665
|
-
}), Q.length > 0 ? /* @__PURE__ */
|
|
1643
|
+
}), Q.length > 0 ? /* @__PURE__ */ T("div", {
|
|
1666
1644
|
className: "divide-y divide-border-primary",
|
|
1667
|
-
children: Q.map((e) => /* @__PURE__ */
|
|
1668
|
-
onClick: () =>
|
|
1645
|
+
children: Q.map((e) => /* @__PURE__ */ E("div", {
|
|
1646
|
+
onClick: () => Pn(e.id),
|
|
1669
1647
|
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",
|
|
1670
|
-
children: [/* @__PURE__ */
|
|
1648
|
+
children: [/* @__PURE__ */ E("div", {
|
|
1671
1649
|
className: "flex items-center gap-3 min-w-0",
|
|
1672
|
-
children: [/* @__PURE__ */
|
|
1650
|
+
children: [/* @__PURE__ */ T(S, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ E("div", {
|
|
1673
1651
|
className: "min-w-0",
|
|
1674
|
-
children: [/* @__PURE__ */
|
|
1652
|
+
children: [/* @__PURE__ */ T("p", {
|
|
1675
1653
|
className: "font-medium text-text-primary truncate",
|
|
1676
1654
|
children: e.name
|
|
1677
|
-
}), /* @__PURE__ */
|
|
1655
|
+
}), /* @__PURE__ */ T("p", {
|
|
1678
1656
|
className: "text-sm text-text-secondary truncate",
|
|
1679
1657
|
children: e.type
|
|
1680
1658
|
})]
|
|
1681
1659
|
})]
|
|
1682
|
-
}), /* @__PURE__ */
|
|
1660
|
+
}), /* @__PURE__ */ T(l, { status: e.status })]
|
|
1683
1661
|
}, e.id))
|
|
1684
|
-
}) : /* @__PURE__ */
|
|
1662
|
+
}) : /* @__PURE__ */ T("div", {
|
|
1685
1663
|
className: "p-6 text-center text-text-secondary",
|
|
1686
1664
|
children: k("agentDetails.noVibesUsingAgent", "No vibes using this agent")
|
|
1687
1665
|
})] })
|
|
1688
1666
|
}, "vibes"),
|
|
1689
|
-
|
|
1667
|
+
B === "notes" && /* @__PURE__ */ T(C.div, {
|
|
1690
1668
|
initial: {
|
|
1691
1669
|
opacity: 0,
|
|
1692
1670
|
y: 8
|
|
@@ -1701,7 +1679,7 @@ function ft() {
|
|
|
1701
1679
|
},
|
|
1702
1680
|
transition: { duration: .2 },
|
|
1703
1681
|
className: "space-y-6",
|
|
1704
|
-
children: /* @__PURE__ */
|
|
1682
|
+
children: /* @__PURE__ */ T(De, {
|
|
1705
1683
|
context: "agent",
|
|
1706
1684
|
agentVibes: Q.map((e) => ({
|
|
1707
1685
|
id: e.id,
|
|
@@ -1709,7 +1687,7 @@ function ft() {
|
|
|
1709
1687
|
}))
|
|
1710
1688
|
})
|
|
1711
1689
|
}, "notes"),
|
|
1712
|
-
|
|
1690
|
+
B === "aliases" && /* @__PURE__ */ T(C.div, {
|
|
1713
1691
|
initial: {
|
|
1714
1692
|
opacity: 0,
|
|
1715
1693
|
y: 8
|
|
@@ -1724,12 +1702,12 @@ function ft() {
|
|
|
1724
1702
|
},
|
|
1725
1703
|
transition: { duration: .2 },
|
|
1726
1704
|
className: "space-y-6",
|
|
1727
|
-
children: /* @__PURE__ */
|
|
1705
|
+
children: /* @__PURE__ */ T(be, { agent: {
|
|
1728
1706
|
id: F.id,
|
|
1729
1707
|
profile: F.metadata?.profile ?? "default"
|
|
1730
1708
|
} })
|
|
1731
1709
|
}, "aliases"),
|
|
1732
|
-
|
|
1710
|
+
B === "backup" && F.tunnelUrl && F.agentApiKey && /* @__PURE__ */ T(C.div, {
|
|
1733
1711
|
initial: {
|
|
1734
1712
|
opacity: 0,
|
|
1735
1713
|
y: 8
|
|
@@ -1743,13 +1721,13 @@ function ft() {
|
|
|
1743
1721
|
y: -8
|
|
1744
1722
|
},
|
|
1745
1723
|
transition: { duration: .2 },
|
|
1746
|
-
children: /* @__PURE__ */
|
|
1724
|
+
children: /* @__PURE__ */ T(ye, {
|
|
1747
1725
|
agentTunnelUrl: F.tunnelUrl,
|
|
1748
1726
|
agentApiKey: F.agentApiKey,
|
|
1749
1727
|
profile: L
|
|
1750
1728
|
})
|
|
1751
1729
|
}, "backup"),
|
|
1752
|
-
|
|
1730
|
+
B === "backup" && (!F.tunnelUrl || !F.agentApiKey) && /* @__PURE__ */ T(C.div, {
|
|
1753
1731
|
initial: {
|
|
1754
1732
|
opacity: 0,
|
|
1755
1733
|
y: 8
|
|
@@ -1763,21 +1741,21 @@ function ft() {
|
|
|
1763
1741
|
y: -8
|
|
1764
1742
|
},
|
|
1765
1743
|
transition: { duration: .2 },
|
|
1766
|
-
children: /* @__PURE__ */
|
|
1744
|
+
children: /* @__PURE__ */ E(u, {
|
|
1767
1745
|
className: "p-6 text-center text-text-secondary",
|
|
1768
1746
|
children: [
|
|
1769
|
-
/* @__PURE__ */
|
|
1770
|
-
/* @__PURE__ */
|
|
1771
|
-
/* @__PURE__ */
|
|
1747
|
+
/* @__PURE__ */ T(ze, { className: "w-8 h-8 mx-auto mb-2 text-text-muted" }),
|
|
1748
|
+
/* @__PURE__ */ T("p", { children: k("agentDetails.backupRequiresTunnelAndApiKey", "Agent tunnel URL and API key are required for backup management.") }),
|
|
1749
|
+
/* @__PURE__ */ T("p", {
|
|
1772
1750
|
className: "text-sm mt-1",
|
|
1773
1751
|
children: k("agentDetails.configureConnectionInOverview", "Configure the agent connection in the Overview tab.")
|
|
1774
1752
|
})
|
|
1775
1753
|
]
|
|
1776
1754
|
})
|
|
1777
1755
|
}, "backup-no-tunnel"),
|
|
1778
|
-
|
|
1779
|
-
let e =
|
|
1780
|
-
return !e || !F ? null : /* @__PURE__ */
|
|
1756
|
+
R && (() => {
|
|
1757
|
+
let e = z.data.find((e) => e.contribution.id === B);
|
|
1758
|
+
return !e || !F ? null : /* @__PURE__ */ T(C.div, {
|
|
1781
1759
|
initial: {
|
|
1782
1760
|
opacity: 0,
|
|
1783
1761
|
y: 8
|
|
@@ -1792,9 +1770,9 @@ function ft() {
|
|
|
1792
1770
|
},
|
|
1793
1771
|
transition: { duration: .2 },
|
|
1794
1772
|
className: "space-y-6",
|
|
1795
|
-
children: /* @__PURE__ */
|
|
1773
|
+
children: /* @__PURE__ */ T(u, { children: /* @__PURE__ */ T("div", {
|
|
1796
1774
|
className: "p-0 h-[600px]",
|
|
1797
|
-
children: /* @__PURE__ */
|
|
1775
|
+
children: /* @__PURE__ */ T(je, {
|
|
1798
1776
|
contribution: e,
|
|
1799
1777
|
tunnel: e.tunnel,
|
|
1800
1778
|
restPaths: e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`],
|
|
@@ -1814,24 +1792,24 @@ function ft() {
|
|
|
1814
1792
|
})()
|
|
1815
1793
|
]
|
|
1816
1794
|
}),
|
|
1817
|
-
|
|
1795
|
+
R && F && /* @__PURE__ */ T(Ae, {
|
|
1818
1796
|
isOpen: Zt,
|
|
1819
1797
|
onClose: () => Qt(!1),
|
|
1820
1798
|
mountPoint: "agent.detailTab",
|
|
1821
1799
|
agentId: F.id,
|
|
1822
1800
|
profile: L ?? "default",
|
|
1823
1801
|
onInstalled: () => {
|
|
1824
|
-
|
|
1802
|
+
z.refetch();
|
|
1825
1803
|
}
|
|
1826
1804
|
}),
|
|
1827
|
-
Tt && /* @__PURE__ */
|
|
1805
|
+
Tt && /* @__PURE__ */ T("div", {
|
|
1828
1806
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-[100] p-4",
|
|
1829
|
-
children: /* @__PURE__ */
|
|
1807
|
+
children: /* @__PURE__ */ E("div", {
|
|
1830
1808
|
className: "bg-bg-surface rounded-lg w-full max-w-lg max-h-[90vh] flex flex-col",
|
|
1831
1809
|
children: [
|
|
1832
|
-
/* @__PURE__ */
|
|
1810
|
+
/* @__PURE__ */ T("div", {
|
|
1833
1811
|
className: "px-6 pt-6 pb-3 border-b border-border-default flex-shrink-0",
|
|
1834
|
-
children: /* @__PURE__ */
|
|
1812
|
+
children: /* @__PURE__ */ E("h2", {
|
|
1835
1813
|
className: "text-lg font-semibold text-text-primary",
|
|
1836
1814
|
children: [
|
|
1837
1815
|
k("agentDetails.configure", "Configure"),
|
|
@@ -1840,117 +1818,117 @@ function ft() {
|
|
|
1840
1818
|
]
|
|
1841
1819
|
})
|
|
1842
1820
|
}),
|
|
1843
|
-
/* @__PURE__ */
|
|
1821
|
+
/* @__PURE__ */ E("div", {
|
|
1844
1822
|
className: "px-6 py-4 overflow-y-auto flex-1",
|
|
1845
|
-
children: [Dt && /* @__PURE__ */
|
|
1823
|
+
children: [Dt && /* @__PURE__ */ T("div", {
|
|
1846
1824
|
className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1847
1825
|
children: Dt
|
|
1848
|
-
}), /* @__PURE__ */
|
|
1826
|
+
}), /* @__PURE__ */ E("div", {
|
|
1849
1827
|
className: "space-y-4",
|
|
1850
1828
|
children: [
|
|
1851
|
-
/* @__PURE__ */
|
|
1829
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("label", {
|
|
1852
1830
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1853
1831
|
children: k("webhooks.name", "Name")
|
|
1854
|
-
}), /* @__PURE__ */
|
|
1832
|
+
}), /* @__PURE__ */ T("input", {
|
|
1855
1833
|
ref: Nt,
|
|
1856
1834
|
type: "text",
|
|
1857
1835
|
defaultValue: F.name,
|
|
1858
1836
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary"
|
|
1859
1837
|
})] }),
|
|
1860
|
-
/* @__PURE__ */
|
|
1838
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("label", {
|
|
1861
1839
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1862
1840
|
children: k("analytics.platform", "Platform")
|
|
1863
|
-
}), /* @__PURE__ */
|
|
1841
|
+
}), /* @__PURE__ */ T("input", {
|
|
1864
1842
|
type: "text",
|
|
1865
1843
|
value: `${F.platform} / ${F.architecture}`,
|
|
1866
1844
|
disabled: !0,
|
|
1867
1845
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-secondary"
|
|
1868
1846
|
})] }),
|
|
1869
|
-
/* @__PURE__ */
|
|
1847
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("label", {
|
|
1870
1848
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1871
1849
|
children: k("agentDetails.version", "Version")
|
|
1872
|
-
}), /* @__PURE__ */
|
|
1850
|
+
}), /* @__PURE__ */ T("input", {
|
|
1873
1851
|
type: "text",
|
|
1874
1852
|
value: F.version,
|
|
1875
1853
|
disabled: !0,
|
|
1876
1854
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-secondary"
|
|
1877
1855
|
})] }),
|
|
1878
|
-
/* @__PURE__ */
|
|
1879
|
-
/* @__PURE__ */
|
|
1856
|
+
/* @__PURE__ */ E("div", { children: [
|
|
1857
|
+
/* @__PURE__ */ T("label", {
|
|
1880
1858
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1881
1859
|
children: k("agentDetails.tunnelUrl", "Tunnel URL")
|
|
1882
1860
|
}),
|
|
1883
|
-
/* @__PURE__ */
|
|
1861
|
+
/* @__PURE__ */ T("input", {
|
|
1884
1862
|
ref: Pt,
|
|
1885
1863
|
type: "text",
|
|
1886
1864
|
defaultValue: F.tunnelUrl ?? "",
|
|
1887
1865
|
placeholder: k("agentDetails.tunnelUrlPlaceholder", "https://xxx.trycloudflare.com"),
|
|
1888
1866
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary font-mono text-sm"
|
|
1889
1867
|
}),
|
|
1890
|
-
/* @__PURE__ */
|
|
1868
|
+
/* @__PURE__ */ T("p", {
|
|
1891
1869
|
className: "mt-1 text-xs text-text-muted",
|
|
1892
1870
|
children: k("agentDetails.tunnelUrlHint", "The public URL for accessing this agent remotely. Auto-updates when gateway auth is configured.")
|
|
1893
1871
|
})
|
|
1894
1872
|
] }),
|
|
1895
|
-
/* @__PURE__ */
|
|
1896
|
-
/* @__PURE__ */
|
|
1873
|
+
/* @__PURE__ */ E("div", { children: [
|
|
1874
|
+
/* @__PURE__ */ T("label", {
|
|
1897
1875
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1898
1876
|
children: k("agentDetails.agentApiKey", "Agent API Key")
|
|
1899
1877
|
}),
|
|
1900
|
-
/* @__PURE__ */
|
|
1878
|
+
/* @__PURE__ */ T("input", {
|
|
1901
1879
|
ref: Ft,
|
|
1902
1880
|
type: "text",
|
|
1903
1881
|
defaultValue: F.agentApiKey ?? "",
|
|
1904
1882
|
placeholder: k("agentDetails.agentApiKeyPlaceholder", "sk-agent-..."),
|
|
1905
1883
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary font-mono text-sm"
|
|
1906
1884
|
}),
|
|
1907
|
-
/* @__PURE__ */
|
|
1885
|
+
/* @__PURE__ */ T("p", {
|
|
1908
1886
|
className: "mt-1 text-xs text-text-muted",
|
|
1909
1887
|
children: k("agentDetails.agentApiKeyHint", "Used to authenticate requests to the agent. Leave empty to clear.")
|
|
1910
1888
|
})
|
|
1911
1889
|
] }),
|
|
1912
|
-
/* @__PURE__ */
|
|
1890
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ E("div", {
|
|
1913
1891
|
className: "flex items-center gap-1.5 mb-1",
|
|
1914
|
-
children: [/* @__PURE__ */
|
|
1892
|
+
children: [/* @__PURE__ */ T("label", {
|
|
1915
1893
|
className: "text-sm font-medium text-text-primary",
|
|
1916
1894
|
children: "AI Context"
|
|
1917
|
-
}), /* @__PURE__ */
|
|
1895
|
+
}), /* @__PURE__ */ E("div", {
|
|
1918
1896
|
className: "relative",
|
|
1919
|
-
children: [/* @__PURE__ */
|
|
1897
|
+
children: [/* @__PURE__ */ T("button", {
|
|
1920
1898
|
type: "button",
|
|
1921
1899
|
onClick: () => Mt((e) => !e),
|
|
1922
1900
|
className: "p-0.5 rounded-full text-text-muted hover:text-text-secondary transition-colors",
|
|
1923
1901
|
"aria-label": "What is AI Context?",
|
|
1924
|
-
children: /* @__PURE__ */
|
|
1925
|
-
}), jt && /* @__PURE__ */
|
|
1902
|
+
children: /* @__PURE__ */ T(Ge, { className: "w-3.5 h-3.5" })
|
|
1903
|
+
}), jt && /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T("div", {
|
|
1926
1904
|
className: "fixed inset-0 z-10",
|
|
1927
1905
|
onClick: () => Mt(!1)
|
|
1928
|
-
}), /* @__PURE__ */
|
|
1906
|
+
}), /* @__PURE__ */ E("div", {
|
|
1929
1907
|
className: "absolute left-0 top-6 z-20 w-72 bg-bg-elevated border border-border-default rounded-lg shadow-xl p-3 text-xs text-text-secondary space-y-1.5",
|
|
1930
1908
|
children: [
|
|
1931
|
-
/* @__PURE__ */
|
|
1909
|
+
/* @__PURE__ */ T("p", {
|
|
1932
1910
|
className: "font-semibold text-text-primary",
|
|
1933
1911
|
children: "What is AI Context?"
|
|
1934
1912
|
}),
|
|
1935
|
-
/* @__PURE__ */
|
|
1936
|
-
/* @__PURE__ */
|
|
1913
|
+
/* @__PURE__ */ T("p", { children: "A short description (Markdown supported) that AI tools running on this agent will read to understand the environment — e.g. what the machine is for, what services it runs, or any constraints to follow." }),
|
|
1914
|
+
/* @__PURE__ */ T("p", {
|
|
1937
1915
|
className: "text-text-muted",
|
|
1938
1916
|
children: "Example: \"Production billing server. Do not modify files outside /src. Node 20, Docker installed.\""
|
|
1939
1917
|
})
|
|
1940
1918
|
]
|
|
1941
1919
|
})] })]
|
|
1942
1920
|
})]
|
|
1943
|
-
}), /* @__PURE__ */
|
|
1921
|
+
}), /* @__PURE__ */ T("textarea", {
|
|
1944
1922
|
ref: It,
|
|
1945
1923
|
defaultValue: F.aiContext ?? "",
|
|
1946
1924
|
rows: 4,
|
|
1947
1925
|
placeholder: "e.g. This agent runs on the billing server. Node 20, Docker installed. Do not modify files outside /src.",
|
|
1948
1926
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm"
|
|
1949
1927
|
})] }),
|
|
1950
|
-
/* @__PURE__ */
|
|
1928
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("label", {
|
|
1951
1929
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1952
1930
|
children: k("agentDetails.metadataLabel", "Metadata (JSON)")
|
|
1953
|
-
}), /* @__PURE__ */
|
|
1931
|
+
}), /* @__PURE__ */ T("textarea", {
|
|
1954
1932
|
ref: Lt,
|
|
1955
1933
|
defaultValue: F.metadata ? JSON.stringify(F.metadata, null, 2) : "{}",
|
|
1956
1934
|
rows: 4,
|
|
@@ -1959,15 +1937,15 @@ function ft() {
|
|
|
1959
1937
|
]
|
|
1960
1938
|
})]
|
|
1961
1939
|
}),
|
|
1962
|
-
/* @__PURE__ */
|
|
1940
|
+
/* @__PURE__ */ E("div", {
|
|
1963
1941
|
className: "px-6 py-4 border-t border-border-default flex-shrink-0 flex flex-wrap justify-end gap-3",
|
|
1964
|
-
children: [/* @__PURE__ */
|
|
1942
|
+
children: [/* @__PURE__ */ T("button", {
|
|
1965
1943
|
onClick: () => Et(!1),
|
|
1966
1944
|
disabled: Ot,
|
|
1967
1945
|
className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
1968
1946
|
children: k("common.cancel", "Cancel")
|
|
1969
|
-
}), /* @__PURE__ */
|
|
1970
|
-
onClick:
|
|
1947
|
+
}), /* @__PURE__ */ T("button", {
|
|
1948
|
+
onClick: An,
|
|
1971
1949
|
disabled: Ot,
|
|
1972
1950
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
1973
1951
|
children: Ot ? k("agentDetails.saving", "Saving...") : k("agentDetails.saveConfiguration", "Save Configuration")
|
|
@@ -1976,7 +1954,7 @@ function ft() {
|
|
|
1976
1954
|
]
|
|
1977
1955
|
})
|
|
1978
1956
|
}),
|
|
1979
|
-
/* @__PURE__ */
|
|
1957
|
+
/* @__PURE__ */ T(le, {
|
|
1980
1958
|
isOpen: ln,
|
|
1981
1959
|
onClose: () => un(!1),
|
|
1982
1960
|
onConfirm: () => {
|