@burdenoff/microfe-vibecontrols 2026.525.5 → 2026.525.7

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