← Volver al catálogo

🧩 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, escribe status/<depto>.json.
  • Telegram (directo, legacy): notify() hace fetch a la API de Telegram. Vars .env: TELEGRAM_BOT_TOKEN (urgente), TELEGRAM_REPORTS_TOKEN (reportes), TELEGRAM_CHAT_ID.
  • Lee .env con 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.