import { probeHealth, healthObserver } from "../src/ops/monitor"; const target = new URL(process.env.MONITOR_URL || `http://127.0.0.1:${process.env.PORT ?? 3000}/api/health`); if (!["http:", "https:"].includes(target.protocol) || target.username || target.password) throw new Error("MONITOR_URL must be an HTTP(S) URL without credentials"); const emit = (event: Record) => console.log(JSON.stringify(event)); if (process.argv.includes("--once")) { const result = await probeHealth(target.href); emit({ event: "health_probe", ...result }); process.exitCode = result.healthy ? 0 : 1; } else { const observe = healthObserver(emit); let running = false; const check = async () => { if (running) return; running = true; try { observe(await probeHealth(target.href)); } finally { running = false; } }; await check(); const timer = setInterval(() => void check(), 60000); const stop = () => { clearInterval(timer); process.exit(0); }; process.on("SIGTERM", stop); process.on("SIGINT", stop); }