@burdenoff/vibe-agent 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +100 -6
  3. package/dist/app.js.map +1 -1
  4. package/dist/cli.js +0 -0
  5. package/dist/routes/logs.d.ts +9 -0
  6. package/dist/routes/logs.d.ts.map +1 -0
  7. package/dist/routes/logs.js +107 -0
  8. package/dist/routes/logs.js.map +1 -0
  9. package/dist/routes/plugin-state.d.ts +3 -0
  10. package/dist/routes/plugin-state.d.ts.map +1 -1
  11. package/dist/routes/plugin-state.js +71 -12
  12. package/dist/routes/plugin-state.js.map +1 -1
  13. package/dist/routes/tunnel.d.ts.map +1 -1
  14. package/dist/routes/tunnel.js +5 -6
  15. package/dist/routes/tunnel.js.map +1 -1
  16. package/dist/services/gateway-client.d.ts +61 -0
  17. package/dist/services/gateway-client.d.ts.map +1 -0
  18. package/dist/services/gateway-client.js +147 -0
  19. package/dist/services/gateway-client.js.map +1 -0
  20. package/dist/services/logger.d.ts +61 -0
  21. package/dist/services/logger.d.ts.map +1 -0
  22. package/dist/services/logger.js +223 -0
  23. package/dist/services/logger.js.map +1 -0
  24. package/dist/services/plugin-manager.d.ts.map +1 -1
  25. package/dist/services/plugin-manager.js +3 -2
  26. package/dist/services/plugin-manager.js.map +1 -1
  27. package/dist/services/plugin-state-backend.d.ts +22 -0
  28. package/dist/services/plugin-state-backend.d.ts.map +1 -0
  29. package/dist/services/plugin-state-backend.js +103 -0
  30. package/dist/services/plugin-state-backend.js.map +1 -0
  31. package/dist/services/plugin-state-external.d.ts +36 -0
  32. package/dist/services/plugin-state-external.d.ts.map +1 -0
  33. package/dist/services/plugin-state-external.js +144 -0
  34. package/dist/services/plugin-state-external.js.map +1 -0
  35. package/dist/services/plugin-state-router.d.ts +40 -0
  36. package/dist/services/plugin-state-router.d.ts.map +1 -0
  37. package/dist/services/plugin-state-router.js +82 -0
  38. package/dist/services/plugin-state-router.js.map +1 -0
  39. package/package.json +2 -2
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;AAsC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSA6iBhC;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
@@ -22,6 +22,9 @@ import { bootstrap, checkDependencies } from "./services/bootstrap.js";
22
22
  import { pluginManager } from "./services/plugin-manager.js";
23
23
  import { pluginRoutes } from "./routes/plugins.js";
24
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";
25
28
  // ── Agent API Key ──────────────────────────────────────────────────────
26
29
  // Generated fresh on every agent start/restart. Must be provided via
27
30
  // `x-agent-api-key` header (or `apiKey` query param) for all requests
@@ -90,6 +93,9 @@ export async function startServer() {
90
93
  }
91
94
  }
92
95
  agentApiKey = staticKey || generateAgentApiKey();
