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