Reforço do Cron Add e Alinhamento de Esquemas
Contexto
Logs recentes do gateway mostram falhas repetidas decron.add com parâmetros inválidos (ausência de sessionTarget, wakeMode, payload e schedule malformado). Isso indica que pelo menos um cliente (provavelmente o caminho de chamada da ferramenta do agente) está enviando payloads de jobs encapsulados ou parcialmente especificados. Separadamente, há divergência entre enums de provedores de cron no TypeScript, no esquema do gateway, nas flags da CLI e nos tipos de formulário da UI, além de um desalinhamento da UI para cron.status (espera jobCount enquanto o gateway retorna jobs).
Objetivos
- Interromper o spam de INVALID_REQUEST de
cron.addnormalizando payloads encapsulados comuns e inferindo camposkindausentes. - Alinhar as listas de provedores de cron entre o esquema do gateway, tipos de cron, docs da CLI e formulários da UI.
- Tornar explícito o esquema da ferramenta de cron do agente para que o LLM produza payloads de jobs corretos.
- Corrigir a exibição da contagem de jobs no status de cron da Control UI.
- Adicionar testes para cobrir normalização e comportamento da ferramenta.
Não objetivos
- Alterar a semântica de agendamento do cron ou o comportamento de execução de jobs.
- Adicionar novos tipos de agenda ou parsing de expressões cron.
- Reformular a UI/UX do cron além das correções de campos necessárias.
Constatações (lacunas atuais)
CronPayloadSchemano gateway excluisignal+imessage, enquanto os tipos TS os incluem.- O CronStatus da Control UI espera
jobCount, mas o gateway retornajobs. - O esquema da ferramenta de cron do agente permite objetos
jobarbitrários, possibilitando entradas malformadas. - O gateway valida estritamente
cron.addsem normalização, portanto payloads encapsulados falham.
O que mudou
cron.addecron.updateagora normalizam formatos comuns de encapsulamento e inferem camposkindausentes.- O esquema da ferramenta de cron do agente corresponde ao esquema do gateway, o que reduz payloads inválidos.
- Enums de provedores foram alinhados entre gateway, CLI, UI e seletor do macOS.
- A Control UI usa o campo de contagem
jobsdo gateway para status.
Comportamento atual
- Normalização: payloads encapsulados
data/jobsão desembrulhados;schedule.kindepayload.kindsão inferidos quando seguro. - Padrões: padrões seguros são aplicados para
wakeModeesessionTargetquando ausentes. - Provedores: Discord/Slack/Signal/iMessage agora são exibidos de forma consistente na CLI/UI.
Verificação
- Acompanhe os logs do gateway para redução de erros INVALID_REQUEST de
cron.add. - Confirme que o status de cron da Control UI mostra a contagem de jobs após a atualização.
Ações opcionais de acompanhamento
- Smoke test manual da Control UI: adicionar um job de cron por provedor + verificar a contagem de jobs no status.
Questões em aberto
cron.adddeve aceitarstateexplícito dos clientes (atualmente não permitido pelo esquema)?- Devemos permitir
webchatcomo um provedor de entrega explícito (atualmente filtrado na resolução de entrega)?