@burdenoff/microfe-vibecontrols 2026.601.20 → 2026.601.21

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