@burdenoff/microfe-vibecontrols 2026.525.5 → 2026.525.6
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.
|
@@ -18,7 +18,7 @@ import "../components/agents/index.js";
|
|
|
18
18
|
import { NotesTabPanel as b } from "../components/notes/NotesTabPanel.js";
|
|
19
19
|
import "../components/notes/index.js";
|
|
20
20
|
import { useQueryBackedTab as x } from "../hooks/useQueryBackedTab.js";
|
|
21
|
-
import { appendIframeTokenParam as ae,
|
|
21
|
+
import { appendIframeTokenParam as ae, mintScopedIframeToken as oe, scheduleScopedIframeTokenRefresh as S } from "../services/iframeToken.js";
|
|
22
22
|
import { AddTabDialog as se } from "../components/plugins/AddTabDialog.js";
|
|
23
23
|
import { PluginIframeMount as ce } from "../components/plugins/PluginIframeMount.js";
|
|
24
24
|
import { ScorecardPanel as le } from "../components/scorecard/ScorecardPanel.js";
|
|
@@ -32,18 +32,18 @@ import { DEFAULT_VIBE_FEATURE_CATALOG as me, isVibeFeatureEnabled as he } from "
|
|
|
32
32
|
import { SecurityTabPanel as ge } from "../components/security/SecurityTabPanel.js";
|
|
33
33
|
import "../components/security/index.js";
|
|
34
34
|
import { VibeLlmContextTabPanel as _e } from "../components/vibe/VibeLlmContextTabPanel.js";
|
|
35
|
-
import { useCallback as ve, useEffect as
|
|
36
|
-
import { useI18n as
|
|
37
|
-
import { Archive as
|
|
38
|
-
import { useParams as
|
|
39
|
-
import { AnimatePresence as
|
|
40
|
-
import { Fragment as
|
|
41
|
-
import { useFeatureFlagDetails as
|
|
42
|
-
import { MotionItem as
|
|
43
|
-
import { PermissionButton as
|
|
44
|
-
import { usePluginContributions as
|
|
35
|
+
import { useCallback as ve, useEffect as C, useMemo as w, useRef as T, useState as E } from "react";
|
|
36
|
+
import { useI18n as ye } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
37
|
+
import { Archive as be, ArrowLeft as D, BarChart3 as xe, BookOpen as Se, Bot as Ce, Check as O, Clock as we, ExternalLink as Te, FileText as Ee, Folder as De, GitBranch as Oe, GitMerge as ke, Globe as Ae, Info as je, Library as Me, Link2 as Ne, Loader2 as Pe, MoreVertical as Fe, Network as Ie, Pause as Le, Play as Re, Plus as ze, RefreshCw as Be, Server as Ve, Settings as He, Shield as Ue, Tag as We, Terminal as k, Variable as Ge, X as Ke, Zap as A } from "lucide-react";
|
|
38
|
+
import { useParams as qe } from "react-router-dom";
|
|
39
|
+
import { AnimatePresence as Je, motion as j } from "framer-motion";
|
|
40
|
+
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
41
|
+
import { useFeatureFlagDetails as F } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
42
|
+
import { MotionItem as I, MotionList as Ye, MotionPage as L } from "@burdenoff/fe-libs/shared/motion";
|
|
43
|
+
import { PermissionButton as Xe } from "@burdenoff/fe-libs/shared/components";
|
|
44
|
+
import { usePluginContributions as Ze } from "@burdenoff/fe-libs/shared/plugins";
|
|
45
45
|
//#region src/pages/VibeDetailsPage.tsx
|
|
46
|
-
var
|
|
46
|
+
var Qe = [
|
|
47
47
|
"overview",
|
|
48
48
|
"config",
|
|
49
49
|
"git",
|
|
@@ -57,25 +57,25 @@ var et = [
|
|
|
57
57
|
"security",
|
|
58
58
|
"related",
|
|
59
59
|
"llmContext"
|
|
60
|
-
],
|
|
60
|
+
], $e = new Set(["overview", "config"]), et = new Set(["apiPlayground"]), tt = new Set([
|
|
61
61
|
"sessions",
|
|
62
62
|
"gitops",
|
|
63
63
|
"graphqlPlayground",
|
|
64
64
|
"git",
|
|
65
65
|
"security"
|
|
66
66
|
]);
|
|
67
|
-
function
|
|
68
|
-
let { t: e } =
|
|
67
|
+
function nt() {
|
|
68
|
+
let { t: e } = ye(), { id: r } = qe(), { basePath: s } = u(), ae = s || "", S = d(), O = ve((t, n) => {
|
|
69
69
|
let r = e(t);
|
|
70
70
|
return r === t ? n : r;
|
|
71
|
-
}, [e]), [
|
|
71
|
+
}, [e]), [Te] = l({ refetchQueries: ["GetVibe"] }), [Ae] = t({ refetchQueries: ["GetVibe"] }), [Pe] = n({ refetchQueries: ["GetVibe", "ListSessions"] }), { data: Ke } = i({
|
|
72
72
|
fetchPolicy: "cache-first",
|
|
73
73
|
errorPolicy: "ignore"
|
|
74
|
-
}),
|
|
74
|
+
}), nt = w(() => {
|
|
75
75
|
let e = new Map(me.map((e) => [e.id, e]));
|
|
76
|
-
for (let t of
|
|
76
|
+
for (let t of Ke?.vibeFeatureCatalog ?? []) e.set(t.id, t);
|
|
77
77
|
return Array.from(e.values());
|
|
78
|
-
}, [
|
|
78
|
+
}, [Ke?.vibeFeatureCatalog]), at = w(() => nt.filter((e) => !et.has(e.id)), [nt]), [ot, { loading: st }] = c({ refetchQueries: ["GetVibe"] }), [ct, lt] = E(!1), [ut, R] = E(null), [dt, ft] = E(!1), [pt, mt] = E(null), z = T(null), ht = T(null), gt = T(null), _t = T(null), { data: vt, loading: B, error: yt, refetch: bt } = o({
|
|
79
79
|
variables: { id: r || "" },
|
|
80
80
|
skip: !r,
|
|
81
81
|
fetchPolicy: "cache-and-network"
|
|
@@ -84,7 +84,7 @@ function L() {
|
|
|
84
84
|
skip: !r,
|
|
85
85
|
fetchPolicy: "cache-first",
|
|
86
86
|
errorPolicy: "ignore"
|
|
87
|
-
}), St = V, H = xt?.vibe ?? St, U = ve((e) => he(H ?? null, e,
|
|
87
|
+
}), St = V, H = xt?.vibe ?? St, U = ve((e) => he(H ?? null, e, at), [H, at]), Ct = F("vibes.tabs.git"), wt = F("vibes.tabs.scorecard"), Tt = F("vibes.tabs.graphql-playground"), Et = F("vibes.tabs.git-iframe"), Dt = F("vibes.tabs.graphiql-iframe"), Ot = F("vibes.tabs.gitops-iframe"), kt = ve((e) => {
|
|
88
88
|
switch (e) {
|
|
89
89
|
case "git": return Ct ? !!Ct.value : !0;
|
|
90
90
|
case "scorecard": return wt ? !!wt.value : !0;
|
|
@@ -95,81 +95,81 @@ function L() {
|
|
|
95
95
|
Ct,
|
|
96
96
|
wt,
|
|
97
97
|
Tt
|
|
98
|
-
]), W = V?.agents ?? [], G = V?.sessions || [],
|
|
99
|
-
if (!
|
|
100
|
-
let e =
|
|
98
|
+
]), W = V?.agents ?? [], G = V?.sessions || [], K = V?.children || [], At = V?.parent || null, jt = ee((e) => r ? e.defaultAgentForVibe?.[r] : void 0), q = (jt ? W.find((e) => e.id === jt) ?? null : null) ?? (W.length === 1 ? W[0] : W.find((e) => !!e.tunnelUrl) ?? W[0] ?? null), J = q, Mt = q?.tunnelUrl ?? null, Nt = q?.agentApiKey ?? null, { active: Y } = te(q?.id ?? null), X = F("vibes.tabs.iframe-host")?.value === !0, Pt = w(() => {
|
|
99
|
+
if (!X || !q?.tunnelUrl) return [];
|
|
100
|
+
let e = q.id, t = Y ?? "default";
|
|
101
101
|
return [{
|
|
102
|
-
tunnelUrl:
|
|
102
|
+
tunnelUrl: q.tunnelUrl,
|
|
103
103
|
profile: t,
|
|
104
|
-
label:
|
|
104
|
+
label: q.name ?? q.id,
|
|
105
105
|
mintIframeToken: async ({ pathPrefixes: n }) => oe(e, t, n)
|
|
106
106
|
}];
|
|
107
107
|
}, [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
]),
|
|
108
|
+
X,
|
|
109
|
+
q,
|
|
110
|
+
Y
|
|
111
|
+
]), Z = Ze(Pt, {
|
|
112
112
|
mountPoint: "vibe.detailTab",
|
|
113
|
-
enabled:
|
|
114
|
-
}), [
|
|
115
|
-
let e =
|
|
116
|
-
return [...
|
|
117
|
-
}, [
|
|
118
|
-
|
|
113
|
+
enabled: X && Pt.length > 0
|
|
114
|
+
}), [Q, Ft] = x(w(() => {
|
|
115
|
+
let e = Z.data.filter((e) => e.contribution.mountPoint === "vibe.detailTab").map((e) => e.contribution.id);
|
|
116
|
+
return [...Qe, ...e];
|
|
117
|
+
}, [Z.data]), "overview"), [It, Lt] = E(!1);
|
|
118
|
+
C(() => {
|
|
119
119
|
V && ee.setState({
|
|
120
|
-
activeAgentId:
|
|
121
|
-
selectedAgentId:
|
|
120
|
+
activeAgentId: q?.id ?? null,
|
|
121
|
+
selectedAgentId: q?.id ?? null,
|
|
122
122
|
activeVibeId: V.id,
|
|
123
123
|
selectedVibeId: V.id,
|
|
124
124
|
activeSessionId: null,
|
|
125
125
|
selectedSessionId: null
|
|
126
126
|
});
|
|
127
|
-
}, [V?.id,
|
|
128
|
-
let
|
|
129
|
-
|
|
130
|
-
if (!B &&
|
|
131
|
-
|
|
127
|
+
}, [V?.id, q?.id]);
|
|
128
|
+
let Rt = W.length > 0;
|
|
129
|
+
C(() => {
|
|
130
|
+
if (!B && !$e.has(Q) && (!U(Q) || !kt(Q))) {
|
|
131
|
+
Ft("overview");
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
134
|
}, [
|
|
135
|
-
|
|
135
|
+
Q,
|
|
136
136
|
U,
|
|
137
137
|
kt,
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
Rt,
|
|
139
|
+
Ft,
|
|
140
140
|
B
|
|
141
141
|
]);
|
|
142
|
-
let
|
|
142
|
+
let $ = () => {
|
|
143
143
|
S("/vibes");
|
|
144
|
-
},
|
|
144
|
+
}, zt = async () => {
|
|
145
145
|
if (V?.id) try {
|
|
146
|
-
await
|
|
146
|
+
await Te({ variables: {
|
|
147
147
|
id: V.id,
|
|
148
148
|
status: "ACTIVE"
|
|
149
149
|
} });
|
|
150
150
|
} catch (e) {
|
|
151
151
|
console.error("Failed to activate vibe:", e);
|
|
152
152
|
}
|
|
153
|
-
},
|
|
153
|
+
}, Bt = async () => {
|
|
154
154
|
if (V?.id) try {
|
|
155
|
-
await
|
|
155
|
+
await Te({ variables: {
|
|
156
156
|
id: V.id,
|
|
157
157
|
status: "INACTIVE"
|
|
158
158
|
} });
|
|
159
159
|
} catch (e) {
|
|
160
160
|
console.error("Failed to deactivate vibe:", e);
|
|
161
161
|
}
|
|
162
|
-
}, [
|
|
163
|
-
|
|
164
|
-
if (
|
|
162
|
+
}, [Vt, Ht] = E(!1), [Ut, Wt] = E(!1), Gt = T(null);
|
|
163
|
+
C(() => {
|
|
164
|
+
if (!Ut) return;
|
|
165
165
|
let e = (e) => {
|
|
166
166
|
Gt.current?.contains(e.target) || Wt(!1);
|
|
167
167
|
};
|
|
168
168
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
169
|
-
}, [
|
|
169
|
+
}, [Ut]);
|
|
170
170
|
let Kt = async () => {
|
|
171
171
|
if (V?.id) try {
|
|
172
|
-
await
|
|
172
|
+
await Ae({ variables: { id: V.id } }), Ht(!1);
|
|
173
173
|
} catch (e) {
|
|
174
174
|
console.error("Failed to archive vibe:", e);
|
|
175
175
|
}
|
|
@@ -178,39 +178,39 @@ function L() {
|
|
|
178
178
|
}, Jt = async () => {
|
|
179
179
|
let e = z.current?.value?.trim(), t = ht.current?.value, n = gt.current?.value?.trim() || void 0, r = _t.current?.value?.trim() || void 0;
|
|
180
180
|
if (!e) {
|
|
181
|
-
R(
|
|
181
|
+
R(O("vibeDetails.sessionNameRequired", "Session name is required"));
|
|
182
182
|
return;
|
|
183
183
|
}
|
|
184
|
-
let i =
|
|
184
|
+
let i = q?.id;
|
|
185
185
|
if (!i) {
|
|
186
|
-
R(W.length === 0 ?
|
|
186
|
+
R(W.length === 0 ? O("vibeDetails.noAgentAttached", "This vibe has no agent attached. Connect an agent to this vibe before creating a session.") : O("vibeDetails.selectAgent", "Select an agent for this vibe before creating a session."));
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
189
189
|
ft(!0), R(null);
|
|
190
190
|
try {
|
|
191
|
-
await
|
|
191
|
+
await Pe({ variables: { input: {
|
|
192
192
|
name: e,
|
|
193
193
|
type: t || "TERMINAL",
|
|
194
194
|
agentId: i,
|
|
195
195
|
vibeId: V?.id,
|
|
196
196
|
command: n,
|
|
197
197
|
workingDirectory: r || V?.path || void 0
|
|
198
|
-
} } }), lt(!1), z.current && (z.current.value = ""), ht.current && (ht.current.selectedIndex = 0), gt.current && (gt.current.value = ""), _t.current && (_t.current.value = ""), mt(
|
|
198
|
+
} } }), lt(!1), z.current && (z.current.value = ""), ht.current && (ht.current.selectedIndex = 0), gt.current && (gt.current.value = ""), _t.current && (_t.current.value = ""), mt(O("sessions.createdSuccess", "Session created successfully")), setTimeout(() => mt(null), 3e3);
|
|
199
199
|
} catch (e) {
|
|
200
|
-
R(e instanceof Error ? e.message :
|
|
200
|
+
R(e instanceof Error ? e.message : O("sessions.failedCreate", "Failed to create session"));
|
|
201
201
|
} finally {
|
|
202
202
|
ft(!1);
|
|
203
203
|
}
|
|
204
204
|
}, Yt = () => {
|
|
205
|
-
|
|
205
|
+
J && S(`/agents/${J.id}`);
|
|
206
206
|
}, Xt = (e) => {
|
|
207
207
|
S(`/sessions/${e}`);
|
|
208
208
|
}, Zt = (e) => {
|
|
209
209
|
S(`/vibes/${e}`);
|
|
210
210
|
}, Qt = (e) => {
|
|
211
|
-
if (!e) return
|
|
211
|
+
if (!e) return O("health.never", "Never");
|
|
212
212
|
let t = Date.now() - new Date(e).getTime();
|
|
213
|
-
return t < 6e4 ?
|
|
213
|
+
return t < 6e4 ? O("health.justNow", "Just now") : t < 36e5 ? `${Math.floor(t / 6e4)}m ago` : t < 864e5 ? `${Math.floor(t / 36e5)}h ago` : new Date(e).toLocaleDateString();
|
|
214
214
|
}, $t = (e) => {
|
|
215
215
|
switch (e) {
|
|
216
216
|
case "clean": return "text-status-success-text";
|
|
@@ -219,206 +219,206 @@ function L() {
|
|
|
219
219
|
default: return "text-text-secondary";
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
|
-
if (B && !V) return /* @__PURE__ */
|
|
222
|
+
if (B && !V) return /* @__PURE__ */ P(L, {
|
|
223
223
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
225
|
-
onClick:
|
|
224
|
+
children: [/* @__PURE__ */ P("button", {
|
|
225
|
+
onClick: $,
|
|
226
226
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
227
|
-
children: [/* @__PURE__ */
|
|
228
|
-
}), /* @__PURE__ */
|
|
227
|
+
children: [/* @__PURE__ */ N(D, { className: "w-4 h-4" }), O("vibeDetails.backToVibes", "Back to Vibes")]
|
|
228
|
+
}), /* @__PURE__ */ N(re, { variant: "detail" })]
|
|
229
229
|
});
|
|
230
|
-
if (yt && !V) return /* @__PURE__ */
|
|
230
|
+
if (yt && !V) return /* @__PURE__ */ P(L, {
|
|
231
231
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
233
|
-
onClick:
|
|
232
|
+
children: [/* @__PURE__ */ P("button", {
|
|
233
|
+
onClick: $,
|
|
234
234
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
235
|
-
children: [/* @__PURE__ */
|
|
236
|
-
}), /* @__PURE__ */
|
|
237
|
-
title:
|
|
235
|
+
children: [/* @__PURE__ */ N(D, { className: "w-4 h-4" }), O("vibeDetails.backToVibes", "Back to Vibes")]
|
|
236
|
+
}), /* @__PURE__ */ N(p, {
|
|
237
|
+
title: O("vibeDetails.failedLoad", "Failed to load vibe"),
|
|
238
238
|
message: yt.message,
|
|
239
239
|
onRetry: () => bt()
|
|
240
240
|
})]
|
|
241
241
|
});
|
|
242
|
-
if (!V) return /* @__PURE__ */
|
|
242
|
+
if (!V) return /* @__PURE__ */ P(L, {
|
|
243
243
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
245
|
-
onClick:
|
|
244
|
+
children: [/* @__PURE__ */ P("button", {
|
|
245
|
+
onClick: $,
|
|
246
246
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
247
|
-
children: [/* @__PURE__ */
|
|
248
|
-
}), /* @__PURE__ */
|
|
249
|
-
icon: /* @__PURE__ */
|
|
250
|
-
title:
|
|
251
|
-
description: `${
|
|
252
|
-
action: /* @__PURE__ */
|
|
253
|
-
onClick:
|
|
247
|
+
children: [/* @__PURE__ */ N(D, { className: "w-4 h-4" }), O("vibeDetails.backToVibes", "Back to Vibes")]
|
|
248
|
+
}), /* @__PURE__ */ N(h, {
|
|
249
|
+
icon: /* @__PURE__ */ N(A, { className: "w-8 h-8 text-text-secondary" }),
|
|
250
|
+
title: O("vibeDetails.notFound", "Vibe not found"),
|
|
251
|
+
description: `${O("vibeDetails.notFoundDescriptionPrefix", "No vibe with ID")} "${r}" ${O("vibeDetails.notFoundDescriptionSuffix", "exists")}`,
|
|
252
|
+
action: /* @__PURE__ */ N("button", {
|
|
253
|
+
onClick: $,
|
|
254
254
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
255
|
-
children:
|
|
255
|
+
children: O("vibeDetails.backToVibes", "Back to Vibes")
|
|
256
256
|
})
|
|
257
257
|
})]
|
|
258
258
|
});
|
|
259
|
-
let en = V.status === "ACTIVE" || V.status === "RUNNING", tn = G.filter((e) => e.status === "RUNNING").length, nn =
|
|
259
|
+
let en = V.status === "ACTIVE" || V.status === "RUNNING", tn = G.filter((e) => e.status === "RUNNING").length, nn = K.length + +!!At + +!!J, rn = !!(V.gitBranch || V.gitRemote), an = [
|
|
260
260
|
{
|
|
261
261
|
id: "overview",
|
|
262
|
-
label:
|
|
263
|
-
icon:
|
|
262
|
+
label: O("nav.overview", "Overview"),
|
|
263
|
+
icon: je
|
|
264
264
|
},
|
|
265
265
|
{
|
|
266
266
|
id: "config",
|
|
267
|
-
label:
|
|
268
|
-
icon:
|
|
267
|
+
label: O("vibeDetails.config", "Config"),
|
|
268
|
+
icon: He
|
|
269
269
|
},
|
|
270
270
|
{
|
|
271
271
|
id: "git",
|
|
272
|
-
label:
|
|
273
|
-
icon:
|
|
272
|
+
label: O("vibeDetails.git", "Git"),
|
|
273
|
+
icon: Oe,
|
|
274
274
|
badge: rn && V.gitBranch || void 0
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
id: "sessions",
|
|
278
|
-
label:
|
|
279
|
-
icon:
|
|
278
|
+
label: O("nav.sessions", "Sessions"),
|
|
279
|
+
icon: k,
|
|
280
280
|
badge: `${G.length}`
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
283
|
id: "notes",
|
|
284
|
-
label:
|
|
285
|
-
icon:
|
|
284
|
+
label: O("vibeDetails.notes", "Notes"),
|
|
285
|
+
icon: Ee
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
id: "docs",
|
|
289
|
-
label:
|
|
290
|
-
icon:
|
|
289
|
+
label: O("vibeDetails.docs", "Docs"),
|
|
290
|
+
icon: Se
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
293
|
id: "scorecard",
|
|
294
|
-
label:
|
|
295
|
-
icon:
|
|
294
|
+
label: O("vibeDetails.scorecard", "Scorecard"),
|
|
295
|
+
icon: xe
|
|
296
296
|
},
|
|
297
297
|
{
|
|
298
298
|
id: "catalogs",
|
|
299
|
-
label:
|
|
300
|
-
icon:
|
|
299
|
+
label: O("vibeDetails.catalogs", "Catalogs"),
|
|
300
|
+
icon: Me
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
303
|
id: "graphqlPlayground",
|
|
304
|
-
label:
|
|
305
|
-
icon:
|
|
304
|
+
label: O("vibeDetails.graphqlPlayground", "GraphQL"),
|
|
305
|
+
icon: Ie
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
id: "gitops",
|
|
309
|
-
label:
|
|
310
|
-
icon:
|
|
309
|
+
label: O("vibeDetails.gitops", "GitOps"),
|
|
310
|
+
icon: ke
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
id: "security",
|
|
314
|
-
label:
|
|
315
|
-
icon:
|
|
314
|
+
label: O("vibeDetails.security", "Security"),
|
|
315
|
+
icon: Ue
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
id: "related",
|
|
319
|
-
label:
|
|
320
|
-
icon:
|
|
319
|
+
label: O("vibeDetails.related", "Related"),
|
|
320
|
+
icon: Ne,
|
|
321
321
|
badge: nn > 0 ? `${nn}` : void 0
|
|
322
322
|
},
|
|
323
323
|
{
|
|
324
324
|
id: "llmContext",
|
|
325
|
-
label:
|
|
326
|
-
icon:
|
|
325
|
+
label: O("vibeDetails.llmContext", "LLM Context"),
|
|
326
|
+
icon: Ce
|
|
327
327
|
}
|
|
328
|
-
].filter((e) =>
|
|
329
|
-
return /* @__PURE__ */
|
|
328
|
+
].filter((e) => $e.has(e.id) ? !0 : !(!U(e.id) || !kt(e.id) || !Rt && tt.has(e.id) || e.id === "git" && Et?.value === !0 || e.id === "graphqlPlayground" && Dt?.value === !0 || e.id === "gitops" && Ot?.value === !0));
|
|
329
|
+
return /* @__PURE__ */ P(L, {
|
|
330
330
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
331
331
|
children: [
|
|
332
|
-
pt && /* @__PURE__ */
|
|
332
|
+
pt && /* @__PURE__ */ N("div", {
|
|
333
333
|
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",
|
|
334
334
|
children: pt
|
|
335
335
|
}),
|
|
336
|
-
/* @__PURE__ */
|
|
337
|
-
onClick:
|
|
336
|
+
/* @__PURE__ */ P("button", {
|
|
337
|
+
onClick: $,
|
|
338
338
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
339
|
-
children: [/* @__PURE__ */
|
|
339
|
+
children: [/* @__PURE__ */ N(D, { className: "w-4 h-4" }), O("vibeDetails.backToVibes", "Back to Vibes")]
|
|
340
340
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ N(f, {
|
|
342
342
|
title: V.name,
|
|
343
|
-
description: V.description ||
|
|
343
|
+
description: V.description || O("vibeDetails.noDescription", "No description"),
|
|
344
344
|
breadcrumb: [{
|
|
345
|
-
label:
|
|
345
|
+
label: O("nav.vibes", "Vibes"),
|
|
346
346
|
path: ae ? `${ae}/vibes` : "/vibes"
|
|
347
347
|
}, { label: V.name }],
|
|
348
|
-
actions: /* @__PURE__ */
|
|
348
|
+
actions: /* @__PURE__ */ P("div", {
|
|
349
349
|
className: "flex items-center gap-2 flex-wrap",
|
|
350
350
|
children: [
|
|
351
|
-
/* @__PURE__ */
|
|
351
|
+
/* @__PURE__ */ N("button", {
|
|
352
352
|
onClick: () => bt(),
|
|
353
353
|
disabled: B,
|
|
354
354
|
className: "flex items-center justify-center p-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
|
|
355
|
-
title:
|
|
356
|
-
children: /* @__PURE__ */
|
|
355
|
+
title: O("common.refresh", "Refresh"),
|
|
356
|
+
children: /* @__PURE__ */ N(Be, { className: `w-4 h-4 ${B ? "animate-spin" : ""}` })
|
|
357
357
|
}),
|
|
358
|
-
/* @__PURE__ */
|
|
358
|
+
/* @__PURE__ */ N(ie, {
|
|
359
359
|
vibeId: V.id,
|
|
360
360
|
workspacePath: V.path,
|
|
361
|
-
tunnelUrl:
|
|
362
|
-
agentApiKey:
|
|
363
|
-
profile:
|
|
361
|
+
tunnelUrl: Mt,
|
|
362
|
+
agentApiKey: Nt,
|
|
363
|
+
profile: Y ?? "default",
|
|
364
364
|
browserEditorEnabled: U("browserEditor")
|
|
365
365
|
}),
|
|
366
|
-
/* @__PURE__ */
|
|
366
|
+
/* @__PURE__ */ N(Xe, {
|
|
367
367
|
permission: y.SESSION_CREATE,
|
|
368
368
|
deniedBehavior: "disable",
|
|
369
369
|
deniedTooltip: "You don't have permission to create sessions",
|
|
370
|
-
children: /* @__PURE__ */
|
|
370
|
+
children: /* @__PURE__ */ P("button", {
|
|
371
371
|
onClick: qt,
|
|
372
372
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 sm:px-3 sm:py-2 text-xs sm:text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
373
373
|
children: [
|
|
374
|
-
/* @__PURE__ */
|
|
375
|
-
/* @__PURE__ */
|
|
374
|
+
/* @__PURE__ */ N(ze, { className: "w-3.5 h-3.5 sm:w-4 sm:h-4" }),
|
|
375
|
+
/* @__PURE__ */ N("span", {
|
|
376
376
|
className: "hidden sm:inline",
|
|
377
|
-
children:
|
|
377
|
+
children: O("vibeDetails.new", "New")
|
|
378
378
|
}),
|
|
379
|
-
/* @__PURE__ */
|
|
379
|
+
/* @__PURE__ */ N("span", {
|
|
380
380
|
className: "hidden sm:inline",
|
|
381
|
-
children:
|
|
381
|
+
children: O("nav.sessions", "Session")
|
|
382
382
|
})
|
|
383
383
|
]
|
|
384
384
|
})
|
|
385
385
|
}),
|
|
386
|
-
/* @__PURE__ */
|
|
386
|
+
/* @__PURE__ */ N(Xe, {
|
|
387
387
|
permission: y.VIBE_UPDATE,
|
|
388
388
|
deniedBehavior: "disable",
|
|
389
389
|
deniedTooltip: "You don't have permission to manage this vibe",
|
|
390
|
-
children: /* @__PURE__ */
|
|
390
|
+
children: /* @__PURE__ */ P("div", {
|
|
391
391
|
className: "relative",
|
|
392
392
|
ref: Gt,
|
|
393
|
-
children: [/* @__PURE__ */
|
|
393
|
+
children: [/* @__PURE__ */ N("button", {
|
|
394
394
|
type: "button",
|
|
395
395
|
onClick: () => Wt((e) => !e),
|
|
396
396
|
"aria-haspopup": "menu",
|
|
397
|
-
"aria-expanded":
|
|
398
|
-
"aria-label":
|
|
399
|
-
title:
|
|
397
|
+
"aria-expanded": Ut,
|
|
398
|
+
"aria-label": O("common.moreActions", "More actions"),
|
|
399
|
+
title: O("common.moreActions", "More actions"),
|
|
400
400
|
className: "flex items-center justify-center p-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
|
|
401
|
-
children: /* @__PURE__ */
|
|
402
|
-
}),
|
|
401
|
+
children: /* @__PURE__ */ N(Fe, { className: "w-4 h-4" })
|
|
402
|
+
}), Ut && /* @__PURE__ */ P("div", {
|
|
403
403
|
role: "menu",
|
|
404
404
|
className: "absolute right-0 mt-2 min-w-[12rem] bg-bg-elevated border border-border-default rounded-md shadow-lg z-20 py-1",
|
|
405
405
|
children: [
|
|
406
|
-
/* @__PURE__ */
|
|
406
|
+
/* @__PURE__ */ N("button", {
|
|
407
407
|
role: "menuitem",
|
|
408
408
|
onClick: () => {
|
|
409
|
-
Wt(!1), en ?
|
|
409
|
+
Wt(!1), en ? Bt() : zt();
|
|
410
410
|
},
|
|
411
411
|
className: "w-full flex items-center gap-2 px-3 py-2 text-sm text-text-primary hover:bg-action-ghost-bg-hover text-left",
|
|
412
|
-
children: en ? /* @__PURE__ */
|
|
412
|
+
children: en ? /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N(Le, { className: "w-4 h-4 text-text-secondary" }), /* @__PURE__ */ N("span", { children: O("vibeDetails.pauseVibe", "Pause vibe (stop scheduled runs)") })] }) : /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N(Re, { className: "w-4 h-4 text-status-success-text" }), /* @__PURE__ */ N("span", { children: O("vibeDetails.resumeVibe", "Resume vibe (re-enable scheduled runs)") })] })
|
|
413
413
|
}),
|
|
414
|
-
/* @__PURE__ */
|
|
415
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ N("div", { className: "border-t border-border-subtle my-1" }),
|
|
415
|
+
/* @__PURE__ */ P("button", {
|
|
416
416
|
role: "menuitem",
|
|
417
417
|
onClick: () => {
|
|
418
|
-
Wt(!1),
|
|
418
|
+
Wt(!1), Ht(!0);
|
|
419
419
|
},
|
|
420
420
|
className: "w-full flex items-center gap-2 px-3 py-2 text-sm text-status-warning-text hover:bg-action-ghost-bg-hover text-left",
|
|
421
|
-
children: [/* @__PURE__ */
|
|
421
|
+
children: [/* @__PURE__ */ N(be, { className: "w-4 h-4" }), /* @__PURE__ */ N("span", { children: O("vibeDetails.archive", "Archive vibe…") })]
|
|
422
422
|
})
|
|
423
423
|
]
|
|
424
424
|
})]
|
|
@@ -427,104 +427,104 @@ function L() {
|
|
|
427
427
|
]
|
|
428
428
|
})
|
|
429
429
|
}),
|
|
430
|
-
|
|
430
|
+
Vt && /* @__PURE__ */ N("div", {
|
|
431
431
|
role: "dialog",
|
|
432
432
|
"aria-modal": "true",
|
|
433
433
|
"aria-labelledby": "archive-vibe-title",
|
|
434
434
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
435
435
|
onClick: (e) => {
|
|
436
|
-
e.target === e.currentTarget &&
|
|
436
|
+
e.target === e.currentTarget && Ht(!1);
|
|
437
437
|
},
|
|
438
|
-
children: /* @__PURE__ */
|
|
438
|
+
children: /* @__PURE__ */ P("div", {
|
|
439
439
|
className: "w-full max-w-md rounded-lg bg-bg-elevated border border-border-default shadow-xl p-5",
|
|
440
440
|
children: [
|
|
441
|
-
/* @__PURE__ */
|
|
441
|
+
/* @__PURE__ */ N("h2", {
|
|
442
442
|
id: "archive-vibe-title",
|
|
443
443
|
className: "text-base font-semibold text-text-primary mb-2",
|
|
444
|
-
children:
|
|
444
|
+
children: O("vibeDetails.archiveConfirmTitle", "Archive this vibe?")
|
|
445
445
|
}),
|
|
446
|
-
/* @__PURE__ */
|
|
446
|
+
/* @__PURE__ */ N("p", {
|
|
447
447
|
className: "text-sm text-text-secondary mb-4",
|
|
448
|
-
children:
|
|
448
|
+
children: O("vibeDetails.archiveConfirmBody", "Archived vibes are hidden from the active list and their scheduled actions stop firing. You can restore the vibe later from the archived view. Existing sessions, tunnels, and audit history are preserved.")
|
|
449
449
|
}),
|
|
450
|
-
/* @__PURE__ */
|
|
450
|
+
/* @__PURE__ */ P("div", {
|
|
451
451
|
className: "flex justify-end gap-2",
|
|
452
|
-
children: [/* @__PURE__ */
|
|
452
|
+
children: [/* @__PURE__ */ N("button", {
|
|
453
453
|
type: "button",
|
|
454
|
-
onClick: () =>
|
|
454
|
+
onClick: () => Ht(!1),
|
|
455
455
|
className: "text-sm px-3 py-1.5 rounded-md border border-border-default text-text-primary hover:bg-action-ghost-bg-hover",
|
|
456
|
-
children:
|
|
457
|
-
}), /* @__PURE__ */
|
|
456
|
+
children: O("common.cancel", "Cancel")
|
|
457
|
+
}), /* @__PURE__ */ N("button", {
|
|
458
458
|
type: "button",
|
|
459
459
|
onClick: Kt,
|
|
460
460
|
className: "text-sm px-3 py-1.5 rounded-md bg-status-warning-bg text-status-warning-text hover:opacity-80",
|
|
461
|
-
children:
|
|
461
|
+
children: O("vibeDetails.archive", "Archive")
|
|
462
462
|
})]
|
|
463
463
|
})
|
|
464
464
|
]
|
|
465
465
|
})
|
|
466
466
|
}),
|
|
467
|
-
/* @__PURE__ */
|
|
467
|
+
/* @__PURE__ */ P(Ye, {
|
|
468
468
|
stagger: .04,
|
|
469
469
|
className: "grid grid-cols-2 sm:grid-cols-4 gap-3 sm:gap-4",
|
|
470
470
|
children: [
|
|
471
|
-
/* @__PURE__ */
|
|
471
|
+
/* @__PURE__ */ N(I, { children: /* @__PURE__ */ N(_, {
|
|
472
472
|
className: "p-3 sm:p-4",
|
|
473
|
-
children: /* @__PURE__ */
|
|
473
|
+
children: /* @__PURE__ */ P("div", {
|
|
474
474
|
className: "flex items-center gap-2 sm:gap-3",
|
|
475
|
-
children: [/* @__PURE__ */
|
|
475
|
+
children: [/* @__PURE__ */ N("div", {
|
|
476
476
|
className: "w-8 h-8 sm:w-10 sm:h-10 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0",
|
|
477
|
-
children: /* @__PURE__ */
|
|
478
|
-
}), /* @__PURE__ */
|
|
477
|
+
children: /* @__PURE__ */ N(A, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
478
|
+
}), /* @__PURE__ */ P("div", {
|
|
479
479
|
className: "min-w-0",
|
|
480
|
-
children: [/* @__PURE__ */
|
|
480
|
+
children: [/* @__PURE__ */ N("p", {
|
|
481
481
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
482
|
-
title:
|
|
483
|
-
children:
|
|
484
|
-
}), /* @__PURE__ */
|
|
482
|
+
title: O("vibeDetails.statusTooltip", "ACTIVE: vibe is in your default working set and can run sessions, tunnels and GitOps via its attached agent(s). INACTIVE: vibe is parked — still visible, no sessions auto-resume. RUNNING: at least one session is live. ARCHIVED: hidden from default lists; can be restored."),
|
|
483
|
+
children: O("sessions.filterStatus", "Status")
|
|
484
|
+
}), /* @__PURE__ */ N(g, {
|
|
485
485
|
status: V.status,
|
|
486
486
|
size: "md"
|
|
487
487
|
})]
|
|
488
488
|
})]
|
|
489
489
|
})
|
|
490
490
|
}) }),
|
|
491
|
-
/* @__PURE__ */
|
|
491
|
+
/* @__PURE__ */ N(I, { children: /* @__PURE__ */ N(_, {
|
|
492
492
|
className: "p-3 sm:p-4",
|
|
493
|
-
children: /* @__PURE__ */
|
|
493
|
+
children: /* @__PURE__ */ P("div", {
|
|
494
494
|
className: "flex items-center gap-2 sm:gap-3",
|
|
495
|
-
children: [/* @__PURE__ */
|
|
495
|
+
children: [/* @__PURE__ */ N("div", {
|
|
496
496
|
className: "w-8 h-8 sm:w-10 sm:h-10 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0",
|
|
497
|
-
children: /* @__PURE__ */
|
|
498
|
-
}), /* @__PURE__ */
|
|
497
|
+
children: /* @__PURE__ */ N(Ve, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
498
|
+
}), /* @__PURE__ */ P("div", {
|
|
499
499
|
className: "min-w-0 flex-1",
|
|
500
|
-
children: [/* @__PURE__ */
|
|
500
|
+
children: [/* @__PURE__ */ N("p", {
|
|
501
501
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
502
|
-
children:
|
|
503
|
-
}), /* @__PURE__ */
|
|
502
|
+
children: O("sessions.filterAgent", "Agent")
|
|
503
|
+
}), /* @__PURE__ */ N("p", {
|
|
504
504
|
className: "font-semibold text-text-primary text-sm sm:text-base truncate",
|
|
505
|
-
children:
|
|
505
|
+
children: J?.name || O("targets.unknown", "Unknown")
|
|
506
506
|
})]
|
|
507
507
|
})]
|
|
508
508
|
})
|
|
509
509
|
}) }),
|
|
510
|
-
/* @__PURE__ */
|
|
510
|
+
/* @__PURE__ */ N(I, { children: /* @__PURE__ */ N(_, {
|
|
511
511
|
className: "p-3 sm:p-4",
|
|
512
|
-
children: /* @__PURE__ */
|
|
512
|
+
children: /* @__PURE__ */ P("div", {
|
|
513
513
|
className: "flex items-center gap-2 sm:gap-3",
|
|
514
|
-
children: [/* @__PURE__ */
|
|
514
|
+
children: [/* @__PURE__ */ N("div", {
|
|
515
515
|
className: "w-8 h-8 sm:w-10 sm:h-10 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0",
|
|
516
|
-
children: /* @__PURE__ */
|
|
517
|
-
}), /* @__PURE__ */
|
|
516
|
+
children: /* @__PURE__ */ N(k, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
517
|
+
}), /* @__PURE__ */ P("div", {
|
|
518
518
|
className: "min-w-0",
|
|
519
|
-
children: [/* @__PURE__ */
|
|
519
|
+
children: [/* @__PURE__ */ N("p", {
|
|
520
520
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
521
|
-
children:
|
|
522
|
-
}), /* @__PURE__ */
|
|
521
|
+
children: O("nav.sessions", "Sessions")
|
|
522
|
+
}), /* @__PURE__ */ P("p", {
|
|
523
523
|
className: "font-semibold text-text-primary text-sm sm:text-base",
|
|
524
524
|
children: [
|
|
525
525
|
tn,
|
|
526
526
|
" ",
|
|
527
|
-
|
|
527
|
+
O("health.active", "active")
|
|
528
528
|
]
|
|
529
529
|
})]
|
|
530
530
|
})]
|
|
@@ -532,33 +532,33 @@ function L() {
|
|
|
532
532
|
}) })
|
|
533
533
|
]
|
|
534
534
|
}),
|
|
535
|
-
/* @__PURE__ */
|
|
535
|
+
/* @__PURE__ */ N("div", {
|
|
536
536
|
className: "border-b border-border-default",
|
|
537
|
-
children: /* @__PURE__ */
|
|
537
|
+
children: /* @__PURE__ */ P("nav", {
|
|
538
538
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
539
|
-
"aria-label":
|
|
539
|
+
"aria-label": O("vibeDetails.tabsAriaLabel", "Vibe tabs"),
|
|
540
540
|
children: [
|
|
541
541
|
an.map((e) => {
|
|
542
|
-
let t = e.icon, n =
|
|
543
|
-
return /* @__PURE__ */
|
|
544
|
-
onClick: () =>
|
|
542
|
+
let t = e.icon, n = Q === e.id;
|
|
543
|
+
return /* @__PURE__ */ P("button", {
|
|
544
|
+
onClick: () => Ft(e.id),
|
|
545
545
|
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"}`,
|
|
546
546
|
"aria-selected": n,
|
|
547
547
|
role: "tab",
|
|
548
548
|
children: [
|
|
549
|
-
/* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ N(t, { className: "w-4 h-4" }),
|
|
550
550
|
e.label,
|
|
551
|
-
e.badge && /* @__PURE__ */
|
|
551
|
+
e.badge && /* @__PURE__ */ N("span", {
|
|
552
552
|
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"}`,
|
|
553
553
|
children: e.badge
|
|
554
554
|
})
|
|
555
555
|
]
|
|
556
556
|
}, e.id);
|
|
557
557
|
}),
|
|
558
|
-
|
|
559
|
-
let t =
|
|
560
|
-
return /* @__PURE__ */
|
|
561
|
-
onClick: () =>
|
|
558
|
+
X && Z.data.map((e) => {
|
|
559
|
+
let t = Q === e.contribution.id;
|
|
560
|
+
return /* @__PURE__ */ N("button", {
|
|
561
|
+
onClick: () => Ft(e.contribution.id),
|
|
562
562
|
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"}`,
|
|
563
563
|
"aria-selected": t,
|
|
564
564
|
role: "tab",
|
|
@@ -566,16 +566,16 @@ function L() {
|
|
|
566
566
|
children: e.contribution.title
|
|
567
567
|
}, `plugin-${e.contribution.id}`);
|
|
568
568
|
}),
|
|
569
|
-
|
|
569
|
+
X && q && /* @__PURE__ */ P("button", {
|
|
570
570
|
type: "button",
|
|
571
|
-
onClick: () =>
|
|
571
|
+
onClick: () => Lt(!0),
|
|
572
572
|
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",
|
|
573
573
|
title: "Install a UI plugin tab",
|
|
574
574
|
"aria-label": "Add tab",
|
|
575
|
-
children: [/* @__PURE__ */
|
|
575
|
+
children: [/* @__PURE__ */ N("span", {
|
|
576
576
|
"aria-hidden": !0,
|
|
577
577
|
children: "+"
|
|
578
|
-
}), /* @__PURE__ */
|
|
578
|
+
}), /* @__PURE__ */ N("span", {
|
|
579
579
|
className: "hidden sm:inline",
|
|
580
580
|
children: "Add tab"
|
|
581
581
|
})]
|
|
@@ -583,10 +583,10 @@ function L() {
|
|
|
583
583
|
]
|
|
584
584
|
})
|
|
585
585
|
}),
|
|
586
|
-
/* @__PURE__ */
|
|
586
|
+
/* @__PURE__ */ P(Je, {
|
|
587
587
|
mode: "wait",
|
|
588
588
|
children: [
|
|
589
|
-
|
|
589
|
+
Q === "overview" && /* @__PURE__ */ P(j.div, {
|
|
590
590
|
initial: {
|
|
591
591
|
opacity: 0,
|
|
592
592
|
y: 8
|
|
@@ -602,56 +602,56 @@ function L() {
|
|
|
602
602
|
transition: { duration: .2 },
|
|
603
603
|
className: "space-y-6",
|
|
604
604
|
children: [
|
|
605
|
-
V.description && /* @__PURE__ */
|
|
605
|
+
V.description && /* @__PURE__ */ N(_, { children: /* @__PURE__ */ N("div", {
|
|
606
606
|
className: "p-4",
|
|
607
|
-
children: /* @__PURE__ */
|
|
607
|
+
children: /* @__PURE__ */ N("p", {
|
|
608
608
|
className: "text-text-primary",
|
|
609
609
|
children: V.description
|
|
610
610
|
})
|
|
611
611
|
}) }),
|
|
612
|
-
!
|
|
612
|
+
!Rt && /* @__PURE__ */ N(fe, {
|
|
613
613
|
vibeId: V.id,
|
|
614
|
-
tr:
|
|
614
|
+
tr: O,
|
|
615
615
|
onAttached: () => bt()
|
|
616
616
|
}),
|
|
617
|
-
|
|
617
|
+
Rt && /* @__PURE__ */ N(pe, {
|
|
618
618
|
vibeId: V.id,
|
|
619
619
|
attachedAgents: W,
|
|
620
|
-
effectiveAgentId:
|
|
620
|
+
effectiveAgentId: q?.id ?? null
|
|
621
621
|
}),
|
|
622
|
-
/* @__PURE__ */
|
|
622
|
+
/* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
623
623
|
className: "p-3 sm:p-4 border-b border-border-default",
|
|
624
|
-
children: /* @__PURE__ */
|
|
624
|
+
children: /* @__PURE__ */ P("h3", {
|
|
625
625
|
className: "font-semibold text-text-primary flex items-center gap-2 text-sm sm:text-base",
|
|
626
|
-
children: [/* @__PURE__ */
|
|
626
|
+
children: [/* @__PURE__ */ N(De, { className: "w-4 h-4 sm:w-5 sm:h-5" }), O("vibeDetails.path", "Path")]
|
|
627
627
|
})
|
|
628
|
-
}), /* @__PURE__ */
|
|
628
|
+
}), /* @__PURE__ */ N("div", {
|
|
629
629
|
className: "p-3 sm:p-4",
|
|
630
|
-
children: /* @__PURE__ */
|
|
630
|
+
children: /* @__PURE__ */ N("div", {
|
|
631
631
|
className: "bg-bg-sunken rounded-md p-2 sm:p-3 font-mono text-xs sm:text-sm text-text-primary overflow-x-auto break-all",
|
|
632
632
|
children: V.path
|
|
633
633
|
})
|
|
634
634
|
})] }),
|
|
635
|
-
/* @__PURE__ */
|
|
635
|
+
/* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
636
636
|
className: "p-4 border-b border-border-default",
|
|
637
|
-
children: /* @__PURE__ */
|
|
637
|
+
children: /* @__PURE__ */ P("h3", {
|
|
638
638
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
639
|
-
children: [/* @__PURE__ */
|
|
639
|
+
children: [/* @__PURE__ */ N(we, { className: "w-5 h-5" }), O("vibeDetails.timeline", "Timeline")]
|
|
640
640
|
})
|
|
641
|
-
}), /* @__PURE__ */
|
|
641
|
+
}), /* @__PURE__ */ N("div", {
|
|
642
642
|
className: "p-4",
|
|
643
|
-
children: /* @__PURE__ */
|
|
643
|
+
children: /* @__PURE__ */ P("div", {
|
|
644
644
|
className: "grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm",
|
|
645
|
-
children: [/* @__PURE__ */
|
|
645
|
+
children: [/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
646
646
|
className: "text-text-secondary",
|
|
647
|
-
children:
|
|
648
|
-
}), /* @__PURE__ */
|
|
647
|
+
children: O("vibeDetails.created", "Created")
|
|
648
|
+
}), /* @__PURE__ */ N("p", {
|
|
649
649
|
className: "font-medium text-text-primary",
|
|
650
650
|
children: Qt(V.createdAt)
|
|
651
|
-
})] }), /* @__PURE__ */
|
|
651
|
+
})] }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
652
652
|
className: "text-text-secondary",
|
|
653
|
-
children:
|
|
654
|
-
}), /* @__PURE__ */
|
|
653
|
+
children: O("vibeDetails.updated", "Updated")
|
|
654
|
+
}), /* @__PURE__ */ N("p", {
|
|
655
655
|
className: "font-medium text-text-primary",
|
|
656
656
|
children: Qt(V.updatedAt)
|
|
657
657
|
})] })]
|
|
@@ -659,7 +659,7 @@ function L() {
|
|
|
659
659
|
})] })
|
|
660
660
|
]
|
|
661
661
|
}, "overview"),
|
|
662
|
-
|
|
662
|
+
Q === "config" && /* @__PURE__ */ P(j.div, {
|
|
663
663
|
initial: {
|
|
664
664
|
opacity: 0,
|
|
665
665
|
y: 8
|
|
@@ -675,17 +675,17 @@ function L() {
|
|
|
675
675
|
transition: { duration: .2 },
|
|
676
676
|
className: "space-y-6",
|
|
677
677
|
children: [
|
|
678
|
-
/* @__PURE__ */
|
|
678
|
+
/* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
679
679
|
className: "p-4 border-b border-border-default",
|
|
680
|
-
children: /* @__PURE__ */
|
|
680
|
+
children: /* @__PURE__ */ P("h3", {
|
|
681
681
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
682
|
-
children: [/* @__PURE__ */
|
|
682
|
+
children: [/* @__PURE__ */ N(Ge, { className: "w-5 h-5" }), O("vibeDetails.environmentVariables", "Environment Variables")]
|
|
683
683
|
})
|
|
684
|
-
}), /* @__PURE__ */
|
|
684
|
+
}), /* @__PURE__ */ N("div", {
|
|
685
685
|
className: "p-4",
|
|
686
|
-
children: V.environmentVariables && Object.keys(V.environmentVariables).length > 0 ? /* @__PURE__ */
|
|
686
|
+
children: V.environmentVariables && Object.keys(V.environmentVariables).length > 0 ? /* @__PURE__ */ N("div", {
|
|
687
687
|
className: "flex flex-wrap gap-2",
|
|
688
|
-
children: Object.entries(V.environmentVariables).map(([e, t]) => /* @__PURE__ */
|
|
688
|
+
children: Object.entries(V.environmentVariables).map(([e, t]) => /* @__PURE__ */ P("span", {
|
|
689
689
|
className: "px-3 py-1 bg-bg-sunken text-text-primary text-sm rounded-full font-mono",
|
|
690
690
|
children: [
|
|
691
691
|
e,
|
|
@@ -693,43 +693,43 @@ function L() {
|
|
|
693
693
|
String(t)
|
|
694
694
|
]
|
|
695
695
|
}, e))
|
|
696
|
-
}) : /* @__PURE__ */
|
|
696
|
+
}) : /* @__PURE__ */ N("p", {
|
|
697
697
|
className: "text-text-secondary",
|
|
698
|
-
children:
|
|
698
|
+
children: O("vibeDetails.noEnvironmentVariables", "No environment variables configured")
|
|
699
699
|
})
|
|
700
700
|
})] }),
|
|
701
|
-
/* @__PURE__ */
|
|
701
|
+
/* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
702
702
|
className: "p-4 border-b border-border-default",
|
|
703
|
-
children: /* @__PURE__ */
|
|
703
|
+
children: /* @__PURE__ */ P("h3", {
|
|
704
704
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
705
|
-
children: [/* @__PURE__ */
|
|
705
|
+
children: [/* @__PURE__ */ N(We, { className: "w-5 h-5" }), O("vibeDetails.tags", "Tags")]
|
|
706
706
|
})
|
|
707
|
-
}), /* @__PURE__ */
|
|
707
|
+
}), /* @__PURE__ */ N("div", {
|
|
708
708
|
className: "p-4",
|
|
709
|
-
children: /* @__PURE__ */
|
|
709
|
+
children: /* @__PURE__ */ N(m, {
|
|
710
710
|
entityType: "VIBECONTROLS_VIBE",
|
|
711
711
|
entityId: V.id
|
|
712
712
|
})
|
|
713
713
|
})] }),
|
|
714
|
-
/* @__PURE__ */
|
|
714
|
+
/* @__PURE__ */ P(_, { children: [/* @__PURE__ */ P("div", {
|
|
715
715
|
className: "p-4 border-b border-border-default",
|
|
716
|
-
children: [/* @__PURE__ */
|
|
716
|
+
children: [/* @__PURE__ */ P("h3", {
|
|
717
717
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
718
|
-
children: [/* @__PURE__ */
|
|
719
|
-
}), /* @__PURE__ */
|
|
718
|
+
children: [/* @__PURE__ */ N(He, { className: "w-5 h-5" }), O("vibeDetails.features", "Features")]
|
|
719
|
+
}), /* @__PURE__ */ N("p", {
|
|
720
720
|
className: "text-sm text-text-secondary mt-1",
|
|
721
|
-
children:
|
|
721
|
+
children: O("vibeDetails.featuresDescription", "Toggle which sections show up on this vibe. Changes apply to everyone viewing the vibe.")
|
|
722
722
|
})]
|
|
723
|
-
}), /* @__PURE__ */
|
|
723
|
+
}), /* @__PURE__ */ N("div", {
|
|
724
724
|
className: "p-4 space-y-2",
|
|
725
|
-
children:
|
|
725
|
+
children: at.map((e) => {
|
|
726
726
|
let t = U(e.id);
|
|
727
|
-
return /* @__PURE__ */
|
|
727
|
+
return /* @__PURE__ */ P("label", {
|
|
728
728
|
className: "flex items-center justify-between gap-4 py-2 cursor-pointer",
|
|
729
|
-
children: [/* @__PURE__ */
|
|
729
|
+
children: [/* @__PURE__ */ N("span", {
|
|
730
730
|
className: "text-sm font-medium text-text-primary",
|
|
731
731
|
children: e.label
|
|
732
|
-
}), /* @__PURE__ */
|
|
732
|
+
}), /* @__PURE__ */ N("input", {
|
|
733
733
|
type: "checkbox",
|
|
734
734
|
role: "switch",
|
|
735
735
|
"aria-label": e.label,
|
|
@@ -768,7 +768,7 @@ function L() {
|
|
|
768
768
|
})] })
|
|
769
769
|
]
|
|
770
770
|
}, "config"),
|
|
771
|
-
|
|
771
|
+
Q === "git" && U("git") && /* @__PURE__ */ N(j.div, {
|
|
772
772
|
initial: {
|
|
773
773
|
opacity: 0,
|
|
774
774
|
y: 8
|
|
@@ -783,57 +783,57 @@ function L() {
|
|
|
783
783
|
},
|
|
784
784
|
transition: { duration: .2 },
|
|
785
785
|
className: "space-y-6",
|
|
786
|
-
children: /* @__PURE__ */
|
|
787
|
-
agentId:
|
|
786
|
+
children: /* @__PURE__ */ N(v, {
|
|
787
|
+
agentId: q?.id ?? null,
|
|
788
788
|
required: ["@vibecontrols/vibe-plugin-tool-git"],
|
|
789
789
|
mode: "all",
|
|
790
|
-
eyebrow:
|
|
791
|
-
title:
|
|
792
|
-
description:
|
|
793
|
-
children: rn ? /* @__PURE__ */
|
|
790
|
+
eyebrow: O("vibeDetails.gitPluginEyebrow", "Git plugin required"),
|
|
791
|
+
title: O("vibeDetails.gitPluginTitle", "Install the git plugin"),
|
|
792
|
+
description: O("vibeDetails.gitPluginDescription", "Live git branch, status, and remote data for this vibe are served by the vibe-plugin-tool-git agent plugin."),
|
|
793
|
+
children: rn ? /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
794
794
|
className: "p-4 border-b border-border-default",
|
|
795
|
-
children: /* @__PURE__ */
|
|
795
|
+
children: /* @__PURE__ */ P("h3", {
|
|
796
796
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
797
|
-
children: [/* @__PURE__ */
|
|
797
|
+
children: [/* @__PURE__ */ N(Oe, { className: "w-5 h-5" }), O("vibeDetails.gitInformation", "Git Information")]
|
|
798
798
|
})
|
|
799
|
-
}), /* @__PURE__ */
|
|
799
|
+
}), /* @__PURE__ */ P("div", {
|
|
800
800
|
className: "p-4 space-y-3",
|
|
801
|
-
children: [/* @__PURE__ */
|
|
801
|
+
children: [/* @__PURE__ */ P("div", {
|
|
802
802
|
className: "flex items-center gap-4 flex-wrap",
|
|
803
|
-
children: [V.gitBranch && /* @__PURE__ */
|
|
803
|
+
children: [V.gitBranch && /* @__PURE__ */ P("div", {
|
|
804
804
|
className: "flex items-center gap-2",
|
|
805
|
-
children: [/* @__PURE__ */
|
|
805
|
+
children: [/* @__PURE__ */ P("span", {
|
|
806
806
|
className: "text-sm text-text-secondary",
|
|
807
|
-
children: [
|
|
808
|
-
}), /* @__PURE__ */
|
|
807
|
+
children: [O("vibeDetails.branch", "Branch"), ":"]
|
|
808
|
+
}), /* @__PURE__ */ N("span", {
|
|
809
809
|
className: "px-2 py-1 bg-bg-sunken text-text-primary text-sm rounded font-mono",
|
|
810
810
|
children: V.gitBranch
|
|
811
811
|
})]
|
|
812
|
-
}), V.gitStatus && /* @__PURE__ */
|
|
812
|
+
}), V.gitStatus && /* @__PURE__ */ P("div", {
|
|
813
813
|
className: "flex items-center gap-2",
|
|
814
|
-
children: [/* @__PURE__ */
|
|
814
|
+
children: [/* @__PURE__ */ P("span", {
|
|
815
815
|
className: "text-sm text-text-secondary",
|
|
816
|
-
children: [
|
|
817
|
-
}), /* @__PURE__ */
|
|
816
|
+
children: [O("sessions.filterStatus", "Status"), ":"]
|
|
817
|
+
}), /* @__PURE__ */ N("span", {
|
|
818
818
|
className: `font-medium ${$t(V.gitStatus)}`,
|
|
819
819
|
children: V.gitStatus
|
|
820
820
|
})]
|
|
821
821
|
})]
|
|
822
|
-
}), V.gitRemote && /* @__PURE__ */
|
|
822
|
+
}), V.gitRemote && /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ P("span", {
|
|
823
823
|
className: "text-sm text-text-secondary",
|
|
824
|
-
children: [
|
|
825
|
-
}), /* @__PURE__ */
|
|
824
|
+
children: [O("vibeDetails.remote", "Remote"), ":"]
|
|
825
|
+
}), /* @__PURE__ */ N("p", {
|
|
826
826
|
className: "font-mono text-sm text-text-primary mt-1 break-all",
|
|
827
827
|
children: V.gitRemote
|
|
828
828
|
})] })]
|
|
829
|
-
})] }) : /* @__PURE__ */
|
|
830
|
-
icon: /* @__PURE__ */
|
|
831
|
-
title:
|
|
832
|
-
description:
|
|
829
|
+
})] }) : /* @__PURE__ */ N(h, {
|
|
830
|
+
icon: /* @__PURE__ */ N(Oe, { className: "w-8 h-8 text-text-secondary" }),
|
|
831
|
+
title: O("vibeDetails.noGitInformation", "No git information"),
|
|
832
|
+
description: O("vibeDetails.noGitInformationDescription", "This vibe does not have any git repository linked")
|
|
833
833
|
})
|
|
834
834
|
})
|
|
835
835
|
}, "git"),
|
|
836
|
-
|
|
836
|
+
Q === "sessions" && U("sessions") && /* @__PURE__ */ N(j.div, {
|
|
837
837
|
initial: {
|
|
838
838
|
opacity: 0,
|
|
839
839
|
y: 8
|
|
@@ -847,66 +847,66 @@ function L() {
|
|
|
847
847
|
y: -8
|
|
848
848
|
},
|
|
849
849
|
transition: { duration: .2 },
|
|
850
|
-
children: /* @__PURE__ */
|
|
851
|
-
agentId:
|
|
850
|
+
children: /* @__PURE__ */ N(v, {
|
|
851
|
+
agentId: q?.id ?? null,
|
|
852
852
|
requirements: [{
|
|
853
853
|
packages: ["@vibecontrols/vibe-plugin-session-manager"],
|
|
854
854
|
mode: "all",
|
|
855
|
-
eyebrow:
|
|
856
|
-
title:
|
|
857
|
-
description:
|
|
855
|
+
eyebrow: O("vibeDetails.sessionsManagerEyebrow", "Session manager required"),
|
|
856
|
+
title: O("vibeDetails.sessionsManagerTitle", "Install the session manager"),
|
|
857
|
+
description: O("vibeDetails.sessionsManagerDescription", "Sessions are orchestrated by the unified session manager plugin. Install it to continue.")
|
|
858
858
|
}, {
|
|
859
859
|
packages: ne,
|
|
860
860
|
mode: "any",
|
|
861
|
-
eyebrow:
|
|
862
|
-
title:
|
|
863
|
-
description:
|
|
861
|
+
eyebrow: O("vibeDetails.sessionProviderEyebrow", "Session provider required"),
|
|
862
|
+
title: O("vibeDetails.sessionProviderTitle", "Pick a session provider"),
|
|
863
|
+
description: O("vibeDetails.sessionProviderDescription", "Choose the terminal multiplexer your sessions should run on. You can install more providers later.")
|
|
864
864
|
}],
|
|
865
|
-
children: /* @__PURE__ */
|
|
865
|
+
children: /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ P("div", {
|
|
866
866
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
867
|
-
children: [/* @__PURE__ */
|
|
867
|
+
children: [/* @__PURE__ */ P("h3", {
|
|
868
868
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
869
869
|
children: [
|
|
870
|
-
/* @__PURE__ */
|
|
871
|
-
|
|
870
|
+
/* @__PURE__ */ N(k, { className: "w-5 h-5" }),
|
|
871
|
+
O("nav.sessions", "Sessions"),
|
|
872
872
|
" (",
|
|
873
873
|
G.length,
|
|
874
874
|
")"
|
|
875
875
|
]
|
|
876
|
-
}), /* @__PURE__ */
|
|
876
|
+
}), /* @__PURE__ */ P("button", {
|
|
877
877
|
onClick: qt,
|
|
878
878
|
className: "flex items-center gap-1 px-2 py-1 text-sm bg-bg-sunken text-text-primary rounded hover:bg-bg-sunken/80 transition-colors",
|
|
879
|
-
children: [/* @__PURE__ */
|
|
879
|
+
children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), O("vibeDetails.new", "New")]
|
|
880
880
|
})]
|
|
881
|
-
}), G.length > 0 ? /* @__PURE__ */
|
|
881
|
+
}), G.length > 0 ? /* @__PURE__ */ N(Ye, {
|
|
882
882
|
className: "divide-y divide-border-primary",
|
|
883
|
-
children: G.map((e) => /* @__PURE__ */
|
|
883
|
+
children: G.map((e) => /* @__PURE__ */ N(I, {
|
|
884
884
|
variant: "fadeRight",
|
|
885
|
-
children: /* @__PURE__ */
|
|
885
|
+
children: /* @__PURE__ */ P("div", {
|
|
886
886
|
onClick: () => Xt(e.id),
|
|
887
887
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
888
|
-
children: [/* @__PURE__ */
|
|
888
|
+
children: [/* @__PURE__ */ P("div", {
|
|
889
889
|
className: "flex items-center gap-3 min-w-0",
|
|
890
|
-
children: [/* @__PURE__ */
|
|
890
|
+
children: [/* @__PURE__ */ N(k, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
|
|
891
891
|
className: "min-w-0",
|
|
892
|
-
children: [/* @__PURE__ */
|
|
892
|
+
children: [/* @__PURE__ */ N("p", {
|
|
893
893
|
className: "font-medium text-text-primary truncate",
|
|
894
894
|
children: e.name
|
|
895
|
-
}), /* @__PURE__ */
|
|
895
|
+
}), /* @__PURE__ */ N("p", {
|
|
896
896
|
className: "text-sm text-text-secondary truncate",
|
|
897
897
|
children: e.type
|
|
898
898
|
})]
|
|
899
899
|
})]
|
|
900
|
-
}), /* @__PURE__ */
|
|
900
|
+
}), /* @__PURE__ */ N(g, { status: e.status })]
|
|
901
901
|
})
|
|
902
902
|
}, e.id))
|
|
903
|
-
}) : /* @__PURE__ */
|
|
903
|
+
}) : /* @__PURE__ */ N("div", {
|
|
904
904
|
className: "p-6 text-center text-text-secondary",
|
|
905
|
-
children:
|
|
905
|
+
children: O("vibeDetails.noSessionsForVibe", "No sessions for this vibe")
|
|
906
906
|
})] })
|
|
907
907
|
})
|
|
908
908
|
}, "sessions"),
|
|
909
|
-
|
|
909
|
+
Q === "notes" && U("notes") && /* @__PURE__ */ N(j.div, {
|
|
910
910
|
initial: {
|
|
911
911
|
opacity: 0,
|
|
912
912
|
y: 8
|
|
@@ -921,12 +921,12 @@ function L() {
|
|
|
921
921
|
},
|
|
922
922
|
transition: { duration: .2 },
|
|
923
923
|
className: "space-y-6",
|
|
924
|
-
children: /* @__PURE__ */
|
|
924
|
+
children: /* @__PURE__ */ N(b, {
|
|
925
925
|
context: "vibe",
|
|
926
926
|
vibeId: V.id
|
|
927
927
|
})
|
|
928
928
|
}, "notes"),
|
|
929
|
-
|
|
929
|
+
Q === "docs" && U("docs") && /* @__PURE__ */ N(j.div, {
|
|
930
930
|
initial: {
|
|
931
931
|
opacity: 0,
|
|
932
932
|
y: 8
|
|
@@ -941,9 +941,9 @@ function L() {
|
|
|
941
941
|
},
|
|
942
942
|
transition: { duration: .2 },
|
|
943
943
|
className: "space-y-6",
|
|
944
|
-
children: /* @__PURE__ */
|
|
944
|
+
children: /* @__PURE__ */ N(ue, { vibeId: V.id })
|
|
945
945
|
}, "docs"),
|
|
946
|
-
|
|
946
|
+
Q === "scorecard" && U("scorecard") && /* @__PURE__ */ N(j.div, {
|
|
947
947
|
initial: {
|
|
948
948
|
opacity: 0,
|
|
949
949
|
y: 8
|
|
@@ -958,12 +958,12 @@ function L() {
|
|
|
958
958
|
},
|
|
959
959
|
transition: { duration: .2 },
|
|
960
960
|
className: "space-y-6",
|
|
961
|
-
children: /* @__PURE__ */
|
|
961
|
+
children: /* @__PURE__ */ N(le, {
|
|
962
962
|
ownerType: "VIBE",
|
|
963
963
|
ownerId: V.id
|
|
964
964
|
})
|
|
965
965
|
}, "scorecard"),
|
|
966
|
-
|
|
966
|
+
Q === "catalogs" && U("catalogs") && /* @__PURE__ */ N(j.div, {
|
|
967
967
|
initial: {
|
|
968
968
|
opacity: 0,
|
|
969
969
|
y: 8
|
|
@@ -978,13 +978,13 @@ function L() {
|
|
|
978
978
|
},
|
|
979
979
|
transition: { duration: .2 },
|
|
980
980
|
className: "space-y-6",
|
|
981
|
-
children: /* @__PURE__ */
|
|
981
|
+
children: /* @__PURE__ */ N(rt, {
|
|
982
982
|
vibeId: V.id,
|
|
983
|
-
tr:
|
|
983
|
+
tr: O,
|
|
984
984
|
navigate: S
|
|
985
985
|
})
|
|
986
986
|
}, "catalogs"),
|
|
987
|
-
|
|
987
|
+
Q === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */ N(j.div, {
|
|
988
988
|
initial: {
|
|
989
989
|
opacity: 0,
|
|
990
990
|
y: 8
|
|
@@ -999,37 +999,37 @@ function L() {
|
|
|
999
999
|
},
|
|
1000
1000
|
transition: { duration: .2 },
|
|
1001
1001
|
className: "space-y-6",
|
|
1002
|
-
children: /* @__PURE__ */
|
|
1003
|
-
agentId:
|
|
1002
|
+
children: /* @__PURE__ */ N(v, {
|
|
1003
|
+
agentId: q?.id ?? null,
|
|
1004
1004
|
required: ["@vibecontrols/vibe-plugin-tool-graphiql"],
|
|
1005
1005
|
mode: "all",
|
|
1006
|
-
eyebrow:
|
|
1007
|
-
title:
|
|
1008
|
-
description:
|
|
1009
|
-
children:
|
|
1006
|
+
eyebrow: O("vibeDetails.graphqlPluginEyebrow", "GraphQL playground plugin required"),
|
|
1007
|
+
title: O("vibeDetails.graphqlPluginTitle", "Install the GraphQL playground"),
|
|
1008
|
+
description: O("vibeDetails.graphqlPluginDescription", "The GraphQL Playground is served by the graphiql agent plugin. Install it to continue."),
|
|
1009
|
+
children: Mt ? /* @__PURE__ */ N(it, {
|
|
1010
1010
|
vibeId: V.id,
|
|
1011
|
-
agentId:
|
|
1012
|
-
profile:
|
|
1013
|
-
tunnelUrl:
|
|
1014
|
-
apiKey:
|
|
1011
|
+
agentId: q?.id ?? null,
|
|
1012
|
+
profile: Y,
|
|
1013
|
+
tunnelUrl: Mt,
|
|
1014
|
+
apiKey: Nt,
|
|
1015
1015
|
type: "graphql",
|
|
1016
|
-
tr:
|
|
1017
|
-
}) : /* @__PURE__ */
|
|
1018
|
-
icon: /* @__PURE__ */
|
|
1019
|
-
title:
|
|
1020
|
-
description:
|
|
1016
|
+
tr: O
|
|
1017
|
+
}) : /* @__PURE__ */ N(h, {
|
|
1018
|
+
icon: /* @__PURE__ */ N(Ie, { className: "w-8 h-8 text-text-secondary" }),
|
|
1019
|
+
title: O("vibeDetails.noAgentTunnel", "No agent tunnel available"),
|
|
1020
|
+
description: O("vibeDetails.noAgentTunnelDesc2", "The GraphQL playground requires an active agent with a tunnel URL.")
|
|
1021
1021
|
})
|
|
1022
1022
|
})
|
|
1023
1023
|
}, "graphqlPlayground"),
|
|
1024
|
-
|
|
1024
|
+
Q === "gitops" && U("gitops") && /* @__PURE__ */ N(de, {
|
|
1025
1025
|
vibeId: r || "",
|
|
1026
|
-
agentId:
|
|
1027
|
-
profile:
|
|
1028
|
-
tunnelUrl:
|
|
1029
|
-
apiKey:
|
|
1030
|
-
tr:
|
|
1026
|
+
agentId: q?.id ?? "",
|
|
1027
|
+
profile: Y,
|
|
1028
|
+
tunnelUrl: Mt,
|
|
1029
|
+
apiKey: Nt,
|
|
1030
|
+
tr: O
|
|
1031
1031
|
}),
|
|
1032
|
-
|
|
1032
|
+
Q === "security" && U("security") && /* @__PURE__ */ N(j.div, {
|
|
1033
1033
|
initial: {
|
|
1034
1034
|
opacity: 0,
|
|
1035
1035
|
y: 8
|
|
@@ -1044,9 +1044,9 @@ function L() {
|
|
|
1044
1044
|
},
|
|
1045
1045
|
transition: { duration: .2 },
|
|
1046
1046
|
className: "space-y-6",
|
|
1047
|
-
children: /* @__PURE__ */
|
|
1047
|
+
children: /* @__PURE__ */ N(ge, { vibeId: r || "" })
|
|
1048
1048
|
}, "security"),
|
|
1049
|
-
|
|
1049
|
+
Q === "related" && U("related") && /* @__PURE__ */ N(j.div, {
|
|
1050
1050
|
initial: {
|
|
1051
1051
|
opacity: 0,
|
|
1052
1052
|
y: 8
|
|
@@ -1061,93 +1061,93 @@ function L() {
|
|
|
1061
1061
|
},
|
|
1062
1062
|
transition: { duration: .2 },
|
|
1063
1063
|
className: "space-y-6",
|
|
1064
|
-
children: nn > 0 ? /* @__PURE__ */
|
|
1065
|
-
|
|
1064
|
+
children: nn > 0 ? /* @__PURE__ */ P(M, { children: [
|
|
1065
|
+
K.length > 0 && /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
1066
1066
|
className: "p-4 border-b border-border-default",
|
|
1067
|
-
children: /* @__PURE__ */
|
|
1067
|
+
children: /* @__PURE__ */ P("h3", {
|
|
1068
1068
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1069
1069
|
children: [
|
|
1070
|
-
/* @__PURE__ */
|
|
1071
|
-
|
|
1070
|
+
/* @__PURE__ */ N(A, { className: "w-5 h-5" }),
|
|
1071
|
+
O("vibeDetails.childVibes", "Child Vibes"),
|
|
1072
1072
|
" (",
|
|
1073
|
-
|
|
1073
|
+
K.length,
|
|
1074
1074
|
")"
|
|
1075
1075
|
]
|
|
1076
1076
|
})
|
|
1077
|
-
}), /* @__PURE__ */
|
|
1077
|
+
}), /* @__PURE__ */ N(Ye, {
|
|
1078
1078
|
className: "divide-y divide-border-primary",
|
|
1079
|
-
children:
|
|
1079
|
+
children: K.map((e) => /* @__PURE__ */ N(I, {
|
|
1080
1080
|
variant: "fadeRight",
|
|
1081
|
-
children: /* @__PURE__ */
|
|
1081
|
+
children: /* @__PURE__ */ P("div", {
|
|
1082
1082
|
onClick: () => Zt(e.id),
|
|
1083
1083
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
1084
|
-
children: [/* @__PURE__ */
|
|
1084
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1085
1085
|
className: "flex items-center gap-3 min-w-0",
|
|
1086
|
-
children: [/* @__PURE__ */
|
|
1086
|
+
children: [/* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
|
|
1087
1087
|
className: "min-w-0",
|
|
1088
|
-
children: [/* @__PURE__ */
|
|
1088
|
+
children: [/* @__PURE__ */ N("p", {
|
|
1089
1089
|
className: "font-medium text-text-primary truncate",
|
|
1090
1090
|
children: e.name
|
|
1091
|
-
}), /* @__PURE__ */
|
|
1091
|
+
}), /* @__PURE__ */ N("p", {
|
|
1092
1092
|
className: "text-sm text-text-secondary truncate",
|
|
1093
1093
|
children: e.type
|
|
1094
1094
|
})]
|
|
1095
1095
|
})]
|
|
1096
|
-
}), /* @__PURE__ */
|
|
1096
|
+
}), /* @__PURE__ */ N(g, { status: e.status })]
|
|
1097
1097
|
})
|
|
1098
1098
|
}, e.id))
|
|
1099
1099
|
})] }),
|
|
1100
|
-
|
|
1101
|
-
onClick: () => Zt(
|
|
1100
|
+
At && /* @__PURE__ */ N(_, {
|
|
1101
|
+
onClick: () => Zt(At.id),
|
|
1102
1102
|
hoverable: !0,
|
|
1103
|
-
children: /* @__PURE__ */
|
|
1103
|
+
children: /* @__PURE__ */ P("div", {
|
|
1104
1104
|
className: "p-4 flex items-center gap-3",
|
|
1105
|
-
children: [/* @__PURE__ */
|
|
1105
|
+
children: [/* @__PURE__ */ N("div", {
|
|
1106
1106
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1107
|
-
children: /* @__PURE__ */
|
|
1108
|
-
}), /* @__PURE__ */
|
|
1107
|
+
children: /* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary" })
|
|
1108
|
+
}), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1109
1109
|
className: "text-sm text-text-secondary",
|
|
1110
|
-
children:
|
|
1111
|
-
}), /* @__PURE__ */
|
|
1110
|
+
children: O("vibeDetails.parentVibe", "Parent Vibe")
|
|
1111
|
+
}), /* @__PURE__ */ N("p", {
|
|
1112
1112
|
className: "font-medium text-text-primary",
|
|
1113
|
-
children:
|
|
1113
|
+
children: At.name
|
|
1114
1114
|
})] })]
|
|
1115
1115
|
})
|
|
1116
1116
|
}),
|
|
1117
|
-
|
|
1117
|
+
J && /* @__PURE__ */ N(_, {
|
|
1118
1118
|
onClick: Yt,
|
|
1119
1119
|
hoverable: !0,
|
|
1120
|
-
children: /* @__PURE__ */
|
|
1120
|
+
children: /* @__PURE__ */ P("div", {
|
|
1121
1121
|
className: "p-4 flex items-center justify-between",
|
|
1122
|
-
children: [/* @__PURE__ */
|
|
1122
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1123
1123
|
className: "flex items-center gap-3",
|
|
1124
|
-
children: [/* @__PURE__ */
|
|
1124
|
+
children: [/* @__PURE__ */ N("div", {
|
|
1125
1125
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1126
|
-
children: /* @__PURE__ */
|
|
1127
|
-
}), /* @__PURE__ */
|
|
1128
|
-
/* @__PURE__ */
|
|
1126
|
+
children: /* @__PURE__ */ N(Ve, { className: "w-5 h-5 text-text-secondary" })
|
|
1127
|
+
}), /* @__PURE__ */ P("div", { children: [
|
|
1128
|
+
/* @__PURE__ */ N("p", {
|
|
1129
1129
|
className: "text-sm text-text-secondary",
|
|
1130
|
-
children:
|
|
1130
|
+
children: O("vibeDetails.runningOnAgent", "Running on Agent")
|
|
1131
1131
|
}),
|
|
1132
|
-
/* @__PURE__ */
|
|
1132
|
+
/* @__PURE__ */ N("p", {
|
|
1133
1133
|
className: "font-medium text-text-primary",
|
|
1134
|
-
children:
|
|
1134
|
+
children: J.name
|
|
1135
1135
|
}),
|
|
1136
|
-
/* @__PURE__ */
|
|
1136
|
+
/* @__PURE__ */ N("p", {
|
|
1137
1137
|
className: "text-sm text-text-secondary",
|
|
1138
|
-
children:
|
|
1138
|
+
children: J.hostname
|
|
1139
1139
|
})
|
|
1140
1140
|
] })]
|
|
1141
|
-
}), /* @__PURE__ */
|
|
1141
|
+
}), /* @__PURE__ */ N(g, { status: J.isActive ? "ACTIVE" : "OFFLINE" })]
|
|
1142
1142
|
})
|
|
1143
1143
|
})
|
|
1144
|
-
] }) : /* @__PURE__ */
|
|
1145
|
-
icon: /* @__PURE__ */
|
|
1146
|
-
title:
|
|
1147
|
-
description:
|
|
1144
|
+
] }) : /* @__PURE__ */ N(h, {
|
|
1145
|
+
icon: /* @__PURE__ */ N(Ne, { className: "w-8 h-8 text-text-secondary" }),
|
|
1146
|
+
title: O("vibeDetails.noRelatedEntities", "No related entities"),
|
|
1147
|
+
description: O("vibeDetails.noRelatedEntitiesDescription", "This vibe has no child vibes, parent vibe, or linked agent")
|
|
1148
1148
|
})
|
|
1149
1149
|
}, "related"),
|
|
1150
|
-
|
|
1150
|
+
Q === "llmContext" && /* @__PURE__ */ N(j.div, {
|
|
1151
1151
|
initial: {
|
|
1152
1152
|
opacity: 0,
|
|
1153
1153
|
y: 8
|
|
@@ -1162,7 +1162,7 @@ function L() {
|
|
|
1162
1162
|
},
|
|
1163
1163
|
transition: { duration: .2 },
|
|
1164
1164
|
className: "space-y-6",
|
|
1165
|
-
children: /* @__PURE__ */
|
|
1165
|
+
children: /* @__PURE__ */ N(_e, {
|
|
1166
1166
|
vibeId: V.id,
|
|
1167
1167
|
attachedAgents: W.map((e) => ({
|
|
1168
1168
|
id: e.id,
|
|
@@ -1170,11 +1170,11 @@ function L() {
|
|
|
1170
1170
|
}))
|
|
1171
1171
|
})
|
|
1172
1172
|
}, "llmContext"),
|
|
1173
|
-
|
|
1174
|
-
let e =
|
|
1173
|
+
X && (() => {
|
|
1174
|
+
let e = Z.data.find((e) => e.contribution.id === Q);
|
|
1175
1175
|
if (!e) return null;
|
|
1176
1176
|
let t = e.tunnel, n = e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`];
|
|
1177
|
-
return /* @__PURE__ */
|
|
1177
|
+
return /* @__PURE__ */ N(j.div, {
|
|
1178
1178
|
initial: {
|
|
1179
1179
|
opacity: 0,
|
|
1180
1180
|
y: 8
|
|
@@ -1189,14 +1189,14 @@ function L() {
|
|
|
1189
1189
|
},
|
|
1190
1190
|
transition: { duration: .2 },
|
|
1191
1191
|
className: "space-y-6",
|
|
1192
|
-
children: /* @__PURE__ */
|
|
1192
|
+
children: /* @__PURE__ */ N(_, { children: /* @__PURE__ */ N("div", {
|
|
1193
1193
|
className: "p-0 h-[600px]",
|
|
1194
|
-
children: /* @__PURE__ */
|
|
1194
|
+
children: /* @__PURE__ */ N(ce, {
|
|
1195
1195
|
contribution: e,
|
|
1196
1196
|
tunnel: t,
|
|
1197
1197
|
restPaths: n,
|
|
1198
1198
|
context: { vibeId: V.id },
|
|
1199
|
-
agentId:
|
|
1199
|
+
agentId: q?.id ?? "",
|
|
1200
1200
|
profile: t.profile,
|
|
1201
1201
|
theme: {
|
|
1202
1202
|
colorMode: "light",
|
|
@@ -1211,87 +1211,87 @@ function L() {
|
|
|
1211
1211
|
})()
|
|
1212
1212
|
]
|
|
1213
1213
|
}),
|
|
1214
|
-
|
|
1215
|
-
isOpen:
|
|
1216
|
-
onClose: () =>
|
|
1214
|
+
X && q && /* @__PURE__ */ N(se, {
|
|
1215
|
+
isOpen: It,
|
|
1216
|
+
onClose: () => Lt(!1),
|
|
1217
1217
|
mountPoint: "vibe.detailTab",
|
|
1218
|
-
agentId:
|
|
1219
|
-
profile:
|
|
1218
|
+
agentId: q.id,
|
|
1219
|
+
profile: Y ?? "default",
|
|
1220
1220
|
onInstalled: () => {
|
|
1221
|
-
|
|
1221
|
+
Z.refetch();
|
|
1222
1222
|
}
|
|
1223
1223
|
}),
|
|
1224
|
-
ct && /* @__PURE__ */
|
|
1224
|
+
ct && /* @__PURE__ */ N("div", {
|
|
1225
1225
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1226
|
-
children: /* @__PURE__ */
|
|
1226
|
+
children: /* @__PURE__ */ P("div", {
|
|
1227
1227
|
className: "bg-bg-surface rounded-lg p-6 w-full max-w-lg",
|
|
1228
1228
|
children: [
|
|
1229
|
-
/* @__PURE__ */
|
|
1229
|
+
/* @__PURE__ */ P("h2", {
|
|
1230
1230
|
className: "text-lg font-semibold text-text-primary mb-4",
|
|
1231
1231
|
children: [
|
|
1232
|
-
|
|
1232
|
+
O("vibeDetails.newSessionFor", "New Session for"),
|
|
1233
1233
|
" ",
|
|
1234
1234
|
V.name
|
|
1235
1235
|
]
|
|
1236
1236
|
}),
|
|
1237
|
-
ut && /* @__PURE__ */
|
|
1237
|
+
ut && /* @__PURE__ */ N("div", {
|
|
1238
1238
|
className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1239
1239
|
children: ut
|
|
1240
1240
|
}),
|
|
1241
|
-
/* @__PURE__ */
|
|
1241
|
+
/* @__PURE__ */ P("div", {
|
|
1242
1242
|
className: "space-y-4",
|
|
1243
1243
|
children: [
|
|
1244
|
-
/* @__PURE__ */
|
|
1244
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1245
1245
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1246
|
-
children:
|
|
1247
|
-
}), /* @__PURE__ */
|
|
1246
|
+
children: O("vibeDetails.sessionName", "Session Name")
|
|
1247
|
+
}), /* @__PURE__ */ N("input", {
|
|
1248
1248
|
ref: z,
|
|
1249
1249
|
type: "text",
|
|
1250
|
-
placeholder:
|
|
1250
|
+
placeholder: O("vibeDetails.sessionNamePlaceholder", "dev-terminal"),
|
|
1251
1251
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1252
1252
|
})] }),
|
|
1253
|
-
/* @__PURE__ */
|
|
1253
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1254
1254
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1255
|
-
children:
|
|
1256
|
-
}), /* @__PURE__ */
|
|
1255
|
+
children: O("sessions.filterType", "Type")
|
|
1256
|
+
}), /* @__PURE__ */ P("select", {
|
|
1257
1257
|
ref: ht,
|
|
1258
1258
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
|
|
1259
1259
|
children: [
|
|
1260
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ N("option", {
|
|
1261
1261
|
value: "TERMINAL",
|
|
1262
|
-
children:
|
|
1262
|
+
children: O("sessions.typeTerminal", "Terminal")
|
|
1263
1263
|
}),
|
|
1264
|
-
/* @__PURE__ */
|
|
1264
|
+
/* @__PURE__ */ N("option", {
|
|
1265
1265
|
value: "TMUX",
|
|
1266
|
-
children:
|
|
1266
|
+
children: O("sessions.typeTmux", "TMUX")
|
|
1267
1267
|
}),
|
|
1268
|
-
/* @__PURE__ */
|
|
1268
|
+
/* @__PURE__ */ N("option", {
|
|
1269
1269
|
value: "SSH",
|
|
1270
|
-
children:
|
|
1270
|
+
children: O("sessions.typeSsh", "SSH")
|
|
1271
1271
|
}),
|
|
1272
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ N("option", {
|
|
1273
1273
|
value: "SCRIPT",
|
|
1274
|
-
children:
|
|
1274
|
+
children: O("sessions.typeScript", "Script")
|
|
1275
1275
|
}),
|
|
1276
|
-
/* @__PURE__ */
|
|
1276
|
+
/* @__PURE__ */ N("option", {
|
|
1277
1277
|
value: "CUSTOM",
|
|
1278
|
-
children:
|
|
1278
|
+
children: O("sessions.typeCustom", "Custom")
|
|
1279
1279
|
})
|
|
1280
1280
|
]
|
|
1281
1281
|
})] }),
|
|
1282
|
-
/* @__PURE__ */
|
|
1282
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1283
1283
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1284
|
-
children:
|
|
1285
|
-
}), /* @__PURE__ */
|
|
1284
|
+
children: O("sessions.command", "Command")
|
|
1285
|
+
}), /* @__PURE__ */ N("input", {
|
|
1286
1286
|
ref: gt,
|
|
1287
1287
|
type: "text",
|
|
1288
|
-
placeholder:
|
|
1288
|
+
placeholder: O("vibeDetails.sessionCommandPlaceholder", "bash"),
|
|
1289
1289
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1290
1290
|
})] }),
|
|
1291
|
-
/* @__PURE__ */
|
|
1291
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1292
1292
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1293
|
-
children:
|
|
1294
|
-
}), /* @__PURE__ */
|
|
1293
|
+
children: O("vibeDetails.workingDirectory", "Working Directory")
|
|
1294
|
+
}), /* @__PURE__ */ N("input", {
|
|
1295
1295
|
ref: _t,
|
|
1296
1296
|
type: "text",
|
|
1297
1297
|
defaultValue: V.path || "",
|
|
@@ -1299,18 +1299,18 @@ function L() {
|
|
|
1299
1299
|
})] })
|
|
1300
1300
|
]
|
|
1301
1301
|
}),
|
|
1302
|
-
/* @__PURE__ */
|
|
1302
|
+
/* @__PURE__ */ P("div", {
|
|
1303
1303
|
className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
|
|
1304
|
-
children: [/* @__PURE__ */
|
|
1304
|
+
children: [/* @__PURE__ */ N("button", {
|
|
1305
1305
|
onClick: () => lt(!1),
|
|
1306
1306
|
disabled: dt,
|
|
1307
1307
|
className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
1308
|
-
children:
|
|
1309
|
-
}), /* @__PURE__ */
|
|
1308
|
+
children: O("common.cancel", "Cancel")
|
|
1309
|
+
}), /* @__PURE__ */ N("button", {
|
|
1310
1310
|
onClick: Jt,
|
|
1311
1311
|
disabled: dt,
|
|
1312
1312
|
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",
|
|
1313
|
-
children: dt ?
|
|
1313
|
+
children: dt ? O("sessions.creating", "Creating...") : O("sessions.createSession", "Create Session")
|
|
1314
1314
|
})]
|
|
1315
1315
|
})
|
|
1316
1316
|
]
|
|
@@ -1319,7 +1319,7 @@ function L() {
|
|
|
1319
1319
|
]
|
|
1320
1320
|
});
|
|
1321
1321
|
}
|
|
1322
|
-
function
|
|
1322
|
+
function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
1323
1323
|
let [a, o] = E(!1), { data: c, loading: l, refetch: u } = r({ fetchPolicy: "cache-and-network" }), [d] = e({ refetchQueries: ["GetVibeCatalogs"] }), [ee] = s({ refetchQueries: ["GetVibeCatalogs"] }), f = c?.vibecontrolsCatalogs?.items ?? [], p = f.filter((e) => e.vibes?.some((e) => e.vibeId === t)), m = f.filter((e) => !e.vibes?.some((e) => e.vibeId === t)), g = async (e) => {
|
|
1324
1324
|
await d({ variables: {
|
|
1325
1325
|
catalogId: e,
|
|
@@ -1331,15 +1331,15 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1331
1331
|
vibeId: t
|
|
1332
1332
|
} }), await u();
|
|
1333
1333
|
};
|
|
1334
|
-
return l && f.length === 0 ? /* @__PURE__ */
|
|
1335
|
-
/* @__PURE__ */
|
|
1334
|
+
return l && f.length === 0 ? /* @__PURE__ */ N(re, { variant: "detail" }) : /* @__PURE__ */ P(M, { children: [
|
|
1335
|
+
/* @__PURE__ */ P("div", {
|
|
1336
1336
|
className: "flex items-center justify-between",
|
|
1337
|
-
children: [/* @__PURE__ */
|
|
1337
|
+
children: [/* @__PURE__ */ P("h3", {
|
|
1338
1338
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1339
1339
|
children: [
|
|
1340
|
-
/* @__PURE__ */
|
|
1340
|
+
/* @__PURE__ */ N(Me, { className: "w-5 h-5" }),
|
|
1341
1341
|
n("vibeDetails.catalogsTitle", "Catalogs"),
|
|
1342
|
-
/* @__PURE__ */
|
|
1342
|
+
/* @__PURE__ */ P("span", {
|
|
1343
1343
|
className: "text-sm font-normal text-text-secondary",
|
|
1344
1344
|
children: [
|
|
1345
1345
|
"(",
|
|
@@ -1348,41 +1348,41 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1348
1348
|
]
|
|
1349
1349
|
})
|
|
1350
1350
|
]
|
|
1351
|
-
}), /* @__PURE__ */
|
|
1351
|
+
}), /* @__PURE__ */ P("button", {
|
|
1352
1352
|
onClick: () => o(!0),
|
|
1353
1353
|
className: "flex items-center gap-2 px-3 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
1354
|
-
children: [/* @__PURE__ */
|
|
1354
|
+
children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), n("vibeDetails.addToCatalog", "Add to Catalog")]
|
|
1355
1355
|
})]
|
|
1356
1356
|
}),
|
|
1357
|
-
p.length > 0 ? /* @__PURE__ */
|
|
1357
|
+
p.length > 0 ? /* @__PURE__ */ N("div", {
|
|
1358
1358
|
className: "space-y-2",
|
|
1359
|
-
children: p.map((e) => /* @__PURE__ */
|
|
1359
|
+
children: p.map((e) => /* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
|
|
1360
1360
|
className: "p-3 flex items-center justify-between",
|
|
1361
|
-
children: [/* @__PURE__ */
|
|
1361
|
+
children: [/* @__PURE__ */ P("button", {
|
|
1362
1362
|
onClick: () => i(`/catalogs/${e.id}`),
|
|
1363
1363
|
className: "flex items-center gap-3 text-left hover:opacity-80 transition-opacity",
|
|
1364
|
-
children: [/* @__PURE__ */
|
|
1364
|
+
children: [/* @__PURE__ */ N(Me, { className: "w-5 h-5 text-action-primary-bg flex-shrink-0" }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1365
1365
|
className: "font-medium text-text-primary text-sm",
|
|
1366
1366
|
children: e.name
|
|
1367
|
-
}), /* @__PURE__ */
|
|
1367
|
+
}), /* @__PURE__ */ N("p", {
|
|
1368
1368
|
className: "text-xs text-text-secondary",
|
|
1369
1369
|
children: e.visibility
|
|
1370
1370
|
})] })]
|
|
1371
|
-
}), /* @__PURE__ */
|
|
1371
|
+
}), /* @__PURE__ */ N("button", {
|
|
1372
1372
|
onClick: () => te(e.id),
|
|
1373
1373
|
className: "p-1.5 text-text-muted hover:text-status-error-text hover:bg-status-error-bg rounded-md transition-colors",
|
|
1374
1374
|
title: n("vibeDetails.removeFromCatalog", "Remove from catalog"),
|
|
1375
|
-
children: /* @__PURE__ */
|
|
1375
|
+
children: /* @__PURE__ */ N(Ke, { className: "w-4 h-4" })
|
|
1376
1376
|
})]
|
|
1377
1377
|
}) }, e.id))
|
|
1378
|
-
}) : /* @__PURE__ */
|
|
1379
|
-
icon: /* @__PURE__ */
|
|
1378
|
+
}) : /* @__PURE__ */ N(h, {
|
|
1379
|
+
icon: /* @__PURE__ */ N(Me, { className: "w-8 h-8 text-text-secondary" }),
|
|
1380
1380
|
title: n("vibeDetails.noCatalogs", "Not in any catalogs"),
|
|
1381
1381
|
description: n("vibeDetails.noCatalogsDesc", "Add this vibe to catalogs to organize and track it alongside other components")
|
|
1382
1382
|
}),
|
|
1383
|
-
a && /* @__PURE__ */
|
|
1383
|
+
a && /* @__PURE__ */ N("div", {
|
|
1384
1384
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1385
|
-
children: /* @__PURE__ */
|
|
1385
|
+
children: /* @__PURE__ */ P(j.div, {
|
|
1386
1386
|
initial: {
|
|
1387
1387
|
opacity: 0,
|
|
1388
1388
|
scale: .95
|
|
@@ -1393,33 +1393,33 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1393
1393
|
},
|
|
1394
1394
|
className: "bg-bg-surface rounded-lg w-full max-w-md max-h-[60vh] flex flex-col",
|
|
1395
1395
|
children: [
|
|
1396
|
-
/* @__PURE__ */
|
|
1396
|
+
/* @__PURE__ */ N("div", {
|
|
1397
1397
|
className: "p-4 border-b border-border-default",
|
|
1398
|
-
children: /* @__PURE__ */
|
|
1398
|
+
children: /* @__PURE__ */ N("h2", {
|
|
1399
1399
|
className: "text-lg font-semibold text-text-primary",
|
|
1400
1400
|
children: n("vibeDetails.addToCatalogTitle", "Add Vibe to Catalog")
|
|
1401
1401
|
})
|
|
1402
1402
|
}),
|
|
1403
|
-
/* @__PURE__ */
|
|
1403
|
+
/* @__PURE__ */ N("div", {
|
|
1404
1404
|
className: "flex-1 overflow-y-auto p-2",
|
|
1405
|
-
children: m.length === 0 ? /* @__PURE__ */
|
|
1405
|
+
children: m.length === 0 ? /* @__PURE__ */ N("div", {
|
|
1406
1406
|
className: "p-4 text-center text-text-secondary text-sm",
|
|
1407
1407
|
children: n("vibeDetails.noAvailableCatalogs", "No available catalogs. This vibe is already in all catalogs.")
|
|
1408
|
-
}) : m.map((e) => /* @__PURE__ */
|
|
1408
|
+
}) : m.map((e) => /* @__PURE__ */ P("button", {
|
|
1409
1409
|
onClick: () => g(e.id),
|
|
1410
1410
|
className: "w-full flex items-center justify-between p-3 rounded-md hover:bg-bg-sunken transition-colors text-left",
|
|
1411
|
-
children: [/* @__PURE__ */
|
|
1411
|
+
children: [/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1412
1412
|
className: "font-medium text-text-primary text-sm",
|
|
1413
1413
|
children: e.name
|
|
1414
|
-
}), /* @__PURE__ */
|
|
1414
|
+
}), /* @__PURE__ */ N("p", {
|
|
1415
1415
|
className: "text-xs text-text-secondary",
|
|
1416
1416
|
children: e.visibility
|
|
1417
|
-
})] }), /* @__PURE__ */
|
|
1417
|
+
})] }), /* @__PURE__ */ N(ze, { className: "w-4 h-4 text-text-secondary" })]
|
|
1418
1418
|
}, e.id))
|
|
1419
1419
|
}),
|
|
1420
|
-
/* @__PURE__ */
|
|
1420
|
+
/* @__PURE__ */ N("div", {
|
|
1421
1421
|
className: "p-4 border-t border-border-default",
|
|
1422
|
-
children: /* @__PURE__ */
|
|
1422
|
+
children: /* @__PURE__ */ N("button", {
|
|
1423
1423
|
onClick: () => o(!1),
|
|
1424
1424
|
className: "w-full px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
|
|
1425
1425
|
children: n("common.close", "Close")
|
|
@@ -1430,9 +1430,9 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1430
1430
|
})
|
|
1431
1431
|
] });
|
|
1432
1432
|
}
|
|
1433
|
-
function
|
|
1433
|
+
function it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type: a, tr: o }) {
|
|
1434
1434
|
let s = a === "rest", c = "graphiql", l = `${r}/api/profiles/${encodeURIComponent(n)}/${c}/config/${e}`, [u, d] = E(""), [ee, f] = E(!1), [p, m] = E(!1), [h, g] = E(!1), [te, ne] = E(0);
|
|
1435
|
-
|
|
1435
|
+
C(() => {
|
|
1436
1436
|
let e = { "Content-Type": "application/json" };
|
|
1437
1437
|
i && (e["x-agent-api-key"] = i), fetch(l, { headers: e }).then((e) => e.ok ? e.json() : null).then((e) => {
|
|
1438
1438
|
if (e) {
|
|
@@ -1462,14 +1462,18 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1462
1462
|
m(!1);
|
|
1463
1463
|
}
|
|
1464
1464
|
}
|
|
1465
|
-
}, [y, re] = E(null), [ie, b] = E(null), x =
|
|
1466
|
-
|
|
1465
|
+
}, [y, re] = E(null), [ie, b] = E(null), x = w(() => [
|
|
1466
|
+
`/ui/${c}`,
|
|
1467
|
+
`/api/profiles/${encodeURIComponent(n)}/${c}`,
|
|
1468
|
+
`/api/${c}`
|
|
1469
|
+
], [n, c]);
|
|
1470
|
+
C(() => {
|
|
1467
1471
|
if (!t) return;
|
|
1468
1472
|
let e = !1, r = null, i = (a) => {
|
|
1469
|
-
e || (re(a), r =
|
|
1473
|
+
e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
|
|
1470
1474
|
};
|
|
1471
|
-
return
|
|
1472
|
-
e || (re(a), r =
|
|
1475
|
+
return oe(t, n, x).then((a) => {
|
|
1476
|
+
e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
|
|
1473
1477
|
}).catch((t) => {
|
|
1474
1478
|
e || b(t instanceof Error ? t.message : String(t));
|
|
1475
1479
|
}), () => {
|
|
@@ -1480,45 +1484,45 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1480
1484
|
n,
|
|
1481
1485
|
x
|
|
1482
1486
|
]);
|
|
1483
|
-
let
|
|
1484
|
-
return /* @__PURE__ */
|
|
1487
|
+
let se = `${r}/ui/${c}?vibeId=${e}&profile=${encodeURIComponent(n)}`, ce = y ? ae(se, y.token) : se;
|
|
1488
|
+
return /* @__PURE__ */ P("div", {
|
|
1485
1489
|
className: "space-y-4",
|
|
1486
|
-
children: [/* @__PURE__ */
|
|
1490
|
+
children: [/* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
|
|
1487
1491
|
className: "p-4",
|
|
1488
1492
|
children: [
|
|
1489
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ P("div", {
|
|
1490
1494
|
className: "flex items-center gap-2 mb-2",
|
|
1491
|
-
children: [
|
|
1495
|
+
children: [N(s ? Ae : Ie, { className: "w-5 h-5 text-text-secondary" }), /* @__PURE__ */ N("h3", {
|
|
1492
1496
|
className: "font-semibold text-text-primary",
|
|
1493
1497
|
children: s ? o("vibeDetails.restPlaygroundTitle", "REST API Playground") : o("vibeDetails.graphqlPlaygroundTitle", "GraphQL Playground")
|
|
1494
1498
|
})]
|
|
1495
1499
|
}),
|
|
1496
|
-
/* @__PURE__ */
|
|
1500
|
+
/* @__PURE__ */ P("div", {
|
|
1497
1501
|
className: "flex items-center gap-2",
|
|
1498
|
-
children: [/* @__PURE__ */
|
|
1502
|
+
children: [/* @__PURE__ */ N("input", {
|
|
1499
1503
|
type: "url",
|
|
1500
1504
|
value: u,
|
|
1501
1505
|
onChange: (e) => d(e.target.value),
|
|
1502
1506
|
placeholder: s ? o("vibeDetails.enterSwaggerUrl", "Enter OpenAPI/Swagger URL (e.g. https://petstore3.swagger.io/api/v3/openapi.json)") : o("vibeDetails.enterGraphqlUrl", "Enter GraphQL endpoint URL (e.g. https://countries.trevorblades.com/graphql)"),
|
|
1503
1507
|
className: "flex-1 px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder text-sm",
|
|
1504
1508
|
onKeyDown: (e) => e.key === "Enter" && v()
|
|
1505
|
-
}), /* @__PURE__ */
|
|
1509
|
+
}), /* @__PURE__ */ P("button", {
|
|
1506
1510
|
onClick: v,
|
|
1507
1511
|
disabled: p || !u.trim(),
|
|
1508
1512
|
className: "flex items-center gap-2 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 text-sm whitespace-nowrap",
|
|
1509
|
-
children: [p ? /* @__PURE__ */
|
|
1513
|
+
children: [p ? /* @__PURE__ */ N(Pe, { className: "w-4 h-4 animate-spin" }) : N(h ? O : Te, { className: "w-4 h-4" }), p ? o("common.saving", "Saving...") : h ? o("common.saved", "Saved!") : o("vibeDetails.loadApi", "Load API")]
|
|
1510
1514
|
})]
|
|
1511
1515
|
}),
|
|
1512
|
-
!ee && /* @__PURE__ */
|
|
1516
|
+
!ee && /* @__PURE__ */ N("p", {
|
|
1513
1517
|
className: "text-xs text-text-muted mt-1",
|
|
1514
1518
|
children: o("vibeDetails.loadingConfig", "Loading saved configuration...")
|
|
1515
1519
|
})
|
|
1516
1520
|
]
|
|
1517
|
-
}) }), t && !y ? /* @__PURE__ */
|
|
1521
|
+
}) }), t && !y ? /* @__PURE__ */ N("div", {
|
|
1518
1522
|
className: "p-8 text-center text-sm text-text-secondary rounded-md border border-border-default bg-bg-sunken",
|
|
1519
1523
|
children: ie ? o("vibeDetails.iframeTokenError", `Iframe token error: ${ie}`) : o("vibeDetails.mintingIframeToken", "Authorizing iframe…")
|
|
1520
|
-
}) : /* @__PURE__ */
|
|
1521
|
-
src:
|
|
1524
|
+
}) : /* @__PURE__ */ N("iframe", {
|
|
1525
|
+
src: ce,
|
|
1522
1526
|
title: s ? "REST API Playground" : "GraphQL Playground",
|
|
1523
1527
|
className: "w-full rounded-md border border-border-default bg-bg-sunken",
|
|
1524
1528
|
style: { height: "700px" },
|
|
@@ -1527,6 +1531,6 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1527
1531
|
});
|
|
1528
1532
|
}
|
|
1529
1533
|
//#endregion
|
|
1530
|
-
export {
|
|
1534
|
+
export { nt as VibeDetailsPage };
|
|
1531
1535
|
|
|
1532
1536
|
//# sourceMappingURL=VibeDetailsPage.js.map
|