import process from "node:process"; type UnhandledRejectionHandler = (reason: unknown) => boolean; const handlers = new Set(); export function registerUnhandledRejectionHandler(handler: UnhandledRejectionHandler): () => void { handlers.add(handler); return () => { handlers.delete(handler); }; } export function isUnhandledRejectionHandled(reason: unknown): boolean { for (const handler of handlers) { try { if (handler(reason)) return true; } catch (err) { console.error( "[clawdbot] Unhandled rejection handler failed:", err instanceof Error ? (err.stack ?? err.message) : err, ); } } return false; } export function installUnhandledRejectionHandler(): void { process.on("unhandledRejection", (reason, _promise) => { if (isUnhandledRejectionHandled(reason)) return; console.error( "[clawdbot] Unhandled promise rejection:", reason instanceof Error ? (reason.stack ?? reason.message) : reason, ); process.exit(1); }); }