/** * ChatEventBus — 按 sessionId 分发归一化后的 ChatEvent * * 职责: * - 维护每个 sessionId 的订阅者列表 * - 维护每个 sessionId 的最近 N 条事件快照,供新客户端 replay * - 简单单进程内存实现,足够覆盖 Bridge 单机场景 * * 见 plan-v2.md 第四节 `chat/event-bus.ts`。 */ import { EventEmitter } from 'node:events'; import type { AddressedChatEvent, ChatEvent } from './types.js'; export type ChatEventSubscriber = (evt: AddressedChatEvent) => void; export declare class ChatEventBus extends EventEmitter { private readonly subscribers; private readonly buffers; private readonly bufferSize; private seqCounter; constructor(options?: { bufferPerSession?: number; }); /** 发布一个事件到 sessionId 对应的订阅者 */ publish(sessionId: string, event: ChatEvent): AddressedChatEvent; /** 订阅指定 sessionId 的事件 */ subscribe(sessionId: string, subscriber: ChatEventSubscriber): () => void; /** 获取最近的事件快照(默认返回全部缓冲) */ snapshot(sessionId: string, sinceSeq?: number): AddressedChatEvent[]; /** 清空指定 session 缓冲(会话被删除时调用) */ clearSession(sessionId: string): void; /** 统计信息(调试用) */ stats(): { sessions: number; totalSubscribers: number; totalBuffered: number; }; } /** 单例 bus */ export declare const chatEventBus: ChatEventBus; //# sourceMappingURL=event-bus.d.ts.map