@burdenoff/microfe-vibecontrols 2026.625.3 → 2026.626.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/components/agents/AgentForm.js +129 -127
  2. package/dist/components/agents/AgentForm.js.map +1 -1
  3. package/dist/components/shared/InstallTabs.js +19 -7
  4. package/dist/components/shared/InstallTabs.js.map +1 -1
  5. package/dist/pages/ActionsPage.js +209 -204
  6. package/dist/pages/ActionsPage.js.map +1 -1
  7. package/dist/pages/AgentDetailsPage.js +678 -648
  8. package/dist/pages/AgentDetailsPage.js.map +1 -1
  9. package/dist/pages/AgentGraphPage.js +112 -108
  10. package/dist/pages/AgentGraphPage.js.map +1 -1
  11. package/dist/pages/AgentsPage.js +159 -155
  12. package/dist/pages/AgentsPage.js.map +1 -1
  13. package/dist/pages/AnalyticsPage.js +140 -136
  14. package/dist/pages/AnalyticsPage.js.map +1 -1
  15. package/dist/pages/CatalogDetailPage.js +249 -244
  16. package/dist/pages/CatalogDetailPage.js.map +1 -1
  17. package/dist/pages/CatalogPage.js +73 -68
  18. package/dist/pages/CatalogPage.js.map +1 -1
  19. package/dist/pages/ComponentDetailPage.js +195 -164
  20. package/dist/pages/ComponentDetailPage.js.map +1 -1
  21. package/dist/pages/ComponentsPage.js +80 -75
  22. package/dist/pages/ComponentsPage.js.map +1 -1
  23. package/dist/pages/EnvTopologyPage.js +100 -95
  24. package/dist/pages/EnvTopologyPage.js.map +1 -1
  25. package/dist/pages/HealthPage.js +331 -204
  26. package/dist/pages/HealthPage.js.map +1 -1
  27. package/dist/pages/LogsPage.js +54 -49
  28. package/dist/pages/LogsPage.js.map +1 -1
  29. package/dist/pages/OverviewPage.js +159 -129
  30. package/dist/pages/OverviewPage.js.map +1 -1
  31. package/dist/pages/PluginsCatalogPage.js +72 -78
  32. package/dist/pages/PluginsCatalogPage.js.map +1 -1
  33. package/dist/pages/SessionDetailsPage.js +517 -512
  34. package/dist/pages/SessionDetailsPage.js.map +1 -1
  35. package/dist/pages/SessionsPage.js +1084 -1079
  36. package/dist/pages/SessionsPage.js.map +1 -1
  37. package/dist/pages/SettingsPage.js +107 -103
  38. package/dist/pages/SettingsPage.js.map +1 -1
  39. package/dist/pages/TargetDetailsPage.js +131 -123
  40. package/dist/pages/TargetDetailsPage.js.map +1 -1
  41. package/dist/pages/TargetsPage.js +198 -194
  42. package/dist/pages/TargetsPage.js.map +1 -1
  43. package/dist/pages/TemplatesPage.js +77 -71
  44. package/dist/pages/TemplatesPage.js.map +1 -1
  45. package/dist/pages/VibeAuditPage.js +83 -78
  46. package/dist/pages/VibeAuditPage.js.map +1 -1
  47. package/dist/pages/VibeCalendarPage.js +109 -104
  48. package/dist/pages/VibeCalendarPage.js.map +1 -1
  49. package/dist/pages/VibeDeckPage.js +222 -217
  50. package/dist/pages/VibeDeckPage.js.map +1 -1
  51. package/dist/pages/VibeDetailsPage.js +532 -501
  52. package/dist/pages/VibeDetailsPage.js.map +1 -1
  53. package/dist/pages/VibesPage.js +137 -133
  54. package/dist/pages/VibesPage.js.map +1 -1
  55. package/dist/pages/WebhooksPage.js +329 -324
  56. package/dist/pages/WebhooksPage.js.map +1 -1
  57. package/dist/pages/ai/AIPage.js +149 -144
  58. package/dist/pages/ai/AIPage.js.map +1 -1
  59. package/package.json +2 -2
@@ -5,71 +5,72 @@ import { isQuotaExhaustedError as o, markQuotaHandledLocally as le } from "../ut
5
5
  import { useVibeControls as ue, useVibeNavigate as de } from "../providers/VibeControlsProvider.js";
6
6
  import { useVibeControlsStore as fe } from "../store/vibeControlsStore.js";
7
7
  import { PageHeader as pe } from "../components/shared/PageHeader.js";
8
- import { LoadingState as s } from "../components/shared/LoadingState.js";
9
- import { ErrorState as me } from "../components/shared/ErrorState.js";
10
- import { VibeEntityType as he } from "../generated/wspace-types.js";
11
- import { EntityTagPicker as ge } from "../components/shared/EntityTagPicker.js";
12
- import { useDraftEntityTags as _e } from "../hooks/useDraftEntityTags.js";
13
- import { EmptyState as ve } from "../components/shared/EmptyState.js";
14
- import { EnableRemoteTaskDialog as ye } from "../components/shared/EnableRemoteTaskDialog.js";
15
- import { LINK_TO_VIBE_DEFAULT as be, LinkToVibePanel as xe, linkToVibeInput as Se } from "../components/shared/LinkToVibePanel.js";
16
- import { EntityVibeLinkControl as Ce } from "../components/shared/EntityVibeLinkControl.js";
17
- import { GetHelpButton as we } from "../components/shared/GetHelpButton.js";
18
- import { SelectionCheckbox as Te } from "../components/shared/SelectionCheckbox.js";
19
- import { useActiveAgentProfile as Ee } from "../hooks/useActiveAgentProfile.js";
8
+ import { LoadingState as me } from "../components/shared/LoadingState.js";
9
+ import { ErrorState as he } from "../components/shared/ErrorState.js";
10
+ import { VibeEntityType as ge } from "../generated/wspace-types.js";
11
+ import { EntityTagPicker as _e } from "../components/shared/EntityTagPicker.js";
12
+ import { useDraftEntityTags as ve } from "../hooks/useDraftEntityTags.js";
13
+ import { EmptyState as ye } from "../components/shared/EmptyState.js";
14
+ import { EnableRemoteTaskDialog as be } from "../components/shared/EnableRemoteTaskDialog.js";
15
+ import { LINK_TO_VIBE_DEFAULT as xe, LinkToVibePanel as Se, linkToVibeInput as Ce } from "../components/shared/LinkToVibePanel.js";
16
+ import { EntityVibeLinkControl as we } from "../components/shared/EntityVibeLinkControl.js";
17
+ import { GetHelpButton as Te } from "../components/shared/GetHelpButton.js";
18
+ import { SelectionCheckbox as Ee } from "../components/shared/SelectionCheckbox.js";
19
+ import { useActiveAgentProfile as De } from "../hooks/useActiveAgentProfile.js";
20
20
  import "../components/shared/index.js";
21
- import { isNative as De, nativeNotify as Oe } from "../utils/nativeBridge.js";
22
- import { VIBE_PERMISSIONS as c } from "../constants/permissions.js";
23
- import { EntityShareButton as ke } from "../components/sharing/EntityShareButton.js";
21
+ import { isNative as Oe, nativeNotify as ke } from "../utils/nativeBridge.js";
22
+ import { VIBE_PERMISSIONS as s } from "../constants/permissions.js";
23
+ import { EntityShareButton as Ae } from "../components/sharing/EntityShareButton.js";
24
24
  import "../components/sharing/index.js";
