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