🐕 Watchdog del Director
Archivo: agentes/supervisores/watchdog.ts · Plist: com.rifai.watchdog · Horario: cada 2 h (StartInterval 7200s)
Qué hace
Es el vigilante del vigilante: comprueba que el Director General siga ejecutándose. Si el log del director no se ha actualizado en más de 2 horas, asume que la supervisión está caída y lanza una alerta crítica al CEOSEC. Es la última red de seguridad: si el sistema de supervisión muere, alguien tiene que avisar.
Cómo funciona
1. Mira el mtime de logs/director.log.
2. Si no existe aún → sale sin hacer nada (primera ejecución).
3. Calcula la antigüedad en horas. Si >2 h → manda alerta crítica vía notify-router con event: 'agent_down', sugiriendo revisar launchctl list | grep director y el log.
4. Si ≤2 h → "Director vivo" y termina.
Datos/APIs
- Sistema de archivos: lee
logs/director.log(solo sumtime). - Telegram vía
tools/notify-router.ts(event: agent_down,level: critical→ llega al CEOSEC). - Vars
.env:TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID(las lee aunque el envío real lo hace el router).
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/supervisores/watchdog.ts
Esperar: 🐕 Watchdog Director … + "hace X.Xh" y ✅ Director vivo (o alerta si el director lleva >2 h sin correr). Para forzar la alerta puedes envejecer el mtime: touch -t sobre logs/director.log con fecha antigua (con cuidado).
Si se rompe / recuperar
launchctl unload ~/Library/LaunchAgents/com.rifai.watchdog.plist && launchctl load ~/Library/LaunchAgents/com.rifai.watchdog.plist
Logs: /Users/user/rifai-agents/logs/watchdog.log.
Cómo replicarlo
Un check de mtime del log del director contra un umbral de 2 h + un envío vía notify-router. Trivial pero crítico: debe correr en su propio plist, independiente del director, para que no caigan los dos a la vez.