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