@burdenoff/microfe-vibecontrols 2026.709.2 → 2026.710.1

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