@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.
Files changed (95) hide show
  1. package/README.md +83 -11
  2. package/dist/backoffice/index.js +1 -1
  3. package/dist/backoffice/index.js.map +1 -1
  4. package/dist/backoffice/server.js +9 -9
  5. package/dist/backoffice/server.js.map +1 -1
  6. package/dist/cli.js +25 -4
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/file-manager.d.ts +3 -3
  9. package/dist/core/file-manager.js +27 -27
  10. package/dist/core/file-manager.js.map +1 -1
  11. package/dist/core/file-storage-subscriber.d.ts +7 -7
  12. package/dist/core/file-storage-subscriber.js +19 -19
  13. package/dist/core/file-storage-subscriber.js.map +1 -1
  14. package/dist/core/monitoring-manager.d.ts +1 -1
  15. package/dist/core/monitoring-manager.js +31 -31
  16. package/dist/core/monitoring-manager.js.map +1 -1
  17. package/dist/core/process-manager.d.ts +8 -5
  18. package/dist/core/process-manager.d.ts.map +1 -1
  19. package/dist/core/process-manager.js +427 -314
  20. package/dist/core/process-manager.js.map +1 -1
  21. package/dist/core/realtime-stream-subscriber.d.ts +18 -18
  22. package/dist/core/realtime-stream-subscriber.d.ts.map +1 -1
  23. package/dist/core/realtime-stream-subscriber.js +23 -23
  24. package/dist/core/realtime-stream-subscriber.js.map +1 -1
  25. package/dist/core/server-manager.d.ts +1 -0
  26. package/dist/core/server-manager.d.ts.map +1 -1
  27. package/dist/core/server-manager.js +26 -0
  28. package/dist/core/server-manager.js.map +1 -1
  29. package/dist/core/stream-publisher.d.ts +20 -20
  30. package/dist/core/stream-publisher.d.ts.map +1 -1
  31. package/dist/core/stream-publisher.js +15 -15
  32. package/dist/core/stream-publisher.js.map +1 -1
  33. package/dist/core/streaming-pipeline-reader.d.ts +12 -16
  34. package/dist/core/streaming-pipeline-reader.d.ts.map +1 -1
  35. package/dist/core/streaming-pipeline-reader.js +28 -28
  36. package/dist/core/streaming-pipeline-reader.js.map +1 -1
  37. package/dist/core/terminal-manager.d.ts +3 -3
  38. package/dist/core/terminal-manager.js +61 -61
  39. package/dist/core/terminal-manager.js.map +1 -1
  40. package/dist/daemon/server.d.ts.map +1 -1
  41. package/dist/daemon/server.js +165 -1
  42. package/dist/daemon/server.js.map +1 -1
  43. package/dist/executor/server.js +3 -3
  44. package/dist/executor/server.js.map +1 -1
  45. package/dist/runtime/tool-runtime.d.ts.map +1 -1
  46. package/dist/runtime/tool-runtime.js +9 -2
  47. package/dist/runtime/tool-runtime.js.map +1 -1
  48. package/dist/security/chat-completion-adapter.d.ts +2 -0
  49. package/dist/security/chat-completion-adapter.d.ts.map +1 -1
  50. package/dist/security/chat-completion-adapter.js +124 -7
  51. package/dist/security/chat-completion-adapter.js.map +1 -1
  52. package/dist/security/enhanced-evaluator.d.ts +2 -0
  53. package/dist/security/enhanced-evaluator.d.ts.map +1 -1
  54. package/dist/security/enhanced-evaluator.js +180 -11
  55. package/dist/security/enhanced-evaluator.js.map +1 -1
  56. package/dist/security/evaluator-types.d.ts +2 -2
  57. package/dist/security/kfence-fastpath.d.ts +15 -0
  58. package/dist/security/kfence-fastpath.d.ts.map +1 -0
  59. package/dist/security/kfence-fastpath.js +20 -0
  60. package/dist/security/kfence-fastpath.js.map +1 -0
  61. package/dist/security/manager.d.ts +4 -0
  62. package/dist/security/manager.d.ts.map +1 -1
  63. package/dist/security/manager.js +8 -2
  64. package/dist/security/manager.js.map +1 -1
  65. package/dist/security/security-llm-prompt-generator.d.ts +2 -2
  66. package/dist/security/security-llm-prompt-generator.js +5 -5
  67. package/dist/security/security-llm-prompt-generator.js.map +1 -1
  68. package/dist/tools/shell-tools.d.ts.map +1 -1
  69. package/dist/tools/shell-tools.js +59 -41
  70. package/dist/tools/shell-tools.js.map +1 -1
  71. package/dist/types/enhanced-security.d.ts +6 -6
  72. package/dist/types/enhanced-security.js +29 -29
  73. package/dist/types/enhanced-security.js.map +1 -1
  74. package/dist/types/index.d.ts +18 -5
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/index.js +37 -34
  77. package/dist/types/index.js.map +1 -1
  78. package/dist/types/quick-schemas.js +5 -5
  79. package/dist/types/quick-schemas.js.map +1 -1
  80. package/dist/types/response-schemas.js +4 -4
  81. package/dist/types/response-schemas.js.map +1 -1
  82. package/dist/types/schemas.d.ts +39 -58
  83. package/dist/types/schemas.d.ts.map +1 -1
  84. package/dist/types/schemas.js +25 -30
  85. package/dist/types/schemas.js.map +1 -1
  86. package/dist/utils/errors.d.ts +1 -1
  87. package/dist/utils/errors.d.ts.map +1 -1
  88. package/dist/utils/errors.js +3 -3
  89. package/dist/utils/errors.js.map +1 -1
  90. package/dist/utils/helpers.js +51 -51
  91. package/dist/utils/helpers.js.map +1 -1
  92. package/dist/utils/process-utils.d.ts +6 -6
  93. package/dist/utils/process-utils.js +29 -29
  94. package/dist/utils/process-utils.js.map +1 -1
  95. 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
- // 実行IDに関連するファイルを削除
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から実行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
- // 大きなファイルも候補に追加(サイズが平均の3倍以上)
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
- // 最新のN個は保持、残りは年齢でチェック
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
- // 最新のN個は保持
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
- // 実際の削除実行(dryRunでない場合)
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
- * 既存のFileManagerStreamSubscriberパターンに拡張
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
- * FileManager Subscriber ラッパー
9
- * プロセス出力をファイルに保存するSubscriber
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
- * 既存のFileManagerStreamSubscriberパターンに拡張
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
- * FileManager Subscriber ラッパー
10
- * プロセス出力をファイルに保存するSubscriber
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に登録(まだ0サイズ)
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
- // エラーログを stderr ファイルに書き込む
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
- // ファイルサイズを取得してFileManagerを更新
106
- // この部分は FileManager の内部実装に依存するため、
107
- // FileManager updateFileSize メソッドを追加する必要があるかもしれません
108
- // 現在は console.error でログ出力のみ
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":"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"}
1
+ {"version":3,"file":"file-storage-subscriber.js","sourceRoot":"","sources":["../../src/core/file-storage-subscriber.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare class MonitoringManager {
7
7
  private readonly maxMetricsHistory;
8
8
  constructor();
9
9
  /**
10
- * プロセス情報取得用の exec コマンド実行ヘルパー
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
- * プロセス情報取得用の exec コマンド実行ヘルパー
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
- // プラットフォーム固有のCPU使用率取得
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
  }