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