@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.
Files changed (65) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +100 -10
  3. package/dist/app.js.map +1 -1
  4. package/dist/cli.js +61 -239
  5. package/dist/cli.js.map +1 -1
  6. package/dist/db/schema.d.ts +0 -32
  7. package/dist/db/schema.d.ts.map +1 -1
  8. package/dist/db/schema.js +1 -106
  9. package/dist/db/schema.js.map +1 -1
  10. package/dist/routes/config.d.ts.map +1 -1
  11. package/dist/routes/config.js +0 -4
  12. package/dist/routes/config.js.map +1 -1
  13. package/dist/routes/files.d.ts.map +1 -1
  14. package/dist/routes/files.js +69 -268
  15. package/dist/routes/files.js.map +1 -1
  16. package/dist/routes/git.d.ts.map +1 -1
  17. package/dist/routes/git.js +2 -87
  18. package/dist/routes/git.js.map +1 -1
  19. package/dist/routes/logs.d.ts +9 -0
  20. package/dist/routes/logs.d.ts.map +1 -0
  21. package/dist/routes/logs.js +107 -0
  22. package/dist/routes/logs.js.map +1 -0
  23. package/dist/routes/plugin-state.d.ts +3 -0
  24. package/dist/routes/plugin-state.d.ts.map +1 -1
  25. package/dist/routes/plugin-state.js +71 -12
  26. package/dist/routes/plugin-state.js.map +1 -1
  27. package/dist/routes/tunnel.d.ts.map +1 -1
  28. package/dist/routes/tunnel.js +5 -6
  29. package/dist/routes/tunnel.js.map +1 -1
  30. package/dist/services/completion.d.ts +46 -0
  31. package/dist/services/completion.d.ts.map +1 -0
  32. package/dist/services/completion.js +317 -0
  33. package/dist/services/completion.js.map +1 -0
  34. package/dist/services/gateway-client.d.ts +61 -0
  35. package/dist/services/gateway-client.d.ts.map +1 -0
  36. package/dist/services/gateway-client.js +147 -0
  37. package/dist/services/gateway-client.js.map +1 -0
  38. package/dist/services/logger.d.ts +61 -0
  39. package/dist/services/logger.d.ts.map +1 -0
  40. package/dist/services/logger.js +223 -0
  41. package/dist/services/logger.js.map +1 -0
  42. package/dist/services/plugin-manager.d.ts.map +1 -1
  43. package/dist/services/plugin-manager.js +3 -2
  44. package/dist/services/plugin-manager.js.map +1 -1
  45. package/dist/services/plugin-state-backend.d.ts +22 -0
  46. package/dist/services/plugin-state-backend.d.ts.map +1 -0
  47. package/dist/services/plugin-state-backend.js +103 -0
  48. package/dist/services/plugin-state-backend.js.map +1 -0
  49. package/dist/services/plugin-state-external.d.ts +36 -0
  50. package/dist/services/plugin-state-external.d.ts.map +1 -0
  51. package/dist/services/plugin-state-external.js +144 -0
  52. package/dist/services/plugin-state-external.js.map +1 -0
  53. package/dist/services/plugin-state-router.d.ts +40 -0
  54. package/dist/services/plugin-state-router.d.ts.map +1 -0
  55. package/dist/services/plugin-state-router.js +82 -0
  56. package/dist/services/plugin-state-router.js.map +1 -0
  57. package/package.json +4 -8
  58. package/dist/routes/port-forward.d.ts +0 -3
  59. package/dist/routes/port-forward.d.ts.map +0 -1
  60. package/dist/routes/port-forward.js +0 -214
  61. package/dist/routes/port-forward.js.map +0 -1
  62. package/dist/routes/ssh.d.ts +0 -3
  63. package/dist/routes/ssh.d.ts.map +0 -1
  64. package/dist/routes/ssh.js +0 -192
  65. 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;AAuC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSA+iBhC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,aAAa,CAAC;QAClB,EAAE,EAAE,cAAc,CAAC;KACpB;CACF"}
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
- console.log("Client connected:", socket.id);
497
+ logger.info("socket", "Client connected", { socketId: socket.id });
438
498
  socket.on("subscribe", (channel) => {
439
499
  socket.join(channel);
440
- console.log(`Client ${socket.id} subscribed to ${channel}`);
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
- console.log(`Client ${socket.id} unsubscribed from ${channel}`);
507
+ logger.debug("socket", `Client unsubscribed from ${channel}`, {
508
+ socketId: socket.id,
509
+ channel,
510
+ });
445
511
  });
