// Utilidades puras para las intervenciones espontáneas de Luna. export function elegirTema(temas, recientes = [], random = Math.random) { if (!Array.isArray(temas)) return null; const opciones=temas.filter(t=>typeof t==='string' && t.trim().length>0); if (!opciones.length) return null; const disponibles=opciones.filter(t=>!recientes.includes(t)); const lista=disponibles.length?disponibles:opciones; const r=Number(random()); const index=Math.max(0,Math.min(lista.length-1,Math.floor((Number.isFinite(r)?r:0)*lista.length))); return lista[index]; } export function siguienteEsperaMs(config,random=Math.random) { const min=Math.max(15,Number(config?.minIntervalSeconds)||90); const max=Math.max(min,Number(config?.maxIntervalSeconds)||180); return Math.round((min+(max-min)*Math.max(0,Math.min(1,Number(random())||0)))*1000); } export function puedeIniciarConversacion({now,proxima,ultimaActividad,iniciado,ocupada,pendientes,silencioMs}) { return !ocupada && pendientes===0 && now>=proxima && now-Math.max(ultimaActividad||0,iniciado||0)>=silencioMs; }