25
- import { enableRemoteTaskExecution as Ae, isRemoteTaskDeniedError as je } from "../services/agentRemoteTaskGates.js";
26
- import { VibeDeckGrid as Me } from "../components/vibedeck/VibeDeckGrid.js";
27
- import { VibeDeckSwitcher as Ne } from "../components/vibedeck/VibeDeckSwitcher.js";
28
- import { VibeDeckForm as Pe } from "../components/vibedeck/VibeDeckForm.js";
29
- import { VibeDeckButtonForm as Fe } from "../components/vibedeck/VibeDeckButtonForm.js";
30
- import { VibeDeckShareDialog as Ie } from "../components/vibedeck/VibeDeckShareDialog.js";
31
- import { VibeDeckPublicLinkPanel as Le } from "../components/vibedeck/VibeDeckPublicLinkPanel.js";
32
- import { VibeDeckExecutionLog as Re } from "../components/vibedeck/VibeDeckExecutionLog.js";
25
+ import { enableRemoteTaskExecution as je, isRemoteTaskDeniedError as Me } from "../services/agentRemoteTaskGates.js";
26
+ import { VibeDeckGrid as Ne } from "../components/vibedeck/VibeDeckGrid.js";
27
+ import { VibeDeckSwitcher as Pe } from "../components/vibedeck/VibeDeckSwitcher.js";
28
+ import { VibeDeckForm as Fe } from "../components/vibedeck/VibeDeckForm.js";
29
+ import { VibeDeckButtonForm as Ie } from "../components/vibedeck/VibeDeckButtonForm.js";
30
+ import { VibeDeckShareDialog as Le } from "../components/vibedeck/VibeDeckShareDialog.js";
31
+ import { VibeDeckPublicLinkPanel as Re } from "../components/vibedeck/VibeDeckPublicLinkPanel.js";
32
+ import { VibeDeckExecutionLog as ze } from "../components/vibedeck/VibeDeckExecutionLog.js";
33
33
  import "../components/vibedeck/index.js";
34
- import { useCallback as l, useEffect as ze, useMemo as Be, useRef as Ve, useState as u } from "react";
34
+ import { useCallback as c, useEffect as l, useMemo as Be, useRef as Ve, useState as u } from "react";
35
35
  import { useI18n as He } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
36
- import { Copy as Ue, Eye as We, Link2 as Ge, Pencil as Ke, Play as qe, RefreshCw as Je, Star as Ye, Trash2 as Xe } from "lucide-react";
37
- import { usePermissions as Ze } from "@burdenoff/fe-libs/shared/providers/shell";
38
- import { AnimatePresence as Qe } from "framer-motion";
36
+ import { Copy as Ue, Eye as We, LayoutGrid as Ge, Link2 as Ke, Pencil as qe, Play as Je, RefreshCw as Ye, Star as Xe, Trash2 as Ze } from "lucide-react";
37
+ import { usePermissions as Qe } from "@burdenoff/fe-libs/shared/providers/shell";
38
+ import { AnimatePresence as $e } from "framer-motion";
39
39
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
40
- import { useEventBus as $e } from "@burdenoff/fe-libs/shared/events";
41
- import { AccessDenied as et } from "@burdenoff/fe-libs/shared/components";
40
+ import { PagePurpose as et } from "@burdenoff/fe-libs/ui";
41
+ import { useEventBus as tt } from "@burdenoff/fe-libs/shared/events";
42
+ import { AccessDenied as nt } from "@burdenoff/fe-libs/shared/components";
42
43
  import { MotionPage as p } from "@burdenoff/fe-libs/shared/motion";
43
44
  //#region src/pages/VibeDeckPage.tsx
