@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
|
@@ -39,35 +39,35 @@ export class TerminalManager {
|
|
|
39
39
|
maxTerminals;
|
|
40
40
|
maxOutputLines;
|
|
41
41
|
maxHistoryLines;
|
|
42
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
156
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
296
|
+
// Octal escape (\033)
|
|
297
297
|
.replace(/\\([0-7]{3})/g, (_, octal) => {
|
|
298
298
|
return String.fromCharCode(parseInt(octal, 8));
|
|
299
299
|
})
|
|
300
|
-
// Unicode
|
|
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
|
-
//
|
|
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":"
|
|
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"}
|
package/dist/daemon/server.js
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|