@mako10k/shell-server 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -11
- package/dist/backoffice/index.js +1 -1
- package/dist/backoffice/index.js.map +1 -1
- package/dist/backoffice/server.js +9 -9
- package/dist/backoffice/server.js.map +1 -1
- package/dist/cli.js +25 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/file-manager.d.ts +3 -3
- package/dist/core/file-manager.js +27 -27
- package/dist/core/file-manager.js.map +1 -1
- package/dist/core/file-storage-subscriber.d.ts +7 -7
- package/dist/core/file-storage-subscriber.js +19 -19
- package/dist/core/file-storage-subscriber.js.map +1 -1
- package/dist/core/monitoring-manager.d.ts +1 -1
- package/dist/core/monitoring-manager.js +31 -31
- package/dist/core/monitoring-manager.js.map +1 -1
- package/dist/core/process-manager.d.ts +8 -5
- package/dist/core/process-manager.d.ts.map +1 -1
- package/dist/core/process-manager.js +427 -314
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/realtime-stream-subscriber.d.ts +18 -18
- package/dist/core/realtime-stream-subscriber.d.ts.map +1 -1
- package/dist/core/realtime-stream-subscriber.js +23 -23
- package/dist/core/realtime-stream-subscriber.js.map +1 -1
- package/dist/core/server-manager.d.ts +1 -0
- package/dist/core/server-manager.d.ts.map +1 -1
- package/dist/core/server-manager.js +26 -0
- package/dist/core/server-manager.js.map +1 -1
- package/dist/core/stream-publisher.d.ts +20 -20
- package/dist/core/stream-publisher.d.ts.map +1 -1
- package/dist/core/stream-publisher.js +15 -15
- package/dist/core/stream-publisher.js.map +1 -1
- package/dist/core/streaming-pipeline-reader.d.ts +12 -16
- package/dist/core/streaming-pipeline-reader.d.ts.map +1 -1
- package/dist/core/streaming-pipeline-reader.js +28 -28
- package/dist/core/streaming-pipeline-reader.js.map +1 -1
- package/dist/core/terminal-manager.d.ts +3 -3
- package/dist/core/terminal-manager.js +61 -61
- package/dist/core/terminal-manager.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +165 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/executor/server.js +3 -3
- package/dist/executor/server.js.map +1 -1
- package/dist/runtime/tool-runtime.d.ts.map +1 -1
- package/dist/runtime/tool-runtime.js +9 -2
- package/dist/runtime/tool-runtime.js.map +1 -1
- package/dist/security/chat-completion-adapter.d.ts +2 -0
- package/dist/security/chat-completion-adapter.d.ts.map +1 -1
- package/dist/security/chat-completion-adapter.js +124 -7
- package/dist/security/chat-completion-adapter.js.map +1 -1
- package/dist/security/enhanced-evaluator.d.ts +2 -0
- package/dist/security/enhanced-evaluator.d.ts.map +1 -1
- package/dist/security/enhanced-evaluator.js +180 -11
- package/dist/security/enhanced-evaluator.js.map +1 -1
- package/dist/security/evaluator-types.d.ts +2 -2
- package/dist/security/kfence-fastpath.d.ts +15 -0
- package/dist/security/kfence-fastpath.d.ts.map +1 -0
- package/dist/security/kfence-fastpath.js +20 -0
- package/dist/security/kfence-fastpath.js.map +1 -0
- package/dist/security/manager.d.ts +4 -0
- package/dist/security/manager.d.ts.map +1 -1
- package/dist/security/manager.js +8 -2
- package/dist/security/manager.js.map +1 -1
- package/dist/security/security-llm-prompt-generator.d.ts +2 -2
- package/dist/security/security-llm-prompt-generator.js +5 -5
- package/dist/security/security-llm-prompt-generator.js.map +1 -1
- package/dist/tools/shell-tools.d.ts.map +1 -1
- package/dist/tools/shell-tools.js +59 -41
- package/dist/tools/shell-tools.js.map +1 -1
- package/dist/types/enhanced-security.d.ts +6 -6
- package/dist/types/enhanced-security.js +29 -29
- package/dist/types/enhanced-security.js.map +1 -1
- package/dist/types/index.d.ts +18 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +37 -34
- package/dist/types/index.js.map +1 -1
- package/dist/types/quick-schemas.js +5 -5
- package/dist/types/quick-schemas.js.map +1 -1
- package/dist/types/response-schemas.js +4 -4
- package/dist/types/response-schemas.js.map +1 -1
- package/dist/types/schemas.d.ts +39 -58
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +25 -30
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/errors.d.ts +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +3 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/helpers.js +51 -51
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/process-utils.d.ts +6 -6
- package/dist/utils/process-utils.js +29 -29
- package/dist/utils/process-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,9 +18,9 @@ export class FileManager {
|
|
|
18
18
|
ensureDirectorySync(path.join(this.baseDir, 'temp'));
|
|
19
19
|
}
|
|
20
20
|
async registerFile(filePath, outputType, executionId, customName) {
|
|
21
|
-
//
|
|
21
|
+
// Check file count limits
|
|
22
22
|
if (this.files.size >= this.maxFiles) {
|
|
23
|
-
//
|
|
23
|
+
// Automatically delete old files
|
|
24
24
|
await this.cleanupOldFiles(100);
|
|
25
25
|
}
|
|
26
26
|
const outputId = generateId();
|
|
@@ -104,7 +104,7 @@ export class FileManager {
|
|
|
104
104
|
}
|
|
105
105
|
listFiles(filter) {
|
|
106
106
|
let files = Array.from(this.files.values());
|
|
107
|
-
//
|
|
107
|
+
// Filtering
|
|
108
108
|
if (filter) {
|
|
109
109
|
if (filter.outputType && filter.outputType !== 'all') {
|
|
110
110
|
files = files.filter((file) => file.output_type === filter.outputType);
|
|
@@ -118,11 +118,11 @@ export class FileManager {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
const totalCount = files.length;
|
|
121
|
-
//
|
|
121
|
+
// Limits
|
|
122
122
|
if (filter?.limit) {
|
|
123
123
|
files = files.slice(0, filter.limit);
|
|
124
124
|
}
|
|
125
|
-
//
|
|
125
|
+
// Sort by creation date (newest first)
|
|
126
126
|
files.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
|
|
127
127
|
return {
|
|
128
128
|
files: files.map((file) => ({ ...file })),
|
|
@@ -142,14 +142,14 @@ export class FileManager {
|
|
|
142
142
|
failedFiles.push(outputId);
|
|
143
143
|
continue;
|
|
144
144
|
}
|
|
145
|
-
//
|
|
145
|
+
// Delete file from filesystem
|
|
146
146
|
await fs.unlink(fileInfo.path);
|
|
147
|
-
//
|
|
147
|
+
// Remove from map
|
|
148
148
|
this.files.delete(outputId);
|
|
149
149
|
deletedFiles.push(outputId);
|
|
150
150
|
}
|
|
151
151
|
catch (error) {
|
|
152
|
-
//
|
|
152
|
+
// Record error to internal log (avoid stdout)
|
|
153
153
|
// console.error(`Failed to delete file ${outputId}:`, error);
|
|
154
154
|
failedFiles.push(outputId);
|
|
155
155
|
}
|
|
@@ -162,7 +162,7 @@ export class FileManager {
|
|
|
162
162
|
}
|
|
163
163
|
async cleanupOldFiles(deleteCount) {
|
|
164
164
|
const files = Array.from(this.files.entries());
|
|
165
|
-
//
|
|
165
|
+
// Sort by creation date (oldest first)
|
|
166
166
|
files.sort(([, a], [, b]) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime());
|
|
167
167
|
const filesToDelete = files.slice(0, deleteCount);
|
|
168
168
|
for (const [fileId, fileInfo] of filesToDelete) {
|
|
@@ -171,12 +171,12 @@ export class FileManager {
|
|
|
171
171
|
this.files.delete(fileId);
|
|
172
172
|
}
|
|
173
173
|
catch (error) {
|
|
174
|
-
//
|
|
174
|
+
// Record error to internal log (avoid stdout)
|
|
175
175
|
// console.error(`Failed to cleanup file ${fileId}:`, error);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
//
|
|
179
|
+
// Delete files related to an execution ID
|
|
180
180
|
async deleteExecutionFiles(executionId) {
|
|
181
181
|
const filesToDelete = Array.from(this.files.entries())
|
|
182
182
|
.filter(([, file]) => file.execution_id === executionId)
|
|
@@ -187,7 +187,7 @@ export class FileManager {
|
|
|
187
187
|
const result = await this.deleteFiles(filesToDelete, true);
|
|
188
188
|
return result.total_deleted;
|
|
189
189
|
}
|
|
190
|
-
//
|
|
190
|
+
// Get usage statistics
|
|
191
191
|
getUsageStats() {
|
|
192
192
|
const files = Array.from(this.files.values());
|
|
193
193
|
const totalFiles = files.length;
|
|
@@ -213,32 +213,32 @@ export class FileManager {
|
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
215
|
async cleanup() {
|
|
216
|
-
//
|
|
216
|
+
// Delete all files
|
|
217
217
|
const allOutputIds = Array.from(this.files.keys());
|
|
218
218
|
try {
|
|
219
219
|
await this.deleteFiles(allOutputIds, true);
|
|
220
220
|
}
|
|
221
221
|
catch (error) {
|
|
222
|
-
//
|
|
222
|
+
// Record error to internal log (avoid stdout)
|
|
223
223
|
// console.error('Failed to cleanup files:', error);
|
|
224
224
|
}
|
|
225
225
|
this.files.clear();
|
|
226
226
|
}
|
|
227
227
|
/**
|
|
228
|
-
* Issue #13: output_id
|
|
228
|
+
* Issue #13: Get execution ID from output_id
|
|
229
229
|
*/
|
|
230
230
|
getExecutionIdByOutputId(outputId) {
|
|
231
231
|
const fileInfo = this.files.get(outputId);
|
|
232
232
|
return fileInfo?.execution_id;
|
|
233
233
|
}
|
|
234
234
|
/**
|
|
235
|
-
* Issue #15:
|
|
235
|
+
* Issue #15: Directory size-based cleanup suggestions
|
|
236
236
|
*/
|
|
237
237
|
async getCleanupSuggestions(options) {
|
|
238
238
|
const maxSizeMB = options?.maxSizeMB || 50; // Default: 50MB threshold
|
|
239
239
|
const maxAgeHours = options?.maxAgeHours || 24; // Default: 24 hours
|
|
240
240
|
const includeWarnings = options?.includeWarnings ?? true;
|
|
241
|
-
//
|
|
241
|
+
// Get current directory size and info
|
|
242
242
|
const stats = this.getUsageStats();
|
|
243
243
|
const currentSizeMB = stats.total_size_bytes / (1024 * 1024);
|
|
244
244
|
const currentTime = Date.now();
|
|
@@ -246,11 +246,11 @@ export class FileManager {
|
|
|
246
246
|
current_directory_size_mb: Math.round(currentSizeMB * 100) / 100,
|
|
247
247
|
current_file_count: stats.total_files,
|
|
248
248
|
};
|
|
249
|
-
//
|
|
249
|
+
// Threshold checks and identify cleanup candidates
|
|
250
250
|
if (includeWarnings && (currentSizeMB > maxSizeMB || stats.total_files > 1000)) {
|
|
251
251
|
const cleanupCandidates = [];
|
|
252
252
|
let estimatedSavings = 0;
|
|
253
|
-
//
|
|
253
|
+
// Identify old files
|
|
254
254
|
for (const [outputId, fileInfo] of this.files) {
|
|
255
255
|
const fileAge = currentTime - new Date(fileInfo.created_at).getTime();
|
|
256
256
|
const fileAgeHours = fileAge / (1000 * 60 * 60);
|
|
@@ -259,7 +259,7 @@ export class FileManager {
|
|
|
259
259
|
estimatedSavings += fileInfo.size;
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
|
-
//
|
|
262
|
+
// Also add large files as candidates (>= 3x average)
|
|
263
263
|
if (cleanupCandidates.length < 10 && stats.average_file_size > 0) {
|
|
264
264
|
const largeSizeThreshold = stats.average_file_size * 3;
|
|
265
265
|
for (const [outputId, fileInfo] of this.files) {
|
|
@@ -292,7 +292,7 @@ export class FileManager {
|
|
|
292
292
|
return result;
|
|
293
293
|
}
|
|
294
294
|
/**
|
|
295
|
-
* Issue #15:
|
|
295
|
+
* Issue #15: Age-based auto cleanup
|
|
296
296
|
*/
|
|
297
297
|
async performAutoCleanup(options) {
|
|
298
298
|
const maxAgeHours = options?.maxAgeHours || 24;
|
|
@@ -302,20 +302,20 @@ export class FileManager {
|
|
|
302
302
|
const deleteCandidates = [];
|
|
303
303
|
const preserveCandidates = [];
|
|
304
304
|
let spaceFeed = 0;
|
|
305
|
-
//
|
|
305
|
+
// Sort files by creation time (newest first)
|
|
306
306
|
const sortedFiles = Array.from(this.files.entries()).sort(([, a], [, b]) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
|
|
307
|
-
//
|
|
307
|
+
// Preserve the newest N items; check age for the rest
|
|
308
308
|
for (let i = 0; i < sortedFiles.length; i++) {
|
|
309
309
|
const entry = sortedFiles[i];
|
|
310
310
|
if (!entry)
|
|
311
311
|
continue;
|
|
312
312
|
const [outputId, fileInfo] = entry;
|
|
313
313
|
if (i < preserveRecent) {
|
|
314
|
-
//
|
|
314
|
+
// Preserve newest N items
|
|
315
315
|
preserveCandidates.push(outputId);
|
|
316
316
|
}
|
|
317
317
|
else {
|
|
318
|
-
//
|
|
318
|
+
// Check if file is old
|
|
319
319
|
const fileAge = currentTime - new Date(fileInfo.created_at).getTime();
|
|
320
320
|
const fileAgeHours = fileAge / (1000 * 60 * 60);
|
|
321
321
|
if (fileAgeHours > maxAgeHours) {
|
|
@@ -328,14 +328,14 @@ export class FileManager {
|
|
|
328
328
|
}
|
|
329
329
|
}
|
|
330
330
|
const spaceFreedMB = Math.round((spaceFeed / (1024 * 1024)) * 100) / 100;
|
|
331
|
-
//
|
|
331
|
+
// Perform actual deletions (when not dry run)
|
|
332
332
|
if (!dryRun && deleteCandidates.length > 0) {
|
|
333
333
|
try {
|
|
334
334
|
await this.deleteFiles(deleteCandidates, true);
|
|
335
335
|
}
|
|
336
336
|
catch (error) {
|
|
337
337
|
console.error('Auto cleanup failed:', error);
|
|
338
|
-
//
|
|
338
|
+
// On error, treat as not deleted
|
|
339
339
|
return {
|
|
340
340
|
deleted_files: [],
|
|
341
341
|
preserved_files: Array.from(this.files.keys()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../../src/core/file-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../../src/core/file-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Issue #13: FileManager Subscriber
|
|
3
|
-
*
|
|
2
|
+
* Issue #13: FileManager Subscriber implementation
|
|
3
|
+
* Extend existing FileManager with a StreamSubscriber pattern
|
|
4
4
|
*/
|
|
5
5
|
import { StreamSubscriber } from './stream-publisher.js';
|
|
6
6
|
import { FileManager } from './file-manager.js';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Subscriber wrapper for FileManager
|
|
9
|
+
* Subscriber that saves process output to files
|
|
10
10
|
*/
|
|
11
11
|
export declare class FileStorageSubscriber implements StreamSubscriber {
|
|
12
12
|
private fileManager;
|
|
@@ -20,18 +20,18 @@ export declare class FileStorageSubscriber implements StreamSubscriber {
|
|
|
20
20
|
onProcessEnd(executionId: string, _exitCode: number | null): Promise<void>;
|
|
21
21
|
onError(executionId: string, error: Error): Promise<void>;
|
|
22
22
|
/**
|
|
23
|
-
* FileManager
|
|
23
|
+
* Update FileManager info with final file sizes
|
|
24
24
|
*/
|
|
25
25
|
private updateFileManagerInfo;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Get output file paths for the specified execution
|
|
28
28
|
*/
|
|
29
29
|
getFilePaths(executionId: string): {
|
|
30
30
|
stdout: string;
|
|
31
31
|
stderr: string;
|
|
32
32
|
} | undefined;
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* Get active file stream count (for debugging)
|
|
35
35
|
*/
|
|
36
36
|
getActiveStreamsCount(): number;
|
|
37
37
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Issue #13: FileManager Subscriber
|
|
3
|
-
*
|
|
2
|
+
* Issue #13: FileManager Subscriber implementation
|
|
3
|
+
* Extend existing FileManager with a StreamSubscriber pattern
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from 'fs/promises';
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { generateId, getCurrentTimestamp } from '../utils/helpers.js';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Subscriber wrapper for FileManager
|
|
10
|
+
* Subscriber that saves process output to files
|
|
11
11
|
*/
|
|
12
12
|
export class FileStorageSubscriber {
|
|
13
13
|
fileManager;
|
|
@@ -21,7 +21,7 @@ export class FileStorageSubscriber {
|
|
|
21
21
|
this.id = `file-storage-${generateId()}`;
|
|
22
22
|
}
|
|
23
23
|
async onProcessStart(executionId, _command) {
|
|
24
|
-
//
|
|
24
|
+
// Prepare output file paths
|
|
25
25
|
const timestamp = getCurrentTimestamp().replace(/[:.]/g, '-');
|
|
26
26
|
const stdoutPath = path.join(this.baseDir, `${executionId}-stdout-${timestamp}.txt`);
|
|
27
27
|
const stderrPath = path.join(this.baseDir, `${executionId}-stderr-${timestamp}.txt`);
|
|
@@ -29,13 +29,13 @@ export class FileStorageSubscriber {
|
|
|
29
29
|
stdout: stdoutPath,
|
|
30
30
|
stderr: stderrPath,
|
|
31
31
|
});
|
|
32
|
-
//
|
|
32
|
+
// Open file handles for writing
|
|
33
33
|
try {
|
|
34
34
|
const stdoutHandle = await fs.open(stdoutPath, 'w');
|
|
35
35
|
const stderrHandle = await fs.open(stderrPath, 'w');
|
|
36
36
|
this.fileStreams.set(`${executionId}-stdout`, stdoutHandle);
|
|
37
37
|
this.fileStreams.set(`${executionId}-stderr`, stderrHandle);
|
|
38
|
-
// FileManager
|
|
38
|
+
// Register with FileManager (initially zero size)
|
|
39
39
|
await this.fileManager.registerFile(stdoutPath, 'stdout', executionId);
|
|
40
40
|
await this.fileManager.registerFile(stderrPath, 'stderr', executionId);
|
|
41
41
|
}
|
|
@@ -50,7 +50,7 @@ export class FileStorageSubscriber {
|
|
|
50
50
|
if (fileHandle) {
|
|
51
51
|
try {
|
|
52
52
|
await fileHandle.write(data);
|
|
53
|
-
//
|
|
53
|
+
// Flush immediately so other processes can read
|
|
54
54
|
await fileHandle.sync();
|
|
55
55
|
}
|
|
56
56
|
catch (error) {
|
|
@@ -59,7 +59,7 @@ export class FileStorageSubscriber {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
async onProcessEnd(executionId, _exitCode) {
|
|
62
|
-
//
|
|
62
|
+
// Close file handles
|
|
63
63
|
const stdoutHandle = this.fileStreams.get(`${executionId}-stdout`);
|
|
64
64
|
const stderrHandle = this.fileStreams.get(`${executionId}-stderr`);
|
|
65
65
|
try {
|
|
@@ -71,7 +71,7 @@ export class FileStorageSubscriber {
|
|
|
71
71
|
await stderrHandle.close();
|
|
72
72
|
this.fileStreams.delete(`${executionId}-stderr`);
|
|
73
73
|
}
|
|
74
|
-
// FileManager
|
|
74
|
+
// Update FileManager info (final file sizes, etc.)
|
|
75
75
|
const filePaths = this.filePaths.get(executionId);
|
|
76
76
|
if (filePaths) {
|
|
77
77
|
await this.updateFileManagerInfo(executionId, filePaths);
|
|
@@ -83,9 +83,9 @@ export class FileStorageSubscriber {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
async onError(executionId, error) {
|
|
86
|
-
//
|
|
86
|
+
// Ensure files are properly closed on error
|
|
87
87
|
await this.onProcessEnd(executionId, -1);
|
|
88
|
-
//
|
|
88
|
+
// Write error log to the stderr file
|
|
89
89
|
const filePaths = this.filePaths.get(executionId);
|
|
90
90
|
if (filePaths) {
|
|
91
91
|
try {
|
|
@@ -98,14 +98,14 @@ export class FileStorageSubscriber {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
|
-
* FileManager
|
|
101
|
+
* Update FileManager info with final file sizes
|
|
102
102
|
*/
|
|
103
103
|
async updateFileManagerInfo(executionId, filePaths) {
|
|
104
104
|
try {
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
105
|
+
// Obtain file sizes and update FileManager
|
|
106
|
+
// This part depends on FileManager internals;
|
|
107
|
+
// may need to add an updateFileSize method to FileManager.
|
|
108
|
+
// Currently only logs via console.error
|
|
109
109
|
const stdoutStat = await fs.stat(filePaths.stdout);
|
|
110
110
|
const stderrStat = await fs.stat(filePaths.stderr);
|
|
111
111
|
console.error(`FileStorageSubscriber: Files updated for ${executionId}:`);
|
|
@@ -117,13 +117,13 @@ export class FileStorageSubscriber {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* Get output file paths for the specified execution
|
|
121
121
|
*/
|
|
122
122
|
getFilePaths(executionId) {
|
|
123
123
|
return this.filePaths.get(executionId);
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Get active file stream count (for debugging)
|
|
127
127
|
*/
|
|
128
128
|
getActiveStreamsCount() {
|
|
129
129
|
return this.fileStreams.size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage-subscriber.js","sourceRoot":"","sources":["../../src/core/file-storage-subscriber.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAMtB;IACA;IANM,EAAE,CAAS;IACnB,WAAW,GAA+B,IAAI,GAAG,EAAE,CAAC;IACpD,SAAS,GAAoD,IAAI,GAAG,EAAE,CAAC;IAE/E,YACU,WAAwB,EACxB,UAAkB,wBAAwB;QAD1C,gBAAW,GAAX,WAAW,CAAa;QACxB,YAAO,GAAP,OAAO,CAAmC;QAElD,IAAI,CAAC,EAAE,GAAG,gBAAgB,UAAU,EAAE,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,QAAgB;QACxD,
|
|
1
|
+
{"version":3,"file":"file-storage-subscriber.js","sourceRoot":"","sources":["../../src/core/file-storage-subscriber.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAMtB;IACA;IANM,EAAE,CAAS;IACnB,WAAW,GAA+B,IAAI,GAAG,EAAE,CAAC;IACpD,SAAS,GAAoD,IAAI,GAAG,EAAE,CAAC;IAE/E,YACU,WAAwB,EACxB,UAAkB,wBAAwB;QAD1C,gBAAW,GAAX,WAAW,CAAa;QACxB,YAAO,GAAP,OAAO,CAAmC;QAElD,IAAI,CAAC,EAAE,GAAG,gBAAgB,UAAU,EAAE,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,QAAgB;QACxD,4BAA4B;QAC5B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,WAAW,SAAS,MAAM,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,WAAW,SAAS,MAAM,CAAC,CAAC;QAErF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;YAC9B,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,SAAS,EAAE,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,SAAS,EAAE,YAAY,CAAC,CAAC;YAE5D,kDAAkD;YAClD,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,4DAA4D,WAAW,GAAG,EAC1E,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,IAAY,EAAE,WAAoB,KAAK;QAC7E,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,gDAAgD;gBAClD,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,SAAwB;QAC9D,qBAAqB;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;YACnD,CAAC;YAED,mDAAmD;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kDAAkD,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,KAAY;QAC7C,4CAA4C;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,6BAA6B,KAAK,CAAC,OAAO,IAAI,CAAC;gBACpE,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,UAAU,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CACjC,WAAmB,EACnB,SAA6C;QAE7C,IAAI,CAAC;YACH,2CAA2C;YAC3C,8CAA8C;YAC9C,2DAA2D;YAE3D,wCAAwC;YACxC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,CAAC,KAAK,CAAC,4CAA4C,WAAW,GAAG,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,aAAa,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,aAAa,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yDAAyD,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,WAAmB;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -7,7 +7,7 @@ export declare class MonitoringManager {
|
|
|
7
7
|
private readonly maxMetricsHistory;
|
|
8
8
|
constructor();
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Helper to execute an exec command for retrieving process information
|
|
11
11
|
*/
|
|
12
12
|
private getExecAsync;
|
|
13
13
|
startProcessMonitor(processId: number, intervalMs?: number, includeMetrics?: string[]): MonitorInfo;
|
|
@@ -7,11 +7,11 @@ export class MonitoringManager {
|
|
|
7
7
|
systemMonitoringInterval = null;
|
|
8
8
|
maxMetricsHistory = 1000;
|
|
9
9
|
constructor() {
|
|
10
|
-
//
|
|
10
|
+
// Start periodic collection of system statistics
|
|
11
11
|
this.startSystemMonitoring();
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Helper to execute an exec command for retrieving process information
|
|
15
15
|
*/
|
|
16
16
|
async getExecAsync() {
|
|
17
17
|
const { exec } = await import('child_process');
|
|
@@ -30,7 +30,7 @@ export class MonitoringManager {
|
|
|
30
30
|
metrics: {},
|
|
31
31
|
};
|
|
32
32
|
this.monitors.set(monitorId, monitorInfo);
|
|
33
|
-
//
|
|
33
|
+
// Start metrics collection
|
|
34
34
|
const interval = setInterval(() => {
|
|
35
35
|
this.collectProcessMetrics(monitorId, processId, includeMetrics);
|
|
36
36
|
}, intervalMs);
|
|
@@ -43,43 +43,43 @@ export class MonitoringManager {
|
|
|
43
43
|
return;
|
|
44
44
|
try {
|
|
45
45
|
const metrics = {};
|
|
46
|
-
// CPU
|
|
46
|
+
// Measure CPU usage
|
|
47
47
|
if (!includeMetrics || includeMetrics.includes('cpu')) {
|
|
48
48
|
metrics.cpu_usage_percent = await this.getCpuUsage(processId);
|
|
49
49
|
}
|
|
50
|
-
//
|
|
50
|
+
// Measure memory usage
|
|
51
51
|
if (!includeMetrics || includeMetrics.includes('memory')) {
|
|
52
52
|
metrics.memory_usage_mb = await this.getMemoryUsage(processId);
|
|
53
53
|
}
|
|
54
|
-
// I/O
|
|
54
|
+
// Measure I/O statistics
|
|
55
55
|
if (!includeMetrics || includeMetrics.includes('io')) {
|
|
56
56
|
const ioStats = await this.getIoStats(processId);
|
|
57
57
|
metrics.io_read_bytes = ioStats.read_bytes;
|
|
58
58
|
metrics.io_write_bytes = ioStats.write_bytes;
|
|
59
59
|
}
|
|
60
|
-
//
|
|
60
|
+
// Measure network statistics
|
|
61
61
|
if (!includeMetrics || includeMetrics.includes('network')) {
|
|
62
62
|
const networkStats = await this.getNetworkStats(processId);
|
|
63
63
|
metrics.network_rx_bytes = networkStats.rx_bytes;
|
|
64
64
|
metrics.network_tx_bytes = networkStats.tx_bytes;
|
|
65
65
|
}
|
|
66
|
-
//
|
|
66
|
+
// Store metrics
|
|
67
67
|
this.storeProcessMetrics(processId, metrics);
|
|
68
|
-
//
|
|
68
|
+
// Update monitor information
|
|
69
69
|
monitor.metrics = metrics;
|
|
70
70
|
monitor.last_update = getCurrentTimestamp();
|
|
71
71
|
this.monitors.set(monitorId, monitor);
|
|
72
72
|
}
|
|
73
73
|
catch (error) {
|
|
74
|
-
//
|
|
74
|
+
// Record error to internal log (avoid stdout)
|
|
75
75
|
// console.error(`Failed to collect metrics for process ${processId}:`, error);
|
|
76
|
-
//
|
|
76
|
+
// Stop monitoring on error
|
|
77
77
|
this.stopProcessMonitor(monitorId);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
async getCpuUsage(processId) {
|
|
81
81
|
try {
|
|
82
|
-
//
|
|
82
|
+
// Platform-specific CPU usage retrieval
|
|
83
83
|
if (process.platform === 'linux') {
|
|
84
84
|
return await this.getLinuxCpuUsage(processId);
|
|
85
85
|
}
|
|
@@ -87,7 +87,7 @@ export class MonitoringManager {
|
|
|
87
87
|
return await this.getMacOsCpuUsage(processId);
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
|
-
return 0; // Windows
|
|
90
|
+
return 0; // Simplified implementation for Windows, etc.
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
catch {
|
|
@@ -139,7 +139,7 @@ export class MonitoringManager {
|
|
|
139
139
|
const execAsync = await this.getExecAsync();
|
|
140
140
|
const { stdout } = await execAsync(`ps -p ${processId} -o rss --no-headers`);
|
|
141
141
|
const rssKb = parseInt(stdout.trim()) || 0;
|
|
142
|
-
return rssKb / 1024; // MB
|
|
142
|
+
return rssKb / 1024; // convert to MB
|
|
143
143
|
}
|
|
144
144
|
catch {
|
|
145
145
|
return 0;
|
|
@@ -154,7 +154,7 @@ export class MonitoringManager {
|
|
|
154
154
|
const lines = stdout.trim().split('\n');
|
|
155
155
|
if (lines.length > 1 && lines[1]) {
|
|
156
156
|
const rssKb = parseInt(lines[1].trim()) || 0;
|
|
157
|
-
return rssKb / 1024; // MB
|
|
157
|
+
return rssKb / 1024; // convert to MB
|
|
158
158
|
}
|
|
159
159
|
return 0;
|
|
160
160
|
}
|
|
@@ -181,12 +181,12 @@ export class MonitoringManager {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
catch {
|
|
184
|
-
//
|
|
184
|
+
// Return default values on error
|
|
185
185
|
}
|
|
186
186
|
return { read_bytes: 0, write_bytes: 0 };
|
|
187
187
|
}
|
|
188
188
|
async getNetworkStats(_processId) {
|
|
189
|
-
//
|
|
189
|
+
// Network stats collection is complex; using a simplified implementation here
|
|
190
190
|
return { rx_bytes: 0, tx_bytes: 0 };
|
|
191
191
|
}
|
|
192
192
|
storeProcessMetrics(processId, metrics) {
|
|
@@ -196,7 +196,7 @@ export class MonitoringManager {
|
|
|
196
196
|
const metricsHistory = this.processMetrics.get(processId);
|
|
197
197
|
if (metricsHistory) {
|
|
198
198
|
metricsHistory.push(metrics);
|
|
199
|
-
//
|
|
199
|
+
// Limit history size
|
|
200
200
|
if (metricsHistory.length > this.maxMetricsHistory) {
|
|
201
201
|
metricsHistory.shift();
|
|
202
202
|
}
|
|
@@ -207,13 +207,13 @@ export class MonitoringManager {
|
|
|
207
207
|
if (!monitor) {
|
|
208
208
|
throw new ResourceNotFoundError('monitor', monitorId);
|
|
209
209
|
}
|
|
210
|
-
//
|
|
210
|
+
// Stop the interval
|
|
211
211
|
const interval = this.intervals.get(monitorId);
|
|
212
212
|
if (interval) {
|
|
213
213
|
clearInterval(interval);
|
|
214
214
|
this.intervals.delete(monitorId);
|
|
215
215
|
}
|
|
216
|
-
//
|
|
216
|
+
// Update monitoring status
|
|
217
217
|
monitor.status = 'stopped';
|
|
218
218
|
monitor.last_update = getCurrentTimestamp();
|
|
219
219
|
this.monitors.set(monitorId, monitor);
|
|
@@ -231,11 +231,11 @@ export class MonitoringManager {
|
|
|
231
231
|
}
|
|
232
232
|
getSystemStats(_timeRangeMinutes = 60) {
|
|
233
233
|
const systemInfo = getSystemInfo();
|
|
234
|
-
// const processInfo = getProcessInfo(); //
|
|
234
|
+
// const processInfo = getProcessInfo(); // currently unused
|
|
235
235
|
const stats = {
|
|
236
236
|
active_processes: this.getActiveProcessCount(),
|
|
237
|
-
active_terminals: 0, // TerminalManager
|
|
238
|
-
total_files: 0, // FileManager
|
|
237
|
+
active_terminals: 0, // needs to be obtained from TerminalManager
|
|
238
|
+
total_files: 0, // needs to be obtained from FileManager
|
|
239
239
|
system_load: {
|
|
240
240
|
load1: systemInfo.loadavg[0] || 0,
|
|
241
241
|
load5: systemInfo.loadavg[1] || 0,
|
|
@@ -245,7 +245,7 @@ export class MonitoringManager {
|
|
|
245
245
|
total_mb: Math.round(systemInfo.totalmem / 1024 / 1024),
|
|
246
246
|
used_mb: Math.round((systemInfo.totalmem - systemInfo.freemem) / 1024 / 1024),
|
|
247
247
|
free_mb: Math.round(systemInfo.freemem / 1024 / 1024),
|
|
248
|
-
available_mb: Math.round(systemInfo.freemem / 1024 / 1024), //
|
|
248
|
+
available_mb: Math.round(systemInfo.freemem / 1024 / 1024), // simplified implementation
|
|
249
249
|
},
|
|
250
250
|
uptime_seconds: Math.round(systemInfo.uptime),
|
|
251
251
|
collected_at: getCurrentTimestamp(),
|
|
@@ -257,23 +257,23 @@ export class MonitoringManager {
|
|
|
257
257
|
.length;
|
|
258
258
|
}
|
|
259
259
|
startSystemMonitoring() {
|
|
260
|
-
// 5
|
|
260
|
+
// Collect system statistics every 5 minutes
|
|
261
261
|
this.systemMonitoringInterval = setInterval(() => {
|
|
262
262
|
try {
|
|
263
|
-
//
|
|
263
|
+
// In future, write system stats to a log file
|
|
264
264
|
const stats = this.getSystemStats();
|
|
265
265
|
this.logSystemStats(stats);
|
|
266
266
|
}
|
|
267
267
|
catch (error) {
|
|
268
|
-
//
|
|
268
|
+
// Record error to internal log (avoid stdout)
|
|
269
269
|
// console.error('Failed to collect system stats:', error);
|
|
270
270
|
}
|
|
271
271
|
}, 5 * 60 * 1000);
|
|
272
|
-
//
|
|
272
|
+
// Prevent interfering with shutdown
|
|
273
273
|
this.systemMonitoringInterval.unref?.();
|
|
274
274
|
}
|
|
275
275
|
logSystemStats(_stats) {
|
|
276
|
-
//
|
|
276
|
+
// In future, output to a log file (avoid stdout)
|
|
277
277
|
// console.log(`[${stats.collected_at}] System Stats:`, {
|
|
278
278
|
// processes: stats.active_processes,
|
|
279
279
|
// load: stats.system_load.load1,
|
|
@@ -285,13 +285,13 @@ export class MonitoringManager {
|
|
|
285
285
|
clearInterval(this.systemMonitoringInterval);
|
|
286
286
|
this.systemMonitoringInterval = null;
|
|
287
287
|
}
|
|
288
|
-
//
|
|
288
|
+
// Stop all monitors
|
|
289
289
|
for (const monitorId of this.monitors.keys()) {
|
|
290
290
|
try {
|
|
291
291
|
this.stopProcessMonitor(monitorId);
|
|
292
292
|
}
|
|
293
293
|
catch (error) {
|
|
294
|
-
//
|
|
294
|
+
// Record error to internal log (avoid stdout)
|
|
295
295
|
// console.error(`Failed to stop monitor ${monitorId}:`, error);
|
|
296
296
|
}
|
|
297
297
|
}
|