Endurecimiento de Cron Add y alineación de esquemas
Contexto
Los registros recientes del Gateway muestran fallas repetidascron.add con parámetros inválidos (faltan sessionTarget, wakeMode, payload, y schedule malformado). Esto indica que al menos un cliente (probablemente la ruta de llamada de la herramienta del agente) está enviando cargas de trabajo envueltas o parcialmente especificadas. Por separado, existe una divergencia entre los enums del proveedor de cron en TypeScript, el esquema del Gateway, las banderas de la CLI y los tipos de formularios de la UI, además de una discrepancia de la UI para cron.status (espera jobCount mientras el Gateway devuelve jobs).
Objetivos
- Detener el spam de INVALID_REQUEST
cron.addnormalizando cargas envueltas comunes e infiriendo camposkindfaltantes. - Alinear las listas de proveedores de cron entre el esquema del Gateway, los tipos de cron, la documentación de la CLI y los formularios de la UI.
- Hacer explícito el esquema de la herramienta de cron del agente para que el LLM produzca cargas de trabajo correctas.
- Corregir la visualización del conteo de trabajos del estado de cron en la UI de Control.
- Agregar pruebas para cubrir la normalización y el comportamiento de la herramienta.
No objetivos
- Cambiar la semántica de programación de cron o el comportamiento de ejecución de trabajos.
- Agregar nuevos tipos de programación o análisis de expresiones cron.
- Reformar la UI/UX de cron más allá de las correcciones de campos necesarias.
Hallazgos (brechas actuales)
CronPayloadSchemaen el Gateway excluyesignal+imessage, mientras que los tipos de TS los incluyen.- CronStatus de la UI de Control espera
jobCount, pero el Gateway devuelvejobs. - El esquema de la herramienta de cron del agente permite objetos
jobarbitrarios, lo que habilita entradas malformadas. - El Gateway valida estrictamente
cron.addsin normalización, por lo que las cargas envueltas fallan.
Qué cambió
cron.addycron.updateahora normalizan formas comunes de envoltura e infieren camposkindfaltantes.- El esquema de la herramienta de cron del agente coincide con el esquema del Gateway, lo que reduce cargas inválidas.
- Los enums de proveedores están alineados entre el Gateway, la CLI, la UI y el selector de macOS.
- La UI de Control usa el campo de conteo
jobsdel Gateway para el estado.
Comportamiento actual
- Normalización: las cargas
data/jobenvueltas se desempaquetan;schedule.kindypayload.kindse infieren cuando es seguro. - Valores predeterminados: se aplican valores predeterminados seguros para
wakeModeysessionTargetcuando faltan. - Proveedores: Discord/Slack/Signal/iMessage ahora se muestran de forma consistente en la CLI y la UI.
Verificación
- Observe los registros del Gateway para una reducción de errores INVALID_REQUEST
cron.add. - Confirme que el estado de cron en la UI de Control muestre el conteo de trabajos después de actualizar.
Seguimientos opcionales
- Prueba manual de la UI de Control: agregar un trabajo de cron por proveedor y verificar el conteo de trabajos del estado.
Preguntas abiertas
- ¿Debería
cron.addaceptarstateexplícito de los clientes (actualmente no permitido por el esquema)? - ¿Deberíamos permitir
webchatcomo proveedor de entrega explícito (actualmente filtrado en la resolución de entrega)?