96
+ logger.info("app", "Agent API key resolved", {
97
+ source: staticKey ? "config" : "generated",
98
+ });
93
99
  const app = Fastify({
94
100
  logger: process.env.NODE_ENV === "development"
95
101
  ? {
@@ -208,6 +214,22 @@ export async function startServer() {
208
214
  app.register(moduleRegistryRoutes);
209
215
  app.register(pluginRoutes, { prefix: "/api/plugins" });
210
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
+ });
211
233
  // --- Terminal proxy: forward /terminal/:sessionId/* → ttyd on localhost ---
212
234
  // This lets the single agent tunnel proxy all ttyd sessions, removing the need
213
235
  // for one cloudflared tunnel per ttyd instance.
@@ -306,6 +328,10 @@ export async function startServer() {
306
328
  upstreamWs.on("open", () => {
307
329
  upstreamAlive = true;
308
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
+ });
309
335
  // Flush any buffered messages
310
336
  for (const msg of upstreamBuffer) {
311
337
  if (clientAlive && clientWs.readyState === WebSocket.OPEN) {
@@ -407,6 +433,44 @@ export async function startServer() {
407
433
  : `Failed to install: ${failed.map((f) => f.tool).join(", ")}`,
408
434
  };
409
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
+ });
410
474
  // Version endpoint
411
475
  app.get("/api/version", async (_request, _reply) => {
412
476
  const packageJson = await import("../package.json", {
@@ -430,21 +494,51 @@ export async function startServer() {
430
494
  },
431
495
  });
432
496
  io.on("connection", (socket) => {
433
- console.log("Client connected:", socket.id);
497
+ logger.info("socket", "Client connected", { socketId: socket.id });
434
498
  socket.on("subscribe", (channel) => {
435
499
  socket.join(channel);
436
- console.log(`Client ${socket.id} subscribed to ${channel}`);
500
+ logger.debug("socket", `Client subscribed to ${channel}`, {
501
+ socketId: socket.id,
502
+ channel,
503
+ });
437
504
  });
438
505
  socket.on("unsubscribe", (channel) => {
439
506
  socket.leave(channel);
440
- console.log(`Client ${socket.id} unsubscribed from ${channel}`);
507
+ logger.debug("socket", `Client unsubscribed from ${channel}`, {
508
+ socketId: socket.id,
509
+ channel,
510
+ });
441
511
  });
442
512
  socket.on("disconnect", () => {
443
- console.log("Client disconnected:", socket.id);
513
+ logger.info("socket", "Client disconnected", { socketId: socket.id });
444
514
  });
445
515
  });
446
516
  // Make io available to routes
447
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
+ }
448
542
  // ── Plugin lifecycle: onServerStart ─────────────────────────────────
449
543
  // Load all registered plugins and let them register routes/hooks.
450
544
  await pluginManager.loadAll();
@@ -488,10 +582,10 @@ export async function startServer() {
488
582
  listener.call(app.server, req, socket, head);
489
583
  }
490
584
  });
491
- console.log("[App] Terminal WS upgrade handler installed (master handler replaces Socket.IO)");
585
+ logger.info("app", "Terminal WS upgrade handler installed");
492
586
  }
493
587
  else {
494
- 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");
495
589
  }
496
590
  });
