@burdenoff/microfe-vibecontrols 2026.525.5 → 2026.525.7
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,82 +693,78 @@ 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__ */
|
|
724
|
-
className: "
|
|
725
|
-
children:
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
723
|
+
}), /* @__PURE__ */ N("div", {
|
|
724
|
+
className: "divide-y divide-border-default",
|
|
725
|
+
children: at.map((e) => /* @__PURE__ */ P("label", {
|
|
726
|
+
className: "flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-bg-sunken transition-colors",
|
|
727
|
+
children: [/* @__PURE__ */ N("input", {
|
|
728
|
+
type: "checkbox",
|
|
729
|
+
role: "switch",
|
|
730
|
+
checked: U(e.id),
|
|
731
|
+
disabled: st || !V.id,
|
|
732
|
+
onChange: async (t) => {
|
|
733
|
+
let n = t.target.checked;
|
|
734
|
+
try {
|
|
735
|
+
await ot({
|
|
736
|
+
variables: {
|
|
737
|
+
id: V.id,
|
|
738
|
+
featureId: e.id,
|
|
739
|
+
enabled: n
|
|
740
|
+
},
|
|
741
|
+
optimisticResponse: { setVibeFeatureFlag: {
|
|
742
|
+
__typename: "Vibe",
|
|
743
|
+
id: V.id,
|
|
744
|
+
featureFlags: {
|
|
745
|
+
...H?.featureFlags ?? {},
|
|
746
|
+
[e.id]: n
|
|
746
747
|
},
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
id:
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
},
|
|
764
|
-
className: "h-5 w-5 accent-action-primary-bg"
|
|
765
|
-
})]
|
|
766
|
-
}, e.id);
|
|
767
|
-
})
|
|
748
|
+
effectiveFeatureFlags: {
|
|
749
|
+
...H?.effectiveFeatureFlags ?? {},
|
|
750
|
+
[e.id]: n
|
|
751
|
+
}
|
|
752
|
+
} }
|
|
753
|
+
});
|
|
754
|
+
} catch (e) {
|
|
755
|
+
console.error("Failed to toggle vibe feature:", e);
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
className: "h-4 w-4 shrink-0 accent-action-primary-bg disabled:opacity-50"
|
|
759
|
+
}), /* @__PURE__ */ N("span", {
|
|
760
|
+
className: "text-sm font-medium text-text-primary",
|
|
761
|
+
children: e.label
|
|
762
|
+
})]
|
|
763
|
+
}, e.id))
|
|
768
764
|
})] })
|
|
769
765
|
]
|
|
770
766
|
}, "config"),
|
|
771
|
-
|
|
767
|
+
Q === "git" && U("git") && /* @__PURE__ */ N(j.div, {
|
|
772
768
|
initial: {
|
|
773
769
|
opacity: 0,
|
|
774
770
|
y: 8
|
|
@@ -783,57 +779,57 @@ function L() {
|
|
|
783
779
|
},
|
|
784
780
|
transition: { duration: .2 },
|
|
785
781
|
className: "space-y-6",
|
|
786
|
-
children: /* @__PURE__ */
|
|
787
|
-
agentId:
|
|
782
|
+
children: /* @__PURE__ */ N(v, {
|
|
783
|
+
agentId: q?.id ?? null,
|
|
788
784
|
required: ["@vibecontrols/vibe-plugin-tool-git"],
|
|
789
785
|
mode: "all",
|
|
790
|
-
eyebrow:
|
|
791
|
-
title:
|
|
792
|
-
description:
|
|
793
|
-
children: rn ? /* @__PURE__ */
|
|
786
|
+
eyebrow: O("vibeDetails.gitPluginEyebrow", "Git plugin required"),
|
|
787
|
+
title: O("vibeDetails.gitPluginTitle", "Install the git plugin"),
|
|
788
|
+
description: O("vibeDetails.gitPluginDescription", "Live git branch, status, and remote data for this vibe are served by the vibe-plugin-tool-git agent plugin."),
|
|
789
|
+
children: rn ? /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
794
790
|
className: "p-4 border-b border-border-default",
|
|
795
|
-
children: /* @__PURE__ */
|
|
791
|
+
children: /* @__PURE__ */ P("h3", {
|
|
796
792
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
797
|
-
children: [/* @__PURE__ */
|
|
793
|
+
children: [/* @__PURE__ */ N(Oe, { className: "w-5 h-5" }), O("vibeDetails.gitInformation", "Git Information")]
|
|
798
794
|
})
|
|
799
|
-
}), /* @__PURE__ */
|
|
795
|
+
}), /* @__PURE__ */ P("div", {
|
|
800
796
|
className: "p-4 space-y-3",
|
|
801
|
-
children: [/* @__PURE__ */
|
|
797
|
+
children: [/* @__PURE__ */ P("div", {
|
|
802
798
|
className: "flex items-center gap-4 flex-wrap",
|
|
803
|
-
children: [V.gitBranch && /* @__PURE__ */
|
|
799
|
+
children: [V.gitBranch && /* @__PURE__ */ P("div", {
|
|
804
800
|
className: "flex items-center gap-2",
|
|
805
|
-
children: [/* @__PURE__ */
|
|
801
|
+
children: [/* @__PURE__ */ P("span", {
|
|
806
802
|
className: "text-sm text-text-secondary",
|
|
807
|
-
children: [
|
|
808
|
-
}), /* @__PURE__ */
|
|
803
|
+
children: [O("vibeDetails.branch", "Branch"), ":"]
|
|
804
|
+
}), /* @__PURE__ */ N("span", {
|
|
809
805
|
className: "px-2 py-1 bg-bg-sunken text-text-primary text-sm rounded font-mono",
|
|
810
806
|
children: V.gitBranch
|
|
811
807
|
})]
|
|
812
|
-
}), V.gitStatus && /* @__PURE__ */
|
|
808
|
+
}), V.gitStatus && /* @__PURE__ */ P("div", {
|
|
813
809
|
className: "flex items-center gap-2",
|
|
814
|
-
children: [/* @__PURE__ */
|
|
810
|
+
children: [/* @__PURE__ */ P("span", {
|
|
815
811
|
className: "text-sm text-text-secondary",
|
|
816
|
-
children: [
|
|
817
|
-
}), /* @__PURE__ */
|
|
812
|
+
children: [O("sessions.filterStatus", "Status"), ":"]
|
|
813
|
+
}), /* @__PURE__ */ N("span", {
|
|
818
814
|
className: `font-medium ${$t(V.gitStatus)}`,
|
|
819
815
|
children: V.gitStatus
|
|
820
816
|
})]
|
|
821
817
|
})]
|
|
822
|
-
}), V.gitRemote && /* @__PURE__ */
|
|
818
|
+
}), V.gitRemote && /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ P("span", {
|
|
823
819
|
className: "text-sm text-text-secondary",
|
|
824
|
-
children: [
|
|
825
|
-
}), /* @__PURE__ */
|
|
820
|
+
children: [O("vibeDetails.remote", "Remote"), ":"]
|
|
821
|
+
}), /* @__PURE__ */ N("p", {
|
|
826
822
|
className: "font-mono text-sm text-text-primary mt-1 break-all",
|
|
827
823
|
children: V.gitRemote
|
|
828
824
|
})] })]
|
|
829
|
-
})] }) : /* @__PURE__ */
|
|
830
|
-
icon: /* @__PURE__ */
|
|
831
|
-
title:
|
|
832
|
-
description:
|
|
825
|
+
})] }) : /* @__PURE__ */ N(h, {
|
|
826
|
+
icon: /* @__PURE__ */ N(Oe, { className: "w-8 h-8 text-text-secondary" }),
|
|
827
|
+
title: O("vibeDetails.noGitInformation", "No git information"),
|
|
828
|
+
description: O("vibeDetails.noGitInformationDescription", "This vibe does not have any git repository linked")
|
|
833
829
|
})
|
|
834
830
|
})
|
|
835
831
|
}, "git"),
|
|
836
|
-
|
|
832
|
+
Q === "sessions" && U("sessions") && /* @__PURE__ */ N(j.div, {
|
|
837
833
|
initial: {
|
|
838
834
|
opacity: 0,
|
|
839
835
|
y: 8
|
|
@@ -847,66 +843,66 @@ function L() {
|
|
|
847
843
|
y: -8
|
|
848
844
|
},
|
|
849
845
|
transition: { duration: .2 },
|
|
850
|
-
children: /* @__PURE__ */
|
|
851
|
-
agentId:
|
|
846
|
+
children: /* @__PURE__ */ N(v, {
|
|
847
|
+
agentId: q?.id ?? null,
|
|
852
848
|
requirements: [{
|
|
853
849
|
packages: ["@vibecontrols/vibe-plugin-session-manager"],
|
|
854
850
|
mode: "all",
|
|
855
|
-
eyebrow:
|
|
856
|
-
title:
|
|
857
|
-
description:
|
|
851
|
+
eyebrow: O("vibeDetails.sessionsManagerEyebrow", "Session manager required"),
|
|
852
|
+
title: O("vibeDetails.sessionsManagerTitle", "Install the session manager"),
|
|
853
|
+
description: O("vibeDetails.sessionsManagerDescription", "Sessions are orchestrated by the unified session manager plugin. Install it to continue.")
|
|
858
854
|
}, {
|
|
859
855
|
packages: ne,
|
|
860
856
|
mode: "any",
|
|
861
|
-
eyebrow:
|
|
862
|
-
title:
|
|
863
|
-
description:
|
|
857
|
+
eyebrow: O("vibeDetails.sessionProviderEyebrow", "Session provider required"),
|
|
858
|
+
title: O("vibeDetails.sessionProviderTitle", "Pick a session provider"),
|
|
859
|
+
description: O("vibeDetails.sessionProviderDescription", "Choose the terminal multiplexer your sessions should run on. You can install more providers later.")
|
|
864
860
|
}],
|
|
865
|
-
children: /* @__PURE__ */
|
|
861
|
+
children: /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ P("div", {
|
|
866
862
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
867
|
-
children: [/* @__PURE__ */
|
|
863
|
+
children: [/* @__PURE__ */ P("h3", {
|
|
868
864
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
869
865
|
children: [
|
|
870
|
-
/* @__PURE__ */
|
|
871
|
-
|
|
866
|
+
/* @__PURE__ */ N(k, { className: "w-5 h-5" }),
|
|
867
|
+
O("nav.sessions", "Sessions"),
|
|
872
868
|
" (",
|
|
873
869
|
G.length,
|
|
874
870
|
")"
|
|
875
871
|
]
|
|
876
|
-
}), /* @__PURE__ */
|
|
872
|
+
}), /* @__PURE__ */ P("button", {
|
|
877
873
|
onClick: qt,
|
|
878
874
|
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__ */
|
|
875
|
+
children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), O("vibeDetails.new", "New")]
|
|
880
876
|
})]
|
|
881
|
-
}), G.length > 0 ? /* @__PURE__ */
|
|
877
|
+
}), G.length > 0 ? /* @__PURE__ */ N(Ye, {
|
|
882
878
|
className: "divide-y divide-border-primary",
|
|
883
|
-
children: G.map((e) => /* @__PURE__ */
|
|
879
|
+
children: G.map((e) => /* @__PURE__ */ N(I, {
|
|
884
880
|
variant: "fadeRight",
|
|
885
|
-
children: /* @__PURE__ */
|
|
881
|
+
children: /* @__PURE__ */ P("div", {
|
|
886
882
|
onClick: () => Xt(e.id),
|
|
887
883
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
888
|
-
children: [/* @__PURE__ */
|
|
884
|
+
children: [/* @__PURE__ */ P("div", {
|
|
889
885
|
className: "flex items-center gap-3 min-w-0",
|
|
890
|
-
children: [/* @__PURE__ */
|
|
886
|
+
children: [/* @__PURE__ */ N(k, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
|
|
891
887
|
className: "min-w-0",
|
|
892
|
-
children: [/* @__PURE__ */
|
|
888
|
+
children: [/* @__PURE__ */ N("p", {
|
|
893
889
|
className: "font-medium text-text-primary truncate",
|
|
894
890
|
children: e.name
|
|
895
|
-
}), /* @__PURE__ */
|
|
891
|
+
}), /* @__PURE__ */ N("p", {
|
|
896
892
|
className: "text-sm text-text-secondary truncate",
|
|
897
893
|
children: e.type
|
|
898
894
|
})]
|
|
899
895
|
})]
|
|
900
|
-
}), /* @__PURE__ */
|
|
896
|
+
}), /* @__PURE__ */ N(g, { status: e.status })]
|
|
901
897
|
})
|
|
902
898
|
}, e.id))
|
|
903
|
-
}) : /* @__PURE__ */
|
|
899
|
+
}) : /* @__PURE__ */ N("div", {
|
|
904
900
|
className: "p-6 text-center text-text-secondary",
|
|
905
|
-
children:
|
|
901
|
+
children: O("vibeDetails.noSessionsForVibe", "No sessions for this vibe")
|
|
906
902
|
})] })
|
|
907
903
|
})
|
|
908
904
|
}, "sessions"),
|
|
909
|
-
|
|
905
|
+
Q === "notes" && U("notes") && /* @__PURE__ */ N(j.div, {
|
|
910
906
|
initial: {
|
|
911
907
|
opacity: 0,
|
|
912
908
|
y: 8
|
|
@@ -921,12 +917,12 @@ function L() {
|
|
|
921
917
|
},
|
|
922
918
|
transition: { duration: .2 },
|
|
923
919
|
className: "space-y-6",
|
|
924
|
-
children: /* @__PURE__ */
|
|
920
|
+
children: /* @__PURE__ */ N(b, {
|
|
925
921
|
context: "vibe",
|
|
926
922
|
vibeId: V.id
|
|
927
923
|
})
|
|
928
924
|
}, "notes"),
|
|
929
|
-
|
|
925
|
+
Q === "docs" && U("docs") && /* @__PURE__ */ N(j.div, {
|
|
930
926
|
initial: {
|
|
931
927
|
opacity: 0,
|
|
932
928
|
y: 8
|
|
@@ -941,9 +937,9 @@ function L() {
|
|
|
941
937
|
},
|
|
942
938
|
transition: { duration: .2 },
|
|
943
939
|
className: "space-y-6",
|
|
944
|
-
children: /* @__PURE__ */
|
|
940
|
+
children: /* @__PURE__ */ N(ue, { vibeId: V.id })
|
|
945
941
|
}, "docs"),
|
|
946
|
-
|
|
942
|
+
Q === "scorecard" && U("scorecard") && /* @__PURE__ */ N(j.div, {
|
|
947
943
|
initial: {
|
|
948
944
|
opacity: 0,
|
|
949
945
|
y: 8
|
|
@@ -958,12 +954,12 @@ function L() {
|
|
|
958
954
|
},
|
|
959
955
|
transition: { duration: .2 },
|
|
960
956
|
className: "space-y-6",
|
|
961
|
-
children: /* @__PURE__ */
|
|
957
|
+
children: /* @__PURE__ */ N(le, {
|
|
962
958
|
ownerType: "VIBE",
|
|
963
959
|
ownerId: V.id
|
|
964
960
|
})
|
|
965
961
|
}, "scorecard"),
|
|
966
|
-
|
|
962
|
+
Q === "catalogs" && U("catalogs") && /* @__PURE__ */ N(j.div, {
|
|
967
963
|
initial: {
|
|
968
964
|
opacity: 0,
|
|
969
965
|
y: 8
|
|
@@ -978,13 +974,13 @@ function L() {
|
|
|
978
974
|
},
|
|
979
975
|
transition: { duration: .2 },
|
|
980
976
|
className: "space-y-6",
|
|
981
|
-
children: /* @__PURE__ */
|
|
977
|
+
children: /* @__PURE__ */ N(rt, {
|
|
982
978
|
vibeId: V.id,
|
|
983
|
-
tr:
|
|
979
|
+
tr: O,
|
|
984
980
|
navigate: S
|
|
985
981
|
})
|
|
986
982
|
}, "catalogs"),
|
|
987
|
-
|
|
983
|
+
Q === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */ N(j.div, {
|
|
988
984
|
initial: {
|
|
989
985
|
opacity: 0,
|
|
990
986
|
y: 8
|
|
@@ -999,37 +995,37 @@ function L() {
|
|
|
999
995
|
},
|
|
1000
996
|
transition: { duration: .2 },
|
|
1001
997
|
className: "space-y-6",
|
|
1002
|
-
children: /* @__PURE__ */
|
|
1003
|
-
agentId:
|
|
998
|
+
children: /* @__PURE__ */ N(v, {
|
|
999
|
+
agentId: q?.id ?? null,
|
|
1004
1000
|
required: ["@vibecontrols/vibe-plugin-tool-graphiql"],
|
|
1005
1001
|
mode: "all",
|
|
1006
|
-
eyebrow:
|
|
1007
|
-
title:
|
|
1008
|
-
description:
|
|
1009
|
-
children:
|
|
1002
|
+
eyebrow: O("vibeDetails.graphqlPluginEyebrow", "GraphQL playground plugin required"),
|
|
1003
|
+
title: O("vibeDetails.graphqlPluginTitle", "Install the GraphQL playground"),
|
|
1004
|
+
description: O("vibeDetails.graphqlPluginDescription", "The GraphQL Playground is served by the graphiql agent plugin. Install it to continue."),
|
|
1005
|
+
children: Mt ? /* @__PURE__ */ N(it, {
|
|
1010
1006
|
vibeId: V.id,
|
|
1011
|
-
agentId:
|
|
1012
|
-
profile:
|
|
1013
|
-
tunnelUrl:
|
|
1014
|
-
apiKey:
|
|
1007
|
+
agentId: q?.id ?? null,
|
|
1008
|
+
profile: Y,
|
|
1009
|
+
tunnelUrl: Mt,
|
|
1010
|
+
apiKey: Nt,
|
|
1015
1011
|
type: "graphql",
|
|
1016
|
-
tr:
|
|
1017
|
-
}) : /* @__PURE__ */
|
|
1018
|
-
icon: /* @__PURE__ */
|
|
1019
|
-
title:
|
|
1020
|
-
description:
|
|
1012
|
+
tr: O
|
|
1013
|
+
}) : /* @__PURE__ */ N(h, {
|
|
1014
|
+
icon: /* @__PURE__ */ N(Ie, { className: "w-8 h-8 text-text-secondary" }),
|
|
1015
|
+
title: O("vibeDetails.noAgentTunnel", "No agent tunnel available"),
|
|
1016
|
+
description: O("vibeDetails.noAgentTunnelDesc2", "The GraphQL playground requires an active agent with a tunnel URL.")
|
|
1021
1017
|
})
|
|
1022
1018
|
})
|
|
1023
1019
|
}, "graphqlPlayground"),
|
|
1024
|
-
|
|
1020
|
+
Q === "gitops" && U("gitops") && /* @__PURE__ */ N(de, {
|
|
1025
1021
|
vibeId: r || "",
|
|
1026
|
-
agentId:
|
|
1027
|
-
profile:
|
|
1028
|
-
tunnelUrl:
|
|
1029
|
-
apiKey:
|
|
1030
|
-
tr:
|
|
1022
|
+
agentId: q?.id ?? "",
|
|
1023
|
+
profile: Y,
|
|
1024
|
+
tunnelUrl: Mt,
|
|
1025
|
+
apiKey: Nt,
|
|
1026
|
+
tr: O
|
|
1031
1027
|
}),
|
|
1032
|
-
|
|
1028
|
+
Q === "security" && U("security") && /* @__PURE__ */ N(j.div, {
|
|
1033
1029
|
initial: {
|
|
1034
1030
|
opacity: 0,
|
|
1035
1031
|
y: 8
|
|
@@ -1044,9 +1040,9 @@ function L() {
|
|
|
1044
1040
|
},
|
|
1045
1041
|
transition: { duration: .2 },
|
|
1046
1042
|
className: "space-y-6",
|
|
1047
|
-
children: /* @__PURE__ */
|
|
1043
|
+
children: /* @__PURE__ */ N(ge, { vibeId: r || "" })
|
|
1048
1044
|
}, "security"),
|
|
1049
|
-
|
|
1045
|
+
Q === "related" && U("related") && /* @__PURE__ */ N(j.div, {
|
|
1050
1046
|
initial: {
|
|
1051
1047
|
opacity: 0,
|
|
1052
1048
|
y: 8
|
|
@@ -1061,93 +1057,93 @@ function L() {
|
|
|
1061
1057
|
},
|
|
1062
1058
|
transition: { duration: .2 },
|
|
1063
1059
|
className: "space-y-6",
|
|
1064
|
-
children: nn > 0 ? /* @__PURE__ */
|
|
1065
|
-
|
|
1060
|
+
children: nn > 0 ? /* @__PURE__ */ P(M, { children: [
|
|
1061
|
+
K.length > 0 && /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
|
|
1066
1062
|
className: "p-4 border-b border-border-default",
|
|
1067
|
-
children: /* @__PURE__ */
|
|
1063
|
+
children: /* @__PURE__ */ P("h3", {
|
|
1068
1064
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1069
1065
|
children: [
|
|
1070
|
-
/* @__PURE__ */
|
|
1071
|
-
|
|
1066
|
+
/* @__PURE__ */ N(A, { className: "w-5 h-5" }),
|
|
1067
|
+
O("vibeDetails.childVibes", "Child Vibes"),
|
|
1072
1068
|
" (",
|
|
1073
|
-
|
|
1069
|
+
K.length,
|
|
1074
1070
|
")"
|
|
1075
1071
|
]
|
|
1076
1072
|
})
|
|
1077
|
-
}), /* @__PURE__ */
|
|
1073
|
+
}), /* @__PURE__ */ N(Ye, {
|
|
1078
1074
|
className: "divide-y divide-border-primary",
|
|
1079
|
-
children:
|
|
1075
|
+
children: K.map((e) => /* @__PURE__ */ N(I, {
|
|
1080
1076
|
variant: "fadeRight",
|
|
1081
|
-
children: /* @__PURE__ */
|
|
1077
|
+
children: /* @__PURE__ */ P("div", {
|
|
1082
1078
|
onClick: () => Zt(e.id),
|
|
1083
1079
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
1084
|
-
children: [/* @__PURE__ */
|
|
1080
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1085
1081
|
className: "flex items-center gap-3 min-w-0",
|
|
1086
|
-
children: [/* @__PURE__ */
|
|
1082
|
+
children: [/* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
|
|
1087
1083
|
className: "min-w-0",
|
|
1088
|
-
children: [/* @__PURE__ */
|
|
1084
|
+
children: [/* @__PURE__ */ N("p", {
|
|
1089
1085
|
className: "font-medium text-text-primary truncate",
|
|
1090
1086
|
children: e.name
|
|
1091
|
-
}), /* @__PURE__ */
|
|
1087
|
+
}), /* @__PURE__ */ N("p", {
|
|
1092
1088
|
className: "text-sm text-text-secondary truncate",
|
|
1093
1089
|
children: e.type
|
|
1094
1090
|
})]
|
|
1095
1091
|
})]
|
|
1096
|
-
}), /* @__PURE__ */
|
|
1092
|
+
}), /* @__PURE__ */ N(g, { status: e.status })]
|
|
1097
1093
|
})
|
|
1098
1094
|
}, e.id))
|
|
1099
1095
|
})] }),
|
|
1100
|
-
|
|
1101
|
-
onClick: () => Zt(
|
|
1096
|
+
At && /* @__PURE__ */ N(_, {
|
|
1097
|
+
onClick: () => Zt(At.id),
|
|
1102
1098
|
hoverable: !0,
|
|
1103
|
-
children: /* @__PURE__ */
|
|
1099
|
+
children: /* @__PURE__ */ P("div", {
|
|
1104
1100
|
className: "p-4 flex items-center gap-3",
|
|
1105
|
-
children: [/* @__PURE__ */
|
|
1101
|
+
children: [/* @__PURE__ */ N("div", {
|
|
1106
1102
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1107
|
-
children: /* @__PURE__ */
|
|
1108
|
-
}), /* @__PURE__ */
|
|
1103
|
+
children: /* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary" })
|
|
1104
|
+
}), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1109
1105
|
className: "text-sm text-text-secondary",
|
|
1110
|
-
children:
|
|
1111
|
-
}), /* @__PURE__ */
|
|
1106
|
+
children: O("vibeDetails.parentVibe", "Parent Vibe")
|
|
1107
|
+
}), /* @__PURE__ */ N("p", {
|
|
1112
1108
|
className: "font-medium text-text-primary",
|
|
1113
|
-
children:
|
|
1109
|
+
children: At.name
|
|
1114
1110
|
})] })]
|
|
1115
1111
|
})
|
|
1116
1112
|
}),
|
|
1117
|
-
|
|
1113
|
+
J && /* @__PURE__ */ N(_, {
|
|
1118
1114
|
onClick: Yt,
|
|
1119
1115
|
hoverable: !0,
|
|
1120
|
-
children: /* @__PURE__ */
|
|
1116
|
+
children: /* @__PURE__ */ P("div", {
|
|
1121
1117
|
className: "p-4 flex items-center justify-between",
|
|
1122
|
-
children: [/* @__PURE__ */
|
|
1118
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1123
1119
|
className: "flex items-center gap-3",
|
|
1124
|
-
children: [/* @__PURE__ */
|
|
1120
|
+
children: [/* @__PURE__ */ N("div", {
|
|
1125
1121
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1126
|
-
children: /* @__PURE__ */
|
|
1127
|
-
}), /* @__PURE__ */
|
|
1128
|
-
/* @__PURE__ */
|
|
1122
|
+
children: /* @__PURE__ */ N(Ve, { className: "w-5 h-5 text-text-secondary" })
|
|
1123
|
+
}), /* @__PURE__ */ P("div", { children: [
|
|
1124
|
+
/* @__PURE__ */ N("p", {
|
|
1129
1125
|
className: "text-sm text-text-secondary",
|
|
1130
|
-
children:
|
|
1126
|
+
children: O("vibeDetails.runningOnAgent", "Running on Agent")
|
|
1131
1127
|
}),
|
|
1132
|
-
/* @__PURE__ */
|
|
1128
|
+
/* @__PURE__ */ N("p", {
|
|
1133
1129
|
className: "font-medium text-text-primary",
|
|
1134
|
-
children:
|
|
1130
|
+
children: J.name
|
|
1135
1131
|
}),
|
|
1136
|
-
/* @__PURE__ */
|
|
1132
|
+
/* @__PURE__ */ N("p", {
|
|
1137
1133
|
className: "text-sm text-text-secondary",
|
|
1138
|
-
children:
|
|
1134
|
+
children: J.hostname
|
|
1139
1135
|
})
|
|
1140
1136
|
] })]
|
|
1141
|
-
}), /* @__PURE__ */
|
|
1137
|
+
}), /* @__PURE__ */ N(g, { status: J.isActive ? "ACTIVE" : "OFFLINE" })]
|
|
1142
1138
|
})
|
|
1143
1139
|
})
|
|
1144
|
-
] }) : /* @__PURE__ */
|
|
1145
|
-
icon: /* @__PURE__ */
|
|
1146
|
-
title:
|
|
1147
|
-
description:
|
|
1140
|
+
] }) : /* @__PURE__ */ N(h, {
|
|
1141
|
+
icon: /* @__PURE__ */ N(Ne, { className: "w-8 h-8 text-text-secondary" }),
|
|
1142
|
+
title: O("vibeDetails.noRelatedEntities", "No related entities"),
|
|
1143
|
+
description: O("vibeDetails.noRelatedEntitiesDescription", "This vibe has no child vibes, parent vibe, or linked agent")
|
|
1148
1144
|
})
|
|
1149
1145
|
}, "related"),
|
|
1150
|
-
|
|
1146
|
+
Q === "llmContext" && /* @__PURE__ */ N(j.div, {
|
|
1151
1147
|
initial: {
|
|
1152
1148
|
opacity: 0,
|
|
1153
1149
|
y: 8
|
|
@@ -1162,7 +1158,7 @@ function L() {
|
|
|
1162
1158
|
},
|
|
1163
1159
|
transition: { duration: .2 },
|
|
1164
1160
|
className: "space-y-6",
|
|
1165
|
-
children: /* @__PURE__ */
|
|
1161
|
+
children: /* @__PURE__ */ N(_e, {
|
|
1166
1162
|
vibeId: V.id,
|
|
1167
1163
|
attachedAgents: W.map((e) => ({
|
|
1168
1164
|
id: e.id,
|
|
@@ -1170,11 +1166,11 @@ function L() {
|
|
|
1170
1166
|
}))
|
|
1171
1167
|
})
|
|
1172
1168
|
}, "llmContext"),
|
|
1173
|
-
|
|
1174
|
-
let e =
|
|
1169
|
+
X && (() => {
|
|
1170
|
+
let e = Z.data.find((e) => e.contribution.id === Q);
|
|
1175
1171
|
if (!e) return null;
|
|
1176
1172
|
let t = e.tunnel, n = e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`];
|
|
1177
|
-
return /* @__PURE__ */
|
|
1173
|
+
return /* @__PURE__ */ N(j.div, {
|
|
1178
1174
|
initial: {
|
|
1179
1175
|
opacity: 0,
|
|
1180
1176
|
y: 8
|
|
@@ -1189,14 +1185,14 @@ function L() {
|
|
|
1189
1185
|
},
|
|
1190
1186
|
transition: { duration: .2 },
|
|
1191
1187
|
className: "space-y-6",
|
|
1192
|
-
children: /* @__PURE__ */
|
|
1188
|
+
children: /* @__PURE__ */ N(_, { children: /* @__PURE__ */ N("div", {
|
|
1193
1189
|
className: "p-0 h-[600px]",
|
|
1194
|
-
children: /* @__PURE__ */
|
|
1190
|
+
children: /* @__PURE__ */ N(ce, {
|
|
1195
1191
|
contribution: e,
|
|
1196
1192
|
tunnel: t,
|
|
1197
1193
|
restPaths: n,
|
|
1198
1194
|
context: { vibeId: V.id },
|
|
1199
|
-
agentId:
|
|
1195
|
+
agentId: q?.id ?? "",
|
|
1200
1196
|
profile: t.profile,
|
|
1201
1197
|
theme: {
|
|
1202
1198
|
colorMode: "light",
|
|
@@ -1211,87 +1207,87 @@ function L() {
|
|
|
1211
1207
|
})()
|
|
1212
1208
|
]
|
|
1213
1209
|
}),
|
|
1214
|
-
|
|
1215
|
-
isOpen:
|
|
1216
|
-
onClose: () =>
|
|
1210
|
+
X && q && /* @__PURE__ */ N(se, {
|
|
1211
|
+
isOpen: It,
|
|
1212
|
+
onClose: () => Lt(!1),
|
|
1217
1213
|
mountPoint: "vibe.detailTab",
|
|
1218
|
-
agentId:
|
|
1219
|
-
profile:
|
|
1214
|
+
agentId: q.id,
|
|
1215
|
+
profile: Y ?? "default",
|
|
1220
1216
|
onInstalled: () => {
|
|
1221
|
-
|
|
1217
|
+
Z.refetch();
|
|
1222
1218
|
}
|
|
1223
1219
|
}),
|
|
1224
|
-
ct && /* @__PURE__ */
|
|
1220
|
+
ct && /* @__PURE__ */ N("div", {
|
|
1225
1221
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1226
|
-
children: /* @__PURE__ */
|
|
1222
|
+
children: /* @__PURE__ */ P("div", {
|
|
1227
1223
|
className: "bg-bg-surface rounded-lg p-6 w-full max-w-lg",
|
|
1228
1224
|
children: [
|
|
1229
|
-
/* @__PURE__ */
|
|
1225
|
+
/* @__PURE__ */ P("h2", {
|
|
1230
1226
|
className: "text-lg font-semibold text-text-primary mb-4",
|
|
1231
1227
|
children: [
|
|
1232
|
-
|
|
1228
|
+
O("vibeDetails.newSessionFor", "New Session for"),
|
|
1233
1229
|
" ",
|
|
1234
1230
|
V.name
|
|
1235
1231
|
]
|
|
1236
1232
|
}),
|
|
1237
|
-
ut && /* @__PURE__ */
|
|
1233
|
+
ut && /* @__PURE__ */ N("div", {
|
|
1238
1234
|
className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1239
1235
|
children: ut
|
|
1240
1236
|
}),
|
|
1241
|
-
/* @__PURE__ */
|
|
1237
|
+
/* @__PURE__ */ P("div", {
|
|
1242
1238
|
className: "space-y-4",
|
|
1243
1239
|
children: [
|
|
1244
|
-
/* @__PURE__ */
|
|
1240
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1245
1241
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1246
|
-
children:
|
|
1247
|
-
}), /* @__PURE__ */
|
|
1242
|
+
children: O("vibeDetails.sessionName", "Session Name")
|
|
1243
|
+
}), /* @__PURE__ */ N("input", {
|
|
1248
1244
|
ref: z,
|
|
1249
1245
|
type: "text",
|
|
1250
|
-
placeholder:
|
|
1246
|
+
placeholder: O("vibeDetails.sessionNamePlaceholder", "dev-terminal"),
|
|
1251
1247
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1252
1248
|
})] }),
|
|
1253
|
-
/* @__PURE__ */
|
|
1249
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1254
1250
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1255
|
-
children:
|
|
1256
|
-
}), /* @__PURE__ */
|
|
1251
|
+
children: O("sessions.filterType", "Type")
|
|
1252
|
+
}), /* @__PURE__ */ P("select", {
|
|
1257
1253
|
ref: ht,
|
|
1258
1254
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
|
|
1259
1255
|
children: [
|
|
1260
|
-
/* @__PURE__ */
|
|
1256
|
+
/* @__PURE__ */ N("option", {
|
|
1261
1257
|
value: "TERMINAL",
|
|
1262
|
-
children:
|
|
1258
|
+
children: O("sessions.typeTerminal", "Terminal")
|
|
1263
1259
|
}),
|
|
1264
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ N("option", {
|
|
1265
1261
|
value: "TMUX",
|
|
1266
|
-
children:
|
|
1262
|
+
children: O("sessions.typeTmux", "TMUX")
|
|
1267
1263
|
}),
|
|
1268
|
-
/* @__PURE__ */
|
|
1264
|
+
/* @__PURE__ */ N("option", {
|
|
1269
1265
|
value: "SSH",
|
|
1270
|
-
children:
|
|
1266
|
+
children: O("sessions.typeSsh", "SSH")
|
|
1271
1267
|
}),
|
|
1272
|
-
/* @__PURE__ */
|
|
1268
|
+
/* @__PURE__ */ N("option", {
|
|
1273
1269
|
value: "SCRIPT",
|
|
1274
|
-
children:
|
|
1270
|
+
children: O("sessions.typeScript", "Script")
|
|
1275
1271
|
}),
|
|
1276
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ N("option", {
|
|
1277
1273
|
value: "CUSTOM",
|
|
1278
|
-
children:
|
|
1274
|
+
children: O("sessions.typeCustom", "Custom")
|
|
1279
1275
|
})
|
|
1280
1276
|
]
|
|
1281
1277
|
})] }),
|
|
1282
|
-
/* @__PURE__ */
|
|
1278
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1283
1279
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1284
|
-
children:
|
|
1285
|
-
}), /* @__PURE__ */
|
|
1280
|
+
children: O("sessions.command", "Command")
|
|
1281
|
+
}), /* @__PURE__ */ N("input", {
|
|
1286
1282
|
ref: gt,
|
|
1287
1283
|
type: "text",
|
|
1288
|
-
placeholder:
|
|
1284
|
+
placeholder: O("vibeDetails.sessionCommandPlaceholder", "bash"),
|
|
1289
1285
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1290
1286
|
})] }),
|
|
1291
|
-
/* @__PURE__ */
|
|
1287
|
+
/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
|
|
1292
1288
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1293
|
-
children:
|
|
1294
|
-
}), /* @__PURE__ */
|
|
1289
|
+
children: O("vibeDetails.workingDirectory", "Working Directory")
|
|
1290
|
+
}), /* @__PURE__ */ N("input", {
|
|
1295
1291
|
ref: _t,
|
|
1296
1292
|
type: "text",
|
|
1297
1293
|
defaultValue: V.path || "",
|
|
@@ -1299,18 +1295,18 @@ function L() {
|
|
|
1299
1295
|
})] })
|
|
1300
1296
|
]
|
|
1301
1297
|
}),
|
|
1302
|
-
/* @__PURE__ */
|
|
1298
|
+
/* @__PURE__ */ P("div", {
|
|
1303
1299
|
className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
|
|
1304
|
-
children: [/* @__PURE__ */
|
|
1300
|
+
children: [/* @__PURE__ */ N("button", {
|
|
1305
1301
|
onClick: () => lt(!1),
|
|
1306
1302
|
disabled: dt,
|
|
1307
1303
|
className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
1308
|
-
children:
|
|
1309
|
-
}), /* @__PURE__ */
|
|
1304
|
+
children: O("common.cancel", "Cancel")
|
|
1305
|
+
}), /* @__PURE__ */ N("button", {
|
|
1310
1306
|
onClick: Jt,
|
|
1311
1307
|
disabled: dt,
|
|
1312
1308
|
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 ?
|
|
1309
|
+
children: dt ? O("sessions.creating", "Creating...") : O("sessions.createSession", "Create Session")
|
|
1314
1310
|
})]
|
|
1315
1311
|
})
|
|
1316
1312
|
]
|
|
@@ -1319,7 +1315,7 @@ function L() {
|
|
|
1319
1315
|
]
|
|
1320
1316
|
});
|
|
1321
1317
|
}
|
|
1322
|
-
function
|
|
1318
|
+
function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
1323
1319
|
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
1320
|
await d({ variables: {
|
|
1325
1321
|
catalogId: e,
|
|
@@ -1331,15 +1327,15 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1331
1327
|
vibeId: t
|
|
1332
1328
|
} }), await u();
|
|
1333
1329
|
};
|
|
1334
|
-
return l && f.length === 0 ? /* @__PURE__ */
|
|
1335
|
-
/* @__PURE__ */
|
|
1330
|
+
return l && f.length === 0 ? /* @__PURE__ */ N(re, { variant: "detail" }) : /* @__PURE__ */ P(M, { children: [
|
|
1331
|
+
/* @__PURE__ */ P("div", {
|
|
1336
1332
|
className: "flex items-center justify-between",
|
|
1337
|
-
children: [/* @__PURE__ */
|
|
1333
|
+
children: [/* @__PURE__ */ P("h3", {
|
|
1338
1334
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1339
1335
|
children: [
|
|
1340
|
-
/* @__PURE__ */
|
|
1336
|
+
/* @__PURE__ */ N(Me, { className: "w-5 h-5" }),
|
|
1341
1337
|
n("vibeDetails.catalogsTitle", "Catalogs"),
|
|
1342
|
-
/* @__PURE__ */
|
|
1338
|
+
/* @__PURE__ */ P("span", {
|
|
1343
1339
|
className: "text-sm font-normal text-text-secondary",
|
|
1344
1340
|
children: [
|
|
1345
1341
|
"(",
|
|
@@ -1348,41 +1344,41 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1348
1344
|
]
|
|
1349
1345
|
})
|
|
1350
1346
|
]
|
|
1351
|
-
}), /* @__PURE__ */
|
|
1347
|
+
}), /* @__PURE__ */ P("button", {
|
|
1352
1348
|
onClick: () => o(!0),
|
|
1353
1349
|
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__ */
|
|
1350
|
+
children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), n("vibeDetails.addToCatalog", "Add to Catalog")]
|
|
1355
1351
|
})]
|
|
1356
1352
|
}),
|
|
1357
|
-
p.length > 0 ? /* @__PURE__ */
|
|
1353
|
+
p.length > 0 ? /* @__PURE__ */ N("div", {
|
|
1358
1354
|
className: "space-y-2",
|
|
1359
|
-
children: p.map((e) => /* @__PURE__ */
|
|
1355
|
+
children: p.map((e) => /* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
|
|
1360
1356
|
className: "p-3 flex items-center justify-between",
|
|
1361
|
-
children: [/* @__PURE__ */
|
|
1357
|
+
children: [/* @__PURE__ */ P("button", {
|
|
1362
1358
|
onClick: () => i(`/catalogs/${e.id}`),
|
|
1363
1359
|
className: "flex items-center gap-3 text-left hover:opacity-80 transition-opacity",
|
|
1364
|
-
children: [/* @__PURE__ */
|
|
1360
|
+
children: [/* @__PURE__ */ N(Me, { className: "w-5 h-5 text-action-primary-bg flex-shrink-0" }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1365
1361
|
className: "font-medium text-text-primary text-sm",
|
|
1366
1362
|
children: e.name
|
|
1367
|
-
}), /* @__PURE__ */
|
|
1363
|
+
}), /* @__PURE__ */ N("p", {
|
|
1368
1364
|
className: "text-xs text-text-secondary",
|
|
1369
1365
|
children: e.visibility
|
|
1370
1366
|
})] })]
|
|
1371
|
-
}), /* @__PURE__ */
|
|
1367
|
+
}), /* @__PURE__ */ N("button", {
|
|
1372
1368
|
onClick: () => te(e.id),
|
|
1373
1369
|
className: "p-1.5 text-text-muted hover:text-status-error-text hover:bg-status-error-bg rounded-md transition-colors",
|
|
1374
1370
|
title: n("vibeDetails.removeFromCatalog", "Remove from catalog"),
|
|
1375
|
-
children: /* @__PURE__ */
|
|
1371
|
+
children: /* @__PURE__ */ N(Ke, { className: "w-4 h-4" })
|
|
1376
1372
|
})]
|
|
1377
1373
|
}) }, e.id))
|
|
1378
|
-
}) : /* @__PURE__ */
|
|
1379
|
-
icon: /* @__PURE__ */
|
|
1374
|
+
}) : /* @__PURE__ */ N(h, {
|
|
1375
|
+
icon: /* @__PURE__ */ N(Me, { className: "w-8 h-8 text-text-secondary" }),
|
|
1380
1376
|
title: n("vibeDetails.noCatalogs", "Not in any catalogs"),
|
|
1381
1377
|
description: n("vibeDetails.noCatalogsDesc", "Add this vibe to catalogs to organize and track it alongside other components")
|
|
1382
1378
|
}),
|
|
1383
|
-
a && /* @__PURE__ */
|
|
1379
|
+
a && /* @__PURE__ */ N("div", {
|
|
1384
1380
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1385
|
-
children: /* @__PURE__ */
|
|
1381
|
+
children: /* @__PURE__ */ P(j.div, {
|
|
1386
1382
|
initial: {
|
|
1387
1383
|
opacity: 0,
|
|
1388
1384
|
scale: .95
|
|
@@ -1393,33 +1389,33 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1393
1389
|
},
|
|
1394
1390
|
className: "bg-bg-surface rounded-lg w-full max-w-md max-h-[60vh] flex flex-col",
|
|
1395
1391
|
children: [
|
|
1396
|
-
/* @__PURE__ */
|
|
1392
|
+
/* @__PURE__ */ N("div", {
|
|
1397
1393
|
className: "p-4 border-b border-border-default",
|
|
1398
|
-
children: /* @__PURE__ */
|
|
1394
|
+
children: /* @__PURE__ */ N("h2", {
|
|
1399
1395
|
className: "text-lg font-semibold text-text-primary",
|
|
1400
1396
|
children: n("vibeDetails.addToCatalogTitle", "Add Vibe to Catalog")
|
|
1401
1397
|
})
|
|
1402
1398
|
}),
|
|
1403
|
-
/* @__PURE__ */
|
|
1399
|
+
/* @__PURE__ */ N("div", {
|
|
1404
1400
|
className: "flex-1 overflow-y-auto p-2",
|
|
1405
|
-
children: m.length === 0 ? /* @__PURE__ */
|
|
1401
|
+
children: m.length === 0 ? /* @__PURE__ */ N("div", {
|
|
1406
1402
|
className: "p-4 text-center text-text-secondary text-sm",
|
|
1407
1403
|
children: n("vibeDetails.noAvailableCatalogs", "No available catalogs. This vibe is already in all catalogs.")
|
|
1408
|
-
}) : m.map((e) => /* @__PURE__ */
|
|
1404
|
+
}) : m.map((e) => /* @__PURE__ */ P("button", {
|
|
1409
1405
|
onClick: () => g(e.id),
|
|
1410
1406
|
className: "w-full flex items-center justify-between p-3 rounded-md hover:bg-bg-sunken transition-colors text-left",
|
|
1411
|
-
children: [/* @__PURE__ */
|
|
1407
|
+
children: [/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
|
|
1412
1408
|
className: "font-medium text-text-primary text-sm",
|
|
1413
1409
|
children: e.name
|
|
1414
|
-
}), /* @__PURE__ */
|
|
1410
|
+
}), /* @__PURE__ */ N("p", {
|
|
1415
1411
|
className: "text-xs text-text-secondary",
|
|
1416
1412
|
children: e.visibility
|
|
1417
|
-
})] }), /* @__PURE__ */
|
|
1413
|
+
})] }), /* @__PURE__ */ N(ze, { className: "w-4 h-4 text-text-secondary" })]
|
|
1418
1414
|
}, e.id))
|
|
1419
1415
|
}),
|
|
1420
|
-
/* @__PURE__ */
|
|
1416
|
+
/* @__PURE__ */ N("div", {
|
|
1421
1417
|
className: "p-4 border-t border-border-default",
|
|
1422
|
-
children: /* @__PURE__ */
|
|
1418
|
+
children: /* @__PURE__ */ N("button", {
|
|
1423
1419
|
onClick: () => o(!1),
|
|
1424
1420
|
className: "w-full px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
|
|
1425
1421
|
children: n("common.close", "Close")
|
|
@@ -1430,9 +1426,9 @@ function it({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1430
1426
|
})
|
|
1431
1427
|
] });
|
|
1432
1428
|
}
|
|
1433
|
-
function
|
|
1429
|
+
function it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type: a, tr: o }) {
|
|
1434
1430
|
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
|
-
|
|
1431
|
+
C(() => {
|
|
1436
1432
|
let e = { "Content-Type": "application/json" };
|
|
1437
1433
|
i && (e["x-agent-api-key"] = i), fetch(l, { headers: e }).then((e) => e.ok ? e.json() : null).then((e) => {
|
|
1438
1434
|
if (e) {
|
|
@@ -1462,14 +1458,18 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1462
1458
|
m(!1);
|
|
1463
1459
|
}
|
|
1464
1460
|
}
|
|
1465
|
-
}, [y, re] = E(null), [ie, b] = E(null), x =
|
|
1466
|
-
|
|
1461
|
+
}, [y, re] = E(null), [ie, b] = E(null), x = w(() => [
|
|
1462
|
+
`/ui/${c}`,
|
|
1463
|
+
`/api/profiles/${encodeURIComponent(n)}/${c}`,
|
|
1464
|
+
`/api/${c}`
|
|
1465
|
+
], [n, c]);
|
|
1466
|
+
C(() => {
|
|
1467
1467
|
if (!t) return;
|
|
1468
1468
|
let e = !1, r = null, i = (a) => {
|
|
1469
|
-
e || (re(a), r =
|
|
1469
|
+
e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
|
|
1470
1470
|
};
|
|
1471
|
-
return
|
|
1472
|
-
e || (re(a), r =
|
|
1471
|
+
return oe(t, n, x).then((a) => {
|
|
1472
|
+
e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
|
|
1473
1473
|
}).catch((t) => {
|
|
1474
1474
|
e || b(t instanceof Error ? t.message : String(t));
|
|
1475
1475
|
}), () => {
|
|
@@ -1480,45 +1480,45 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1480
1480
|
n,
|
|
1481
1481
|
x
|
|
1482
1482
|
]);
|
|
1483
|
-
let
|
|
1484
|
-
return /* @__PURE__ */
|
|
1483
|
+
let se = `${r}/ui/${c}?vibeId=${e}&profile=${encodeURIComponent(n)}`, ce = y ? ae(se, y.token) : se;
|
|
1484
|
+
return /* @__PURE__ */ P("div", {
|
|
1485
1485
|
className: "space-y-4",
|
|
1486
|
-
children: [/* @__PURE__ */
|
|
1486
|
+
children: [/* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
|
|
1487
1487
|
className: "p-4",
|
|
1488
1488
|
children: [
|
|
1489
|
-
/* @__PURE__ */
|
|
1489
|
+
/* @__PURE__ */ P("div", {
|
|
1490
1490
|
className: "flex items-center gap-2 mb-2",
|
|
1491
|
-
children: [
|
|
1491
|
+
children: [N(s ? Ae : Ie, { className: "w-5 h-5 text-text-secondary" }), /* @__PURE__ */ N("h3", {
|
|
1492
1492
|
className: "font-semibold text-text-primary",
|
|
1493
1493
|
children: s ? o("vibeDetails.restPlaygroundTitle", "REST API Playground") : o("vibeDetails.graphqlPlaygroundTitle", "GraphQL Playground")
|
|
1494
1494
|
})]
|
|
1495
1495
|
}),
|
|
1496
|
-
/* @__PURE__ */
|
|
1496
|
+
/* @__PURE__ */ P("div", {
|
|
1497
1497
|
className: "flex items-center gap-2",
|
|
1498
|
-
children: [/* @__PURE__ */
|
|
1498
|
+
children: [/* @__PURE__ */ N("input", {
|
|
1499
1499
|
type: "url",
|
|
1500
1500
|
value: u,
|
|
1501
1501
|
onChange: (e) => d(e.target.value),
|
|
1502
1502
|
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
1503
|
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
1504
|
onKeyDown: (e) => e.key === "Enter" && v()
|
|
1505
|
-
}), /* @__PURE__ */
|
|
1505
|
+
}), /* @__PURE__ */ P("button", {
|
|
1506
1506
|
onClick: v,
|
|
1507
1507
|
disabled: p || !u.trim(),
|
|
1508
1508
|
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__ */
|
|
1509
|
+
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
1510
|
})]
|
|
1511
1511
|
}),
|
|
1512
|
-
!ee && /* @__PURE__ */
|
|
1512
|
+
!ee && /* @__PURE__ */ N("p", {
|
|
1513
1513
|
className: "text-xs text-text-muted mt-1",
|
|
1514
1514
|
children: o("vibeDetails.loadingConfig", "Loading saved configuration...")
|
|
1515
1515
|
})
|
|
1516
1516
|
]
|
|
1517
|
-
}) }), t && !y ? /* @__PURE__ */
|
|
1517
|
+
}) }), t && !y ? /* @__PURE__ */ N("div", {
|
|
1518
1518
|
className: "p-8 text-center text-sm text-text-secondary rounded-md border border-border-default bg-bg-sunken",
|
|
1519
1519
|
children: ie ? o("vibeDetails.iframeTokenError", `Iframe token error: ${ie}`) : o("vibeDetails.mintingIframeToken", "Authorizing iframe…")
|
|
1520
|
-
}) : /* @__PURE__ */
|
|
1521
|
-
src:
|
|
1520
|
+
}) : /* @__PURE__ */ N("iframe", {
|
|
1521
|
+
src: ce,
|
|
1522
1522
|
title: s ? "REST API Playground" : "GraphQL Playground",
|
|
1523
1523
|
className: "w-full rounded-md border border-border-default bg-bg-sunken",
|
|
1524
1524
|
style: { height: "700px" },
|
|
@@ -1527,6 +1527,6 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1527
1527
|
});
|
|
1528
1528
|
}
|
|
1529
1529
|
//#endregion
|
|
1530
|
-
export {
|
|
1530
|
+
export { nt as VibeDetailsPage };
|
|
1531
1531
|
|
|
1532
1532
|
//# sourceMappingURL=VibeDetailsPage.js.map
|