type Handler = (payload: T) => void; export type EventUnsubscribe = () => void; export const createEventBus = >() => { const listeners = new Map>>(); const on = ( event: K, handler: Handler ): EventUnsubscribe => { if (!listeners.has(event)) { listeners.set(event, new Set()); } listeners.get(event)!.add(handler as Handler); return () => off(event, handler); }; const off = ( event: K, handler: Handler ) => { listeners.get(event)?.delete(handler as Handler); }; const emit = (event: K, payload: EventMap[K]) => { listeners.get(event)?.forEach((handler) => { try { handler(payload); } catch (error) { if (typeof console !== "undefined") { // eslint-disable-next-line no-console console.error("[AgentWidget] Event handler error:", error); } } }); }; return { on, off, emit }; };