497
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
File without changes
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Log Routes — history + real-time SSE streaming
3
+ *
4
+ * GET /api/logs — Paginated historical log entries
5
+ * GET /api/logs/stream — Server-Sent Events real-time log stream
6
+ */
7
+ import type { FastifyInstance } from "fastify";
8
+ export declare function logRoutes(app: FastifyInstance): Promise<void>;
9
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/routes/logs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,iBAwGnD"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Agent Log Routes — history + real-time SSE streaming
3
+ *
4
+ * GET /api/logs — Paginated historical log entries
5
+ * GET /api/logs/stream — Server-Sent Events real-time log stream
6
+ */
7
+ import logger from "../services/logger.js";
8
+ export async function logRoutes(app) {
9
+ /**
10
+ * GET /api/logs — Historical log entries
11
+ *
12
+ * Query params:
13
+ * level — Minimum log level (debug | info | warn | error)
14
+ * source — Filter by source substring
15
+ * from — ISO timestamp lower bound
16
+ * to — ISO timestamp upper bound
17
+ * limit — Max entries to return (default 200)
18
+ * offset — Skip N entries (for pagination)
19
+ */
20
+ app.get("/", async (request) => {
21
+ const q = request.query;
22
+ const entries = await logger.readHistory({
23
+ level: q.level,
24
+ source: q.source,
25
+ from: q.from,
26
+ to: q.to,
27
+ limit: q.limit ? parseInt(q.limit, 10) : 200,
28
+ offset: q.offset ? parseInt(q.offset, 10) : 0,
29
+ });
30
+ return { entries, count: entries.length };
31
+ });
32
+ /**
33
+ * GET /api/logs/stream — Server-Sent Events (SSE) real-time log stream
34
+ *
35
+ * Query params:
36
+ * level — Minimum log level filter (default: info)
37
+ * source — Filter by source substring
38
+ *
39
+ * Each SSE event is:
40
+ * event: log
41
+ * data: { ...LogEntry }
42
+ */
43
+ app.get("/stream", async (request, reply) => {
44
+ const q = request.query;
45
+ const minLevel = (q.level ?? "info");
46
+ const sourceFilter = q.source ?? "";
47
+ const levelPriority = {
48
+ debug: 0,
49
+ info: 1,
50
+ warn: 2,
51
+ error: 3,
52
+ };
53
+ // Set SSE headers
54
+ reply.raw.writeHead(200, {
55
+ "Content-Type": "text/event-stream",
56
+ "Cache-Control": "no-cache",
57
+ Connection: "keep-alive",
58
+ "X-Accel-Buffering": "no", // Disable Nginx buffering
59
+ });
60
+ // Send an initial comment to establish the connection
61
+ reply.raw.write(": connected\n\n");
62
+ // Heartbeat to keep the connection alive (every 15s)
63
+ const heartbeatInterval = setInterval(() => {
64
+ try {
65
+ reply.raw.write(": heartbeat\n\n");
66
+ }
67
+ catch {
68
+ // Connection closed
69
+ cleanup();
70
+ }
71
+ }, 15_000);
72
+ // Log event handler
73
+ const onLog = (entry) => {
74
+ // Apply filters
75
+ if (levelPriority[entry.level] < levelPriority[minLevel])
76
+ return;
77
+ if (sourceFilter && !entry.source.includes(sourceFilter))
78
+ return;
79
+ try {
80
+ reply.raw.write(`event: log\ndata: ${JSON.stringify(entry)}\n\n`);
81
+ }
82
+ catch {
83
+ // Connection closed
84
+ cleanup();
85
+ }
86
+ };
87
+ const cleanup = () => {
88
+ clearInterval(heartbeatInterval);
89
+ logger.removeListener("log", onLog);
90
+ try {
91
+ reply.raw.end();
92
+ }
93
+ catch {
94
+ // Already closed
95
+ }
96
+ };
97
+ // Subscribe to log events
98
+ logger.on("log", onLog);
99
+ // Clean up when the client disconnects
100
+ request.raw.on("close", cleanup);
101
+ request.raw.on("error", cleanup);
102
+ // Prevent Fastify from sending its own response
103
+ // (we're writing directly to reply.raw)
104
+ return reply;
105
+ });
106
+ }
107
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/routes/logs.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,15 @@ import type { FastifyInstance } from "fastify";
5
5
  * Each plugin has its own namespace. Plugins (or external tools) can
6
6
  * persist arbitrary key-value pairs that survive agent restarts.
7
7
  *
8
+ * Query parameter: ?backend=local|remote|external (default: local)
9
+ *
8
10
  * Routes:
9
11
  * GET /api/plugin-state/:pluginName — List all keys for a plugin
10
12
  * GET /api/plugin-state/:pluginName/:key — Get a single value
11
13
  * PUT /api/plugin-state/:pluginName/:key — Set a value
12
14
  * DELETE /api/plugin-state/:pluginName/:key — Delete a key
13
15
  * DELETE /api/plugin-state/:pluginName — Delete all keys for a plugin
16
+ * POST /api/plugin-state/config/external — Configure external backend
14
17
  */
15
18
  export declare function pluginStateRoutes(app: FastifyInstance): Promise<void>;
16
19
  //# sourceMappingURL=plugin-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-state.d.ts","sourceRoot":"","sources":["../../src/routes/plugin-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,iBA2F3D"}
