🧩 Framework de Supervisores (lib)
Archivo: agentes/supervisores/lib.ts · Plist: _ninguno (librería compartida, no se ejecuta sola)_ · Horario: N/A
Qué hace
Es el framework común que comparten los 10 "jefes de departamento" (assistant, bi, customer, finance, legal, marketing, ops, product, store, system). No es un agente ejecutable: exporta las funciones que cada supervisor importa. Define cómo se lee el log de cada agente, cómo se calcula su color (verde/amarillo/rojo/gris), cómo se escribe el JSON de estado del departamento y cómo se notifica por Telegram. Centralizar esta lógica evita repetir código en los 10 supervisores.
Cómo funciona
1. checkAgent(spec): localiza el log del agente en logs/ (match exacto <name>.log o parcial). Si no hay log → gris ("nunca ejecutado"). Si existe, mira el mtime (última ejecución) y las últimas 5 líneas.
2. Decide color: rojo si lleva sin ejecutarse más de 2.5× su frecuencia esperada (expectedFreqSec) o si hay ❌/sigterm en el log; amarillo si hay errores leves; verde si todo OK.
3. runSupervisor({depto, emoji, agents}): aplica checkAgent a cada agente del departamento, calcula el color global (rojo si algún agente rojo, etc.), compone un summary y escribe status/<depto>.json vía writeStatus.
4. Si el departamento queda en amarillo, manda un aviso al bot de reportes (notify('report', …)). Los rojos NO se notifican aquí: los consolida y escala el Director (evita duplicar alertas).
Datos/APIs
- Sistema de archivos: lee
logs/*.log, escribestatus/<depto>.json. - Telegram (directo, legacy):
notify()hacefetcha la API de Telegram. Vars.env:TELEGRAM_BOT_TOKEN(urgente),TELEGRAM_REPORTS_TOKEN(reportes),TELEGRAM_CHAT_ID. - Lee
.envcon el parser estándar de la flota.
Cómo probarlo
No se ejecuta directamente. Para probarlo, ejecuta cualquier supervisor que lo importe, p.ej.:
cd /Users/user/rifai-agents && npx tsx agentes/supervisores/finance-supervisor.ts
Esperar: imprime 👔 Supervisor finanzas … y escribe status/finanzas.json.
Si se rompe / recuperar
No tiene plist propio. Si falla, fallan TODOS los supervisores que lo importan. Revisa errores de compilación TypeScript y que existan los directorios logs/ y status/. Logs: cada supervisor escribe en logs/sup-<depto>.log.
Cómo replicarlo
Tipos AgentStatus/DeptStatus/AgentSpec, función checkAgent (heurística de color por antigüedad de log + regex de error), writeStatus (volcado JSON), notify (envío Telegram) y runSupervisor (orquestador). Requiere convención: cada agente deja un .log en logs/ cuyo mtime marca su última ejecución.