/** * El trigger de redes sociales (`serviceConfig.social_media`), en las palabras * del panel [2026-10-17, mejora #208]. * * ## Lo que pasó * * Ariel pidió a Hermes «chequea cada hora las menciones de Mastodon de los * posts de hoy y responde según lo que escriban, sin contestar dos veces a la * misma persona». Hermes armó horario → «List mentions» → filtro * `replyCount = 0` → IA → filtro → reply. Lo que él esperaba era el trigger * social: ya sondea las menciones solo, su «Check every» es el «cada hora», y * cada mención nueva pasa UNA vez. Hermes recibía el formulario del trigger * (las claves del DTO), pero no qué es cada una ni el máximo de cada red. * * ## Qué hay aquí * * - `CAMPOS_DEL_TRIGGER_SOCIAL`: cada campo del sondeo con su rótulo en el * panel, su rango y lo que vale si no se pone. Los rangos y los valores por * defecto los vigila el spec gemelo `los-campos-del-trigger-social.spec.ts` * de la api contra su DTO y su sondeo. * - `MAXIMO_POR_SONDEO`: lo que cada red devuelve como mucho en una lectura. * «Results per poll» llega hasta 100, pero Mastodon no da más de 40 * menciones. * * [2026-10-19, mejora #265] El modo «ventana»: `pollMode` y `maxReintentos`. * Ariel pidió «revisar las menciones del día y responder solo las que no tienen * respuesta», y que si algo falla se reintente solo. Con el cursor por cuenta, * una mención que ya salió no vuelve a salir aunque su flujo fallara. En modo * `window` el sondeo pasa todo lo que cae dentro de «Only posts from the last» * y no está respondido, en cada comprobación, hasta que se responde o se agotan * los reintentos (espaciados: 1×, 2×, 4× el intervalo). * * [2026-10-19, mejora #212] `maxItemsPerPoll` ya no pierde nada. Antes pasaba * los 25 más nuevos y el sondeo seguía después del más nuevo LEÍDO, así que el * resto no salía nunca (el flujo de menciones de Ariel lee 40). Ahora: * - apagado por defecto: pasa todo lo que lee; * - si se pone, pasa primero los MÁS VIEJOS y el resto espera al siguiente * sondeo, como el trigger de RSS; * - y si entre dos sondeos llega más de lo que cabe en «Results per poll», lo * que no se pudo leer sale como aviso en Monitoring. */ export interface CampoDelTriggerSocial { /** La clave en `serviceConfig.social_media`. */ clave: string; /** El rótulo en el panel, para entender lo que pide la persona. */ rotulo: string; min?: number; max?: number; /** Los valores que admite, si es de opciones y no un número. */ valores?: readonly string[]; /** Lo que vale si no se pone (`null`: apagado). */ porDefecto: number | string | null; /** Para el modelo, en inglés. */ nota: string; } export declare const CAMPOS_DEL_TRIGGER_SOCIAL: readonly CampoDelTriggerSocial[]; /** Lo que cada red devuelve como mucho en UNA lectura, por tipo de sondeo. */ export declare const MAXIMO_POR_SONDEO: Readonly>>>; /** El máximo de una red para un tipo de sondeo, o `null` si no se sabe. */ export declare function maximoPorSondeo(red: string, tipo: string): number | null;