1
+ {"version":3,"file":"plugin-state.d.ts","sourceRoot":"","sources":["../../src/routes/plugin-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ/C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,iBA4J3D"}
@@ -1,27 +1,64 @@
1
+ import { PluginStateRouter, } from "../services/plugin-state-router.js";
2
+ import logger from "../services/logger.js";
1
3
  /**
2
4
  * Plugin State Routes — Scoped key-value store for plugins.
3
5
  *
4
6
  * Each plugin has its own namespace. Plugins (or external tools) can
5
7
  * persist arbitrary key-value pairs that survive agent restarts.
6
8
  *
9
+ * Query parameter: ?backend=local|remote|external (default: local)
10
+ *
7
11
  * Routes:
8
12
  * GET /api/plugin-state/:pluginName — List all keys for a plugin
9
13
  * GET /api/plugin-state/:pluginName/:key — Get a single value
10
14
  * PUT /api/plugin-state/:pluginName/:key — Set a value
11
15
  * DELETE /api/plugin-state/:pluginName/:key — Delete a key
12
16
  * DELETE /api/plugin-state/:pluginName — Delete all keys for a plugin
17
+ * POST /api/plugin-state/config/external — Configure external backend
13
18
  */
14
19
  export async function pluginStateRoutes(app) {
20
+ // Read agent ID from config store (set during gateway auth setup)
21
+ const agentId = app.db.getConfig("gateway-auth:clientId") ?? undefined;
22
+ const router = new PluginStateRouter(app.db, agentId);
23
+ // Try restoring external config from the agent config store
24
+ const externalConfigStr = app.db.getConfig("plugin-state:external-config");
25
+ if (externalConfigStr) {
26
+ try {
27
+ const config = JSON.parse(externalConfigStr);
28
+ router.configureExternal(config);
29
+ }
30
+ catch {
31
+ logger.warn("plugin-state-routes", "Failed to parse saved external config");
32
+ }
33
+ }
34
+ /**
35
+ * POST /api/plugin-state/config/external — Configure the external backend
36
+ * Body: ExternalStoreConfig
37
+ */
38
+ app.post("/config/external", async (request, reply) => {
39
+ const config = request.body;
40
+ if (!config?.baseUrl) {
41
+ return reply
42
+ .code(400)
43
+ .send({ error: "Missing required field: baseUrl" });
44
+ }
45
+ router.configureExternal(config);
46
+ // Persist so it survives restarts
47
+ app.db.setConfig("plugin-state:external-config", JSON.stringify(config));
48
+ return { configured: true, baseUrl: config.baseUrl };
49
+ });
15
50
  /**
16
51
  * GET /api/plugin-state/:pluginName — List all key-value pairs for a plugin
17
52
  */
18
53
  app.get("/:pluginName", async (request) => {
19
54
  const { pluginName } = request.params;
20
- const entries = app.db.getAllPluginState(pluginName);
55
+ const backend = router.resolve(request.query.backend);
56
+ const entries = await backend.getAll(pluginName);
21
57
  return {
22
58
  pluginName,
23
59
  entries,
24
60
  count: entries.length,
61
+ backend: request.query.backend ?? "local",
25
62
  };
26
63
  });
27
64
  /**
@@ -29,14 +66,20 @@ export async function pluginStateRoutes(app) {
29
66
  */
30
67
  app.get("/:pluginName/:key", async (request, reply) => {
31
68
  const { pluginName, key } = request.params;
32
- const value = app.db.getPluginState(pluginName, key);
69
+ const backend = router.resolve(request.query.backend);
70
+ const value = await backend.get(pluginName, key);
33
71
  if (value === undefined) {
34
72
  return reply.code(404).send({
35
73
  error: "Not found",
36
74
  message: `Key "${key}" not found for plugin "${pluginName}"`,
37
75
  });
38
76
  }
39
- return { pluginName, key, value };
77
+ return {
78
+ pluginName,
79
+ key,
80
+ value,
81
+ backend: request.query.backend ?? "local",
82
+ };
40
83
  });
41
84
  /**
42
85
  * PUT /api/plugin-state/:pluginName/:key — Set a value
@@ -46,35 +89,51 @@ export async function pluginStateRoutes(app) {
46
89
  const { pluginName, key } = request.params;
47
90
  const { value } = request.body || {};
48
91
  if (value === undefined || value === null) {
49
- return reply.code(400).send({
50
- error: "Missing required field: value",
51
- });
92
+ return reply.code(400).send({ error: "Missing required field: value" });
52
93
  }
53
94
  const strValue = typeof value === "string" ? value : JSON.stringify(value);
54
- app.db.setPluginState(pluginName, key, strValue);
55
- return { pluginName, key, value: strValue, updated: true };
95
+ const backend = router.resolve(request.query.backend);
96
+ await backend.set(pluginName, key, strValue);
97
+ return {
98
+ pluginName,
99
+ key,
100
+ value: strValue,
101
+ updated: true,
102
+ backend: request.query.backend ?? "local",
103
+ };
56
104
  });
57
105
  /**
58
106
  * DELETE /api/plugin-state/:pluginName/:key — Delete a single key
59
107
  */
60
108
  app.delete("/:pluginName/:key", async (request, reply) => {
61
109
  const { pluginName, key } = request.params;
62
- const deleted = app.db.deletePluginState(pluginName, key);
110
+ const backend = router.resolve(request.query.backend);
111
+ const deleted = await backend.delete(pluginName, key);
63
112
  if (!deleted) {
64
113
  return reply.code(404).send({
65
114
  error: "Not found",
66
115
  message: `Key "${key}" not found for plugin "${pluginName}"`,
67
116
  });
68
117
  }
69
- return { pluginName, key, deleted: true };
118
+ return {
119
+ pluginName,
120
+ key,
121
+ deleted: true,
122
+ backend: request.query.backend ?? "local",
123
+ };
70
124
  });
71
125
  /**
72
126
  * DELETE /api/plugin-state/:pluginName — Delete all state for a plugin
73
127
  */
74
128
  app.delete("/:pluginName", async (request) => {
75
129
  const { pluginName } = request.params;
76
- const count = app.db.deleteAllPluginState(pluginName);
77
- return { pluginName, deletedCount: count };
130
+ const backend = router.resolve(request.query.backend);
131
+ const count = await backend.deleteAll(pluginName);
132
+ return {
133
+ pluginName,
134
+ deletedCount: count,
135
+ backend: request.query.backend ?? "local",
136
+ };
78
137
  });
79
138
  }
80
139
  //# sourceMappingURL=plugin-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-state.js","sourceRoot":"","sources":["../../src/routes/plugin-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-state.js","sourceRoot":"","sources":["../../src/routes/plugin-state.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/routes/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAkB7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0GxB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AA4CD,eAAO,MAAM,YAAY,EAAE,kBAiS1B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,OAAO,iBAAiB,EAAE,OAAO,EACrC,EAAE,EAAE,OAAO,WAAW,EAAE,MAAM,EAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAoGvE"}
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/routes/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAkB7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyGxB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AA4CD,eAAO,MAAM,YAAY,EAAE,kBAiS1B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,OAAO,iBAAiB,EAAE,OAAO,EACrC,EAAE,EAAE,OAAO,WAAW,EAAE,MAAM,EAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAoGvE"}
@@ -86,14 +86,13 @@ export async function startAgentTunnel(agentPort) {
86
86
  });
87
87
  agentTunnelUrl = url;
88
88
  // Clean up pipe listeners now that URL extraction is done (or timed out).
89
- // The cloudflared process is detached and unref'd if we keep data
90
- // listeners attached, the parent process may get SIGPIPE when it exits
91
- // while cloudflared is still writing. Remove all listeners so the pipes
92
- // can be garbage-collected safely.
89
+ // We remove listeners and resume the streams so data is drained silently.
90
+ // IMPORTANT: Do NOT call .destroy() on the pipes that closes the file
91
+ // descriptors and sends SIGPIPE to cloudflared, killing the tunnel process.
93
92
  proc.stdout?.removeAllListeners("data");
94
93
  proc.stderr?.removeAllListeners("data");
95
- proc.stdout?.destroy();
96
- proc.stderr?.destroy();
94
+ proc.stdout?.resume();
95
+ proc.stderr?.resume();
97
96
  if (url) {
98
97
  console.log(`[AgentTunnel] ✅ Tunnel ready: ${url}`);
99
98
  }