mono/packages/ai-tools/dist/lib/tools/process.js
2025-02-20 18:15:43 +01:00

126 lines
8.6 KiB
JavaScript

import { logger } from '../../index.js';
import { spawn } from 'child_process';
export var STATUS;
(function (STATUS) {
STATUS[STATUS["OK"] = 0] = "OK";
STATUS[STATUS["ERROR"] = 1] = "ERROR";
STATUS[STATUS["PENDING"] = 2] = "PENDING";
})(STATUS = STATUS || (STATUS = {}));
const fatalHandler = (message, fn) => {
if (message.startsWith('fatal:')) {
fn('\t\ ' + message);
return true;
}
return false;
};
const defaultFilter = (message) => {
return message.length > 0 &&
message !== '\n' &&
message !== '\r' &&
message !== '\r\n' &&
!message.startsWith('Debugger attached') &&
!message.includes('NODE_TLS_REJECT_UNAUTHORIZED') &&
!message.includes('Waiting for the debugger to disconnect');
};
const subscribe = (signal, collector = () => { }) => {
if (!signal || !signal.on) {
return;
}
signal.on('message', (message) => logger.debug('message', message));
signal.on('error', (error) => logger.error('std-error', error));
signal.on('data', (data) => {
/*
const msg = data.toString().replace(ansiRegex(), "")
if (!defaultFilter(msg)) {
return
}
collector(msg)*/
process.stdout.write(data);
});
};
const merge = (buffer, data) => buffer.concat(data);
const hook = (child, resolve, reject, cmd, buffer = []) => {
const collector = (data) => { buffer.push(data); };
//subscribe(child.stderr, collector)
//process.stdin.pipe(child.stdin)
debugger;
child.on('exit', (code, signal) => {
debugger;
if (code) {
resolve({
code: STATUS.ERROR,
command: cmd,
error: code,
messages: buffer
});
}
else {
resolve({
code: STATUS.OK,
command: cmd,
messages: buffer
});
}
});
return child;
};
export class Process {
binary = '';
cwd = '';
args = '';
buffer = [];
constructor(options = {}) {
this.binary = options.binary || this.binary;
this.cwd = options.cwd || process.cwd();
this.buffer = options.buffer || [];
}
async exec(command, args = []) {
args = [command].concat(args);
try {
let cmd = `${this.binary} ${args.join(' ')}`;
/*
const p = new Promise<any>((resolve, reject) => {
const p = exec(cmd, {
cwd: this.cwd
})
return hook(p, resolve, reject, this.binary + ' ' + args.join(' '), this.buffer)
})
return p
*/
try {
//stdio: ['pipe', 'pipe', 'pipe'],
debugger;
const p = new Promise((resolve, reject) => {
const cp = spawn(cmd, args, {
cwd: this.cwd,
shell: true,
stdio: 'inherit',
env: {
...process.env
},
});
return hook(cp, resolve, reject, cmd, this.buffer);
});
return p;
}
catch (e) {
logger.error('Error executing command', e);
}
}
catch (e) {
logger.error('Error executing command', e);
}
}
}
export class Helper {
static async run(cwd, cmd, args, buffer = [], debug_stream = false) {
debug_stream && logger.info(`Run ${cmd} in ${cwd}`, args);
const gitProcess = new Process({
cwd,
binary: cmd,
buffer
});
return gitProcess.exec('', args);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMvcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkQsTUFBTSxDQUFOLElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNkLCtCQUFFLENBQUE7SUFDRixxQ0FBSyxDQUFBO0lBQ0wseUNBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxNQUFNLEdBQU4sTUFBTSxLQUFOLE1BQU0sUUFJakI7QUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUF5QixFQUFXLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUE7UUFDcEIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZSxFQUFXLEVBQUU7SUFDL0MsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDckIsT0FBTyxLQUFLLElBQUk7UUFDaEIsT0FBTyxLQUFLLElBQUk7UUFDaEIsT0FBTyxLQUFLLE1BQU07UUFDbEIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1FBQ3hDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQztRQUNqRCxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNuRSxDQUFDLENBQUE7QUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQXVCLEVBQUUsWUFBaUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7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