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