devchain-cli 0.5.1 → 0.6.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 (62) hide show
  1. package/dist/drizzle/0022_guests.sql +16 -0
  2. package/dist/drizzle/0023_add_guest_description.sql +1 -0
  3. package/dist/drizzle/meta/0022_snapshot.json +3064 -0
  4. package/dist/drizzle/meta/0023_snapshot.json +3069 -0
  5. package/dist/drizzle/meta/_journal.json +15 -1
  6. package/dist/server/app.module.js +2 -0
  7. package/dist/server/app.module.js.map +1 -1
  8. package/dist/server/modules/agents/controllers/agents.controller.d.ts +14 -1
  9. package/dist/server/modules/agents/controllers/agents.controller.js +30 -4
  10. package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
  11. package/dist/server/modules/events/catalog/guest.registered.d.ts +24 -0
  12. package/dist/server/modules/events/catalog/guest.registered.js +15 -0
  13. package/dist/server/modules/events/catalog/guest.registered.js.map +1 -0
  14. package/dist/server/modules/events/catalog/guest.unregistered.d.ts +24 -0
  15. package/dist/server/modules/events/catalog/guest.unregistered.js +15 -0
  16. package/dist/server/modules/events/catalog/guest.unregistered.js.map +1 -0
  17. package/dist/server/modules/events/catalog/index.d.ts +38 -0
  18. package/dist/server/modules/events/catalog/index.js +4 -0
  19. package/dist/server/modules/events/catalog/index.js.map +1 -1
  20. package/dist/server/modules/guests/constants.d.ts +3 -0
  21. package/dist/server/modules/guests/constants.js +7 -0
  22. package/dist/server/modules/guests/constants.js.map +1 -0
  23. package/dist/server/modules/guests/dtos/guest.dto.d.ts +21 -0
  24. package/dist/server/modules/guests/dtos/guest.dto.js +3 -0
  25. package/dist/server/modules/guests/dtos/guest.dto.js.map +1 -0
  26. package/dist/server/modules/guests/guests.module.d.ts +2 -0
  27. package/dist/server/modules/guests/guests.module.js +26 -0
  28. package/dist/server/modules/guests/guests.module.js.map +1 -0
  29. package/dist/server/modules/guests/services/guest-health.service.d.ts +21 -0
  30. package/dist/server/modules/guests/services/guest-health.service.js +125 -0
  31. package/dist/server/modules/guests/services/guest-health.service.js.map +1 -0
  32. package/dist/server/modules/guests/services/guests.service.d.ts +30 -0
  33. package/dist/server/modules/guests/services/guests.service.js +178 -0
  34. package/dist/server/modules/guests/services/guests.service.js.map +1 -0
  35. package/dist/server/modules/mcp/controllers/mcp-http.controller.js +22 -0
  36. package/dist/server/modules/mcp/controllers/mcp-http.controller.js.map +1 -1
  37. package/dist/server/modules/mcp/controllers/mcp-sdk.controller.js +22 -0
  38. package/dist/server/modules/mcp/controllers/mcp-sdk.controller.js.map +1 -1
  39. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +67 -5
  40. package/dist/server/modules/mcp/dtos/mcp.dto.js +13 -1
  41. package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
  42. package/dist/server/modules/mcp/mcp.module.js +2 -0
  43. package/dist/server/modules/mcp/mcp.module.js.map +1 -1
  44. package/dist/server/modules/mcp/services/mcp.service.d.ts +9 -1
  45. package/dist/server/modules/mcp/services/mcp.service.js +357 -71
  46. package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
  47. package/dist/server/modules/storage/db/schema.d.ts +159 -0
  48. package/dist/server/modules/storage/db/schema.js +18 -1
  49. package/dist/server/modules/storage/db/schema.js.map +1 -1
  50. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +12 -1
  51. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  52. package/dist/server/modules/storage/local/local-storage.service.d.ts +12 -1
  53. package/dist/server/modules/storage/local/local-storage.service.js +194 -1
  54. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  55. package/dist/server/modules/storage/models/domain.models.d.ts +12 -0
  56. package/dist/server/modules/terminal/services/tmux.service.d.ts +2 -0
  57. package/dist/server/modules/terminal/services/tmux.service.js +74 -13
  58. package/dist/server/modules/terminal/services/tmux.service.js.map +1 -1
  59. package/dist/server/tsconfig.tsbuildinfo +1 -1
  60. package/dist/server/ui/assets/{index-Bgulh8ua.js → index-hB0e02VB.js} +165 -165
  61. package/dist/server/ui/index.html +1 -1
  62. package/package.json +9 -2
@@ -155,6 +155,20 @@
155
155
  "when": 1767571200000,
156
156
  "tag": "0021_agent_profiles_family_slug",
157
157
  "breakpoints": true
