@burdenoff/microfe-vibecontrols 2026.1023.5 → 2026.1023.7
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/shared/QuotaExhaustedDialog.js +22 -17
- package/dist/components/shared/VibeControlsDocsLink.js +40 -0
- package/dist/components/shared/index.js +1 -0
- package/dist/pages/GettingStartedPage.js +109 -108
- package/dist/pages/SessionsPage.js +1194 -1187
- package/dist/pages/TunnelsLandingPage.js +46 -39
- package/dist/pages/VibeDeckPage.js +233 -230
- package/dist/utils/pageContext.js +17 -14
- package/package.json +1 -1
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
2
|
import { ConfirmDialog as t } from "./ConfirmDialog.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { VibeControlsDocsLink as n } from "./VibeControlsDocsLink.js";
|
|
4
|
+
import { useCallback as r } from "react";
|
|
5
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
6
|
+
import { useEventBus as a } from "@burdenoff/fe-libs/shared/events";
|
|
6
7
|
//#region src/components/shared/QuotaExhaustedDialog.tsx
|
|
7
|
-
function
|
|
8
|
-
let
|
|
9
|
-
return /* @__PURE__ */
|
|
10
|
-
isOpen:
|
|
11
|
-
onClose:
|
|
12
|
-
onConfirm:
|
|
13
|
-
|
|
14
|
-
}, [
|
|
15
|
-
title:
|
|
16
|
-
message:
|
|
17
|
-
confirmLabel:
|
|
18
|
-
cancelLabel:
|
|
19
|
-
variant: "warning"
|
|
8
|
+
function o({ isOpen: o, onClose: s, onConfirm: c, title: l, message: u, confirmLabel: d, cancelLabel: f }) {
|
|
9
|
+
let p = e(), m = a();
|
|
10
|
+
return /* @__PURE__ */ i(t, {
|
|
11
|
+
isOpen: o,
|
|
12
|
+
onClose: s,
|
|
13
|
+
onConfirm: r(() => {
|
|
14
|
+
m.emitCustom("vibecontrols.billing.upgrade_clicked", {}), c();
|
|
15
|
+
}, [m, c]),
|
|
16
|
+
title: l ?? p("vibecontrols.shared.quotaExhaustedDialog.title", "Quota Reached"),
|
|
17
|
+
message: u,
|
|
18
|
+
confirmLabel: d ?? p("vibecontrols.shared.quotaExhaustedDialog.viewBilling", "View Billing"),
|
|
19
|
+
cancelLabel: f ?? p("vibecontrols.shared.quotaExhaustedDialog.dismiss", "Dismiss"),
|
|
20
|
+
variant: "warning",
|
|
21
|
+
children: /* @__PURE__ */ i(n, {
|
|
22
|
+
topic: "plans",
|
|
23
|
+
children: p("vibecontrols.shared.quotaExhaustedDialog.plansGuide", "How plans and quotas work")
|
|
24
|
+
})
|
|
20
25
|
});
|
|
21
26
|
}
|
|
22
27
|
//#endregion
|
|
23
|
-
export {
|
|
28
|
+
export { o as QuotaExhaustedDialog };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
|
+
import { BookOpen as t } from "lucide-react";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
import { DocsLink as i, useProductDocsUrl as a } from "@burdenoff/fe-libs/shared/components";
|
|
5
|
+
import { cn as o } from "@burdenoff/fe-libs/utils";
|
|
6
|
+
//#region src/components/shared/VibeControlsDocsLink.tsx
|
|
7
|
+
var s = {
|
|
8
|
+
gettingStarted: "/users/getting-started",
|
|
9
|
+
installAgent: "/users/installing-the-agent",
|
|
10
|
+
sessions: "/users/sessions-and-terminals",
|
|
11
|
+
tunnels: "/users/port-forwarding-and-tunnels",
|
|
12
|
+
vibedecks: "/users/vibedecks",
|
|
13
|
+
plans: "/users/plans-and-quotas"
|
|
14
|
+
}, c = "vibecontrols";
|
|
15
|
+
function l(e, t = {}) {
|
|
16
|
+
return a(s[e], {
|
|
17
|
+
productSlug: c,
|
|
18
|
+
environment: t.environment,
|
|
19
|
+
registry: t.registry
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function u({ topic: a, children: l, className: u, hideIcon: d = !1, environment: f, registry: p, "data-tour": m }) {
|
|
23
|
+
let h = e(), g = l ?? h("vibecontrols.docs.learnMore", "Learn more");
|
|
24
|
+
return /* @__PURE__ */ r(i, {
|
|
25
|
+
productSlug: c,
|
|
26
|
+
path: s[a],
|
|
27
|
+
environment: f,
|
|
28
|
+
registry: p,
|
|
29
|
+
"data-docs-topic": a,
|
|
30
|
+
"data-tour": m,
|
|
31
|
+
title: h("vibecontrols.docs.opensInNewTab", "Opens the VibeControls guide in a new tab"),
|
|
32
|
+
className: o("inline-flex items-center gap-1 rounded-sm text-sm font-medium text-text-link underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus focus-visible:ring-offset-2 focus-visible:ring-offset-bg-canvas", u),
|
|
33
|
+
children: [d ? null : /* @__PURE__ */ n(t, {
|
|
34
|
+
className: "size-3.5 shrink-0",
|
|
35
|
+
"aria-hidden": "true"
|
|
36
|
+
}), /* @__PURE__ */ n("span", { children: g })]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { s as VIBECONTROLS_DOCS_PATHS, c as VIBECONTROLS_DOCS_PRODUCT, u as VibeControlsDocsLink, l as useVibeControlsDocsUrl };
|
|
@@ -1,165 +1,166 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useVibeControlsDocsUrl as e } from "../components/shared/VibeControlsDocsLink.js";
|
|
2
|
+
import { PageHeader as t } from "../components/shared/PageHeader.js";
|
|
3
|
+
import { Card as n } from "../components/shared/Card.js";
|
|
4
|
+
import { InstallTabs as r } from "../components/shared/InstallTabs.js";
|
|
4
5
|
import "../components/shared/index.js";
|
|
5
|
-
import { useCallback as
|
|
6
|
-
import { useI18n as
|
|
7
|
-
import { Download as
|
|
8
|
-
import { useSearchParams as
|
|
9
|
-
import { jsx as
|
|
10
|
-
import { EmphasisPanel as
|
|
11
|
-
import { Tabs as
|
|
12
|
-
import { MotionItem as
|
|
6
|
+
import { useCallback as i, useMemo as a, useState as o } from "react";
|
|
7
|
+
import { useI18n as s } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { Download as c, ExternalLink as l, Info as u, Terminal as d } from "lucide-react";
|
|
9
|
+
import { useSearchParams as f } from "react-router";
|
|
10
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
11
|
+
import { EmphasisPanel as h, ShowMore as g } from "@burdenoff/fe-libs/ui";
|
|
12
|
+
import { Tabs as _ } from "@burdenoff/fe-libs/chrome";
|
|
13
|
+
import { MotionItem as v, MotionList as y, MotionPage as b } from "@burdenoff/fe-libs/shared/motion";
|
|
13
14
|
//#region src/pages/GettingStartedPage.tsx
|
|
14
|
-
var
|
|
15
|
+
var x = "https://www.npmjs.com/package/@vibecontrols/agent";
|
|
15
16
|
function S() {
|
|
16
|
-
let { t: S } =
|
|
17
|
+
let { t: S } = s(), C = e("installAgent"), w = i((e, t) => {
|
|
17
18
|
let n = S(e);
|
|
18
19
|
return n === e ? t : n;
|
|
19
|
-
}, [S]), [
|
|
20
|
+
}, [S]), [T, E] = f(), D = a(() => [{
|
|
20
21
|
id: "install",
|
|
21
|
-
label:
|
|
22
|
+
label: w("gettingStarted.installTab", "Install")
|
|
22
23
|
}, {
|
|
23
24
|
id: "cli",
|
|
24
|
-
label:
|
|
25
|
-
}], [
|
|
26
|
-
let t = new URLSearchParams(
|
|
27
|
-
e ===
|
|
28
|
-
}, [
|
|
29
|
-
return /* @__PURE__ */
|
|
25
|
+
label: w("gettingStarted.cliTab", "CLI Reference")
|
|
26
|
+
}], [w]), O = T.get("tab") ?? D[0].id, k = (e) => {
|
|
27
|
+
let t = new URLSearchParams(T);
|
|
28
|
+
e === D[0].id ? t.delete("tab") : t.set("tab", e), E(t, { replace: !0 });
|
|
29
|
+
}, [A, j] = o("");
|
|
30
|
+
return /* @__PURE__ */ m(b, {
|
|
30
31
|
className: "space-y-8 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen",
|
|
31
32
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
title:
|
|
34
|
-
description:
|
|
33
|
+
/* @__PURE__ */ p(t, {
|
|
34
|
+
title: w("gettingStarted.title", "Getting Started"),
|
|
35
|
+
description: w("gettingStarted.description", "Install and configure the VibeControls Agent CLI")
|
|
35
36
|
}),
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
+
/* @__PURE__ */ p("div", {
|
|
37
38
|
className: "border-b border-border-subtle",
|
|
38
|
-
children: /* @__PURE__ */
|
|
39
|
-
items:
|
|
40
|
-
activeTabId:
|
|
41
|
-
onTabChange:
|
|
39
|
+
children: /* @__PURE__ */ p(_, {
|
|
40
|
+
items: D,
|
|
41
|
+
activeTabId: O,
|
|
42
|
+
onTabChange: k,
|
|
42
43
|
variant: "underline"
|
|
43
44
|
})
|
|
44
45
|
}),
|
|
45
|
-
|
|
46
|
+
O === "install" && /* @__PURE__ */ m("div", {
|
|
46
47
|
className: "space-y-6",
|
|
47
48
|
children: [
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
+
/* @__PURE__ */ p(h, {
|
|
49
50
|
className: "sm:p-8",
|
|
50
|
-
children: /* @__PURE__ */
|
|
51
|
+
children: /* @__PURE__ */ m("div", {
|
|
51
52
|
className: "flex items-start gap-4",
|
|
52
|
-
children: [/* @__PURE__ */
|
|
53
|
+
children: [/* @__PURE__ */ p("div", {
|
|
53
54
|
className: "flex-shrink-0 size-12 rounded-xl bg-[var(--color-accent-soft)] flex items-center justify-center",
|
|
54
|
-
children: /* @__PURE__ */
|
|
55
|
-
}), /* @__PURE__ */
|
|
55
|
+
children: /* @__PURE__ */ p(c, { className: "size-6 text-accent-purple" })
|
|
56
|
+
}), /* @__PURE__ */ m("div", {
|
|
56
57
|
className: "flex-1",
|
|
57
58
|
children: [
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
+
/* @__PURE__ */ p("h2", {
|
|
59
60
|
className: "text-lg sm:text-xl font-semibold text-text-primary mb-1",
|
|
60
|
-
children:
|
|
61
|
+
children: w("gettingStarted.installAgent", "Install the Agent")
|
|
61
62
|
}),
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ p("p", {
|
|
63
64
|
className: "text-sm text-text-secondary",
|
|
64
|
-
children:
|
|
65
|
+
children: w("gettingStarted.installAgentDesc", "Install the agent globally with bun or npm on the machine you want to manage, then run vibe start. Bun (or Node >= 18 for npm) is the only prerequisite.")
|
|
65
66
|
}),
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
href:
|
|
67
|
+
C ? /* @__PURE__ */ m("a", {
|
|
68
|
+
href: C,
|
|
68
69
|
target: "_blank",
|
|
69
70
|
rel: "noopener noreferrer",
|
|
70
71
|
className: "mt-3 inline-flex items-center gap-1.5 text-sm text-text-link hover:text-text-linkHover hover:underline",
|
|
71
|
-
children: [
|
|
72
|
-
})
|
|
72
|
+
children: [w("gettingStarted.viewInstallDocs", "View the full install docs"), /* @__PURE__ */ p(l, { className: "size-3.5" })]
|
|
73
|
+
}) : null
|
|
73
74
|
]
|
|
74
75
|
})]
|
|
75
76
|
})
|
|
76
77
|
}),
|
|
77
|
-
/* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ p(n, {
|
|
78
79
|
padding: "none",
|
|
79
|
-
children: /* @__PURE__ */
|
|
80
|
+
children: /* @__PURE__ */ m("div", {
|
|
80
81
|
className: "p-5 sm:p-6",
|
|
81
|
-
children: [/* @__PURE__ */
|
|
82
|
+
children: [/* @__PURE__ */ p(r, { pinnedAgentVersion: A || void 0 }), /* @__PURE__ */ m("div", {
|
|
82
83
|
className: "mt-6 pt-4 border-t border-border-subtle",
|
|
83
|
-
children: [/* @__PURE__ */
|
|
84
|
+
children: [/* @__PURE__ */ m("label", {
|
|
84
85
|
htmlFor: "pinned-version",
|
|
85
86
|
className: "text-xs font-medium text-text-secondary flex items-center gap-1.5 mb-1.5",
|
|
86
87
|
children: [
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ p(u, { className: "size-3.5" }),
|
|
88
89
|
" ",
|
|
89
|
-
|
|
90
|
+
w("gettingStarted.pinVersion", "Pin a specific agent version (optional)")
|
|
90
91
|
]
|
|
91
|
-
}), /* @__PURE__ */
|
|
92
|
+
}), /* @__PURE__ */ p("input", {
|
|
92
93
|
"aria-label": "pinned-version",
|
|
93
94
|
id: "pinned-version",
|
|
94
95
|
type: "text",
|
|
95
|
-
placeholder:
|
|
96
|
-
value:
|
|
97
|
-
onChange: (e) =>
|
|
96
|
+
placeholder: w("gettingStarted.pinVersionPlaceholder", "e.g. 2026.408.1 (leave blank for latest)"),
|
|
97
|
+
value: A,
|
|
98
|
+
onChange: (e) => j(e.target.value),
|
|
98
99
|
className: "w-full max-w-xs px-3 py-2 rounded-input border border-border-default bg-bg-elevated text-sm text-text-primary focus-visible:outline-none focus-visible:border-border-strong focus-visible:shadow-[var(--shadow-focus)]"
|
|
99
100
|
})]
|
|
100
101
|
})]
|
|
101
102
|
})
|
|
102
103
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
+
/* @__PURE__ */ p(n, {
|
|
104
105
|
padding: "none",
|
|
105
|
-
children: /* @__PURE__ */
|
|
106
|
+
children: /* @__PURE__ */ m("div", {
|
|
106
107
|
className: "p-5 sm:p-6",
|
|
107
108
|
children: [
|
|
108
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ p("h3", {
|
|
109
110
|
className: "text-base font-semibold text-text-primary mb-3",
|
|
110
|
-
children:
|
|
111
|
+
children: w("gettingStarted.nextSteps", "Next steps")
|
|
111
112
|
}),
|
|
112
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ m("ol", {
|
|
113
114
|
className: "list-decimal list-inside space-y-2 text-sm text-text-secondary",
|
|
114
115
|
children: [
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
|
|
116
|
+
/* @__PURE__ */ m("li", { children: [
|
|
117
|
+
w("gettingStarted.nextStep1Prefix", "Start the agent:"),
|
|
117
118
|
" ",
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ p("code", {
|
|
119
120
|
className: "font-mono text-xs bg-bg-sunken/60 text-text-secondary px-1.5 py-0.5 rounded",
|
|
120
121
|
children: "vibe start"
|
|
121
122
|
}),
|
|
122
123
|
" ",
|
|
123
|
-
|
|
124
|
+
w("gettingStarted.nextStep1Suffix", "— on first run it establishes a Cloudflare tunnel, generates an agentApiKey, and waits in pre-config mode for the platform.")
|
|
124
125
|
] }),
|
|
125
|
-
/* @__PURE__ */
|
|
126
|
-
|
|
126
|
+
/* @__PURE__ */ m("li", { children: [
|
|
127
|
+
w("gettingStarted.nextStep2Prefix", "In this UI, go to"),
|
|
127
128
|
" ",
|
|
128
|
-
/* @__PURE__ */
|
|
129
|
-
|
|
129
|
+
/* @__PURE__ */ m("strong", { children: [
|
|
130
|
+
w("gettingStarted.targetsAndAgents", "Targets & Agents"),
|
|
130
131
|
" →",
|
|
131
132
|
" ",
|
|
132
|
-
|
|
133
|
+
w("gettingStarted.addAgent", "Add Agent")
|
|
133
134
|
] }),
|
|
134
|
-
|
|
135
|
+
w("gettingStarted.nextStep2Suffix", ", create or pick a target, and paste the tunnel URL and agentApiKey that vibe start printed. The platform then pushes OAuth credentials automatically and the agent activates.")
|
|
135
136
|
] }),
|
|
136
|
-
/* @__PURE__ */
|
|
137
|
-
|
|
137
|
+
/* @__PURE__ */ m("li", { children: [
|
|
138
|
+
w("gettingStarted.nextStep3Prefix", "Run it as a background service:"),
|
|
138
139
|
" ",
|
|
139
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ p("code", {
|
|
140
141
|
className: "font-mono text-xs bg-bg-sunken/60 text-text-secondary px-1.5 py-0.5 rounded",
|
|
141
142
|
children: "vibe autostart install"
|
|
142
143
|
}),
|
|
143
144
|
" ",
|
|
144
|
-
|
|
145
|
+
w("gettingStarted.nextStep3Suffix", "(remove later with"),
|
|
145
146
|
" ",
|
|
146
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ p("code", {
|
|
147
148
|
className: "font-mono text-xs bg-bg-sunken/60 text-text-secondary px-1.5 py-0.5 rounded",
|
|
148
149
|
children: "vibe autostart uninstall"
|
|
149
150
|
}),
|
|
150
|
-
|
|
151
|
+
w("gettingStarted.nextStep3End", ").")
|
|
151
152
|
] }),
|
|
152
|
-
/* @__PURE__ */
|
|
153
|
-
|
|
153
|
+
/* @__PURE__ */ m("li", { children: [
|
|
154
|
+
w("gettingStarted.nextStep4Prefix", "Verify it is running with"),
|
|
154
155
|
" ",
|
|
155
|
-
/* @__PURE__ */
|
|
156
|
+
/* @__PURE__ */ p("code", {
|
|
156
157
|
className: "font-mono text-xs bg-bg-sunken/60 text-text-secondary px-1.5 py-0.5 rounded",
|
|
157
158
|
children: "vibe health"
|
|
158
159
|
}),
|
|
159
160
|
" ",
|
|
160
|
-
|
|
161
|
+
w("gettingStarted.nextStep4And", "and"),
|
|
161
162
|
" ",
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ p("code", {
|
|
163
164
|
className: "font-mono text-xs bg-bg-sunken/60 text-text-secondary px-1.5 py-0.5 rounded",
|
|
164
165
|
children: "vibe status"
|
|
165
166
|
}),
|
|
@@ -167,93 +168,93 @@ function S() {
|
|
|
167
168
|
] })
|
|
168
169
|
]
|
|
169
170
|
}),
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
href:
|
|
171
|
+
C ? /* @__PURE__ */ m("a", {
|
|
172
|
+
href: C,
|
|
172
173
|
target: "_blank",
|
|
173
174
|
rel: "noopener noreferrer",
|
|
174
175
|
className: "mt-4 inline-flex items-center gap-1.5 text-sm text-text-link hover:text-text-linkHover hover:underline",
|
|
175
|
-
children: [
|
|
176
|
-
})
|
|
176
|
+
children: [w("gettingStarted.viewInstallDocs", "View the full install docs"), /* @__PURE__ */ p(l, { className: "size-3.5" })]
|
|
177
|
+
}) : null
|
|
177
178
|
]
|
|
178
179
|
})
|
|
179
180
|
})
|
|
180
181
|
]
|
|
181
182
|
}),
|
|
182
|
-
|
|
183
|
+
O === "cli" && /* @__PURE__ */ p(n, {
|
|
183
184
|
padding: "none",
|
|
184
|
-
children: /* @__PURE__ */
|
|
185
|
+
children: /* @__PURE__ */ m("div", {
|
|
185
186
|
className: "p-5 sm:p-6",
|
|
186
187
|
children: [
|
|
187
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ m("h3", {
|
|
188
189
|
className: "text-base font-semibold text-text-primary mb-4 flex items-center gap-2",
|
|
189
|
-
children: [/* @__PURE__ */
|
|
190
|
+
children: [/* @__PURE__ */ p(d, { className: "size-5 text-accent-purple" }), w("gettingStarted.cliQuickRef", "CLI Quick Reference")]
|
|
190
191
|
}),
|
|
191
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ p(g, {
|
|
192
193
|
collapsedHeight: 172,
|
|
193
|
-
label:
|
|
194
|
-
children: /* @__PURE__ */
|
|
194
|
+
label: w("gettingStarted.showAllCommands", "Show all commands"),
|
|
195
|
+
children: /* @__PURE__ */ p(y, {
|
|
195
196
|
stagger: .04,
|
|
196
197
|
className: "space-y-2",
|
|
197
198
|
children: [
|
|
198
199
|
{
|
|
199
200
|
cmd: "vibe start",
|
|
200
|
-
desc:
|
|
201
|
+
desc: w("gettingStarted.cmdVibeStart", "First run: auto-detects deps, picks a port (default 3005), establishes a Cloudflare tunnel, generates an agentApiKey, then waits for the platform")
|
|
201
202
|
},
|
|
202
203
|
{
|
|
203
204
|
cmd: "vibe start --profile <name>",
|
|
204
|
-
desc:
|
|
205
|
+
desc: w("gettingStarted.cmdVibeStartProfile", "Run a named profile (e.g. alpha, default) for multiple agent instances")
|
|
205
206
|
},
|
|
206
207
|
{
|
|
207
208
|
cmd: "vibe setup",
|
|
208
|
-
desc:
|
|
209
|
+
desc: w("gettingStarted.cmdVibeSetup", "Install missing dependencies (tmux, ttyd, cloudflared)")
|
|
209
210
|
},
|
|
210
211
|
{
|
|
211
212
|
cmd: "vibe health",
|
|
212
|
-
desc:
|
|
213
|
+
desc: w("gettingStarted.cmdVibeHealth", "Run an HTTP health check on the agent")
|
|
213
214
|
},
|
|
214
215
|
{
|
|
215
216
|
cmd: "vibe status",
|
|
216
|
-
desc:
|
|
217
|
+
desc: w("gettingStarted.cmdVibeStatus", "Show all running agent instances")
|
|
217
218
|
},
|
|
218
219
|
{
|
|
219
220
|
cmd: "vibe autostart install",
|
|
220
|
-
desc:
|
|
221
|
+
desc: w("gettingStarted.cmdVibeAutostartInstall", "Run the agent as a background service (daemonize)")
|
|
221
222
|
},
|
|
222
223
|
{
|
|
223
224
|
cmd: "vibe autostart uninstall",
|
|
224
|
-
desc:
|
|
225
|
+
desc: w("gettingStarted.cmdVibeAutostartUninstall", "Remove the background service")
|
|
225
226
|
},
|
|
226
227
|
{
|
|
227
228
|
cmd: "vibecontrols agents list --active",
|
|
228
|
-
desc:
|
|
229
|
+
desc: w("gettingStarted.cmdAgentsListActive", "Platform CLI — see the connected agent on the backend")
|
|
229
230
|
}
|
|
230
|
-
].map((e) => /* @__PURE__ */
|
|
231
|
+
].map((e) => /* @__PURE__ */ m(v, {
|
|
231
232
|
className: "flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-3 px-3 py-2 rounded-button hover:bg-bg-sunken transition-colors",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
233
|
+
children: [/* @__PURE__ */ m("code", {
|
|
233
234
|
className: "text-xs font-mono text-text-primary sm:w-72 flex-shrink-0",
|
|
234
235
|
children: ["$ ", e.cmd]
|
|
235
|
-
}), /* @__PURE__ */
|
|
236
|
+
}), /* @__PURE__ */ p("span", {
|
|
236
237
|
className: "text-xs text-text-muted",
|
|
237
238
|
children: e.desc
|
|
238
239
|
})]
|
|
239
240
|
}, e.cmd))
|
|
240
241
|
})
|
|
241
242
|
}),
|
|
242
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ m("div", {
|
|
243
244
|
className: "mt-4 pt-4 border-t border-border-seam flex flex-wrap items-center gap-3",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
245
|
-
href:
|
|
245
|
+
children: [/* @__PURE__ */ m("a", {
|
|
246
|
+
href: x,
|
|
246
247
|
target: "_blank",
|
|
247
248
|
rel: "noopener noreferrer",
|
|
248
249
|
className: "inline-flex items-center gap-2 px-3 py-1.5 text-xs border border-border-default text-text-secondary rounded-button hover:bg-bg-sunken hover:border-border-strong transition-colors",
|
|
249
250
|
children: [
|
|
250
|
-
|
|
251
|
+
w("gettingStarted.agentNpmPackage", "Agent npm package"),
|
|
251
252
|
" ",
|
|
252
|
-
/* @__PURE__ */
|
|
253
|
+
/* @__PURE__ */ p(l, { className: "size-3" })
|
|
253
254
|
]
|
|
254
|
-
}), /* @__PURE__ */
|
|
255
|
+
}), /* @__PURE__ */ p("span", {
|
|
255
256
|
className: "text-xs text-text-muted",
|
|
256
|
-
children:
|
|
257
|
+
children: w("gettingStarted.agentNpmLatest", "@vibecontrols/agent (latest)")
|
|
257
258
|
})]
|
|
258
259
|
})
|
|
259
260
|
]
|