@burdenoff/microfe-vibecontrols 2026.601.4 → 2026.601.6
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/generated/wspace-operations.js +6 -2
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js +17 -0
- package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -0
- package/dist/pages/AgentDetailsPage.js +136 -115
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/AgentGraphPage.js +65 -65
- package/dist/pages/AgentGraphPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +105 -92
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/VibeCalendarPage.js +2 -1
- package/dist/pages/VibeCalendarPage.js.map +1 -1
- package/dist/providers/VibeControlsProvider.js +147 -113
- package/dist/providers/VibeControlsProvider.js.map +1 -1
- package/package.json +1 -1
|
@@ -342,11 +342,11 @@ function Ft() {
|
|
|
342
342
|
Hn,
|
|
343
343
|
P
|
|
344
344
|
]);
|
|
345
|
-
let [U, Wn] = m([]), [Gn, Kn] = m([]), [qn, Jn] = m(!0), [W, G] = m(null), [Yn, K] = m(null), [Xn, Zn] = m(!1), [Qn, $n] = m(!1), [er, tr] = m(!1), [nr, rr] = m(!1), [ir, ar] = m("plugin"),
|
|
345
|
+
let [U, Wn] = m([]), [Gn, Kn] = m([]), [qn, Jn] = m(!0), [W, G] = m(null), [Yn, K] = m(null), [Xn, Zn] = m(!1), [Qn, $n] = m(!1), [er, tr] = m(!1), [nr, rr] = m(!1), [ir, ar] = m(!1), [or, sr] = m("plugin"), cr = p(null), [q, lr] = m("installed"), [J, ur] = m(""), [Y, dr] = m([]), [fr, pr] = m(!1), [mr, hr] = m(null), [gr, _r] = m(null), [vr] = e(), [yr] = ee(), [br] = o(), [xr] = c(), X = d(async () => {
|
|
346
346
|
if (F?.id) {
|
|
347
347
|
Jn(!0), K(null);
|
|
348
348
|
try {
|
|
349
|
-
let { data: e } = await
|
|
349
|
+
let { data: e } = await vr({ variables: {
|
|
350
350
|
agentId: F.id,
|
|
351
351
|
profile: z
|
|
352
352
|
} }), t = e?.agentPlugins;
|
|
@@ -386,23 +386,23 @@ function Ft() {
|
|
|
386
386
|
}
|
|
387
387
|
}, [
|
|
388
388
|
F?.id,
|
|
389
|
-
|
|
389
|
+
vr,
|
|
390
390
|
z
|
|
391
391
|
]);
|
|
392
392
|
f(() => {
|
|
393
393
|
if (!F?.id) return;
|
|
394
394
|
let e = `${F.id}:${z}`;
|
|
395
|
-
|
|
395
|
+
cr.current !== e && (cr.current = e, X());
|
|
396
396
|
}, [
|
|
397
397
|
F?.id,
|
|
398
398
|
z,
|
|
399
399
|
X
|
|
400
400
|
]);
|
|
401
|
-
let
|
|
401
|
+
let Sr = d(async (e) => {
|
|
402
402
|
if (F?.id) {
|
|
403
403
|
G(e);
|
|
404
404
|
try {
|
|
405
|
-
let { data: t } = await
|
|
405
|
+
let { data: t } = await yr({ variables: {
|
|
406
406
|
agentId: F.id,
|
|
407
407
|
packageName: e
|
|
408
408
|
} });
|
|
@@ -410,7 +410,7 @@ function Ft() {
|
|
|
410
410
|
else throw Error(t?.installAgentPlugin?.error || C("agentDetails.installFailed", "Install failed"));
|
|
411
411
|
} catch (e) {
|
|
412
412
|
if (ue(e)) {
|
|
413
|
-
de(),
|
|
413
|
+
de(), sr("plugin"), ar(!0);
|
|
414
414
|
return;
|
|
415
415
|
}
|
|
416
416
|
K(e instanceof Error ? e.message : C("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => K(null), 5e3);
|
|
@@ -420,14 +420,14 @@ function Ft() {
|
|
|
420
420
|
}
|
|
421
421
|
}, [
|
|
422
422
|
F?.id,
|
|
423
|
-
|
|
423
|
+
yr,
|
|
424
424
|
X,
|
|
425
425
|
C
|
|
426
|
-
]),
|
|
426
|
+
]), Cr = d(async (e) => {
|
|
427
427
|
if (F?.id && window.confirm(C("agentDetails.removePluginConfirm", "Remove plugin {{packageName}}?", { packageName: e }))) {
|
|
428
428
|
G(e);
|
|
429
429
|
try {
|
|
430
|
-
let { data: t } = await
|
|
430
|
+
let { data: t } = await br({ variables: {
|
|
431
431
|
agentId: F.id,
|
|
432
432
|
packageName: e
|
|
433
433
|
} });
|
|
@@ -441,17 +441,17 @@ function Ft() {
|
|
|
441
441
|
}
|
|
442
442
|
}, [
|
|
443
443
|
F?.id,
|
|
444
|
-
|
|
444
|
+
br,
|
|
445
445
|
X,
|
|
446
446
|
C
|
|
447
|
-
]),
|
|
447
|
+
]), wr = d(async (e) => {
|
|
448
448
|
if (!F?.id) return;
|
|
449
449
|
let t = window.prompt(C("agentDetails.updatePluginPrompt", "Update {{packageName}} to which version? Leave blank for latest.", { packageName: e }));
|
|
450
450
|
if (t === null) return;
|
|
451
451
|
let n = t.trim() || void 0;
|
|
452
452
|
G(e);
|
|
453
453
|
try {
|
|
454
|
-
let { data: t } = await
|
|
454
|
+
let { data: t } = await xr({ variables: {
|
|
455
455
|
agentId: F.id,
|
|
456
456
|
packageName: e,
|
|
457
457
|
version: n ?? null
|
|
@@ -465,11 +465,11 @@ function Ft() {
|
|
|
465
465
|
}
|
|
466
466
|
}, [
|
|
467
467
|
F?.id,
|
|
468
|
-
|
|
468
|
+
xr,
|
|
469
469
|
X,
|
|
470
470
|
C
|
|
471
|
-
]), Z = F?.sessions || [], Q = F?.vibes || [],
|
|
472
|
-
|
|
471
|
+
]), Z = F?.sessions || [], Q = F?.vibes || [], Tr = d(async () => {
|
|
472
|
+
pr(!0), hr(null);
|
|
473
473
|
try {
|
|
474
474
|
let e = await (await fetch(typeof window < "u" && window.__BURDENOFF_GLOBAL_GATEWAY__ || "/global/graphql", {
|
|
475
475
|
method: "POST",
|
|
@@ -478,29 +478,29 @@ function Ft() {
|
|
|
478
478
|
body: JSON.stringify({ query: "query MyStorePlugins {\n myEntitlements {\n id\n productId\n licenseKey\n product {\n id\n name\n slug\n icon\n description\n manifest\n }\n }\n }" })
|
|
479
479
|
})).json();
|
|
480
480
|
if (e.errors?.length) throw Error(e.errors[0]?.message ?? "Failed to load store plugins");
|
|
481
|
-
|
|
481
|
+
dr((e.data?.myEntitlements ?? []).filter((e) => {
|
|
482
482
|
let t = e.product?.manifest;
|
|
483
483
|
if (!t) return !1;
|
|
484
484
|
let n = t.itemType?.toLowerCase();
|
|
485
485
|
return n === "vibemodule" || n === "plugin";
|
|
486
486
|
}));
|
|
487
487
|
} catch (e) {
|
|
488
|
-
|
|
488
|
+
hr(e instanceof Error ? e.message : "Failed to load store plugins");
|
|
489
489
|
} finally {
|
|
490
|
-
|
|
490
|
+
pr(!1);
|
|
491
491
|
}
|
|
492
492
|
}, []);
|
|
493
493
|
f(() => {
|
|
494
|
-
q === "store" && Y.length === 0 && !
|
|
494
|
+
q === "store" && Y.length === 0 && !fr && Tr();
|
|
495
495
|
}, [
|
|
496
496
|
q,
|
|
497
497
|
Y.length,
|
|
498
|
-
|
|
499
|
-
|
|
498
|
+
fr,
|
|
499
|
+
Tr
|
|
500
500
|
]);
|
|
501
|
-
let
|
|
501
|
+
let Er = d(async (e, t) => {
|
|
502
502
|
if (F?.id) {
|
|
503
|
-
|
|
503
|
+
_r(e);
|
|
504
504
|
try {
|
|
505
505
|
let n = await (await fetch(typeof window < "u" && window.__BURDENOFF_WSPACE_GATEWAY__ || "/workspaces/graphql", {
|
|
506
506
|
method: "POST",
|
|
@@ -518,28 +518,28 @@ function Ft() {
|
|
|
518
518
|
if (n.errors?.length) throw Error(n.errors[0]?.message ?? "Install failed");
|
|
519
519
|
let r = n.data?.installStorePluginOnAgent;
|
|
520
520
|
if (!r?.success) throw Error(r?.error ?? "Install failed");
|
|
521
|
-
await X(),
|
|
521
|
+
await X(), lr("installed");
|
|
522
522
|
} catch (e) {
|
|
523
|
-
|
|
523
|
+
hr(e instanceof Error ? e.message : "Install failed");
|
|
524
524
|
} finally {
|
|
525
|
-
|
|
525
|
+
_r(null);
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
}, [F?.id, X]);
|
|
529
529
|
f(() => {
|
|
530
530
|
if (typeof window > "u" || !F?.id) return;
|
|
531
531
|
let e = new URLSearchParams(window.location.search), t = e.get("install"), n = e.get("licenseKey");
|
|
532
|
-
if (t && t !==
|
|
533
|
-
|
|
532
|
+
if (t && t !== gr) {
|
|
533
|
+
lr("store"), Er(t, n);
|
|
534
534
|
let e = new URL(window.location.href);
|
|
535
535
|
e.searchParams.delete("install"), e.searchParams.delete("licenseKey"), window.history.replaceState({}, "", e.toString());
|
|
536
536
|
}
|
|
537
537
|
}, [
|
|
538
538
|
F?.id,
|
|
539
|
-
|
|
540
|
-
|
|
539
|
+
Er,
|
|
540
|
+
gr
|
|
541
541
|
]);
|
|
542
|
-
let
|
|
542
|
+
let Dr = d(async () => {
|
|
543
543
|
if (!F?.id) return null;
|
|
544
544
|
if (O) return O;
|
|
545
545
|
xn(!0), Cn(null);
|
|
@@ -578,7 +578,7 @@ function Ft() {
|
|
|
578
578
|
});
|
|
579
579
|
let $ = () => {
|
|
580
580
|
S("/agents");
|
|
581
|
-
},
|
|
581
|
+
}, Or = async (e) => {
|
|
582
582
|
if (!(!F?.id || w)) {
|
|
583
583
|
Wt(e), Kt(null);
|
|
584
584
|
try {
|
|
@@ -592,11 +592,11 @@ function Ft() {
|
|
|
592
592
|
Wt(null);
|
|
593
593
|
}
|
|
594
594
|
}
|
|
595
|
-
},
|
|
595
|
+
}, kr = () => void Or("start"), Ar = () => void Or("stop"), jr = async () => {
|
|
596
596
|
await Promise.all([P(), I.refetch()]).catch(() => {}), S("/agents");
|
|
597
|
-
},
|
|
597
|
+
}, Mr = () => {
|
|
598
598
|
T(null), Yt(!0);
|
|
599
|
-
},
|
|
599
|
+
}, Nr = async () => {
|
|
600
600
|
if (!F?.id) return;
|
|
601
601
|
let e = an.trim();
|
|
602
602
|
if (!e || e === F.name) {
|
|
@@ -616,9 +616,9 @@ function Ft() {
|
|
|
616
616
|
} finally {
|
|
617
617
|
sn(!1);
|
|
618
618
|
}
|
|
619
|
-
},
|
|
619
|
+
}, Pr = () => {
|
|
620
620
|
rn(!1), on(""), ln(null);
|
|
621
|
-
},
|
|
621
|
+
}, Fr = async () => {
|
|
622
622
|
if (!F?.id) return;
|
|
623
623
|
let e = dn.current?.value?.trim(), t = fn.current?.value?.trim(), n = pn.current?.value?.trim(), r = mn.current?.value?.trim();
|
|
624
624
|
if (!e) {
|
|
@@ -648,36 +648,37 @@ function Ft() {
|
|
|
648
648
|
} finally {
|
|
649
649
|
Qt(!1);
|
|
650
650
|
}
|
|
651
|
-
},
|
|
652
|
-
let e = await
|
|
651
|
+
}, Ir = async () => {
|
|
652
|
+
let e = await Dr();
|
|
653
653
|
if (e) try {
|
|
654
654
|
await xe(e), be() && Se("API key copied"), vn(!0), setTimeout(() => vn(!1), 2e3);
|
|
655
655
|
} catch {
|
|
656
656
|
console.error("Failed to copy API key");
|
|
657
657
|
}
|
|
658
|
-
}, Fr = async () => {
|
|
659
|
-
hn || await Tr(), gn((e) => !e);
|
|
660
|
-
}, Ir = () => {
|
|
661
|
-
F?.id && ($n(!1), Zn(!0));
|
|
662
658
|
}, Lr = async () => {
|
|
659
|
+
hn || await Dr(), gn((e) => !e);
|
|
660
|
+
}, Rr = () => {
|
|
661
|
+
F?.id && ($n(!1), tr(!1), Zn(!0));
|
|
662
|
+
}, zr = async () => {
|
|
663
663
|
if (F?.id) {
|
|
664
|
-
|
|
664
|
+
rr(!0);
|
|
665
665
|
try {
|
|
666
666
|
await Bt({ variables: {
|
|
667
667
|
id: F.id,
|
|
668
|
-
uninstallFromTarget: Qn
|
|
668
|
+
uninstallFromTarget: Qn,
|
|
669
|
+
deleteTarget: er
|
|
669
670
|
} }), Zn(!1), $();
|
|
670
671
|
} catch (e) {
|
|
671
672
|
console.error("Failed to remove agent:", e);
|
|
672
673
|
} finally {
|
|
673
|
-
|
|
674
|
+
rr(!1);
|
|
674
675
|
}
|
|
675
676
|
}
|
|
676
|
-
},
|
|
677
|
+
}, Br = (e) => {
|
|
677
678
|
S(`/sessions/${e}`);
|
|
678
|
-
},
|
|
679
|
+
}, Vr = () => {
|
|
679
680
|
j(null), A(!0);
|
|
680
|
-
},
|
|
681
|
+
}, Hr = async () => {
|
|
681
682
|
let e = N.current?.value?.trim(), t = Dn.current?.value, n = On.current?.value?.trim() || void 0, r = kn.current?.value?.trim() || void 0;
|
|
682
683
|
if (!e) {
|
|
683
684
|
j(C("vibeDetails.sessionNameRequired", "Session name is required"));
|
|
@@ -703,16 +704,16 @@ function Ft() {
|
|
|
703
704
|
} } }), A(!1), N.current && (N.current.value = ""), Dn.current && (Dn.current.selectedIndex = 0), On.current && (On.current.value = ""), kn.current && (kn.current.value = ""), E(C("sessions.createdSuccess", "Session created successfully")), setTimeout(() => E(null), 3e3);
|
|
704
705
|
} catch (e) {
|
|
705
706
|
if (ue(e)) {
|
|
706
|
-
A(!1), de(),
|
|
707
|
+
A(!1), de(), sr("session"), ar(!0);
|
|
707
708
|
return;
|
|
708
709
|
}
|
|
709
710
|
j(e instanceof Error ? e.message : C("sessions.failedCreate", "Failed to create session"));
|
|
710
711
|
} finally {
|
|
711
712
|
En(!1);
|
|
712
713
|
}
|
|
713
|
-
},
|
|
714
|
+
}, Ur = (e) => {
|
|
714
715
|
S(`/vibes/${e}`);
|
|
715
|
-
},
|
|
716
|
+
}, Wr = (e) => {
|
|
716
717
|
if (!e) return C("health.never", "Never");
|
|
717
718
|
let t = Date.now() - new Date(e).getTime();
|
|
718
719
|
return t < 6e4 ? C("health.justNow", "Just now") : t < 36e5 ? C("agentDetails.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? C("agentDetails.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : new Date(e).toLocaleDateString();
|
|
@@ -758,7 +759,7 @@ function Ft() {
|
|
|
758
759
|
})
|
|
759
760
|
})]
|
|
760
761
|
});
|
|
761
|
-
let
|
|
762
|
+
let Gr = [
|
|
762
763
|
{
|
|
763
764
|
id: "overview",
|
|
764
765
|
label: C("nav.overview", "Overview"),
|
|
@@ -822,7 +823,7 @@ function Ft() {
|
|
|
822
823
|
label: C("agentDetails.maintenance.tab", "Maintenance"),
|
|
823
824
|
icon: Ct
|
|
824
825
|
}
|
|
825
|
-
],
|
|
826
|
+
], Kr = Z.filter((e) => e.status === "RUNNING").length;
|
|
826
827
|
return F?.tunnelUrl, /* @__PURE__ */ x(jt, {
|
|
827
828
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
828
829
|
children: [
|
|
@@ -871,14 +872,14 @@ function Ft() {
|
|
|
871
872
|
}),
|
|
872
873
|
In ? /* @__PURE__ */ x("button", {
|
|
873
874
|
type: "button",
|
|
874
|
-
onClick:
|
|
875
|
+
onClick: kr,
|
|
875
876
|
disabled: w !== null,
|
|
876
877
|
"aria-busy": w === "start",
|
|
877
878
|
className: "flex items-center gap-2 px-3 py-2 bg-status-success-bg text-status-success-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
878
879
|
children: [w === "start" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(ct, { className: "size-4" }), w === "start" ? C("agentDetails.starting", "Starting…") : C("agentDetails.start", "Start")]
|
|
879
880
|
}) : /* @__PURE__ */ x("button", {
|
|
880
881
|
type: "button",
|
|
881
|
-
onClick:
|
|
882
|
+
onClick: Ar,
|
|
882
883
|
disabled: w !== null,
|
|
883
884
|
"aria-busy": w === "stop",
|
|
884
885
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
@@ -886,7 +887,7 @@ function Ft() {
|
|
|
886
887
|
}),
|
|
887
888
|
R === "DEGRADED" && /* @__PURE__ */ x("button", {
|
|
888
889
|
type: "button",
|
|
889
|
-
onClick:
|
|
890
|
+
onClick: kr,
|
|
890
891
|
disabled: w !== null,
|
|
891
892
|
"aria-busy": w === "start",
|
|
892
893
|
className: "flex items-center gap-2 px-3 py-2 bg-status-warning-bg text-status-warning-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
@@ -900,13 +901,13 @@ function Ft() {
|
|
|
900
901
|
}),
|
|
901
902
|
/* @__PURE__ */ x("button", {
|
|
902
903
|
type: "button",
|
|
903
|
-
onClick:
|
|
904
|
+
onClick: Mr,
|
|
904
905
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
|
|
905
906
|
children: [/* @__PURE__ */ b(ht, { className: "size-4" }), C("agentDetails.configure", "Configure")]
|
|
906
907
|
}),
|
|
907
908
|
/* @__PURE__ */ x("button", {
|
|
908
909
|
type: "button",
|
|
909
|
-
onClick:
|
|
910
|
+
onClick: Rr,
|
|
910
911
|
className: "flex items-center gap-2 px-3 py-2 bg-status-error-bg text-status-error-text rounded-md hover:opacity-80 transition-colors",
|
|
911
912
|
children: [/* @__PURE__ */ b(bt, { className: "size-4" }), C("sessions.remove", "Remove")]
|
|
912
913
|
})
|
|
@@ -922,7 +923,7 @@ function Ft() {
|
|
|
922
923
|
value: an,
|
|
923
924
|
onChange: (e) => on(e.target.value),
|
|
924
925
|
onKeyDown: (e) => {
|
|
925
|
-
e.key === "Enter" && !D ?
|
|
926
|
+
e.key === "Enter" && !D ? Nr() : e.key === "Escape" && Pr();
|
|
926
927
|
},
|
|
927
928
|
disabled: D,
|
|
928
929
|
maxLength: 120,
|
|
@@ -933,7 +934,7 @@ function Ft() {
|
|
|
933
934
|
}),
|
|
934
935
|
/* @__PURE__ */ x("button", {
|
|
935
936
|
type: "button",
|
|
936
|
-
onClick: () => void
|
|
937
|
+
onClick: () => void Nr(),
|
|
937
938
|
disabled: !an.trim() || an.trim() === F.name || D,
|
|
938
939
|
className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
|
|
939
940
|
"data-testid": "agent-details-rename-save",
|
|
@@ -941,7 +942,7 @@ function Ft() {
|
|
|
941
942
|
}),
|
|
942
943
|
/* @__PURE__ */ b("button", {
|
|
943
944
|
type: "button",
|
|
944
|
-
onClick:
|
|
945
|
+
onClick: Pr,
|
|
945
946
|
disabled: D,
|
|
946
947
|
className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary disabled:opacity-60",
|
|
947
948
|
"data-testid": "agent-details-rename-cancel",
|
|
@@ -1069,7 +1070,7 @@ function Ft() {
|
|
|
1069
1070
|
}), /* @__PURE__ */ x("p", {
|
|
1070
1071
|
className: "font-semibold text-text-primary",
|
|
1071
1072
|
children: [
|
|
1072
|
-
|
|
1073
|
+
Kr,
|
|
1073
1074
|
" ",
|
|
1074
1075
|
C("health.active", "active")
|
|
1075
1076
|
]
|
|
@@ -1084,7 +1085,7 @@ function Ft() {
|
|
|
1084
1085
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
1085
1086
|
"aria-label": C("agentDetails.tabsAriaLabel", "Agent tabs"),
|
|
1086
1087
|
children: [
|
|
1087
|
-
|
|
1088
|
+
Gr.map((e) => {
|
|
1088
1089
|
let t = e.icon, n = H === e.id;
|
|
1089
1090
|
return /* @__PURE__ */ x("button", {
|
|
1090
1091
|
type: "button",
|
|
@@ -1308,21 +1309,21 @@ function Ft() {
|
|
|
1308
1309
|
children: C("health.lastHeartbeat", "Last Heartbeat")
|
|
1309
1310
|
}), /* @__PURE__ */ b("p", {
|
|
1310
1311
|
className: "font-medium text-text-primary",
|
|
1311
|
-
children:
|
|
1312
|
+
children: Wr(F.lastHeartbeat)
|
|
1312
1313
|
})] }),
|
|
1313
1314
|
/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
|
|
1314
1315
|
className: "text-text-secondary",
|
|
1315
1316
|
children: C("vibeDetails.created", "Created")
|
|
1316
1317
|
}), /* @__PURE__ */ b("p", {
|
|
1317
1318
|
className: "font-medium text-text-primary",
|
|
1318
|
-
children:
|
|
1319
|
+
children: Wr(F.createdAt)
|
|
1319
1320
|
})] }),
|
|
1320
1321
|
/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
|
|
1321
1322
|
className: "text-text-secondary",
|
|
1322
1323
|
children: C("vibeDetails.updated", "Updated")
|
|
1323
1324
|
}), /* @__PURE__ */ b("p", {
|
|
1324
1325
|
className: "font-medium text-text-primary",
|
|
1325
|
-
children:
|
|
1326
|
+
children: Wr(F.updatedAt)
|
|
1326
1327
|
})] })
|
|
1327
1328
|
]
|
|
1328
1329
|
})
|
|
@@ -1384,7 +1385,7 @@ function Ft() {
|
|
|
1384
1385
|
}),
|
|
1385
1386
|
/* @__PURE__ */ b("button", {
|
|
1386
1387
|
type: "button",
|
|
1387
|
-
onClick: () => void
|
|
1388
|
+
onClick: () => void Lr(),
|
|
1388
1389
|
disabled: bn,
|
|
1389
1390
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0 disabled:opacity-50",
|
|
1390
1391
|
title: hn ? C("agentDetails.hideApiKey", "Hide API key") : C("agentDetails.showApiKey", "Show API key"),
|
|
@@ -1392,7 +1393,7 @@ function Ft() {
|
|
|
1392
1393
|
}),
|
|
1393
1394
|
/* @__PURE__ */ b("button", {
|
|
1394
1395
|
type: "button",
|
|
1395
|
-
onClick:
|
|
1396
|
+
onClick: Ir,
|
|
1396
1397
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
|
|
1397
1398
|
title: C("agentDetails.copyApiKey", "Copy API key"),
|
|
1398
1399
|
children: _n ? /* @__PURE__ */ b(Ke, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ b(Xe, { className: "size-4 text-text-secondary" })
|
|
@@ -1497,13 +1498,13 @@ function Ft() {
|
|
|
1497
1498
|
"aria-label": "control",
|
|
1498
1499
|
type: "text",
|
|
1499
1500
|
value: J,
|
|
1500
|
-
onChange: (e) =>
|
|
1501
|
+
onChange: (e) => ur(e.target.value),
|
|
1501
1502
|
placeholder: C("agentDetails.searchPluginsPlaceholder", "Search plugins by name, package, description, or tag..."),
|
|
1502
1503
|
className: "w-full pl-9 pr-8 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-1 focus:ring-action-primary-bg focus:border-action-primary-bg"
|
|
1503
1504
|
}),
|
|
1504
1505
|
J && /* @__PURE__ */ b("button", {
|
|
1505
1506
|
type: "button",
|
|
1506
|
-
onClick: () =>
|
|
1507
|
+
onClick: () => ur(""),
|
|
1507
1508
|
className: "absolute right-2 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-text-secondary rounded",
|
|
1508
1509
|
children: /* @__PURE__ */ b(_, { className: "size-3.5" })
|
|
1509
1510
|
})
|
|
@@ -1515,7 +1516,7 @@ function Ft() {
|
|
|
1515
1516
|
let t = q === e.id, n = e.icon;
|
|
1516
1517
|
return /* @__PURE__ */ x("button", {
|
|
1517
1518
|
type: "button",
|
|
1518
|
-
onClick: () =>
|
|
1519
|
+
onClick: () => lr(e.id),
|
|
1519
1520
|
className: `flex shrink-0 items-center gap-1.5 px-3 py-2 text-xs sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${t ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
|
|
1520
1521
|
children: [
|
|
1521
1522
|
/* @__PURE__ */ b(n, { className: "size-3.5" }),
|
|
@@ -1633,14 +1634,14 @@ function Ft() {
|
|
|
1633
1634
|
children: [
|
|
1634
1635
|
e.hasUI && /* @__PURE__ */ x("button", {
|
|
1635
1636
|
type: "button",
|
|
1636
|
-
onClick: () =>
|
|
1637
|
+
onClick: () => lr("ui-plugins"),
|
|
1637
1638
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 rounded-md hover:bg-action-primary-bg/20 transition-colors border border-action-primary-bg/20",
|
|
1638
1639
|
title: `Open ${e.pluginName} UI`,
|
|
1639
1640
|
children: [/* @__PURE__ */ b(st, { className: "size-3" }), "Open UI"]
|
|
1640
1641
|
}),
|
|
1641
1642
|
!e.isCore && /* @__PURE__ */ x("button", {
|
|
1642
1643
|
type: "button",
|
|
1643
|
-
onClick: () =>
|
|
1644
|
+
onClick: () => wr(e.packageName),
|
|
1644
1645
|
disabled: W === e.packageName,
|
|
1645
1646
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-primary bg-bg-secondary border border-border-default rounded-md hover:bg-bg-elevated transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1646
1647
|
title: C("agentDetails.updatePlugin", "Update plugin (latest or a specific version)"),
|
|
@@ -1648,7 +1649,7 @@ function Ft() {
|
|
|
1648
1649
|
}),
|
|
1649
1650
|
!e.isCore && /* @__PURE__ */ x("button", {
|
|
1650
1651
|
type: "button",
|
|
1651
|
-
onClick: () =>
|
|
1652
|
+
onClick: () => Cr(e.packageName),
|
|
1652
1653
|
disabled: W === e.packageName,
|
|
1653
1654
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-status-error-text bg-status-error-bg/15 border border-status-error-border/40 rounded-md hover:bg-status-error-bg/25 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1654
1655
|
children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(bt, { className: "size-3" }), C("sessions.remove", "Remove")]
|
|
@@ -1682,7 +1683,7 @@ function Ft() {
|
|
|
1682
1683
|
]
|
|
1683
1684
|
}), /* @__PURE__ */ x("button", {
|
|
1684
1685
|
type: "button",
|
|
1685
|
-
onClick: () =>
|
|
1686
|
+
onClick: () => Sr(e.packageName),
|
|
1686
1687
|
disabled: W === e.packageName,
|
|
1687
1688
|
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 sm:ml-3",
|
|
1688
1689
|
children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b($e, { className: "size-3" }), "Install"]
|
|
@@ -1692,13 +1693,13 @@ function Ft() {
|
|
|
1692
1693
|
className: "text-sm text-text-muted",
|
|
1693
1694
|
children: J ? "No available plugins match your search." : Gn.every((e) => e.installed) ? "All available plugins are already installed." : "No available plugins found."
|
|
1694
1695
|
}) }),
|
|
1695
|
-
q === "store" && /* @__PURE__ */ x(y, { children: [
|
|
1696
|
+
q === "store" && /* @__PURE__ */ x(y, { children: [mr && /* @__PURE__ */ x("div", {
|
|
1696
1697
|
className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
|
|
1697
1698
|
children: [/* @__PURE__ */ b(_, { className: "size-4 flex-shrink-0" }), /* @__PURE__ */ b("span", {
|
|
1698
1699
|
className: "flex-1",
|
|
1699
|
-
children:
|
|
1700
|
+
children: mr
|
|
1700
1701
|
})]
|
|
1701
|
-
}),
|
|
1702
|
+
}), fr ? /* @__PURE__ */ b("p", {
|
|
1702
1703
|
className: "text-sm text-text-muted",
|
|
1703
1704
|
children: "Loading purchased plugins…"
|
|
1704
1705
|
}) : Y.length === 0 ? /* @__PURE__ */ x("div", {
|
|
@@ -1751,10 +1752,10 @@ function Ft() {
|
|
|
1751
1752
|
})]
|
|
1752
1753
|
}), /* @__PURE__ */ b("button", {
|
|
1753
1754
|
type: "button",
|
|
1754
|
-
onClick: () => void
|
|
1755
|
-
disabled: r ||
|
|
1755
|
+
onClick: () => void Er(e.productId, e.licenseKey),
|
|
1756
|
+
disabled: r || gr === e.productId || !n,
|
|
1756
1757
|
className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold rounded-md bg-action-primary-bg text-action-primary-text hover:opacity-90 disabled:opacity-60 flex-shrink-0",
|
|
1757
|
-
children: r ? "Installed" :
|
|
1758
|
+
children: r ? "Installed" : gr === e.productId ? "Installing…" : "Install"
|
|
1758
1759
|
})]
|
|
1759
1760
|
}, e.id);
|
|
1760
1761
|
})
|
|
@@ -1818,7 +1819,7 @@ function Ft() {
|
|
|
1818
1819
|
deniedTooltip: "You don't have permission to create sessions",
|
|
1819
1820
|
children: /* @__PURE__ */ x("button", {
|
|
1820
1821
|
"data-testid": "create-session-btn",
|
|
1821
|
-
onClick:
|
|
1822
|
+
onClick: Vr,
|
|
1822
1823
|
className: "inline-flex items-center gap-2 px-3 py-1.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1823
1824
|
children: [/* @__PURE__ */ b(lt, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
|
|
1824
1825
|
})
|
|
@@ -1829,9 +1830,9 @@ function Ft() {
|
|
|
1829
1830
|
role: "button",
|
|
1830
1831
|
tabIndex: 0,
|
|
1831
1832
|
onKeyDown: (t) => {
|
|
1832
|
-
(t.key === "Enter" || t.key === " ") && (t.preventDefault(),
|
|
1833
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), Br(e.id));
|
|
1833
1834
|
},
|
|
1834
|
-
onClick: () =>
|
|
1835
|
+
onClick: () => Br(e.id),
|
|
1835
1836
|
className: "p-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
1836
1837
|
children: [/* @__PURE__ */ x("div", {
|
|
1837
1838
|
className: "flex items-center gap-3 min-w-0",
|
|
@@ -1855,7 +1856,7 @@ function Ft() {
|
|
|
1855
1856
|
deniedTooltip: "You don't have permission to create sessions",
|
|
1856
1857
|
children: /* @__PURE__ */ x("button", {
|
|
1857
1858
|
"data-testid": "create-session-empty-btn",
|
|
1858
|
-
onClick:
|
|
1859
|
+
onClick: Vr,
|
|
1859
1860
|
className: "inline-flex items-center gap-2 px-3 py-1.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1860
1861
|
children: [/* @__PURE__ */ b(lt, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
|
|
1861
1862
|
})
|
|
@@ -1945,9 +1946,9 @@ function Ft() {
|
|
|
1945
1946
|
role: "button",
|
|
1946
1947
|
tabIndex: 0,
|
|
1947
1948
|
onKeyDown: (t) => {
|
|
1948
|
-
(t.key === "Enter" || t.key === " ") && (t.preventDefault(),
|
|
1949
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), Ur(e.id));
|
|
1949
1950
|
},
|
|
1950
|
-
onClick: () =>
|
|
1951
|
+
onClick: () => Ur(e.id),
|
|
1951
1952
|
className: "p-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 cursor-pointer hover:bg-bg-sunken/50 transition-colors",
|
|
1952
1953
|
children: [/* @__PURE__ */ x("div", {
|
|
1953
1954
|
className: "flex items-center gap-3 min-w-0",
|
|
@@ -2073,7 +2074,7 @@ function Ft() {
|
|
|
2073
2074
|
children: /* @__PURE__ */ b(De, {
|
|
2074
2075
|
agentId: F.id,
|
|
2075
2076
|
agentVersion: F.version,
|
|
2076
|
-
onAfterDestructiveNuke:
|
|
2077
|
+
onAfterDestructiveNuke: jr
|
|
2077
2078
|
})
|
|
2078
2079
|
}, "maintenance"),
|
|
2079
2080
|
B && (() => {
|
|
@@ -2266,7 +2267,7 @@ function Ft() {
|
|
|
2266
2267
|
children: C("common.cancel", "Cancel")
|
|
2267
2268
|
}), /* @__PURE__ */ b("button", {
|
|
2268
2269
|
type: "button",
|
|
2269
|
-
onClick:
|
|
2270
|
+
onClick: Fr,
|
|
2270
2271
|
disabled: Zt,
|
|
2271
2272
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
2272
2273
|
children: Zt ? C("agentDetails.saving", "Saving...") : C("agentDetails.saveConfiguration", "Save Configuration")
|
|
@@ -2372,7 +2373,7 @@ function Ft() {
|
|
|
2372
2373
|
children: C("common.cancel", "Cancel")
|
|
2373
2374
|
}), /* @__PURE__ */ b("button", {
|
|
2374
2375
|
"data-testid": "create-session-submit",
|
|
2375
|
-
onClick:
|
|
2376
|
+
onClick: Hr,
|
|
2376
2377
|
disabled: M,
|
|
2377
2378
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
2378
2379
|
children: M ? C("sessions.creating", "Creating...") : C("sessions.createSession", "Create Session")
|
|
@@ -2382,40 +2383,60 @@ function Ft() {
|
|
|
2382
2383
|
})
|
|
2383
2384
|
}),
|
|
2384
2385
|
/* @__PURE__ */ b(ce, {
|
|
2385
|
-
isOpen:
|
|
2386
|
-
onClose: () =>
|
|
2386
|
+
isOpen: ir,
|
|
2387
|
+
onClose: () => ar(!1),
|
|
2387
2388
|
onConfirm: () => {
|
|
2388
|
-
|
|
2389
|
+
ar(!1), S("/billing/plans");
|
|
2389
2390
|
},
|
|
2390
|
-
title: le(
|
|
2391
|
-
message: le(
|
|
2391
|
+
title: le(or).title,
|
|
2392
|
+
message: le(or).message
|
|
2392
2393
|
}),
|
|
2393
2394
|
/* @__PURE__ */ b(se, {
|
|
2394
2395
|
isOpen: Xn,
|
|
2395
2396
|
onClose: () => {
|
|
2396
|
-
|
|
2397
|
+
nr || Zn(!1);
|
|
2397
2398
|
},
|
|
2398
|
-
onConfirm:
|
|
2399
|
+
onConfirm: zr,
|
|
2399
2400
|
title: C("agentDetails.removeAgentTitle", "Remove agent"),
|
|
2400
2401
|
message: C("agentDetails.removeAgentMessage", "Remove “{{name}}” from this workspace.", { name: F.name }),
|
|
2401
2402
|
confirmLabel: C("sessions.remove", "Remove"),
|
|
2402
2403
|
variant: "danger",
|
|
2403
|
-
isLoading:
|
|
2404
|
-
children: /* @__PURE__ */ x("
|
|
2405
|
-
className: "
|
|
2406
|
-
children: [/* @__PURE__ */
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
className: "
|
|
2415
|
-
children:
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2404
|
+
isLoading: nr,
|
|
2405
|
+
children: /* @__PURE__ */ x("div", {
|
|
2406
|
+
className: "space-y-2",
|
|
2407
|
+
children: [/* @__PURE__ */ x("label", {
|
|
2408
|
+
className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
|
|
2409
|
+
children: [/* @__PURE__ */ b(Ot, {
|
|
2410
|
+
checked: Qn,
|
|
2411
|
+
disabled: nr,
|
|
2412
|
+
onCheckedChange: (e) => $n(e === !0),
|
|
2413
|
+
className: "mt-0.5"
|
|
2414
|
+
}), /* @__PURE__ */ x("span", {
|
|
2415
|
+
className: "min-w-0",
|
|
2416
|
+
children: [/* @__PURE__ */ b("span", {
|
|
2417
|
+
className: "block text-sm font-medium text-text-primary",
|
|
2418
|
+
children: C("agentDetails.uninstallFromTarget", "Uninstall agent from the target")
|
|
2419
|
+
}), /* @__PURE__ */ b("span", {
|
|
2420
|
+
className: "block text-xs text-text-secondary mt-0.5",
|
|
2421
|
+
children: C("agentDetails.uninstallFromTargetDesc", "Also wipe all agent state + VibeControls plugins and uninstall the agent from the host machine. This cannot be undone.")
|
|
2422
|
+
})]
|
|
2423
|
+
})]
|
|
2424
|
+
}), /* @__PURE__ */ x("label", {
|
|
2425
|
+
className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
|
|
2426
|
+
children: [/* @__PURE__ */ b(Ot, {
|
|
2427
|
+
checked: er,
|
|
2428
|
+
disabled: nr,
|
|
2429
|
+
onCheckedChange: (e) => tr(e === !0),
|
|
2430
|
+
className: "mt-0.5"
|
|
2431
|
+
}), /* @__PURE__ */ x("span", {
|
|
2432
|
+
className: "min-w-0",
|
|
2433
|
+
children: [/* @__PURE__ */ b("span", {
|
|
2434
|
+
className: "block text-sm font-medium text-text-primary",
|
|
2435
|
+
children: C("agentDetails.deleteTarget", "Delete the mapped target")
|
|
2436
|
+
}), /* @__PURE__ */ b("span", {
|
|
2437
|
+
className: "block text-xs text-text-secondary mt-0.5",
|
|
2438
|
+
children: C("agentDetails.deleteTargetDesc", "Also delete the target this agent is mapped to. Any other agents on the same target are removed too. This cannot be undone.")
|
|
2439
|
+
})]
|
|
2419
2440
|
})]
|
|
2420
2441
|
})]
|
|
2421
2442
|
})
|