@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
@@ -39,35 +39,35 @@ export class TerminalManager {
39
39
  maxTerminals;
40
40
  maxOutputLines;
41
41
  maxHistoryLines;
42
- // イベント駆動のSSE連携用: 端末ごとの出力/終了イベントを発火
42
+ // Event-driven SSE integration: emit per-terminal output/exit events
43
43
  events = new EventEmitter();
44
44
  constructor(maxTerminals = 20, maxOutputLines = 10000, maxHistoryLines = 1000) {
45
45
  this.maxTerminals = maxTerminals;
46
46
  this.maxOutputLines = maxOutputLines;
47
47
  this.maxHistoryLines = maxHistoryLines;
48
- // 多数のSSEクライアントが同一端末に接続しても警告が出ないように上限を緩める
49
- this.events.setMaxListeners(0); // 0 = 無制限
48
+ // Relax listener limit so many SSE clients can connect to the same terminal without warnings
49
+ this.events.setMaxListeners(0); // 0 = unlimited
50
50
  }
51
- // SSE連携等のための読み取り専用の EventEmitter 参照
51
+ // Read-only EventEmitter reference for SSE integration and similar uses
52
52
  getEventEmitter() {
53
53
  return this.events;
54
54
  }
55
55
  async createTerminal(options) {
56
- // ターミナル数の制限チェック
56
+ // Check terminal count limit
57
57
  if (this.terminals.size >= this.maxTerminals) {
58
58
  throw new ResourceLimitError('terminals', this.maxTerminals);
59
59
  }
60
60
  const terminalId = generateId();
61
61
  const now = getCurrentTimestamp();
62
- // デフォルト値の設定
62
+ // Set default values
63
63
  const shellType = options.shellType || 'bash';
64
64
  const dimensions = options.dimensions || { width: 80, height: 24 };
65
- // シェルコマンドの決定
65
+ // Determine shell command
66
66
  const shellCommand = this.getShellCommand(shellType);
67
- // 環境変数の準備
67
+ // Prepare environment variables
68
68
  const env = getSafeEnvironment(process.env, options.environmentVariables);
69
69
  try {
70
- // PTYプロセスの作成
70
+ // Create PTY process
71
71
  const ptyModule = await loadPty();
72
72
  const ptyProcess = ptyModule.spawn(shellCommand.command, shellCommand.args, {
73
73
  name: 'xterm-256color',
@@ -76,7 +76,7 @@ export class TerminalManager {
76
76
  cwd: options.workingDirectory || process.cwd(),
77
77
  env,
78
78
  });
79
- // ターミナル情報の作成
79
+ // Create terminal info
80
80
  const terminalInfo = {
81
81
  terminal_id: terminalId,
82
82
  session_name: options.sessionName || `terminal-${terminalId.slice(0, 8)}`,
@@ -92,7 +92,7 @@ export class TerminalManager {
92
92
  error: 'Not yet determined',
93
93
  },
94
94
  };
95
- // ターミナルセッションの初期化
95
+ // Initialize terminal session
96
96
  const session = {
97
97
  info: terminalInfo,
98
98
  ptyProcess,
@@ -100,11 +100,11 @@ export class TerminalManager {
100
100
  history: [],
101
101
  lastActivity: new Date(),
102
102
  };
103
- // 出力の処理
103
+ // Handle output
104
104
  ptyProcess.onData((data) => {
105
105
  this.handleOutput(terminalId, data);
106
106
  });
107
- // プロセス終了の処理
107
+ // Handle process exit
108
108
  ptyProcess.onExit((exitCode) => {
109
109
  this.handleTerminalExit(terminalId, exitCode);
110
110
  });
@@ -141,19 +141,19 @@ export class TerminalManager {
141
141
  const session = this.terminals.get(terminalId);
142
142
  if (!session)
143
143
  return;
144
- // 出力をバッファに追加
144
+ // Append output to buffer
145
145
  const lines = data.split('\n');
146
146
  session.outputBuffer.push(...lines);
147
- // バッファサイズの制限
147
+ // Limit buffer size
148
148
  if (session.outputBuffer.length > this.maxOutputLines) {
149
149
  session.outputBuffer = session.outputBuffer.slice(-this.maxOutputLines);
150
150
  }
151
- // 最終活動時刻の更新
151
+ // Update last activity time
152
152
  session.lastActivity = new Date();
153
153
  session.info.last_activity = getCurrentTimestamp();
154
154
  session.info.status = 'active';
155
- // 出力イベントを発火(SSEへ伝搬させるため)
156
- // 端末IDごとのイベントチャンネル: `terminal:output:<id>`
155
+ // Emit output event (to propagate to SSE)
156
+ // Per-terminal event channel: `terminal:output:<id>`
157
157
  this.events.emit(`terminal:output:${terminalId}`);
158
158
  }
159
159
  handleTerminalExit(terminalId, _exitCode) {
@@ -162,11 +162,11 @@ export class TerminalManager {
162
162
  return;
163
163
  session.info.status = 'closed';
164
164
  session.info.last_activity = getCurrentTimestamp();
165
- // 一定時間後にセッションをクリーンアップ
165
+ // Cleanup session after a delay
166
166
  setTimeout(() => {
167
167
  this.terminals.delete(terminalId);
168
- }, 30000); // 30秒後
169
- // 終了イベントを発火(SSEへ伝搬)
168
+ }, 30000); // after 30 seconds
169
+ // Emit exit event (propagate to SSE)
170
170
  this.events.emit(`terminal:exit:${terminalId}`);
171
171
  }
172
172
  async getTerminal(terminalId, updateForegroundProcess = true) {
@@ -174,7 +174,7 @@ export class TerminalManager {
174
174
  if (!session) {
175
175
  throw new ResourceNotFoundError('terminal', terminalId);
176
176
  }
177
- // フォアグラウンドプロセス情報を更新
177
+ // Update foreground process information
178
178
  if (updateForegroundProcess) {
179
179
  await this.updateForegroundProcess(session);
180
180
  }
@@ -182,7 +182,7 @@ export class TerminalManager {
182
182
  }
183
183
  listTerminals(filter) {
184
184
  let terminals = Array.from(this.terminals.values()).map((session) => ({ ...session.info }));
185
- // フィルタリング
185
+ // Filtering
186
186
  if (filter) {
187
187
  if (filter.sessionNamePattern) {
188
188
  const pattern = new RegExp(filter.sessionNamePattern, 'i');
@@ -193,7 +193,7 @@ export class TerminalManager {
193
193
  }
194
194
  }
195
195
  const total = terminals.length;
196
- // 制限
196
+ // Limit
197
197
  if (filter?.limit) {
198
198
  terminals = terminals.slice(0, filter.limit);
199
199
  }
@@ -207,7 +207,7 @@ export class TerminalManager {
207
207
  if (session.info.status === 'closed') {
208
208
  throw new ExecutionError('Terminal is closed');
209
209
  }
210
- // プログラムガードチェック
210
+ // Program guard check
211
211
  let guardResult;
212
212
  if (sendTo) {
213
213
  const guardPassed = await this.checkProgramGuard(terminalId, sendTo);
@@ -219,7 +219,7 @@ export class TerminalManager {
219
219
  try {
220
220
  let inputToSend;
221
221
  if (rawBytes) {
222
- // バイト列として送信(16進数文字列として受け取った場合)
222
+ // Send as raw bytes (if received as a hex string)
223
223
  try {
224
224
  const bytes = Buffer.from(input, 'hex');
225
225
  inputToSend = bytes.toString('binary');
@@ -229,28 +229,28 @@ export class TerminalManager {
229
229
  }
230
230
  }
231
231
  else if (controlCodes) {
232
- // 制御コードのエスケープシーケンスを解釈
232
+ // Interpret escape sequences for control codes
233
233
  inputToSend = this.parseControlCodes(input);
234
234
  if (execute) {
235
235
  inputToSend += '\r';
236
236
  }
237
237
  }
238
238
  else {
239
- // 通常の入力
239
+ // Normal input
240
240
  inputToSend = execute ? `${input}\r` : input;
241
241
  }
242
242
  session.ptyProcess.write(inputToSend);
243
- // 履歴に追加(executeの場合のみ、制御コードは除く)
243
+ // Add to history (only if execute, excluding control codes and raw bytes)
244
244
  if (execute && input.trim() && !controlCodes && !rawBytes) {
245
245
  session.history.push(input.trim());
246
246
  if (session.history.length > this.maxHistoryLines) {
247
247
  session.history = session.history.slice(-this.maxHistoryLines);
248
248
  }
249
249
  }
250
- // 活動時刻の更新
250
+ // Update activity time
251
251
  session.lastActivity = new Date();
252
252
  session.info.last_activity = getCurrentTimestamp();
253
- // フォアグラウンドプロセス情報を非同期で更新(パフォーマンスのため)
253
+ // Update foreground process info asynchronously (for performance)
254
254
  this.updateForegroundProcess(session).catch((err) => {
255
255
  console.warn(`Failed to update foreground process for terminal ${terminalId}:`, err);
256
256
  });
@@ -268,11 +268,11 @@ export class TerminalManager {
268
268
  }
269
269
  }
270
270
  /**
271
- * 制御コードのエスケープシーケンスを解釈する
271
+ * Interpret escape sequences for control codes
272
272
  */
273
273
  parseControlCodes(input) {
274
274
  return (input
275
- // 一般的な制御文字
275
+ // Common control characters
276
276
  .replace(/\\n/g, '\n')
277
277
  .replace(/\\r/g, '\r')
278
278
  .replace(/\\t/g, '\t')
@@ -280,7 +280,7 @@ export class TerminalManager {
280
280
  .replace(/\\f/g, '\f')
281
281
  .replace(/\\v/g, '\v')
282
282
  .replace(/\\0/g, '\0')
283
- // Ctrl+文字のシーケンス (^C = Ctrl+C)
283
+ // Ctrl+letter sequences (^C = Ctrl+C)
284
284
  .replace(/\^([A-Z@\[\]\\^_])/g, (_, char) => {
285
285
  const code = char.charCodeAt(0);
286
286
  if (code >= 64 && code <= 95) {
@@ -289,19 +289,19 @@ export class TerminalManager {
289
289
  }
290
290
  return `^${char}`;
291
291
  })
292
- // 16進数エスケープ (\x1b)
292
+ // Hex escape (\x1b)
293
293
  .replace(/\\x([0-9a-fA-F]{2})/g, (_, hex) => {
294
294
  return String.fromCharCode(parseInt(hex, 16));
295
295
  })
296
- // 8進数エスケープ (\033)
296
+ // Octal escape (\033)
297
297
  .replace(/\\([0-7]{3})/g, (_, octal) => {
298
298
  return String.fromCharCode(parseInt(octal, 8));
299
299
  })
300
- // Unicode エスケープ (\u001b)
300
+ // Unicode escape (\u001b)
301
301
  .replace(/\\u([0-9a-fA-F]{4})/g, (_, unicode) => {
302
302
  return String.fromCharCode(parseInt(unicode, 16));
303
303
  })
304
- // エスケープされたバックスラッシュ
304
+ // Escaped backslash
305
305
  .replace(/\\\\/g, '\\'));
306
306
  }
307
307
  async getOutput(terminalId, startLine, lineCount = 100, includeAnsi = false, includeForegroundProcess = false) {
@@ -309,9 +309,9 @@ export class TerminalManager {
309
309
  if (!session) {
310
310
  throw new ResourceNotFoundError('terminal', terminalId);
311
311
  }
312
- // startLineが指定されていない場合は、前回の読み取り位置を使用
312
+ // If startLine is not specified, use the previous read position
313
313
  const actualStartLine = startLine !== undefined ? startLine : this.terminalReadPositions.get(terminalId) || 0;
314
- // フォアグラウンドプロセス情報を更新(要求された場合)
314
+ // Update foreground process info (if requested)
315
315
  if (includeForegroundProcess) {
316
316
  await this.updateForegroundProcess(session);
317
317
  }
@@ -319,11 +319,11 @@ export class TerminalManager {
319
319
  const endLine = Math.min(actualStartLine + lineCount, totalLines);
320
320
  const outputLines = session.outputBuffer.slice(actualStartLine, endLine);
321
321
  let output = outputLines.join('\n');
322
- // ANSI制御コードの除去(オプション)
322
+ // Remove ANSI control codes (optional)
323
323
  if (!includeAnsi) {
324
324
  output = this.stripAnsiCodes(output);
325
325
  }
326
- // 次回の読み取り位置を更新
326
+ // Update read position for next call
327
327
  const nextStartLine = endLine;
328
328
  this.terminalReadPositions.set(terminalId, nextStartLine);
329
329
  const result = {
@@ -340,7 +340,7 @@ export class TerminalManager {
340
340
  return result;
341
341
  }
342
342
  stripAnsiCodes(text) {
343
- // ANSI制御コードを除去する正規表現
343
+ // Regex to remove ANSI control codes
344
344
  return text.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '');
345
345
  }
346
346
  /**
@@ -409,9 +409,9 @@ export class TerminalManager {
409
409
  throw new ExecutionError('Terminal is closed');
410
410
  }
411
411
  try {
412
- // PTYのサイズを変更
412
+ // Resize PTY
413
413
  session.ptyProcess.resize(dimensions.width, dimensions.height);
414
- // 情報を更新
414
+ // Update info
415
415
  session.info.dimensions = dimensions;
416
416
  session.info.last_activity = getCurrentTimestamp();
417
417
  return {
@@ -430,16 +430,16 @@ export class TerminalManager {
430
430
  }
431
431
  const closedAt = getCurrentTimestamp();
432
432
  try {
433
- // PTYプロセスを終了
433
+ // Terminate PTY process
434
434
  session.ptyProcess.kill();
435
- // セッション情報を更新
435
+ // Update session info
436
436
  session.info.status = 'closed';
437
437
  session.info.last_activity = closedAt;
438
- // 履歴保存の処理(今後実装)
438
+ // Handle history save (to be implemented)
439
439
  const historySaved = saveHistory && session.history.length > 0;
440
- // セッションをマップから削除
440
+ // Remove session from map
441
441
  this.terminals.delete(terminalId);
442
- // 読み取り位置もクリーンアップ
442
+ // Also clean up read position
443
443
  this.terminalReadPositions.delete(terminalId);
444
444
  return {
445
445
  success: true,
@@ -451,10 +451,10 @@ export class TerminalManager {
451
451
  throw new ExecutionError(`Failed to close terminal: ${error}`);
452
452
  }
453
453
  }
454
- // アイドル状態のターミナルの検出
454
+ // Detect terminals in idle state
455
455
  getIdleTerminals(idleMinutes = 30) {
456
456
  const now = new Date();
457
- const idleThreshold = idleMinutes * 60 * 1000; // ミリ秒に変換
457
+ const idleThreshold = idleMinutes * 60 * 1000; // convert to milliseconds
458
458
  const idleTerminals = [];
459
459
  for (const [terminalId, session] of this.terminals) {
460
460
  if (session.info.status === 'active') {
@@ -468,31 +468,31 @@ export class TerminalManager {
468
468
  return idleTerminals;
469
469
  }
470
470
  cleanup() {
471
- // 全てのターミナルを閉じる
471
+ // Close all terminals
472
472
  for (const [terminalId] of this.terminals) {
473
473
  try {
474
474
  this.closeTerminal(terminalId, false);
475
475
  }
476
476
  catch (error) {
477
- // エラーログを内部ログに記録(標準出力を避ける)
477
+ // Record errors in internal logs (avoid stdout)
478
478
  // console.error(`Failed to cleanup terminal ${terminalId}:`, error);
479
479
  }
480
480
  }
481
481
  this.terminals.clear();
482
482
  }
483
483
  /**
484
- * フォアグラウンドプロセス情報を更新する
484
+ * Update foreground process information
485
485
  */
486
486
  async updateForegroundProcess(session) {
487
487
  try {
488
- // キャッシュチェック(5秒間有効)
488
+ // Cache check (valid for 5 seconds)
489
489
  const now = Date.now();
490
490
  if (session.foregroundProcessCache && now - session.foregroundProcessCache.timestamp < 5000) {
491
491
  session.info.foreground_process = session.foregroundProcessCache.info;
492
492
  return;
493
493
  }
494
494
  const foregroundInfo = await ProcessUtils.getForegroundProcess(session.ptyProcess);
495
- // キャッシュを更新
495
+ // Update cache
496
496
  session.foregroundProcessCache = {
497
497
  info: foregroundInfo,
498
498
  timestamp: now,
@@ -507,21 +507,21 @@ export class TerminalManager {
507
507
  }
508
508
  }
509
509
  /**
510
- * プログラムガードをチェックする
510
+ * Check program guard
511
511
  */
512
512
  async checkProgramGuard(terminalId, sendTo) {
513
513
  if (sendTo === '*') {
514
- return true; // 条件なし
514
+ return true; // no condition
515
515
  }
516
516
  const session = this.terminals.get(terminalId);
517
517
  if (!session) {
518
518
  return false;
519
519
  }
520
- // フォアグラウンドプロセス情報を更新
520
+ // Update foreground process info
521
521
  await this.updateForegroundProcess(session);
522
522
  const foregroundProcess = session.info.foreground_process;
523
523
  if (!foregroundProcess?.available || !foregroundProcess.process) {
524
- return false; // フォアグラウンドプロセスが取得できない場合は拒否
524
+ return false; // reject when foreground process info cannot be obtained
525
525
  }
526
526
  return ProcessUtils.checkProgramGuard(foregroundProcess.process, sendTo);
527
527
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/core/terminal-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/core/terminal-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAmGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,+BAA+B,IAAI,kBAAkB,CAgBpE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgjB5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAiQA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,+BAA+B,IAAI,kBAAkB,CAgBpE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8nB5E"}
@@ -1,6 +1,7 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as net from 'net';
3
3
  import * as path from 'path';
4
+ import * as crypto from 'crypto';
4
5
  import { spawn } from 'child_process';
5
6
  import { existsSync } from 'fs';
6
7
  import { createRequire } from 'module';
@@ -26,6 +27,100 @@ function parseDurationMsEnv(name, fallback) {
26
27
  }
27
28
  return parsed;
28
29
  }
30
+ const RUNTIME_CONFIG_UPDATE_KEYS = [
31
+ 'enhanced_mode_enabled',
32
+ 'llm_evaluation_enabled',
33
+ 'elicitation_enabled',
34
+ 'enable_pattern_filtering',
35
+ ];
36
+ function isBoolean(value) {
37
+ return typeof value === 'boolean';
38
+ }
39
+ function buildConfigSnapshotForDaemon(config) {
40
+ const snapshot = {
41
+ enhanced_mode_enabled: config['enhanced_mode_enabled'],
42
+ llm_evaluation_enabled: config['llm_evaluation_enabled'],
43
+ elicitation_enabled: config['elicitation_enabled'],
44
+ enable_pattern_filtering: config['enable_pattern_filtering'],
45
+ };
46
+ const version = crypto
47
+ .createHash('sha256')
48
+ .update(JSON.stringify(snapshot))
49
+ .digest('hex')
50
+ .slice(0, 16);
51
+ return { snapshot, version };
52
+ }
53
+ function parseRuntimeConfigUpdates(params) {
54
+ const payload = params ?? {};
55
+ const keys = Object.keys(payload);
56
+ if (keys.length === 0) {
57
+ return {
58
+ ok: false,
59
+ error: 'invalid_config_payload:at_least_one_key_required',
60
+ };
61
+ }
62
+ const invalidKeys = keys.filter((key) => !RUNTIME_CONFIG_UPDATE_KEYS.includes(key));
63
+ if (invalidKeys.length > 0) {
64
+ return {
65
+ ok: false,
66
+ error: `invalid_config_payload:unknown_keys:${invalidKeys.join(',')}`,
67
+ };
68
+ }
69
+ const updates = {};
70
+ for (const key of keys) {
71
+ const value = payload[key];
72
+ if (!isBoolean(value)) {
73
+ return {
74
+ ok: false,
75
+ error: `invalid_config_payload:${key}:boolean_required`,
76
+ };
77
+ }
78
+ updates[key] = value;
79
+ }
80
+ return {
81
+ ok: true,
82
+ updates,
83
+ };
84
+ }
85
+ function getShouldDisconnectClientFromDetails(details) {
86
+ if (!details || typeof details !== 'object') {
87
+ return false;
88
+ }
89
+ const detailsRecord = details;
90
+ const evaluatorError = detailsRecord['evaluator_error'];
91
+ if (evaluatorError && typeof evaluatorError === 'object') {
92
+ const shouldDisconnect = evaluatorError.should_disconnect_client;
93
+ if (shouldDisconnect === true) {
94
+ return true;
95
+ }
96
+ }
97
+ const safetyEvaluation = detailsRecord['safety_evaluation'];
98
+ if (safetyEvaluation && typeof safetyEvaluation === 'object') {
99
+ const nestedEvaluatorError = safetyEvaluation['evaluator_error'];
100
+ if (nestedEvaluatorError && typeof nestedEvaluatorError === 'object') {
101
+ const shouldDisconnect = nestedEvaluatorError.should_disconnect_client;
102
+ return shouldDisconnect === true;
103
+ }
104
+ }
105
+ return false;
106
+ }
107
+ function normalizeDaemonError(error) {
108
+ if (error instanceof Error) {
109
+ const typed = error;
110
+ const details = typed.details;
111
+ return {
112
+ message: typed.message,
113
+ ...(typed.code ? { code: typed.code } : {}),
114
+ ...(typed.category ? { category: typed.category } : {}),
115
+ ...(details ? { details } : {}),
116
+ shouldDisconnectClient: getShouldDisconnectClientFromDetails(details),
117
+ };
118
+ }
119
+ return {
120
+ message: String(error),
121
+ shouldDisconnectClient: false,
122
+ };
123
+ }
29
124
  function getArgValue(args, flag) {
30
125
  const index = args.indexOf(flag);
31
126
  if (index < 0 || index === args.length - 1) {
@@ -334,6 +429,50 @@ export async function startDaemon(options) {
334
429
  ...(branch ? { branch } : {}),
335
430
  ...(action === 'info' ? { socketPath } : {}),
336
431
  ...(action === 'info' ? { childSocketPath } : {}),
432
+ ...(action === 'info'
433
+ ? (() => {
434
+ const currentConfig = toolRuntime.securityManager.getEnhancedConfig();
435
+ const { version } = buildConfigSnapshotForDaemon(currentConfig);
436
+ return { configVersion: version };
437
+ })()
438
+ : {}),
439
+ });
440
+ return;
441
+ }
442
+ if (action === 'config_get') {
443
+ const currentConfig = toolRuntime.securityManager.getEnhancedConfig();
444
+ const { snapshot, version } = buildConfigSnapshotForDaemon(currentConfig);
445
+ sendResponse(socket, {
446
+ ok: true,
447
+ config: snapshot,
448
+ configVersion: version,
449
+ });
450
+ return;
451
+ }
452
+ if (action === 'reload_config') {
453
+ const parsed = parseRuntimeConfigUpdates(request.params);
454
+ if (!parsed.ok) {
455
+ sendResponse(socket, {
456
+ ok: false,
457
+ error: parsed.error,
458
+ });
459
+ return;
460
+ }
461
+ if (parsed.updates.enhanced_mode_enabled === true &&
462
+ !toolRuntime.securityManager.hasEnhancedEvaluator()) {
463
+ sendResponse(socket, {
464
+ ok: false,
465
+ error: 'invalid_config_payload:enhanced_mode_enable_requires_initialized_evaluator',
466
+ });
467
+ return;
468
+ }
469
+ toolRuntime.securityManager.setEnhancedConfig(parsed.updates);
470
+ const appliedConfig = toolRuntime.securityManager.getEnhancedConfig();
471
+ const { snapshot, version } = buildConfigSnapshotForDaemon(appliedConfig);
472
+ sendResponse(socket, {
473
+ ok: true,
474
+ config: snapshot,
475
+ configVersion: version,
337
476
  });
338
477
  return;
339
478
  }
@@ -438,7 +577,32 @@ export async function startDaemon(options) {
438
577
  sendResponse(socket, { ok: true, result });
439
578
  }
440
579
  catch (error) {
441
- sendResponse(socket, { ok: false, error: String(error) });
580
+ const normalizedError = normalizeDaemonError(error);
581
+ if (normalizedError.shouldDisconnectClient) {
582
+ logger.warn('Disconnecting attached client due to non-retryable evaluator contract error', {
583
+ toolName: toolNameRaw,
584
+ code: normalizedError.code,
585
+ category: normalizedError.category,
586
+ }, DAEMON_COMPONENT);
587
+ closeAttachSocket();
588
+ markDetached();
589
+ }
590
+ sendResponse(socket, {
591
+ ok: false,
592
+ error: normalizedError.message,
593
+ ...(normalizedError.code || normalizedError.category || normalizedError.details
594
+ ? {
595
+ errorInfo: {
596
+ ...(normalizedError.code ? { code: normalizedError.code } : {}),
597
+ ...(normalizedError.category ? { category: normalizedError.category } : {}),
598
+ ...(normalizedError.details ? { details: normalizedError.details } : {}),
599
+ },
600
+ }
601
+ : {}),
602
+ ...(normalizedError.shouldDisconnectClient
603
+ ? { disconnectClient: true }
604
+ : {}),
605
+ });
442
606
  }
443
607
  return;
444
608
  }