@burdenoff/microfe-vibecontrols 2026.525.5 → 2026.525.6

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,43 +693,43 @@ 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", {
723
+ }), /* @__PURE__ */ N("div", {
724
724
  className: "p-4 space-y-2",
725
- children: L.map((e) => {
725
+ children: at.map((e) => {
726
726
  let t = U(e.id);
727
- return /* @__PURE__ */ N("label", {
727
+ return /* @__PURE__ */ P("label", {
728
728
  className: "flex items-center justify-between gap-4 py-2 cursor-pointer",
729
- children: [/* @__PURE__ */ M("span", {
729
+ children: [/* @__PURE__ */ N("span", {
730
730
  className: "text-sm font-medium text-text-primary",
731
731
  children: e.label
732
- }), /* @__PURE__ */ M("input", {
732
+ }), /* @__PURE__ */ N("input", {
733
733
  type: "checkbox",
734
734
  role: "switch",
735
735
  "aria-label": e.label,
@@ -768,7 +768,7 @@ function L() {
768
768
  })] })
769
769
  ]
770
770
  }, "config"),
771
- Z === "git" && U("git") && /* @__PURE__ */ M(A.div, {
771
+ Q === "git" && U("git") && /* @__PURE__ */ N(j.div, {
772
772
  initial: {
773
773
  opacity: 0,
774
774
  y: 8
@@ -783,57 +783,57 @@ function L() {
783
783
  },
784
784
  transition: { duration: .2 },
785
785
  className: "space-y-6",
786
- children: /* @__PURE__ */ M(v, {
787
- agentId: K?.id ?? null,
786
+ children: /* @__PURE__ */ N(v, {
787
+ agentId: q?.id ?? null,
788
788
  required: ["@vibecontrols/vibe-plugin-tool-git"],
789
789
  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", {
790
+ eyebrow: O("vibeDetails.gitPluginEyebrow", "Git plugin required"),
791
+ title: O("vibeDetails.gitPluginTitle", "Install the git plugin"),
792
+ description: O("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__ */ P(_, { children: [/* @__PURE__ */ N("div", {
794
794
  className: "p-4 border-b border-border-default",
795
- children: /* @__PURE__ */ N("h3", {
795
+ children: /* @__PURE__ */ P("h3", {
796
796
  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")]
797
+ children: [/* @__PURE__ */ N(Oe, { className: "w-5 h-5" }), O("vibeDetails.gitInformation", "Git Information")]
798
798
  })
799
- }), /* @__PURE__ */ N("div", {
799
+ }), /* @__PURE__ */ P("div", {
800
800
  className: "p-4 space-y-3",
801
- children: [/* @__PURE__ */ N("div", {
801
+ children: [/* @__PURE__ */ P("div", {
802
802
  className: "flex items-center gap-4 flex-wrap",
803
- children: [V.gitBranch && /* @__PURE__ */ N("div", {
803
+ children: [V.gitBranch && /* @__PURE__ */ P("div", {
804
804
  className: "flex items-center gap-2",
805
- children: [/* @__PURE__ */ N("span", {
805
+ children: [/* @__PURE__ */ P("span", {
806
806
  className: "text-sm text-text-secondary",
807
- children: [C("vibeDetails.branch", "Branch"), ":"]
808
- }), /* @__PURE__ */ M("span", {
807
+ children: [O("vibeDetails.branch", "Branch"), ":"]
808
+ }), /* @__PURE__ */ N("span", {
809
809
  className: "px-2 py-1 bg-bg-sunken text-text-primary text-sm rounded font-mono",
810
810
  children: V.gitBranch
811
811
  })]
812
- }), V.gitStatus && /* @__PURE__ */ N("div", {
812
+ }), V.gitStatus && /* @__PURE__ */ P("div", {
813
813
  className: "flex items-center gap-2",
814
- children: [/* @__PURE__ */ N("span", {
814
+ children: [/* @__PURE__ */ P("span", {
815
815
  className: "text-sm text-text-secondary",
816
- children: [C("sessions.filterStatus", "Status"), ":"]
817
- }), /* @__PURE__ */ M("span", {
816
+ children: [O("sessions.filterStatus", "Status"), ":"]
817
+ }), /* @__PURE__ */ N("span", {
818
818
  className: `font-medium ${$t(V.gitStatus)}`,
819
819
  children: V.gitStatus
820
820
  })]
821
821
  })]
822
- }), V.gitRemote && /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ N("span", {
822
+ }), V.gitRemote && /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ P("span", {
823
823
  className: "text-sm text-text-secondary",
824
- children: [C("vibeDetails.remote", "Remote"), ":"]
825
- }), /* @__PURE__ */ M("p", {
824
+ children: [O("vibeDetails.remote", "Remote"), ":"]
825
+ }), /* @__PURE__ */ N("p", {
826
826
  className: "font-mono text-sm text-text-primary mt-1 break-all",
827
827
  children: V.gitRemote
828
828
  })] })]
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")
829
+ })] }) : /* @__PURE__ */ N(h, {
830
+ icon: /* @__PURE__ */ N(Oe, { className: "w-8 h-8 text-text-secondary" }),
831
+ title: O("vibeDetails.noGitInformation", "No git information"),
832
+ description: O("vibeDetails.noGitInformationDescription", "This vibe does not have any git repository linked")
833
833
  })
834
834
  })
835
835
  }, "git"),
836
- Z === "sessions" && U("sessions") && /* @__PURE__ */ M(A.div, {
836
+ Q === "sessions" && U("sessions") && /* @__PURE__ */ N(j.div, {
837
837
  initial: {
838
838
  opacity: 0,
839
839
  y: 8
@@ -847,66 +847,66 @@ function L() {
847
847
  y: -8
848
848
  },
849
849
  transition: { duration: .2 },
850
- children: /* @__PURE__ */ M(v, {
851
- agentId: K?.id ?? null,
850
+ children: /* @__PURE__ */ N(v, {
851
+ agentId: q?.id ?? null,
852
852
  requirements: [{
853
853
  packages: ["@vibecontrols/vibe-plugin-session-manager"],
854
854
  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.")
855
+ eyebrow: O("vibeDetails.sessionsManagerEyebrow", "Session manager required"),
856
+ title: O("vibeDetails.sessionsManagerTitle", "Install the session manager"),
857
+ description: O("vibeDetails.sessionsManagerDescription", "Sessions are orchestrated by the unified session manager plugin. Install it to continue.")
858
858
  }, {
859
859
  packages: ne,
860
860
  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.")
861
+ eyebrow: O("vibeDetails.sessionProviderEyebrow", "Session provider required"),
862
+ title: O("vibeDetails.sessionProviderTitle", "Pick a session provider"),
863
+ description: O("vibeDetails.sessionProviderDescription", "Choose the terminal multiplexer your sessions should run on. You can install more providers later.")
864
864
  }],
865
- children: /* @__PURE__ */ N(_, { children: [/* @__PURE__ */ N("div", {
865
+ children: /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ P("div", {
866
866
  className: "p-4 border-b border-border-default flex items-center justify-between",
867
- children: [/* @__PURE__ */ N("h3", {
867
+ children: [/* @__PURE__ */ P("h3", {
868
868
  className: "font-semibold text-text-primary flex items-center gap-2",
869
869
  children: [
870
- /* @__PURE__ */ M(O, { className: "w-5 h-5" }),
871
- C("nav.sessions", "Sessions"),
870
+ /* @__PURE__ */ N(k, { className: "w-5 h-5" }),
871
+ O("nav.sessions", "Sessions"),
872
872
  " (",
873
873
  G.length,
874
874
  ")"
875
875
  ]
876
- }), /* @__PURE__ */ N("button", {
876
+ }), /* @__PURE__ */ P("button", {
877
877
  onClick: qt,
878
878
  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")]
879
+ children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), O("vibeDetails.new", "New")]
880
880
  })]
881
- }), G.length > 0 ? /* @__PURE__ */ M(Ze, {
881
+ }), G.length > 0 ? /* @__PURE__ */ N(Ye, {
882
882
  className: "divide-y divide-border-primary",
883
- children: G.map((e) => /* @__PURE__ */ M(F, {
883
+ children: G.map((e) => /* @__PURE__ */ N(I, {
884
884
  variant: "fadeRight",
885
- children: /* @__PURE__ */ N("div", {
885
+ children: /* @__PURE__ */ P("div", {
886
886
  onClick: () => Xt(e.id),
887
887
  className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
888
- children: [/* @__PURE__ */ N("div", {
888
+ children: [/* @__PURE__ */ P("div", {
889
889
  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", {
890
+ children: [/* @__PURE__ */ N(k, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
891
891
  className: "min-w-0",
892
- children: [/* @__PURE__ */ M("p", {
892
+ children: [/* @__PURE__ */ N("p", {
893
893
  className: "font-medium text-text-primary truncate",
894
894
  children: e.name
895
- }), /* @__PURE__ */ M("p", {
895
+ }), /* @__PURE__ */ N("p", {
896
896
  className: "text-sm text-text-secondary truncate",
897
897
  children: e.type
898
898
  })]
899
899
  })]
900
- }), /* @__PURE__ */ M(g, { status: e.status })]
900
+ }), /* @__PURE__ */ N(g, { status: e.status })]
901
901
  })
902
902
  }, e.id))
903
- }) : /* @__PURE__ */ M("div", {
903
+ }) : /* @__PURE__ */ N("div", {
904
904
  className: "p-6 text-center text-text-secondary",
905
- children: C("vibeDetails.noSessionsForVibe", "No sessions for this vibe")
905
+ children: O("vibeDetails.noSessionsForVibe", "No sessions for this vibe")
906
906
  })] })
907
907
  })
908
908
  }, "sessions"),
909
- Z === "notes" && U("notes") && /* @__PURE__ */ M(A.div, {
909
+ Q === "notes" && U("notes") && /* @__PURE__ */ N(j.div, {
910
910
  initial: {
911
911
  opacity: 0,
912
912
  y: 8
@@ -921,12 +921,12 @@ function L() {
921
921
  },
922
922
  transition: { duration: .2 },
923
923
  className: "space-y-6",
924
- children: /* @__PURE__ */ M(b, {
924
+ children: /* @__PURE__ */ N(b, {
925
925
  context: "vibe",
926
926
  vibeId: V.id
927
927
  })
928
928
  }, "notes"),
929
- Z === "docs" && U("docs") && /* @__PURE__ */ M(A.div, {
929
+ Q === "docs" && U("docs") && /* @__PURE__ */ N(j.div, {
930
930
  initial: {
931
931
  opacity: 0,
932
932
  y: 8
@@ -941,9 +941,9 @@ function L() {
941
941
  },
942
942
  transition: { duration: .2 },
943
943
  className: "space-y-6",
944
- children: /* @__PURE__ */ M(ue, { vibeId: V.id })
944
+ children: /* @__PURE__ */ N(ue, { vibeId: V.id })
945
945
  }, "docs"),
946
- Z === "scorecard" && U("scorecard") && /* @__PURE__ */ M(A.div, {
946
+ Q === "scorecard" && U("scorecard") && /* @__PURE__ */ N(j.div, {
947
947
  initial: {
948
948
  opacity: 0,
949
949
  y: 8
@@ -958,12 +958,12 @@ function L() {
958
958
  },
959
959
  transition: { duration: .2 },
960
960
  className: "space-y-6",
961
- children: /* @__PURE__ */ M(le, {
961
+ children: /* @__PURE__ */ N(le, {
962
962
  ownerType: "VIBE",
963
963
  ownerId: V.id
964
964
  })
965
965
  }, "scorecard"),
966
- Z === "catalogs" && U("catalogs") && /* @__PURE__ */ M(A.div, {
966
+ Q === "catalogs" && U("catalogs") && /* @__PURE__ */ N(j.div, {
967
967
  initial: {
968
968
  opacity: 0,
969
969
  y: 8
@@ -978,13 +978,13 @@ function L() {
978
978
  },
979
979
  transition: { duration: .2 },
980
980
  className: "space-y-6",
981
- children: /* @__PURE__ */ M(it, {
981
+ children: /* @__PURE__ */ N(rt, {
982
982
  vibeId: V.id,
983
- tr: C,
983
+ tr: O,
984
984
  navigate: S
985
985
  })
986
986
  }, "catalogs"),
987
- Z === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */ M(A.div, {
987
+ Q === "graphqlPlayground" && U("graphqlPlayground") && /* @__PURE__ */ N(j.div, {
988
988
  initial: {
989
989
  opacity: 0,
990
990
  y: 8
@@ -999,37 +999,37 @@ function L() {
999
999
  },
1000
1000
  transition: { duration: .2 },
1001
1001
  className: "space-y-6",
1002
- children: /* @__PURE__ */ M(v, {
1003
- agentId: K?.id ?? null,
1002
+ children: /* @__PURE__ */ N(v, {
1003
+ agentId: q?.id ?? null,
1004
1004
  required: ["@vibecontrols/vibe-plugin-tool-graphiql"],
1005
1005
  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, {
1006
+ eyebrow: O("vibeDetails.graphqlPluginEyebrow", "GraphQL playground plugin required"),
1007
+ title: O("vibeDetails.graphqlPluginTitle", "Install the GraphQL playground"),
1008
+ description: O("vibeDetails.graphqlPluginDescription", "The GraphQL Playground is served by the graphiql agent plugin. Install it to continue."),
1009
+ children: Mt ? /* @__PURE__ */ N(it, {
1010
1010
  vibeId: V.id,
1011
- agentId: K?.id ?? null,
1012
- profile: J,
1013
- tunnelUrl: Nt,
1014
- apiKey: Pt,
1011
+ agentId: q?.id ?? null,
1012
+ profile: Y,
1013
+ tunnelUrl: Mt,
1014
+ apiKey: Nt,
1015
1015
  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.")
1016
+ tr: O
1017
+ }) : /* @__PURE__ */ N(h, {
1018
+ icon: /* @__PURE__ */ N(Ie, { className: "w-8 h-8 text-text-secondary" }),
1019
+ title: O("vibeDetails.noAgentTunnel", "No agent tunnel available"),
1020
+ description: O("vibeDetails.noAgentTunnelDesc2", "The GraphQL playground requires an active agent with a tunnel URL.")
1021
1021
  })
1022
1022
  })
1023
1023
  }, "graphqlPlayground"),
1024
- Z === "gitops" && U("gitops") && /* @__PURE__ */ M(de, {
1024
+ Q === "gitops" && U("gitops") && /* @__PURE__ */ N(de, {
1025
1025
  vibeId: r || "",
1026
- agentId: K?.id ?? "",
1027
- profile: J,
1028
- tunnelUrl: Nt,
1029
- apiKey: Pt,
1030
- tr: C
1026
+ agentId: q?.id ?? "",
1027
+ profile: Y,
1028
+ tunnelUrl: Mt,
1029
+ apiKey: Nt,
1030
+ tr: O
1031
1031
  }),
1032
- Z === "security" && U("security") && /* @__PURE__ */ M(A.div, {
1032
+ Q === "security" && U("security") && /* @__PURE__ */ N(j.div, {
1033
1033
  initial: {
1034
1034
  opacity: 0,
1035
1035
  y: 8
@@ -1044,9 +1044,9 @@ function L() {
1044
1044
  },
1045
1045
  transition: { duration: .2 },
1046
1046
  className: "space-y-6",
1047
- children: /* @__PURE__ */ M(ge, { vibeId: r || "" })
1047
+ children: /* @__PURE__ */ N(ge, { vibeId: r || "" })
1048
1048
  }, "security"),
1049
- Z === "related" && U("related") && /* @__PURE__ */ M(A.div, {
1049
+ Q === "related" && U("related") && /* @__PURE__ */ N(j.div, {
1050
1050
  initial: {
1051
1051
  opacity: 0,
1052
1052
  y: 8
@@ -1061,93 +1061,93 @@ function L() {
1061
1061
  },
1062
1062
  transition: { duration: .2 },
1063
1063
  className: "space-y-6",
1064
- children: nn > 0 ? /* @__PURE__ */ N(j, { children: [
1065
- At.length > 0 && /* @__PURE__ */ N(_, { children: [/* @__PURE__ */ M("div", {
1064
+ children: nn > 0 ? /* @__PURE__ */ P(M, { children: [
1065
+ K.length > 0 && /* @__PURE__ */ P(_, { children: [/* @__PURE__ */ N("div", {
1066
1066
  className: "p-4 border-b border-border-default",
1067
- children: /* @__PURE__ */ N("h3", {
1067
+ children: /* @__PURE__ */ P("h3", {
1068
1068
  className: "font-semibold text-text-primary flex items-center gap-2",
1069
1069
  children: [
1070
- /* @__PURE__ */ M(k, { className: "w-5 h-5" }),
1071
- C("vibeDetails.childVibes", "Child Vibes"),
1070
+ /* @__PURE__ */ N(A, { className: "w-5 h-5" }),
1071
+ O("vibeDetails.childVibes", "Child Vibes"),
1072
1072
  " (",
1073
- At.length,
1073
+ K.length,
1074
1074
  ")"
1075
1075
  ]
1076
1076
  })
1077
- }), /* @__PURE__ */ M(Ze, {
1077
+ }), /* @__PURE__ */ N(Ye, {
1078
1078
  className: "divide-y divide-border-primary",
1079
- children: At.map((e) => /* @__PURE__ */ M(F, {
1079
+ children: K.map((e) => /* @__PURE__ */ N(I, {
1080
1080
  variant: "fadeRight",
1081
- children: /* @__PURE__ */ N("div", {
1081
+ children: /* @__PURE__ */ P("div", {
1082
1082
  onClick: () => Zt(e.id),
1083
1083
  className: "p-4 flex items-center justify-between cursor-pointer hover:bg-bg-sunken/50 transition-colors",
1084
- children: [/* @__PURE__ */ N("div", {
1084
+ children: [/* @__PURE__ */ P("div", {
1085
1085
  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", {
1086
+ children: [/* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ P("div", {
1087
1087
  className: "min-w-0",
1088
- children: [/* @__PURE__ */ M("p", {
1088
+ children: [/* @__PURE__ */ N("p", {
1089
1089
  className: "font-medium text-text-primary truncate",
1090
1090
  children: e.name
1091
- }), /* @__PURE__ */ M("p", {
1091
+ }), /* @__PURE__ */ N("p", {
1092
1092
  className: "text-sm text-text-secondary truncate",
1093
1093
  children: e.type
1094
1094
  })]
1095
1095
  })]
1096
- }), /* @__PURE__ */ M(g, { status: e.status })]
1096
+ }), /* @__PURE__ */ N(g, { status: e.status })]
1097
1097
  })
1098
1098
  }, e.id))
1099
1099
  })] }),
1100
- jt && /* @__PURE__ */ M(_, {
1101
- onClick: () => Zt(jt.id),
1100
+ At && /* @__PURE__ */ N(_, {
1101
+ onClick: () => Zt(At.id),
1102
1102
  hoverable: !0,
1103
- children: /* @__PURE__ */ N("div", {
1103
+ children: /* @__PURE__ */ P("div", {
1104
1104
  className: "p-4 flex items-center gap-3",
1105
- children: [/* @__PURE__ */ M("div", {
1105
+ children: [/* @__PURE__ */ N("div", {
1106
1106
  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", {
1107
+ children: /* @__PURE__ */ N(A, { className: "w-5 h-5 text-text-secondary" })
1108
+ }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
1109
1109
  className: "text-sm text-text-secondary",
1110
- children: C("vibeDetails.parentVibe", "Parent Vibe")
1111
- }), /* @__PURE__ */ M("p", {
1110
+ children: O("vibeDetails.parentVibe", "Parent Vibe")
1111
+ }), /* @__PURE__ */ N("p", {
1112
1112
  className: "font-medium text-text-primary",
1113
- children: jt.name
1113
+ children: At.name
1114
1114
  })] })]
1115
1115
  })
1116
1116
  }),
1117
- q && /* @__PURE__ */ M(_, {
1117
+ J && /* @__PURE__ */ N(_, {
1118
1118
  onClick: Yt,
1119
1119
  hoverable: !0,
1120
- children: /* @__PURE__ */ N("div", {
1120
+ children: /* @__PURE__ */ P("div", {
1121
1121
  className: "p-4 flex items-center justify-between",
1122
- children: [/* @__PURE__ */ N("div", {
1122
+ children: [/* @__PURE__ */ P("div", {
1123
1123
  className: "flex items-center gap-3",
1124
- children: [/* @__PURE__ */ M("div", {
1124
+ children: [/* @__PURE__ */ N("div", {
1125
1125
  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", {
1126
+ children: /* @__PURE__ */ N(Ve, { className: "w-5 h-5 text-text-secondary" })
1127
+ }), /* @__PURE__ */ P("div", { children: [
1128
+ /* @__PURE__ */ N("p", {
1129
1129
  className: "text-sm text-text-secondary",
1130
- children: C("vibeDetails.runningOnAgent", "Running on Agent")
1130
+ children: O("vibeDetails.runningOnAgent", "Running on Agent")
1131
1131
  }),
1132
- /* @__PURE__ */ M("p", {
1132
+ /* @__PURE__ */ N("p", {
1133
1133
  className: "font-medium text-text-primary",
1134
- children: q.name
1134
+ children: J.name
1135
1135
  }),
1136
- /* @__PURE__ */ M("p", {
1136
+ /* @__PURE__ */ N("p", {
1137
1137
  className: "text-sm text-text-secondary",
1138
- children: q.hostname
1138
+ children: J.hostname
1139
1139
  })
1140
1140
  ] })]
1141
- }), /* @__PURE__ */ M(g, { status: q.isActive ? "ACTIVE" : "OFFLINE" })]
1141
+ }), /* @__PURE__ */ N(g, { status: J.isActive ? "ACTIVE" : "OFFLINE" })]
1142
1142
  })
1143
1143
  })
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")
1144
+ ] }) : /* @__PURE__ */ N(h, {
1145
+ icon: /* @__PURE__ */ N(Ne, { className: "w-8 h-8 text-text-secondary" }),
1146
+ title: O("vibeDetails.noRelatedEntities", "No related entities"),
1147
+ description: O("vibeDetails.noRelatedEntitiesDescription", "This vibe has no child vibes, parent vibe, or linked agent")
1148
1148
  })
1149
1149
  }, "related"),
1150
- Z === "llmContext" && /* @__PURE__ */ M(A.div, {
1150
+ Q === "llmContext" && /* @__PURE__ */ N(j.div, {
1151
1151
  initial: {
1152
1152
  opacity: 0,
1153
1153
  y: 8
@@ -1162,7 +1162,7 @@ function L() {
1162
1162
  },
1163
1163
  transition: { duration: .2 },
1164
1164
  className: "space-y-6",
1165
- children: /* @__PURE__ */ M(_e, {
1165
+ children: /* @__PURE__ */ N(_e, {
1166
1166
  vibeId: V.id,
1167
1167
  attachedAgents: W.map((e) => ({
1168
1168
  id: e.id,
@@ -1170,11 +1170,11 @@ function L() {
1170
1170
  }))
1171
1171
  })
1172
1172
  }, "llmContext"),
1173
- Y && (() => {
1174
- let e = X.data.find((e) => e.contribution.id === Z);
1173
+ X && (() => {
1174
+ let e = Z.data.find((e) => e.contribution.id === Q);
1175
1175
  if (!e) return null;
1176
1176
  let t = e.tunnel, n = e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`];
1177
- return /* @__PURE__ */ M(A.div, {
1177
+ return /* @__PURE__ */ N(j.div, {
1178
1178
  initial: {
1179
1179
  opacity: 0,
1180
1180
  y: 8
@@ -1189,14 +1189,14 @@ function L() {
1189
1189
  },
1190
1190
  transition: { duration: .2 },
1191
1191
  className: "space-y-6",
1192
- children: /* @__PURE__ */ M(_, { children: /* @__PURE__ */ M("div", {
1192
+ children: /* @__PURE__ */ N(_, { children: /* @__PURE__ */ N("div", {
1193
1193
  className: "p-0 h-[600px]",
1194
- children: /* @__PURE__ */ M(ce, {
1194
+ children: /* @__PURE__ */ N(ce, {
1195
1195
  contribution: e,
1196
1196
  tunnel: t,
1197
1197
  restPaths: n,
1198
1198
  context: { vibeId: V.id },
1199
- agentId: K?.id ?? "",
1199
+ agentId: q?.id ?? "",
1200
1200
  profile: t.profile,
1201
1201
  theme: {
1202
1202
  colorMode: "light",
@@ -1211,87 +1211,87 @@ function L() {
1211
1211
  })()
1212
1212
  ]
1213
1213
  }),
1214
- Y && K && /* @__PURE__ */ M(se, {
1215
- isOpen: Lt,
1216
- onClose: () => Rt(!1),
1214
+ X && q && /* @__PURE__ */ N(se, {
1215
+ isOpen: It,
1216
+ onClose: () => Lt(!1),
1217
1217
  mountPoint: "vibe.detailTab",
1218
- agentId: K.id,
1219
- profile: J ?? "default",
1218
+ agentId: q.id,
1219
+ profile: Y ?? "default",
1220
1220
  onInstalled: () => {
1221
- X.refetch();
1221
+ Z.refetch();
1222
1222
  }
1223
1223
  }),
1224
- ct && /* @__PURE__ */ M("div", {
1224
+ ct && /* @__PURE__ */ N("div", {
1225
1225
  className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
1226
- children: /* @__PURE__ */ N("div", {
1226
+ children: /* @__PURE__ */ P("div", {
1227
1227
  className: "bg-bg-surface rounded-lg p-6 w-full max-w-lg",
1228
1228
  children: [
1229
- /* @__PURE__ */ N("h2", {
1229
+ /* @__PURE__ */ P("h2", {
1230
1230
  className: "text-lg font-semibold text-text-primary mb-4",
1231
1231
  children: [
1232
- C("vibeDetails.newSessionFor", "New Session for"),
1232
+ O("vibeDetails.newSessionFor", "New Session for"),
1233
1233
  " ",
1234
1234
  V.name
1235
1235
  ]
1236
1236
  }),
1237
- ut && /* @__PURE__ */ M("div", {
1237
+ ut && /* @__PURE__ */ N("div", {
1238
1238
  className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
1239
1239
  children: ut
1240
1240
  }),
1241
- /* @__PURE__ */ N("div", {
1241
+ /* @__PURE__ */ P("div", {
1242
1242
  className: "space-y-4",
1243
1243
  children: [
1244
- /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("label", {
1244
+ /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
1245
1245
  className: "block text-sm font-medium text-text-primary mb-1",
1246
- children: C("vibeDetails.sessionName", "Session Name")
1247
- }), /* @__PURE__ */ M("input", {
1246
+ children: O("vibeDetails.sessionName", "Session Name")
1247
+ }), /* @__PURE__ */ N("input", {
1248
1248
  ref: z,
1249
1249
  type: "text",
1250
- placeholder: C("vibeDetails.sessionNamePlaceholder", "dev-terminal"),
1250
+ placeholder: O("vibeDetails.sessionNamePlaceholder", "dev-terminal"),
1251
1251
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
1252
1252
  })] }),
1253
- /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("label", {
1253
+ /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
1254
1254
  className: "block text-sm font-medium text-text-primary mb-1",
1255
- children: C("sessions.filterType", "Type")
1256
- }), /* @__PURE__ */ N("select", {
1255
+ children: O("sessions.filterType", "Type")
1256
+ }), /* @__PURE__ */ P("select", {
1257
1257
  ref: ht,
1258
1258
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
1259
1259
  children: [
1260
- /* @__PURE__ */ M("option", {
1260
+ /* @__PURE__ */ N("option", {
1261
1261
  value: "TERMINAL",
1262
- children: C("sessions.typeTerminal", "Terminal")
1262
+ children: O("sessions.typeTerminal", "Terminal")
1263
1263
  }),
1264
- /* @__PURE__ */ M("option", {
1264
+ /* @__PURE__ */ N("option", {
1265
1265
  value: "TMUX",
1266
- children: C("sessions.typeTmux", "TMUX")
1266
+ children: O("sessions.typeTmux", "TMUX")
1267
1267
  }),
1268
- /* @__PURE__ */ M("option", {
1268
+ /* @__PURE__ */ N("option", {
1269
1269
  value: "SSH",
1270
- children: C("sessions.typeSsh", "SSH")
1270
+ children: O("sessions.typeSsh", "SSH")
1271
1271
  }),
1272
- /* @__PURE__ */ M("option", {
1272
+ /* @__PURE__ */ N("option", {
1273
1273
  value: "SCRIPT",
1274
- children: C("sessions.typeScript", "Script")
1274
+ children: O("sessions.typeScript", "Script")
1275
1275
  }),
1276
- /* @__PURE__ */ M("option", {
1276
+ /* @__PURE__ */ N("option", {
1277
1277
  value: "CUSTOM",
1278
- children: C("sessions.typeCustom", "Custom")
1278
+ children: O("sessions.typeCustom", "Custom")
1279
1279
  })
1280
1280
  ]
1281
1281
  })] }),
1282
- /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("label", {
1282
+ /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
1283
1283
  className: "block text-sm font-medium text-text-primary mb-1",
1284
- children: C("sessions.command", "Command")
1285
- }), /* @__PURE__ */ M("input", {
1284
+ children: O("sessions.command", "Command")
1285
+ }), /* @__PURE__ */ N("input", {
1286
1286
  ref: gt,
1287
1287
  type: "text",
1288
- placeholder: C("vibeDetails.sessionCommandPlaceholder", "bash"),
1288
+ placeholder: O("vibeDetails.sessionCommandPlaceholder", "bash"),
1289
1289
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
1290
1290
  })] }),
1291
- /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("label", {
1291
+ /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("label", {
1292
1292
  className: "block text-sm font-medium text-text-primary mb-1",
1293
- children: C("vibeDetails.workingDirectory", "Working Directory")
1294
- }), /* @__PURE__ */ M("input", {
1293
+ children: O("vibeDetails.workingDirectory", "Working Directory")
1294
+ }), /* @__PURE__ */ N("input", {
1295
1295
  ref: _t,
1296
1296
  type: "text",
1297
1297
  defaultValue: V.path || "",
@@ -1299,18 +1299,18 @@ function L() {
1299
1299
  })] })
1300
1300
  ]
1301
1301
  }),
1302
- /* @__PURE__ */ N("div", {
1302
+ /* @__PURE__ */ P("div", {
1303
1303
  className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
1304
- children: [/* @__PURE__ */ M("button", {
1304
+ children: [/* @__PURE__ */ N("button", {
1305
1305
  onClick: () => lt(!1),
1306
1306
  disabled: dt,
1307
1307
  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", {
1308
+ children: O("common.cancel", "Cancel")
1309
+ }), /* @__PURE__ */ N("button", {
1310
1310
  onClick: Jt,
1311
1311
  disabled: dt,
1312
1312
  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")
1313
+ children: dt ? O("sessions.creating", "Creating...") : O("sessions.createSession", "Create Session")
1314
1314
  })]
1315
1315
  })
1316
1316
  ]
@@ -1319,7 +1319,7 @@ function L() {
1319
1319
  ]
1320
1320
  });
1321
1321
  }
1322
- function it({ vibeId: t, tr: n, navigate: i }) {
1322
+ function rt({ vibeId: t, tr: n, navigate: i }) {
1323
1323
  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
1324
  await d({ variables: {
1325
1325
  catalogId: e,
@@ -1331,15 +1331,15 @@ function it({ vibeId: t, tr: n, navigate: i }) {
1331
1331
  vibeId: t
1332
1332
  } }), await u();
1333
1333
  };
1334
- return l && f.length === 0 ? /* @__PURE__ */ M(re, { variant: "detail" }) : /* @__PURE__ */ N(j, { children: [
1335
- /* @__PURE__ */ N("div", {
1334
+ return l && f.length === 0 ? /* @__PURE__ */ N(re, { variant: "detail" }) : /* @__PURE__ */ P(M, { children: [
1335
+ /* @__PURE__ */ P("div", {
1336
1336
  className: "flex items-center justify-between",
1337
- children: [/* @__PURE__ */ N("h3", {
1337
+ children: [/* @__PURE__ */ P("h3", {
1338
1338
  className: "font-semibold text-text-primary flex items-center gap-2",
1339
1339
  children: [
1340
- /* @__PURE__ */ M(Fe, { className: "w-5 h-5" }),
1340
+ /* @__PURE__ */ N(Me, { className: "w-5 h-5" }),
1341
1341
  n("vibeDetails.catalogsTitle", "Catalogs"),
1342
- /* @__PURE__ */ N("span", {
1342
+ /* @__PURE__ */ P("span", {
1343
1343
  className: "text-sm font-normal text-text-secondary",
1344
1344
  children: [
1345
1345
  "(",
@@ -1348,41 +1348,41 @@ function it({ vibeId: t, tr: n, navigate: i }) {
1348
1348
  ]
1349
1349
  })
1350
1350
  ]
1351
- }), /* @__PURE__ */ N("button", {
1351
+ }), /* @__PURE__ */ P("button", {
1352
1352
  onClick: () => o(!0),
1353
1353
  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")]
1354
+ children: [/* @__PURE__ */ N(ze, { className: "w-4 h-4" }), n("vibeDetails.addToCatalog", "Add to Catalog")]
1355
1355
  })]
1356
1356
  }),
1357
- p.length > 0 ? /* @__PURE__ */ M("div", {
1357
+ p.length > 0 ? /* @__PURE__ */ N("div", {
1358
1358
  className: "space-y-2",
1359
- children: p.map((e) => /* @__PURE__ */ M(_, { children: /* @__PURE__ */ N("div", {
1359
+ children: p.map((e) => /* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
1360
1360
  className: "p-3 flex items-center justify-between",
1361
- children: [/* @__PURE__ */ N("button", {
1361
+ children: [/* @__PURE__ */ P("button", {
1362
1362
  onClick: () => i(`/catalogs/${e.id}`),
1363
1363
  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", {
1364
+ children: [/* @__PURE__ */ N(Me, { className: "w-5 h-5 text-action-primary-bg flex-shrink-0" }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
1365
1365
  className: "font-medium text-text-primary text-sm",
1366
1366
  children: e.name
1367
- }), /* @__PURE__ */ M("p", {
1367
+ }), /* @__PURE__ */ N("p", {
1368
1368
  className: "text-xs text-text-secondary",
1369
1369
  children: e.visibility
1370
1370
  })] })]
1371
- }), /* @__PURE__ */ M("button", {
1371
+ }), /* @__PURE__ */ N("button", {
1372
1372
  onClick: () => te(e.id),
1373
1373
  className: "p-1.5 text-text-muted hover:text-status-error-text hover:bg-status-error-bg rounded-md transition-colors",
1374
1374
  title: n("vibeDetails.removeFromCatalog", "Remove from catalog"),
1375
- children: /* @__PURE__ */ M(Je, { className: "w-4 h-4" })
1375
+ children: /* @__PURE__ */ N(Ke, { className: "w-4 h-4" })
1376
1376
  })]
1377
1377
  }) }, e.id))
1378
- }) : /* @__PURE__ */ M(h, {
1379
- icon: /* @__PURE__ */ M(Fe, { className: "w-8 h-8 text-text-secondary" }),
1378
+ }) : /* @__PURE__ */ N(h, {
1379
+ icon: /* @__PURE__ */ N(Me, { className: "w-8 h-8 text-text-secondary" }),
1380
1380
  title: n("vibeDetails.noCatalogs", "Not in any catalogs"),
1381
1381
  description: n("vibeDetails.noCatalogsDesc", "Add this vibe to catalogs to organize and track it alongside other components")
1382
1382
  }),
1383
- a && /* @__PURE__ */ M("div", {
1383
+ a && /* @__PURE__ */ N("div", {
1384
1384
  className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
1385
- children: /* @__PURE__ */ N(A.div, {
1385
+ children: /* @__PURE__ */ P(j.div, {
1386
1386
  initial: {
1387
1387
  opacity: 0,
1388
1388
  scale: .95
@@ -1393,33 +1393,33 @@ function it({ vibeId: t, tr: n, navigate: i }) {
1393
1393
  },
1394
1394
  className: "bg-bg-surface rounded-lg w-full max-w-md max-h-[60vh] flex flex-col",
1395
1395
  children: [
1396
- /* @__PURE__ */ M("div", {
1396
+ /* @__PURE__ */ N("div", {
1397
1397
  className: "p-4 border-b border-border-default",
1398
- children: /* @__PURE__ */ M("h2", {
1398
+ children: /* @__PURE__ */ N("h2", {
1399
1399
  className: "text-lg font-semibold text-text-primary",
1400
1400
  children: n("vibeDetails.addToCatalogTitle", "Add Vibe to Catalog")
1401
1401
  })
1402
1402
  }),
1403
- /* @__PURE__ */ M("div", {
1403
+ /* @__PURE__ */ N("div", {
1404
1404
  className: "flex-1 overflow-y-auto p-2",
1405
- children: m.length === 0 ? /* @__PURE__ */ M("div", {
1405
+ children: m.length === 0 ? /* @__PURE__ */ N("div", {
1406
1406
  className: "p-4 text-center text-text-secondary text-sm",
1407
1407
  children: n("vibeDetails.noAvailableCatalogs", "No available catalogs. This vibe is already in all catalogs.")
1408
- }) : m.map((e) => /* @__PURE__ */ N("button", {
1408
+ }) : m.map((e) => /* @__PURE__ */ P("button", {
1409
1409
  onClick: () => g(e.id),
1410
1410
  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", {
1411
+ children: [/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
1412
1412
  className: "font-medium text-text-primary text-sm",
1413
1413
  children: e.name
1414
- }), /* @__PURE__ */ M("p", {
1414
+ }), /* @__PURE__ */ N("p", {
1415
1415
  className: "text-xs text-text-secondary",
1416
1416
  children: e.visibility
1417
- })] }), /* @__PURE__ */ M(D, { className: "w-4 h-4 text-text-secondary" })]
1417
+ })] }), /* @__PURE__ */ N(ze, { className: "w-4 h-4 text-text-secondary" })]
1418
1418
  }, e.id))
1419
1419
  }),
1420
- /* @__PURE__ */ M("div", {
1420
+ /* @__PURE__ */ N("div", {
1421
1421
  className: "p-4 border-t border-border-default",
1422
- children: /* @__PURE__ */ M("button", {
1422
+ children: /* @__PURE__ */ N("button", {
1423
1423
  onClick: () => o(!1),
1424
1424
  className: "w-full px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
1425
1425
  children: n("common.close", "Close")
@@ -1430,9 +1430,9 @@ function it({ vibeId: t, tr: n, navigate: i }) {
1430
1430
  })
1431
1431
  ] });
1432
1432
  }
1433
- function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type: a, tr: o }) {
1433
+ function it({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type: a, tr: o }) {
1434
1434
  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(() => {
1435
+ C(() => {
1436
1436
  let e = { "Content-Type": "application/json" };
1437
1437
  i && (e["x-agent-api-key"] = i), fetch(l, { headers: e }).then((e) => e.ok ? e.json() : null).then((e) => {
1438
1438
  if (e) {
@@ -1462,14 +1462,18 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
1462
1462
  m(!1);
1463
1463
  }
1464
1464
  }
1465
- }, [y, re] = E(null), [ie, b] = E(null), x = `/ui/${c}`;
1466
- w(() => {
1465
+ }, [y, re] = E(null), [ie, b] = E(null), x = w(() => [
1466
+ `/ui/${c}`,
1467
+ `/api/profiles/${encodeURIComponent(n)}/${c}`,
1468
+ `/api/${c}`
1469
+ ], [n, c]);
1470
+ C(() => {
1467
1471
  if (!t) return;
1468
1472
  let e = !1, r = null, i = (a) => {
1469
- e || (re(a), r = C(t, n, x, a, i, (e) => b(e.message)));
1473
+ e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
1470
1474
  };
1471
- return S(t, n, x).then((a) => {
1472
- e || (re(a), r = C(t, n, x, a, i, (e) => b(e.message)));
1475
+ return oe(t, n, x).then((a) => {
1476
+ e || (re(a), r = S(t, n, x, a, i, (e) => b(e.message)));
1473
1477
  }).catch((t) => {
1474
1478
  e || b(t instanceof Error ? t.message : String(t));
1475
1479
  }), () => {
@@ -1480,45 +1484,45 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
1480
1484
  n,
1481
1485
  x
1482
1486
  ]);
1483
- let oe = `${r}/ui/${c}?vibeId=${e}`, se = y ? ae(oe, y.token) : oe;
1484
- return /* @__PURE__ */ N("div", {
1487
+ let se = `${r}/ui/${c}?vibeId=${e}&profile=${encodeURIComponent(n)}`, ce = y ? ae(se, y.token) : se;
1488
+ return /* @__PURE__ */ P("div", {
1485
1489
  className: "space-y-4",
1486
- children: [/* @__PURE__ */ M(_, { children: /* @__PURE__ */ N("div", {
1490
+ children: [/* @__PURE__ */ N(_, { children: /* @__PURE__ */ P("div", {
1487
1491
  className: "p-4",
1488
1492
  children: [
1489
- /* @__PURE__ */ N("div", {
1493
+ /* @__PURE__ */ P("div", {
1490
1494
  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", {
1495
+ children: [N(s ? Ae : Ie, { className: "w-5 h-5 text-text-secondary" }), /* @__PURE__ */ N("h3", {
1492
1496
  className: "font-semibold text-text-primary",
1493
1497
  children: s ? o("vibeDetails.restPlaygroundTitle", "REST API Playground") : o("vibeDetails.graphqlPlaygroundTitle", "GraphQL Playground")
1494
1498
  })]
1495
1499
  }),
1496
- /* @__PURE__ */ N("div", {
1500
+ /* @__PURE__ */ P("div", {
1497
1501
  className: "flex items-center gap-2",
1498
- children: [/* @__PURE__ */ M("input", {
1502
+ children: [/* @__PURE__ */ N("input", {
1499
1503
  type: "url",
1500
1504
  value: u,
1501
1505
  onChange: (e) => d(e.target.value),
1502
1506
  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
1507
  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
1508
  onKeyDown: (e) => e.key === "Enter" && v()
1505
- }), /* @__PURE__ */ N("button", {
1509
+ }), /* @__PURE__ */ P("button", {
1506
1510
  onClick: v,
1507
1511
  disabled: p || !u.trim(),
1508
1512
  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")]
1513
+ 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
1514
  })]
1511
1515
  }),
1512
- !ee && /* @__PURE__ */ M("p", {
1516
+ !ee && /* @__PURE__ */ N("p", {
1513
1517
  className: "text-xs text-text-muted mt-1",
1514
1518
  children: o("vibeDetails.loadingConfig", "Loading saved configuration...")
1515
1519
  })
1516
1520
  ]
1517
- }) }), t && !y ? /* @__PURE__ */ M("div", {
1521
+ }) }), t && !y ? /* @__PURE__ */ N("div", {
1518
1522
  className: "p-8 text-center text-sm text-text-secondary rounded-md border border-border-default bg-bg-sunken",
1519
1523
  children: ie ? o("vibeDetails.iframeTokenError", `Iframe token error: ${ie}`) : o("vibeDetails.mintingIframeToken", "Authorizing iframe…")
1520
- }) : /* @__PURE__ */ M("iframe", {
1521
- src: se,
1524
+ }) : /* @__PURE__ */ N("iframe", {
1525
+ src: ce,
1522
1526
  title: s ? "REST API Playground" : "GraphQL Playground",
1523
1527
  className: "w-full rounded-md border border-border-default bg-bg-sunken",
1524
1528
  style: { height: "700px" },
@@ -1527,6 +1531,6 @@ function at({ vibeId: e, agentId: t, profile: n, tunnelUrl: r, apiKey: i, type:
1527
1531
  });
1528
1532
  }
1529
1533
  //#endregion
1530
- export { L as VibeDetailsPage };
1534
+ export { nt as VibeDetailsPage };
1531
1535
 
1532
1536
  //# sourceMappingURL=VibeDetailsPage.js.map