📋 Master Status
Archivo: agentes/supervisores/master-status.ts · Plist: com.rifai.master-status (solo cargado en ~/Library/LaunchAgents, no versionado en cron/) · Horario: diario a las 08:00 (StartCalendarInterval Hour 8 Min 0) + RunAtLoad
Qué hace
Genera un inventario completo de TODOS los agentes con cron cargado y su estado real, agrupados por categoría (Marketing, SEO/Content, Social, CS, Intel, Finance, Operations, Supervision, Brain, Otros). Para cada uno muestra cuándo corrió por última vez, el tamaño de su log de errores y cuántas entradas de historial tiene. Al final comprueba los servicios externos críticos (Meta, Shopify, los bots de Telegram, el Brain) y manda un resumen al CEOSEC. Es la foto matutina de la flota.
Cómo funciona
1. Lista los plists cargados con launchctl list | grep com.rifai..
2. Por cada agente: mira el mtime de su <slug>.out.log (última ejecución), el tamaño de <slug>.err.log y el nº de entradas en data/<slug>-state.json.
3. Asigna icono: ⏳ nunca corrió · 🔴 error grande + status≠0 · 🟡 errores menores · 🟢 OK. Clasifica por categoría con regex sobre el slug.
4. Imprime el listado y un resumen (OK / warnings / errores / nunca).
5. Verifica servicios: token Meta (debug_token + días restantes), Shopify (/shop.json), los 8 bots Telegram (getMe), tamaño del Brain DB + vector store.
6. Envía un resumen vía notify-router (event: system_health, warning si hay errores).
Datos/APIs
- launchctl + sistema de archivos (
logs/,data/). - Meta Graph API (
debug_token). Vars:META_PAGE_TOKEN,META_ACCESS_TOKEN. - Shopify Admin API (
/shop.json). Vars:SHOPIFY_STORE,SHOPIFY_ACCESS_TOKEN. - Telegram:
getMepor bot (TELEGRAM_BOT_TOKEN,_META_,_SEO_,_SOCIAL_,_CS_,_CREATIVE_,_REPORTS_,_SALES_) + resumen víanotify-router. - Brain: lee tamaños de
brain/brain.dbybrain/vector-store/knowledge.json.
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/supervisores/master-status.ts
Esperar: listado por categorías con iconos, resumen numérico y bloque "Servicios externos" con el estado de Meta/Shopify/bots/Brain. Manda un resumen real al CEOSEC al final.
Si se rompe / recuperar
launchctl unload ~/Library/LaunchAgents/com.rifai.master-status.plist && launchctl load ~/Library/LaunchAgents/com.rifai.master-status.plist
Logs: /Users/user/rifai-agents/logs/master-status.log.
Cómo replicarlo
Parseo de launchctl list, cruce con mtime de .out.log y tamaño de .err.log, clasificación por regex de slug, checks de Meta/Shopify/Telegram/Brain y resumen vía notify-router. No depende de los JSON de status/ (mira los logs directamente), a diferencia del Director.