UNPKG

naisys

Version:

NAISYS - Autonomous AI agent runner with built-in context management and cost tracking

43 lines 1.4 kB
import * as events from "events"; /** * Singleton manager for stdout write events. * This allows multiple components to listen to stdout writes without conflicting * when overriding process.stdout.write. */ class WriteEventManager { static instance; eventEmitter = new events.EventEmitter(); originalWrite; isHooked = false; constructor() { } static getInstance() { if (!WriteEventManager.instance) { WriteEventManager.instance = new WriteEventManager(); } return WriteEventManager.instance; } /** * Hook into process.stdout.write to emit events. * This is safe to call multiple times - it will only hook once. */ hookStdout() { if (this.isHooked) return; this.originalWrite = process.stdout.write.bind(process.stdout); process.stdout.write = (...args) => { this.eventEmitter.emit("write", false, ...args); return this.originalWrite.apply(process.stdout, args); }; this.isHooked = true; } /** * Subscribe to write events. * @returns Unsubscribe function */ onWrite(listener) { this.eventEmitter.on("write", listener); return () => this.eventEmitter.off("write", listener); } } export const writeEventManager = WriteEventManager.getInstance(); //# sourceMappingURL=writeEventManager.js.map