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