@mako10k/shell-server 0.2.3 → 0.2.4
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 +35 -10
- package/dist/backoffice/server.js +9 -9
- package/dist/backoffice/server.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 +4 -4
- package/dist/core/process-manager.js +151 -151
- 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/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/executor/server.js +3 -3
- package/dist/executor/server.js.map +1 -1
- package/dist/security/chat-completion-adapter.js +3 -3
- package/dist/security/chat-completion-adapter.js.map +1 -1
- package/dist/security/enhanced-evaluator.js +3 -3
- package/dist/security/enhanced-evaluator.js.map +1 -1
- package/dist/security/manager.js +2 -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 +4 -4
- 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 +28 -28
- package/dist/tools/shell-tools.js.map +1 -1
- package/dist/types/enhanced-security.js +29 -29
- package/dist/types/enhanced-security.js.map +1 -1
- package/dist/types/index.js +21 -21
- 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.js +3 -3
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/errors.js +1 -1
- 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
package/dist/utils/helpers.js
CHANGED
|
@@ -3,23 +3,23 @@ import * as fs from 'fs/promises';
|
|
|
3
3
|
import * as fsSync from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import * as os from 'os';
|
|
6
|
-
// ID
|
|
6
|
+
// Generate ID
|
|
7
7
|
export function generateId() {
|
|
8
8
|
return uuidv4();
|
|
9
9
|
}
|
|
10
|
-
//
|
|
10
|
+
// Generate timestamp
|
|
11
11
|
export function getCurrentTimestamp() {
|
|
12
12
|
return new Date().toISOString();
|
|
13
13
|
}
|
|
14
|
-
//
|
|
14
|
+
// Validate file path
|
|
15
15
|
export function isValidPath(filePath, allowedPaths) {
|
|
16
16
|
try {
|
|
17
17
|
const resolvedPath = path.resolve(filePath);
|
|
18
|
-
//
|
|
18
|
+
// Basic security checks
|
|
19
19
|
if (resolvedPath.includes('..')) {
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
|
-
//
|
|
22
|
+
// Check allowed paths
|
|
23
23
|
if (allowedPaths && allowedPaths.length > 0) {
|
|
24
24
|
return allowedPaths.some((allowedPath) => resolvedPath.startsWith(path.resolve(allowedPath)));
|
|
25
25
|
}
|
|
@@ -29,21 +29,21 @@ export function isValidPath(filePath, allowedPaths) {
|
|
|
29
29
|
return false;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
//
|
|
32
|
+
// Validate command
|
|
33
33
|
export function isValidCommand(command, allowedCommands, blockedCommands) {
|
|
34
34
|
const commandName = command.trim().split(/\s+/)[0];
|
|
35
35
|
if (!commandName) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
|
-
//
|
|
38
|
+
// Check blocked commands
|
|
39
39
|
if (blockedCommands?.includes(commandName)) {
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
|
-
//
|
|
42
|
+
// Check allowed commands
|
|
43
43
|
if (allowedCommands && allowedCommands.length > 0) {
|
|
44
44
|
return allowedCommands.includes(commandName);
|
|
45
45
|
}
|
|
46
|
-
//
|
|
46
|
+
// Block dangerous commands by default
|
|
47
47
|
const dangerousCommands = [
|
|
48
48
|
'rm',
|
|
49
49
|
'rmdir',
|
|
@@ -65,7 +65,7 @@ export function isValidCommand(command, allowedCommands, blockedCommands) {
|
|
|
65
65
|
];
|
|
66
66
|
return !dangerousCommands.includes(commandName);
|
|
67
67
|
}
|
|
68
|
-
//
|
|
68
|
+
// Get file size
|
|
69
69
|
export async function getFileSize(filePath) {
|
|
70
70
|
try {
|
|
71
71
|
const stats = await fs.stat(filePath);
|
|
@@ -75,7 +75,7 @@ export async function getFileSize(filePath) {
|
|
|
75
75
|
return 0;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
//
|
|
78
|
+
// Ensure directory exists
|
|
79
79
|
export async function ensureDirectory(dirPath) {
|
|
80
80
|
try {
|
|
81
81
|
await fs.access(dirPath);
|
|
@@ -84,7 +84,7 @@ export async function ensureDirectory(dirPath) {
|
|
|
84
84
|
await fs.mkdir(dirPath, { recursive: true });
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
//
|
|
87
|
+
// Ensure directory exists (sync)
|
|
88
88
|
export function ensureDirectorySync(dirPath) {
|
|
89
89
|
try {
|
|
90
90
|
fsSync.accessSync(dirPath);
|
|
@@ -93,7 +93,7 @@ export function ensureDirectorySync(dirPath) {
|
|
|
93
93
|
fsSync.mkdirSync(dirPath, { recursive: true });
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
//
|
|
96
|
+
// Safe file read
|
|
97
97
|
export async function safeReadFile(filePath, offset = 0, size, encoding = 'utf-8') {
|
|
98
98
|
const stats = await fs.stat(filePath);
|
|
99
99
|
const totalSize = stats.size;
|
|
@@ -110,7 +110,7 @@ export async function safeReadFile(filePath, offset = 0, size, encoding = 'utf-8
|
|
|
110
110
|
await fileHandle.close();
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
//
|
|
113
|
+
// Get system info
|
|
114
114
|
export function getSystemInfo() {
|
|
115
115
|
return {
|
|
116
116
|
platform: os.platform(),
|
|
@@ -122,7 +122,7 @@ export function getSystemInfo() {
|
|
|
122
122
|
uptime: os.uptime(),
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
|
-
//
|
|
125
|
+
// Get process info
|
|
126
126
|
export function getProcessInfo() {
|
|
127
127
|
return {
|
|
128
128
|
pid: process.pid,
|
|
@@ -135,9 +135,9 @@ export function getProcessInfo() {
|
|
|
135
135
|
uptime: process.uptime(),
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
-
//
|
|
138
|
+
// Set safe execution environment
|
|
139
139
|
export function getSafeEnvironment(baseEnv = {}, additionalEnv = {}) {
|
|
140
|
-
//
|
|
140
|
+
// Only allow basic environment variables
|
|
141
141
|
const safeBaseEnv = {
|
|
142
142
|
PATH: process.env['PATH'] || '',
|
|
143
143
|
HOME: process.env['HOME'] || '',
|
|
@@ -153,13 +153,13 @@ export function getSafeEnvironment(baseEnv = {}, additionalEnv = {}) {
|
|
|
153
153
|
...additionalEnv,
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
|
-
//
|
|
156
|
+
// String sanitization
|
|
157
157
|
export function sanitizeString(input, maxLength = 1000) {
|
|
158
158
|
return input
|
|
159
|
-
.replace(
|
|
159
|
+
.replace(/...[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '') // remove control characters
|
|
160
160
|
.substring(0, maxLength);
|
|
161
161
|
}
|
|
162
|
-
//
|
|
162
|
+
// Format bytes
|
|
163
163
|
export function formatBytes(bytes) {
|
|
164
164
|
if (bytes === 0)
|
|
165
165
|
return '0 Bytes';
|
|
@@ -168,7 +168,7 @@ export function formatBytes(bytes) {
|
|
|
168
168
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
169
169
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
170
170
|
}
|
|
171
|
-
//
|
|
171
|
+
// Format duration
|
|
172
172
|
export function formatDuration(milliseconds) {
|
|
173
173
|
if (milliseconds < 1000) {
|
|
174
174
|
return `${milliseconds}ms`;
|
|
@@ -186,7 +186,7 @@ export function formatDuration(milliseconds) {
|
|
|
186
186
|
return `${seconds}s`;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
//
|
|
189
|
+
// Log level
|
|
190
190
|
export var LogLevel;
|
|
191
191
|
(function (LogLevel) {
|
|
192
192
|
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
@@ -194,80 +194,80 @@ export var LogLevel;
|
|
|
194
194
|
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
195
195
|
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
196
196
|
})(LogLevel || (LogLevel = {}));
|
|
197
|
-
//
|
|
197
|
+
// Default log configuration
|
|
198
198
|
const defaultLogConfig = {
|
|
199
199
|
enableFileLogging: true,
|
|
200
200
|
logFilePath: './logs/mcp_server.log',
|
|
201
201
|
maxFileSize: 10 * 1024 * 1024, // 10MB
|
|
202
202
|
maxLogFiles: 5,
|
|
203
|
-
enableConsoleLogging: false, // MCP Server
|
|
203
|
+
enableConsoleLogging: false, // Do not pollute stdout for MCP Server
|
|
204
204
|
};
|
|
205
205
|
let currentLogConfig = { ...defaultLogConfig };
|
|
206
|
-
//
|
|
206
|
+
// Internal log storage
|
|
207
207
|
const logEntries = [];
|
|
208
208
|
const MAX_LOG_ENTRIES = 1000;
|
|
209
|
-
//
|
|
209
|
+
// Log file writing function
|
|
210
210
|
async function writeToLogFile(entry) {
|
|
211
211
|
if (!currentLogConfig.enableFileLogging) {
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
214
|
try {
|
|
215
|
-
//
|
|
215
|
+
// Ensure log directory exists
|
|
216
216
|
const logDir = path.dirname(currentLogConfig.logFilePath);
|
|
217
217
|
await fs.mkdir(logDir, { recursive: true });
|
|
218
|
-
//
|
|
218
|
+
// Format log entry
|
|
219
219
|
const logLine = `${entry.timestamp} [${LogLevel[entry.level]}] ${entry.component || 'SYSTEM'}: ${entry.message}`;
|
|
220
220
|
const dataLine = entry.data ? ` | Data: ${JSON.stringify(entry.data)}` : '';
|
|
221
221
|
const fullLogLine = logLine + dataLine + '\n';
|
|
222
|
-
//
|
|
222
|
+
// Append to file
|
|
223
223
|
await fs.appendFile(currentLogConfig.logFilePath, fullLogLine);
|
|
224
|
-
//
|
|
224
|
+
// Check file size and rotate
|
|
225
225
|
await rotateLogFileIfNeeded();
|
|
226
226
|
}
|
|
227
227
|
catch (error) {
|
|
228
|
-
//
|
|
228
|
+
// File log errors are recorded internally only (avoid infinite loop)
|
|
229
229
|
console.error('Failed to write to log file:', error);
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
|
-
//
|
|
232
|
+
// Log file rotation
|
|
233
233
|
async function rotateLogFileIfNeeded() {
|
|
234
234
|
try {
|
|
235
235
|
const stats = await fs.stat(currentLogConfig.logFilePath);
|
|
236
236
|
if (stats.size > currentLogConfig.maxFileSize) {
|
|
237
|
-
//
|
|
237
|
+
// Move old log files
|
|
238
238
|
for (let i = currentLogConfig.maxLogFiles - 1; i >= 1; i--) {
|
|
239
239
|
const oldFile = `${currentLogConfig.logFilePath}.${i}`;
|
|
240
240
|
const newFile = `${currentLogConfig.logFilePath}.${i + 1}`;
|
|
241
241
|
try {
|
|
242
242
|
await fs.access(oldFile);
|
|
243
243
|
if (i === currentLogConfig.maxLogFiles - 1) {
|
|
244
|
-
await fs.unlink(oldFile); //
|
|
244
|
+
await fs.unlink(oldFile); // remove oldest file
|
|
245
245
|
}
|
|
246
246
|
else {
|
|
247
247
|
await fs.rename(oldFile, newFile);
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
catch {
|
|
251
|
-
//
|
|
251
|
+
// Ignore if file does not exist
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
|
-
//
|
|
254
|
+
// Move current log file to .1
|
|
255
255
|
await fs.rename(currentLogConfig.logFilePath, `${currentLogConfig.logFilePath}.1`);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
catch {
|
|
259
|
-
//
|
|
259
|
+
// Ignore rotation errors (e.g., file does not exist)
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
|
-
//
|
|
262
|
+
// Update log configuration
|
|
263
263
|
export function updateLogConfig(config) {
|
|
264
264
|
currentLogConfig = { ...currentLogConfig, ...config };
|
|
265
265
|
}
|
|
266
|
-
//
|
|
266
|
+
// Get log configuration
|
|
267
267
|
export function getLogConfig() {
|
|
268
268
|
return { ...currentLogConfig };
|
|
269
269
|
}
|
|
270
|
-
//
|
|
270
|
+
// Logging functions (do not write to stdout)
|
|
271
271
|
export function internalLog(level, message, data, component) {
|
|
272
272
|
const entry = {
|
|
273
273
|
timestamp: getCurrentTimestamp(),
|
|
@@ -281,17 +281,17 @@ export function internalLog(level, message, data, component) {
|
|
|
281
281
|
entry.component = component;
|
|
282
282
|
}
|
|
283
283
|
logEntries.push(entry);
|
|
284
|
-
//
|
|
284
|
+
// Remove old log entries
|
|
285
285
|
if (logEntries.length > MAX_LOG_ENTRIES) {
|
|
286
286
|
logEntries.shift();
|
|
287
287
|
}
|
|
288
|
-
//
|
|
288
|
+
// File log write (async, ignore errors)
|
|
289
289
|
if (currentLogConfig.enableFileLogging) {
|
|
290
290
|
writeToLogFile(entry).catch(() => {
|
|
291
|
-
//
|
|
291
|
+
// Ignore file write errors (avoid infinite loop)
|
|
292
292
|
});
|
|
293
293
|
}
|
|
294
|
-
//
|
|
294
|
+
// Console log output
|
|
295
295
|
if (currentLogConfig.enableConsoleLogging) {
|
|
296
296
|
const logMessage = `${entry.timestamp} [${LogLevel[entry.level]}] ${entry.component || 'SYSTEM'}: ${entry.message}`;
|
|
297
297
|
switch (level) {
|
|
@@ -311,7 +311,7 @@ export function internalLog(level, message, data, component) {
|
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
//
|
|
314
|
+
// Get log entries
|
|
315
315
|
export function getLogEntries(level, component, limit) {
|
|
316
316
|
let filtered = logEntries;
|
|
317
317
|
if (level !== undefined) {
|
|
@@ -325,15 +325,15 @@ export function getLogEntries(level, component, limit) {
|
|
|
325
325
|
}
|
|
326
326
|
return filtered;
|
|
327
327
|
}
|
|
328
|
-
//
|
|
328
|
+
// Convenience logger functions
|
|
329
329
|
export const logger = {
|
|
330
330
|
debug: (message, data, component) => internalLog(LogLevel.DEBUG, message, data, component),
|
|
331
331
|
info: (message, data, component) => internalLog(LogLevel.INFO, message, data, component),
|
|
332
332
|
warn: (message, data, component) => internalLog(LogLevel.WARN, message, data, component),
|
|
333
333
|
error: (message, data, component) => internalLog(LogLevel.ERROR, message, data, component),
|
|
334
|
-
//
|
|
334
|
+
// Log retrieval functions
|
|
335
335
|
getEntries: (level, component, limit) => getLogEntries(level, component, limit),
|
|
336
|
-
//
|
|
336
|
+
// Get log history (more detailed filtering)
|
|
337
337
|
getHistory: (options) => {
|
|
338
338
|
let filtered = logEntries;
|
|
339
339
|
if (options?.level !== undefined) {
|
|
@@ -361,7 +361,7 @@ export const logger = {
|
|
|
361
361
|
}
|
|
362
362
|
return filtered;
|
|
363
363
|
},
|
|
364
|
-
//
|
|
364
|
+
// Log file reading function
|
|
365
365
|
readLogFile: async (lines) => {
|
|
366
366
|
try {
|
|
367
367
|
const content = await fs.readFile(currentLogConfig.logFilePath, 'utf-8');
|
|
@@ -376,7 +376,7 @@ export const logger = {
|
|
|
376
376
|
return [];
|
|
377
377
|
}
|
|
378
378
|
},
|
|
379
|
-
//
|
|
379
|
+
// Get log statistics
|
|
380
380
|
getStats: () => {
|
|
381
381
|
const stats = {
|
|
382
382
|
totalEntries: logEntries.length,
|
|
@@ -393,7 +393,7 @@ export const logger = {
|
|
|
393
393
|
});
|
|
394
394
|
return stats;
|
|
395
395
|
},
|
|
396
|
-
//
|
|
396
|
+
// Log configuration function
|
|
397
397
|
configure: updateLogConfig,
|
|
398
398
|
getConfig: getLogConfig,
|
|
399
399
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,27 +4,27 @@ export declare class ProcessUtils {
|
|
|
4
4
|
private static processInfoCache;
|
|
5
5
|
private static readonly CACHE_TTL;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Retrieve process information
|
|
8
8
|
*/
|
|
9
9
|
static getProcessInfo(pid: number): Promise<SystemProcessInfo | null>;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Get the terminal's foreground process
|
|
12
12
|
*/
|
|
13
13
|
static getForegroundProcess(terminalPty: IPty): Promise<ForegroundProcessInfo>;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Find the most recently created child process for a given PID
|
|
16
16
|
*/
|
|
17
17
|
private static findLatestChildProcess;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Check program guard conditions
|
|
20
20
|
*/
|
|
21
21
|
static checkProgramGuard(processInfo: SystemProcessInfo | undefined, sendTo: string): boolean;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Clear the cache
|
|
24
24
|
*/
|
|
25
25
|
static clearCache(): void;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Remove stale cache entries
|
|
28
28
|
*/
|
|
29
29
|
static cleanupCache(): void;
|
|
30
30
|
}
|
|
@@ -2,12 +2,12 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
export class ProcessUtils {
|
|
4
4
|
static processInfoCache = new Map();
|
|
5
|
-
static CACHE_TTL = 1000; // 1
|
|
5
|
+
static CACHE_TTL = 1000; // 1 second cache
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Retrieve process information
|
|
8
8
|
*/
|
|
9
9
|
static async getProcessInfo(pid) {
|
|
10
|
-
//
|
|
10
|
+
// Check cache
|
|
11
11
|
const cached = this.processInfoCache.get(pid);
|
|
12
12
|
if (cached && Date.now() - cached.timestamp < this.CACHE_TTL) {
|
|
13
13
|
return cached.info;
|
|
@@ -16,11 +16,11 @@ export class ProcessUtils {
|
|
|
16
16
|
const statPath = `/proc/${pid}/stat`;
|
|
17
17
|
const commPath = `/proc/${pid}/comm`;
|
|
18
18
|
const exePath = `/proc/${pid}/exe`;
|
|
19
|
-
//
|
|
19
|
+
// Check if process exists
|
|
20
20
|
if (!fs.existsSync(statPath)) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
// /proc/{pid}/stat
|
|
23
|
+
// Retrieve session information from /proc/{pid}/stat
|
|
24
24
|
const statContent = fs.readFileSync(statPath, 'utf8');
|
|
25
25
|
const statFields = statContent.split(' ');
|
|
26
26
|
if (statFields.length < 22) {
|
|
@@ -28,13 +28,13 @@ export class ProcessUtils {
|
|
|
28
28
|
}
|
|
29
29
|
const sessionId = parseInt(statFields[5] || '0');
|
|
30
30
|
const parentPid = parseInt(statFields[3] || '0');
|
|
31
|
-
//
|
|
31
|
+
// Get process name
|
|
32
32
|
let name = 'unknown';
|
|
33
33
|
try {
|
|
34
34
|
name = fs.readFileSync(commPath, 'utf8').trim();
|
|
35
35
|
}
|
|
36
36
|
catch {
|
|
37
|
-
// fallback: stat
|
|
37
|
+
// fallback: extract process name from stat
|
|
38
38
|
const procName = statFields[1];
|
|
39
39
|
if (procName) {
|
|
40
40
|
const commMatch = procName.match(/^\((.+)\)$/);
|
|
@@ -43,20 +43,20 @@ export class ProcessUtils {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
//
|
|
46
|
+
// Resolve full path (resolve symlink)
|
|
47
47
|
let fullPath;
|
|
48
48
|
try {
|
|
49
49
|
fullPath = fs.readlinkSync(exePath);
|
|
50
50
|
}
|
|
51
51
|
catch {
|
|
52
|
-
//
|
|
52
|
+
// If path cannot be resolved, leave undefined
|
|
53
53
|
}
|
|
54
54
|
const processInfo = {
|
|
55
55
|
pid,
|
|
56
56
|
name,
|
|
57
57
|
isSessionLeader: sessionId === pid,
|
|
58
58
|
};
|
|
59
|
-
//
|
|
59
|
+
// Add optional properties
|
|
60
60
|
if (fullPath) {
|
|
61
61
|
processInfo.path = fullPath;
|
|
62
62
|
}
|
|
@@ -66,7 +66,7 @@ export class ProcessUtils {
|
|
|
66
66
|
if (parentPid > 0) {
|
|
67
67
|
processInfo.parentPid = parentPid;
|
|
68
68
|
}
|
|
69
|
-
//
|
|
69
|
+
// Save to cache
|
|
70
70
|
this.processInfoCache.set(pid, {
|
|
71
71
|
info: processInfo,
|
|
72
72
|
timestamp: Date.now(),
|
|
@@ -79,11 +79,11 @@ export class ProcessUtils {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
82
|
+
* Get the terminal's foreground process
|
|
83
83
|
*/
|
|
84
84
|
static async getForegroundProcess(terminalPty) {
|
|
85
85
|
try {
|
|
86
|
-
//
|
|
86
|
+
// Obtain PTY file descriptor
|
|
87
87
|
const ptyWithFd = terminalPty;
|
|
88
88
|
const fd = ptyWithFd._fd || ptyWithFd.fd;
|
|
89
89
|
if (!fd) {
|
|
@@ -92,14 +92,14 @@ export class ProcessUtils {
|
|
|
92
92
|
error: 'PTY file descriptor not available',
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
-
//
|
|
96
|
-
//
|
|
95
|
+
// Use /proc/tty/drivers as an alternative to tcgetpgrp()
|
|
96
|
+
// First, determine the PTY device number
|
|
97
97
|
let foregroundPid = null;
|
|
98
98
|
try {
|
|
99
|
-
//
|
|
99
|
+
// More direct approach: inspect PTY process group
|
|
100
100
|
const ptyProcess = terminalPty.pid;
|
|
101
101
|
if (ptyProcess) {
|
|
102
|
-
//
|
|
102
|
+
// Find child processes and treat the most recently created as the foreground
|
|
103
103
|
foregroundPid = await this.findLatestChildProcess(ptyProcess);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
@@ -132,7 +132,7 @@ export class ProcessUtils {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
/**
|
|
135
|
-
*
|
|
135
|
+
* Find the most recently created child process for a given PID
|
|
136
136
|
*/
|
|
137
137
|
static async findLatestChildProcess(parentPid) {
|
|
138
138
|
try {
|
|
@@ -151,7 +151,7 @@ export class ProcessUtils {
|
|
|
151
151
|
continue;
|
|
152
152
|
const ppid = parseInt(statFields[3] || '0');
|
|
153
153
|
if (ppid === parentPid) {
|
|
154
|
-
//
|
|
154
|
+
// child process found
|
|
155
155
|
const startTime = parseInt(statFields[21] || '0');
|
|
156
156
|
if (!latestChild || startTime > latestChild.startTime) {
|
|
157
157
|
latestChild = { pid, startTime };
|
|
@@ -159,7 +159,7 @@ export class ProcessUtils {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
catch {
|
|
162
|
-
//
|
|
162
|
+
// skip this process
|
|
163
163
|
continue;
|
|
164
164
|
}
|
|
165
165
|
}
|
|
@@ -171,39 +171,39 @@ export class ProcessUtils {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
/**
|
|
174
|
-
*
|
|
174
|
+
* Check program guard conditions
|
|
175
175
|
*/
|
|
176
176
|
static checkProgramGuard(processInfo, sendTo) {
|
|
177
177
|
if (sendTo === '*') {
|
|
178
|
-
return true; //
|
|
178
|
+
return true; // no condition
|
|
179
179
|
}
|
|
180
180
|
if (!processInfo) {
|
|
181
|
-
return false; //
|
|
181
|
+
return false; // deny if process information is not available
|
|
182
182
|
}
|
|
183
|
-
//
|
|
183
|
+
// Session leader check
|
|
184
184
|
if (sendTo === 'sessionleader:' || sendTo === 'loginshell:') {
|
|
185
185
|
return processInfo.isSessionLeader;
|
|
186
186
|
}
|
|
187
|
-
// PID
|
|
187
|
+
// PID check
|
|
188
188
|
if (sendTo.startsWith('pid:')) {
|
|
189
189
|
const targetPid = parseInt(sendTo.substring(4));
|
|
190
190
|
return processInfo.pid === targetPid;
|
|
191
191
|
}
|
|
192
|
-
//
|
|
192
|
+
// Full path check
|
|
193
193
|
if (sendTo.startsWith('/')) {
|
|
194
194
|
return processInfo.path === sendTo;
|
|
195
195
|
}
|
|
196
|
-
//
|
|
196
|
+
// Process name check
|
|
197
197
|
return processInfo.name === sendTo;
|
|
198
198
|
}
|
|
199
199
|
/**
|
|
200
|
-
*
|
|
200
|
+
* Clear the cache
|
|
201
201
|
*/
|
|
202
202
|
static clearCache() {
|
|
203
203
|
this.processInfoCache.clear();
|
|
204
204
|
}
|
|
205
205
|
/**
|
|
206
|
-
*
|
|
206
|
+
* Remove stale cache entries
|
|
207
207
|
*/
|
|
208
208
|
static cleanupCache() {
|
|
209
209
|
const now = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../src/utils/process-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAI7B,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAGtC,CAAC;IACI,MAAM,CAAU,SAAS,GAAG,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../src/utils/process-utils.ts"],"names":[],"mappings":"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"}
|