@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.
@@ -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 se } from "../components/shared/EntityTagPicker.js";
10
- import { isNative as l, nativeNotify as u } from "../utils/nativeBridge.js";
11
- import { EmptyState as ce } from "../components/shared/EmptyState.js";
12
- import { SearchInput as le } from "../components/shared/SearchInput.js";
13
- import { FilterDropdown as ue } from "../components/shared/FilterDropdown.js";
14
- import { GetHelpButton as de } from "../components/shared/GetHelpButton.js";
15
- import { SelectionCheckbox as fe } from "../components/shared/SelectionCheckbox.js";
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 pe } from "../components/actions/ActionCard.js";
18
- import { ActionForm as me } from "../components/actions/ActionForm.js";
19
- import { ExecutionHistory as he } from "../components/actions/ExecutionHistory.js";
20
- import { ActionSchedulesList as ge } from "../components/actions/ActionSchedulesList.js";
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 _e } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
25
- import { Copy as ve, Play as ye, Plus as be, RefreshCw as xe, Trash2 as Se } from "lucide-react";
26
- import { useNavigate as Ce } from "react-router-dom";
27
- import { usePermissions as we } from "@burdenoff/fe-libs/shared/providers/shell";
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 Te } from "@burdenoff/fe-libs/shared/components";
32
+ import { AccessDenied as Ee } from "@burdenoff/fe-libs/shared/components";
32
33
  //#region src/pages/ActionsPage.tsx
