@burdenoff/microfe-vibecontrols 2026.520.1 → 2026.520.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 +152 -148
- package/dist/components/agents/AgentForm.js.map +1 -1
- package/dist/components/catalog/CatalogForm.js +46 -42
- package/dist/components/catalog/CatalogForm.js.map +1 -1
- package/dist/components/idp-components/ComponentForm.js +69 -65
- package/dist/components/idp-components/ComponentForm.js.map +1 -1
- package/dist/components/shared/EntityTagPicker.js +5 -1
- package/dist/components/shared/EntityTagPicker.js.map +1 -1
- package/dist/components/tunnels/TunnelCreateWizard.js +45 -54
- package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
- package/dist/hooks/useDraftEntityTags.js +29 -0
- package/dist/hooks/useDraftEntityTags.js.map +1 -0
- package/dist/pages/ActionsPage.js +109 -96
- package/dist/pages/ActionsPage.js.map +1 -1
- package/dist/pages/AgentsPage.js +345 -336
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/CatalogPage.js +107 -97
- package/dist/pages/CatalogPage.js.map +1 -1
- package/dist/pages/ComponentsPage.js +126 -116
- package/dist/pages/ComponentsPage.js.map +1 -1
- package/dist/pages/SessionsPage.js +598 -586
- package/dist/pages/SessionsPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +499 -485
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/VibeDeckPage.js +310 -300
- package/dist/pages/VibeDeckPage.js.map +1 -1
- package/dist/pages/VibesPage.js +309 -296
- package/dist/pages/VibesPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,31 +6,32 @@ import { ErrorState as ae } from "../components/shared/ErrorState.js";
|
|
|
6
6
|
import { ConfirmDialog as o } from "../components/shared/ConfirmDialog.js";
|
|
7
7
|
import { QuotaExhaustedDialog as oe } from "../components/shared/QuotaExhaustedDialog.js";
|
|
8
8
|
import { getQuotaDialogContent as s, isQuotaExhaustedError as c } from "../utils/quotaUtils.js";
|
|
9
|
-
import { EntityTagPicker as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
9
|
+
import { EntityTagPicker as l } from "../components/shared/EntityTagPicker.js";
|
|
10
|
+
import { useDraftEntityTags as se } from "../hooks/useDraftEntityTags.js";
|
|
11
|
+
import { isNative as u, nativeNotify as ce } from "../utils/nativeBridge.js";
|
|
12
|
+
import { EmptyState as le } from "../components/shared/EmptyState.js";
|
|
13
|
+
import { SearchInput as ue } from "../components/shared/SearchInput.js";
|
|
14
|
+
import { FilterDropdown as de } from "../components/shared/FilterDropdown.js";
|
|
15
|
+
import { GetHelpButton as fe } from "../components/shared/GetHelpButton.js";
|
|
16
|
+
import { SelectionCheckbox as pe } from "../components/shared/SelectionCheckbox.js";
|
|
16
17
|
import "../components/shared/index.js";
|
|
17
|
-
import { ActionCard as
|
|
18
|
-
import { ActionForm as
|
|
19
|
-
import { ExecutionHistory as
|
|
20
|
-
import { ActionSchedulesList as
|
|
18
|
+
import { ActionCard as me } from "../components/actions/ActionCard.js";
|
|
19
|
+
import { ActionForm as he } from "../components/actions/ActionForm.js";
|
|
20
|
+
import { ExecutionHistory as ge } from "../components/actions/ExecutionHistory.js";
|
|
21
|
+
import { ActionSchedulesList as _e } from "../components/actions/ActionSchedulesList.js";
|
|
21
22
|
import "../components/actions/index.js";
|
|
22
23
|
import { VIBE_PERMISSIONS as d } from "../constants/permissions.js";
|
|
23
24
|
import { useCallback as f, useMemo as p, useState as m } from "react";
|
|
24
|
-
import { useI18n as
|
|
25
|
-
import { Copy as
|
|
26
|
-
import { useNavigate as
|
|
27
|
-
import { usePermissions as
|
|
25
|
+
import { useI18n as ve } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
26
|
+
import { Copy as ye, Play as be, Plus as xe, RefreshCw as Se, Trash2 as Ce } from "lucide-react";
|
|
27
|
+
import { useNavigate as we } from "react-router-dom";
|
|
28
|
+
import { usePermissions as Te } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
28
29
|
import { AnimatePresence as h } from "framer-motion";
|
|
29
30
|
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
30
31
|
import { MotionPage as v } from "@burdenoff/fe-libs/shared/motion";
|
|
31
|
-
import { AccessDenied as
|
|
32
|
+
import { AccessDenied as Ee } from "@burdenoff/fe-libs/shared/components";
|
|
32
33
|
//#region src/pages/ActionsPage.tsx
|
|
33
|
-
var
|
|
34
|
+
var De = [
|
|
34
35
|
{
|
|
35
36
|
value: "COMMAND",
|
|
36
37
|
label: "Command"
|
|
@@ -47,7 +48,7 @@ var Ee = [
|
|
|
47
48
|
value: "WORKFLOW",
|
|
48
49
|
label: "Workflow"
|
|
49
50
|
}
|
|
50
|
-
],
|
|
51
|
+
], Oe = [
|
|
51
52
|
{
|
|
52
53
|
value: "MANUAL",
|
|
53
54
|
label: "Manual"
|
|
@@ -66,10 +67,10 @@ var Ee = [
|
|
|
66
67
|
}
|
|
67
68
|
];
|
|
68
69
|
function y() {
|
|
69
|
-
let y =
|
|
70
|
+
let y = we(), { workspaceId: b } = ne(), { hasPermission: x, isLoading: S, permissions: C } = Te(), w = ((e) => (t, n) => {
|
|
70
71
|
let r = e.t(t);
|
|
71
72
|
return r === t ? n : r;
|
|
72
|
-
})(
|
|
73
|
+
})(ve()), T = (Array.isArray(C) ? C : C?.permissionStrings)?.some?.((e) => e.startsWith("action:")), ke = T ? x(d.ACTION_LIST) : !0, E = T ? x(d.ACTION_CREATE) : !0, Ae = T ? x(d.ACTION_UPDATE) : !0, je = T ? x(d.ACTION_DELETE) : !0, Me = T ? x(d.ACTION_EXECUTE) : !0, D = S, [O, k] = m({ type: "none" }), [Ne, A] = m([]), [j, Pe] = m(""), [M, Fe] = m(null), [N, Ie] = m(null), [P, F] = m(null), [I, L] = m(/* @__PURE__ */ new Set()), [Le, Re] = m(null), [ze, R] = m(null), [z, B] = m(null), [V, H] = m(null), U = f((e, t, n, r = 1e4) => {
|
|
73
74
|
let i = Date.now() + Math.random();
|
|
74
75
|
A((r) => [...r, {
|
|
75
76
|
message: e,
|
|
@@ -77,9 +78,9 @@ function y() {
|
|
|
77
78
|
detail: n,
|
|
78
79
|
id: i
|
|
79
80
|
}]), t === "success" && setTimeout(() => A((e) => e.filter((e) => e.id !== i)), r);
|
|
80
|
-
}, []),
|
|
81
|
+
}, []), Be = f((e) => {
|
|
81
82
|
A((t) => t.filter((t) => t.id !== e));
|
|
82
|
-
}, []), { data:
|
|
83
|
+
}, []), { data: Ve, loading: He, error: Ue, refetch: W } = a({
|
|
83
84
|
variables: {
|
|
84
85
|
filter: {
|
|
85
86
|
...M && M !== "all" ? { actionType: M } : {},
|
|
@@ -89,20 +90,20 @@ function y() {
|
|
|
89
90
|
pagination: { limit: 50 }
|
|
90
91
|
},
|
|
91
92
|
skip: D
|
|
92
|
-
}), G = p(() =>
|
|
93
|
+
}), G = p(() => Ve?.actions?.items || [], [Ve]), { data: We } = i({
|
|
93
94
|
variables: { id: P },
|
|
94
95
|
skip: !P || D
|
|
95
|
-
}), K =
|
|
96
|
+
}), K = We?.action, Ge = K?.recentExecutions || [], { data: Ke } = ee({
|
|
96
97
|
variables: { pagination: { limit: 100 } },
|
|
97
98
|
fetchPolicy: "cache-and-network",
|
|
98
99
|
skip: D
|
|
99
|
-
}),
|
|
100
|
+
}), qe = p(() => (Ke?.vibecontrolsAgents ?? []).map((e) => ({
|
|
100
101
|
id: e.id,
|
|
101
102
|
name: e.name,
|
|
102
103
|
isActive: e.isActive
|
|
103
|
-
})), [
|
|
104
|
+
})), [Ke]), [Je, { loading: Ye }] = e({ refetchQueries: ["ListActions"] }), { setDraftTagIds: Xe, flushTags: Ze } = se("VIBECONTROLS_ACTION"), [Qe, { loading: $e }] = te({ refetchQueries: ["ListActions", "GetAction"] }), [q] = t({ refetchQueries: ["ListActions"] }), [J] = r({ refetchQueries: ["GetAction"] }), [Y] = n({ refetchQueries: ["ListActions"] }), et = f(async (e) => {
|
|
104
105
|
try {
|
|
105
|
-
let t = await
|
|
106
|
+
let t = await Je({ variables: { input: {
|
|
106
107
|
name: e.name,
|
|
107
108
|
displayName: e.displayName || null,
|
|
108
109
|
description: e.description || null,
|
|
@@ -128,7 +129,8 @@ function y() {
|
|
|
128
129
|
k({ type: "none" }), H("action");
|
|
129
130
|
return;
|
|
130
131
|
}
|
|
131
|
-
|
|
132
|
+
let n = t.data?.createAction?.id;
|
|
133
|
+
n && await Ze(n), k({ type: "none" }), U("Action created", "success");
|
|
132
134
|
} catch (e) {
|
|
133
135
|
if (c(e)) {
|
|
134
136
|
k({ type: "none" }), H("action");
|
|
@@ -136,9 +138,13 @@ function y() {
|
|
|
136
138
|
}
|
|
137
139
|
U(e instanceof Error ? e.message : "Failed to create action", "error");
|
|
138
140
|
}
|
|
139
|
-
}, [
|
|
141
|
+
}, [
|
|
142
|
+
Je,
|
|
143
|
+
Ze,
|
|
144
|
+
U
|
|
145
|
+
]), tt = f(async (e) => {
|
|
140
146
|
if (O.type === "edit") try {
|
|
141
|
-
await
|
|
147
|
+
await Qe({ variables: {
|
|
142
148
|
id: O.actionId,
|
|
143
149
|
input: {
|
|
144
150
|
displayName: e.displayName || null,
|
|
@@ -166,21 +172,21 @@ function y() {
|
|
|
166
172
|
U(e instanceof Error ? e.message : "Failed to update action", "error");
|
|
167
173
|
}
|
|
168
174
|
}, [
|
|
169
|
-
|
|
175
|
+
Qe,
|
|
170
176
|
O,
|
|
171
177
|
U
|
|
172
|
-
]),
|
|
178
|
+
]), nt = f(async () => {
|
|
173
179
|
if (O.type === "confirmDelete") try {
|
|
174
|
-
await q({ variables: { id: O.id } }), P === O.id && F(null), k({ type: "none" }), U("Action deleted", "success"),
|
|
180
|
+
await q({ variables: { id: O.id } }), P === O.id && F(null), k({ type: "none" }), U("Action deleted", "success"), u() && ce("success");
|
|
175
181
|
} catch (e) {
|
|
176
|
-
U(e instanceof Error ? e.message : "Failed to delete action", "error"),
|
|
182
|
+
U(e instanceof Error ? e.message : "Failed to delete action", "error"), u() && ce("error");
|
|
177
183
|
}
|
|
178
184
|
}, [
|
|
179
185
|
O,
|
|
180
186
|
q,
|
|
181
187
|
P,
|
|
182
188
|
U
|
|
183
|
-
]),
|
|
189
|
+
]), rt = async (e) => {
|
|
184
190
|
let t = G.find((t) => t.id === e);
|
|
185
191
|
if (t) {
|
|
186
192
|
if (t.confirmationRequired) {
|
|
@@ -194,7 +200,7 @@ function y() {
|
|
|
194
200
|
await X(e);
|
|
195
201
|
}
|
|
196
202
|
}, X = f(async (e) => {
|
|
197
|
-
|
|
203
|
+
Re(e);
|
|
198
204
|
try {
|
|
199
205
|
let t = await J({ variables: { id: e } });
|
|
200
206
|
if (t.error && c(t.error)) {
|
|
@@ -210,13 +216,13 @@ function y() {
|
|
|
210
216
|
}
|
|
211
217
|
U(e instanceof Error ? e.message : "Execution failed", "error");
|
|
212
218
|
} finally {
|
|
213
|
-
|
|
219
|
+
Re(null);
|
|
214
220
|
}
|
|
215
|
-
}, [J, U]),
|
|
221
|
+
}, [J, U]), it = f(async () => {
|
|
216
222
|
if (O.type !== "confirmExecute") return;
|
|
217
223
|
let e = O.actionId;
|
|
218
224
|
k({ type: "none" }), await X(e);
|
|
219
|
-
}, [O, X]),
|
|
225
|
+
}, [O, X]), at = f(async (e) => {
|
|
220
226
|
let t = G.find((t) => t.id === e);
|
|
221
227
|
if (t) try {
|
|
222
228
|
await Y({ variables: {
|
|
@@ -230,12 +236,12 @@ function y() {
|
|
|
230
236
|
G,
|
|
231
237
|
Y,
|
|
232
238
|
U
|
|
233
|
-
]), Z = p(() => O.type === "edit" && G.find((e) => e.id === O.actionId) || null, [O, G]), Q = p(() => G.filter((e) => I.has(e.id)), [G, I]),
|
|
239
|
+
]), Z = p(() => O.type === "edit" && G.find((e) => e.id === O.actionId) || null, [O, G]), Q = p(() => G.filter((e) => I.has(e.id)), [G, I]), ot = G.length > 0 && G.every((e) => I.has(e.id)), st = G.some((e) => I.has(e.id)) && !ot, ct = f((e, t) => {
|
|
234
240
|
L((n) => {
|
|
235
241
|
let r = new Set(n);
|
|
236
242
|
return t ? r.add(e) : r.delete(e), r;
|
|
237
243
|
});
|
|
238
|
-
}, []),
|
|
244
|
+
}, []), lt = f((e) => {
|
|
239
245
|
L((t) => {
|
|
240
246
|
let n = new Set(t);
|
|
241
247
|
return G.forEach((t) => {
|
|
@@ -244,7 +250,7 @@ function y() {
|
|
|
244
250
|
});
|
|
245
251
|
}, [G]), $ = f(() => {
|
|
246
252
|
L(/* @__PURE__ */ new Set());
|
|
247
|
-
}, []),
|
|
253
|
+
}, []), ut = f(async () => {
|
|
248
254
|
if (Q.length !== 0) {
|
|
249
255
|
B("duplicate");
|
|
250
256
|
try {
|
|
@@ -265,7 +271,7 @@ function y() {
|
|
|
265
271
|
U,
|
|
266
272
|
$,
|
|
267
273
|
W
|
|
268
|
-
]),
|
|
274
|
+
]), dt = f(async () => {
|
|
269
275
|
if (Q.length !== 0) {
|
|
270
276
|
B("delete");
|
|
271
277
|
try {
|
|
@@ -285,7 +291,7 @@ function y() {
|
|
|
285
291
|
U,
|
|
286
292
|
$,
|
|
287
293
|
W
|
|
288
|
-
]),
|
|
294
|
+
]), ft = f(async () => {
|
|
289
295
|
if (Q.length === 0) return;
|
|
290
296
|
B("execute");
|
|
291
297
|
let e = 0, t = 0, n = !1;
|
|
@@ -319,8 +325,8 @@ function y() {
|
|
|
319
325
|
P,
|
|
320
326
|
W
|
|
321
327
|
]);
|
|
322
|
-
return !S && C && C.permissionStrings?.length > 0 && !
|
|
323
|
-
message:
|
|
328
|
+
return !S && C && C.permissionStrings?.length > 0 && !ke ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(Ee, {}) }) : He ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(ie, { message: "Loading Actions..." }) }) : Ue ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(ae, {
|
|
329
|
+
message: Ue.message,
|
|
324
330
|
onRetry: () => W()
|
|
325
331
|
}) }) : /* @__PURE__ */ _(v, {
|
|
326
332
|
className: "p-4 sm:p-6 space-y-6",
|
|
@@ -334,34 +340,34 @@ function y() {
|
|
|
334
340
|
onClick: () => W(),
|
|
335
341
|
className: "p-2 rounded-lg hover:bg-bg-tertiary text-text-tertiary hover:text-text-primary transition-colors",
|
|
336
342
|
title: "Refresh",
|
|
337
|
-
children: /* @__PURE__ */ g(
|
|
343
|
+
children: /* @__PURE__ */ g(Se, { size: 16 })
|
|
338
344
|
}), E && /* @__PURE__ */ _("button", {
|
|
339
345
|
onClick: () => k({ type: "create" }),
|
|
340
346
|
className: "inline-flex items-center gap-1.5 px-4 py-2 rounded-lg bg-action-primary-bg text-action-primary-text hover:opacity-90 text-sm font-medium transition-opacity",
|
|
341
|
-
children: [/* @__PURE__ */ g(
|
|
347
|
+
children: [/* @__PURE__ */ g(xe, { size: 16 }), "Create Action"]
|
|
342
348
|
})]
|
|
343
349
|
})
|
|
344
350
|
}),
|
|
345
351
|
/* @__PURE__ */ _("div", {
|
|
346
352
|
className: "flex flex-wrap items-center gap-3",
|
|
347
353
|
children: [
|
|
348
|
-
/* @__PURE__ */ g(
|
|
354
|
+
/* @__PURE__ */ g(ue, {
|
|
349
355
|
value: j,
|
|
350
|
-
onChange:
|
|
356
|
+
onChange: Pe,
|
|
351
357
|
placeholder: w("actions.searchPlaceholder", "Search actions..."),
|
|
352
358
|
className: "w-full sm:w-64"
|
|
353
359
|
}),
|
|
354
|
-
/* @__PURE__ */ g(
|
|
360
|
+
/* @__PURE__ */ g(de, {
|
|
355
361
|
label: "Type",
|
|
356
|
-
options:
|
|
362
|
+
options: De,
|
|
357
363
|
value: M,
|
|
358
|
-
onChange:
|
|
364
|
+
onChange: Fe
|
|
359
365
|
}),
|
|
360
|
-
/* @__PURE__ */ g(
|
|
366
|
+
/* @__PURE__ */ g(de, {
|
|
361
367
|
label: "Trigger",
|
|
362
|
-
options:
|
|
368
|
+
options: Oe,
|
|
363
369
|
value: N,
|
|
364
|
-
onChange:
|
|
370
|
+
onChange: Ie
|
|
365
371
|
})
|
|
366
372
|
]
|
|
367
373
|
}),
|
|
@@ -373,10 +379,10 @@ function y() {
|
|
|
373
379
|
className: "flex flex-wrap items-center gap-3",
|
|
374
380
|
children: [/* @__PURE__ */ _("div", {
|
|
375
381
|
className: "flex items-center gap-2",
|
|
376
|
-
children: [/* @__PURE__ */ g(
|
|
377
|
-
checked:
|
|
378
|
-
indeterminate:
|
|
379
|
-
onChange:
|
|
382
|
+
children: [/* @__PURE__ */ g(pe, {
|
|
383
|
+
checked: ot,
|
|
384
|
+
indeterminate: st,
|
|
385
|
+
onChange: lt,
|
|
380
386
|
ariaLabel: "Select all visible actions"
|
|
381
387
|
}), /* @__PURE__ */ g("span", {
|
|
382
388
|
className: "text-sm font-medium text-text-primary",
|
|
@@ -401,20 +407,20 @@ function y() {
|
|
|
401
407
|
children: /* @__PURE__ */ _("span", {
|
|
402
408
|
className: "inline-flex items-center gap-2",
|
|
403
409
|
children: [
|
|
404
|
-
/* @__PURE__ */ g(
|
|
410
|
+
/* @__PURE__ */ g(be, { size: 14 }),
|
|
405
411
|
"Execute Selected",
|
|
406
412
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
407
413
|
]
|
|
408
414
|
})
|
|
409
415
|
}),
|
|
410
416
|
/* @__PURE__ */ g("button", {
|
|
411
|
-
onClick:
|
|
417
|
+
onClick: ut,
|
|
412
418
|
disabled: Q.length === 0 || z !== null,
|
|
413
419
|
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",
|
|
414
420
|
children: /* @__PURE__ */ _("span", {
|
|
415
421
|
className: "inline-flex items-center gap-2",
|
|
416
422
|
children: [
|
|
417
|
-
/* @__PURE__ */ g(
|
|
423
|
+
/* @__PURE__ */ g(ye, { size: 14 }),
|
|
418
424
|
"Duplicate Selected",
|
|
419
425
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
420
426
|
]
|
|
@@ -427,7 +433,7 @@ function y() {
|
|
|
427
433
|
children: /* @__PURE__ */ _("span", {
|
|
428
434
|
className: "inline-flex items-center gap-2",
|
|
429
435
|
children: [
|
|
430
|
-
/* @__PURE__ */ g(
|
|
436
|
+
/* @__PURE__ */ g(Ce, { size: 14 }),
|
|
431
437
|
"Delete Selected",
|
|
432
438
|
Q.length > 0 ? ` (${Q.length})` : ""
|
|
433
439
|
]
|
|
@@ -439,7 +445,7 @@ function y() {
|
|
|
439
445
|
}),
|
|
440
446
|
/* @__PURE__ */ g(h, {
|
|
441
447
|
mode: "wait",
|
|
442
|
-
children: G.length === 0 && !
|
|
448
|
+
children: G.length === 0 && !He && /* @__PURE__ */ g(le, {
|
|
443
449
|
title: "No actions yet",
|
|
444
450
|
description: "Create your first action to automate commands, scripts, and webhooks",
|
|
445
451
|
action: /* @__PURE__ */ _("div", {
|
|
@@ -448,7 +454,7 @@ function y() {
|
|
|
448
454
|
onClick: () => k({ type: "create" }),
|
|
449
455
|
className: "px-4 py-2 rounded-lg bg-action-primary-bg text-action-primary-text hover:opacity-90 text-sm font-medium",
|
|
450
456
|
children: "Create Action"
|
|
451
|
-
}), /* @__PURE__ */ g(
|
|
457
|
+
}), /* @__PURE__ */ g(fe, { prompt: "What is an Action in VibeControls and how do I create one?" })]
|
|
452
458
|
})
|
|
453
459
|
})
|
|
454
460
|
}),
|
|
@@ -462,14 +468,14 @@ function y() {
|
|
|
462
468
|
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), F(e.id));
|
|
463
469
|
},
|
|
464
470
|
"aria-label": `Select action ${e.displayName || e.name}`,
|
|
465
|
-
children: /* @__PURE__ */ g(
|
|
471
|
+
children: /* @__PURE__ */ g(me, {
|
|
466
472
|
action: e,
|
|
467
|
-
onExecute:
|
|
473
|
+
onExecute: rt,
|
|
468
474
|
onEdit: (e) => k({
|
|
469
475
|
type: "edit",
|
|
470
476
|
actionId: e
|
|
471
477
|
}),
|
|
472
|
-
onDuplicate:
|
|
478
|
+
onDuplicate: at,
|
|
473
479
|
onDelete: (t) => k({
|
|
474
480
|
type: "confirmDelete",
|
|
475
481
|
id: t,
|
|
@@ -477,33 +483,33 @@ function y() {
|
|
|
477
483
|
}),
|
|
478
484
|
onSchedule: (e) => y(`/scheduler?actionId=${encodeURIComponent(e)}`),
|
|
479
485
|
onAddToCalendar: (e) => y(`/vibecontrols/calendar?actionId=${encodeURIComponent(e)}`),
|
|
480
|
-
canUpdate:
|
|
481
|
-
canDelete:
|
|
482
|
-
canExecute:
|
|
483
|
-
isExecuting:
|
|
486
|
+
canUpdate: Ae,
|
|
487
|
+
canDelete: je,
|
|
488
|
+
canExecute: Me,
|
|
489
|
+
isExecuting: Le === e.id,
|
|
484
490
|
selected: I.has(e.id),
|
|
485
|
-
onToggleSelect: (t) =>
|
|
491
|
+
onToggleSelect: (t) => ct(e.id, t)
|
|
486
492
|
})
|
|
487
493
|
}, e.id))
|
|
488
494
|
}),
|
|
489
495
|
/* @__PURE__ */ g(h, { children: P && K && /* @__PURE__ */ _("div", {
|
|
490
496
|
className: "space-y-3",
|
|
491
|
-
children: [b && /* @__PURE__ */ g(
|
|
497
|
+
children: [b && /* @__PURE__ */ g(_e, {
|
|
492
498
|
actionId: P,
|
|
493
499
|
workspaceId: b,
|
|
494
500
|
actionName: K.displayName || K.name,
|
|
495
501
|
onClose: () => F(null)
|
|
496
|
-
}), /* @__PURE__ */ g(
|
|
497
|
-
executions:
|
|
502
|
+
}), /* @__PURE__ */ g(ge, {
|
|
503
|
+
executions: Ge,
|
|
498
504
|
actionName: K.displayName || K.name,
|
|
499
505
|
onClose: () => F(null)
|
|
500
506
|
})]
|
|
501
507
|
}) }),
|
|
502
|
-
/* @__PURE__ */ g(h, { children:
|
|
508
|
+
/* @__PURE__ */ g(h, { children: Ne.length > 0 && /* @__PURE__ */ g("div", {
|
|
503
509
|
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",
|
|
504
|
-
children:
|
|
510
|
+
children: Ne.slice(-3).map((e) => /* @__PURE__ */ _("div", {
|
|
505
511
|
className: `p-4 rounded-xl shadow-lg border cursor-pointer ${e.variant === "success" ? "bg-status-success-bg/10 border-status-success-border/30 text-status-success-text" : "bg-status-error-bg/10 border-status-error-border/30 text-status-error-text"}`,
|
|
506
|
-
onClick: () =>
|
|
512
|
+
onClick: () => Be(e.id),
|
|
507
513
|
children: [/* @__PURE__ */ g("div", {
|
|
508
514
|
className: "font-medium text-sm",
|
|
509
515
|
children: e.message
|
|
@@ -513,14 +519,21 @@ function y() {
|
|
|
513
519
|
})]
|
|
514
520
|
}, e.id))
|
|
515
521
|
}) }),
|
|
516
|
-
O.type === "create" && /* @__PURE__ */ g(
|
|
522
|
+
O.type === "create" && /* @__PURE__ */ g(he, {
|
|
517
523
|
title: "Create Action",
|
|
518
|
-
agents:
|
|
519
|
-
onSubmit:
|
|
524
|
+
agents: qe,
|
|
525
|
+
onSubmit: et,
|
|
520
526
|
onCancel: () => k({ type: "none" }),
|
|
521
|
-
isLoading:
|
|
527
|
+
isLoading: Ye,
|
|
528
|
+
extraSection: /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h3", {
|
|
529
|
+
className: "text-sm font-medium text-text-secondary mb-2",
|
|
530
|
+
children: w("actions.tags", "Tags")
|
|
531
|
+
}), /* @__PURE__ */ g(l, {
|
|
532
|
+
entityType: "VIBECONTROLS_ACTION",
|
|
533
|
+
onDraftChange: Xe
|
|
534
|
+
})] })
|
|
522
535
|
}),
|
|
523
|
-
O.type === "edit" && Z && /* @__PURE__ */ g(
|
|
536
|
+
O.type === "edit" && Z && /* @__PURE__ */ g(he, {
|
|
524
537
|
title: "Edit Action",
|
|
525
538
|
initialData: {
|
|
526
539
|
name: Z.name,
|
|
@@ -544,14 +557,14 @@ function y() {
|
|
|
544
557
|
retryCount: Z.retryCount || 0,
|
|
545
558
|
confirmationRequired: Z.confirmationRequired ?? !1
|
|
546
559
|
},
|
|
547
|
-
agents:
|
|
548
|
-
onSubmit:
|
|
560
|
+
agents: qe,
|
|
561
|
+
onSubmit: tt,
|
|
549
562
|
onCancel: () => k({ type: "none" }),
|
|
550
|
-
isLoading:
|
|
563
|
+
isLoading: $e,
|
|
551
564
|
extraSection: /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h3", {
|
|
552
565
|
className: "text-sm font-medium text-text-secondary mb-2",
|
|
553
|
-
children: "Tags"
|
|
554
|
-
}), /* @__PURE__ */ g(
|
|
566
|
+
children: w("actions.tags", "Tags")
|
|
567
|
+
}), /* @__PURE__ */ g(l, {
|
|
555
568
|
entityType: "VIBECONTROLS_ACTION",
|
|
556
569
|
entityId: Z.id
|
|
557
570
|
})] })
|
|
@@ -562,7 +575,7 @@ function y() {
|
|
|
562
575
|
message: `Are you sure you want to delete "${O.name}"? This cannot be undone.`,
|
|
563
576
|
confirmLabel: "Delete",
|
|
564
577
|
variant: "danger",
|
|
565
|
-
onConfirm:
|
|
578
|
+
onConfirm: nt,
|
|
566
579
|
onClose: () => k({ type: "none" })
|
|
567
580
|
}),
|
|
568
581
|
O.type === "confirmExecute" && /* @__PURE__ */ g(o, {
|
|
@@ -571,26 +584,26 @@ function y() {
|
|
|
571
584
|
message: `Are you sure you want to execute "${O.name}"?`,
|
|
572
585
|
confirmLabel: "Execute",
|
|
573
586
|
variant: "warning",
|
|
574
|
-
onConfirm:
|
|
587
|
+
onConfirm: it,
|
|
575
588
|
onClose: () => k({ type: "none" })
|
|
576
589
|
}),
|
|
577
590
|
/* @__PURE__ */ g(o, {
|
|
578
|
-
isOpen:
|
|
591
|
+
isOpen: ze === "delete",
|
|
579
592
|
title: "Delete Selected Actions",
|
|
580
593
|
message: `Are you sure you want to delete ${Q.length} selected action${Q.length === 1 ? "" : "s"}? This cannot be undone.`,
|
|
581
594
|
confirmLabel: "Delete Actions",
|
|
582
595
|
variant: "danger",
|
|
583
|
-
onConfirm:
|
|
596
|
+
onConfirm: dt,
|
|
584
597
|
onClose: () => R(null),
|
|
585
598
|
isLoading: z === "delete"
|
|
586
599
|
}),
|
|
587
600
|
/* @__PURE__ */ g(o, {
|
|
588
|
-
isOpen:
|
|
601
|
+
isOpen: ze === "execute",
|
|
589
602
|
title: "Execute Selected Actions",
|
|
590
603
|
message: `Execute ${Q.length} selected action${Q.length === 1 ? "" : "s"}? This may trigger commands, scripts, or webhooks immediately.`,
|
|
591
604
|
confirmLabel: "Execute Actions",
|
|
592
605
|
variant: "warning",
|
|
593
|
-
onConfirm:
|
|
606
|
+
onConfirm: ft,
|
|
594
607
|
onClose: () => R(null),
|
|
595
608
|
isLoading: z === "execute"
|
|
596
609
|
}),
|