// cache em memória com TTL, sem dependência externa — escopo suficiente pra um único // processo Node com tráfego modesto (chatbot interno). Cada chamada a createTtlCache // cria um Map isolado, pra caches diferentes (embeddings, rewrite+hyde, ...) não colidirem. export function createTtlCache(ttlMs, { maxEntries = 500 } = {}) { const store = new Map(); return { get(key) { const entry = store.get(key); if (!entry) return undefined; if (Date.now() > entry.expiresAt) { store.delete(key); return undefined; } return entry.value; }, set(key, value) { if (store.size >= maxEntries) store.delete(store.keys().next().value); store.set(key, { value, expiresAt: Date.now() + ttlMs }); } }; }