2026-08-15 18:37:30 +02:00
|
|
|
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. */
|
2026-08-16 13:55:25 +02:00
|
|
|
export const runEvents: EventEmitter =
|
|
|
|
|
globalThis.__triggershellRunEvents ?? new EventEmitter();
|
2026-08-15 18:37:30 +02:00
|
|
|
globalThis.__triggershellRunEvents = runEvents;
|
|
|
|
|
runEvents.setMaxListeners(0);
|
|
|
|
|
|
|
|
|
|
export function emitRunMessage(message: ServerMessage) {
|
|
|
|
|
runEvents.emit("message", message);
|
|
|
|
|
}
|