158
+ },
159
+ {
160
+ "idx": 22,
161
+ "version": "6",
162
+ "when": 1767657600000,
163
+ "tag": "0022_guests",
164
+ "breakpoints": true
165
+ },
166
+ {
167
+ "idx": 23,
168
+ "version": "6",
169
+ "when": 1767783341227,
170
+ "tag": "0023_add_guest_description",
171
+ "breakpoints": true
158
172
  }
159
173
  ]
160
- }
174
+ }
@@ -30,6 +30,7 @@ const chat_module_1 = require("./modules/chat/chat.module");
30
30
  const watchers_module_1 = require("./modules/watchers/watchers.module");
31
31
  const subscribers_module_1 = require("./modules/subscribers/subscribers.module");
32
32
  const registry_module_1 = require("./modules/registry/registry.module");
33
+ const guests_module_1 = require("./modules/guests/guests.module");
33
34
  const request_id_middleware_1 = require("./common/middleware/request-id.middleware");
34
35
  const events_module_1 = require("./modules/events/events.module");
35
36
  const http_exception_filter_1 = require("./common/filters/http-exception.filter");
@@ -65,6 +66,7 @@ exports.AppModule = AppModule = __decorate([
65
66
  watchers_module_1.WatchersModule,
66
67
  subscribers_module_1.SubscribersModule,
67
68
  registry_module_1.RegistryModule,
69
+ guests_module_1.GuestsModule,
68
70
  ],
69
71
  controllers: [],
70
72
  providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwE;AACxE,uCAA0C;AAC1C,4DAAwD;AACxD,qEAAiE;AACjE,wEAAoE;AACpE,wEAAoE;AACpE,yDAAqD;AACrD,sDAAkD;AAClD,wEAAoE;AACpE,wEAAoE;AACpE,qEAAiE;AACjE,wEAAoE;AACpE,2EAAuE;AACvE,kEAA8D;AAC9D,wEAAoE;AACpE,+DAA2D;AAC3D,qEAAiE;AACjE,2EAAuE;AACvE,sDAAkD;AAClD,4DAAwD;AACxD,wEAAoE;AACpE,iFAA6E;AAC7E,wEAAoE;AACpE,qFAAgF;AAChF,kEAA8D;AAC9D,kFAA6E;AAC7E,8EAA6E;AAkCtE,IAAM,SAAS,GAAf,MAAM,SAAS;IACpB,SAAS,CAAC,QAA4B;QACpC,QAAQ,CAAC,KAAK,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAJY,8BAAS;oBAAT,SAAS;IAhCrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,4BAAY;YACZ,wBAAU;YACV,8BAAa;YACb,gCAAc;YACd,gCAAc;YACd,sBAAS;YACT,oBAAQ;YACR,gCAAc;YACd,gCAAc;YACd,8BAAa;YACb,gCAAc;YACd,kCAAe;YACf,4BAAY;YACZ,gCAAc;YACd,0BAAW;YACX,8BAAa;YACb,kCAAe;YACf,oBAAQ;YACR,wBAAU;YACV,gCAAc;YACd,sCAAiB;YACjB,gCAAc;SACf;QACD,WAAW,EAAE,EAAE;QACf,SAAS,EAAE;YAET,EAAE,OAAO,EAAE,iBAAU,EAAE,QAAQ,EAAE,2CAAqB,EAAE;YACxD,EAAE,OAAO,EAAE,iBAAU,EAAE,QAAQ,EAAE,2CAAmB,EAAE;SACvD;KACF,CAAC;GACW,SAAS,CAIrB"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwE;AACxE,uCAA0C;AAC1C,4DAAwD;AACxD,qEAAiE;AACjE,wEAAoE;AACpE,wEAAoE;AACpE,yDAAqD;AACrD,sDAAkD;AAClD,wEAAoE;AACpE,wEAAoE;AACpE,qEAAiE;AACjE,wEAAoE;AACpE,2EAAuE;AACvE,kEAA8D;AAC9D,wEAAoE;AACpE,+DAA2D;AAC3D,qEAAiE;AACjE,2EAAuE;AACvE,sDAAkD;AAClD,4DAAwD;AACxD,wEAAoE;AACpE,iFAA6E;AAC7E,wEAAoE;AACpE,kEAA8D;AAC9D,qFAAgF;AAChF,kEAA8D;AAC9D,kFAA6E;AAC7E,8EAA6E;AAmCtE,IAAM,SAAS,GAAf,MAAM,SAAS;IACpB,SAAS,CAAC,QAA4B;QACpC,QAAQ,CAAC,KAAK,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAJY,8BAAS;oBAAT,SAAS;IAjCrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,4BAAY;YACZ,wBAAU;YACV,8BAAa;YACb,gCAAc;YACd,gCAAc;YACd,sBAAS;YACT,oBAAQ;YACR,gCAAc;YACd,gCAAc;YACd,8BAAa;YACb,gCAAc;YACd,kCAAe;YACf,4BAAY;YACZ,gCAAc;YACd,0BAAW;YACX,8BAAa;YACb,kCAAe;YACf,oBAAQ;YACR,wBAAU;YACV,gCAAc;YACd,sCAAiB;YACjB,gCAAc;YACd,4BAAY;SACb;QACD,WAAW,EAAE,EAAE;QACf,SAAS,EAAE;YAET,EAAE,OAAO,EAAE,iBAAU,EAAE,QAAQ,EAAE,2CAAqB,EAAE;YACxD,EAAE,OAAO,EAAE,iBAAU,EAAE,QAAQ,EAAE,2CAAmB,EAAE;SACvD;KACF,CAAC;GACW,SAAS,CAIrB"}
