@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
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { useCreateActionMutation as e, useDeleteActionMutation as t, useDuplicateActionMutation as n, useExecuteActionMutation as r, useGetActionQuery as i, useListActionsQuery as
|
|
2
|
-
import { ConfirmDialog as
|
|
3
|
-
import { QuotaExhaustedDialog as
|
|
4
|
-
import { getQuotaDialogContent as
|
|
5
|
-
import { useVibeControls as
|
|
6
|
-
import { PageHeader as
|
|
7
|
-
import { LoadingState as
|
|
8
|
-
import { ErrorState as
|
|
9
|
-
import { EntityTagPicker as
|
|
10
|
-
import { useDraftEntityTags as
|
|
11
|
-
import { EmptyState as
|
|
12
|
-
import { SearchInput as
|
|
13
|
-
import { FilterDropdown as
|
|
14
|
-
import { EnableRemoteTaskDialog as
|
|
15
|
-
import { LINK_TO_VIBE_DEFAULT as
|
|
16
|
-
import { GetHelpButton as
|
|
17
|
-
import { SelectionCheckbox as
|
|
18
|
-
import { useActiveAgentProfile as
|
|
1
|
+
import { useCreateActionMutation as e, useDeleteActionMutation as t, useDuplicateActionMutation as n, useExecuteActionMutation as r, useGetActionQuery as i, useListActionsQuery as a, useListAgentsQuery as ee, useUpdateActionMutation as te } from "../generated/wspace-operations.js";
|
|
2
|
+
import { ConfirmDialog as o } from "../components/shared/ConfirmDialog.js";
|
|
3
|
+
import { QuotaExhaustedDialog as ne } from "../components/shared/QuotaExhaustedDialog.js";
|
|
4
|
+
import { getQuotaDialogContent as re, isQuotaExhaustedError as s, markQuotaHandledLocally as c } from "../utils/quotaUtils.js";
|
|
5
|
+
import { useVibeControls as ie } from "../providers/VibeControlsProvider.js";
|
|
6
|
+
import { PageHeader as ae } from "../components/shared/PageHeader.js";
|
|
7
|
+
import { LoadingState as oe } from "../components/shared/LoadingState.js";
|
|
8
|
+
import { ErrorState as se } from "../components/shared/ErrorState.js";
|
|
9
|
+
import { EntityTagPicker as ce } from "../components/shared/EntityTagPicker.js";
|
|
10
|
+
import { useDraftEntityTags as le } from "../hooks/useDraftEntityTags.js";
|
|
11
|
+
import { EmptyState as ue } from "../components/shared/EmptyState.js";
|
|
12
|
+
import { SearchInput as de } from "../components/shared/SearchInput.js";
|
|
13
|
+
import { FilterDropdown as fe } from "../components/shared/FilterDropdown.js";
|
|
14
|
+
import { EnableRemoteTaskDialog as pe } from "../components/shared/EnableRemoteTaskDialog.js";
|
|
15
|
+
import { LINK_TO_VIBE_DEFAULT as l, LinkToVibePanel as me, linkToVibeInput as he } from "../components/shared/LinkToVibePanel.js";
|
|
16
|
+
import { GetHelpButton as ge } from "../components/shared/GetHelpButton.js";
|
|
17
|
+
import { SelectionCheckbox as _e } from "../components/shared/SelectionCheckbox.js";
|
|
18
|
+
import { useActiveAgentProfile as ve } from "../hooks/useActiveAgentProfile.js";
|
|
19
19
|
import "../components/shared/index.js";
|
|
20
|
-
import { isNative as
|
|
21
|
-
import { VIBE_PERMISSIONS as
|
|
22
|
-
import { ActionCard as
|
|
23
|
-
import { enableRemoteTaskExecution as
|
|
24
|
-
import { ActionForm as
|
|
25
|
-
import { ExecutionHistory as
|
|
26
|
-
import { ActionSchedulesList as
|
|
20
|
+
import { isNative as ye, nativeNotify as be } from "../utils/nativeBridge.js";
|
|
21
|
+
import { VIBE_PERMISSIONS as u } from "../constants/permissions.js";
|
|
22
|
+
import { ActionCard as xe } from "../components/actions/ActionCard.js";
|
|
23
|
+
import { enableRemoteTaskExecution as Se, isRemoteTaskDeniedError as Ce } from "../services/agentRemoteTaskGates.js";
|
|
24
|
+
import { ActionForm as we } from "../components/actions/ActionForm.js";
|
|
25
|
+
import { ExecutionHistory as Te } from "../components/actions/ExecutionHistory.js";
|
|
26
|
+
import { ActionSchedulesList as Ee } from "../components/actions/ActionSchedulesList.js";
|
|
27
27
|
import "../components/actions/index.js";
|
|
28
|
-
import { useCallback as
|
|
29
|
-
import { useI18n as
|
|
30
|
-
import { Copy as
|
|
31
|
-
import { useNavigate as
|
|
32
|
-
import { usePermissions as
|
|
33
|
-
import { AnimatePresence as
|
|
34
|
-
import { jsx as
|
|
35
|
-
import { CTAOverflowMenu as Re } from "@burdenoff/fe-libs/ui";
|
|
28
|
+
import { useCallback as d, useEffect as De, useMemo as f, useState as p } from "react";
|
|
29
|
+
import { useI18n as Oe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
30
|
+
import { Copy as ke, Play as Ae, Plus as je, RefreshCw as Me, Trash2 as Ne } from "lucide-react";
|
|
31
|
+
import { useNavigate as Pe, useSearchParams as Fe } from "react-router-dom";
|
|
32
|
+
import { usePermissions as Ie } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
33
|
+
import { AnimatePresence as m } from "framer-motion";
|
|
34
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
35
|
+
import { CTAOverflowMenu as Le, PagePurpose as Re } from "@burdenoff/fe-libs/ui";
|
|
36
36
|
import { AccessDenied as ze } from "@burdenoff/fe-libs/shared/components";
|
|
37
|
-
import { MotionPage as
|
|
37
|
+
import { MotionPage as _ } from "@burdenoff/fe-libs/shared/motion";
|
|
38
38
|
//#region src/pages/ActionsPage.tsx
|
|
39
39
|
var Be = [
|
|
40
40
|
{
|
|
@@ -71,11 +71,11 @@ var Be = [
|
|
|
71
71
|
label: "On Demand"
|
|
72
72
|
}
|
|
73
73
|
];
|
|
74
|
-
function
|
|
75
|
-
let
|
|
74
|
+
function v() {
|
|
75
|
+
let v = Pe(), [He, Ue] = Fe(), { workspaceId: We } = ie(), { hasPermission: y, isLoading: Ge, permissions: b } = Ie(), x = ((e) => (t, n) => {
|
|
76
76
|
let r = e.t(t);
|
|
77
77
|
return r === t ? n : r;
|
|
78
|
-
})(
|
|
78
|
+
})(Oe()), S = (Array.isArray(b) ? b : b?.permissionStrings)?.some?.((e) => e.startsWith("action:")), Ke = S ? y(u.ACTION_LIST) : !0, qe = S ? y(u.ACTION_CREATE) : !0, Je = S ? y(u.ACTION_UPDATE) : !0, Ye = S ? y(u.ACTION_DELETE) : !0, Xe = S ? y(u.ACTION_EXECUTE) : !0, C = Ge, [w, T] = p({ type: "none" }), [Ze, E] = p([]), [D, Qe] = p(""), [O, $e] = p(null), [k, et] = p(null), [A, j] = p(null), [M, N] = p(/* @__PURE__ */ new Set()), [tt, nt] = p(null), [rt, P] = p(null), [F, I] = p(null), [L, R] = p(null), [z, B] = p(null), [it, at] = p(!1), { profiles: ot } = ve(z?.agentId ?? null), st = ot.find((e) => e.isDefault)?.name ?? "default", [V, H] = p(l), [ct, lt] = p(l), U = d((e, t, n, r = 1e4) => {
|
|
79
79
|
let i = Date.now() + Math.random();
|
|
80
80
|
E((r) => [...r, {
|
|
81
81
|
message: e,
|
|
@@ -83,9 +83,9 @@ function _() {
|
|
|
83
83
|
detail: n,
|
|
84
84
|
id: i
|
|
85
85
|
}]), t === "success" && setTimeout(() => E((e) => e.filter((e) => e.id !== i)), r);
|
|
86
|
-
}, []),
|
|
86
|
+
}, []), ut = d((e) => {
|
|
87
87
|
E((t) => t.filter((t) => t.id !== e));
|
|
88
|
-
}, []), { data:
|
|
88
|
+
}, []), { data: dt, loading: ft, error: pt, refetch: W } = a({
|
|
89
89
|
variables: {
|
|
90
90
|
filter: {
|
|
91
91
|
...O && O !== "all" ? { actionType: O } : {},
|
|
@@ -95,20 +95,20 @@ function _() {
|
|
|
95
95
|
pagination: { limit: 50 }
|
|
96
96
|
},
|
|
97
97
|
skip: C
|
|
98
|
-
}), G =
|
|
98
|
+
}), G = f(() => dt?.actions?.items || [], [dt]), { data: mt } = i({
|
|
99
99
|
variables: { id: A },
|
|
100
100
|
skip: !A || C
|
|
101
|
-
}), K =
|
|
101
|
+
}), K = mt?.action, ht = K?.recentExecutions || [], { data: gt } = ee({
|
|
102
102
|
variables: { pagination: { limit: 100 } },
|
|
103
103
|
fetchPolicy: "cache-and-network",
|
|
104
104
|
skip: C
|
|
105
|
-
}),
|
|
105
|
+
}), _t = f(() => (gt?.vibecontrolsAgents ?? []).map((e) => ({
|
|
106
106
|
id: e.id,
|
|
107
107
|
name: e.name,
|
|
108
108
|
isActive: e.isActive
|
|
109
|
-
})), [
|
|
109
|
+
})), [gt]), [vt, { loading: yt }] = e({ refetchQueries: ["ListActions"] }), { setDraftTagIds: bt, flushTags: xt } = le("VIBECONTROLS_ACTION"), [St, { loading: Ct }] = te({ refetchQueries: ["ListActions", "GetAction"] }), [q] = t({ refetchQueries: ["ListActions"] }), [J] = r({ refetchQueries: ["GetAction"] }), [Y] = n({ refetchQueries: ["ListActions"] }), wt = d(async (e) => {
|
|
110
110
|
try {
|
|
111
|
-
let t = await
|
|
111
|
+
let t = await vt({ variables: { input: {
|
|
112
112
|
name: e.name,
|
|
113
113
|
displayName: e.displayName || null,
|
|
114
114
|
description: e.description || null,
|
|
@@ -129,29 +129,29 @@ function _() {
|
|
|
129
129
|
timeoutMs: e.timeoutMs,
|
|
130
130
|
retryCount: e.retryCount,
|
|
131
131
|
confirmationRequired: e.confirmationRequired,
|
|
132
|
-
...
|
|
132
|
+
...he(V)
|
|
133
133
|
} } });
|
|
134
|
-
if (t.error &&
|
|
135
|
-
T({ type: "none" }),
|
|
134
|
+
if (t.error && s(t.error)) {
|
|
135
|
+
T({ type: "none" }), c(), R("action");
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
138
|
let n = t.data?.createAction?.id;
|
|
139
|
-
T({ type: "none" }), U("Action created", "success"), H(
|
|
139
|
+
T({ type: "none" }), U("Action created", "success"), H(l), n && await xt(n);
|
|
140
140
|
} catch (e) {
|
|
141
|
-
if (
|
|
142
|
-
T({ type: "none" }),
|
|
141
|
+
if (s(e)) {
|
|
142
|
+
T({ type: "none" }), c(), R("action");
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
U(e instanceof Error ? e.message : "Failed to create action", "error");
|
|
146
146
|
}
|
|
147
147
|
}, [
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
vt,
|
|
149
|
+
xt,
|
|
150
150
|
U,
|
|
151
151
|
V
|
|
152
|
-
]),
|
|
152
|
+
]), Tt = d(async (e) => {
|
|
153
153
|
if (w.type === "edit") try {
|
|
154
|
-
await
|
|
154
|
+
await St({ variables: {
|
|
155
155
|
id: w.actionId,
|
|
156
156
|
input: {
|
|
157
157
|
displayName: e.displayName || null,
|
|
@@ -173,29 +173,29 @@ function _() {
|
|
|
173
173
|
timeoutMs: e.timeoutMs,
|
|
174
174
|
retryCount: e.retryCount,
|
|
175
175
|
confirmationRequired: e.confirmationRequired,
|
|
176
|
-
...
|
|
176
|
+
...he(ct)
|
|
177
177
|
}
|
|
178
178
|
} }), T({ type: "none" }), U("Action updated", "success");
|
|
179
179
|
} catch (e) {
|
|
180
180
|
U(e instanceof Error ? e.message : "Failed to update action", "error");
|
|
181
181
|
}
|
|
182
182
|
}, [
|
|
183
|
-
|
|
183
|
+
St,
|
|
184
184
|
w,
|
|
185
185
|
U,
|
|
186
|
-
|
|
187
|
-
]),
|
|
186
|
+
ct
|
|
187
|
+
]), Et = d(async () => {
|
|
188
188
|
if (w.type === "confirmDelete") try {
|
|
189
|
-
await q({ variables: { id: w.id } }), A === w.id && j(null), T({ type: "none" }), U("Action deleted", "success"),
|
|
189
|
+
await q({ variables: { id: w.id } }), A === w.id && j(null), T({ type: "none" }), U("Action deleted", "success"), ye() && be("success");
|
|
190
190
|
} catch (e) {
|
|
191
|
-
U(e instanceof Error ? e.message : "Failed to delete action", "error"),
|
|
191
|
+
U(e instanceof Error ? e.message : "Failed to delete action", "error"), ye() && be("error");
|
|
192
192
|
}
|
|
193
193
|
}, [
|
|
194
194
|
w,
|
|
195
195
|
q,
|
|
196
196
|
A,
|
|
197
197
|
U
|
|
198
|
-
]),
|
|
198
|
+
]), Dt = async (e) => {
|
|
199
199
|
let t = G.find((t) => t.id === e);
|
|
200
200
|
if (t) {
|
|
201
201
|
if (t.confirmationRequired) {
|
|
@@ -208,16 +208,16 @@ function _() {
|
|
|
208
208
|
}
|
|
209
209
|
await X(e);
|
|
210
210
|
}
|
|
211
|
-
}, X =
|
|
212
|
-
|
|
211
|
+
}, X = d(async (e, t = !0) => {
|
|
212
|
+
nt(e);
|
|
213
213
|
try {
|
|
214
214
|
let n = await J({ variables: { id: e } });
|
|
215
|
-
if (n.error &&
|
|
216
|
-
|
|
215
|
+
if (n.error && s(n.error)) {
|
|
216
|
+
c(), R("command-execution");
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
219
|
let r = n.data?.executeAction;
|
|
220
|
-
if (r &&
|
|
220
|
+
if (r && Ce(r) && r.agentId) {
|
|
221
221
|
t ? B({
|
|
222
222
|
actionId: e,
|
|
223
223
|
agentId: r.agentId
|
|
@@ -226,26 +226,26 @@ function _() {
|
|
|
226
226
|
}
|
|
227
227
|
r && U(r.status === "SUCCESS" || r.status === "COMPLETED" ? "Action executed successfully" : "Action execution failed", r.status === "SUCCESS" || r.status === "COMPLETED" ? "success" : "error", r.output || r.errorMessage);
|
|
228
228
|
} catch (e) {
|
|
229
|
-
if (
|
|
230
|
-
|
|
229
|
+
if (s(e)) {
|
|
230
|
+
c(), R("command-execution");
|
|
231
231
|
return;
|
|
232
232
|
}
|
|
233
233
|
U(e instanceof Error ? e.message : "Execution failed", "error");
|
|
234
234
|
} finally {
|
|
235
|
-
|
|
235
|
+
nt(null);
|
|
236
236
|
}
|
|
237
|
-
}, [J, U]),
|
|
237
|
+
}, [J, U]), Ot = d(async () => {
|
|
238
238
|
if (w.type !== "confirmExecute") return;
|
|
239
239
|
let e = w.actionId;
|
|
240
240
|
T({ type: "none" }), await X(e);
|
|
241
|
-
}, [w, X]),
|
|
241
|
+
}, [w, X]), kt = d(async ({ shell: e, file: t }) => {
|
|
242
242
|
if (!z) return;
|
|
243
243
|
let { actionId: n, agentId: r } = z;
|
|
244
|
-
|
|
244
|
+
at(!0);
|
|
245
245
|
try {
|
|
246
|
-
await
|
|
246
|
+
await Se({
|
|
247
247
|
id: r,
|
|
248
|
-
profile:
|
|
248
|
+
profile: st
|
|
249
249
|
}, {
|
|
250
250
|
shell: e,
|
|
251
251
|
file: t
|
|
@@ -253,14 +253,14 @@ function _() {
|
|
|
253
253
|
} catch (e) {
|
|
254
254
|
U(e instanceof Error ? e.message : "Failed to enable remote execution", "error");
|
|
255
255
|
} finally {
|
|
256
|
-
|
|
256
|
+
at(!1);
|
|
257
257
|
}
|
|
258
258
|
}, [
|
|
259
259
|
z,
|
|
260
|
-
|
|
260
|
+
st,
|
|
261
261
|
X,
|
|
262
262
|
U
|
|
263
|
-
]),
|
|
263
|
+
]), At = d(async (e) => {
|
|
264
264
|
let t = G.find((t) => t.id === e);
|
|
265
265
|
if (t) try {
|
|
266
266
|
await Y({ variables: {
|
|
@@ -274,40 +274,40 @@ function _() {
|
|
|
274
274
|
G,
|
|
275
275
|
Y,
|
|
276
276
|
U
|
|
277
|
-
]), Z =
|
|
278
|
-
|
|
277
|
+
]), Z = f(() => w.type === "edit" && G.find((e) => e.id === w.actionId) || null, [w, G]);
|
|
278
|
+
De(() => {
|
|
279
279
|
if (w.type === "edit" && Z) {
|
|
280
280
|
let e = Z;
|
|
281
|
-
|
|
281
|
+
lt({
|
|
282
282
|
vibeId: e.vibeId ?? null,
|
|
283
283
|
visibility: e.visibility ?? "PRIVATE"
|
|
284
284
|
});
|
|
285
|
-
} else w.type === "create" && H(
|
|
286
|
-
}, [w.type, Z]),
|
|
287
|
-
let e =
|
|
285
|
+
} else w.type === "create" && H(l);
|
|
286
|
+
}, [w.type, Z]), De(() => {
|
|
287
|
+
let e = He.get("editAction");
|
|
288
288
|
if (!e) return;
|
|
289
289
|
T({
|
|
290
290
|
type: "edit",
|
|
291
291
|
actionId: e
|
|
292
292
|
});
|
|
293
|
-
let t = new URLSearchParams(
|
|
294
|
-
t.delete("editAction"),
|
|
295
|
-
}, [
|
|
296
|
-
let Q =
|
|
293
|
+
let t = new URLSearchParams(He);
|
|
294
|
+
t.delete("editAction"), Ue(t, { replace: !0 });
|
|
295
|
+
}, [He, Ue]);
|
|
296
|
+
let Q = f(() => G.filter((e) => M.has(e.id)), [G, M]), jt = G.length > 0 && G.every((e) => M.has(e.id)), Mt = G.some((e) => M.has(e.id)) && !jt, Nt = d((e, t) => {
|
|
297
297
|
N((n) => {
|
|
298
298
|
let r = new Set(n);
|
|
299
299
|
return t ? r.add(e) : r.delete(e), r;
|
|
300
300
|
});
|
|
301
|
-
}, []),
|
|
301
|
+
}, []), Pt = d((e) => {
|
|
302
302
|
N((t) => {
|
|
303
303
|
let n = new Set(t);
|
|
304
304
|
return G.forEach((t) => {
|
|
305
305
|
e ? n.add(t.id) : n.delete(t.id);
|
|
306
306
|
}), n;
|
|
307
307
|
});
|
|
308
|
-
}, [G]), $ =
|
|
308
|
+
}, [G]), $ = d(() => {
|
|
309
309
|
N(/* @__PURE__ */ new Set());
|
|
310
|
-
}, []),
|
|
310
|
+
}, []), Ft = d(async () => {
|
|
311
311
|
if (Q.length !== 0) {
|
|
312
312
|
I("duplicate");
|
|
313
313
|
try {
|
|
@@ -328,7 +328,7 @@ function _() {
|
|
|
328
328
|
U,
|
|
329
329
|
$,
|
|
330
330
|
W
|
|
331
|
-
]),
|
|
331
|
+
]), It = d(async () => {
|
|
332
332
|
if (Q.length !== 0) {
|
|
333
333
|
I("delete");
|
|
334
334
|
try {
|
|
@@ -348,22 +348,22 @@ function _() {
|
|
|
348
348
|
U,
|
|
349
349
|
$,
|
|
350
350
|
W
|
|
351
|
-
]),
|
|
351
|
+
]), Lt = d(async () => {
|
|
352
352
|
if (Q.length === 0) return;
|
|
353
353
|
I("execute");
|
|
354
354
|
let e = 0, t = 0, n = !1;
|
|
355
355
|
try {
|
|
356
356
|
for (let r of Q) try {
|
|
357
357
|
let i = await J({ variables: { id: r.id } });
|
|
358
|
-
if (i.error &&
|
|
359
|
-
|
|
358
|
+
if (i.error && s(i.error)) {
|
|
359
|
+
c(), R("command-execution"), n = !0;
|
|
360
360
|
break;
|
|
361
361
|
}
|
|
362
|
-
let
|
|
363
|
-
|
|
362
|
+
let a = i.data?.executeAction;
|
|
363
|
+
a?.status === "SUCCESS" || a?.status === "COMPLETED" ? e += 1 : t += 1;
|
|
364
364
|
} catch (e) {
|
|
365
|
-
if (
|
|
366
|
-
|
|
365
|
+
if (s(e)) {
|
|
366
|
+
c(), R("command-execution"), n = !0;
|
|
367
367
|
break;
|
|
368
368
|
}
|
|
369
369
|
t += 1;
|
|
@@ -382,120 +382,124 @@ function _() {
|
|
|
382
382
|
A,
|
|
383
383
|
W
|
|
384
384
|
]);
|
|
385
|
-
return
|
|
386
|
-
message:
|
|
385
|
+
return Ge ? /* @__PURE__ */ h(_, { children: /* @__PURE__ */ h(oe, { message: "Loading Actions..." }) }) : b && b.permissionStrings?.length > 0 && !Ke ? /* @__PURE__ */ h(_, { children: /* @__PURE__ */ h(ze, {}) }) : ft ? /* @__PURE__ */ h(_, { children: /* @__PURE__ */ h(oe, { message: "Loading Actions..." }) }) : pt ? /* @__PURE__ */ h(_, { children: /* @__PURE__ */ h(se, {
|
|
386
|
+
message: pt.message,
|
|
387
387
|
onRetry: () => W()
|
|
388
|
-
}) }) : /* @__PURE__ */
|
|
388
|
+
}) }) : /* @__PURE__ */ g(_, {
|
|
389
389
|
className: "px-6 lg:px-8 py-6 space-y-6",
|
|
390
390
|
children: [
|
|
391
|
-
/* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ h(ae, {
|
|
392
392
|
title: x("nav.actions", "Actions"),
|
|
393
393
|
description: "Automate tasks — run commands, scripts, or trigger webhooks on your agents",
|
|
394
|
-
actions: /* @__PURE__ */
|
|
395
|
-
primary:
|
|
394
|
+
actions: /* @__PURE__ */ h(Le, {
|
|
395
|
+
primary: qe ? {
|
|
396
396
|
label: x("actions.createAction", "Create Action"),
|
|
397
397
|
onSelect: () => T({ type: "create" }),
|
|
398
|
-
icon: /* @__PURE__ */
|
|
398
|
+
icon: /* @__PURE__ */ h(je, { size: 16 })
|
|
399
399
|
} : void 0,
|
|
400
400
|
actions: [{
|
|
401
401
|
label: x("common.refresh", "Refresh"),
|
|
402
402
|
onSelect: () => void W(),
|
|
403
|
-
icon: /* @__PURE__ */
|
|
403
|
+
icon: /* @__PURE__ */ h(Me, { size: 16 })
|
|
404
404
|
}]
|
|
405
405
|
})
|
|
406
406
|
}),
|
|
407
|
-
/* @__PURE__ */ h(
|
|
407
|
+
/* @__PURE__ */ h(Re, {
|
|
408
|
+
icon: /* @__PURE__ */ h(Ae, { className: "size-4" }),
|
|
409
|
+
children: x("actions.purpose", "Actions are reusable, one-click automations you run on your agents — a shell command, a script, or a webhook trigger. Define an action once (for example \"deploy\", \"run tests\" or \"restart service\") and fire it on demand instead of re-typing commands, so routine work becomes a single button.")
|
|
410
|
+
}),
|
|
411
|
+
/* @__PURE__ */ g("div", {
|
|
408
412
|
"data-tour": "actions-filter-section",
|
|
409
413
|
className: "flex flex-wrap items-center gap-3",
|
|
410
414
|
children: [
|
|
411
|
-
/* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ h(de, {
|
|
412
416
|
value: D,
|
|
413
|
-
onChange:
|
|
417
|
+
onChange: Qe,
|
|
414
418
|
placeholder: x("actions.searchPlaceholder", "Search actions..."),
|
|
415
419
|
className: "w-full sm:w-64"
|
|
416
420
|
}),
|
|
417
|
-
/* @__PURE__ */
|
|
421
|
+
/* @__PURE__ */ h(fe, {
|
|
418
422
|
label: "Type",
|
|
419
423
|
options: Be,
|
|
420
424
|
value: O,
|
|
421
|
-
onChange:
|
|
425
|
+
onChange: $e
|
|
422
426
|
}),
|
|
423
|
-
/* @__PURE__ */
|
|
427
|
+
/* @__PURE__ */ h(fe, {
|
|
424
428
|
label: "Trigger",
|
|
425
429
|
options: Ve,
|
|
426
430
|
value: k,
|
|
427
|
-
onChange:
|
|
431
|
+
onChange: et
|
|
428
432
|
})
|
|
429
433
|
]
|
|
430
434
|
}),
|
|
431
|
-
G.length > 0 && /* @__PURE__ */
|
|
435
|
+
G.length > 0 && /* @__PURE__ */ h("div", {
|
|
432
436
|
"data-tour": "actions-selection-toolbar",
|
|
433
437
|
className: "rounded-lg border border-border-default bg-bg-surface p-4",
|
|
434
|
-
children: /* @__PURE__ */
|
|
438
|
+
children: /* @__PURE__ */ g("div", {
|
|
435
439
|
className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
|
|
436
|
-
children: [/* @__PURE__ */
|
|
440
|
+
children: [/* @__PURE__ */ g("div", {
|
|
437
441
|
className: "flex flex-wrap items-center gap-3",
|
|
438
|
-
children: [/* @__PURE__ */
|
|
442
|
+
children: [/* @__PURE__ */ g("div", {
|
|
439
443
|
className: "flex items-center gap-2",
|
|
440
|
-
children: [/* @__PURE__ */
|
|
441
|
-
checked:
|
|
442
|
-
indeterminate:
|
|
443
|
-
onChange:
|
|
444
|
+
children: [/* @__PURE__ */ h(_e, {
|
|
445
|
+
checked: jt,
|
|
446
|
+
indeterminate: Mt,
|
|
447
|
+
onChange: Pt,
|
|
444
448
|
ariaLabel: "Select all visible actions"
|
|
445
|
-
}), /* @__PURE__ */
|
|
449
|
+
}), /* @__PURE__ */ h("span", {
|
|
446
450
|
className: "text-sm font-medium text-text-primary",
|
|
447
451
|
children: "Select all visible"
|
|
448
452
|
})]
|
|
449
|
-
}), M.size > 0 && /* @__PURE__ */
|
|
453
|
+
}), M.size > 0 && /* @__PURE__ */ h("button", {
|
|
450
454
|
type: "button",
|
|
451
455
|
onClick: $,
|
|
452
456
|
className: "text-sm text-text-secondary hover:text-text-primary",
|
|
453
457
|
children: "Clear selection"
|
|
454
458
|
})]
|
|
455
|
-
}), /* @__PURE__ */
|
|
459
|
+
}), /* @__PURE__ */ g("div", {
|
|
456
460
|
className: "flex flex-wrap items-center gap-2",
|
|
457
461
|
children: [
|
|
458
|
-
/* @__PURE__ */
|
|
462
|
+
/* @__PURE__ */ g("span", {
|
|
459
463
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
|
|
460
464
|
children: [M.size, " selected"]
|
|
461
465
|
}),
|
|
462
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ h("button", {
|
|
463
467
|
type: "button",
|
|
464
468
|
onClick: () => P("execute"),
|
|
465
469
|
disabled: Q.length === 0 || F !== null,
|
|
466
470
|
className: "rounded-md border border-status-success-border px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg disabled:cursor-not-allowed disabled:opacity-50",
|
|
467
|
-
children: /* @__PURE__ */
|
|
471
|
+
children: /* @__PURE__ */ g("span", {
|
|
468
472
|
className: "inline-flex items-center gap-2",
|
|
469
473
|
children: [
|
|
470
|
-
/* @__PURE__ */
|
|
474
|
+
/* @__PURE__ */ h(Ae, { size: 14 }),
|
|
471
475
|
"Execute Selected",
|
|
472
476
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
473
477
|
]
|
|
474
478
|
})
|
|
475
479
|
}),
|
|
476
|
-
/* @__PURE__ */
|
|
480
|
+
/* @__PURE__ */ h("button", {
|
|
477
481
|
type: "button",
|
|
478
|
-
onClick:
|
|
482
|
+
onClick: Ft,
|
|
479
483
|
disabled: Q.length === 0 || F !== null,
|
|
480
484
|
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",
|
|
481
|
-
children: /* @__PURE__ */
|
|
485
|
+
children: /* @__PURE__ */ g("span", {
|
|
482
486
|
className: "inline-flex items-center gap-2",
|
|
483
487
|
children: [
|
|
484
|
-
/* @__PURE__ */
|
|
488
|
+
/* @__PURE__ */ h(ke, { size: 14 }),
|
|
485
489
|
"Duplicate Selected",
|
|
486
490
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
487
491
|
]
|
|
488
492
|
})
|
|
489
493
|
}),
|
|
490
|
-
/* @__PURE__ */
|
|
494
|
+
/* @__PURE__ */ h("button", {
|
|
491
495
|
type: "button",
|
|
492
496
|
onClick: () => P("delete"),
|
|
493
497
|
disabled: Q.length === 0 || F !== null,
|
|
494
498
|
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",
|
|
495
|
-
children: /* @__PURE__ */
|
|
499
|
+
children: /* @__PURE__ */ g("span", {
|
|
496
500
|
className: "inline-flex items-center gap-2",
|
|
497
501
|
children: [
|
|
498
|
-
/* @__PURE__ */
|
|
502
|
+
/* @__PURE__ */ h(Ne, { size: 14 }),
|
|
499
503
|
"Delete Selected",
|
|
500
504
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
501
505
|
]
|
|
@@ -505,26 +509,27 @@ function _() {
|
|
|
505
509
|
})]
|
|
506
510
|
})
|
|
507
511
|
}),
|
|
508
|
-
/* @__PURE__ */ m
|
|
512
|
+
/* @__PURE__ */ h(m, {
|
|
509
513
|
mode: "wait",
|
|
510
|
-
children: G.length === 0 && !
|
|
514
|
+
children: G.length === 0 && !ft && /* @__PURE__ */ h(ue, {
|
|
515
|
+
illustration: "empty-data",
|
|
511
516
|
title: "No actions yet",
|
|
512
517
|
description: "Create your first action to automate commands, scripts, and webhooks",
|
|
513
|
-
action: /* @__PURE__ */
|
|
518
|
+
action: /* @__PURE__ */ g("div", {
|
|
514
519
|
className: "flex items-center gap-2",
|
|
515
|
-
children: [
|
|
520
|
+
children: [qe && /* @__PURE__ */ h("button", {
|
|
516
521
|
type: "button",
|
|
517
522
|
onClick: () => T({ type: "create" }),
|
|
518
523
|
className: "px-4 py-2 rounded-lg bg-action-primary-bg text-action-primary-text hover:opacity-90 text-sm font-medium",
|
|
519
524
|
children: "Create Action"
|
|
520
|
-
}), /* @__PURE__ */
|
|
525
|
+
}), /* @__PURE__ */ h(ge, { prompt: "What is an Action in VibeControls and how do I create one?" })]
|
|
521
526
|
})
|
|
522
527
|
})
|
|
523
528
|
}),
|
|
524
|
-
G.length > 0 && /* @__PURE__ */
|
|
529
|
+
G.length > 0 && /* @__PURE__ */ h("div", {
|
|
525
530
|
"data-tour": "actions-list-container",
|
|
526
531
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
527
|
-
children: G.map((e) => /* @__PURE__ */
|
|
532
|
+
children: G.map((e) => /* @__PURE__ */ h("div", {
|
|
528
533
|
role: "button",
|
|
529
534
|
tabIndex: 0,
|
|
530
535
|
onClick: () => j(e.id),
|
|
@@ -532,87 +537,87 @@ function _() {
|
|
|
532
537
|
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), j(e.id));
|
|
533
538
|
},
|
|
534
539
|
"aria-label": `Select action ${e.displayName || e.name}`,
|
|
535
|
-
children: /* @__PURE__ */
|
|
540
|
+
children: /* @__PURE__ */ h(xe, {
|
|
536
541
|
action: e,
|
|
537
|
-
onExecute:
|
|
542
|
+
onExecute: Dt,
|
|
538
543
|
onEdit: (e) => T({
|
|
539
544
|
type: "edit",
|
|
540
545
|
actionId: e
|
|
541
546
|
}),
|
|
542
|
-
onDuplicate:
|
|
547
|
+
onDuplicate: At,
|
|
543
548
|
onDelete: (t) => T({
|
|
544
549
|
type: "confirmDelete",
|
|
545
550
|
id: t,
|
|
546
551
|
name: e.displayName || e.name
|
|
547
552
|
}),
|
|
548
|
-
onSchedule: (e) =>
|
|
549
|
-
onAddToCalendar: (e) =>
|
|
550
|
-
canUpdate:
|
|
551
|
-
canDelete:
|
|
552
|
-
canExecute:
|
|
553
|
-
isExecuting:
|
|
553
|
+
onSchedule: (e) => v(`/scheduler?actionId=${encodeURIComponent(e)}`),
|
|
554
|
+
onAddToCalendar: (e) => v(`/vibecontrols/calendar?actionId=${encodeURIComponent(e)}`),
|
|
555
|
+
canUpdate: Je,
|
|
556
|
+
canDelete: Ye,
|
|
557
|
+
canExecute: Xe,
|
|
558
|
+
isExecuting: tt === e.id,
|
|
554
559
|
selected: M.has(e.id),
|
|
555
|
-
onToggleSelect: (t) =>
|
|
560
|
+
onToggleSelect: (t) => Nt(e.id, t)
|
|
556
561
|
})
|
|
557
562
|
}, e.id))
|
|
558
563
|
}),
|
|
559
|
-
/* @__PURE__ */ m
|
|
564
|
+
/* @__PURE__ */ h(m, { children: A && K && /* @__PURE__ */ g("div", {
|
|
560
565
|
className: "space-y-3",
|
|
561
|
-
children: [
|
|
566
|
+
children: [We && /* @__PURE__ */ h(Ee, {
|
|
562
567
|
actionId: A,
|
|
563
|
-
workspaceId:
|
|
568
|
+
workspaceId: We,
|
|
564
569
|
actionName: K.displayName || K.name,
|
|
565
570
|
onClose: () => j(null)
|
|
566
|
-
}), /* @__PURE__ */
|
|
571
|
+
}), /* @__PURE__ */ h("div", {
|
|
567
572
|
"data-tour": "actions-execution-history",
|
|
568
|
-
children: /* @__PURE__ */
|
|
569
|
-
executions:
|
|
573
|
+
children: /* @__PURE__ */ h(Te, {
|
|
574
|
+
executions: ht,
|
|
570
575
|
actionName: K.displayName || K.name,
|
|
571
576
|
onClose: () => j(null)
|
|
572
577
|
})
|
|
573
578
|
})]
|
|
574
579
|
}) }),
|
|
575
|
-
/* @__PURE__ */ m
|
|
580
|
+
/* @__PURE__ */ h(m, { children: Ze.length > 0 && /* @__PURE__ */ h("div", {
|
|
576
581
|
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",
|
|
577
|
-
children:
|
|
582
|
+
children: Ze.slice(-3).map((e) => /* @__PURE__ */ g("div", {
|
|
578
583
|
role: "button",
|
|
579
584
|
tabIndex: 0,
|
|
580
585
|
onKeyDown: (t) => {
|
|
581
|
-
(t.key === "Enter" || t.key === " ") && (t.preventDefault(),
|
|
586
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), ut(e.id));
|
|
582
587
|
},
|
|
583
588
|
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"}`,
|
|
584
|
-
onClick: () =>
|
|
585
|
-
children: [/* @__PURE__ */
|
|
589
|
+
onClick: () => ut(e.id),
|
|
590
|
+
children: [/* @__PURE__ */ h("div", {
|
|
586
591
|
className: "font-medium text-sm",
|
|
587
592
|
children: e.message
|
|
588
|
-
}), e.detail && /* @__PURE__ */
|
|
593
|
+
}), e.detail && /* @__PURE__ */ h("pre", {
|
|
589
594
|
className: "text-xs font-mono opacity-80 mt-1 max-h-20 overflow-y-auto whitespace-pre-wrap",
|
|
590
595
|
children: e.detail
|
|
591
596
|
})]
|
|
592
597
|
}, e.id))
|
|
593
598
|
}) }),
|
|
594
|
-
w.type === "create" && /* @__PURE__ */
|
|
599
|
+
w.type === "create" && /* @__PURE__ */ h(we, {
|
|
595
600
|
title: "Create Action",
|
|
596
|
-
agents:
|
|
597
|
-
onSubmit:
|
|
601
|
+
agents: _t,
|
|
602
|
+
onSubmit: wt,
|
|
598
603
|
onCancel: () => T({ type: "none" }),
|
|
599
|
-
isLoading:
|
|
600
|
-
extraSection: /* @__PURE__ */
|
|
604
|
+
isLoading: yt,
|
|
605
|
+
extraSection: /* @__PURE__ */ g("div", {
|
|
601
606
|
className: "space-y-4",
|
|
602
|
-
children: [/* @__PURE__ */
|
|
607
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h3", {
|
|
603
608
|
className: "text-sm font-medium text-text-secondary mb-2",
|
|
604
609
|
children: x("actions.tags", "Tags")
|
|
605
|
-
}), /* @__PURE__ */
|
|
610
|
+
}), /* @__PURE__ */ h(ce, {
|
|
606
611
|
entityType: "VIBECONTROLS_ACTION",
|
|
607
|
-
onDraftChange:
|
|
608
|
-
})] }), /* @__PURE__ */
|
|
612
|
+
onDraftChange: bt
|
|
613
|
+
})] }), /* @__PURE__ */ h(me, {
|
|
609
614
|
value: V,
|
|
610
615
|
onChange: H,
|
|
611
|
-
disabled:
|
|
616
|
+
disabled: yt
|
|
612
617
|
})]
|
|
613
618
|
})
|
|
614
619
|
}),
|
|
615
|
-
w.type === "edit" && Z && /* @__PURE__ */
|
|
620
|
+
w.type === "edit" && Z && /* @__PURE__ */ h(we, {
|
|
616
621
|
title: "Edit Action",
|
|
617
622
|
initialData: {
|
|
618
623
|
name: Z.name,
|
|
@@ -636,83 +641,83 @@ function _() {
|
|
|
636
641
|
retryCount: Z.retryCount || 0,
|
|
637
642
|
confirmationRequired: Z.confirmationRequired ?? !1
|
|
638
643
|
},
|
|
639
|
-
agents:
|
|
640
|
-
onSubmit:
|
|
644
|
+
agents: _t,
|
|
645
|
+
onSubmit: Tt,
|
|
641
646
|
onCancel: () => T({ type: "none" }),
|
|
642
|
-
isLoading:
|
|
643
|
-
extraSection: /* @__PURE__ */
|
|
647
|
+
isLoading: Ct,
|
|
648
|
+
extraSection: /* @__PURE__ */ g("div", {
|
|
644
649
|
className: "space-y-4",
|
|
645
|
-
children: [/* @__PURE__ */
|
|
650
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h3", {
|
|
646
651
|
className: "text-sm font-medium text-text-secondary mb-2",
|
|
647
652
|
children: x("actions.tags", "Tags")
|
|
648
|
-
}), /* @__PURE__ */
|
|
653
|
+
}), /* @__PURE__ */ h(ce, {
|
|
649
654
|
entityType: "VIBECONTROLS_ACTION",
|
|
650
655
|
entityId: Z.id
|
|
651
|
-
})] }), /* @__PURE__ */
|
|
652
|
-
value:
|
|
653
|
-
onChange:
|
|
654
|
-
disabled:
|
|
656
|
+
})] }), /* @__PURE__ */ h(me, {
|
|
657
|
+
value: ct,
|
|
658
|
+
onChange: lt,
|
|
659
|
+
disabled: Ct
|
|
655
660
|
})]
|
|
656
661
|
})
|
|
657
662
|
}),
|
|
658
|
-
w.type === "confirmDelete" && /* @__PURE__ */
|
|
663
|
+
w.type === "confirmDelete" && /* @__PURE__ */ h(o, {
|
|
659
664
|
isOpen: !0,
|
|
660
665
|
title: "Delete Action",
|
|
661
666
|
message: `Are you sure you want to delete "${w.name}"? This cannot be undone.`,
|
|
662
667
|
confirmLabel: "Delete",
|
|
663
668
|
variant: "danger",
|
|
664
|
-
onConfirm:
|
|
669
|
+
onConfirm: Et,
|
|
665
670
|
onClose: () => T({ type: "none" })
|
|
666
671
|
}),
|
|
667
|
-
w.type === "confirmExecute" && /* @__PURE__ */
|
|
672
|
+
w.type === "confirmExecute" && /* @__PURE__ */ h(o, {
|
|
668
673
|
isOpen: !0,
|
|
669
674
|
title: `Execute: ${w.name}`,
|
|
670
675
|
message: `Are you sure you want to execute "${w.name}"?`,
|
|
671
676
|
confirmLabel: "Execute",
|
|
672
677
|
variant: "warning",
|
|
673
|
-
onConfirm:
|
|
678
|
+
onConfirm: Ot,
|
|
674
679
|
onClose: () => T({ type: "none" })
|
|
675
680
|
}),
|
|
676
|
-
/* @__PURE__ */
|
|
677
|
-
isOpen:
|
|
681
|
+
/* @__PURE__ */ h(o, {
|
|
682
|
+
isOpen: rt === "delete",
|
|
678
683
|
title: "Delete Selected Actions",
|
|
679
684
|
message: `Are you sure you want to delete ${Q.length} selected action${Q.length === 1 ? "" : "s"}? This cannot be undone.`,
|
|
680
685
|
confirmLabel: "Delete Actions",
|
|
681
686
|
variant: "danger",
|
|
682
|
-
onConfirm:
|
|
687
|
+
onConfirm: It,
|
|
683
688
|
onClose: () => P(null),
|
|
684
689
|
isLoading: F === "delete"
|
|
685
690
|
}),
|
|
686
|
-
/* @__PURE__ */
|
|
687
|
-
isOpen:
|
|
691
|
+
/* @__PURE__ */ h(o, {
|
|
692
|
+
isOpen: rt === "execute",
|
|
688
693
|
title: "Execute Selected Actions",
|
|
689
694
|
message: `Execute ${Q.length} selected action${Q.length === 1 ? "" : "s"}? This may trigger commands, scripts, or webhooks immediately.`,
|
|
690
695
|
confirmLabel: "Execute Actions",
|
|
691
696
|
variant: "warning",
|
|
692
|
-
onConfirm:
|
|
697
|
+
onConfirm: Lt,
|
|
693
698
|
onClose: () => P(null),
|
|
694
699
|
isLoading: F === "execute"
|
|
695
700
|
}),
|
|
696
|
-
/* @__PURE__ */
|
|
701
|
+
/* @__PURE__ */ h(ne, {
|
|
697
702
|
isOpen: L !== null,
|
|
698
703
|
onClose: () => R(null),
|
|
699
704
|
onConfirm: () => {
|
|
700
|
-
|
|
705
|
+
c(), R(null), v("/billing/plans");
|
|
701
706
|
},
|
|
702
|
-
title: L ?
|
|
703
|
-
message: L ?
|
|
707
|
+
title: L ? re(L).title : void 0,
|
|
708
|
+
message: L ? re(L).message : ""
|
|
704
709
|
}),
|
|
705
|
-
/* @__PURE__ */
|
|
710
|
+
/* @__PURE__ */ h(pe, {
|
|
706
711
|
isOpen: z !== null,
|
|
707
|
-
agentName: z ?
|
|
708
|
-
isLoading:
|
|
712
|
+
agentName: z ? _t.find((e) => e.id === z.agentId)?.name : void 0,
|
|
713
|
+
isLoading: it,
|
|
709
714
|
onClose: () => B(null),
|
|
710
|
-
onConfirm:
|
|
715
|
+
onConfirm: kt
|
|
711
716
|
})
|
|
712
717
|
]
|
|
713
718
|
});
|
|
714
719
|
}
|
|
715
720
|
//#endregion
|
|
716
|
-
export {
|
|
721
|
+
export { v as ActionsPage };
|
|
717
722
|
|
|
718
723
|
//# sourceMappingURL=ActionsPage.js.map
|