@docker-digital/dockernet-agent 0.1.1 → 0.1.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.
@@ -52,11 +52,8 @@ let ProfileService = ProfileService_1 = class ProfileService {
52
52
  this.logger.warn(`Failed to connect WebSocket: ${error.message}, using polling fallback`);
53
53
  }
54
54
  }
55
- async getProfileDetails(profileId, workspaceId) {
55
+ async getProfileDetails(profileId) {
56
56
  let endpoint = `/docker-profiles/${profileId}`;
57
- if (workspaceId) {
58
- endpoint += `?workspace_id=${workspaceId}`;
59
- }
60
57
  this.logger.debug(`Calling API: GET ${endpoint}`);
61
58
  const maxRetries = 24;
62
59
  const response = (await this.apiService.callApi('GET', endpoint, undefined, maxRetries, 5000));
@@ -97,7 +94,7 @@ let ProfileService = ProfileService_1 = class ProfileService {
97
94
  this.logger.log(`Starting profile: ${profileId}, workspace: ${workspaceId}`);
98
95
  this.logger.log(`[DEBUG] After Starting profile log, about to fetch profile details`);
99
96
  this.logger.log(`[DEBUG] Calling getProfileDetails for ${profileId}`);
100
- const profile = await this.getProfileDetails(profileId, workspaceId);
97
+ const profile = await this.getProfileDetails(profileId);
101
98
  this.logger.log(`[DEBUG] getProfileDetails returned for ${profileId}`);
102
99
  this.logger.warn(`Profile details received: ${profile ? 'success' : 'null'}`);
103
100
  if (!profile) {
@@ -202,7 +199,7 @@ let ProfileService = ProfileService_1 = class ProfileService {
202
199
  }
203
200
  this.logger.log(`Stopping profile: ${profileId}`);
204
201
  if (workspaceId && workspaceId !== 'null' && workspaceId !== 'undefined') {
205
- const profile = await this.getProfileDetails(profileId, workspaceId);
202
+ const profile = await this.getProfileDetails(profileId);
206
203
  if (profile) {
207
204
  const machineKey = await this.configService.getMachineKey();
208
205
  const profileMachineKey = profile.machine_key;
@@ -264,10 +261,12 @@ let ProfileService = ProfileService_1 = class ProfileService {
264
261
  async updateProfileServicesStatus(profileId, workspaceId) {
265
262
  const servicesResponse = await this.apiService.callApi('GET', `/docker-profiles/${profileId}/services?workspace_id=${workspaceId}`, undefined, -1, 5000);
266
263
  if (!servicesResponse) {
264
+ this.logger.error('[ERROR updateProfileServicesStatus] No services response from API');
267
265
  return;
268
266
  }
269
267
  const services = servicesResponse.data?.rows || servicesResponse.rows || [];
270
268
  if (!services || services.length === 0) {
269
+ this.logger.error('[ERROR updateProfileServicesStatus] No services found for profile');
271
270
  return;
272
271
  }
273
272
  const profileDir = path.join(this.configService.workDirPath, profileId);
@@ -276,6 +275,7 @@ let ProfileService = ProfileService_1 = class ProfileService {
276
275
  const serviceKey = service.key;
277
276
  const serviceName = service.name;
278
277
  if (!serviceKey || !serviceName) {
278
+ this.logger.error('[ERROR updateProfileServicesStatus] No service key or name found for service');
279
279
  continue;
280
280
  }
281
281
  const status = await this.dockerService.getServiceStatus(serviceName, profileDir, profileId);
@@ -416,57 +416,116 @@ let ProfileService = ProfileService_1 = class ProfileService {
416
416
  });
417
417
  }
418
418
  async updateAllProfilesStatus() {
419
- const workDir = this.configService.workDirPath;
420
- if (!fs.existsSync(workDir)) {
419
+ const machineKey = await this.configService.getMachineKey();
420
+ if (!machineKey) {
421
+ this.logger.warn('Machine key not found, cannot update profiles status');
421
422
  return;
422
423
  }
423
- let profiles;
424
+ this.logger.debug(`Starting updateAllProfilesStatus for machine_key: ${machineKey}`);
424
425
  try {
425
- profiles = await fs.readdir(workDir);
426
- }
427
- catch (error) {
428
- this.logger.error(`Error reading work directory: ${error.message}`);
429
- return;
430
- }
431
- if (profiles.length === 0) {
432
- return;
433
- }
434
- let updatedCount = 0;
435
- for (const profileId of profiles) {
436
- try {
437
- const profileDir = path.join(workDir, profileId);
438
- const stat = await fs.stat(profileDir);
439
- if (!stat.isDirectory()) {
440
- continue;
441
- }
442
- const metadataFile = path.join(profileDir, '.profile_metadata');
443
- const composeFile = path.join(profileDir, `docker-compose_${profileId}.yaml`);
444
- if (!fs.existsSync(metadataFile) || !fs.existsSync(composeFile)) {
445
- continue;
446
- }
447
- const metadata = await fs.readFile(metadataFile, 'utf-8');
448
- const workspaceIdMatch = metadata.match(/^workspace_id=(.+)$/m);
449
- const workspaceId = workspaceIdMatch?.[1]?.trim();
450
- if (!workspaceId ||
451
- workspaceId === 'null' ||
452
- workspaceId === 'undefined') {
453
- continue;
454
- }
455
- const profile = await this.getProfileDetails(profileId, workspaceId);
456
- if (profile) {
457
- const machineKey = await this.configService.getMachineKey();
458
- const profileMachineKey = profile.machine_key;
459
- if (profileMachineKey && profileMachineKey !== machineKey) {
426
+ const endpoint = `/docker-profiles?machine_key=${machineKey}`;
427
+ this.logger.debug(`Calling API: GET ${endpoint} (full URL will be: ${this.configService.apiBaseUrl}${endpoint})`);
428
+ const profilesResponse = await this.apiService.callApi('GET', endpoint, undefined, -1, 5000);
429
+ if (!profilesResponse) {
430
+ this.logger.warn(`No profiles response from API for machine_key: ${machineKey}`);
431
+ return;
432
+ }
433
+ this.logger.debug(`API response received: ${JSON.stringify(profilesResponse).substring(0, 500)}`);
434
+ this.logger.debug(`API response structure: ${JSON.stringify({
435
+ hasData: !!profilesResponse.data,
436
+ hasRows: !!profilesResponse.rows,
437
+ dataKeys: profilesResponse.data
438
+ ? Object.keys(profilesResponse.data)
439
+ : [],
440
+ responseKeys: Object.keys(profilesResponse),
441
+ isArray: Array.isArray(profilesResponse),
442
+ })}`);
443
+ let profiles = profilesResponse.rows || [];
444
+ if (!profiles || profiles.length === 0) {
445
+ this.logger.debug(`No profiles found for machine_key: ${machineKey}`);
446
+ return;
447
+ }
448
+ this.logger.debug(`Found ${profiles.length} profile(s) for machine_key: ${machineKey}`);
449
+ let updatedCount = 0;
450
+ for (const profile of profiles) {
451
+ try {
452
+ const profileId = profile.key || profile.profile_key;
453
+ const workspaceId = profile.workspace_id;
454
+ const services = profile.services || [];
455
+ if (!profileId || !workspaceId) {
456
+ this.logger.debug(`Skipping profile - missing profileId or workspaceId`);
460
457
  continue;
461
458
  }
459
+ if (!services || services.length === 0) {
460
+ this.logger.debug(`Profile ${profileId} has no services, checking profile status only`);
461
+ const containers = await this.dockerService.getProfileContainers(profileId);
462
+ const runningContainers = containers.filter((c) => c.State === 'running' || (c.Status && /^Up/i.test(c.Status)));
463
+ const hasRunning = runningContainers.length > 0;
464
+ await this.updateProfileStatus(profileId, workspaceId, hasRunning);
465
+ updatedCount++;
466
+ continue;
467
+ }
468
+ const servicesStatus = [];
469
+ for (const service of services) {
470
+ const serviceKey = service.key;
471
+ const serviceName = service.name;
472
+ if (!serviceKey || !serviceName) {
473
+ continue;
474
+ }
475
+ const containerNamePatterns = [
476
+ `${profileId}_${serviceName}`,
477
+ `${profileId}-${serviceName}`,
478
+ `${profileId}${serviceName}`,
479
+ ];
480
+ let status = null;
481
+ for (const containerName of containerNamePatterns) {
482
+ status =
483
+ await this.dockerService.getContainerStatus(containerName);
484
+ if (status) {
485
+ break;
486
+ }
487
+ }
488
+ if (!status) {
489
+ const profileDir = path.join(this.configService.workDirPath, profileId);
490
+ status = await this.dockerService.getServiceStatus(serviceName, profileDir, profileId);
491
+ }
492
+ if (status && status !== 'unknown') {
493
+ servicesStatus.push({
494
+ service_key: serviceKey,
495
+ service_name: serviceName,
496
+ status,
497
+ });
498
+ }
499
+ }
500
+ if (servicesStatus.length > 0) {
501
+ const payload = {
502
+ profile_key: profileId,
503
+ workspace_id: workspaceId,
504
+ services: servicesStatus,
505
+ };
506
+ await this.apiService.callApi('PUT', `/docker-profiles/${profileId}/services/status`, payload, -1, 5000);
507
+ const hasRunning = servicesStatus.some((s) => /^(running|up)/i.test(s.status));
508
+ await this.updateProfileStatus(profileId, workspaceId, hasRunning);
509
+ }
510
+ else {
511
+ const containers = await this.dockerService.getProfileContainers(profileId);
512
+ const runningContainers = containers.filter((c) => c.State === 'running' || (c.Status && /^Up/i.test(c.Status)));
513
+ const hasRunning = runningContainers.length > 0;
514
+ await this.updateProfileStatus(profileId, workspaceId, hasRunning);
515
+ }
516
+ updatedCount++;
517
+ }
518
+ catch (error) {
519
+ this.logger.error(`Error updating profile ${profile?.key || 'unknown'}: ${error.message}`);
462
520
  }
463
- await this.updateProfileServicesStatus(profileId, workspaceId);
464
- updatedCount++;
465
521
  }
466
- catch (error) {
467
- this.logger.error(`Error updating profile ${profileId}: ${error.message}`);
522
+ if (updatedCount > 0) {
523
+ this.logger.debug(`Updated status for ${updatedCount} profile(s)`);
468
524
  }
469
525
  }
526
+ catch (error) {
527
+ this.logger.error(`Error in updateAllProfilesStatus: ${error.message}`);
528
+ }
470
529
  }
471
530
  };
472
531
  exports.ProfileService = ProfileService;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.service.js","sourceRoot":"","sources":["../../../src/agent/services/profile.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.service.js","sourceRoot":"","sources":["../../../src/agent/services/profile.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
2
+ import { ConfigService } from './config.service';
3
+ import { DockerService } from './docker.service';
4
+ export declare class TerminalService implements OnModuleInit, OnModuleDestroy {
5
+ private configService;
6
+ private dockerService;
7
+ private readonly logger;
8
+ private socket;
9
+ private isConnected;
10
+ private activeSessions;
11
+ constructor(configService: ConfigService, dockerService: DockerService);
12
+ onModuleInit(): Promise<void>;
13
+ connect(): Promise<void>;
14
+ private setupSocketHandlers;
15
+ private handleAttachSession;
16
+ private handleInput;
17
+ private handleResize;
18
+ private handleClose;
19
+ private sendOutput;
20
+ private closeSession;
21
+ private cleanupAllSessions;
22
+ private getWebSocketUrl;
23
+ onModuleDestroy(): void;
24
+ isTerminalConnected(): boolean;
25
+ disconnect(): void;
26
+ }
@@ -0,0 +1,325 @@
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 TerminalService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TerminalService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const socket_io_client_1 = require("socket.io-client");
16
+ const config_service_1 = require("./config.service");
17
+ const docker_service_1 = require("./docker.service");
18
+ let TerminalService = TerminalService_1 = class TerminalService {
19
+ constructor(configService, dockerService) {
20
+ this.configService = configService;
21
+ this.dockerService = dockerService;
22
+ this.logger = new common_1.Logger(TerminalService_1.name);
23
+ this.socket = null;
24
+ this.isConnected = false;
25
+ this.activeSessions = new Map();
26
+ }
27
+ async onModuleInit() {
28
+ }
29
+ async connect() {
30
+ if (this.isConnected && this.socket?.connected) {
31
+ this.logger.debug('Terminal WebSocket already connected');
32
+ return;
33
+ }
34
+ try {
35
+ const wsUrl = await this.getWebSocketUrl();
36
+ const apiKey = await this.configService.getApiKey();
37
+ if (!apiKey) {
38
+ this.logger.warn('Cannot connect Terminal WebSocket: API key not configured');
39
+ return;
40
+ }
41
+ this.logger.log(`Connecting to Terminal WebSocket: ${wsUrl}`);
42
+ this.socket = (0, socket_io_client_1.io)(`${wsUrl}/ws-agent`, {
43
+ auth: {
44
+ api_key: apiKey,
45
+ machine_key: await this.configService.getMachineKey(),
46
+ },
47
+ reconnection: true,
48
+ reconnectionDelay: 1000,
49
+ reconnectionDelayMax: 5000,
50
+ reconnectionAttempts: 10,
51
+ timeout: 10000,
52
+ transports: ['websocket', 'polling'],
53
+ path: '/socket.io/',
54
+ });
55
+ this.setupSocketHandlers();
56
+ }
57
+ catch (error) {
58
+ this.logger.error(`Failed to connect to Terminal WebSocket: ${error.message}`);
59
+ throw error;
60
+ }
61
+ }
62
+ setupSocketHandlers() {
63
+ if (!this.socket) {
64
+ this.logger.warn('[AGENT] setupSocketHandlers called but socket is null');
65
+ return;
66
+ }
67
+ this.logger.log(`[AGENT] Setting up socket handlers. Socket ID: ${this.socket.id}, connected: ${this.socket.connected}`);
68
+ this.socket.on('connect', () => {
69
+ this.logger.debug(`Terminal WebSocket transport connected (socket ID: ${this.socket?.id}), waiting for authentication...`);
70
+ });
71
+ this.socket.on('connected', (data) => {
72
+ this.isConnected = true;
73
+ this.logger.log(`[AGENT] ✅ Terminal WebSocket connected and authenticated (socket ID: ${this.socket?.id})`);
74
+ this.logger.debug(`[AGENT] All event listeners should now be active, including 'new_session' listener`);
75
+ });
76
+ this.socket.on('connect_error', (error) => {
77
+ this.logger.error(`Terminal WebSocket connection error: ${error.message}`);
78
+ this.isConnected = false;
79
+ });
80
+ this.socket.on('error', (error) => {
81
+ const errorMessage = typeof error === 'string'
82
+ ? error
83
+ : error?.message || error?.toString() || 'Unknown error';
84
+ if (errorMessage.includes('API key') ||
85
+ errorMessage.includes('API key required')) {
86
+ this.logger.error(`Terminal WebSocket authentication error: ${errorMessage}`);
87
+ this.isConnected = false;
88
+ }
89
+ else {
90
+ this.logger.error(`Terminal WebSocket error: ${errorMessage}`);
91
+ }
92
+ });
93
+ this.socket.on('disconnect', (reason) => {
94
+ if (reason === 'io client disconnect') {
95
+ this.logger.debug(`Terminal WebSocket disconnected: ${reason}`);
96
+ }
97
+ else {
98
+ this.logger.warn(`Terminal WebSocket disconnected: ${reason}`);
99
+ }
100
+ this.isConnected = false;
101
+ this.cleanupAllSessions();
102
+ });
103
+ this.logger.debug(`[AGENT] Registering listener for 'new_session' event. Socket connected: ${this.socket?.connected}`);
104
+ this.socket.on('new_session', async (data) => {
105
+ this.logger.log(`[AGENT] ✅ Received new_session event: ${data.session_id} for service: ${data.service_name}`);
106
+ this.logger.debug(`[AGENT] new_session data: ${JSON.stringify(data)}`);
107
+ try {
108
+ const containerId = await this.dockerService.getContainerId(data.profile_id, data.service_name);
109
+ if (!containerId) {
110
+ this.logger.warn(`Container ID not found for profile ${data.profile_id}, service ${data.service_name}`);
111
+ this.socket?.emit('error', {
112
+ session_id: data.session_id,
113
+ message: 'Container not found',
114
+ });
115
+ return;
116
+ }
117
+ this.logger.log(`[AGENT] Emitting attach_session for session ${data.session_id} with container ${containerId}`);
118
+ this.logger.debug(`[AGENT] Socket connected: ${this.socket?.connected}, Socket ID: ${this.socket?.id}`);
119
+ const attachData = {
120
+ session_id: data.session_id,
121
+ container_id: containerId,
122
+ };
123
+ this.logger.debug(`[AGENT] Emitting attach_session with data: ${JSON.stringify(attachData)}`);
124
+ this.socket?.emit('attach_session', attachData);
125
+ this.logger.log(`[AGENT] attach_session event emitted for session ${data.session_id}`);
126
+ this.logger.log(`[AGENT] Calling handleAttachSession directly to create session ${data.session_id}`);
127
+ await this.handleAttachSession(attachData);
128
+ }
129
+ catch (error) {
130
+ this.logger.error(`Failed to attach to session ${data.session_id}: ${error.message}`);
131
+ this.socket?.emit('error', {
132
+ session_id: data.session_id,
133
+ message: error.message || 'Failed to attach session',
134
+ });
135
+ }
136
+ });
137
+ this.socket.on('attach_session', async (data) => {
138
+ await this.handleAttachSession(data);
139
+ });
140
+ this.socket.on('input', async (data) => {
141
+ this.logger.debug(`Received input event for session ${data.session_id}, data length: ${data.data?.length || 0}`);
142
+ await this.handleInput(data);
143
+ });
144
+ this.socket.on('resize', async (data) => {
145
+ await this.handleResize(data);
146
+ });
147
+ this.socket.on('close', async (data) => {
148
+ await this.handleClose(data.session_id);
149
+ });
150
+ }
151
+ async handleAttachSession(data) {
152
+ const { session_id, container_id } = data;
153
+ if (this.activeSessions.has(session_id)) {
154
+ this.logger.warn(`[AGENT] ⚠️ Session ${session_id} already exists in activeSessions. Skipping duplicate attach.`);
155
+ return;
156
+ }
157
+ this.logger.log(`[AGENT] Handling attach_session request: ${session_id} for container: ${container_id}`);
158
+ try {
159
+ let targetContainerId = container_id;
160
+ if (!targetContainerId) {
161
+ this.logger.warn(`No container_id provided for session ${session_id}. Container resolution requires additional context.`);
162
+ this.socket?.emit('error', {
163
+ session_id,
164
+ message: 'Container ID is required. Please ensure the service is running.',
165
+ });
166
+ return;
167
+ }
168
+ const isRunning = await this.dockerService.isContainerRunning(targetContainerId);
169
+ if (!isRunning) {
170
+ this.logger.warn(`Container ${targetContainerId} is not running`);
171
+ this.socket?.emit('error', {
172
+ session_id,
173
+ message: 'Container is not running. Please start the service first.',
174
+ });
175
+ return;
176
+ }
177
+ const exec = await this.dockerService.createTerminalExec(targetContainerId);
178
+ const streams = await this.dockerService.startExec(exec);
179
+ if (this.activeSessions.has(session_id)) {
180
+ this.logger.warn(`[AGENT] ⚠️ Session ${session_id} already exists. Cleaning up old session before creating new one.`);
181
+ const oldSession = this.activeSessions.get(session_id);
182
+ if (oldSession?.streams) {
183
+ oldSession.streams.stdout.removeAllListeners('data');
184
+ oldSession.streams.stderr.removeAllListeners('data');
185
+ oldSession.streams.stdout.removeAllListeners('end');
186
+ oldSession.streams.stderr.removeAllListeners('end');
187
+ }
188
+ this.activeSessions.delete(session_id);
189
+ }
190
+ this.activeSessions.set(session_id, {
191
+ sessionId: session_id,
192
+ containerId: targetContainerId,
193
+ exec,
194
+ streams,
195
+ });
196
+ this.logger.log(`[AGENT] ✅ Session ${session_id} created and stored. Total active sessions: ${this.activeSessions.size}`);
197
+ this.logger.debug(`[AGENT] Active sessions: ${Array.from(this.activeSessions.keys()).join(', ')}`);
198
+ streams.stdout.removeAllListeners('data');
199
+ streams.stdout.removeAllListeners('end');
200
+ streams.stdout.on('data', (chunk) => {
201
+ this.sendOutput(session_id, chunk.toString('utf8'));
202
+ });
203
+ streams.stdout.on('end', () => {
204
+ this.logger.log(`Exec session ${session_id} ended`);
205
+ this.closeSession(session_id);
206
+ });
207
+ this.socket?.emit('session_attached', {
208
+ session_id: session_id,
209
+ container_id: targetContainerId,
210
+ });
211
+ this.logger.log(`Successfully attached to session ${session_id}`);
212
+ }
213
+ catch (error) {
214
+ this.logger.error(`Failed to attach to session ${session_id}: ${error.message}`);
215
+ this.socket?.emit('error', {
216
+ session_id,
217
+ message: error.message,
218
+ });
219
+ }
220
+ }
221
+ async handleInput(data) {
222
+ const { session_id, data: inputData } = data;
223
+ this.logger.debug(`[AGENT] Handling input for session ${session_id}, data: ${JSON.stringify(inputData.substring(0, 50))}`);
224
+ const session = this.activeSessions.get(session_id);
225
+ if (!session) {
226
+ this.logger.warn(`[AGENT] ⚠️ Received input for unknown session: ${session_id}`);
227
+ this.logger.warn(`[AGENT] Active sessions: ${Array.from(this.activeSessions.keys()).join(', ') || 'none'}`);
228
+ this.logger.warn(`[AGENT] This usually means the session was not created. Check if 'new_session' event was received and 'attach_session' was successful.`);
229
+ return;
230
+ }
231
+ try {
232
+ session.streams.stdin.write(inputData);
233
+ this.logger.debug(`Successfully wrote input to container for session ${session_id}`);
234
+ }
235
+ catch (error) {
236
+ this.logger.error(`Failed to write input to session ${session_id}: ${error.message}`);
237
+ }
238
+ }
239
+ async handleResize(data) {
240
+ const { session_id, cols, rows } = data;
241
+ const session = this.activeSessions.get(session_id);
242
+ if (!session) {
243
+ this.logger.warn(`Received resize for unknown session: ${session_id}`);
244
+ return;
245
+ }
246
+ try {
247
+ await this.dockerService.resizeExec(session.exec, cols, rows);
248
+ this.logger.debug(`Resized session ${session_id} to ${cols}x${rows}`);
249
+ }
250
+ catch (error) {
251
+ this.logger.error(`Failed to resize session ${session_id}: ${error.message}`);
252
+ }
253
+ }
254
+ async handleClose(sessionId) {
255
+ this.logger.log(`Closing session: ${sessionId}`);
256
+ this.closeSession(sessionId);
257
+ }
258
+ sendOutput(sessionId, data) {
259
+ if (this.socket?.connected) {
260
+ this.socket.emit('output', {
261
+ session_id: sessionId,
262
+ data: data,
263
+ });
264
+ }
265
+ }
266
+ closeSession(sessionId) {
267
+ const session = this.activeSessions.get(sessionId);
268
+ if (!session) {
269
+ return;
270
+ }
271
+ this.logger.log(`Closing terminal session: ${sessionId}`);
272
+ try {
273
+ session.streams.stdin.end();
274
+ }
275
+ catch (error) {
276
+ }
277
+ this.activeSessions.delete(sessionId);
278
+ this.socket?.emit('detach_session', {
279
+ session_id: sessionId,
280
+ });
281
+ this.logger.log(`Session ${sessionId} closed`);
282
+ }
283
+ cleanupAllSessions() {
284
+ this.logger.log(`Cleaning up ${this.activeSessions.size} active sessions`);
285
+ for (const sessionId of this.activeSessions.keys()) {
286
+ this.closeSession(sessionId);
287
+ }
288
+ }
289
+ async getWebSocketUrl() {
290
+ const serverUrl = this.configService.websocketUrl;
291
+ let wsUrl = serverUrl.replace(/^http/, 'ws');
292
+ wsUrl = wsUrl.replace(/\/$/, '');
293
+ return wsUrl;
294
+ }
295
+ onModuleDestroy() {
296
+ this.logger.debug('TerminalService onModuleDestroy called');
297
+ this.cleanupAllSessions();
298
+ if (this.socket) {
299
+ this.socket.disconnect();
300
+ this.socket = null;
301
+ }
302
+ this.isConnected = false;
303
+ }
304
+ isTerminalConnected() {
305
+ return this.isConnected && this.socket?.connected === true;
306
+ }
307
+ disconnect() {
308
+ if (this.socket && (this.socket.connected || this.isConnected)) {
309
+ this.logger.log('Disconnecting Terminal WebSocket...');
310
+ }
311
+ this.isConnected = false;
312
+ if (this.socket) {
313
+ this.socket.disconnect();
314
+ this.socket = null;
315
+ }
316
+ this.cleanupAllSessions();
317
+ }
318
+ };
319
+ exports.TerminalService = TerminalService;
320
+ exports.TerminalService = TerminalService = TerminalService_1 = __decorate([
321
+ (0, common_1.Injectable)(),
322
+ __metadata("design:paramtypes", [config_service_1.ConfigService,
323
+ docker_service_1.DockerService])
324
+ ], TerminalService);
325
+ //# sourceMappingURL=terminal.service.js.map