@burdenoff/microfe-vibecontrols 2026.601.21 → 2026.601.23

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