@burdenoff/microfe-vibecontrols 2026.602.1 → 2026.602.2

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