← Volver al catálogo

🐕 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 su mtime).
  • 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.