@@ -7,6 +7,14 @@ export interface AgentWithProvider extends Agent {
7
7
  providerName?: string;
8
8
  providerId?: string;
9
9
  }
10
+ export interface AgentOrGuestItem {
11
+ id: string;
12
+ name: string;
13
+ profileId: string | null;
14
+ description?: string | null;
15
+ type: 'agent' | 'guest';
16
+ tmuxSessionId?: string;
17
+ }
10
18
  export interface RestartAgentResponse {
11
19
  session: SessionDto;
12
20
  terminateStatus: 'success' | 'not_found' | 'error';
@@ -17,7 +25,12 @@ export declare class AgentsController {
17
25
  private readonly sessionsService;
18
26
  private readonly sessionCoordinator;
19
27
  constructor(storage: StorageService, sessionsService: SessionsService, sessionCoordinator: SessionCoordinatorService);
20
- listAgents(projectId: string): Promise<import("../../storage/interfaces/storage.interface").ListResult<Agent>>;
28
+ listAgents(projectId: string, includeGuests?: string): Promise<import("../../storage/interfaces/storage.interface").ListResult<Agent> | {
29
+ items: AgentOrGuestItem[];
30
+ total: number;
31
+ limit: number;
32
+ offset: number;
33
+ }>;
21
34
  getAgent(id: string): Promise<AgentWithProvider>;
22
35
  createAgent(body: unknown): Promise<Agent>;
23
36
  updateAgent(id: string, body: unknown): Promise<Agent>;
@@ -40,12 +40,37 @@ let AgentsController = class AgentsController {
40
40
  this.sessionsService = sessionsService;
41
41
  this.sessionCoordinator = sessionCoordinator;
42
42
  }
43
- async listAgents(projectId) {
44
- logger.info({ projectId }, 'GET /api/agents');
43
+ async listAgents(projectId, includeGuests) {
44
+ logger.info({ projectId, includeGuests }, 'GET /api/agents');
45
45
  if (!projectId) {
46
46
  throw new common_1.BadRequestException('projectId query parameter required');
47
47
  }
48
- return this.storage.listAgents(projectId);
48
+ const agentsResult = await this.storage.listAgents(projectId);
49
+ if (includeGuests !== 'true') {
50
+ return agentsResult;
51
+ }
52
+ const guests = await this.storage.listGuests(projectId);
53
+ const agentItems = agentsResult.items.map((agent) => ({
54
+ id: agent.id,
55
+ name: agent.name,
56
+ profileId: agent.profileId,
57
+ description: agent.description,
58
+ type: 'agent',
59
+ }));
60
+ const guestItems = guests.map((guest) => ({
61
+ id: guest.id,
62
+ name: guest.name,
63
+ profileId: null,
64
+ description: null,
65
+ type: 'guest',
66
+ tmuxSessionId: guest.tmuxSessionId,
67
+ }));
68
+ return {
69
+ items: [...agentItems, ...guestItems],
70
+ total: agentsResult.total + guests.length,
71
+ limit: agentsResult.limit,
72
+ offset: agentsResult.offset,
73
+ };
49
74
  }
50
75
  async getAgent(id) {
51
76
  logger.info({ id }, 'GET /api/agents/:id');
@@ -138,8 +163,9 @@ exports.AgentsController = AgentsController;
138
163
  __decorate([
139
164
  (0, common_1.Get)(),
140
165
  __param(0, (0, common_1.Query)('projectId')),
166
+ __param(1, (0, common_1.Query)('includeGuests')),
141
167
  __metadata("design:type", Function),
142
- __metadata("design:paramtypes", [String]),
168
+ __metadata("design:paramtypes", [String, String]),
143
169
  __metadata("design:returntype", Promise)
144
170
  ], AgentsController.prototype, "listAgents", null);
145
171
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../../src/modules/agents/controllers/agents.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../../src/modules/agents/controllers/agents.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAawB;AACxB,kFAA6F;AAE7F,+EAA2E;AAC3E,qGAAgG;AAEhG,6BAAwB;AACxB,2DAA8D;AAE9D,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,kBAAkB,CAAC,CAAC;AA0BhD,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAGI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAC4C,OAAuB,EACL,eAAgC,EAE3E,kBAA6C;QAHpB,YAAO,GAAP,OAAO,CAAgB;QACL,oBAAe,GAAf,eAAe,CAAiB;QAE3E,uBAAkB,GAAlB,kBAAkB,CAA2B;IAC7D,CAAC;IAGE,AAAN,KAAK,CAAC,UAAU,CACM,SAAiB,EACb,aAAsB;QAE9C,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAG9D,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO,YAAY,CAAC;QACtB,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,UAAU,GAAuB,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxE,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,GAAuB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5D,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,OAAgB;YACtB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;YACrC,KAAK,EAAE,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM;YACzC,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,CAAc,EAAU;QACpC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAG9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,OAAO;gBACL,GAAG,KAAK;gBACR,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;aAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAGf,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,2CAA2C,CAAC,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAa;QACrC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAc,EAAU,EAAU,IAAa;QAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAc,EAAU,EAAU,IAAa;QAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAc,EAAU;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAQK,AAAN,KAAK,CAAC,YAAY,CACH,OAAe,EACpB,IAAa;QAErB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAGzD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,4BAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC;QAGvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,4BAAmB,CAAC,SAAS,OAAO,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAC5F,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC7E,IAAI,eAAe,GAAsC,WAAW,CAAC;YACrE,IAAI,gBAAoC,CAAC;YAGzC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAChF,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YAE1E,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,EAC1C,6CAA6C,CAC9C,CAAC;oBACF,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAChE,eAAe,GAAG,SAAS,CAAC;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EACjD,6BAA6B,CAC9B,CAAC;oBACF,eAAe,GAAG,OAAO,CAAC;oBAC1B,gBAAgB,GAAG,0CAA0C,OAAO,EAAE,CAAC;gBACzE,CAAC;YACH,CAAC;YAGD,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBAC1D,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAGH,MAAM,UAAU,GAAe;gBAC7B,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,EAClF,yBAAyB,CAC1B,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAzLY,4CAAgB;AASrB;IADL,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,cAAK,EAAC,eAAe,CAAC,CAAA;;;;kDAwCxB;AAGK;IADL,IAAA,YAAG,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;gDAmB1B;AAGK;IADL,IAAA,aAAI,GAAE;IACY,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAIxB;AAGK;IADL,IAAA,YAAG,EAAC,KAAK,CAAC;IACQ,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAIjD;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;kDAIhD;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;mDAG7B;AAQK;IADL,IAAA,aAAI,EAAC,aAAa,CAAC;IAEjB,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,aAAI,GAAE,CAAA;;;;oDA0ER;2BAxLU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,YAAY,CAAC;IAGpB,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;IACvB,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC,CAAC,CAAA;IACzC,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,uDAAyB,CAAC,CAAC,CAAA;6CADyB,kCAAe;QAEvD,uDAAyB;GALrD,gBAAgB,CAyL5B"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const guestRegisteredEvent: {
3
+ readonly name: "guest.registered";
4
+ readonly schema: z.ZodObject<{
5
+ guestId: z.ZodString;
6
+ projectId: z.ZodString;
7
+ name: z.ZodString;
8
+ tmuxSessionId: z.ZodString;
9
+ isSandbox: z.ZodBoolean;
10
+ }, "strip", z.ZodTypeAny, {
11
+ name: string;
12
+ projectId: string;
13
+ tmuxSessionId: string;
14
+ guestId: string;
15
+ isSandbox: boolean;
16
+ }, {
17
+ name: string;
18
+ projectId: string;
19
+ tmuxSessionId: string;
20
+ guestId: string;
21
+ isSandbox: boolean;
22
+ }>;
23
+ };
24
+ export type GuestRegisteredEventPayload = z.infer<typeof guestRegisteredEvent.schema>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guestRegisteredEvent = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.guestRegisteredEvent = {
6
+ name: 'guest.registered',
7
+ schema: zod_1.z.object({
8
+ guestId: zod_1.z.string().min(1),
9
+ projectId: zod_1.z.string().min(1),
10
+ name: zod_1.z.string().min(1),
11
+ tmuxSessionId: zod_1.z.string().min(1),
12
+ isSandbox: zod_1.z.boolean(),
13
+ }),
14
+ };
15
+ //# sourceMappingURL=guest.registered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest.registered.js","sourceRoot":"","sources":["../../../../src/modules/events/catalog/guest.registered.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,oBAAoB,GAAG;IAClC,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE;KACvB,CAAC;CACM,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const guestUnregisteredEvent: {
3
+ readonly name: "guest.unregistered";
4
+ readonly schema: z.ZodObject<{
5
+ guestId: z.ZodString;
6
+ projectId: z.ZodString;
7
+ name: z.ZodString;
8
+ tmuxSessionId: z.ZodString;
9
+ reason: z.ZodEnum<["tmux_session_died", "manual"]>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ name: string;
12
+ projectId: string;
13
+ tmuxSessionId: string;
14
+ guestId: string;
15
+ reason: "tmux_session_died" | "manual";
16
+ }, {
17
+ name: string;
18
+ projectId: string;
19
+ tmuxSessionId: string;
20
+ guestId: string;
21
+ reason: "tmux_session_died" | "manual";
22
+ }>;
23
+ };
24
+ export type GuestUnregisteredEventPayload = z.infer<typeof guestUnregisteredEvent.schema>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guestUnregisteredEvent = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.guestUnregisteredEvent = {
6
+ name: 'guest.unregistered',
7
+ schema: zod_1.z.object({
8
+ guestId: zod_1.z.string().min(1),
9
+ projectId: zod_1.z.string().min(1),
10
+ name: zod_1.z.string().min(1),
11
+ tmuxSessionId: zod_1.z.string().min(1),
12
+ reason: zod_1.z.enum(['tmux_session_died', 'manual']),
13
+ }),
14
+ };
15
+ //# sourceMappingURL=guest.unregistered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest.unregistered.js","sourceRoot":"","sources":["../../../../src/modules/events/catalog/guest.unregistered.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,sBAAsB,GAAG;IACpC,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;KAChD,CAAC;CACM,CAAC"}
@@ -288,6 +288,44 @@ export declare const eventCatalog: {
288
288
  }, {
289
289
  scrollbackLines: number;
290
290
  }>;
291
+ readonly "guest.registered": z.ZodObject<{
292
+ guestId: z.ZodString;
293
+ projectId: z.ZodString;
294
+ name: z.ZodString;
295
+ tmuxSessionId: z.ZodString;
296
+ isSandbox: z.ZodBoolean;
297
+ }, "strip", z.ZodTypeAny, {
298
+ name: string;
299
+ projectId: string;
300
+ tmuxSessionId: string;
301
+ guestId: string;
302
+ isSandbox: boolean;
303
+ }, {
304
+ name: string;
305
+ projectId: string;
306
+ tmuxSessionId: string;
307
+ guestId: string;
308
+ isSandbox: boolean;
309
+ }>;
310
+ readonly "guest.unregistered": z.ZodObject<{
311
+ guestId: z.ZodString;
312
+ projectId: z.ZodString;
313
+ name: z.ZodString;
314
+ tmuxSessionId: z.ZodString;
315
+ reason: z.ZodEnum<["tmux_session_died", "manual"]>;
316
+ }, "strip", z.ZodTypeAny, {
317
+ name: string;
318
+ projectId: string;
319
+ tmuxSessionId: string;
320
+ guestId: string;
321
+ reason: "tmux_session_died" | "manual";
322
+ }, {
323
+ name: string;
324
+ projectId: string;
325
+ tmuxSessionId: string;
326
+ guestId: string;
327
+ reason: "tmux_session_died" | "manual";
328
+ }>;
291
329
  };
292
330
  export type EventName = keyof typeof eventCatalog;
293
331
  export type EventSchema<TName extends EventName> = (typeof eventCatalog)[TName];
@@ -8,6 +8,8 @@ const session_stopped_1 = require("./session.stopped");
8
8
  const session_crashed_1 = require("./session.crashed");
9
9
  const terminal_watcher_triggered_1 = require("./terminal.watcher.triggered");
10
10
  const settings_terminal_changed_1 = require("./settings.terminal.changed");
11
+ const guest_registered_1 = require("./guest.registered");
12
+ const guest_unregistered_1 = require("./guest.unregistered");
11
13
  var settings_terminal_changed_2 = require("./settings.terminal.changed");
12
14
  Object.defineProperty(exports, "settingsTerminalChangedEvent", { enumerable: true, get: function () { return settings_terminal_changed_2.settingsTerminalChangedEvent; } });
13
15
  exports.eventCatalog = {
@@ -18,6 +20,8 @@ exports.eventCatalog = {
18
20
  [session_crashed_1.sessionCrashedEvent.name]: session_crashed_1.sessionCrashedEvent.schema,
19
21
  [terminal_watcher_triggered_1.terminalWatcherTriggeredEvent.name]: terminal_watcher_triggered_1.terminalWatcherTriggeredEvent.schema,
20
22
  [settings_terminal_changed_1.settingsTerminalChangedEvent.name]: settings_terminal_changed_1.settingsTerminalChangedEvent.schema,
23
+ [guest_registered_1.guestRegisteredEvent.name]: guest_registered_1.guestRegisteredEvent.schema,
24
+ [guest_unregistered_1.guestUnregisteredEvent.name]: guest_unregistered_1.guestUnregisteredEvent.schema,
21
25
  };
22
26
  exports.eventNames = Object.keys(exports.eventCatalog);
23
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/events/catalog/index.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAClD,iDAAkD;AAClD,uDAAwD;AACxD,uDAAwD;AACxD,uDAAwD;AACxD,6EAA6E;AAC7E,2EAA2E;AAG3E,yEAA2E;AAAlE,yIAAA,4BAA4B,OAAA;AAExB,QAAA,YAAY,GAAG;IAC1B,CAAC,+BAAgB,CAAC,IAAI,CAAC,EAAE,+BAAgB,CAAC,MAAM;IAChD,CAAC,+BAAgB,CAAC,IAAI,CAAC,EAAE,+BAAgB,CAAC,MAAM;IAChD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,0DAA6B,CAAC,IAAI,CAAC,EAAE,0DAA6B,CAAC,MAAM;IAC1E,CAAC,wDAA4B,CAAC,IAAI,CAAC,EAAE,wDAA4B,CAAC,MAAM;CAChE,CAAC;AAKE,QAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/events/catalog/index.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAClD,iDAAkD;AAClD,uDAAwD;AACxD,uDAAwD;AACxD,uDAAwD;AACxD,6EAA6E;AAC7E,2EAA2E;AAC3E,yDAA0D;AAC1D,6DAA8D;AAG9D,yEAA2E;AAAlE,yIAAA,4BAA4B,OAAA;AAExB,QAAA,YAAY,GAAG;IAC1B,CAAC,+BAAgB,CAAC,IAAI,CAAC,EAAE,+BAAgB,CAAC,MAAM;IAChD,CAAC,+BAAgB,CAAC,IAAI,CAAC,EAAE,+BAAgB,CAAC,MAAM;IAChD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,qCAAmB,CAAC,IAAI,CAAC,EAAE,qCAAmB,CAAC,MAAM;IACtD,CAAC,0DAA6B,CAAC,IAAI,CAAC,EAAE,0DAA6B,CAAC,MAAM;IAC1E,CAAC,wDAA4B,CAAC,IAAI,CAAC,EAAE,wDAA4B,CAAC,MAAM;IACxE,CAAC,uCAAoB,CAAC,IAAI,CAAC,EAAE,uCAAoB,CAAC,MAAM;IACxD,CAAC,2CAAsB,CAAC,IAAI,CAAC,EAAE,2CAAsB,CAAC,MAAM;CACpD,CAAC;AAKE,QAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const GUEST_SANDBOX_PROJECT_NAME = "Guest Sandbox";
2
+ export declare const GUEST_SANDBOX_ROOT_PATH = "/__devchain_guest_sandbox__";
3
+ export declare const GUEST_HEALTH_CHECK_INTERVAL_MS = 30000;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GUEST_HEALTH_CHECK_INTERVAL_MS = exports.GUEST_SANDBOX_ROOT_PATH = exports.GUEST_SANDBOX_PROJECT_NAME = void 0;
4
+ exports.GUEST_SANDBOX_PROJECT_NAME = 'Guest Sandbox';
5
+ exports.GUEST_SANDBOX_ROOT_PATH = '/__devchain_guest_sandbox__';
6
+ exports.GUEST_HEALTH_CHECK_INTERVAL_MS = 30_000;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/modules/guests/constants.ts"],"names":[],"mappings":";;;AAQa,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAM7C,QAAA,uBAAuB,GAAG,6BAA6B,CAAC;AAMxD,QAAA,8BAA8B,GAAG,MAAM,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface RegisterGuestDto {
2
+ name: string;
3
+ tmuxSessionId: string;
4
+ description?: string;
5
+ }
6
+ export interface RegisterGuestResultDto {
7
+ guestId: string;
8
+ projectId: string;
9
+ projectName: string;
10
+ isSandbox: boolean;
11
+ }
12
+ export interface GuestDto {
13
+ id: string;
14
+ projectId: string;
15
+ name: string;
16
+ description: string | null;
17
+ tmuxSessionId: string;
18
+ lastSeenAt: string;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=guest.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest.dto.js","sourceRoot":"","sources":["../../../../src/modules/guests/dtos/guest.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class GuestsModule {
2
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GuestsModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const guests_service_1 = require("./services/guests.service");
12
+ const guest_health_service_1 = require("./services/guest-health.service");
13
+ const storage_module_1 = require("../storage/storage.module");
14
+ const terminal_module_1 = require("../terminal/terminal.module");
15
+ const events_module_1 = require("../events/events.module");
16
+ let GuestsModule = class GuestsModule {
17
+ };
18
+ exports.GuestsModule = GuestsModule;
19
+ exports.GuestsModule = GuestsModule = __decorate([
20
+ (0, common_1.Module)({
21
+ imports: [storage_module_1.StorageModule, (0, common_1.forwardRef)(() => terminal_module_1.TerminalModule), (0, common_1.forwardRef)(() => events_module_1.EventsModule)],
22
+ providers: [guests_service_1.GuestsService, guest_health_service_1.GuestHealthService],
23
+ exports: [guests_service_1.GuestsService, guest_health_service_1.GuestHealthService],
24
+ })
25
+ ], GuestsModule);
26
+ //# sourceMappingURL=guests.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guests.module.js","sourceRoot":"","sources":["../../../src/modules/guests/guests.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,8DAA0D;AAC1D,0EAAqE;AACrE,8DAA0D;AAC1D,iEAA6D;AAC7D,2DAAuD;AAOhD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,8BAAa,EAAE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC,EAAE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC,CAAC;QAC1F,SAAS,EAAE,CAAC,8BAAa,EAAE,yCAAkB,CAAC;QAC9C,OAAO,EAAE,CAAC,8BAAa,EAAE,yCAAkB,CAAC;KAC7C,CAAC;GACW,YAAY,CAAG"}
@@ -0,0 +1,21 @@
1
+ import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
2
+ import { StorageService } from '../../storage/interfaces/storage.interface';
3
+ import { TmuxService } from '../../terminal/services/tmux.service';
4
+ import { EventsService } from '../../events/services/events.service';
5
+ import { GuestsService } from './guests.service';
6
+ import { Guest } from '../../storage/models/domain.models';
7
+ export declare class GuestHealthService implements OnModuleInit, OnModuleDestroy {
8
+ private readonly storage;
9
+ private readonly tmuxService;
10
+ private readonly eventsService;
11
+ private readonly guestsService;
12
+ private healthCheckIntervals;
13
+ constructor(storage: StorageService, tmuxService: TmuxService, eventsService: EventsService, guestsService: GuestsService);
14
+ onModuleInit(): Promise<void>;
15
+ onModuleDestroy(): void;
16
+ private resumeMonitoringForExistingGuests;
17
+ startMonitoring(guest: Guest): void;
18
+ stopMonitoring(guestId: string): void;
19
+ private checkGuestHealth;
20
+ private handleGuestDeath;
21
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GuestHealthService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const logger_1 = require("../../../common/logging/logger");
18
+ const storage_interface_1 = require("../../storage/interfaces/storage.interface");
19
+ const tmux_service_1 = require("../../terminal/services/tmux.service");
20
+ const events_service_1 = require("../../events/services/events.service");
21
+ const guests_service_1 = require("./guests.service");
22
+ const constants_1 = require("../constants");
23
+ const logger = (0, logger_1.createLogger)('GuestHealthService');
24
+ let GuestHealthService = class GuestHealthService {
25
+ constructor(storage, tmuxService, eventsService, guestsService) {
26
+ this.storage = storage;
27
+ this.tmuxService = tmuxService;
28
+ this.eventsService = eventsService;
29
+ this.guestsService = guestsService;
30
+ this.healthCheckIntervals = new Map();
31
+ logger.info('GuestHealthService initialized');
32
+ }
33
+ async onModuleInit() {
34
+ this.guestsService.setHealthServiceRef(this);
35
+ await this.guestsService.initializeAndCleanup();
36
+ await this.resumeMonitoringForExistingGuests();
37
+ }
38
+ onModuleDestroy() {
39
+ logger.info('GuestHealthService.onModuleDestroy: clearing all health check timers');
40
+ for (const [guestId, interval] of this.healthCheckIntervals.entries()) {
41
+ clearInterval(interval);
42
+ logger.debug({ guestId }, 'Cleared health check interval');
43
+ }
44
+ this.healthCheckIntervals.clear();
45
+ }
46
+ async resumeMonitoringForExistingGuests() {
47
+ try {
48
+ const guests = await this.storage.listAllGuests();
49
+ logger.info({ count: guests.length }, 'Resuming health monitoring for existing guests');
50
+ for (const guest of guests) {
51
+ const sessionExists = await this.tmuxService.hasSession(guest.tmuxSessionId);
52
+ if (!sessionExists) {
53
+ logger.info({ guestId: guest.id, tmuxSessionId: guest.tmuxSessionId }, 'Tmux session dead on startup, cleaning up guest');
54
+ await this.handleGuestDeath(guest);
55
+ }
56
+ else {
57
+ this.startMonitoring(guest);
58
+ }
59
+ }
60
+ }
61
+ catch (error) {
62
+ logger.error({ error: String(error) }, 'Failed to resume monitoring for existing guests');
63
+ }
64
+ }
65
+ startMonitoring(guest) {
66
+ this.stopMonitoring(guest.id);
67
+ const interval = setInterval(async () => {
68
+ await this.checkGuestHealth(guest);
69
+ }, constants_1.GUEST_HEALTH_CHECK_INTERVAL_MS);
70
+ this.healthCheckIntervals.set(guest.id, interval);
71
+ logger.info({ guestId: guest.id, intervalMs: constants_1.GUEST_HEALTH_CHECK_INTERVAL_MS }, 'Started health monitoring for guest');
72
+ }
73
+ stopMonitoring(guestId) {
74
+ const interval = this.healthCheckIntervals.get(guestId);
75
+ if (interval) {
76
+ clearInterval(interval);
77
+ this.healthCheckIntervals.delete(guestId);
78
+ logger.debug({ guestId }, 'Stopped health monitoring for guest');
79
+ }
80
+ }
81
+ async checkGuestHealth(guest) {
82
+ try {
83
+ const sessionExists = await this.tmuxService.hasSession(guest.tmuxSessionId);
84
+ if (!sessionExists) {
85
+ logger.info({ guestId: guest.id, tmuxSessionId: guest.tmuxSessionId }, 'Tmux session no longer exists, cleaning up guest');
86
+ await this.handleGuestDeath(guest);
87
+ }
88
+ else {
89
+ await this.guestsService.updateGuestLastSeen(guest.id);
90
+ }
91
+ }
92
+ catch (error) {
93
+ logger.error({ guestId: guest.id, error: String(error) }, 'Error checking guest health');
94
+ }
95
+ }
96
+ async handleGuestDeath(guest) {
97
+ this.stopMonitoring(guest.id);
98
+ try {
99
+ await this.guestsService.deleteGuest(guest.id);
100
+ await this.eventsService.publish('guest.unregistered', {
101
+ guestId: guest.id,
102
+ projectId: guest.projectId,
103
+ name: guest.name,
104
+ tmuxSessionId: guest.tmuxSessionId,
105
+ reason: 'tmux_session_died',
106
+ });
107
+ logger.info({ guestId: guest.id, tmuxSessionId: guest.tmuxSessionId }, 'Guest cleaned up after tmux session death');
108
+ }
109
+ catch (error) {
110
+ logger.error({ guestId: guest.id, error: String(error) }, 'Failed to clean up guest after tmux session death');
111
+ }
112
+ }
113
+ };
114
+ exports.GuestHealthService = GuestHealthService;
115
+ exports.GuestHealthService = GuestHealthService = __decorate([
116
+ (0, common_1.Injectable)(),
117
+ __param(0, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
118
+ __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => tmux_service_1.TmuxService))),
119
+ __param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => events_service_1.EventsService))),
120
+ __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => guests_service_1.GuestsService))),
121
+ __metadata("design:paramtypes", [Object, tmux_service_1.TmuxService,
122
+ events_service_1.EventsService,
123
+ guests_service_1.GuestsService])
124
+ ], GuestHealthService);
125
+ //# sourceMappingURL=guest-health.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-health.service.js","sourceRoot":"","sources":["../../../../src/modules/guests/services/guest-health.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { StorageService } from '../../storage/interfaces/storage.interface';
3
+ import { TmuxService } from '../../terminal/services/tmux.service';
4
+ import { EventsService } from '../../events/services/events.service';
5
+ import { RegisterGuestDto, RegisterGuestResultDto } from '../dtos/guest.dto';
6
+ import { Guest } from '../../storage/models/domain.models';
7
+ export declare class GuestsService implements OnModuleInit {
8
+ private readonly storage;
9
+ private readonly tmuxService;
10
+ private readonly eventsService;
11
+ private guestHealthServiceRef?;
12
+ constructor(storage: StorageService, tmuxService: TmuxService, eventsService: EventsService);
13
+ setHealthServiceRef(healthService: {
14
+ startMonitoring: (guest: Guest) => void;
15
+ }): void;
16
+ onModuleInit(): Promise<void>;
17
+ initializeAndCleanup(): Promise<void>;
18
+ cleanupSandbox(): Promise<void>;
19
+ getOrCreateSandboxProject(): Promise<{
20
+ id: string;
21
+ name: string;
22
+ }>;
23
+ register(dto: RegisterGuestDto): Promise<RegisterGuestResultDto>;
24
+ private validateNameAvailability;
25
+ getGuest(guestId: string): Promise<Guest>;
26
+ listGuests(projectId: string): Promise<Guest[]>;
27
+ listAllGuests(): Promise<Guest[]>;
28
+ deleteGuest(guestId: string): Promise<void>;
29
+ updateGuestLastSeen(guestId: string): Promise<Guest>;
30
+ }