🎩 Director General
Archivo: agentes/supervisores/director.ts · Plist: com.rifai.director · Horario: cada 1 h (StartInterval 3600s)
Qué hace
Es el supervisor de los supervisores. Cada hora lee los JSON de estado que dejan los ~10 jefes de departamento, calcula el estado global del sistema (verde/amarillo/rojo) y escala al CEO (bot CEOSEC) cuando un departamento entra en rojo. Además, dentro de su ventana horaria, envía el Daily Report ejecutivo (21:00) y el post-mortem semanal (domingo 22:00) al bot de reportes (adscode). Usa un cooldown para no spamear: no avisa más de una vez cada 3 h por el mismo departamento rojo.
Cómo funciona
1. Lee todos los status/*.json (uno por departamento) con readDepts().
2. Clasifica en rojos/amarillos/verdes y calcula el color global.
3. Lee el historial .director-history.json y, por cada departamento en rojo que sea nuevo o que lleve >3 h sin avisar, manda alerta urgente al CEOSEC (TELEGRAM_BOT_TOKEN) con los agentes afectados y su motivo.
4. Guarda el historial actualizado.
5. Si la hora Madrid es 21:xx → compone y envía el Daily Report al bot de reportes (lista de cada depto con su semáforo). Si es domingo 22:xx → envía el post-mortem semanal.
Datos/APIs
- Sistema de archivos: lee
status/*.json, lee/escribestatus/.director-history.json. - Telegram (directo, legacy — no usa el router):
fetcha la API. Vars.env:TELEGRAM_BOT_TOKEN(urgente/CEOSEC),TELEGRAM_REPORTS_TOKEN(adscode),TELEGRAM_CHAT_ID. - Zona horaria convertida a Europe/Madrid para decidir las ventanas de report.
- Flag
process.env.FORCE_REPORT(si'0'desactiva el daily report).
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/supervisores/director.ts
Esperar: 🎩 Director General …, nº de departamentos con status, estado global y, si hay rojos nuevos, escalada a CEOSEC. El daily report solo sale en la ventana 21:00 Madrid.
Si se rompe / recuperar
launchctl unload ~/Library/LaunchAgents/com.rifai.director.plist && launchctl load ~/Library/LaunchAgents/com.rifai.director.plist
Logs: /Users/user/rifai-agents/logs/director.log. Si el director deja de correr, el watchdog lo detecta y avisa.
Cómo replicarlo
Lector de status/*.json, máquina de color global, historial con cooldown de 3 h para escaladas, conversión a horario Madrid para las ventanas de report y dos envíos Telegram (urgente CEOSEC + reportes adscode). Depende de que los supervisores hayan escrito sus JSON antes.