// Tiny event bus for cross-component state (pending count, agent toggle, etc.). // No reactive framework — just publish/subscribe with last-value semantics. const subs = new Map(); // event → Set const last = new Map(); // event → last value export function on(event, fn) { if (!subs.has(event)) subs.set(event, new Set()); subs.get(event).add(fn); if (last.has(event)) fn(last.get(event)); return () => subs.get(event).delete(fn); } export function emit(event, value) { last.set(event, value); const set = subs.get(event); if (set) for (const fn of set) fn(value); } export function get(event) { return last.get(event); }