import { EventEmitter } from "node:events"; import type { ServerMessage } from "../ws/protocol"; declare global { var __triggershellRunEvents: EventEmitter | undefined; } /** Decouples the run engine from the WS transport: the engine emits, ws/server.ts broadcasts. * Anchored on `globalThis` because Next compiles Route Handlers through its own module graph, * separate from the modules `server.ts` requires directly via tsx - a plain module-level * singleton would silently end up duplicated (one copy per graph) instead of shared. */ export const runEvents: EventEmitter = globalThis.__triggershellRunEvents ?? new EventEmitter(); globalThis.__triggershellRunEvents = runEvents; runEvents.setMaxListeners(0); export function emitRunMessage(message: ServerMessage) { runEvents.emit("message", message); }