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