@burdenoff/microfe-vibecontrols 2026.526.1 → 2026.526.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ai/PluginHarnessPicker.js +64 -65
- package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
- package/dist/components/shared/PluginGate.js +70 -71
- package/dist/components/shared/PluginGate.js.map +1 -1
- package/dist/generated/wspace-operations.js +4 -4
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/hooks/usePluginAvailability.js +59 -83
- package/dist/hooks/usePluginAvailability.js.map +1 -1
- package/dist/pages/AgentDetailsPage.js +486 -508
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +457 -457
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/ai/AIPage.js +10 -10
- package/dist/pages/ai/AISessionDetailPage.js +4 -4
- package/dist/pages/ai/AgentManagerPage.js +11 -11
- package/dist/pages/ai/AgentManagerPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,43 +7,43 @@ import { EntityTagPicker as m } from "../components/shared/EntityTagPicker.js";
|
|
|
7
7
|
import { EmptyState as h } from "../components/shared/EmptyState.js";
|
|
8
8
|
import { StatusBadge as g } from "../components/shared/StatusBadge.js";
|
|
9
9
|
import { Card as _ } from "../components/shared/Card.js";
|
|
10
|
-
import {
|
|
11
|
-
import { SESSION_PROVIDER_PACKAGES as ne } from "../constants/pluginCatalog.js";
|
|
10
|
+
import { SESSION_PROVIDER_PACKAGES as te } from "../constants/pluginCatalog.js";
|
|
12
11
|
import { PluginGate as v } from "../components/shared/PluginGate.js";
|
|
12
|
+
import { useActiveAgentProfile as ne } from "../hooks/useActiveAgentProfile.js";
|
|
13
13
|
import "../components/shared/index.js";
|
|
14
14
|
import { VIBE_PERMISSIONS as y } from "../constants/permissions.js";
|
|
15
|
-
import { PageSkeleton as
|
|
16
|
-
import { VibeOpenInEditorMenu as
|
|
15
|
+
import { PageSkeleton as b } from "../components/shared/PageSkeleton.js";
|
|
16
|
+
import { VibeOpenInEditorMenu as re } from "../components/agents/VibeOpenInEditorMenu.js";
|
|
17
17
|
import "../components/agents/index.js";
|
|
18
|
-
import { NotesTabPanel as
|
|
18
|
+
import { NotesTabPanel as x } from "../components/notes/NotesTabPanel.js";
|
|
19
19
|
import "../components/notes/index.js";
|
|
20
|
-
import { useQueryBackedTab as
|
|
21
|
-
import { appendIframeTokenParam as
|
|
22
|
-
import { AddTabDialog as
|
|
23
|
-
import { PluginIframeMount as
|
|
24
|
-
import { ScorecardPanel as
|
|
20
|
+
import { useQueryBackedTab as S } from "../hooks/useQueryBackedTab.js";
|
|
21
|
+
import { appendIframeTokenParam as ie, mintScopedIframeToken as ae, scheduleScopedIframeTokenRefresh as C } from "../services/iframeToken.js";
|
|
22
|
+
import { AddTabDialog as oe } from "../components/plugins/AddTabDialog.js";
|
|
23
|
+
import { PluginIframeMount as se } from "../components/plugins/PluginIframeMount.js";
|
|
24
|
+
import { ScorecardPanel as ce } from "../components/scorecard/ScorecardPanel.js";
|
|
25
25
|
import "../components/scorecard/index.js";
|
|
26
|
-
import { DocsTabPanel as
|
|
26
|
+
import { DocsTabPanel as le } from "../components/docs/DocsTabPanel.js";
|
|
27
27
|
import "../components/docs/index.js";
|
|
28
|
-
import { VibeGitOpsTab as
|
|
29
|
-
import { VibeAgentEmptyState as
|
|
30
|
-
import { VibeAgentSwitcher as
|
|
31
|
-
import { DEFAULT_VIBE_FEATURE_CATALOG as
|
|
32
|
-
import { SecurityTabPanel as
|
|
28
|
+
import { VibeGitOpsTab as ue } from "../components/gitops/VibeGitOpsTab.js";
|
|
29
|
+
import { VibeAgentEmptyState as de } from "../components/vibe/VibeAgentEmptyState.js";
|
|
30
|
+
import { VibeAgentSwitcher as fe } from "../components/vibe/VibeAgentSwitcher.js";
|
|
31
|
+
import { DEFAULT_VIBE_FEATURE_CATALOG as pe, isVibeFeatureEnabled as me } from "../lib/vibeFeatures.js";
|
|
32
|
+
import { SecurityTabPanel as he } from "../components/security/SecurityTabPanel.js";
|
|
33
33
|
import "../components/security/index.js";
|
|
34
|
-
import { VibeLlmContextTabPanel as
|
|
35
|
-
import { useCallback 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
|
|
34
|
+
import { VibeLlmContextTabPanel as ge } from "../components/vibe/VibeLlmContextTabPanel.js";
|
|
35
|
+
import { useCallback as _e, useEffect as w, useMemo as T, useRef as E, useState as D } from "react";
|
|
36
|
+
import { useI18n as ve } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
37
|
+
import { Archive as ye, ArrowLeft as O, BarChart3 as be, BookOpen as xe, Bot as Se, Check as k, Clock as Ce, ExternalLink as we, FileText as Te, Folder as Ee, GitBranch as De, GitMerge as Oe, Globe as ke, Info as Ae, Library as je, Link2 as Me, Loader2 as Ne, MoreVertical as Pe, Network as Fe, Pause as Ie, Play as Le, Plus as Re, RefreshCw as ze, Server as Be, Settings as Ve, Shield as He, Tag as Ue, Terminal as A, Variable as We, X as Ge, Zap as j } from "lucide-react";
|
|
38
|
+
import { useParams as Ke } from "react-router-dom";
|
|
39
|
+
import { AnimatePresence as qe, motion as M } from "framer-motion";
|
|
40
|
+
import { Fragment as N, jsx as P, jsxs as F } from "react/jsx-runtime";
|
|
41
|
+
import { useFeatureFlagDetails as I } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
42
|
+
import { MotionItem as L, MotionList as Je, MotionPage as R } from "@burdenoff/fe-libs/shared/motion";
|
|
43
|
+
import { PermissionButton as Ye } from "@burdenoff/fe-libs/shared/components";
|
|
44
|
+
import { usePluginContributions as Xe } from "@burdenoff/fe-libs/shared/plugins";
|
|
45
45
|
//#region src/pages/VibeDetailsPage.tsx
|
|
46
|
-
var
|
|
46
|
+
var Ze = [
|
|
47
47
|
"overview",
|
|
48
48
|
"config",
|
|
49
49
|
"git",
|
|
@@ -57,25 +57,25 @@ var Qe = [
|
|
|
57
57
|
"security",
|
|
58
58
|
"related",
|
|
59
59
|
"llmContext"
|
|
60
|
-
],
|
|
60
|
+
], Qe = new Set(["overview", "config"]), $e = new Set(["apiPlayground"]), et = 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 tt() {
|
|
68
|
+
let { t: e } = ve(), { id: r } = Ke(), { basePath: s } = u(), ie = s || "", C = d(), k = _e((t, n) => {
|
|
69
69
|
let r = e(t);
|
|
70
70
|
return r === t ? n : r;
|
|
71
|
-
}, [e]), [
|
|
71
|
+
}, [e]), [we] = l({ refetchQueries: ["GetVibe"] }), [ke] = t({ refetchQueries: ["GetVibe"] }), [Ne] = n({ refetchQueries: ["GetVibe", "ListSessions"] }), { data: Ge } = i({
|
|
72
72
|
fetchPolicy: "cache-first",
|
|
73
73
|
errorPolicy: "ignore"
|
|
74
|
-
}),
|
|
75
|
-
let e = new Map(
|
|
76
|
-
for (let t of
|
|
74
|
+
}), tt = T(() => {
|
|
75
|
+
let e = new Map(pe.map((e) => [e.id, e]));
|
|
76
|
+
for (let t of Ge?.vibeFeatureCatalog ?? []) e.set(t.id, t);
|
|
77
77
|
return Array.from(e.values());
|
|
78
|
-
}, [
|
|
78
|
+
}, [Ge?.vibeFeatureCatalog]), it = T(() => tt.filter((e) => !$e.has(e.id)), [tt]), [at, { loading: ot }] = c({ refetchQueries: ["GetVibe"] }), [st, ct] = D(!1), [lt, z] = D(null), [ut, dt] = D(!1), [ft, pt] = D(null), mt = E(null), ht = E(null), gt = E(null), _t = E(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 nt() {
|
|
|
84
84
|
skip: !r,
|
|
85
85
|
fetchPolicy: "cache-first",
|
|
86
86
|
errorPolicy: "ignore"
|
|
87
|
-
}), St = V, H = xt?.vibe ?? St, U =
|
|
87
|
+
}), St = V, H = xt?.vibe ?? St, U = _e((e) => me(H ?? null, e, it), [H, it]), Ct = I("vibes.tabs.git"), wt = I("vibes.tabs.scorecard"), Tt = I("vibes.tabs.graphql-playground"), Et = I("vibes.tabs.git-iframe"), Dt = I("vibes.tabs.graphiql-iframe"), Ot = I("vibes.tabs.gitops-iframe"), kt = _e((e) => {
|
|
88
88
|
switch (e) {
|
|
89
89
|
case "git": return Ct ? !!Ct.value : !0;
|
|
90
90
|
case "scorecard": return wt ? !!wt.value : !0;
|
|
@@ -95,27 +95,27 @@ function nt() {
|
|
|
95
95
|
Ct,
|
|
96
96
|
wt,
|
|
97
97
|
Tt
|
|
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 } =
|
|
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 } = ne(q?.id ?? null), X = I("vibes.tabs.iframe-host")?.value === !0, Pt = T(() => {
|
|
99
99
|
if (!X || !q?.tunnelUrl) return [];
|
|
100
100
|
let e = q.id, t = Y ?? "default";
|
|
101
101
|
return [{
|
|
102
102
|
tunnelUrl: q.tunnelUrl,
|
|
103
103
|
profile: t,
|
|
104
104
|
label: q.name ?? q.id,
|
|
105
|
-
mintIframeToken: async ({ pathPrefixes: n }) =>
|
|
105
|
+
mintIframeToken: async ({ pathPrefixes: n }) => ae(e, t, n)
|
|
106
106
|
}];
|
|
107
107
|
}, [
|
|
108
108
|
X,
|
|
109
109
|
q,
|
|
110
110
|
Y
|
|
111
|
-
]), Z =
|
|
111
|
+
]), Z = Xe(Pt, {
|
|
112
112
|
mountPoint: "vibe.detailTab",
|
|
113
113
|
enabled: X && Pt.length > 0
|
|
114
|
-
}), [Q, Ft] =
|
|
114
|
+
}), [Q, Ft] = S(T(() => {
|
|
115
115
|
let e = Z.data.filter((e) => e.contribution.mountPoint === "vibe.detailTab").map((e) => e.contribution.id);
|
|
116
|
-
return [...
|
|
117
|
-
}, [Z.data]), "overview"), [It, Lt] =
|
|
118
|
-
|
|
116
|
+
return [...Ze, ...e];
|
|
117
|
+
}, [Z.data]), "overview"), [It, Lt] = D(!1);
|
|
118
|
+
w(() => {
|
|
119
119
|
V && ee.setState({
|
|
120
120
|
activeAgentId: q?.id ?? null,
|
|
121
121
|
selectedAgentId: q?.id ?? null,
|
|
@@ -126,8 +126,8 @@ function nt() {
|
|
|
126
126
|
});
|
|
127
127
|
}, [V?.id, q?.id]);
|
|
128
128
|
let Rt = W.length > 0;
|
|
129
|
-
|
|
130
|
-
if (!B &&
|
|
129
|
+
w(() => {
|
|
130
|
+
if (!B && !Qe.has(Q) && (!U(Q) || !kt(Q))) {
|
|
131
131
|
Ft("overview");
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
@@ -140,10 +140,10 @@ function nt() {
|
|
|
140
140
|
B
|
|
141
141
|
]);
|
|
142
142
|
let $ = () => {
|
|
143
|
-
|
|
143
|
+
C("/vibes");
|
|
144
144
|
}, zt = async () => {
|
|
145
145
|
if (V?.id) try {
|
|
146
|
-
await
|
|
146
|
+
await we({ variables: {
|
|
147
147
|
id: V.id,
|
|
148
148
|
status: "ACTIVE"
|
|
149
149
|
} });
|
|
@@ -152,15 +152,15 @@ function nt() {
|
|
|
152
152
|
}
|
|
153
153
|
}, Bt = async () => {
|
|
154
154
|
if (V?.id) try {
|
|
155
|
-
await
|
|
155
|
+
await we({ 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
|
-
}, [Vt, Ht] =
|
|
163
|
-
|
|
162
|
+
}, [Vt, Ht] = D(!1), [Ut, Wt] = D(!1), Gt = E(null);
|
|
163
|
+
w(() => {
|
|
164
164
|
if (!Ut) return;
|
|
165
165
|
let e = (e) => {
|
|
166
166
|
Gt.current?.contains(e.target) || Wt(!1);
|
|
@@ -169,48 +169,48 @@ function nt() {
|
|
|
169
169
|
}, [Ut]);
|
|
170
170
|
let Kt = async () => {
|
|
171
171
|
if (V?.id) try {
|
|
172
|
-
await
|
|
172
|
+
await ke({ variables: { id: V.id } }), Ht(!1);
|
|
173
173
|
} catch (e) {
|
|
174
174
|
console.error("Failed to archive vibe:", e);
|
|
175
175
|
}
|
|
176
176
|
}, qt = () => {
|
|
177
|
-
|
|
177
|
+
z(null), ct(!0);
|
|
178
178
|
}, Jt = async () => {
|
|
179
|
-
let e =
|
|
179
|
+
let e = mt.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
|
-
|
|
181
|
+
z(k("vibeDetails.sessionNameRequired", "Session name is required"));
|
|
182
182
|
return;
|
|
183
183
|
}
|
|
184
184
|
let i = q?.id;
|
|
185
185
|
if (!i) {
|
|
186
|
-
|
|
186
|
+
z(W.length === 0 ? k("vibeDetails.noAgentAttached", "This vibe has no agent attached. Connect an agent to this vibe before creating a session.") : k("vibeDetails.selectAgent", "Select an agent for this vibe before creating a session."));
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
189
|
-
|
|
189
|
+
dt(!0), z(null);
|
|
190
190
|
try {
|
|
191
|
-
await
|
|
191
|
+
await Ne({ 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
|
-
} } }),
|
|
198
|
+
} } }), ct(!1), mt.current && (mt.current.value = ""), ht.current && (ht.current.selectedIndex = 0), gt.current && (gt.current.value = ""), _t.current && (_t.current.value = ""), pt(k("sessions.createdSuccess", "Session created successfully")), setTimeout(() => pt(null), 3e3);
|
|
199
199
|
} catch (e) {
|
|
200
|
-
|
|
200
|
+
z(e instanceof Error ? e.message : k("sessions.failedCreate", "Failed to create session"));
|
|
201
201
|
} finally {
|
|
202
|
-
|
|
202
|
+
dt(!1);
|
|
203
203
|
}
|
|
204
204
|
}, Yt = () => {
|
|
205
|
-
J &&
|
|
205
|
+
J && C(`/agents/${J.id}`);
|
|
206
206
|
}, Xt = (e) => {
|
|
207
|
-
|
|
207
|
+
C(`/sessions/${e}`);
|
|
208
208
|
}, Zt = (e) => {
|
|
209
|
-
|
|
209
|
+
C(`/vibes/${e}`);
|
|
210
210
|
}, Qt = (e) => {
|
|
211
|
-
if (!e) return
|
|
211
|
+
if (!e) return k("health.never", "Never");
|
|
212
212
|
let t = Date.now() - new Date(e).getTime();
|
|
213
|
-
return t < 6e4 ?
|
|
213
|
+
return t < 6e4 ? k("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,143 +219,143 @@ function nt() {
|
|
|
219
219
|
default: return "text-text-secondary";
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
|
-
if (B && !V) return /* @__PURE__ */
|
|
222
|
+
if (B && !V) return /* @__PURE__ */ F(R, {
|
|
223
223
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
224
|
+
children: [/* @__PURE__ */ F("button", {
|
|
225
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__ */ P(O, { className: "w-4 h-4" }), k("vibeDetails.backToVibes", "Back to Vibes")]
|
|
228
|
+
}), /* @__PURE__ */ P(b, { variant: "detail" })]
|
|
229
229
|
});
|
|
230
|
-
if (yt && !V) return /* @__PURE__ */
|
|
230
|
+
if (yt && !V) return /* @__PURE__ */ F(R, {
|
|
231
231
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
232
|
+
children: [/* @__PURE__ */ F("button", {
|
|
233
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__ */ P(O, { className: "w-4 h-4" }), k("vibeDetails.backToVibes", "Back to Vibes")]
|
|
236
|
+
}), /* @__PURE__ */ P(p, {
|
|
237
|
+
title: k("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__ */ F(R, {
|
|
243
243
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
244
|
+
children: [/* @__PURE__ */ F("button", {
|
|
245
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__ */
|
|
247
|
+
children: [/* @__PURE__ */ P(O, { className: "w-4 h-4" }), k("vibeDetails.backToVibes", "Back to Vibes")]
|
|
248
|
+
}), /* @__PURE__ */ P(h, {
|
|
249
|
+
icon: /* @__PURE__ */ P(j, { className: "w-8 h-8 text-text-secondary" }),
|
|
250
|
+
title: k("vibeDetails.notFound", "Vibe not found"),
|
|
251
|
+
description: `${k("vibeDetails.notFoundDescriptionPrefix", "No vibe with ID")} "${r}" ${k("vibeDetails.notFoundDescriptionSuffix", "exists")}`,
|
|
252
|
+
action: /* @__PURE__ */ P("button", {
|
|
253
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: k("vibeDetails.backToVibes", "Back to Vibes")
|
|
256
256
|
})
|
|
257
257
|
})]
|
|
258
258
|
});
|
|
259
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: k("nav.overview", "Overview"),
|
|
263
|
+
icon: Ae
|
|
264
264
|
},
|
|
265
265
|
{
|
|
266
266
|
id: "config",
|
|
267
|
-
label:
|
|
268
|
-
icon:
|
|
267
|
+
label: k("vibeDetails.config", "Config"),
|
|
268
|
+
icon: Ve
|
|
269
269
|
},
|
|
270
270
|
{
|
|
271
271
|
id: "git",
|
|
272
|
-
label:
|
|
273
|
-
icon:
|
|
272
|
+
label: k("vibeDetails.git", "Git"),
|
|
273
|
+
icon: De,
|
|
274
274
|
badge: rn && V.gitBranch || void 0
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
id: "sessions",
|
|
278
|
-
label:
|
|
279
|
-
icon:
|
|
278
|
+
label: k("nav.sessions", "Sessions"),
|
|
279
|
+
icon: A,
|
|
280
280
|
badge: `${G.length}`
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
283
|
id: "notes",
|
|
284
|
-
label:
|
|
285
|
-
icon:
|
|
284
|
+
label: k("vibeDetails.notes", "Notes"),
|
|
285
|
+
icon: Te
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
id: "docs",
|
|
289
|
-
label:
|
|
290
|
-
icon:
|
|
289
|
+
label: k("vibeDetails.docs", "Docs"),
|
|
290
|
+
icon: xe
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
293
|
id: "scorecard",
|
|
294
|
-
label:
|
|
295
|
-
icon:
|
|
294
|
+
label: k("vibeDetails.scorecard", "Scorecard"),
|
|
295
|
+
icon: be
|
|
296
296
|
},
|
|
297
297
|
{
|
|
298
298
|
id: "catalogs",
|
|
299
|
-
label:
|
|
300
|
-
icon:
|
|
299
|
+
label: k("vibeDetails.catalogs", "Catalogs"),
|
|
300
|
+
icon: je
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
303
|
id: "graphqlPlayground",
|
|
304
|
-
label:
|
|
305
|
-
icon:
|
|
304
|
+
label: k("vibeDetails.graphqlPlayground", "GraphQL"),
|
|
305
|
+
icon: Fe
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
id: "gitops",
|
|
309
|
-
label:
|
|
310
|
-
icon:
|
|
309
|
+
label: k("vibeDetails.gitops", "GitOps"),
|
|
310
|
+
icon: Oe
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
id: "security",
|
|
314
|
-
label:
|
|
315
|
-
icon:
|
|
314
|
+
label: k("vibeDetails.security", "Security"),
|
|
315
|
+
icon: He
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
id: "related",
|
|
319
|
-
label:
|
|
320
|
-
icon:
|
|
319
|
+
label: k("vibeDetails.related", "Related"),
|
|
320
|
+
icon: Me,
|
|
321
321
|
badge: nn > 0 ? `${nn}` : void 0
|
|
322
322
|
},
|
|
323
323
|
{
|
|
324
324
|
id: "llmContext",
|
|
325
|
-
label:
|
|
326
|
-
icon:
|
|
325
|
+
label: k("vibeDetails.llmContext", "LLM Context"),
|
|
326
|
+
icon: Se
|
|
327
327
|
}
|
|
328
|
-
].filter((e) =>
|
|
329
|
-
return /* @__PURE__ */
|
|
328
|
+
].filter((e) => Qe.has(e.id) ? !0 : !(!U(e.id) || !kt(e.id) || !Rt && et.has(e.id) || e.id === "git" && Et?.value === !0 || e.id === "graphqlPlayground" && Dt?.value === !0 || e.id === "gitops" && Ot?.value === !0));
|
|
329
|
+
return /* @__PURE__ */ F(R, {
|
|
330
330
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
331
331
|
children: [
|
|
332
|
-
|
|
332
|
+
ft && /* @__PURE__ */ P("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
|
-
children:
|
|
334
|
+
children: ft
|
|
335
335
|
}),
|
|
336
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ F("button", {
|
|
337
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__ */ P(O, { className: "w-4 h-4" }), k("vibeDetails.backToVibes", "Back to Vibes")]
|
|
340
340
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ P(f, {
|
|
342
342
|
title: V.name,
|
|
343
|
-
description: V.description ||
|
|
343
|
+
description: V.description || k("vibeDetails.noDescription", "No description"),
|
|
344
344
|
breadcrumb: [{
|
|
345
|
-
label:
|
|
346
|
-
path:
|
|
345
|
+
label: k("nav.vibes", "Vibes"),
|
|
346
|
+
path: ie ? `${ie}/vibes` : "/vibes"
|
|
347
347
|
}, { label: V.name }],
|
|
348
|
-
actions: /* @__PURE__ */
|
|
348
|
+
actions: /* @__PURE__ */ F("div", {
|
|
349
349
|
className: "flex items-center gap-2 flex-wrap",
|
|
350
350
|
children: [
|
|
351
|
-
/* @__PURE__ */
|
|
351
|
+
/* @__PURE__ */ P("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: k("common.refresh", "Refresh"),
|
|
356
|
+
children: /* @__PURE__ */ P(ze, { className: `w-4 h-4 ${B ? "animate-spin" : ""}` })
|
|
357
357
|
}),
|
|
358
|
-
/* @__PURE__ */
|
|
358
|
+
/* @__PURE__ */ P(re, {
|
|
359
359
|
vibeId: V.id,
|
|
360
360
|
workspacePath: V.path,
|
|
361
361
|
tunnelUrl: Mt,
|
|
@@ -363,62 +363,62 @@ function nt() {
|
|
|
363
363
|
profile: Y ?? "default",
|
|
364
364
|
browserEditorEnabled: U("browserEditor")
|
|
365
365
|
}),
|
|
366
|
-
/* @__PURE__ */
|
|
366
|
+
/* @__PURE__ */ P(Ye, {
|
|
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__ */ F("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__ */ P(Re, { className: "w-3.5 h-3.5 sm:w-4 sm:h-4" }),
|
|
375
|
+
/* @__PURE__ */ P("span", {
|
|
376
376
|
className: "hidden sm:inline",
|
|
377
|
-
children:
|
|
377
|
+
children: k("vibeDetails.new", "New")
|
|
378
378
|
}),
|
|
379
|
-
/* @__PURE__ */
|
|
379
|
+
/* @__PURE__ */ P("span", {
|
|
380
380
|
className: "hidden sm:inline",
|
|
381
|
-
children:
|
|
381
|
+
children: k("nav.sessions", "Session")
|
|
382
382
|
})
|
|
383
383
|
]
|
|
384
384
|
})
|
|
385
385
|
}),
|
|
386
|
-
/* @__PURE__ */
|
|
386
|
+
/* @__PURE__ */ P(Ye, {
|
|
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__ */ F("div", {
|
|
391
391
|
className: "relative",
|
|
392
392
|
ref: Gt,
|
|
393
|
-
children: [/* @__PURE__ */
|
|
393
|
+
children: [/* @__PURE__ */ P("button", {
|
|
394
394
|
type: "button",
|
|
395
395
|
onClick: () => Wt((e) => !e),
|
|
396
396
|
"aria-haspopup": "menu",
|
|
397
397
|
"aria-expanded": Ut,
|
|
398
|
-
"aria-label":
|
|
399
|
-
title:
|
|
398
|
+
"aria-label": k("common.moreActions", "More actions"),
|
|
399
|
+
title: k("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
|
-
}), Ut && /* @__PURE__ */
|
|
401
|
+
children: /* @__PURE__ */ P(Pe, { className: "w-4 h-4" })
|
|
402
|
+
}), Ut && /* @__PURE__ */ F("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__ */ P("button", {
|
|
407
407
|
role: "menuitem",
|
|
408
408
|
onClick: () => {
|
|
409
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__ */ F(N, { children: [/* @__PURE__ */ P(Ie, { className: "w-4 h-4 text-text-secondary" }), /* @__PURE__ */ P("span", { children: k("vibeDetails.pauseVibe", "Pause vibe (stop scheduled runs)") })] }) : /* @__PURE__ */ F(N, { children: [/* @__PURE__ */ P(Le, { className: "w-4 h-4 text-status-success-text" }), /* @__PURE__ */ P("span", { children: k("vibeDetails.resumeVibe", "Resume vibe (re-enable scheduled runs)") })] })
|
|
413
413
|
}),
|
|
414
|
-
/* @__PURE__ */
|
|
415
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ P("div", { className: "border-t border-border-subtle my-1" }),
|
|
415
|
+
/* @__PURE__ */ F("button", {
|
|
416
416
|
role: "menuitem",
|
|
417
417
|
onClick: () => {
|
|
418
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__ */ P(ye, { className: "w-4 h-4" }), /* @__PURE__ */ P("span", { children: k("vibeDetails.archive", "Archive vibe…") })]
|
|
422
422
|
})
|
|
423
423
|
]
|
|
424
424
|
})]
|
|
@@ -427,7 +427,7 @@ function nt() {
|
|
|
427
427
|
]
|
|
428
428
|
})
|
|
429
429
|
}),
|
|
430
|
-
Vt && /* @__PURE__ */
|
|
430
|
+
Vt && /* @__PURE__ */ P("div", {
|
|
431
431
|
role: "dialog",
|
|
432
432
|
"aria-modal": "true",
|
|
433
433
|
"aria-labelledby": "archive-vibe-title",
|
|
@@ -435,96 +435,96 @@ function nt() {
|
|
|
435
435
|
onClick: (e) => {
|
|
436
436
|
e.target === e.currentTarget && Ht(!1);
|
|
437
437
|
},
|
|
438
|
-
children: /* @__PURE__ */
|
|
438
|
+
children: /* @__PURE__ */ F("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__ */ P("h2", {
|
|
442
442
|
id: "archive-vibe-title",
|
|
443
443
|
className: "text-base font-semibold text-text-primary mb-2",
|
|
444
|
-
children:
|
|
444
|
+
children: k("vibeDetails.archiveConfirmTitle", "Archive this vibe?")
|
|
445
445
|
}),
|
|
446
|
-
/* @__PURE__ */
|
|
446
|
+
/* @__PURE__ */ P("p", {
|
|
447
447
|
className: "text-sm text-text-secondary mb-4",
|
|
448
|
-
children:
|
|
448
|
+
children: k("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__ */ F("div", {
|
|
451
451
|
className: "flex justify-end gap-2",
|
|
452
|
-
children: [/* @__PURE__ */
|
|
452
|
+
children: [/* @__PURE__ */ P("button", {
|
|
453
453
|
type: "button",
|
|
454
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: k("common.cancel", "Cancel")
|
|
457
|
+
}), /* @__PURE__ */ P("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: k("vibeDetails.archive", "Archive")
|
|
462
462
|
})]
|
|
463
463
|
})
|
|
464
464
|
]
|
|
465
465
|
})
|
|
466
466
|
}),
|
|
467
|
-
/* @__PURE__ */
|
|
467
|
+
/* @__PURE__ */ F(Je, {
|
|
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__ */ P(L, { children: /* @__PURE__ */ P(_, {
|
|
472
472
|
className: "p-3 sm:p-4",
|
|
473
|
-
children: /* @__PURE__ */
|
|
473
|
+
children: /* @__PURE__ */ F("div", {
|
|
474
474
|
className: "flex items-center gap-2 sm:gap-3",
|
|
475
|
-
children: [/* @__PURE__ */
|
|
475
|
+
children: [/* @__PURE__ */ P("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__ */ P(j, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
478
|
+
}), /* @__PURE__ */ F("div", {
|
|
479
479
|
className: "min-w-0",
|
|
480
|
-
children: [/* @__PURE__ */
|
|
480
|
+
children: [/* @__PURE__ */ P("p", {
|
|
481
481
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
482
|
-
title:
|
|
483
|
-
children:
|
|
484
|
-
}), /* @__PURE__ */
|
|
482
|
+
title: k("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: k("sessions.filterStatus", "Status")
|
|
484
|
+
}), /* @__PURE__ */ P(g, {
|
|
485
485
|
status: V.status,
|
|
486
486
|
size: "md"
|
|
487
487
|
})]
|
|
488
488
|
})]
|
|
489
489
|
})
|
|
490
490
|
}) }),
|
|
491
|
-
/* @__PURE__ */
|
|
491
|
+
/* @__PURE__ */ P(L, { children: /* @__PURE__ */ P(_, {
|
|
492
492
|
className: "p-3 sm:p-4",
|
|
493
|
-
children: /* @__PURE__ */
|
|
493
|
+
children: /* @__PURE__ */ F("div", {
|
|
494
494
|
className: "flex items-center gap-2 sm:gap-3",
|
|
495
|
-
children: [/* @__PURE__ */
|
|
495
|
+
children: [/* @__PURE__ */ P("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__ */ P(Be, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
498
|
+
}), /* @__PURE__ */ F("div", {
|
|
499
499
|
className: "min-w-0 flex-1",
|
|
500
|
-
children: [/* @__PURE__ */
|
|
500
|
+
children: [/* @__PURE__ */ P("p", {
|
|
501
501
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
502
|
-
children:
|
|
503
|
-
}), /* @__PURE__ */
|
|
502
|
+
children: k("sessions.filterAgent", "Agent")
|
|
503
|
+
}), /* @__PURE__ */ P("p", {
|
|
504
504
|
className: "font-semibold text-text-primary text-sm sm:text-base truncate",
|
|
505
|
-
children: J?.name ||
|
|
505
|
+
children: J?.name || k("targets.unknown", "Unknown")
|
|
506
506
|
})]
|
|
507
507
|
})]
|
|
508
508
|
})
|
|
509
509
|
}) }),
|
|
510
|
-
/* @__PURE__ */
|
|
510
|
+
/* @__PURE__ */ P(L, { children: /* @__PURE__ */ P(_, {
|
|
511
511
|
className: "p-3 sm:p-4",
|
|
512
|
-
children: /* @__PURE__ */
|
|
512
|
+
children: /* @__PURE__ */ F("div", {
|
|
513
513
|
className: "flex items-center gap-2 sm:gap-3",
|
|
514
|
-
children: [/* @__PURE__ */
|
|
514
|
+
children: [/* @__PURE__ */ P("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__ */ P(A, { className: "w-4 h-4 sm:w-5 sm:h-5 text-text-secondary" })
|
|
517
|
+
}), /* @__PURE__ */ F("div", {
|
|
518
518
|
className: "min-w-0",
|
|
519
|
-
children: [/* @__PURE__ */
|
|
519
|
+
children: [/* @__PURE__ */ P("p", {
|
|
520
520
|
className: "text-xs sm:text-sm text-text-secondary",
|
|
521
|
-
children:
|
|
522
|
-
}), /* @__PURE__ */
|
|
521
|
+
children: k("nav.sessions", "Sessions")
|
|
522
|
+
}), /* @__PURE__ */ F("p", {
|
|
523
523
|
className: "font-semibold text-text-primary text-sm sm:text-base",
|
|
524
524
|
children: [
|
|
525
525
|
tn,
|
|
526
526
|
" ",
|
|
527
|
-
|
|
527
|
+
k("health.active", "active")
|
|
528
528
|
]
|
|
529
529
|
})]
|
|
530
530
|
})]
|
|
@@ -532,23 +532,23 @@ function nt() {
|
|
|
532
532
|
}) })
|
|
533
533
|
]
|
|
534
534
|
}),
|
|
535
|
-
/* @__PURE__ */
|
|
535
|
+
/* @__PURE__ */ P("div", {
|
|
536
536
|
className: "border-b border-border-default",
|
|
537
|
-
children: /* @__PURE__ */
|
|
537
|
+
children: /* @__PURE__ */ F("nav", {
|
|
538
538
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
539
|
-
"aria-label":
|
|
539
|
+
"aria-label": k("vibeDetails.tabsAriaLabel", "Vibe tabs"),
|
|
540
540
|
children: [
|
|
541
541
|
an.map((e) => {
|
|
542
542
|
let t = e.icon, n = Q === e.id;
|
|
543
|
-
return /* @__PURE__ */
|
|
543
|
+
return /* @__PURE__ */ F("button", {
|
|
544
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__ */ P(t, { className: "w-4 h-4" }),
|
|
550
550
|
e.label,
|
|
551
|
-
e.badge && /* @__PURE__ */
|
|
551
|
+
e.badge && /* @__PURE__ */ P("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
|
})
|
|
@@ -557,7 +557,7 @@ function nt() {
|
|
|
557
557
|
}),
|
|
558
558
|
X && Z.data.map((e) => {
|
|
559
559
|
let t = Q === e.contribution.id;
|
|
560
|
-
return /* @__PURE__ */
|
|
560
|
+
return /* @__PURE__ */ P("button", {
|
|
561
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,
|
|
@@ -566,16 +566,16 @@ function nt() {
|
|
|
566
566
|
children: e.contribution.title
|
|
567
567
|
}, `plugin-${e.contribution.id}`);
|
|
568
568
|
}),
|
|
569
|
-
X && q && /* @__PURE__ */
|
|
569
|
+
X && q && /* @__PURE__ */ F("button", {
|
|
570
570
|
type: "button",
|
|
571
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__ */ P("span", {
|
|
576
576
|
"aria-hidden": !0,
|
|
577
577
|
children: "+"
|
|
578
|
-
}), /* @__PURE__ */
|
|
578
|
+
}), /* @__PURE__ */ P("span", {
|
|
579
579
|
className: "hidden sm:inline",
|
|
580
580
|
children: "Add tab"
|
|
581
581
|
})]
|
|
@@ -583,10 +583,10 @@ function nt() {
|
|
|
583
583
|
]
|
|
584
584
|
})
|
|
585
585
|
}),
|
|
586
|
-
/* @__PURE__ */
|
|
586
|
+
/* @__PURE__ */ F(qe, {
|
|
587
587
|
mode: "wait",
|
|
588
588
|
children: [
|
|
589
|
-
Q === "overview" && /* @__PURE__ */
|
|
589
|
+
Q === "overview" && /* @__PURE__ */ F(M.div, {
|
|
590
590
|
initial: {
|
|
591
591
|
opacity: 0,
|
|
592
592
|
y: 8
|
|
@@ -602,56 +602,56 @@ function nt() {
|
|
|
602
602
|
transition: { duration: .2 },
|
|
603
603
|
className: "space-y-6",
|
|
604
604
|
children: [
|
|
605
|
-
V.description && /* @__PURE__ */
|
|
605
|
+
V.description && /* @__PURE__ */ P(_, { children: /* @__PURE__ */ P("div", {
|
|
606
606
|
className: "p-4",
|
|
607
|
-
children: /* @__PURE__ */
|
|
607
|
+
children: /* @__PURE__ */ P("p", {
|
|
608
608
|
className: "text-text-primary",
|
|
609
609
|
children: V.description
|
|
610
610
|
})
|
|
611
611
|
}) }),
|
|
612
|
-
!Rt && /* @__PURE__ */
|
|
612
|
+
!Rt && /* @__PURE__ */ P(de, {
|
|
613
613
|
vibeId: V.id,
|
|
614
|
-
tr:
|
|
614
|
+
tr: k,
|
|
615
615
|
onAttached: () => bt()
|
|
616
616
|
}),
|
|
617
|
-
Rt && /* @__PURE__ */
|
|
617
|
+
Rt && /* @__PURE__ */ P(fe, {
|
|
618
618
|
vibeId: V.id,
|
|
619
619
|
attachedAgents: W,
|
|
620
620
|
effectiveAgentId: q?.id ?? null
|
|
621
621
|
}),
|
|
622
|
-
/* @__PURE__ */
|
|
622
|
+
/* @__PURE__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
623
623
|
className: "p-3 sm:p-4 border-b border-border-default",
|
|
624
|
-
children: /* @__PURE__ */
|
|
624
|
+
children: /* @__PURE__ */ F("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__ */ P(Ee, { className: "w-4 h-4 sm:w-5 sm:h-5" }), k("vibeDetails.path", "Path")]
|
|
627
627
|
})
|
|
628
|
-
}), /* @__PURE__ */
|
|
628
|
+
}), /* @__PURE__ */ P("div", {
|
|
629
629
|
className: "p-3 sm:p-4",
|
|
630
|
-
children: /* @__PURE__ */
|
|
630
|
+
children: /* @__PURE__ */ P("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__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
636
636
|
className: "p-4 border-b border-border-default",
|
|
637
|
-
children: /* @__PURE__ */
|
|
637
|
+
children: /* @__PURE__ */ F("h3", {
|
|
638
638
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
639
|
-
children: [/* @__PURE__ */
|
|
639
|
+
children: [/* @__PURE__ */ P(Ce, { className: "w-5 h-5" }), k("vibeDetails.timeline", "Timeline")]
|
|
640
640
|
})
|
|
641
|
-
}), /* @__PURE__ */
|
|
641
|
+
}), /* @__PURE__ */ P("div", {
|
|
642
642
|
className: "p-4",
|
|
643
|
-
children: /* @__PURE__ */
|
|
643
|
+
children: /* @__PURE__ */ F("div", {
|
|
644
644
|
className: "grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm",
|
|
645
|
-
children: [/* @__PURE__ */
|
|
645
|
+
children: [/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
|
|
646
646
|
className: "text-text-secondary",
|
|
647
|
-
children:
|
|
648
|
-
}), /* @__PURE__ */
|
|
647
|
+
children: k("vibeDetails.created", "Created")
|
|
648
|
+
}), /* @__PURE__ */ P("p", {
|
|
649
649
|
className: "font-medium text-text-primary",
|
|
650
650
|
children: Qt(V.createdAt)
|
|
651
|
-
})] }), /* @__PURE__ */
|
|
651
|
+
})] }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
|
|
652
652
|
className: "text-text-secondary",
|
|
653
|
-
children:
|
|
654
|
-
}), /* @__PURE__ */
|
|
653
|
+
children: k("vibeDetails.updated", "Updated")
|
|
654
|
+
}), /* @__PURE__ */ P("p", {
|
|
655
655
|
className: "font-medium text-text-primary",
|
|
656
656
|
children: Qt(V.updatedAt)
|
|
657
657
|
})] })]
|
|
@@ -659,7 +659,7 @@ function nt() {
|
|
|
659
659
|
})] })
|
|
660
660
|
]
|
|
661
661
|
}, "overview"),
|
|
662
|
-
Q === "config" && /* @__PURE__ */
|
|
662
|
+
Q === "config" && /* @__PURE__ */ F(M.div, {
|
|
663
663
|
initial: {
|
|
664
664
|
opacity: 0,
|
|
665
665
|
y: 8
|
|
@@ -675,17 +675,17 @@ function nt() {
|
|
|
675
675
|
transition: { duration: .2 },
|
|
676
676
|
className: "space-y-6",
|
|
677
677
|
children: [
|
|
678
|
-
/* @__PURE__ */
|
|
678
|
+
/* @__PURE__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
679
679
|
className: "p-4 border-b border-border-default",
|
|
680
|
-
children: /* @__PURE__ */
|
|
680
|
+
children: /* @__PURE__ */ F("h3", {
|
|
681
681
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
682
|
-
children: [/* @__PURE__ */
|
|
682
|
+
children: [/* @__PURE__ */ P(We, { className: "w-5 h-5" }), k("vibeDetails.environmentVariables", "Environment Variables")]
|
|
683
683
|
})
|
|
684
|
-
}), /* @__PURE__ */
|
|
684
|
+
}), /* @__PURE__ */ P("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__ */ P("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__ */ F("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,46 +693,46 @@ function nt() {
|
|
|
693
693
|
String(t)
|
|
694
694
|
]
|
|
695
695
|
}, e))
|
|
696
|
-
}) : /* @__PURE__ */
|
|
696
|
+
}) : /* @__PURE__ */ P("p", {
|
|
697
697
|
className: "text-text-secondary",
|
|
698
|
-
children:
|
|
698
|
+
children: k("vibeDetails.noEnvironmentVariables", "No environment variables configured")
|
|
699
699
|
})
|
|
700
700
|
})] }),
|
|
701
|
-
/* @__PURE__ */
|
|
701
|
+
/* @__PURE__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
702
702
|
className: "p-4 border-b border-border-default",
|
|
703
|
-
children: /* @__PURE__ */
|
|
703
|
+
children: /* @__PURE__ */ F("h3", {
|
|
704
704
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
705
|
-
children: [/* @__PURE__ */
|
|
705
|
+
children: [/* @__PURE__ */ P(Ue, { className: "w-5 h-5" }), k("vibeDetails.tags", "Tags")]
|
|
706
706
|
})
|
|
707
|
-
}), /* @__PURE__ */
|
|
707
|
+
}), /* @__PURE__ */ P("div", {
|
|
708
708
|
className: "p-4",
|
|
709
|
-
children: /* @__PURE__ */
|
|
709
|
+
children: /* @__PURE__ */ P(m, {
|
|
710
710
|
entityType: "VIBECONTROLS_VIBE",
|
|
711
711
|
entityId: V.id
|
|
712
712
|
})
|
|
713
713
|
})] }),
|
|
714
|
-
/* @__PURE__ */
|
|
714
|
+
/* @__PURE__ */ F(_, { children: [/* @__PURE__ */ F("div", {
|
|
715
715
|
className: "p-4 border-b border-border-default",
|
|
716
|
-
children: [/* @__PURE__ */
|
|
716
|
+
children: [/* @__PURE__ */ F("h3", {
|
|
717
717
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
718
|
-
children: [/* @__PURE__ */
|
|
719
|
-
}), /* @__PURE__ */
|
|
718
|
+
children: [/* @__PURE__ */ P(Ve, { className: "w-5 h-5" }), k("vibeDetails.features", "Features")]
|
|
719
|
+
}), /* @__PURE__ */ P("p", {
|
|
720
720
|
className: "text-sm text-text-secondary mt-1",
|
|
721
|
-
children:
|
|
721
|
+
children: k("vibeDetails.featuresDescription", "Toggle which sections show up on this vibe. Changes apply to everyone viewing the vibe.")
|
|
722
722
|
})]
|
|
723
|
-
}), /* @__PURE__ */
|
|
723
|
+
}), /* @__PURE__ */ P("div", {
|
|
724
724
|
className: "divide-y divide-border-default",
|
|
725
|
-
children:
|
|
725
|
+
children: it.map((e) => /* @__PURE__ */ F("label", {
|
|
726
726
|
className: "flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-bg-sunken transition-colors",
|
|
727
|
-
children: [/* @__PURE__ */
|
|
727
|
+
children: [/* @__PURE__ */ P("input", {
|
|
728
728
|
type: "checkbox",
|
|
729
729
|
role: "switch",
|
|
730
730
|
checked: U(e.id),
|
|
731
|
-
disabled:
|
|
731
|
+
disabled: ot || !V.id,
|
|
732
732
|
onChange: async (t) => {
|
|
733
733
|
let n = t.target.checked;
|
|
734
734
|
try {
|
|
735
|
-
await
|
|
735
|
+
await at({
|
|
736
736
|
variables: {
|
|
737
737
|
id: V.id,
|
|
738
738
|
featureId: e.id,
|
|
@@ -756,7 +756,7 @@ function nt() {
|
|
|
756
756
|
}
|
|
757
757
|
},
|
|
758
758
|
className: "h-4 w-4 shrink-0 accent-action-primary-bg disabled:opacity-50"
|
|
759
|
-
}), /* @__PURE__ */
|
|
759
|
+
}), /* @__PURE__ */ P("span", {
|
|
760
760
|
className: "text-sm font-medium text-text-primary",
|
|
761
761
|
children: e.label
|
|
762
762
|
})]
|
|
@@ -764,7 +764,7 @@ function nt() {
|
|
|
764
764
|
})] })
|
|
765
765
|
]
|
|
766
766
|
}, "config"),
|
|
767
|
-
Q === "git" && U("git") && /* @__PURE__ */
|
|
767
|
+
Q === "git" && U("git") && /* @__PURE__ */ P(M.div, {
|
|
768
768
|
initial: {
|
|
769
769
|
opacity: 0,
|
|
770
770
|
y: 8
|
|
@@ -779,57 +779,57 @@ function nt() {
|
|
|
779
779
|
},
|
|
780
780
|
transition: { duration: .2 },
|
|
781
781
|
className: "space-y-6",
|
|
782
|
-
children: /* @__PURE__ */
|
|
782
|
+
children: /* @__PURE__ */ P(v, {
|
|
783
783
|
agentId: q?.id ?? null,
|
|
784
784
|
required: ["@vibecontrols/vibe-plugin-tool-git"],
|
|
785
785
|
mode: "all",
|
|
786
|
-
eyebrow:
|
|
787
|
-
title:
|
|
788
|
-
description:
|
|
789
|
-
children: rn ? /* @__PURE__ */
|
|
786
|
+
eyebrow: k("vibeDetails.gitPluginEyebrow", "Git plugin required"),
|
|
787
|
+
title: k("vibeDetails.gitPluginTitle", "Install the git plugin"),
|
|
788
|
+
description: k("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__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
790
790
|
className: "p-4 border-b border-border-default",
|
|
791
|
-
children: /* @__PURE__ */
|
|
791
|
+
children: /* @__PURE__ */ F("h3", {
|
|
792
792
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
793
|
-
children: [/* @__PURE__ */
|
|
793
|
+
children: [/* @__PURE__ */ P(De, { className: "w-5 h-5" }), k("vibeDetails.gitInformation", "Git Information")]
|
|
794
794
|
})
|
|
795
|
-
}), /* @__PURE__ */
|
|
795
|
+
}), /* @__PURE__ */ F("div", {
|
|
796
796
|
className: "p-4 space-y-3",
|
|
797
|
-
children: [/* @__PURE__ */
|
|
797
|
+
children: [/* @__PURE__ */ F("div", {
|
|
798
798
|
className: "flex items-center gap-4 flex-wrap",
|
|
799
|
-
children: [V.gitBranch && /* @__PURE__ */
|
|
799
|
+
children: [V.gitBranch && /* @__PURE__ */ F("div", {
|
|
800
800
|
className: "flex items-center gap-2",
|
|
801
|
-
children: [/* @__PURE__ */
|
|
801
|
+
children: [/* @__PURE__ */ F("span", {
|
|
802
802
|
className: "text-sm text-text-secondary",
|
|
803
|
-
children: [
|
|
804
|
-
}), /* @__PURE__ */
|
|
803
|
+
children: [k("vibeDetails.branch", "Branch"), ":"]
|
|
804
|
+
}), /* @__PURE__ */ P("span", {
|
|
805
805
|
className: "px-2 py-1 bg-bg-sunken text-text-primary text-sm rounded font-mono",
|
|
806
806
|
children: V.gitBranch
|
|
807
807
|
})]
|
|
808
|
-
}), V.gitStatus && /* @__PURE__ */
|
|
808
|
+
}), V.gitStatus && /* @__PURE__ */ F("div", {
|
|
809
809
|
className: "flex items-center gap-2",
|
|
810
|
-
children: [/* @__PURE__ */
|
|
810
|
+
children: [/* @__PURE__ */ F("span", {
|
|
811
811
|
className: "text-sm text-text-secondary",
|
|
812
|
-
children: [
|
|
813
|
-
}), /* @__PURE__ */
|
|
812
|
+
children: [k("sessions.filterStatus", "Status"), ":"]
|
|
813
|
+
}), /* @__PURE__ */ P("span", {
|
|
814
814
|
className: `font-medium ${$t(V.gitStatus)}`,
|
|
815
815
|
children: V.gitStatus
|
|
816
816
|
})]
|
|
817
817
|
})]
|
|
818
|
-
}), V.gitRemote && /* @__PURE__ */
|
|
818
|
+
}), V.gitRemote && /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ F("span", {
|
|
819
819
|
className: "text-sm text-text-secondary",
|
|
820
|
-
children: [
|
|
821
|
-
}), /* @__PURE__ */
|
|
820
|
+
children: [k("vibeDetails.remote", "Remote"), ":"]
|
|
821
|
+
}), /* @__PURE__ */ P("p", {
|
|
822
822
|
className: "font-mono text-sm text-text-primary mt-1 break-all",
|
|
823
823
|
children: V.gitRemote
|
|
824
824
|
})] })]
|
|
825
|
-
})] }) : /* @__PURE__ */
|
|
826
|
-
icon: /* @__PURE__ */
|
|
827
|
-
title:
|
|
828
|
-
description:
|
|
825
|
+
})] }) : /* @__PURE__ */ P(h, {
|
|
826
|
+
icon: /* @__PURE__ */ P(De, { className: "w-8 h-8 text-text-secondary" }),
|
|
827
|
+
title: k("vibeDetails.noGitInformation", "No git information"),
|
|
828
|
+
description: k("vibeDetails.noGitInformationDescription", "This vibe does not have any git repository linked")
|
|
829
829
|
})
|
|
830
830
|
})
|
|
831
831
|
}, "git"),
|
|
832
|
-
Q === "sessions" && U("sessions") && /* @__PURE__ */
|
|
832
|
+
Q === "sessions" && U("sessions") && /* @__PURE__ */ P(M.div, {
|
|
833
833
|
initial: {
|
|
834
834
|
opacity: 0,
|
|
835
835
|
y: 8
|
|
@@ -843,66 +843,66 @@ function nt() {
|
|
|
843
843
|
y: -8
|
|
844
844
|
},
|
|
845
845
|
transition: { duration: .2 },
|
|
846
|
-
children: /* @__PURE__ */
|
|
846
|
+
children: /* @__PURE__ */ P(v, {
|
|
847
847
|
agentId: q?.id ?? null,
|
|
848
848
|
requirements: [{
|
|
849
849
|
packages: ["@vibecontrols/vibe-plugin-session-manager"],
|
|
850
850
|
mode: "all",
|
|
851
|
-
eyebrow:
|
|
852
|
-
title:
|
|
853
|
-
description:
|
|
851
|
+
eyebrow: k("vibeDetails.sessionsManagerEyebrow", "Session manager required"),
|
|
852
|
+
title: k("vibeDetails.sessionsManagerTitle", "Install the session manager"),
|
|
853
|
+
description: k("vibeDetails.sessionsManagerDescription", "Sessions are orchestrated by the unified session manager plugin. Install it to continue.")
|
|
854
854
|
}, {
|
|
855
|
-
packages:
|
|
855
|
+
packages: te,
|
|
856
856
|
mode: "any",
|
|
857
|
-
eyebrow:
|
|
858
|
-
title:
|
|
859
|
-
description:
|
|
857
|
+
eyebrow: k("vibeDetails.sessionProviderEyebrow", "Session provider required"),
|
|
858
|
+
title: k("vibeDetails.sessionProviderTitle", "Pick a session provider"),
|
|
859
|
+
description: k("vibeDetails.sessionProviderDescription", "Choose the terminal multiplexer your sessions should run on. You can install more providers later.")
|
|
860
860
|
}],
|
|
861
|
-
children: /* @__PURE__ */
|
|
861
|
+
children: /* @__PURE__ */ F(_, { children: [/* @__PURE__ */ F("div", {
|
|
862
862
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
863
|
-
children: [/* @__PURE__ */
|
|
863
|
+
children: [/* @__PURE__ */ F("h3", {
|
|
864
864
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
865
865
|
children: [
|
|
866
|
-
/* @__PURE__ */
|
|
867
|
-
|
|
866
|
+
/* @__PURE__ */ P(A, { className: "w-5 h-5" }),
|
|
867
|
+
k("nav.sessions", "Sessions"),
|
|
868
868
|
" (",
|
|
869
869
|
G.length,
|
|
870
870
|
")"
|
|
871
871
|
]
|
|
872
|
-
}), /* @__PURE__ */
|
|
872
|
+
}), /* @__PURE__ */ F("button", {
|
|
873
873
|
onClick: qt,
|
|
874
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",
|
|
875
|
-
children: [/* @__PURE__ */
|
|
875
|
+
children: [/* @__PURE__ */ P(Re, { className: "w-4 h-4" }), k("vibeDetails.new", "New")]
|
|
876
876
|
})]
|
|
877
|
-
}), G.length > 0 ? /* @__PURE__ */
|
|
877
|
+
}), G.length > 0 ? /* @__PURE__ */ P(Je, {
|
|
878
878
|
className: "divide-y divide-border-primary",
|
|
879
|
-
children: G.map((e) => /* @__PURE__ */
|
|
879
|
+
children: G.map((e) => /* @__PURE__ */ P(L, {
|
|
880
880
|
variant: "fadeRight",
|
|
881
|
-
children: /* @__PURE__ */
|
|
881
|
+
children: /* @__PURE__ */ F("div", {
|
|
882
882
|
onClick: () => Xt(e.id),
|
|
883
883
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
884
|
-
children: [/* @__PURE__ */
|
|
884
|
+
children: [/* @__PURE__ */ F("div", {
|
|
885
885
|
className: "flex items-center gap-3 min-w-0",
|
|
886
|
-
children: [/* @__PURE__ */
|
|
886
|
+
children: [/* @__PURE__ */ P(A, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ F("div", {
|
|
887
887
|
className: "min-w-0",
|
|
888
|
-
children: [/* @__PURE__ */
|
|
888
|
+
children: [/* @__PURE__ */ P("p", {
|
|
889
889
|
className: "font-medium text-text-primary truncate",
|
|
890
890
|
children: e.name
|
|
891
|
-
}), /* @__PURE__ */
|
|
891
|
+
}), /* @__PURE__ */ P("p", {
|
|
892
892
|
className: "text-sm text-text-secondary truncate",
|
|
893
893
|
children: e.type
|
|
894
894
|
})]
|
|
895
895
|
})]
|
|
896
|
-
}), /* @__PURE__ */
|
|
896
|
+
}), /* @__PURE__ */ P(g, { status: e.status })]
|
|
897
897
|
})
|
|
898
898
|
}, e.id))
|
|
899
|
-
}) : /* @__PURE__ */
|
|
899
|
+
}) : /* @__PURE__ */ P("div", {
|
|
900
900
|
className: "p-6 text-center text-text-secondary",
|
|
901
|
-
children:
|
|
901
|
+
children: k("vibeDetails.noSessionsForVibe", "No sessions for this vibe")
|
|
902
902
|
})] })
|
|
903
903
|
})
|
|
904
904
|
}, "sessions"),
|
|
905
|
-
Q === "notes" && U("notes") && /* @__PURE__ */
|
|
905
|
+
Q === "notes" && U("notes") && /* @__PURE__ */ P(M.div, {
|
|
906
906
|
initial: {
|
|
907
907
|
opacity: 0,
|
|
908
908
|
y: 8
|
|
@@ -917,12 +917,12 @@ function nt() {
|
|
|
917
917
|
},
|
|
918
918
|
transition: { duration: .2 },
|
|
919
919
|
className: "space-y-6",
|
|
920
|
-
children: /* @__PURE__ */
|
|
920
|
+
children: /* @__PURE__ */ P(x, {
|
|
921
921
|
context: "vibe",
|
|
922
922
|
vibeId: V.id
|
|
923
923
|
})
|
|
924
924
|
}, "notes"),
|
|
925
|
-
Q === "docs" && U("docs") && /* @__PURE__ */
|
|
925
|
+
Q === "docs" && U("docs") && /* @__PURE__ */ P(M.div, {
|
|
926
926
|
initial: {
|
|
927
927
|
opacity: 0,
|
|
928
928
|
y: 8
|
|
@@ -937,9 +937,9 @@ function nt() {
|
|
|
937
937
|
},
|
|
938
938
|
transition: { duration: .2 },
|
|
939
939
|
className: "space-y-6",
|
|
940
|
-
children: /* @__PURE__ */
|
|
940
|
+
children: /* @__PURE__ */ P(le, { vibeId: V.id })
|
|
941
941
|
}, "docs"),
|
|
942
|
-
Q === "scorecard" && U("scorecard") && /* @__PURE__ */
|
|
942
|
+
Q === "scorecard" && U("scorecard") && /* @__PURE__ */ P(M.div, {
|
|
943
943
|
initial: {
|
|
944
944
|
opacity: 0,
|
|
945
945
|
y: 8
|
|
@@ -954,12 +954,12 @@ function nt() {
|
|
|
954
954
|
},
|
|
955
955
|
transition: { duration: .2 },
|
|
956
956
|
className: "space-y-6",
|
|
957
|
-
children: /* @__PURE__ */
|
|
957
|
+
children: /* @__PURE__ */ P(ce, {
|
|
958
958
|
ownerType: "VIBE",
|
|
959
959
|
ownerId: V.id
|
|
960
960
|
})
|
|
961
961
|
}, "scorecard"),
|
|
962
|
-
Q === "catalogs" && U("catalogs") && /* @__PURE__ */
|
|
962
|
+
Q === "catalogs" && U("catalogs") && /* @__PURE__ */ P(M.div, {
|
|
963
963
|
initial: {
|
|
964
964
|
opacity: 0,
|
|
965
965
|
y: 8
|
|
@@ -974,13 +974,13 @@ function nt() {
|
|
|
974
974
|
},
|
|
975
975
|
transition: { duration: .2 },
|
|
976
976
|
className: "space-y-6",
|
|
977
|
-
children: /* @__PURE__ */
|
|
977
|
+
children: /* @__PURE__ */ P(nt, {
|
|
978
978
|
vibeId: V.id,
|
|
979
|
-
tr:
|
|
980
|
-
navigate:
|
|
979
|
+
tr: k,
|
|
980
|
+
navigate: C
|
|
981
981
|
})
|
|
982
982
|
}, "catalogs"),
|
|
983
|
-
Q === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */
|
|
983
|
+
Q === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */ P(M.div, {
|
|
984
984
|
initial: {
|
|
985
985
|
opacity: 0,
|
|
986
986
|
y: 8
|
|
@@ -995,37 +995,37 @@ function nt() {
|
|
|
995
995
|
},
|
|
996
996
|
transition: { duration: .2 },
|
|
997
997
|
className: "space-y-6",
|
|
998
|
-
children: /* @__PURE__ */
|
|
998
|
+
children: /* @__PURE__ */ P(v, {
|
|
999
999
|
agentId: q?.id ?? null,
|
|
1000
1000
|
required: ["@vibecontrols/vibe-plugin-tool-graphiql"],
|
|
1001
1001
|
mode: "all",
|
|
1002
|
-
eyebrow:
|
|
1003
|
-
title:
|
|
1004
|
-
description:
|
|
1005
|
-
children: Mt ? /* @__PURE__ */
|
|
1002
|
+
eyebrow: k("vibeDetails.graphqlPluginEyebrow", "GraphQL playground plugin required"),
|
|
1003
|
+
title: k("vibeDetails.graphqlPluginTitle", "Install the GraphQL playground"),
|
|
1004
|
+
description: k("vibeDetails.graphqlPluginDescription", "The GraphQL Playground is served by the graphiql agent plugin. Install it to continue."),
|
|
1005
|
+
children: Mt ? /* @__PURE__ */ P(rt, {
|
|
1006
1006
|
vibeId: V.id,
|
|
1007
1007
|
agentId: q?.id ?? null,
|
|
1008
1008
|
profile: Y,
|
|
1009
1009
|
tunnelUrl: Mt,
|
|
1010
1010
|
apiKey: Nt,
|
|
1011
1011
|
type: "graphql",
|
|
1012
|
-
tr:
|
|
1013
|
-
}) : /* @__PURE__ */
|
|
1014
|
-
icon: /* @__PURE__ */
|
|
1015
|
-
title:
|
|
1016
|
-
description:
|
|
1012
|
+
tr: k
|
|
1013
|
+
}) : /* @__PURE__ */ P(h, {
|
|
1014
|
+
icon: /* @__PURE__ */ P(Fe, { className: "w-8 h-8 text-text-secondary" }),
|
|
1015
|
+
title: k("vibeDetails.noAgentTunnel", "No agent tunnel available"),
|
|
1016
|
+
description: k("vibeDetails.noAgentTunnelDesc2", "The GraphQL playground requires an active agent with a tunnel URL.")
|
|
1017
1017
|
})
|
|
1018
1018
|
})
|
|
1019
1019
|
}, "graphqlPlayground"),
|
|
1020
|
-
Q === "gitops" && U("gitops") && /* @__PURE__ */
|
|
1020
|
+
Q === "gitops" && U("gitops") && /* @__PURE__ */ P(ue, {
|
|
1021
1021
|
vibeId: r || "",
|
|
1022
1022
|
agentId: q?.id ?? "",
|
|
1023
1023
|
profile: Y,
|
|
1024
1024
|
tunnelUrl: Mt,
|
|
1025
1025
|
apiKey: Nt,
|
|
1026
|
-
tr:
|
|
1026
|
+
tr: k
|
|
1027
1027
|
}),
|
|
1028
|
-
Q === "security" && U("security") && /* @__PURE__ */
|
|
1028
|
+
Q === "security" && U("security") && /* @__PURE__ */ P(M.div, {
|
|
1029
1029
|
initial: {
|
|
1030
1030
|
opacity: 0,
|
|
1031
1031
|
y: 8
|
|
@@ -1040,9 +1040,9 @@ function nt() {
|
|
|
1040
1040
|
},
|
|
1041
1041
|
transition: { duration: .2 },
|
|
1042
1042
|
className: "space-y-6",
|
|
1043
|
-
children: /* @__PURE__ */
|
|
1043
|
+
children: /* @__PURE__ */ P(he, { vibeId: r || "" })
|
|
1044
1044
|
}, "security"),
|
|
1045
|
-
Q === "related" && U("related") && /* @__PURE__ */
|
|
1045
|
+
Q === "related" && U("related") && /* @__PURE__ */ P(M.div, {
|
|
1046
1046
|
initial: {
|
|
1047
1047
|
opacity: 0,
|
|
1048
1048
|
y: 8
|
|
@@ -1057,93 +1057,93 @@ function nt() {
|
|
|
1057
1057
|
},
|
|
1058
1058
|
transition: { duration: .2 },
|
|
1059
1059
|
className: "space-y-6",
|
|
1060
|
-
children: nn > 0 ? /* @__PURE__ */
|
|
1061
|
-
K.length > 0 && /* @__PURE__ */
|
|
1060
|
+
children: nn > 0 ? /* @__PURE__ */ F(N, { children: [
|
|
1061
|
+
K.length > 0 && /* @__PURE__ */ F(_, { children: [/* @__PURE__ */ P("div", {
|
|
1062
1062
|
className: "p-4 border-b border-border-default",
|
|
1063
|
-
children: /* @__PURE__ */
|
|
1063
|
+
children: /* @__PURE__ */ F("h3", {
|
|
1064
1064
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1065
1065
|
children: [
|
|
1066
|
-
/* @__PURE__ */
|
|
1067
|
-
|
|
1066
|
+
/* @__PURE__ */ P(j, { className: "w-5 h-5" }),
|
|
1067
|
+
k("vibeDetails.childVibes", "Child Vibes"),
|
|
1068
1068
|
" (",
|
|
1069
1069
|
K.length,
|
|
1070
1070
|
")"
|
|
1071
1071
|
]
|
|
1072
1072
|
})
|
|
1073
|
-
}), /* @__PURE__ */
|
|
1073
|
+
}), /* @__PURE__ */ P(Je, {
|
|
1074
1074
|
className: "divide-y divide-border-primary",
|
|
1075
|
-
children: K.map((e) => /* @__PURE__ */
|
|
1075
|
+
children: K.map((e) => /* @__PURE__ */ P(L, {
|
|
1076
1076
|
variant: "fadeRight",
|
|
1077
|
-
children: /* @__PURE__ */
|
|
1077
|
+
children: /* @__PURE__ */ F("div", {
|
|
1078
1078
|
onClick: () => Zt(e.id),
|
|
1079
1079
|
className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
1080
|
-
children: [/* @__PURE__ */
|
|
1080
|
+
children: [/* @__PURE__ */ F("div", {
|
|
1081
1081
|
className: "flex items-center gap-3 min-w-0",
|
|
1082
|
-
children: [/* @__PURE__ */
|
|
1082
|
+
children: [/* @__PURE__ */ P(j, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ F("div", {
|
|
1083
1083
|
className: "min-w-0",
|
|
1084
|
-
children: [/* @__PURE__ */
|
|
1084
|
+
children: [/* @__PURE__ */ P("p", {
|
|
1085
1085
|
className: "font-medium text-text-primary truncate",
|
|
1086
1086
|
children: e.name
|
|
1087
|
-
}), /* @__PURE__ */
|
|
1087
|
+
}), /* @__PURE__ */ P("p", {
|
|
1088
1088
|
className: "text-sm text-text-secondary truncate",
|
|
1089
1089
|
children: e.type
|
|
1090
1090
|
})]
|
|
1091
1091
|
})]
|
|
1092
|
-
}), /* @__PURE__ */
|
|
1092
|
+
}), /* @__PURE__ */ P(g, { status: e.status })]
|
|
1093
1093
|
})
|
|
1094
1094
|
}, e.id))
|
|
1095
1095
|
})] }),
|
|
1096
|
-
At && /* @__PURE__ */
|
|
1096
|
+
At && /* @__PURE__ */ P(_, {
|
|
1097
1097
|
onClick: () => Zt(At.id),
|
|
1098
1098
|
hoverable: !0,
|
|
1099
|
-
children: /* @__PURE__ */
|
|
1099
|
+
children: /* @__PURE__ */ F("div", {
|
|
1100
1100
|
className: "p-4 flex items-center gap-3",
|
|
1101
|
-
children: [/* @__PURE__ */
|
|
1101
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1102
1102
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1103
|
-
children: /* @__PURE__ */
|
|
1104
|
-
}), /* @__PURE__ */
|
|
1103
|
+
children: /* @__PURE__ */ P(j, { className: "w-5 h-5 text-text-secondary" })
|
|
1104
|
+
}), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
|
|
1105
1105
|
className: "text-sm text-text-secondary",
|
|
1106
|
-
children:
|
|
1107
|
-
}), /* @__PURE__ */
|
|
1106
|
+
children: k("vibeDetails.parentVibe", "Parent Vibe")
|
|
1107
|
+
}), /* @__PURE__ */ P("p", {
|
|
1108
1108
|
className: "font-medium text-text-primary",
|
|
1109
1109
|
children: At.name
|
|
1110
1110
|
})] })]
|
|
1111
1111
|
})
|
|
1112
1112
|
}),
|
|
1113
|
-
J && /* @__PURE__ */
|
|
1113
|
+
J && /* @__PURE__ */ P(_, {
|
|
1114
1114
|
onClick: Yt,
|
|
1115
1115
|
hoverable: !0,
|
|
1116
|
-
children: /* @__PURE__ */
|
|
1116
|
+
children: /* @__PURE__ */ F("div", {
|
|
1117
1117
|
className: "p-4 flex items-center justify-between",
|
|
1118
|
-
children: [/* @__PURE__ */
|
|
1118
|
+
children: [/* @__PURE__ */ F("div", {
|
|
1119
1119
|
className: "flex items-center gap-3",
|
|
1120
|
-
children: [/* @__PURE__ */
|
|
1120
|
+
children: [/* @__PURE__ */ P("div", {
|
|
1121
1121
|
className: "w-10 h-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
1122
|
-
children: /* @__PURE__ */
|
|
1123
|
-
}), /* @__PURE__ */
|
|
1124
|
-
/* @__PURE__ */
|
|
1122
|
+
children: /* @__PURE__ */ P(Be, { className: "w-5 h-5 text-text-secondary" })
|
|
1123
|
+
}), /* @__PURE__ */ F("div", { children: [
|
|
1124
|
+
/* @__PURE__ */ P("p", {
|
|
1125
1125
|
className: "text-sm text-text-secondary",
|
|
1126
|
-
children:
|
|
1126
|
+
children: k("vibeDetails.runningOnAgent", "Running on Agent")
|
|
1127
1127
|
}),
|
|
1128
|
-
/* @__PURE__ */
|
|
1128
|
+
/* @__PURE__ */ P("p", {
|
|
1129
1129
|
className: "font-medium text-text-primary",
|
|
1130
1130
|
children: J.name
|
|
1131
1131
|
}),
|
|
1132
|
-
/* @__PURE__ */
|
|
1132
|
+
/* @__PURE__ */ P("p", {
|
|
1133
1133
|
className: "text-sm text-text-secondary",
|
|
1134
1134
|
children: J.hostname
|
|
1135
1135
|
})
|
|
1136
1136
|
] })]
|
|
1137
|
-
}), /* @__PURE__ */
|
|
1137
|
+
}), /* @__PURE__ */ P(g, { status: J.isActive ? "ACTIVE" : "OFFLINE" })]
|
|
1138
1138
|
})
|
|
1139
1139
|
})
|
|
1140
|
-
] }) : /* @__PURE__ */
|
|
1141
|
-
icon: /* @__PURE__ */
|
|
1142
|
-
title:
|
|
1143
|
-
description:
|
|
1140
|
+
] }) : /* @__PURE__ */ P(h, {
|
|
1141
|
+
icon: /* @__PURE__ */ P(Me, { className: "w-8 h-8 text-text-secondary" }),
|
|
1142
|
+
title: k("vibeDetails.noRelatedEntities", "No related entities"),
|
|
1143
|
+
description: k("vibeDetails.noRelatedEntitiesDescription", "This vibe has no child vibes, parent vibe, or linked agent")
|
|
1144
1144
|
})
|
|
1145
1145
|
}, "related"),
|
|
1146
|
-
Q === "llmContext" && /* @__PURE__ */
|
|
1146
|
+
Q === "llmContext" && /* @__PURE__ */ P(M.div, {
|
|
1147
1147
|
initial: {
|
|
1148
1148
|
opacity: 0,
|
|
1149
1149
|
y: 8
|
|
@@ -1158,7 +1158,7 @@ function nt() {
|
|
|
1158
1158
|
},
|
|
1159
1159
|
transition: { duration: .2 },
|
|
1160
1160
|
className: "space-y-6",
|
|
1161
|
-
children: /* @__PURE__ */
|
|
1161
|
+
children: /* @__PURE__ */ P(ge, {
|
|
1162
1162
|
vibeId: V.id,
|
|
1163
1163
|
attachedAgents: W.map((e) => ({
|
|
1164
1164
|
id: e.id,
|
|
@@ -1170,7 +1170,7 @@ function nt() {
|
|
|
1170
1170
|
let e = Z.data.find((e) => e.contribution.id === Q);
|
|
1171
1171
|
if (!e) return null;
|
|
1172
1172
|
let t = e.tunnel, n = e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`];
|
|
1173
|
-
return /* @__PURE__ */
|
|
1173
|
+
return /* @__PURE__ */ P(M.div, {
|
|
1174
1174
|
initial: {
|
|
1175
1175
|
opacity: 0,
|
|
1176
1176
|
y: 8
|
|
@@ -1185,9 +1185,9 @@ function nt() {
|
|
|
1185
1185
|
},
|
|
1186
1186
|
transition: { duration: .2 },
|
|
1187
1187
|
className: "space-y-6",
|
|
1188
|
-
children: /* @__PURE__ */
|
|
1188
|
+
children: /* @__PURE__ */ P(_, { children: /* @__PURE__ */ P("div", {
|
|
1189
1189
|
className: "p-0 h-[600px]",
|
|
1190
|
-
children: /* @__PURE__ */
|
|
1190
|
+
children: /* @__PURE__ */ P(se, {
|
|
1191
1191
|
contribution: e,
|
|
1192
1192
|
tunnel: t,
|
|
1193
1193
|
restPaths: n,
|
|
@@ -1207,7 +1207,7 @@ function nt() {
|
|
|
1207
1207
|
})()
|
|
1208
1208
|
]
|
|
1209
1209
|
}),
|
|
1210
|
-
X && q && /* @__PURE__ */
|
|
1210
|
+
X && q && /* @__PURE__ */ P(oe, {
|
|
1211
1211
|
isOpen: It,
|
|
1212
1212
|
onClose: () => Lt(!1),
|
|
1213
1213
|
mountPoint: "vibe.detailTab",
|
|
@@ -1217,77 +1217,77 @@ function nt() {
|
|
|
1217
1217
|
Z.refetch();
|
|
1218
1218
|
}
|
|
1219
1219
|
}),
|
|
1220
|
-
|
|
1220
|
+
st && /* @__PURE__ */ P("div", {
|
|
1221
1221
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1222
|
-
children: /* @__PURE__ */
|
|
1222
|
+
children: /* @__PURE__ */ F("div", {
|
|
1223
1223
|
className: "bg-bg-surface rounded-lg p-6 w-full max-w-lg",
|
|
1224
1224
|
children: [
|
|
1225
|
-
/* @__PURE__ */
|
|
1225
|
+
/* @__PURE__ */ F("h2", {
|
|
1226
1226
|
className: "text-lg font-semibold text-text-primary mb-4",
|
|
1227
1227
|
children: [
|
|
1228
|
-
|
|
1228
|
+
k("vibeDetails.newSessionFor", "New Session for"),
|
|
1229
1229
|
" ",
|
|
1230
1230
|
V.name
|
|
1231
1231
|
]
|
|
1232
1232
|
}),
|
|
1233
|
-
|
|
1233
|
+
lt && /* @__PURE__ */ P("div", {
|
|
1234
1234
|
className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1235
|
-
children:
|
|
1235
|
+
children: lt
|
|
1236
1236
|
}),
|
|
1237
|
-
/* @__PURE__ */
|
|
1237
|
+
/* @__PURE__ */ F("div", {
|
|
1238
1238
|
className: "space-y-4",
|
|
1239
1239
|
children: [
|
|
1240
|
-
/* @__PURE__ */
|
|
1240
|
+
/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("label", {
|
|
1241
1241
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1242
|
-
children:
|
|
1243
|
-
}), /* @__PURE__ */
|
|
1244
|
-
ref:
|
|
1242
|
+
children: k("vibeDetails.sessionName", "Session Name")
|
|
1243
|
+
}), /* @__PURE__ */ P("input", {
|
|
1244
|
+
ref: mt,
|
|
1245
1245
|
type: "text",
|
|
1246
|
-
placeholder:
|
|
1246
|
+
placeholder: k("vibeDetails.sessionNamePlaceholder", "dev-terminal"),
|
|
1247
1247
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1248
1248
|
})] }),
|
|
1249
|
-
/* @__PURE__ */
|
|
1249
|
+
/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("label", {
|
|
1250
1250
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1251
|
-
children:
|
|
1252
|
-
}), /* @__PURE__ */
|
|
1251
|
+
children: k("sessions.filterType", "Type")
|
|
1252
|
+
}), /* @__PURE__ */ F("select", {
|
|
1253
1253
|
ref: ht,
|
|
1254
1254
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
|
|
1255
1255
|
children: [
|
|
1256
|
-
/* @__PURE__ */
|
|
1256
|
+
/* @__PURE__ */ P("option", {
|
|
1257
1257
|
value: "TERMINAL",
|
|
1258
|
-
children:
|
|
1258
|
+
children: k("sessions.typeTerminal", "Terminal")
|
|
1259
1259
|
}),
|
|
1260
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ P("option", {
|
|
1261
1261
|
value: "TMUX",
|
|
1262
|
-
children:
|
|
1262
|
+
children: k("sessions.typeTmux", "TMUX")
|
|
1263
1263
|
}),
|
|
1264
|
-
/* @__PURE__ */
|
|
1264
|
+
/* @__PURE__ */ P("option", {
|
|
1265
1265
|
value: "SSH",
|
|
1266
|
-
children:
|
|
1266
|
+
children: k("sessions.typeSsh", "SSH")
|
|
1267
1267
|
}),
|
|
1268
|
-
/* @__PURE__ */
|
|
1268
|
+
/* @__PURE__ */ P("option", {
|
|
1269
1269
|
value: "SCRIPT",
|
|
1270
|
-
children:
|
|
1270
|
+
children: k("sessions.typeScript", "Script")
|
|
1271
1271
|
}),
|
|
1272
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ P("option", {
|
|
1273
1273
|
value: "CUSTOM",
|
|
1274
|
-
children:
|
|
1274
|
+
children: k("sessions.typeCustom", "Custom")
|
|
1275
1275
|
})
|
|
1276
1276
|
]
|
|
1277
1277
|
})] }),
|
|
1278
|
-
/* @__PURE__ */
|
|
1278
|
+
/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("label", {
|
|
1279
1279
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1280
|
-
children:
|
|
1281
|
-
}), /* @__PURE__ */
|
|
1280
|
+
children: k("sessions.command", "Command")
|
|
1281
|
+
}), /* @__PURE__ */ P("input", {
|
|
1282
1282
|
ref: gt,
|
|
1283
1283
|
type: "text",
|
|
1284
|
-
placeholder:
|
|
1284
|
+
placeholder: k("vibeDetails.sessionCommandPlaceholder", "bash"),
|
|
1285
1285
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
|
|
1286
1286
|
})] }),
|
|
1287
|
-
/* @__PURE__ */
|
|
1287
|
+
/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("label", {
|
|
1288
1288
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
1289
|
-
children:
|
|
1290
|
-
}), /* @__PURE__ */
|
|
1289
|
+
children: k("vibeDetails.workingDirectory", "Working Directory")
|
|
1290
|
+
}), /* @__PURE__ */ P("input", {
|
|
1291
1291
|
ref: _t,
|
|
1292
1292
|
type: "text",
|
|
1293
1293
|
defaultValue: V.path || "",
|
|
@@ -1295,18 +1295,18 @@ function nt() {
|
|
|
1295
1295
|
})] })
|
|
1296
1296
|
]
|
|
1297
1297
|
}),
|
|
1298
|
-
/* @__PURE__ */
|
|
1298
|
+
/* @__PURE__ */ F("div", {
|
|
1299
1299
|
className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
|
|
1300
|
-
children: [/* @__PURE__ */
|
|
1301
|
-
onClick: () =>
|
|
1302
|
-
disabled:
|
|
1300
|
+
children: [/* @__PURE__ */ P("button", {
|
|
1301
|
+
onClick: () => ct(!1),
|
|
1302
|
+
disabled: ut,
|
|
1303
1303
|
className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
1304
|
-
children:
|
|
1305
|
-
}), /* @__PURE__ */
|
|
1304
|
+
children: k("common.cancel", "Cancel")
|
|
1305
|
+
}), /* @__PURE__ */ P("button", {
|
|
1306
1306
|
onClick: Jt,
|
|
1307
|
-
disabled:
|
|
1307
|
+
disabled: ut,
|
|
1308
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",
|
|
1309
|
-
children:
|
|
1309
|
+
children: ut ? k("sessions.creating", "Creating...") : k("sessions.createSession", "Create Session")
|
|
1310
1310
|
})]
|
|
1311
1311
|
})
|
|
1312
1312
|
]
|
|
@@ -1315,8 +1315,8 @@ function nt() {
|
|
|
1315
1315
|
]
|
|
1316
1316
|
});
|
|
1317
1317
|
}
|
|
1318
|
-
function
|
|
1319
|
-
let [a, o] =
|
|
1318
|
+
function nt({ vibeId: t, tr: n, navigate: i }) {
|
|
1319
|
+
let [a, o] = D(!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) => {
|
|
1320
1320
|
await d({ variables: {
|
|
1321
1321
|
catalogId: e,
|
|
1322
1322
|
vibeId: t
|
|
@@ -1327,15 +1327,15 @@ function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1327
1327
|
vibeId: t
|
|
1328
1328
|
} }), await u();
|
|
1329
1329
|
};
|
|
1330
|
-
return l && f.length === 0 ? /* @__PURE__ */
|
|
1331
|
-
/* @__PURE__ */
|
|
1330
|
+
return l && f.length === 0 ? /* @__PURE__ */ P(b, { variant: "detail" }) : /* @__PURE__ */ F(N, { children: [
|
|
1331
|
+
/* @__PURE__ */ F("div", {
|
|
1332
1332
|
className: "flex items-center justify-between",
|
|
1333
|
-
children: [/* @__PURE__ */
|
|
1333
|
+
children: [/* @__PURE__ */ F("h3", {
|
|
1334
1334
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
1335
1335
|
children: [
|
|
1336
|
-
/* @__PURE__ */
|
|
1336
|
+
/* @__PURE__ */ P(je, { className: "w-5 h-5" }),
|
|
1337
1337
|
n("vibeDetails.catalogsTitle", "Catalogs"),
|
|
1338
|
-
/* @__PURE__ */
|
|
1338
|
+
/* @__PURE__ */ F("span", {
|
|
1339
1339
|
className: "text-sm font-normal text-text-secondary",
|
|
1340
1340
|
children: [
|
|
1341
1341
|
"(",
|
|
@@ -1344,41 +1344,41 @@ function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1344
1344
|
]
|
|
1345
1345
|
})
|
|
1346
1346
|
]
|
|
1347
|
-
}), /* @__PURE__ */
|
|
1347
|
+
}), /* @__PURE__ */ F("button", {
|
|
1348
1348
|
onClick: () => o(!0),
|
|
1349
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",
|
|
1350
|
-
children: [/* @__PURE__ */
|
|
1350
|
+
children: [/* @__PURE__ */ P(Re, { className: "w-4 h-4" }), n("vibeDetails.addToCatalog", "Add to Catalog")]
|
|
1351
1351
|
})]
|
|
1352
1352
|
}),
|
|
1353
|
-
p.length > 0 ? /* @__PURE__ */
|
|
1353
|
+
p.length > 0 ? /* @__PURE__ */ P("div", {
|
|
1354
1354
|
className: "space-y-2",
|
|
1355
|
-
children: p.map((e) => /* @__PURE__ */
|
|
1355
|
+
children: p.map((e) => /* @__PURE__ */ P(_, { children: /* @__PURE__ */ F("div", {
|
|
1356
1356
|
className: "p-3 flex items-center justify-between",
|
|
1357
|
-
children: [/* @__PURE__ */
|
|
1357
|
+
children: [/* @__PURE__ */ F("button", {
|
|
1358
1358
|
onClick: () => i(`/catalogs/${e.id}`),
|
|
1359
1359
|
className: "flex items-center gap-3 text-left hover:opacity-80 transition-opacity",
|
|
1360
|
-
children: [/* @__PURE__ */
|
|
1360
|
+
children: [/* @__PURE__ */ P(je, { className: "w-5 h-5 text-action-primary-bg flex-shrink-0" }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
|
|
1361
1361
|
className: "font-medium text-text-primary text-sm",
|
|
1362
1362
|
children: e.name
|
|
1363
|
-
}), /* @__PURE__ */
|
|
1363
|
+
}), /* @__PURE__ */ P("p", {
|
|
1364
1364
|
className: "text-xs text-text-secondary",
|
|
1365
1365
|
children: e.visibility
|
|
1366
1366
|
})] })]
|
|
1367
|
-
}), /* @__PURE__ */
|
|
1367
|
+
}), /* @__PURE__ */ P("button", {
|
|
1368
1368
|
onClick: () => te(e.id),
|
|
1369
1369
|
className: "p-1.5 text-text-muted hover:text-status-error-text hover:bg-status-error-bg rounded-md transition-colors",
|
|
1370
1370
|
title: n("vibeDetails.removeFromCatalog", "Remove from catalog"),
|
|
1371
|
-
children: /* @__PURE__ */
|
|
1371
|
+
children: /* @__PURE__ */ P(Ge, { className: "w-4 h-4" })
|
|
1372
1372
|
})]
|
|
1373
1373
|
}) }, e.id))
|
|
1374
|
-
}) : /* @__PURE__ */
|
|
1375
|
-
icon: /* @__PURE__ */
|
|
1374
|
+
}) : /* @__PURE__ */ P(h, {
|
|
1375
|
+
icon: /* @__PURE__ */ P(je, { className: "w-8 h-8 text-text-secondary" }),
|
|
1376
1376
|
title: n("vibeDetails.noCatalogs", "Not in any catalogs"),
|
|
1377
1377
|
description: n("vibeDetails.noCatalogsDesc", "Add this vibe to catalogs to organize and track it alongside other components")
|
|
1378
1378
|
}),
|
|
1379
|
-
a && /* @__PURE__ */
|
|
1379
|
+
a && /* @__PURE__ */ P("div", {
|
|
1380
1380
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
1381
|
-
children: /* @__PURE__ */
|
|
1381
|
+
children: /* @__PURE__ */ F(M.div, {
|
|
1382
1382
|
initial: {
|
|
1383
1383
|
opacity: 0,
|
|
1384
1384
|
scale: .95
|
|
@@ -1389,33 +1389,33 @@ function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1389
1389
|
},
|
|
1390
1390
|
className: "bg-bg-surface rounded-lg w-full max-w-md max-h-[60vh] flex flex-col",
|
|
1391
1391
|
children: [
|
|
1392
|
-
/* @__PURE__ */
|
|
1392
|
+
/* @__PURE__ */ P("div", {
|
|
1393
1393
|
className: "p-4 border-b border-border-default",
|
|
1394
|
-
children: /* @__PURE__ */
|
|
1394
|
+
children: /* @__PURE__ */ P("h2", {
|
|
1395
1395
|
className: "text-lg font-semibold text-text-primary",
|
|
1396
1396
|
children: n("vibeDetails.addToCatalogTitle", "Add Vibe to Catalog")
|
|
1397
1397
|
})
|
|
1398
1398
|
}),
|
|
1399
|
-
/* @__PURE__ */
|
|
1399
|
+
/* @__PURE__ */ P("div", {
|
|
1400
1400
|
className: "flex-1 overflow-y-auto p-2",
|
|
1401
|
-
children: m.length === 0 ? /* @__PURE__ */
|
|
1401
|
+
children: m.length === 0 ? /* @__PURE__ */ P("div", {
|
|
1402
1402
|
className: "p-4 text-center text-text-secondary text-sm",
|
|
1403
1403
|
children: n("vibeDetails.noAvailableCatalogs", "No available catalogs. This vibe is already in all catalogs.")
|
|
1404
|
-
}) : m.map((e) => /* @__PURE__ */
|
|
1404
|
+
}) : m.map((e) => /* @__PURE__ */ F("button", {
|
|
1405
1405
|
onClick: () => g(e.id),
|
|
1406
1406
|
className: "w-full flex items-center justify-between p-3 rounded-md hover:bg-bg-sunken transition-colors text-left",
|
|
1407
|
-
children: [/* @__PURE__ */
|
|
1407
|
+
children: [/* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
|
|
1408
1408
|
className: "font-medium text-text-primary text-sm",
|
|
1409
1409
|
children: e.name
|
|
1410
|
-
}), /* @__PURE__ */
|
|
1410
|
+
}), /* @__PURE__ */ P("p", {
|
|
1411
1411
|
className: "text-xs text-text-secondary",
|
|
1412
1412
|
children: e.visibility
|
|
1413
|
-
})] }), /* @__PURE__ */
|
|
1413
|
+
})] }), /* @__PURE__ */ P(Re, { className: "w-4 h-4 text-text-secondary" })]
|
|
1414
1414
|
}, e.id))
|
|
1415
1415
|
}),
|
|
1416
|
-
/* @__PURE__ */
|
|
1416
|
+
/* @__PURE__ */ P("div", {
|
|
1417
1417
|
className: "p-4 border-t border-border-default",
|
|
1418
|
-
children: /* @__PURE__ */
|
|
1418
|
+
children: /* @__PURE__ */ P("button", {
|
|
1419
1419
|
onClick: () => o(!1),
|
|
1420
1420
|
className: "w-full px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
|
|
1421
1421
|
children: n("common.close", "Close")
|
|
@@ -1426,9 +1426,9 @@ function rt({ vibeId: t, tr: n, navigate: i }) {
|
|
|
1426
1426
|
})
|
|
1427
1427
|
] });
|
|
1428
1428
|
}
|
|
1429
|
-
function
|
|
1430
|
-
let s = a === "rest", c = "graphiql", l = `${r}/api/profiles/${encodeURIComponent(n)}/${c}/config/${e}`, [u, d] =
|
|
1431
|
-
|
|
1429
|
+
function rt({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type: a, tr: o }) {
|
|
1430
|
+
let s = a === "rest", c = "graphiql", l = `${r}/api/profiles/${encodeURIComponent(n)}/${c}/config/${e}`, [u, d] = D(""), [ee, f] = D(!1), [p, m] = D(!1), [h, g] = D(!1), [te, v] = D(0);
|
|
1431
|
+
w(() => {
|
|
1432
1432
|
let e = { "Content-Type": "application/json" };
|
|
1433
1433
|
i && (e["x-agent-api-key"] = i), fetch(l, { headers: e }).then((e) => e.ok ? e.json() : null).then((e) => {
|
|
1434
1434
|
if (e) {
|
|
@@ -1442,7 +1442,7 @@ function it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1442
1442
|
i,
|
|
1443
1443
|
s
|
|
1444
1444
|
]);
|
|
1445
|
-
let
|
|
1445
|
+
let ne = async () => {
|
|
1446
1446
|
if (u.trim()) {
|
|
1447
1447
|
m(!0), g(!1);
|
|
1448
1448
|
try {
|
|
@@ -1453,72 +1453,72 @@ function it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1453
1453
|
method: "PUT",
|
|
1454
1454
|
headers: e,
|
|
1455
1455
|
body: JSON.stringify(t)
|
|
1456
|
-
}), g(!0),
|
|
1456
|
+
}), g(!0), v((e) => e + 1), setTimeout(() => g(!1), 3e3);
|
|
1457
1457
|
} catch {} finally {
|
|
1458
1458
|
m(!1);
|
|
1459
1459
|
}
|
|
1460
1460
|
}
|
|
1461
|
-
}, [y,
|
|
1461
|
+
}, [y, b] = D(null), [re, x] = D(null), S = T(() => [
|
|
1462
1462
|
`/ui/${c}`,
|
|
1463
1463
|
`/api/profiles/${encodeURIComponent(n)}/${c}`,
|
|
1464
1464
|
`/api/${c}`
|
|
1465
1465
|
], [n, c]);
|
|
1466
|
-
|
|
1466
|
+
w(() => {
|
|
1467
1467
|
if (!t) return;
|
|
1468
1468
|
let e = !1, r = null, i = (a) => {
|
|
1469
|
-
e || (
|
|
1469
|
+
e || (b(a), r = C(t, n, S, a, i, (e) => x(e.message)));
|
|
1470
1470
|
};
|
|
1471
|
-
return
|
|
1472
|
-
e || (
|
|
1471
|
+
return ae(t, n, S).then((a) => {
|
|
1472
|
+
e || (b(a), r = C(t, n, S, a, i, (e) => x(e.message)));
|
|
1473
1473
|
}).catch((t) => {
|
|
1474
|
-
e ||
|
|
1474
|
+
e || x(t instanceof Error ? t.message : String(t));
|
|
1475
1475
|
}), () => {
|
|
1476
1476
|
e = !0, r?.cancel();
|
|
1477
1477
|
};
|
|
1478
1478
|
}, [
|
|
1479
1479
|
t,
|
|
1480
1480
|
n,
|
|
1481
|
-
|
|
1481
|
+
S
|
|
1482
1482
|
]);
|
|
1483
|
-
let
|
|
1484
|
-
return /* @__PURE__ */
|
|
1483
|
+
let oe = `${r}/ui/${c}?vibeId=${e}&profile=${encodeURIComponent(n)}`, se = y ? ie(oe, y.token) : oe;
|
|
1484
|
+
return /* @__PURE__ */ F("div", {
|
|
1485
1485
|
className: "space-y-4",
|
|
1486
|
-
children: [/* @__PURE__ */
|
|
1486
|
+
children: [/* @__PURE__ */ P(_, { children: /* @__PURE__ */ F("div", {
|
|
1487
1487
|
className: "p-4",
|
|
1488
1488
|
children: [
|
|
1489
|
-
/* @__PURE__ */
|
|
1489
|
+
/* @__PURE__ */ F("div", {
|
|
1490
1490
|
className: "flex items-center gap-2 mb-2",
|
|
1491
|
-
children: [
|
|
1491
|
+
children: [P(s ? ke : Fe, { className: "w-5 h-5 text-text-secondary" }), /* @__PURE__ */ P("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__ */ F("div", {
|
|
1497
1497
|
className: "flex items-center gap-2",
|
|
1498
|
-
children: [/* @__PURE__ */
|
|
1498
|
+
children: [/* @__PURE__ */ P("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
|
-
onKeyDown: (e) => e.key === "Enter" &&
|
|
1505
|
-
}), /* @__PURE__ */
|
|
1506
|
-
onClick:
|
|
1504
|
+
onKeyDown: (e) => e.key === "Enter" && ne()
|
|
1505
|
+
}), /* @__PURE__ */ F("button", {
|
|
1506
|
+
onClick: ne,
|
|
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__ */ P(Ne, { className: "w-4 h-4 animate-spin" }) : P(h ? k : we, { 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__ */ P("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__ */ P("div", {
|
|
1518
1518
|
className: "p-8 text-center text-sm text-text-secondary rounded-md border border-border-default bg-bg-sunken",
|
|
1519
|
-
children:
|
|
1520
|
-
}) : /* @__PURE__ */
|
|
1521
|
-
src:
|
|
1519
|
+
children: re ? o("vibeDetails.iframeTokenError", `Iframe token error: ${re}`) : o("vibeDetails.mintingIframeToken", "Authorizing iframe…")
|
|
1520
|
+
}) : /* @__PURE__ */ P("iframe", {
|
|
1521
|
+
src: se,
|
|
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 it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
|
|
|
1527
1527
|
});
|
|
1528
1528
|
}
|
|
1529
1529
|
//#endregion
|
|
1530
|
-
export {
|
|
1530
|
+
export { tt as VibeDetailsPage };
|
|
1531
1531
|
|
|
1532
1532
|
//# sourceMappingURL=VibeDetailsPage.js.map
|