@burdenoff/vibe-agent 1.2.1 → 1.3.1
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/app.d.ts.map +1 -1
- package/dist/app.js +100 -10
- package/dist/app.js.map +1 -1
- package/dist/cli.js +61 -239
- package/dist/cli.js.map +1 -1
- package/dist/db/schema.d.ts +0 -32
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +1 -106
- package/dist/db/schema.js.map +1 -1
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +0 -4
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +69 -268
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/git.d.ts.map +1 -1
- package/dist/routes/git.js +2 -87
- package/dist/routes/git.js.map +1 -1
- package/dist/routes/logs.d.ts +9 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +107 -0
- package/dist/routes/logs.js.map +1 -0
- package/dist/routes/plugin-state.d.ts +3 -0
- package/dist/routes/plugin-state.d.ts.map +1 -1
- package/dist/routes/plugin-state.js +71 -12
- package/dist/routes/plugin-state.js.map +1 -1
- package/dist/routes/tunnel.d.ts.map +1 -1
- package/dist/routes/tunnel.js +5 -6
- package/dist/routes/tunnel.js.map +1 -1
- package/dist/services/completion.d.ts +46 -0
- package/dist/services/completion.d.ts.map +1 -0
- package/dist/services/completion.js +317 -0
- package/dist/services/completion.js.map +1 -0
- package/dist/services/gateway-client.d.ts +61 -0
- package/dist/services/gateway-client.d.ts.map +1 -0
- package/dist/services/gateway-client.js +147 -0
- package/dist/services/gateway-client.js.map +1 -0
- package/dist/services/logger.d.ts +61 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +223 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/plugin-manager.d.ts.map +1 -1
- package/dist/services/plugin-manager.js +3 -2
- package/dist/services/plugin-manager.js.map +1 -1
- package/dist/services/plugin-state-backend.d.ts +22 -0
- package/dist/services/plugin-state-backend.d.ts.map +1 -0
- package/dist/services/plugin-state-backend.js +103 -0
- package/dist/services/plugin-state-backend.js.map +1 -0
- package/dist/services/plugin-state-external.d.ts +36 -0
- package/dist/services/plugin-state-external.d.ts.map +1 -0
- package/dist/services/plugin-state-external.js +144 -0
- package/dist/services/plugin-state-external.js.map +1 -0
- package/dist/services/plugin-state-router.d.ts +40 -0
- package/dist/services/plugin-state-router.d.ts.map +1 -0
- package/dist/services/plugin-state-router.js +82 -0
- package/dist/services/plugin-state-router.js.map +1 -0
- package/package.json +4 -8
- package/dist/routes/port-forward.d.ts +0 -3
- package/dist/routes/port-forward.d.ts.map +0 -1
- package/dist/routes/port-forward.js +0 -214
- package/dist/routes/port-forward.js.map +0 -1
- package/dist/routes/ssh.d.ts +0 -3
- package/dist/routes/ssh.d.ts.map +0 -1
- package/dist/routes/ssh.js +0 -192
- package/dist/routes/ssh.js.map +0 -1
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,aAAa,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAyC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSAspBhC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,aAAa,CAAC;QAClB,EAAE,EAAE,cAAc,CAAC;KACpB;CACF"}
|
package/dist/app.js
CHANGED
|
@@ -9,8 +9,6 @@ import { Server as SocketIOServer } from "socket.io";
|
|
|
9
9
|
import { WebSocketServer, WebSocket } from "ws";
|
|
10
10
|
import AgentDatabase from "./db/schema.js";
|
|
11
11
|
import { tmuxRoutes } from "./routes/tmux.js";
|
|
12
|
-
import { sshRoutes } from "./routes/ssh.js";
|
|
13
|
-
import { portForwardRoutes } from "./routes/port-forward.js";
|
|
14
12
|
import { taskRoutes } from "./routes/tasks.js";
|
|
15
13
|
import { configRoutes } from "./routes/config.js";
|
|
16
14
|
import { gitRoutes } from "./routes/git.js";
|
|
@@ -24,6 +22,9 @@ import { bootstrap, checkDependencies } from "./services/bootstrap.js";
|
|
|
24
22
|
import { pluginManager } from "./services/plugin-manager.js";
|
|
25
23
|
import { pluginRoutes } from "./routes/plugins.js";
|
|
26
24
|
import { pluginStateRoutes } from "./routes/plugin-state.js";
|
|
25
|
+
import { logRoutes } from "./routes/logs.js";
|
|
26
|
+
import logger from "./services/logger.js";
|
|
27
|
+
import gatewayClient from "./services/gateway-client.js";
|
|
27
28
|
// ── Agent API Key ──────────────────────────────────────────────────────
|
|
28
29
|
// Generated fresh on every agent start/restart. Must be provided via
|
|
29
30
|
// `x-agent-api-key` header (or `apiKey` query param) for all requests
|
|
@@ -92,6 +93,9 @@ export async function startServer() {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
agentApiKey = staticKey || generateAgentApiKey();
|
|
96
|
+
logger.info("app", "Agent API key resolved", {
|
|
97
|
+
source: staticKey ? "config" : "generated",
|
|
98
|
+
});
|
|
95
99
|
const app = Fastify({
|
|
96
100
|
logger: process.env.NODE_ENV === "development"
|
|
97
101
|
? {
|
|
@@ -199,8 +203,6 @@ export async function startServer() {
|
|
|
199
203
|
});
|
|
200
204
|
// Register routes
|
|
201
205
|
app.register(tmuxRoutes, { prefix: "/api/tmux" });
|
|
202
|
-
app.register(sshRoutes, { prefix: "/api/ssh" });
|
|
203
|
-
app.register(portForwardRoutes, { prefix: "/api/port-forward" });
|
|
204
206
|
app.register(taskRoutes, { prefix: "/api/tasks" });
|
|
205
207
|
app.register(configRoutes, { prefix: "/api/config" });
|
|
206
208
|
app.register(gitRoutes, { prefix: "/api/git" });
|
|
@@ -212,6 +214,22 @@ export async function startServer() {
|
|
|
212
214
|
app.register(moduleRegistryRoutes);
|
|
213
215
|
app.register(pluginRoutes, { prefix: "/api/plugins" });
|
|
214
216
|
app.register(pluginStateRoutes, { prefix: "/api/plugin-state" });
|
|
217
|
+
app.register(logRoutes, { prefix: "/api/logs" });
|
|
218
|
+
// ── Request/Response logging ─────────────────────────────────────────
|
|
219
|
+
// Log every API request with method, path, status, and duration.
|
|
220
|
+
// SSE streams and health checks are logged at debug level to avoid noise.
|
|
221
|
+
app.addHook("onResponse", async (request, reply) => {
|
|
222
|
+
const url = request.url.split("?")[0];
|
|
223
|
+
const duration = reply.elapsedTime ? Math.round(reply.elapsedTime) : 0;
|
|
224
|
+
const isNoisy = url === "/health" || url.startsWith("/api/logs/stream");
|
|
225
|
+
const level = isNoisy ? "debug" : reply.statusCode >= 400 ? "warn" : "info";
|
|
226
|
+
logger[level]("http", `${request.method} ${url} → ${reply.statusCode}`, {
|
|
227
|
+
method: request.method,
|
|
228
|
+
path: url,
|
|
229
|
+
statusCode: reply.statusCode,
|
|
230
|
+
durationMs: duration,
|
|
231
|
+
});
|
|
232
|
+
});
|
|
215
233
|
// --- Terminal proxy: forward /terminal/:sessionId/* → ttyd on localhost ---
|
|
216
234
|
// This lets the single agent tunnel proxy all ttyd sessions, removing the need
|
|
217
235
|
// for one cloudflared tunnel per ttyd instance.
|
|
@@ -310,6 +328,10 @@ export async function startServer() {
|
|
|
310
328
|
upstreamWs.on("open", () => {
|
|
311
329
|
upstreamAlive = true;
|
|
312
330
|
console.log(`[TerminalProxy] WS bridge established → 127.0.0.1:${ttydPort}/ws (protocol: ${upstreamWs.protocol})`);
|
|
331
|
+
logger.info("terminal-proxy", `WS bridge established`, {
|
|
332
|
+
ttydPort,
|
|
333
|
+
protocol: upstreamWs.protocol,
|
|
334
|
+
});
|
|
313
335
|
// Flush any buffered messages
|
|
314
336
|
for (const msg of upstreamBuffer) {
|
|
315
337
|
if (clientAlive && clientWs.readyState === WebSocket.OPEN) {
|
|
@@ -411,6 +433,44 @@ export async function startServer() {
|
|
|
411
433
|
: `Failed to install: ${failed.map((f) => f.tool).join(", ")}`,
|
|
412
434
|
};
|
|
413
435
|
});
|
|
436
|
+
// ── Gateway Authentication Configuration ─────────────────────────────
|
|
437
|
+
// Called by the MFE after agent creation to configure the agent with
|
|
438
|
+
// OAuth credentials for making authenticated calls to the public gateways.
|
|
439
|
+
app.post("/api/config/gateway-auth", async (request, reply) => {
|
|
440
|
+
const body = request.body;
|
|
441
|
+
if (!body.globalGatewayUrl || !body.clientId || !body.clientSecret) {
|
|
442
|
+
return reply.code(400).send({
|
|
443
|
+
error: "Missing required fields: globalGatewayUrl, clientId, clientSecret",
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
// Store credentials in the config store (persisted to SQLite)
|
|
447
|
+
db.setConfig("gateway.globalUrl", body.globalGatewayUrl);
|
|
448
|
+
if (body.workspaceGatewayUrl) {
|
|
449
|
+
db.setConfig("gateway.workspaceUrl", body.workspaceGatewayUrl);
|
|
450
|
+
}
|
|
451
|
+
db.setConfig("gateway.clientId", body.clientId);
|
|
452
|
+
db.setConfig("gateway.clientSecret", body.clientSecret);
|
|
453
|
+
if (body.scopes) {
|
|
454
|
+
db.setConfig("gateway.scopes", JSON.stringify(body.scopes));
|
|
455
|
+
}
|
|
456
|
+
// Configure the gateway client
|
|
457
|
+
gatewayClient.configure({
|
|
458
|
+
globalGatewayUrl: body.globalGatewayUrl,
|
|
459
|
+
workspaceGatewayUrl: body.workspaceGatewayUrl,
|
|
460
|
+
clientId: body.clientId,
|
|
461
|
+
clientSecret: body.clientSecret,
|
|
462
|
+
scopes: body.scopes,
|
|
463
|
+
});
|
|
464
|
+
logger.info("app", "Gateway auth configured", { clientId: body.clientId });
|
|
465
|
+
return { success: true, configured: true };
|
|
466
|
+
});
|
|
467
|
+
app.get("/api/config/gateway-auth", async () => {
|
|
468
|
+
const config = gatewayClient.getConfig();
|
|
469
|
+
return {
|
|
470
|
+
configured: gatewayClient.isConfigured(),
|
|
471
|
+
...(config ?? {}),
|
|
472
|
+
};
|
|
473
|
+
});
|
|
414
474
|
// Version endpoint
|
|
415
475
|
app.get("/api/version", async (_request, _reply) => {
|
|
416
476
|
const packageJson = await import("../package.json", {
|
|
@@ -434,21 +494,51 @@ export async function startServer() {
|
|
|
434
494
|
},
|
|
435
495
|
});
|
|
436
496
|
io.on("connection", (socket) => {
|
|
437
|
-
|
|
497
|
+
logger.info("socket", "Client connected", { socketId: socket.id });
|
|
438
498
|
socket.on("subscribe", (channel) => {
|
|
439
499
|
socket.join(channel);
|
|
440
|
-
|
|
500
|
+
logger.debug("socket", `Client subscribed to ${channel}`, {
|
|
501
|
+
socketId: socket.id,
|
|
502
|
+
channel,
|
|
503
|
+
});
|
|
441
504
|
});
|
|
442
505
|
socket.on("unsubscribe", (channel) => {
|
|
443
506
|
socket.leave(channel);
|
|
444
|
-
|
|
507
|
+
logger.debug("socket", `Client unsubscribed from ${channel}`, {
|
|
508
|
+
socketId: socket.id,
|
|
509
|
+
channel,
|
|
510
|
+
});
|
|
445
511
|
});
|
|
446
512
|
socket.on("disconnect", () => {
|
|
447
|
-
|
|
513
|
+
logger.info("socket", "Client disconnected", { socketId: socket.id });
|
|
448
514
|
});
|
|
449
515
|
});
|
|
450
516
|
// Make io available to routes
|
|
451
517
|
app.decorate("io", io);
|
|
518
|
+
// ── Restore gateway client from persisted config ────────────────────
|
|
519
|
+
try {
|
|
520
|
+
const gwGlobalUrl = db.getConfig("gateway.globalUrl");
|
|
521
|
+
const gwClientId = db.getConfig("gateway.clientId");
|
|
522
|
+
const gwClientSecret = db.getConfig("gateway.clientSecret");
|
|
523
|
+
if (gwGlobalUrl && gwClientId && gwClientSecret) {
|
|
524
|
+
const gwWorkspaceUrl = db.getConfig("gateway.workspaceUrl") || undefined;
|
|
525
|
+
const gwScopesRaw = db.getConfig("gateway.scopes");
|
|
526
|
+
const gwScopes = gwScopesRaw ? JSON.parse(gwScopesRaw) : undefined;
|
|
527
|
+
gatewayClient.configure({
|
|
528
|
+
globalGatewayUrl: gwGlobalUrl,
|
|
529
|
+
workspaceGatewayUrl: gwWorkspaceUrl,
|
|
530
|
+
clientId: gwClientId,
|
|
531
|
+
clientSecret: gwClientSecret,
|
|
532
|
+
scopes: gwScopes,
|
|
533
|
+
});
|
|
534
|
+
logger.info("app", "Restored gateway client config from database");
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
catch (err) {
|
|
538
|
+
logger.warn("app", "Failed to restore gateway client config", {
|
|
539
|
+
error: err instanceof Error ? err.message : String(err),
|
|
540
|
+
});
|
|
541
|
+
}
|
|
452
542
|
// ── Plugin lifecycle: onServerStart ─────────────────────────────────
|
|
453
543
|
// Load all registered plugins and let them register routes/hooks.
|
|
454
544
|
await pluginManager.loadAll();
|
|
@@ -492,10 +582,10 @@ export async function startServer() {
|
|
|
492
582
|
listener.call(app.server, req, socket, head);
|
|
493
583
|
}
|
|
494
584
|
});
|
|
495
|
-
|
|
585
|
+
logger.info("app", "Terminal WS upgrade handler installed");
|
|
496
586
|
}
|
|
497
587
|
else {
|
|
498
|
-
|
|
588
|
+
logger.warn("app", "Terminal proxy not initialized — WS upgrade handler not installed");
|
|
499
589
|
}
|
|
500
590
|
});
|
|
501
591
|
// Graceful shutdown
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -881,244 +881,6 @@ sessionCmd
|
|
|
881
881
|
}
|
|
882
882
|
});
|
|
883
883
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
884
|
-
// SSH Commands
|
|
885
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
886
|
-
const sshCmd = program.command("ssh").description("Manage SSH connections");
|
|
887
|
-
sshCmd
|
|
888
|
-
.command("list")
|
|
889
|
-
.description("List saved SSH connections")
|
|
890
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
891
|
-
.action(async (options) => {
|
|
892
|
-
try {
|
|
893
|
-
const { ok, data } = await agentFetch(options.agentUrl, "/api/ssh/connections");
|
|
894
|
-
if (!ok)
|
|
895
|
-
fail("Failed to list SSH connections");
|
|
896
|
-
const conns = Array.isArray(data)
|
|
897
|
-
? data
|
|
898
|
-
: (data.connections ?? []);
|
|
899
|
-
if (conns.length === 0) {
|
|
900
|
-
console.log(" No SSH connections saved.");
|
|
901
|
-
}
|
|
902
|
-
else {
|
|
903
|
-
formatTable(conns.map((c) => ({
|
|
904
|
-
ID: (c.id || "").substring(0, 12),
|
|
905
|
-
Name: c.serverName,
|
|
906
|
-
Host: c.host,
|
|
907
|
-
Port: c.port,
|
|
908
|
-
User: c.username,
|
|
909
|
-
})));
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
catch (error) {
|
|
913
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
914
|
-
}
|
|
915
|
-
});
|
|
916
|
-
sshCmd
|
|
917
|
-
.command("add")
|
|
918
|
-
.description("Add an SSH connection")
|
|
919
|
-
.requiredOption("--name <name>", "Server name")
|
|
920
|
-
.requiredOption("--host <host>", "Hostname or IP")
|
|
921
|
-
.requiredOption("--user <user>", "Username")
|
|
922
|
-
.option("--port <port>", "Port", "22")
|
|
923
|
-
.option("--key <path>", "Private key path")
|
|
924
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
925
|
-
.action(async (options) => {
|
|
926
|
-
try {
|
|
927
|
-
const { ok, data } = await agentFetch(options.agentUrl, "/api/ssh/connections", {
|
|
928
|
-
method: "POST",
|
|
929
|
-
body: JSON.stringify({
|
|
930
|
-
serverName: options.name,
|
|
931
|
-
host: options.host,
|
|
932
|
-
port: parseInt(options.port),
|
|
933
|
-
username: options.user,
|
|
934
|
-
privateKeyPath: options.key,
|
|
935
|
-
}),
|
|
936
|
-
});
|
|
937
|
-
if (!ok)
|
|
938
|
-
fail(data.error || "Failed to add connection");
|
|
939
|
-
console.log(` SSH connection '${options.name}' added.`);
|
|
940
|
-
}
|
|
941
|
-
catch (error) {
|
|
942
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
943
|
-
}
|
|
944
|
-
});
|
|
945
|
-
sshCmd
|
|
946
|
-
.command("remove")
|
|
947
|
-
.description("Remove an SSH connection")
|
|
948
|
-
.requiredOption("-i, --id <id>", "Connection ID")
|
|
949
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
950
|
-
.action(async (options) => {
|
|
951
|
-
try {
|
|
952
|
-
const { ok } = await agentFetch(options.agentUrl, `/api/ssh/connections/${options.id}`, {
|
|
953
|
-
method: "DELETE",
|
|
954
|
-
});
|
|
955
|
-
if (!ok)
|
|
956
|
-
fail("Failed to remove connection");
|
|
957
|
-
console.log(" SSH connection removed.");
|
|
958
|
-
}
|
|
959
|
-
catch (error) {
|
|
960
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
961
|
-
}
|
|
962
|
-
});
|
|
963
|
-
sshCmd
|
|
964
|
-
.command("test")
|
|
965
|
-
.description("Test an SSH connection")
|
|
966
|
-
.requiredOption("-i, --id <id>", "Connection ID")
|
|
967
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
968
|
-
.action(async (options) => {
|
|
969
|
-
try {
|
|
970
|
-
const { ok, data } = await agentFetch(options.agentUrl, `/api/ssh/test/${options.id}`, { method: "POST" });
|
|
971
|
-
if (!ok)
|
|
972
|
-
fail(data.error || "Connection test failed");
|
|
973
|
-
console.log(" \x1b[32mConnection successful.\x1b[0m");
|
|
974
|
-
}
|
|
975
|
-
catch (error) {
|
|
976
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
977
|
-
}
|
|
978
|
-
});
|
|
979
|
-
sshCmd
|
|
980
|
-
.command("exec")
|
|
981
|
-
.description("Execute a command on a remote server")
|
|
982
|
-
.requiredOption("-i, --id <id>", "Connection ID")
|
|
983
|
-
.requiredOption("-c, --command <cmd>", "Command to execute")
|
|
984
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
985
|
-
.action(async (options) => {
|
|
986
|
-
try {
|
|
987
|
-
const { ok, data } = await agentFetch(options.agentUrl, "/api/ssh/execute", {
|
|
988
|
-
method: "POST",
|
|
989
|
-
body: JSON.stringify({
|
|
990
|
-
connectionId: options.id,
|
|
991
|
-
command: options.command,
|
|
992
|
-
}),
|
|
993
|
-
});
|
|
994
|
-
if (!ok)
|
|
995
|
-
fail(data.error || "Execution failed");
|
|
996
|
-
if (data.output)
|
|
997
|
-
console.log(data.output);
|
|
998
|
-
if (data.error)
|
|
999
|
-
console.error(data.error);
|
|
1000
|
-
}
|
|
1001
|
-
catch (error) {
|
|
1002
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1003
|
-
}
|
|
1004
|
-
});
|
|
1005
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1006
|
-
// Port Forward Commands
|
|
1007
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1008
|
-
const forwardCmd = program
|
|
1009
|
-
.command("forward")
|
|
1010
|
-
.description("Manage SSH port forwards");
|
|
1011
|
-
forwardCmd
|
|
1012
|
-
.command("list")
|
|
1013
|
-
.description("List all port forwards")
|
|
1014
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
1015
|
-
.action(async (options) => {
|
|
1016
|
-
try {
|
|
1017
|
-
const { ok, data } = await agentFetch(options.agentUrl, "/api/port-forward/");
|
|
1018
|
-
if (!ok)
|
|
1019
|
-
fail("Failed to list forwards");
|
|
1020
|
-
const fwds = Array.isArray(data)
|
|
1021
|
-
? data
|
|
1022
|
-
: (data.forwards ?? []);
|
|
1023
|
-
if (fwds.length === 0) {
|
|
1024
|
-
console.log(" No port forwards found.");
|
|
1025
|
-
}
|
|
1026
|
-
else {
|
|
1027
|
-
formatTable(fwds.map((f) => ({
|
|
1028
|
-
ID: (f.id || "").substring(0, 12),
|
|
1029
|
-
Local: f.localPort,
|
|
1030
|
-
Remote: `${f.remoteHost}:${f.remotePort}`,
|
|
1031
|
-
Server: f.serverName,
|
|
1032
|
-
Status: f.status,
|
|
1033
|
-
})));
|
|
1034
|
-
}
|
|
1035
|
-
}
|
|
1036
|
-
catch (error) {
|
|
1037
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1038
|
-
}
|
|
1039
|
-
});
|
|
1040
|
-
forwardCmd
|
|
1041
|
-
.command("create")
|
|
1042
|
-
.description("Create a port forward rule")
|
|
1043
|
-
.requiredOption("--local <port>", "Local port")
|
|
1044
|
-
.requiredOption("--remote-host <host>", "Remote host")
|
|
1045
|
-
.requiredOption("--remote-port <port>", "Remote port")
|
|
1046
|
-
.requiredOption("--server <name>", "SSH server name")
|
|
1047
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
1048
|
-
.action(async (options) => {
|
|
1049
|
-
try {
|
|
1050
|
-
const { ok, data } = await agentFetch(options.agentUrl, "/api/port-forward/", {
|
|
1051
|
-
method: "POST",
|
|
1052
|
-
body: JSON.stringify({
|
|
1053
|
-
localPort: parseInt(options.local),
|
|
1054
|
-
remoteHost: options.remoteHost,
|
|
1055
|
-
remotePort: parseInt(options.remotePort),
|
|
1056
|
-
serverName: options.server,
|
|
1057
|
-
}),
|
|
1058
|
-
});
|
|
1059
|
-
if (!ok)
|
|
1060
|
-
fail(data.error || "Failed to create forward");
|
|
1061
|
-
console.log(" Port forward created.");
|
|
1062
|
-
}
|
|
1063
|
-
catch (error) {
|
|
1064
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1065
|
-
}
|
|
1066
|
-
});
|
|
1067
|
-
forwardCmd
|
|
1068
|
-
.command("start")
|
|
1069
|
-
.description("Start a port forward")
|
|
1070
|
-
.requiredOption("-i, --id <id>", "Forward ID")
|
|
1071
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
1072
|
-
.action(async (options) => {
|
|
1073
|
-
try {
|
|
1074
|
-
const { ok, data } = await agentFetch(options.agentUrl, `/api/port-forward/${options.id}/start`, {
|
|
1075
|
-
method: "POST",
|
|
1076
|
-
});
|
|
1077
|
-
if (!ok)
|
|
1078
|
-
fail(data.error || "Failed to start forward");
|
|
1079
|
-
console.log(" Port forward started.");
|
|
1080
|
-
}
|
|
1081
|
-
catch (error) {
|
|
1082
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1083
|
-
}
|
|
1084
|
-
});
|
|
1085
|
-
forwardCmd
|
|
1086
|
-
.command("stop")
|
|
1087
|
-
.description("Stop a port forward")
|
|
1088
|
-
.requiredOption("-i, --id <id>", "Forward ID")
|
|
1089
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
1090
|
-
.action(async (options) => {
|
|
1091
|
-
try {
|
|
1092
|
-
const { ok, data } = await agentFetch(options.agentUrl, `/api/port-forward/${options.id}/stop`, {
|
|
1093
|
-
method: "POST",
|
|
1094
|
-
});
|
|
1095
|
-
if (!ok)
|
|
1096
|
-
fail(data.error || "Failed to stop forward");
|
|
1097
|
-
console.log(" Port forward stopped.");
|
|
1098
|
-
}
|
|
1099
|
-
catch (error) {
|
|
1100
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1101
|
-
}
|
|
1102
|
-
});
|
|
1103
|
-
forwardCmd
|
|
1104
|
-
.command("delete")
|
|
1105
|
-
.description("Delete a port forward")
|
|
1106
|
-
.requiredOption("-i, --id <id>", "Forward ID")
|
|
1107
|
-
.option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL)
|
|
1108
|
-
.action(async (options) => {
|
|
1109
|
-
try {
|
|
1110
|
-
const { ok } = await agentFetch(options.agentUrl, `/api/port-forward/${options.id}`, {
|
|
1111
|
-
method: "DELETE",
|
|
1112
|
-
});
|
|
1113
|
-
if (!ok)
|
|
1114
|
-
fail("Failed to delete forward");
|
|
1115
|
-
console.log(" Port forward deleted.");
|
|
1116
|
-
}
|
|
1117
|
-
catch (error) {
|
|
1118
|
-
fail(`Failed: ${error instanceof Error ? error.message : error}`);
|
|
1119
|
-
}
|
|
1120
|
-
});
|
|
1121
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1122
884
|
// Task Commands
|
|
1123
885
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1124
886
|
const taskCmd = program.command("task").description("Manage background tasks");
|
|
@@ -1295,7 +1057,8 @@ pluginCmd
|
|
|
1295
1057
|
try {
|
|
1296
1058
|
const entry = await pluginManager.install(packageName);
|
|
1297
1059
|
console.log(`\n \x1b[32m✓ Plugin '${entry.pluginName}' (${entry.packageName}@${entry.version}) installed.\x1b[0m`);
|
|
1298
|
-
console.log(" Restart any running agents for the plugin to take effect
|
|
1060
|
+
console.log(" Restart any running agents for the plugin to take effect.");
|
|
1061
|
+
console.log(" Run \x1b[1mvibe completion install\x1b[0m to update shell completions.\n");
|
|
1299
1062
|
}
|
|
1300
1063
|
catch (error) {
|
|
1301
1064
|
fail(`Plugin install failed: ${error instanceof Error ? error.message : error}`);
|
|
@@ -1423,6 +1186,65 @@ stateCmd
|
|
|
1423
1186
|
}
|
|
1424
1187
|
});
|
|
1425
1188
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1189
|
+
// Completion Commands
|
|
1190
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1191
|
+
const completionCmd = program
|
|
1192
|
+
.command("completion")
|
|
1193
|
+
.description("Generate shell completion scripts (bash, zsh, fish)");
|
|
1194
|
+
completionCmd
|
|
1195
|
+
.command("bash")
|
|
1196
|
+
.description("Print Bash completion script")
|
|
1197
|
+
.action(async () => {
|
|
1198
|
+
const { collectCommands, generateBash } = await import("./services/completion.js");
|
|
1199
|
+
const cmds = collectCommands(program);
|
|
1200
|
+
process.stdout.write(generateBash(cmds));
|
|
1201
|
+
});
|
|
1202
|
+
completionCmd
|
|
1203
|
+
.command("zsh")
|
|
1204
|
+
.description("Print Zsh completion script")
|
|
1205
|
+
.action(async () => {
|
|
1206
|
+
const { collectCommands, generateZsh } = await import("./services/completion.js");
|
|
1207
|
+
const cmds = collectCommands(program);
|
|
1208
|
+
process.stdout.write(generateZsh(cmds));
|
|
1209
|
+
});
|
|
1210
|
+
completionCmd
|
|
1211
|
+
.command("fish")
|
|
1212
|
+
.description("Print Fish completion script")
|
|
1213
|
+
.action(async () => {
|
|
1214
|
+
const { collectCommands, generateFish } = await import("./services/completion.js");
|
|
1215
|
+
const cmds = collectCommands(program);
|
|
1216
|
+
process.stdout.write(generateFish(cmds));
|
|
1217
|
+
});
|
|
1218
|
+
completionCmd
|
|
1219
|
+
.command("install")
|
|
1220
|
+
.description("Auto-install completions for your current shell")
|
|
1221
|
+
.option("--shell <shell>", "Force a specific shell (bash, zsh, fish). Auto-detects if omitted.")
|
|
1222
|
+
.action(async (options) => {
|
|
1223
|
+
const { collectCommands, installCompletion } = await import("./services/completion.js");
|
|
1224
|
+
const cmds = collectCommands(program);
|
|
1225
|
+
const result = installCompletion(cmds, options.shell);
|
|
1226
|
+
console.log(`\n \x1b[32m✓\x1b[0m Completions installed for \x1b[1m${result.shell}\x1b[0m`);
|
|
1227
|
+
console.log(` Written to: ${result.path}`);
|
|
1228
|
+
console.log(`\n Restart your shell or run:`);
|
|
1229
|
+
if (result.shell === "bash")
|
|
1230
|
+
console.log(` source ${result.path}`);
|
|
1231
|
+
else if (result.shell === "zsh")
|
|
1232
|
+
console.log(` source ${result.path}`);
|
|
1233
|
+
else
|
|
1234
|
+
console.log(` source ${result.path}`);
|
|
1235
|
+
console.log();
|
|
1236
|
+
});
|
|
1237
|
+
completionCmd
|
|
1238
|
+
.command("uninstall")
|
|
1239
|
+
.description("Remove previously installed completions")
|
|
1240
|
+
.option("--shell <shell>", "Force a specific shell (bash, zsh, fish)")
|
|
1241
|
+
.action(async (options) => {
|
|
1242
|
+
const { uninstallCompletion } = await import("./services/completion.js");
|
|
1243
|
+
const result = uninstallCompletion(options.shell);
|
|
1244
|
+
console.log(`\n \x1b[32m✓\x1b[0m Completions removed for \x1b[1m${result.shell}\x1b[0m`);
|
|
1245
|
+
console.log(` Cleaned: ${result.path}\n`);
|
|
1246
|
+
});
|
|
1247
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
1426
1248
|
// ── Load plugins & dispatch CLI setup before parsing ─────────────────────────
|
|
1427
1249
|
async function main() {
|
|
1428
1250
|
// Load all registered plugins (silently skips failures)
|