@burdenoff/microfe-vibecontrols 2026.528.1 → 2026.528.2

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