33
- var Ee = [
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
- ], De = [
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 = Ce(), { workspaceId: b } = ne(), { hasPermission: x, isLoading: S, permissions: C } = we(), w = ((e) => (t, n) => {
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
- })(_e()), T = (Array.isArray(C) ? C : C?.permissionStrings)?.some?.((e) => e.startsWith("action:")), Oe = T ? x(d.ACTION_LIST) : !0, E = T ? x(d.ACTION_CREATE) : !0, ke = T ? x(d.ACTION_UPDATE) : !0, Ae = T ? x(d.ACTION_DELETE) : !0, je = T ? x(d.ACTION_EXECUTE) : !0, D = S, [O, k] = m({ type: "none" }), [Me, A] = m([]), [j, Ne] = m(""), [M, Pe] = m(null), [N, Fe] = m(null), [P, F] = m(null), [I, L] = m(/* @__PURE__ */ new Set()), [Ie, Le] = m(null), [Re, R] = m(null), [z, B] = m(null), [V, H] = m(null), U = f((e, t, n, r = 1e4) => {
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
- }, []), ze = f((e) => {
81
+ }, []), Be = f((e) => {
81
82
  A((t) => t.filter((t) => t.id !== e));
82
- }, []), { data: Be, loading: Ve, error: He, refetch: W } = a({
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(() => Be?.actions?.items || [], [Be]), { data: Ue } = i({
93
+ }), G = p(() => Ve?.actions?.items || [], [Ve]), { data: We } = i({
93
94
  variables: { id: P },
94
95
  skip: !P || D
95
- }), K = Ue?.action, We = K?.recentExecutions || [], { data: Ge } = ee({
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
- }), Ke = p(() => (Ge?.vibecontrolsAgents ?? []).map((e) => ({
100
+ }), qe = p(() => (Ke?.vibecontrolsAgents ?? []).map((e) => ({
100
101
  id: e.id,
101
102
  name: e.name,
102
103
  isActive: e.isActive
103
- })), [Ge]), [qe, { loading: Je }] = e({ refetchQueries: ["ListActions"] }), [Ye, { loading: Xe }] = te({ refetchQueries: ["ListActions", "GetAction"] }), [q] = t({ refetchQueries: ["ListActions"] }), [J] = r({ refetchQueries: ["GetAction"] }), [Y] = n({ refetchQueries: ["ListActions"] }), Ze = f(async (e) => {
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 qe({ variables: { input: {
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
- k({ type: "none" }), U("Action created", "success");
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
- }, [qe, U]), Qe = f(async (e) => {
141
+ }, [
142
+ Je,
143
+ Ze,
144
+ U
145
+ ]), tt = f(async (e) => {
140
146
  if (O.type === "edit") try {
141
- await Ye({ variables: {
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
- Ye,
175
+ Qe,
170
176
  O,
171
177
  U
172
- ]), $e = f(async () => {
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"), l() && u("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"), l() && u("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
- ]), et = async (e) => {
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
- Le(e);
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
- Le(null);
219
+ Re(null);
214
220
  }
215
- }, [J, U]), tt = f(async () => {
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]), nt = f(async (e) => {
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]), rt = G.length > 0 && G.every((e) => I.has(e.id)), it = G.some((e) => I.has(e.id)) && !rt, at = f((e, t) => {
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
- }, []), ot = f((e) => {
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
- }, []), st = f(async () => {
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
- ]), ct = f(async () => {
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
- ]), lt = f(async () => {
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 && !Oe ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(Te, {}) }) : Ve ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(ie, { message: "Loading Actions..." }) }) : He ? /* @__PURE__ */ g(v, { children: /* @__PURE__ */ g(ae, {
323
- message: He.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(xe, { size: 16 })
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(be, { size: 16 }), "Create Action"]
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(le, {
354
+ /* @__PURE__ */ g(ue, {
349
355
  value: j,
350
- onChange: Ne,
356
+ onChange: Pe,
351
357
  placeholder: w("actions.searchPlaceholder", "Search actions..."),
352
358
  className: "w-full sm:w-64"
353
359
  }),
354
- /* @__PURE__ */ g(ue, {
360
+ /* @__PURE__ */ g(de, {
355
361
  label: "Type",
356
- options: Ee,
362
+ options: De,
357
363
  value: M,
358
- onChange: Pe
364
+ onChange: Fe
359
365
  }),
360
- /* @__PURE__ */ g(ue, {
366
+ /* @__PURE__ */ g(de, {
361
367
  label: "Trigger",
362
- options: De,
368
+ options: Oe,
363
369
  value: N,
364
- onChange: Fe
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(fe, {
377
- checked: rt,
378
- indeterminate: it,
379
- onChange: ot,
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(ye, { size: 14 }),
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: st,
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(ve, { size: 14 }),
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(Se, { size: 14 }),
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 && !Ve && /* @__PURE__ */ g(ce, {
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(de, { prompt: "What is an Action in VibeControls and how do I create one?" })]
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(pe, {
471
+ children: /* @__PURE__ */ g(me, {
466
472
  action: e,
467
- onExecute: et,
473
+ onExecute: rt,
468
474
  onEdit: (e) => k({
469
475
  type: "edit",
470
476
  actionId: e
471
477
  }),
472
- onDuplicate: nt,
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: ke,
481
- canDelete: Ae,
482
- canExecute: je,
483
- isExecuting: Ie === e.id,
486
+ canUpdate: Ae,
487
+ canDelete: je,
488
+ canExecute: Me,
489
+ isExecuting: Le === e.id,
484
490
  selected: I.has(e.id),
485
- onToggleSelect: (t) => at(e.id, 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(ge, {
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(he, {
497
- executions: We,
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: Me.length > 0 && /* @__PURE__ */ g("div", {
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: Me.slice(-3).map((e) => /* @__PURE__ */ _("div", {
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: () => ze(e.id),
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(me, {
522
+ O.type === "create" && /* @__PURE__ */ g(he, {
517
523
  title: "Create Action",
518
- agents: Ke,
519
- onSubmit: Ze,
524
+ agents: qe,
525
+ onSubmit: et,
520
526
  onCancel: () => k({ type: "none" }),
521
- isLoading: Je
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(me, {
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: Ke,
548
- onSubmit: Qe,
560
+ agents: qe,
561
+ onSubmit: tt,
549
562
  onCancel: () => k({ type: "none" }),
550
- isLoading: Xe,
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(se, {
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: $e,
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: tt,
587
+ onConfirm: it,
575
588
  onClose: () => k({ type: "none" })
576
589
  }),
577
590
  /* @__PURE__ */ g(o, {
578
- isOpen: Re === "delete",
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: ct,
596
+ onConfirm: dt,
584
597
  onClose: () => R(null),
585
598
  isLoading: z === "delete"
586
599
  }),
587
600
  /* @__PURE__ */ g(o, {
588
- isOpen: Re === "execute",
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: lt,
606
+ onConfirm: ft,
594
607
  onClose: () => R(null),
595
608
  isLoading: z === "execute"
596
609
  }),