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