446
512
  socket.on("disconnect", () => {
447
- console.log("Client disconnected:", socket.id);
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
- console.log("[App] Terminal WS upgrade handler installed (master handler replaces Socket.IO)");
585
+ logger.info("app", "Terminal WS upgrade handler installed");
496
586
  }
497
587
  else {
498
- console.warn("[App] Terminal proxy not initialized — WS upgrade handler not installed");
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":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,0EAA0E;AAC1E,qEAAqE;AACrE,sEAAsE;AACtE,0CAA0C;AAC1C,uEAAuE;AACvE,kDAAkD;AAClD,IAAI,WAAW,GAAW,EAAE,CAAC;AAE7B;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,OAAO,QAAQ,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7D,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,wEAAwE;IACxE,qCAAqC;IACrC,+DAA+D;IAC/D,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAElD,IAAI,SAA6B,CAAC;IAElC,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACxC,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACjC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACtB,6CAA6C;wBAC7C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;wBACxC,MAAM,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;wBACrC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC1C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC3D,SAAS,GAAG,SAAS,CAAC;wBACtB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;oBACrE,CAAC;yBAAM,CAAC;wBACN,qBAAqB;wBACrB,SAAS,GAAG,MAAM,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,WAAW,GAAG,SAAS,IAAI,mBAAmB,EAAE,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,EAAE;QAC3C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;KAC3C,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,MAAM,EACJ,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;YACpC,CAAC,CAAC;gBACE,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE;oBACX,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;wBACX,OAAO;4BACL,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;4BACtB,aAAa,EAAE,GAAG,CAAC,EAAE;4BACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU;yBACnC,CAAC;oBACJ,CAAC;oBACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;wBACX,OAAO;4BACL,UAAU,EAAE,GAAG,CAAC,UAAU;yBAC3B,CAAC;oBACJ,CAAC;iBACF;aACF;YACH,CAAC,CAAC,KAAK;KACZ,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,EAAE,GAAG,IAAI,aAAa,CAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,yBAAyB,CACjD,CAAC;IAEF,8BAA8B;IAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEvB,mBAAmB;IACnB,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI;QACvC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;QACzB,qBAAqB,EAAE,KAAK;QAC5B,yBAAyB,EAAE,KAAK;QAChC,UAAU,EAAE,KAAK,EAAE,2CAA2C;KAC/D,CAAC,CAAC;IAEH,wBAAwB;IACxB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC5B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACxB,SAAS,EAAE,iBAAiB,EAAE;SAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,qEAAqE;IACrE,qEAAqE;IACrE,8BAA8B;IAC9B,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACxC,OAAO;YACL,WAAW,EAAE,qBAAqB,EAAE;YACpC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;YACf,SAAS,EAAE,iBAAiB,EAAE;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,wEAAwE;IACxE,yEAAyE;IACzE,wDAAwD;IACxD,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACvC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,IAAI,EAAE,sGAAsG;SAC7G,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,0EAA0E;IAC1E,4DAA4D;IAC5D,2DAA2D;IAC3D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;QAChC,SAAS;QACT,qBAAqB;QACrB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,CAAC;IACH,yEAAyE;IACzE,iFAAiF;IACjF,MAAM,oBAAoB,GAAG,CAAC,YAAY,CAAC,CAAC;IAE5C,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;QAEzE,6BAA6B;QAC7B,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QACvC,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO;QACrC,CAAC;QAED,2CAA2C;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAuB,CAAC;QAC3E,MAAM,QAAQ,GAAI,OAAO,CAAC,KAAgC,EAAE,MAAM,CAAC;QACnE,MAAM,WAAW,GAAG,SAAS,IAAI,QAAQ,CAAC;QAE1C,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE,cAAc;gBACrB,OAAO,EACL,mFAAmF;aACtF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAClD,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACnD,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACnD,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3D,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACnE,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACvD,GAAG,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAEjD,wEAAwE;IACxE,iEAAiE;IACjE,0EAA0E;IAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE;YACtE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,+EAA+E;IAC/E,gDAAgD;IAChD,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,yEAAyE;IACzE,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,aAAa,CAAC,QAAQ;QAChD,wDAAwD;QACxD,SAAS,eAAe,CAAC,SAAiB;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YACnE,0BAA0B;YAC1B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACjC,OAAO,OAAO,CAAC,QAAQ,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,KAAK,UAAU,WAAW,CACxB,OAAyC,EACzC,KAAqC,EACrC,IAAY,EACZ,YAAoB;YAEpB,MAAM,SAAS,GAAgB;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;qBAC5B,MAAM,CACL,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACjE;qBACA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC;aACF,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1D,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAc,CAAC;YAC1C,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,oBAAoB,IAAI,GAAG,YAAY,EAAE,EACzC,SAAS,CACV,CAAC;YAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,IAAI,CAAC,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACrE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,iEAAiE;QACjE,QAAQ,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAA+B,CAAC;YAC9D,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI;gBACP,OAAO,KAAK;qBACT,IAAI,CAAC,GAAG,CAAC;qBACT,IAAI,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;YAC9D,OAAO,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAA+B,CAAC;YAC9D,MAAM,YAAY,GACf,OAAO,CAAC,MAAiC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI;gBACP,OAAO,KAAK;qBACT,IAAI,CAAC,GAAG,CAAC;qBACT,IAAI,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;YAC9D,OAAO,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,sEAAsE;QACtE,wEAAwE;QACxE,4EAA4E;QAC5E,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,QAAQ,EAAE,IAAI;YACd,qEAAqE;YACrE,yEAAyE;YACzE,eAAe,CAAC,SAAsB;gBACpC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACvC,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;QAEH,WAAW,CAAC,EAAE,CACZ,YAAY,EACZ,CACE,QAAmB,EACnB,GAAmC,EACnC,QAAgB,EAChB,EAAE;YACF,uCAAuC;YACvC,qEAAqE;YACrE,uEAAuE;YACvE,kBAAkB;YAClB,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,eAAe;gBAC/B,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;YAE1D,MAAM,WAAW,GAAG,kBAAkB,QAAQ,KAAK,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE;gBACvD,iBAAiB,EAAE,KAAK;aACzB,CAAC,CAAC;YAEH,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,sDAAsD;YACtD,MAAM,cAAc,GAGf,EAAE,CAAC;YAER,0EAA0E;YAC1E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,CAAC,GAAG,CACT,qDAAqD,QAAQ,kBAAkB,UAAU,CAAC,QAAQ,GAAG,CACtG,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,EAAE;oBACrD,QAAQ;oBACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;iBAC9B,CAAC,CAAC;gBACH,8BAA8B;gBAC9B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;oBACjC,IAAI,WAAW,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;wBAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBACD,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,UAAU,CAAC,EAAE,CACX,SAAS,EACT,CAAC,IAAqC,EAAE,QAAiB,EAAE,EAAE;gBAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,iEAAiE;oBACjE,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBACD,IAAI,WAAW,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CACF,CAAC;YAEF,0CAA0C;YAC1C,QAAQ,CAAC,EAAE,CACT,SAAS,EACT,CAAC,IAAqC,EAAE,QAAiB,EAAE,EAAE;gBAC3D,IAAI,aAAa,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC9D,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC,CACF,CAAC;YAEF,kCAAkC;YAClC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACpC,WAAW,GAAG,KAAK,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;gBAC/D,IACE,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBACxC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAC9C,CAAC;oBACD,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACtC,aAAa,GAAG,KAAK,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,iDAAiD,IAAI,GAAG,CAAC,CAAC;gBACtE,IACE,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBACtC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAC5C,CAAC;oBACD,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gBAAgB;YAChB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC/D,WAAW,GAAG,KAAK,CAAC;gBACpB,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjE,aAAa,GAAG,KAAK,CAAC;gBACtB,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,mEAAmE;QACnE,+DAA+D;QAC9D,QAAQ,CAAC,MAAc,CAAC,YAAY,GAAG,WAAW,CAAC;QACnD,QAAQ,CAAC,MAAc,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACtC,OAAO;YACL,SAAS,EAAE,iBAAiB,EAAE;YAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE,8BAA8B;gBACrC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC1D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC5C,eAAe,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACrC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,OAAO;YACP,OAAO,EACL,MAAM,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,yCAAyC;gBAC3C,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,qEAAqE;IACrE,2EAA2E;IAC3E,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAMpB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EACH,mEAAmE;aACtE,CAAC,CAAC;QACL,CAAC;QAED,8DAA8D;QAC9D,EAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,+BAA+B;QAC/B,aAAa,CAAC,SAAS,CAAC;YACtB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QACzC,OAAO;YACL,UAAU,EAAE,aAAa,CAAC,YAAY,EAAE;YACxC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QACjD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE;YAClD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI;YAC9B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO;YACpC,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACxB,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE;QACxC,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI;YACvC,WAAW,EAAE,IAAI;SAClB;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAEnE,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAe,EAAE,EAAE;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,wBAAwB,OAAO,EAAE,EAAE;gBACxD,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,OAAe,EAAE,EAAE;YAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,OAAO,EAAE,EAAE;gBAC5D,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEvB,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC5D,IAAI,WAAW,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,SAAS,CAAC;YACzE,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,aAAa,CAAC,SAAS,CAAC;gBACtB,gBAAgB,EAAE,WAAW;gBAC7B,mBAAmB,EAAE,cAAc;gBACnC,QAAQ,EAAE,UAAU;gBACpB,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,yCAAyC,EAAE;YAC5D,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE7C,uEAAuE;IACvE,wCAAwC;IACxC,gEAAgE;IAChE,iDAAiD;IACjD,qEAAqE;IACrE,kEAAkE;IAClE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,WAAW,GAAI,GAAG,CAAC,MAAc,CAAC,YAE3B,CAAC;QACd,MAAM,eAAe,GAAI,GAAG,CAAC,MAAc,CAAC,gBAE/B,CAAC;QAEd,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;YACnC,2DAA2D;YAC3D,MAAM,wBAAwB,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YACzE,kBAAkB;YAClB,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAEzC,sCAAsC;YACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CACX,SAAS,EACT,CACE,GAAmC,EACnC,MAA4B,EAC5B,IAAY,EACZ,EAAE;gBACF,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAEzD,IAAI,KAAK,EAAE,CAAC;oBACV,2CAA2C;oBAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CAAC,IAAI,CACV,+CAA+C,SAAS,aAAa,CACtE,CAAC;wBACF,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;wBACjD,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,OAAO,CAAC,GAAG,CACT,4CAA4C,SAAS,gBAAgB,IAAI,EAAE,CAC5E,CAAC;oBACF,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;wBAClD,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;oBACH,4DAA4D;oBAC5D,OAAO;gBACT,CAAC;gBAED,6DAA6D;gBAC7D,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;oBAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC,CACF,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CACT,KAAK,EACL,mEAAmE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAChC,iCAAiC;QACjC,MAAM,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
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.\n");
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)