UNPKG

@mariozechner/pi-coding-agent

Version:

Coding agent CLI with read, bash, edit, write tools and session management

59 lines 1.74 kB
let stdoutTakeoverState; export function takeOverStdout() { if (stdoutTakeoverState) { return; } const rawStdoutWrite = process.stdout.write.bind(process.stdout); const rawStderrWrite = process.stderr.write.bind(process.stderr); const originalStdoutWrite = process.stdout.write; process.stdout.write = ((chunk, encodingOrCallback, callback) => { if (typeof encodingOrCallback === "function") { return rawStderrWrite(String(chunk), encodingOrCallback); } return rawStderrWrite(String(chunk), callback); }); stdoutTakeoverState = { rawStdoutWrite, rawStderrWrite, originalStdoutWrite, }; } export function restoreStdout() { if (!stdoutTakeoverState) { return; } process.stdout.write = stdoutTakeoverState.originalStdoutWrite; stdoutTakeoverState = undefined; } export function isStdoutTakenOver() { return stdoutTakeoverState !== undefined; } export function writeRawStdout(text) { if (stdoutTakeoverState) { stdoutTakeoverState.rawStdoutWrite(text); return; } process.stdout.write(text); } export async function flushRawStdout() { if (stdoutTakeoverState) { await new Promise((resolve, reject) => { stdoutTakeoverState?.rawStdoutWrite("", (err) => { if (err) reject(err); else resolve(); }); }); return; } await new Promise((resolve, reject) => { process.stdout.write("", (err) => { if (err) reject(err); else resolve(); }); }); } //# sourceMappingURL=output-guard.js.map