@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.
- package/dist/components/agents/AgentForm.js +129 -127
- package/dist/components/agents/AgentForm.js.map +1 -1
- package/dist/components/shared/InstallTabs.js +19 -7
- package/dist/components/shared/InstallTabs.js.map +1 -1
- package/dist/pages/ActionsPage.js +209 -204
- package/dist/pages/ActionsPage.js.map +1 -1
- package/dist/pages/AgentDetailsPage.js +678 -648
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/AgentGraphPage.js +112 -108
- package/dist/pages/AgentGraphPage.js.map +1 -1
- package/dist/pages/AgentsPage.js +159 -155
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/AnalyticsPage.js +140 -136
- package/dist/pages/AnalyticsPage.js.map +1 -1
- package/dist/pages/CatalogDetailPage.js +249 -244
- package/dist/pages/CatalogDetailPage.js.map +1 -1
- package/dist/pages/CatalogPage.js +73 -68
- package/dist/pages/CatalogPage.js.map +1 -1
- package/dist/pages/ComponentDetailPage.js +195 -164
- package/dist/pages/ComponentDetailPage.js.map +1 -1
- package/dist/pages/ComponentsPage.js +80 -75
- package/dist/pages/ComponentsPage.js.map +1 -1
- package/dist/pages/EnvTopologyPage.js +100 -95
- package/dist/pages/EnvTopologyPage.js.map +1 -1
- package/dist/pages/HealthPage.js +331 -204
- package/dist/pages/HealthPage.js.map +1 -1
- package/dist/pages/LogsPage.js +54 -49
- package/dist/pages/LogsPage.js.map +1 -1
- package/dist/pages/OverviewPage.js +159 -129
- package/dist/pages/OverviewPage.js.map +1 -1
- package/dist/pages/PluginsCatalogPage.js +72 -78
- package/dist/pages/PluginsCatalogPage.js.map +1 -1
- package/dist/pages/SessionDetailsPage.js +517 -512
- package/dist/pages/SessionDetailsPage.js.map +1 -1
- package/dist/pages/SessionsPage.js +1084 -1079
- package/dist/pages/SessionsPage.js.map +1 -1
- package/dist/pages/SettingsPage.js +107 -103
- package/dist/pages/SettingsPage.js.map +1 -1
- package/dist/pages/TargetDetailsPage.js +131 -123
- package/dist/pages/TargetDetailsPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +198 -194
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/TemplatesPage.js +77 -71
- package/dist/pages/TemplatesPage.js.map +1 -1
- package/dist/pages/VibeAuditPage.js +83 -78
- package/dist/pages/VibeAuditPage.js.map +1 -1
- package/dist/pages/VibeCalendarPage.js +109 -104
- package/dist/pages/VibeCalendarPage.js.map +1 -1
- package/dist/pages/VibeDeckPage.js +222 -217
- package/dist/pages/VibeDeckPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +532 -501
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/VibesPage.js +137 -133
- package/dist/pages/VibesPage.js.map +1 -1
- package/dist/pages/WebhooksPage.js +329 -324
- package/dist/pages/WebhooksPage.js.map +1 -1
- package/dist/pages/ai/AIPage.js +149 -144
- package/dist/pages/ai/AIPage.js.map +1 -1
- 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
|
|
9
|
-
import { ErrorState as
|
|
10
|
-
import { VibeEntityType as
|
|
11
|
-
import { EntityTagPicker as
|
|
12
|
-
import { useDraftEntityTags as
|
|
13
|
-
import { EmptyState as
|
|
14
|
-
import { EnableRemoteTaskDialog as
|
|
15
|
-
import { LINK_TO_VIBE_DEFAULT as
|
|
16
|
-
import { EntityVibeLinkControl as
|
|
17
|
-
import { GetHelpButton as
|
|
18
|
-
import { SelectionCheckbox as
|
|
19
|
-
import { useActiveAgentProfile as
|
|
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
|
|
22
|
-
import { VIBE_PERMISSIONS as
|
|
23
|
-
import { EntityShareButton as
|
|
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
|
|
26
|
-
import { VibeDeckGrid as
|
|
27
|
-
import { VibeDeckSwitcher as
|
|
28
|
-
import { VibeDeckForm as
|
|
29
|
-
import { VibeDeckButtonForm as
|
|
30
|
-
import { VibeDeckShareDialog as
|
|
31
|
-
import { VibeDeckPublicLinkPanel as
|
|
32
|
-
import { VibeDeckExecutionLog as
|
|
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
|
|
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,
|
|
37
|
-
import { usePermissions as
|
|
38
|
-
import { AnimatePresence as
|
|
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 {
|
|
41
|
-
import {
|
|
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
|
|
45
|
-
let
|
|
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:")),
|
|
49
|
-
|
|
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
|
|
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
|
|
61
|
-
}, []), P =
|
|
62
|
-
|
|
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 =
|
|
67
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
87
|
+
let I = c((e, t, n, r) => {
|
|
87
88
|
let i = Date.now() + Math.random();
|
|
88
|
-
|
|
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
|
-
|
|
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
|
-
}, []),
|
|
99
|
-
|
|
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 =
|
|
103
|
-
le(),
|
|
103
|
+
}, []), L = c((e, t) => {
|
|
104
|
+
le(), Nt({
|
|
104
105
|
title: e,
|
|
105
106
|
message: t
|
|
106
107
|
});
|
|
107
|
-
}, []), { data:
|
|
108
|
+
}, []), { data: Vt, loading: Ht, error: Ut, refetch: R } = re({
|
|
108
109
|
variables: { pagination: { limit: 50 } },
|
|
109
|
-
skip:
|
|
110
|
-
}), z = Be(() =>
|
|
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 ||
|
|
113
|
-
}), V =
|
|
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:
|
|
117
|
-
}),
|
|
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
|
-
})), [
|
|
122
|
-
|
|
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
|
|
126
|
-
|
|
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
|
-
}, []),
|
|
131
|
-
|
|
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 =
|
|
138
|
-
|
|
138
|
+
}, [z]), Y = c(() => {
|
|
139
|
+
vt(/* @__PURE__ */ new Set());
|
|
139
140
|
}, []);
|
|
140
|
-
|
|
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
|
|
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 =
|
|
154
|
+
}, [V?.buttons]), X = c(() => {
|
|
154
155
|
D(/* @__PURE__ */ new Set());
|
|
155
|
-
}, []),
|
|
156
|
+
}, []), mn = c(async (e) => {
|
|
156
157
|
try {
|
|
157
|
-
let t = (await
|
|
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
|
-
...
|
|
164
|
+
...Ce(wt)
|
|
164
165
|
} } })).data?.createVibeDeck?.id;
|
|
165
|
-
w({ type: "none" }), I("Deck created", "success"),
|
|
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
|
-
|
|
175
|
-
|
|
175
|
+
$t,
|
|
176
|
+
nn,
|
|
176
177
|
L,
|
|
177
178
|
I,
|
|
178
|
-
|
|
179
|
-
]),
|
|
179
|
+
wt
|
|
180
|
+
]), hn = c(async (e) => {
|
|
180
181
|
if (C.type === "editDeck") try {
|
|
181
|
-
await
|
|
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
|
-
|
|
196
|
+
rn,
|
|
196
197
|
C,
|
|
197
198
|
I
|
|
198
|
-
]),
|
|
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" }),
|
|
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"),
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
223
|
+
_t(e), F(e, "executing");
|
|
223
224
|
try {
|
|
224
225
|
let n = (await J({ variables: { id: e } })).data?.executeVibeDeckButton;
|
|
225
|
-
if (n &&
|
|
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 &&
|
|
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
|
-
|
|
268
|
+
_t(null);
|
|
268
269
|
}
|
|
269
270
|
}, [
|
|
270
271
|
V,
|
|
271
272
|
J,
|
|
272
|
-
|
|
273
|
+
zt,
|
|
273
274
|
P,
|
|
274
275
|
F,
|
|
275
276
|
L,
|
|
276
277
|
h,
|
|
277
278
|
m,
|
|
278
279
|
B
|
|
279
|
-
]),
|
|
280
|
+
]), _n = c(async ({ shell: e, file: t }) => {
|
|
280
281
|
if (!M) return;
|
|
281
282
|
let { buttonId: n, agentId: r } = M;
|
|
282
|
-
|
|
283
|
+
It(!0);
|
|
283
284
|
try {
|
|
284
|
-
await
|
|
285
|
+
await je({
|
|
285
286
|
id: r,
|
|
286
|
-
profile:
|
|
287
|
+
profile: Rt
|
|
287
288
|
}, {
|
|
288
289
|
shell: e,
|
|
289
290
|
file: t
|
|
290
|
-
}),
|
|
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
|
-
|
|
295
|
+
It(!1);
|
|
295
296
|
}
|
|
296
297
|
}, [
|
|
297
298
|
M,
|
|
298
|
-
|
|
299
|
+
Rt,
|
|
299
300
|
Z,
|
|
300
301
|
I
|
|
301
|
-
]),
|
|
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
|
-
]),
|
|
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]),
|
|
331
|
+
}, [C, Z]), bn = c(async (e) => {
|
|
331
332
|
if (!(C.type !== "createButton" || !B)) try {
|
|
332
|
-
await
|
|
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
|
-
|
|
351
|
+
on,
|
|
351
352
|
B,
|
|
352
353
|
I
|
|
353
|
-
]),
|
|
354
|
+
]), xn = c(async (e) => {
|
|
354
355
|
if (C.type === "editButton") try {
|
|
355
|
-
await
|
|
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
|
-
|
|
374
|
+
cn,
|
|
374
375
|
I
|
|
375
|
-
]),
|
|
376
|
+
]), Sn = c(async (e, t, n) => {
|
|
376
377
|
try {
|
|
377
|
-
await
|
|
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
|
-
}, [
|
|
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
|
-
]),
|
|
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]),
|
|
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
|
-
]),
|
|
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
|
-
]),
|
|
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(),
|
|
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
|
-
]),
|
|
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
|
-
]),
|
|
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
|
|
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
|
-
|
|
524
|
+
Kt
|
|
524
525
|
]);
|
|
525
|
-
if (
|
|
526
|
-
if (_ && (_.permissionStrings?.length ?? 0) > 0 && !
|
|
527
|
-
if (
|
|
528
|
-
if (
|
|
529
|
-
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: () =>
|
|
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: () =>
|
|
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(
|
|
559
|
+
children: [/* @__PURE__ */ d(qe, { size: 14 }), "Edit"]
|
|
559
560
|
})]
|
|
560
561
|
}),
|
|
561
|
-
B && V && /* @__PURE__ */ d(
|
|
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(
|
|
579
|
+
children: [/* @__PURE__ */ d(Ke, { className: "size-4" }), v("vibecontrols.vibedeck.share.publicLink", "Public link")]
|
|
579
580
|
}),
|
|
580
|
-
B && V && /* @__PURE__ */ d(
|
|
581
|
-
entityType:
|
|
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 &&
|
|
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(
|
|
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(
|
|
608
|
-
checked:
|
|
609
|
-
indeterminate:
|
|
610
|
-
onChange:
|
|
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:
|
|
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(
|
|
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:
|
|
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: () =>
|
|
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(
|
|
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(
|
|
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:
|
|
689
|
+
onToggleSelectDeck: dn,
|
|
685
690
|
onCreateDeck: () => w({ type: "createDeck" }),
|
|
686
|
-
onSetDefault:
|
|
687
|
-
onDuplicate: (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:
|
|
709
|
-
canUpdate:
|
|
710
|
-
canDelete:
|
|
713
|
+
canCreate: ot,
|
|
714
|
+
canUpdate: mt,
|
|
715
|
+
canDelete: ht
|
|
711
716
|
})
|
|
712
717
|
}),
|
|
713
|
-
/* @__PURE__ */ f(
|
|
718
|
+
/* @__PURE__ */ f($e, {
|
|
714
719
|
mode: "wait",
|
|
715
|
-
children: [!V && !
|
|
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: [
|
|
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(
|
|
730
|
+
}), /* @__PURE__ */ d(Te, { prompt: "What is a VibeDeck and how do I use it to organise controls?" })]
|
|
726
731
|
})
|
|
727
|
-
}),
|
|
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(
|
|
740
|
-
checked:
|
|
741
|
-
indeterminate:
|
|
742
|
-
onChange:
|
|
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(
|
|
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(
|
|
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(
|
|
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:
|
|
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:
|
|
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:
|
|
843
|
-
canCreate:
|
|
844
|
-
canUpdate:
|
|
845
|
-
canDelete:
|
|
846
|
-
canExecute:
|
|
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
|
-
|
|
866
|
+
st && /* @__PURE__ */ d("button", {
|
|
862
867
|
type: "button",
|
|
863
|
-
onClick: () =>
|
|
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
|
-
|
|
877
|
+
Et.length > 0 && /* @__PURE__ */ d("div", {
|
|
873
878
|
"data-tour": "vibedeck-execution-log",
|
|
874
|
-
children: /* @__PURE__ */ d(
|
|
875
|
-
entries:
|
|
876
|
-
expanded:
|
|
877
|
-
onToggleExpanded: () =>
|
|
878
|
-
onClear: () =>
|
|
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(
|
|
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:
|
|
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(),
|
|
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: () =>
|
|
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(
|
|
905
|
+
C.type === "createDeck" && /* @__PURE__ */ d(Fe, {
|
|
901
906
|
title: "Create Vibe Deck",
|
|
902
|
-
onSubmit:
|
|
907
|
+
onSubmit: mn,
|
|
903
908
|
onCancel: () => {
|
|
904
|
-
w({ type: "none" }),
|
|
909
|
+
w({ type: "none" }), Tt(xe);
|
|
905
910
|
},
|
|
906
|
-
isLoading:
|
|
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(
|
|
917
|
+
}), /* @__PURE__ */ d(_e, {
|
|
913
918
|
entityType: "VIBECONTROLS_VIBEDECK",
|
|
914
|
-
onDraftChange:
|
|
915
|
-
})] }), /* @__PURE__ */ d(
|
|
916
|
-
value:
|
|
917
|
-
onChange:
|
|
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(
|
|
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:
|
|
935
|
+
onSubmit: hn,
|
|
931
936
|
onCancel: () => w({ type: "none" }),
|
|
932
|
-
isLoading:
|
|
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(
|
|
941
|
+
}), /* @__PURE__ */ d(_e, {
|
|
937
942
|
entityType: "VIBECONTROLS_VIBEDECK",
|
|
938
943
|
entityId: $.id
|
|
939
944
|
})] })
|
|
940
945
|
}),
|
|
941
|
-
C.type === "createButton" && /* @__PURE__ */ d(
|
|
946
|
+
C.type === "createButton" && /* @__PURE__ */ d(Ie, {
|
|
942
947
|
title: "Add Button",
|
|
943
|
-
agents:
|
|
944
|
-
onSubmit:
|
|
948
|
+
agents: Qt,
|
|
949
|
+
onSubmit: bn,
|
|
945
950
|
onCancel: () => w({ type: "none" }),
|
|
946
|
-
isLoading:
|
|
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(
|
|
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:
|
|
965
|
-
onSubmit:
|
|
969
|
+
agents: Qt,
|
|
970
|
+
onSubmit: xn,
|
|
966
971
|
onCancel: () => w({ type: "none" }),
|
|
967
|
-
isLoading:
|
|
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:
|
|
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:
|
|
993
|
+
onConfirm: yn,
|
|
989
994
|
onClose: () => w({ type: "none" })
|
|
990
995
|
}),
|
|
991
996
|
/* @__PURE__ */ d(a, {
|
|
992
|
-
isOpen:
|
|
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:
|
|
998
|
-
onClose: () =>
|
|
1002
|
+
onConfirm: Dn,
|
|
1003
|
+
onClose: () => bt(null),
|
|
999
1004
|
isLoading: k === "deleteDeck"
|
|
1000
1005
|
}),
|
|
1001
1006
|
/* @__PURE__ */ d(a, {
|
|
1002
|
-
isOpen:
|
|
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:
|
|
1012
|
+
onConfirm: On,
|
|
1008
1013
|
onClose: () => O(null),
|
|
1009
1014
|
isLoading: k === "executeButton"
|
|
1010
1015
|
}),
|
|
1011
1016
|
/* @__PURE__ */ d(a, {
|
|
1012
|
-
isOpen:
|
|
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:
|
|
1022
|
+
onConfirm: kn,
|
|
1018
1023
|
onClose: () => O(null),
|
|
1019
1024
|
isLoading: k === "deleteButton"
|
|
1020
1025
|
}),
|
|
1021
|
-
C.type === "shareDeck" && /* @__PURE__ */ d(
|
|
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(
|
|
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:
|
|
1033
|
-
onClose: () =>
|
|
1037
|
+
isOpen: Mt !== null,
|
|
1038
|
+
onClose: () => Nt(null),
|
|
1034
1039
|
onConfirm: () => {
|
|
1035
|
-
|
|
1040
|
+
Nt(null), rt("/billing/plans");
|
|
1036
1041
|
},
|
|
1037
|
-
title:
|
|
1038
|
-
message:
|
|
1042
|
+
title: Mt?.title || "Quota Reached",
|
|
1043
|
+
message: Mt?.message || "Upgrade your plan to continue."
|
|
1039
1044
|
}),
|
|
1040
|
-
/* @__PURE__ */ d(
|
|
1045
|
+
/* @__PURE__ */ d(be, {
|
|
1041
1046
|
isOpen: M !== null,
|
|
1042
|
-
agentName: M ?
|
|
1043
|
-
isLoading:
|
|
1044
|
-
onClose: () =>
|
|
1045
|
-
onConfirm:
|
|
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 {
|
|
1056
|
+
export { rt as VibeDeckPage };
|
|
1052
1057
|
|
|
1053
1058
|
//# sourceMappingURL=VibeDeckPage.js.map
|