44
- function tt() {
45
- let tt = de(), { workspaceId: m } = ue(), h = $e(), { hasPermission: g, isLoading: nt, permissions: _ } = Ze(), v = ((e) => (t, n) => {
45
+ function rt() {
46
+ let rt = de(), { workspaceId: m } = ue(), h = tt(), { hasPermission: g, isLoading: it, permissions: _ } = Qe(), v = ((e) => (t, n) => {
46
47
  let r = e.t(t);
47
48
  return r === t ? n : r;
48
- })(He()), y = (Array.isArray(_) ? _ : _?.permissionStrings)?.some?.((e) => e.startsWith("vibedeck:")), rt = y ? g(c.VIBEDECK_LIST) : !0, it = y ? g(c.VIBEDECK_CREATE) : !0, at = y ? g(c.VIBEDECK_UPDATE) : !0, ot = y ? g(c.VIBEDECK_DELETE) : !0, st = y ? g(c.VIBEDECK_EXECUTE) : !0, ct = nt, { activeVibeDeckId: b, setActiveVibeDeckId: x, vibeDeckMode: lt, setVibeDeckMode: ut } = fe(), S = lt === "preview", dt = S ? !1 : it, ft = S ? !1 : at, pt = S ? !1 : ot, [C, w] = u({ type: "none" }), [mt, ht] = u(null), [T, gt] = u(/* @__PURE__ */ new Set()), [E, D] = u(/* @__PURE__ */ new Set()), [_t, vt] = u(null), [yt, O] = u(null), [k, A] = u(null), [bt, xt] = u([]), j = Ve(/* @__PURE__ */ new Map()), [St, Ct] = u(be), [wt, Tt] = u([]), [Et, Dt] = u(!0), [Ot, kt] = u(/* @__PURE__ */ new Map()), [At, jt] = u(null), [M, Mt] = u(null), [Nt, Pt] = u(!1), { profiles: Ft } = Ee(M?.agentId ?? null), It = Ft.find((e) => e.isDefault)?.name ?? "default", N = Ve(/* @__PURE__ */ new Map());
49
- ze(() => {
49
+ })(He()), y = (Array.isArray(_) ? _ : _?.permissionStrings)?.some?.((e) => e.startsWith("vibedeck:")), at = y ? g(s.VIBEDECK_LIST) : !0, ot = y ? g(s.VIBEDECK_CREATE) : !0, st = y ? g(s.VIBEDECK_UPDATE) : !0, ct = y ? g(s.VIBEDECK_DELETE) : !0, lt = y ? g(s.VIBEDECK_EXECUTE) : !0, ut = it, { activeVibeDeckId: b, setActiveVibeDeckId: x, vibeDeckMode: dt, setVibeDeckMode: ft } = fe(), S = dt === "preview", pt = S ? !1 : ot, mt = S ? !1 : st, ht = S ? !1 : ct, [C, w] = u({ type: "none" }), [gt, _t] = u(null), [T, vt] = u(/* @__PURE__ */ new Set()), [E, D] = u(/* @__PURE__ */ new Set()), [yt, bt] = u(null), [xt, O] = u(null), [k, A] = u(null), [St, Ct] = u([]), j = Ve(/* @__PURE__ */ new Map()), [wt, Tt] = u(xe), [Et, Dt] = u([]), [Ot, kt] = u(!0), [At, jt] = u(/* @__PURE__ */ new Map()), [Mt, Nt] = u(null), [M, Pt] = u(null), [Ft, It] = u(!1), { profiles: Lt } = De(M?.agentId ?? null), Rt = Lt.find((e) => e.isDefault)?.name ?? "default", N = Ve(/* @__PURE__ */ new Map());
50
+ l(() => {
50
51
  let e = N.current;
51
52
  return () => {
52
53
  for (let t of e.values()) clearTimeout(t);
53
54
  };
54
55
  }, []);
55
- let Lt = l((e) => {
56
+ let zt = c((e) => {
56
57
  let t = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, n = {
57
58
  ...e,
58
59
  id: t
59
60
  };
60
- return Tt((e) => [...e.slice(-49), n]), t;
61
- }, []), P = l((e, t) => {
62
- Tt((n) => n.map((n) => n.id === e ? {
61
+ return Dt((e) => [...e.slice(-49), n]), t;
62
+ }, []), P = c((e, t) => {
63
+ Dt((n) => n.map((n) => n.id === e ? {
63
64
  ...n,
64
65
  ...t
65
66
  } : n));
66
- }, []), F = l((e, t) => {
67
- if (kt((n) => {
67
+ }, []), F = c((e, t) => {
68
+ if (jt((n) => {
68
69
  let r = new Map(n);
69
70
  return r.set(e, t), r;
70
71
  }), t === "success" || t === "error") {
71
72
  let n = setTimeout(() => {
72
- kt((n) => {
73
+ jt((n) => {
73
74
  let r = new Map(n);
74
75
  return r.get(e) === t && r.delete(e), r;
75
76
  }), N.current.delete(e);
@@ -77,92 +78,92 @@ function tt() {
77
78
  r && clearTimeout(r), N.current.set(e, n);
78
79
  }
79
80
  }, []);
80
- ze(() => {
81
+ l(() => {
81
82
  let e = j.current;
82
83
  return () => {
83
84
  for (let t of e.values()) clearTimeout(t);
84
85
  };
85
86
  }, []);
86
- let I = l((e, t, n, r) => {
87
+ let I = c((e, t, n, r) => {
87
88
  let i = Date.now() + Math.random();
88
- xt((r) => [...r, {
89
+ Ct((r) => [...r, {
89
90
  message: e,
90
91
  variant: t,
91
92
  detail: n,
92
93
  id: i
93
94
  }]);
94
95
  let ee = setTimeout(() => {
95
- xt((e) => e.filter((e) => e.id !== i)), j.current.delete(i);
96
+ Ct((e) => e.filter((e) => e.id !== i)), j.current.delete(i);
96
97
  }, r ?? (t === "success" ? 1e4 : 3e4));
97
98
  j.current.set(i, ee);
98
- }, []), Rt = l((e) => {
99
- xt((t) => t.filter((t) => t.id !== e));
99
+ }, []), Bt = c((e) => {
100
+ Ct((t) => t.filter((t) => t.id !== e));
100
101
  let t = j.current.get(e);
101
102
  t && (clearTimeout(t), j.current.delete(e));
102
- }, []), L = l((e, t) => {
103
- le(), jt({
103
+ }, []), L = c((e, t) => {
104
+ le(), Nt({
104
105
  title: e,
105
106
  message: t
106
107
  });
107
- }, []), { data: zt, loading: Bt, error: Vt, refetch: R } = re({
108
+ }, []), { data: Vt, loading: Ht, error: Ut, refetch: R } = re({
108
109
  variables: { pagination: { limit: 50 } },
109
- skip: ct
110
- }), z = Be(() => zt?.vibeDecks?.items || [], [zt]), B = b || z.find((e) => e.isDefault)?.id || z[0]?.id || null, { data: Ht, loading: Ut, refetch: Wt } = te({
110
+ skip: ut
111
+ }), z = Be(() => Vt?.vibeDecks?.items || [], [Vt]), B = b || z.find((e) => e.isDefault)?.id || z[0]?.id || null, { data: Wt, loading: Gt, refetch: Kt } = te({
111
112
  variables: { id: B },
112
- skip: !B || ct
113
- }), V = Ht?.vibeDeck, H = Be(() => z.filter((e) => T.has(e.id)), [z, T]), U = Be(() => V?.buttons?.filter((e) => E.has(e.id)) ?? [], [V?.buttons, E]), Gt = z.length > 0 && z.every((e) => T.has(e.id)), Kt = z.some((e) => T.has(e.id)) && !Gt, qt = (V?.buttons?.length ?? 0) > 0 && (V?.buttons ?? []).every((e) => E.has(e.id)), Jt = (V?.buttons ?? []).some((e) => E.has(e.id)) && !qt, { data: Yt } = ne({
113
+ skip: !B || ut
114
+ }), V = Wt?.vibeDeck, H = Be(() => z.filter((e) => T.has(e.id)), [z, T]), U = Be(() => V?.buttons?.filter((e) => E.has(e.id)) ?? [], [V?.buttons, E]), qt = z.length > 0 && z.every((e) => T.has(e.id)), Jt = z.some((e) => T.has(e.id)) && !qt, Yt = (V?.buttons?.length ?? 0) > 0 && (V?.buttons ?? []).every((e) => E.has(e.id)), Xt = (V?.buttons ?? []).some((e) => E.has(e.id)) && !Yt, { data: Zt } = ne({
114
115
  variables: { pagination: { limit: 100 } },
115
116
  fetchPolicy: "cache-and-network",
116
- skip: ct
117
- }), Xt = (Yt?.vibecontrolsAgents ?? []).map((e) => ({
117
+ skip: ut
118
+ }), Qt = (Zt?.vibecontrolsAgents ?? []).map((e) => ({
118
119
  id: e.id,
119
120
  name: e.name,
120
121
  isActive: e.isActive
121
- })), [Zt, { loading: Qt }] = t({ refetchQueries: ["ListVibeDecks"] }), { setDraftTagIds: $t, flushTags: en } = _e("VIBECONTROLS_VIBEDECK"), [tn, { loading: nn }] = se({ refetchQueries: ["ListVibeDecks", "GetVibeDeck"] }), [W] = r({ refetchQueries: ["ListVibeDecks"] }), [G] = ae({ refetchQueries: ["ListVibeDecks", "GetVibeDeck"] }), [K] = i({ refetchQueries: ["ListVibeDecks"] }), [rn, { loading: an }] = e({ refetchQueries: ["GetVibeDeck"] }), [on, { loading: sn }] = oe({ refetchQueries: ["GetVibeDeck"] }), [q] = n({ refetchQueries: ["GetVibeDeck"] }), [cn] = ie({ refetchQueries: ["GetVibeDeck"] }), [J] = ee();
122
- ze(() => {
122
+ })), [$t, { loading: en }] = t({ refetchQueries: ["ListVibeDecks"] }), { setDraftTagIds: tn, flushTags: nn } = ve("VIBECONTROLS_VIBEDECK"), [rn, { loading: an }] = se({ refetchQueries: ["ListVibeDecks", "GetVibeDeck"] }), [W] = r({ refetchQueries: ["ListVibeDecks"] }), [G] = ae({ refetchQueries: ["ListVibeDecks", "GetVibeDeck"] }), [K] = i({ refetchQueries: ["ListVibeDecks"] }), [on, { loading: sn }] = e({ refetchQueries: ["GetVibeDeck"] }), [cn, { loading: ln }] = oe({ refetchQueries: ["GetVibeDeck"] }), [q] = n({ refetchQueries: ["GetVibeDeck"] }), [un] = ie({ refetchQueries: ["GetVibeDeck"] }), [J] = ee();
123
+ l(() => {
123
124
  D(/* @__PURE__ */ new Set());
124
125
  }, [B]);
125
- let ln = l((e, t) => {
126
- gt((n) => {
126
+ let dn = c((e, t) => {
127
+ vt((n) => {
127
128
  let r = new Set(n);
128
129
  return t ? r.add(e) : r.delete(e), r;
129
130
  });
130
- }, []), un = l((e) => {
131
- gt((t) => {
131
+ }, []), fn = c((e) => {
132
+ vt((t) => {
132
133
  let n = new Set(t);
133
134
  return z.forEach((t) => {
134
135
  e ? n.add(t.id) : n.delete(t.id);
135
136
  }), n;
136
137
  });
137
- }, [z]), Y = l(() => {
138
- gt(/* @__PURE__ */ new Set());
138
+ }, [z]), Y = c(() => {
139
+ vt(/* @__PURE__ */ new Set());
139
140
  }, []);
140
- l((e, t) => {
141
+ c((e, t) => {
141
142
  D((n) => {
142
143
  let r = new Set(n);
143
144
  return t ? r.add(e) : r.delete(e), r;
144
145
  });
145
146
  }, []);
146
- let dn = l((e) => {
147
+ let pn = c((e) => {
147
148
  D((t) => {
148
149
  let n = new Set(t);
149
150
  return (V?.buttons ?? []).forEach((t) => {
150
151
  e ? n.add(t.id) : n.delete(t.id);
151
152
  }), n;
152
153
  });
153
- }, [V?.buttons]), X = l(() => {
154
+ }, [V?.buttons]), X = c(() => {
154
155
  D(/* @__PURE__ */ new Set());
155
- }, []), fn = l(async (e) => {
156
+ }, []), mn = c(async (e) => {
156
157
  try {
157
- let t = (await Zt({ variables: { input: {
158
+ let t = (await $t({ variables: { input: {
158
159
  name: e.name,
159
160
  description: e.description || null,
160
161
  colorTheme: e.colorTheme || null,
161
162
  gridColumns: e.gridColumns,
162
163
  gridRows: e.gridRows,
163
- ...Se(St)
164
+ ...Ce(wt)
164
165
  } } })).data?.createVibeDeck?.id;
165
- w({ type: "none" }), I("Deck created", "success"), Ct(be), t && await en(t);
166
+ w({ type: "none" }), I("Deck created", "success"), Tt(xe), t && await nn(t);
166
167
  } catch (e) {
167
168
  if (o(e)) {
168
169
  w({ type: "none" }), L("Vibe Deck Quota Reached", "You have reached the Vibe Deck limit for your current plan. Upgrade to create more decks.");
@@ -171,14 +172,14 @@ function tt() {
171
172
  I(e instanceof Error ? e.message : "Failed to create deck", "error");
172
173
  }
173
174
  }, [
174
- Zt,
175
- en,
175
+ $t,
176
+ nn,
176
177
  L,
177
178
  I,
178
- St
179
- ]), pn = l(async (e) => {
179
+ wt
180
+ ]), hn = c(async (e) => {
180
181
  if (C.type === "editDeck") try {
181
- await tn({ variables: {
182
+ await rn({ variables: {
182
183
  id: C.deckId,
183
184
  input: {
184
185
  name: e.name,
@@ -192,14 +193,14 @@ function tt() {
192
193
  I(e instanceof Error ? e.message : "Failed to update deck", "error");
193
194
  }
194
195
  }, [
195
- tn,
196
+ rn,
196
197
  C,
197
198
  I
198
- ]), mn = l(async () => {
199
+ ]), gn = c(async () => {
199
200
  if (C.type === "confirmDelete") try {
200
- C.target === "deck" ? (await W({ variables: { id: C.id } }), b === C.id && x(null), I("Deck deleted", "success")) : (await q({ variables: { id: C.id } }), I("Button deleted", "success")), w({ type: "none" }), De() && Oe("success");
201
+ C.target === "deck" ? (await W({ variables: { id: C.id } }), b === C.id && x(null), I("Deck deleted", "success")) : (await q({ variables: { id: C.id } }), I("Button deleted", "success")), w({ type: "none" }), Oe() && ke("success");
201
202
  } catch (e) {
202
- I(e instanceof Error ? e.message : "Failed to delete", "error"), De() && Oe("error");
203
+ I(e instanceof Error ? e.message : "Failed to delete", "error"), Oe() && ke("error");
203
204
  }
204
205
  }, [
205
206
  C,
@@ -208,10 +209,10 @@ function tt() {
208
209
  b,
209
210
  x,
210
211
  I
211
- ]), Z = l(async (e, t = !0) => {
212
+ ]), Z = c(async (e, t = !0) => {
212
213
  let n = V?.buttons?.find((t) => t.id === e);
213
214
  if (!n || !n.action) return;
214
- let r = n.action, i = Lt({
215
+ let r = n.action, i = zt({
215
216
  buttonId: e,
216
217
  buttonLabel: n.label,
217
218
  actionType: r.actionType,
@@ -219,16 +220,16 @@ function tt() {
219
220
  status: "running",
220
221
  startedAt: /* @__PURE__ */ new Date()
221
222
  });
222
- ht(e), F(e, "executing");
223
+ _t(e), F(e, "executing");
223
224
  try {
224
225
  let n = (await J({ variables: { id: e } })).data?.executeVibeDeckButton;
225
- if (n && je(n) && n.agentId) {
226
+ if (n && Me(n) && n.agentId) {
226
227
  F(e, "error"), P(i, {
227
228
  status: "error",
228
229
  error: t ? "Remote task execution is disabled on this agent." : "Remote execution still blocked after enabling — check the agent’s Security settings.",
229
230
  output: n.output,
230
231
  completedAt: /* @__PURE__ */ new Date()
231
- }), t && Mt({
232
+ }), t && Pt({
232
233
  buttonId: e,
233
234
  agentId: n.agentId
234
235
  });
@@ -264,41 +265,41 @@ function tt() {
264
265
  completedAt: /* @__PURE__ */ new Date()
265
266
  });
266
267
  } finally {
267
- ht(null);
268
+ _t(null);
268
269
  }
269
270
  }, [
270
271
  V,
271
272
  J,
272
- Lt,
273
+ zt,
273
274
  P,
274
275
  F,
275
276
  L,
276
277
  h,
277
278
  m,
278
279
  B
279
- ]), hn = l(async ({ shell: e, file: t }) => {
280
+ ]), _n = c(async ({ shell: e, file: t }) => {
280
281
  if (!M) return;
281
282
  let { buttonId: n, agentId: r } = M;
282
- Pt(!0);
283
+ It(!0);
283
284
  try {
284
- await Ae({
285
+ await je({
285
286
  id: r,
286
- profile: It
287
+ profile: Rt
287
288
  }, {
288
289
  shell: e,
289
290
  file: t
290
- }), Mt(null), await Z(n, !1);
291
+ }), Pt(null), await Z(n, !1);
291
292
  } catch (e) {
292
293
  I(e instanceof Error ? e.message : "Failed to enable remote execution", "error");
293
294
  } finally {
294
- Pt(!1);
295
+ It(!1);
295
296
  }
296
297
  }, [
297
298
  M,
298
- It,
299
+ Rt,
299
300
  Z,
300
301
  I
301
- ]), gn = l(async (e) => {
302
+ ]), vn = c(async (e) => {
302
303
  let t = V?.buttons?.find((t) => t.id === e);
303
304
  if (t) {
304
305
  if (h.emitCustom("vibecontrols.vibedeck.button_executed_clicked", {
@@ -323,13 +324,13 @@ function tt() {
323
324
  h,
324
325
  m,
325
326
  B
326
- ]), _n = l(async () => {
327
+ ]), yn = c(async () => {
327
328
  if (C.type !== "confirmExecute") return;
328
329
  let e = C.buttonId;
329
330
  w({ type: "none" }), await Z(e);
330
- }, [C, Z]), vn = l(async (e) => {
331
+ }, [C, Z]), bn = c(async (e) => {
331
332
  if (!(C.type !== "createButton" || !B)) try {
332
- await rn({ variables: { input: {
333
+ await on({ variables: { input: {
333
334
  vibeDeckId: B,
334
335
  label: e.label,
335
336
  actionId: e.actionId,
@@ -347,12 +348,12 @@ function tt() {
347
348
  }
348
349
  }, [
349
350
  C,
350
- rn,
351
+ on,
351
352
  B,
352
353
  I
353
- ]), yn = l(async (e) => {
354
+ ]), xn = c(async (e) => {
354
355
  if (C.type === "editButton") try {
355
- await on({ variables: {
356
+ await cn({ variables: {
356
357
  id: C.buttonId,
357
358
  input: {
358
359
  label: e.label,
@@ -370,11 +371,11 @@ function tt() {
370
371
  }
371
372
  }, [
372
373
  C,
373
- on,
374
+ cn,
374
375
  I
375
- ]), bn = l(async (e, t, n) => {
376
+ ]), Sn = c(async (e, t, n) => {
376
377
  try {
377
- await cn({ variables: {
378
+ await un({ variables: {
378
379
  id: e,
379
380
  input: {
380
381
  row: t,
@@ -384,7 +385,7 @@ function tt() {
384
385
  } catch (e) {
385
386
  I(e instanceof Error ? e.message : "Failed to move button", "error");
386
387
  }
387
- }, [cn, I]), xn = l(async (e) => {
388
+ }, [un, I]), Cn = c(async (e) => {
388
389
  let t = z.find((t) => t.id === e);
389
390
  if (t) try {
390
391
  await K({ variables: {
@@ -403,13 +404,13 @@ function tt() {
403
404
  K,
404
405
  L,
405
406
  I
406
- ]), Sn = l(async (e) => {
407
+ ]), wn = c(async (e) => {
407
408
  try {
408
409
  await G({ variables: { id: e } }), I("Default deck set", "success");
409
410
  } catch (e) {
410
411
  I(e instanceof Error ? e.message : "Failed to set default", "error");
411
412
  }
412
- }, [G, I]), Cn = l(async () => {
413
+ }, [G, I]), Tn = c(async () => {
413
414
  if (H.length === 1) {
414
415
  A("setDefaultDeck");
415
416
  try {
@@ -426,7 +427,7 @@ function tt() {
426
427
  I,
427
428
  Y,
428
429
  R
429
- ]), wn = l(async () => {
430
+ ]), En = c(async () => {
430
431
  if (H.length !== 0) {
431
432
  A("duplicateDeck");
432
433
  try {
@@ -457,12 +458,12 @@ function tt() {
457
458
  I,
458
459
  Y,
459
460
  R
460
- ]), Tn = l(async () => {
461
+ ]), Dn = c(async () => {
461
462
  if (H.length !== 0) {
462
463
  A("deleteDeck");
463
464
  try {
464
465
  let e = await Promise.allSettled(H.map((e) => W({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
465
- H.some((e) => e.id === b) && x(null), I(`Deleted ${t} deck${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`, n > 0 ? "error" : "success"), Y(), vt(null), await R();
466
+ H.some((e) => e.id === b) && x(null), I(`Deleted ${t} deck${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`, n > 0 ? "error" : "success"), Y(), bt(null), await R();
466
467
  } catch (e) {
467
468
  I(e instanceof Error ? e.message : "Failed to delete decks", "error");
468
469
  } finally {
@@ -477,7 +478,7 @@ function tt() {
477
478
  I,
478
479
  Y,
479
480
  R
480
- ]), En = l(async () => {
481
+ ]), On = c(async () => {
481
482
  if (U.length === 0) return;
482
483
  A("executeButton");
483
484
  let e = 0, t = 0;
@@ -503,12 +504,12 @@ function tt() {
503
504
  L,
504
505
  I,
505
506
  X
506
- ]), Dn = l(async () => {
507
+ ]), kn = c(async () => {
507
508
  if (U.length !== 0) {
508
509
  A("deleteButton");
509
510
  try {
510
511
  let e = await Promise.allSettled(U.map((e) => q({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
511
- I(`Deleted ${t} button${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`, n > 0 ? "error" : "success"), X(), O(null), await Wt();
512
+ I(`Deleted ${t} button${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`, n > 0 ? "error" : "success"), X(), O(null), await Kt();
512
513
  } catch (e) {
513
514
  I(e instanceof Error ? e.message : "Failed to delete buttons", "error");
514
515
  } finally {
@@ -520,13 +521,13 @@ function tt() {
520
521
  q,
521
522
  I,
522
523
  X,
523
- Wt
524
+ Kt
524
525
  ]);
525
- if (nt) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(s, { message: "Loading permissions..." }) });
526
- if (_ && (_.permissionStrings?.length ?? 0) > 0 && !rt) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(et, {}) });
527
- if (Bt) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(s, { message: "Loading Vibe Decks..." }) });
528
- if (Vt) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(me, {
529
- message: Vt.message,
526
+ if (it) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(me, { message: "Loading permissions..." }) });
527
+ if (_ && (_.permissionStrings?.length ?? 0) > 0 && !at) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(nt, {}) });
528
+ if (Ht) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(me, { message: "Loading Vibe Decks..." }) });
529
+ if (Ut) return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(he, {
530
+ message: Ut.message,
530
531
  onRetry: () => R()
531
532
  }) });
532
533
  let Q = C.type === "editButton" ? V?.buttons?.find((e) => e.id === C.buttonId) : null, $ = C.type === "editDeck" ? z.find((e) => e.id === C.deckId) : null;
@@ -544,21 +545,21 @@ function tt() {
544
545
  className: "flex items-center rounded-lg border border-border-default bg-bg-surface p-0.5",
545
546
  children: [/* @__PURE__ */ f("button", {
546
547
  type: "button",
547
- onClick: () => ut("preview"),
548
+ onClick: () => ft("preview"),
548
549
  className: `flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-all ${S ? "bg-action-primary-bg text-action-primary-text shadow-sm" : "text-text-tertiary hover:text-text-primary"}`,
549
550
  title: S ? "Preview mode — execute only" : "Switch to Preview mode",
550
551
  "aria-pressed": S,
551
552
  children: [/* @__PURE__ */ d(We, { size: 14 }), "Preview"]
552
553
  }), /* @__PURE__ */ f("button", {
553
554
  type: "button",
554
- onClick: () => ut("edit"),
555
+ onClick: () => ft("edit"),
555
556
  className: `flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-all ${S ? "text-text-tertiary hover:text-text-primary" : "bg-action-primary-bg text-action-primary-text shadow-sm"}`,
556
557
  title: S ? "Switch to Edit mode" : "Edit mode — full editing",
557
558
  "aria-pressed": !S,
558
- children: [/* @__PURE__ */ d(Ke, { size: 14 }), "Edit"]
559
+ children: [/* @__PURE__ */ d(qe, { size: 14 }), "Edit"]
559
560
  })]
560
561
  }),
561
- B && V && /* @__PURE__ */ d(ke, {
562
+ B && V && /* @__PURE__ */ d(Ae, {
562
563
  entity: "vibedeck",
563
564
  resource: {
564
565
  id: B,
@@ -575,10 +576,10 @@ function tt() {
575
576
  }),
576
577
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-default px-3 py-1.5 text-sm text-text-primary hover:bg-bg-sunken",
577
578
  title: v("vibecontrols.vibedeck.share.publicLinkHint", "Create a public link with optional execution, expiry and password"),
578
- children: [/* @__PURE__ */ d(Ge, { className: "size-4" }), v("vibecontrols.vibedeck.share.publicLink", "Public link")]
579
+ children: [/* @__PURE__ */ d(Ke, { className: "size-4" }), v("vibecontrols.vibedeck.share.publicLink", "Public link")]
579
580
  }),
580
- B && V && /* @__PURE__ */ d(Ce, {
581
- entityType: he.VibeDeck,
581
+ B && V && /* @__PURE__ */ d(we, {
582
+ entityType: ge.VibeDeck,
582
583
  entityId: B,
583
584
  currentVibeId: V.vibeId ?? null,
584
585
  currentVisibility: V.visibility ?? null,
@@ -587,15 +588,19 @@ function tt() {
587
588
  /* @__PURE__ */ d("button", {
588
589
  type: "button",
589
590
  onClick: () => {
590
- R(), B && Wt();
591
+ R(), B && Kt();
591
592
  },
592
593
  className: "p-2 rounded-lg hover:bg-bg-sunken text-text-tertiary hover:text-text-primary transition-colors",
593
594
  title: "Refresh",
594
- children: /* @__PURE__ */ d(Je, { size: 16 })
595
+ children: /* @__PURE__ */ d(Ye, { size: 16 })
595
596
  })
596
597
  ]
597
598
  })
598
599
  }),
600
+ /* @__PURE__ */ d(et, {
601
+ icon: /* @__PURE__ */ d(Ge, { className: "size-4" }),
602
+ children: v("vibeDeck.purpose", "The Vibe Deck is your one-click command board: arrange the actions and webhooks you run most into tiles, then fire them with a single tap. Build a deck for a workflow (deploy, restart, run tests) so the whole team can execute the same operations consistently — Preview mode lets you try a layout safely before going live.")
603
+ }),
599
604
  !S && z.length > 0 && /* @__PURE__ */ d("div", {
600
605
  className: "rounded-lg border border-border-default bg-bg-surface p-4",
601
606
  children: /* @__PURE__ */ f("div", {
@@ -604,10 +609,10 @@ function tt() {
604
609
  className: "flex flex-wrap items-center gap-3",
605
610
  children: [/* @__PURE__ */ f("div", {
606
611
  className: "flex items-center gap-2",
607
- children: [/* @__PURE__ */ d(Te, {
608
- checked: Gt,
609
- indeterminate: Kt,
610
- onChange: un,
612
+ children: [/* @__PURE__ */ d(Ee, {
613
+ checked: qt,
614
+ indeterminate: Jt,
615
+ onChange: fn,
611
616
  ariaLabel: "Select all vibe decks"
612
617
  }), /* @__PURE__ */ d("span", {
613
618
  className: "text-sm font-medium text-text-primary",
@@ -628,17 +633,17 @@ function tt() {
628
633
  }),
629
634
  /* @__PURE__ */ d("button", {
630
635
  type: "button",
631
- onClick: Cn,
636
+ onClick: Tn,
632
637
  disabled: H.length !== 1 || H[0]?.isDefault || k !== null,
633
638
  className: "rounded-md border border-status-warning-border px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
634
639
  children: /* @__PURE__ */ f("span", {
635
640
  className: "inline-flex items-center gap-2",
636
- children: [/* @__PURE__ */ d(Ye, { size: 14 }), "Set Selected Default"]
641
+ children: [/* @__PURE__ */ d(Xe, { size: 14 }), "Set Selected Default"]
637
642
  })
638
643
  }),
639
644
  /* @__PURE__ */ d("button", {
640
645
  type: "button",
641
- onClick: wn,
646
+ onClick: En,
642
647
  disabled: H.length === 0 || k !== null,
643
648
  className: "rounded-md border border-border-default px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken disabled:cursor-not-allowed disabled:opacity-50",
644
649
  children: /* @__PURE__ */ f("span", {
@@ -652,13 +657,13 @@ function tt() {
652
657
  }),
653
658
  /* @__PURE__ */ d("button", {
654
659
  type: "button",
655
- onClick: () => vt("delete"),
660
+ onClick: () => bt("delete"),
656
661
  disabled: H.length === 0 || k !== null,
657
662
  className: "rounded-md border border-status-error-border px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg disabled:cursor-not-allowed disabled:opacity-50",
658
663
  children: /* @__PURE__ */ f("span", {
659
664
  className: "inline-flex items-center gap-2",
660
665
  children: [
661
- /* @__PURE__ */ d(Xe, { size: 14 }),
666
+ /* @__PURE__ */ d(Ze, { size: 14 }),
662
667
  "Delete Selected",
663
668
  H.length > 0 ? ` (${H.length})` : ""
664
669
  ]
@@ -670,7 +675,7 @@ function tt() {
670
675
  }),
671
676
  /* @__PURE__ */ d("div", {
672
677
  "data-tour": "vibedeck-switcher",
673
- children: /* @__PURE__ */ d(Ne, {
678
+ children: /* @__PURE__ */ d(Pe, {
674
679
  decks: z.map((e) => ({
675
680
  id: e.id,
676
681
  name: e.name,
@@ -681,10 +686,10 @@ function tt() {
681
686
  activeDeckId: B,
682
687
  selectedDeckIds: T,
683
688
  onSelectDeck: (e) => x(e),
684
- onToggleSelectDeck: ln,
689
+ onToggleSelectDeck: dn,
685
690
  onCreateDeck: () => w({ type: "createDeck" }),
686
- onSetDefault: Sn,
687
- onDuplicate: (e) => xn(e),
691
+ onSetDefault: wn,
692
+ onDuplicate: (e) => Cn(e),
688
693
  onDelete: (e) => {
689
694
  w({
690
695
  type: "confirmDelete",
@@ -705,26 +710,26 @@ function tt() {
705
710
  deckName: t.name
706
711
  });
707
712
  },
708
- canCreate: it,
709
- canUpdate: ft,
710
- canDelete: pt
713
+ canCreate: ot,
714
+ canUpdate: mt,
715
+ canDelete: ht
711
716
  })
712
717
  }),
713
- /* @__PURE__ */ f(Qe, {
718
+ /* @__PURE__ */ f($e, {
714
719
  mode: "wait",
715
- children: [!V && !Ut && z.length === 0 && /* @__PURE__ */ d(ve, {
720
+ children: [!V && !Gt && z.length === 0 && /* @__PURE__ */ d(ye, {
716
721
  title: "No Vibe Decks yet",
717
722
  description: "Create your first Vibe Deck to start organizing your commands and webhooks",
718
723
  action: /* @__PURE__ */ f("div", {
719
724
  className: "flex items-center gap-2",
720
- children: [it && /* @__PURE__ */ d("button", {
725
+ children: [ot && /* @__PURE__ */ d("button", {
721
726
  type: "button",
722
727
  onClick: () => w({ type: "createDeck" }),
723
728
  className: "px-4 py-2 rounded-lg bg-action-primary-bg text-action-primary-text hover:opacity-90 text-sm font-medium",
724
729
  children: "Create Vibe Deck"
725
- }), /* @__PURE__ */ d(we, { prompt: "What is a VibeDeck and how do I use it to organise controls?" })]
730
+ }), /* @__PURE__ */ d(Te, { prompt: "What is a VibeDeck and how do I use it to organise controls?" })]
726
731
  })
727
- }), Ut && /* @__PURE__ */ d(s, { message: "Loading deck..." })]
732
+ }), Gt && /* @__PURE__ */ d(me, { message: "Loading deck..." })]
728
733
  }),
729
734
  V && /* @__PURE__ */ f("div", {
730
735
  className: "space-y-4",
@@ -736,10 +741,10 @@ function tt() {
736
741
  className: "flex flex-wrap items-center gap-3",
737
742
  children: [/* @__PURE__ */ f("div", {
738
743
  className: "flex items-center gap-2",
739
- children: [/* @__PURE__ */ d(Te, {
740
- checked: qt,
741
- indeterminate: Jt,
742
- onChange: dn,
744
+ children: [/* @__PURE__ */ d(Ee, {
745
+ checked: Yt,
746
+ indeterminate: Xt,
747
+ onChange: pn,
743
748
  ariaLabel: "Select all buttons in active deck"
744
749
  }), /* @__PURE__ */ d("span", {
745
750
  className: "text-sm font-medium text-text-primary",
@@ -766,7 +771,7 @@ function tt() {
766
771
  children: /* @__PURE__ */ f("span", {
767
772
  className: "inline-flex items-center gap-2",
768
773
  children: [
769
- /* @__PURE__ */ d(qe, { size: 14 }),
774
+ /* @__PURE__ */ d(Je, { size: 14 }),
770
775
  "Execute Selected",
771
776
  U.length > 0 ? ` (${U.length})` : ""
772
777
  ]
@@ -780,7 +785,7 @@ function tt() {
780
785
  children: /* @__PURE__ */ f("span", {
781
786
  className: "inline-flex items-center gap-2",
782
787
  children: [
783
- /* @__PURE__ */ d(Xe, { size: 14 }),
788
+ /* @__PURE__ */ d(Ze, { size: 14 }),
784
789
  "Delete Selected",
785
790
  U.length > 0 ? ` (${U.length})` : ""
786
791
  ]
@@ -792,7 +797,7 @@ function tt() {
792
797
  }), /* @__PURE__ */ f("div", {
793
798
  "data-tour": "vibedeck-grid",
794
799
  className: "relative",
795
- children: [/* @__PURE__ */ d(Me, {
800
+ children: [/* @__PURE__ */ d(Ne, {
796
801
  gridColumns: V.gridColumns,
797
802
  gridRows: V.gridRows,
798
803
  buttons: (V.buttons || []).map((e) => ({
@@ -819,7 +824,7 @@ function tt() {
819
824
  rowSpan: e.rowSpan,
820
825
  colSpan: e.colSpan
821
826
  })),
822
- onExecuteButton: gn,
827
+ onExecuteButton: vn,
823
828
  onEditButton: (e) => w({
824
829
  type: "editButton",
825
830
  buttonId: e
@@ -833,17 +838,17 @@ function tt() {
833
838
  name: t?.label || "this button"
834
839
  });
835
840
  },
836
- onDropButton: bn,
841
+ onDropButton: Sn,
837
842
  onAddButton: (e, t) => w({
838
843
  type: "createButton",
839
844
  row: e,
840
845
  column: t
841
846
  }),
842
- executingButtonId: mt,
843
- canCreate: dt,
844
- canUpdate: ft,
845
- canDelete: pt,
846
- canExecute: st,
847
+ executingButtonId: gt,
848
+ canCreate: pt,
849
+ canUpdate: mt,
850
+ canDelete: ht,
851
+ canExecute: lt,
847
852
  previewMode: S
848
853
  }), (V.buttons?.length ?? 0) === 0 && S && /* @__PURE__ */ d("div", {
849
854
  className: "absolute inset-0 flex items-center justify-center pointer-events-none",
@@ -858,9 +863,9 @@ function tt() {
858
863
  className: "text-sm text-text-secondary mt-2",
859
864
  children: v("vibeDeck.emptyDeckDescription", "Switch to Edit mode to add buttons.")
860
865
  }),
861
- at && /* @__PURE__ */ d("button", {
866
+ st && /* @__PURE__ */ d("button", {
862
867
  type: "button",
863
- onClick: () => ut("edit"),
868
+ onClick: () => ft("edit"),
864
869
  className: "mt-4 inline-flex items-center gap-2 px-4 py-2 rounded-md bg-action-primary-bg text-action-primary-text text-sm font-medium hover:opacity-90 transition-opacity",
865
870
  children: v("vibeDeck.editDeck", "Edit deck")
866
871
  })
@@ -869,25 +874,25 @@ function tt() {
869
874
  })]
870
875
  })]
871
876
  }),
872
- wt.length > 0 && /* @__PURE__ */ d("div", {
877
+ Et.length > 0 && /* @__PURE__ */ d("div", {
873
878
  "data-tour": "vibedeck-execution-log",
874
- children: /* @__PURE__ */ d(Re, {
875
- entries: wt,
876
- expanded: Et,
877
- onToggleExpanded: () => Dt((e) => !e),
878
- onClear: () => Tt([])
879
+ children: /* @__PURE__ */ d(ze, {
880
+ entries: Et,
881
+ expanded: Ot,
882
+ onToggleExpanded: () => kt((e) => !e),
883
+ onClear: () => Dt([])
879
884
  })
880
885
  }),
881
- /* @__PURE__ */ d(Qe, { children: bt.length > 0 && /* @__PURE__ */ d("div", {
886
+ /* @__PURE__ */ d($e, { children: St.length > 0 && /* @__PURE__ */ d("div", {
882
887
  className: "fixed bottom-4 left-4 right-4 sm:left-auto sm:bottom-6 sm:right-6 z-50 flex flex-col gap-2 max-w-[calc(100vw-2rem)] sm:max-w-md",
883
- children: bt.slice(-3).map((e) => /* @__PURE__ */ f("div", {
888
+ children: St.slice(-3).map((e) => /* @__PURE__ */ f("div", {
884
889
  role: "button",
885
890
  tabIndex: 0,
886
891
  onKeyDown: (t) => {
887
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Rt(e.id));
892
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Bt(e.id));
888
893
  },
889
894
  className: `p-4 rounded-xl shadow-lg border cursor-pointer ${e.variant === "success" ? "bg-status-success-bg-subtle border-status-success-border text-status-success-text" : "bg-status-error-bg-subtle border-status-error-border text-status-error-text"}`,
890
- onClick: () => Rt(e.id),
895
+ onClick: () => Bt(e.id),
891
896
  children: [/* @__PURE__ */ d("div", {
892
897
  className: "font-medium text-sm",
893
898
  children: e.message
@@ -897,28 +902,28 @@ function tt() {
897
902
  })]
898
903
  }, e.id))
899
904
  }) }),
900
- C.type === "createDeck" && /* @__PURE__ */ d(Pe, {
905
+ C.type === "createDeck" && /* @__PURE__ */ d(Fe, {
901
906
  title: "Create Vibe Deck",
902
- onSubmit: fn,
907
+ onSubmit: mn,
903
908
  onCancel: () => {
904
- w({ type: "none" }), Ct(be);
909
+ w({ type: "none" }), Tt(xe);
905
910
  },
906
- isLoading: Qt,
911
+ isLoading: en,
907
912
  extraSection: /* @__PURE__ */ f("div", {
908
913
  className: "space-y-4",
909
914
  children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h3", {
910
915
  className: "text-sm font-medium text-text-secondary mb-2",
911
916
  children: v("vibeDeck.tags", "Tags")
912
- }), /* @__PURE__ */ d(ge, {
917
+ }), /* @__PURE__ */ d(_e, {
913
918
  entityType: "VIBECONTROLS_VIBEDECK",
914
- onDraftChange: $t
915
- })] }), /* @__PURE__ */ d(xe, {
916
- value: St,
917
- onChange: Ct
919
+ onDraftChange: tn
920
+ })] }), /* @__PURE__ */ d(Se, {
921
+ value: wt,
922
+ onChange: Tt
918
923
  })]
919
924
  })
920
925
  }),
921
- C.type === "editDeck" && $ && /* @__PURE__ */ d(Pe, {
926
+ C.type === "editDeck" && $ && /* @__PURE__ */ d(Fe, {
922
927
  title: "Edit Vibe Deck",
923
928
  initialData: {
924
929
  name: $.name,
@@ -927,29 +932,29 @@ function tt() {
927
932
  gridColumns: $.gridColumns,
928
933
  gridRows: $.gridRows
929
934
  },
930
- onSubmit: pn,
935
+ onSubmit: hn,
931
936
  onCancel: () => w({ type: "none" }),
932
- isLoading: nn,
937
+ isLoading: an,
933
938
  extraSection: /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h3", {
934
939
  className: "text-sm font-medium text-text-secondary mb-2",
935
940
  children: v("vibeDeck.tags", "Tags")
936
- }), /* @__PURE__ */ d(ge, {
941
+ }), /* @__PURE__ */ d(_e, {
937
942
  entityType: "VIBECONTROLS_VIBEDECK",
938
943
  entityId: $.id
939
944
  })] })
940
945
  }),
941
- C.type === "createButton" && /* @__PURE__ */ d(Fe, {
946
+ C.type === "createButton" && /* @__PURE__ */ d(Ie, {
942
947
  title: "Add Button",
943
- agents: Xt,
944
- onSubmit: vn,
948
+ agents: Qt,
949
+ onSubmit: bn,
945
950
  onCancel: () => w({ type: "none" }),
946
- isLoading: an,
951
+ isLoading: sn,
947
952
  gridColumns: V?.gridColumns,
948
953
  gridRows: V?.gridRows,
949
954
  buttonRow: C.row,
950
955
  buttonColumn: C.column
951
956
  }),
952
- C.type === "editButton" && Q && /* @__PURE__ */ d(Fe, {
957
+ C.type === "editButton" && Q && /* @__PURE__ */ d(Ie, {
953
958
  title: "Edit Button",
954
959
  initialData: {
955
960
  label: Q.label,
@@ -961,10 +966,10 @@ function tt() {
961
966
  rowSpan: Q.rowSpan,
962
967
  colSpan: Q.colSpan
963
968
  },
964
- agents: Xt,
965
- onSubmit: yn,
969
+ agents: Qt,
970
+ onSubmit: xn,
966
971
  onCancel: () => w({ type: "none" }),
967
- isLoading: sn,
972
+ isLoading: ln,
968
973
  gridColumns: V?.gridColumns,
969
974
  gridRows: V?.gridRows,
970
975
  buttonRow: Q.row,
@@ -976,7 +981,7 @@ function tt() {
976
981
  message: `Are you sure you want to delete "${C.name}"?${C.target === "deck" ? " All buttons in this deck will also be deleted." : ""}`,
977
982
  confirmLabel: "Delete",
978
983
  variant: "danger",
979
- onConfirm: mn,
984
+ onConfirm: gn,
980
985
  onClose: () => w({ type: "none" })
981
986
  }),
982
987
  C.type === "confirmExecute" && /* @__PURE__ */ d(a, {
@@ -985,69 +990,69 @@ function tt() {
985
990
  message: `Are you sure you want to execute this action?\n\n${C.detail}`,
986
991
  confirmLabel: "Execute",
987
992
  variant: "warning",
988
- onConfirm: _n,
993
+ onConfirm: yn,
989
994
  onClose: () => w({ type: "none" })
990
995
  }),
991
996
  /* @__PURE__ */ d(a, {
992
- isOpen: _t === "delete",
997
+ isOpen: yt === "delete",
993
998
  title: "Delete Vibe Decks",
994
999
  message: `Are you sure you want to delete ${H.length} selected deck${H.length === 1 ? "" : "s"}? All buttons in those decks will also be deleted.`,
995
1000
  confirmLabel: "Delete Decks",
996
1001
  variant: "danger",
997
- onConfirm: Tn,
998
- onClose: () => vt(null),
1002
+ onConfirm: Dn,
1003
+ onClose: () => bt(null),
999
1004
  isLoading: k === "deleteDeck"
1000
1005
  }),
1001
1006
  /* @__PURE__ */ d(a, {
1002
- isOpen: yt === "execute",
1007
+ isOpen: xt === "execute",
1003
1008
  title: "Execute Vibe Deck Buttons",
1004
1009
  message: `Execute ${U.length} selected button${U.length === 1 ? "" : "s"}? This may trigger commands, scripts, or webhooks immediately.`,
1005
1010
  confirmLabel: "Execute Buttons",
1006
1011
  variant: "warning",
1007
- onConfirm: En,
1012
+ onConfirm: On,
1008
1013
  onClose: () => O(null),
1009
1014
  isLoading: k === "executeButton"
1010
1015
  }),
1011
1016
  /* @__PURE__ */ d(a, {
1012
- isOpen: yt === "delete",
1017
+ isOpen: xt === "delete",
1013
1018
  title: "Delete Vibe Deck Buttons",
1014
1019
  message: `Delete ${U.length} selected button${U.length === 1 ? "" : "s"}? This cannot be undone.`,
1015
1020
  confirmLabel: "Delete Buttons",
1016
1021
  variant: "danger",
1017
- onConfirm: Dn,
1022
+ onConfirm: kn,
1018
1023
  onClose: () => O(null),
1019
1024
  isLoading: k === "deleteButton"
1020
1025
  }),
1021
- C.type === "shareDeck" && /* @__PURE__ */ d(Ie, {
1026
+ C.type === "shareDeck" && /* @__PURE__ */ d(Le, {
1022
1027
  vibeDeckId: C.deckId,
1023
1028
  vibeDeckName: C.deckName,
1024
1029
  onClose: () => w({ type: "none" })
1025
1030
  }),
1026
- C.type === "publicLink" && /* @__PURE__ */ d(Le, {
1031
+ C.type === "publicLink" && /* @__PURE__ */ d(Re, {
1027
1032
  vibeDeckId: C.deckId,
1028
1033
  vibeDeckName: C.deckName,
1029
1034
  onClose: () => w({ type: "none" })
1030
1035
  }),
1031
1036
  /* @__PURE__ */ d(ce, {
1032
- isOpen: At !== null,
1033
- onClose: () => jt(null),
1037
+ isOpen: Mt !== null,
1038
+ onClose: () => Nt(null),
1034
1039
  onConfirm: () => {
1035
- jt(null), tt("/billing/plans");
1040
+ Nt(null), rt("/billing/plans");
1036
1041
  },
1037
- title: At?.title || "Quota Reached",
1038
- message: At?.message || "Upgrade your plan to continue."
1042
+ title: Mt?.title || "Quota Reached",
1043
+ message: Mt?.message || "Upgrade your plan to continue."
1039
1044
  }),
1040
- /* @__PURE__ */ d(ye, {
1045
+ /* @__PURE__ */ d(be, {
1041
1046
  isOpen: M !== null,
1042
- agentName: M ? Xt.find((e) => e.id === M.agentId)?.name : void 0,
1043
- isLoading: Nt,
1044
- onClose: () => Mt(null),
1045
- onConfirm: hn
1047
+ agentName: M ? Qt.find((e) => e.id === M.agentId)?.name : void 0,
1048
+ isLoading: Ft,
1049
+ onClose: () => Pt(null),
1050
+ onConfirm: _n
1046
1051
  })
1047
1052
  ]
1048
1053
  });
1049
1054
  }
1050
1055
  //#endregion
1051
- export { tt as VibeDeckPage };
1056
+ export { rt as VibeDeckPage };
1052
1057
 
1053
1058
  //# sourceMappingURL=VibeDeckPage.js.map