// Ядро: реалтайм-шина. Ведёт Claude. // Кодекс после записи в БД вызывает bus.emit(space_id, { type, space_id, payload }). // Сокетный слой (ws.js) подписывается на эти события и рассылает клиентам. import { EventEmitter } from 'node:events'; class Bus extends EventEmitter { // emit события конкретного пространства emit(spaceId, event) { return super.emit('space:' + spaceId, event); } onSpace(spaceId, handler) { super.on('space:' + spaceId, handler); return () => super.off('space:' + spaceId, handler); } } export const bus = new Bus(); bus.setMaxListeners(0); // много подписчиков-сокетов — это норма