Укрепление Cron Add и выравнивание схемы
Контекст
Недавние логи gateway показывают повторяющиеся сбои cron.add с недопустимыми параметрами (отсутствующие sessionTarget, wakeMode, payload и неправильно сформированное расписание). Это указывает на то, что как минимум один клиент (вероятно, путь вызова инструмента agent) отправляет обернутые или частично указанные полезные нагрузки заданий. Отдельно, существует расхождение между перечислениями провайдеров cron в TypeScript, схемой gateway, флагами CLI и типами форм UI, плюс несоответствие UI для cron.status (ожидает jobCount, в то время как gateway возвращает jobs).
Цели
- Остановить спам cron.add INVALID_REQUEST путем нормализации общих обернутых полезных нагрузок и вывода отсутствующих полей kind
- Выровнять списки провайдеров cron между схемой gateway, типами cron, документами CLI и формами UI
- Сделать схему инструмента cron агента явной, чтобы LLM создавала корректные полезные нагрузки заданий
- Исправить отображение количества заданий cron status в Control UI
- Добавить тесты для покрытия нормализации и поведения инструмента
Не-цели
- Изменение семантики планирования cron или поведения выполнения заданий
- Добавление новых типов расписаний или парсинга cron выражений
- Капитальный пересмотр UI/UX для cron за пределами необходимых исправлений полей
Находки (текущие пробелы)
- CronPayloadSchema в gateway исключает signal + imessage, в то время как типы TS включают их
- Control UI CronStatus ожидает jobCount, но gateway возвращает jobs
- Схема инструмента cron агента позволяет произвольные объекты заданий, допуская неправильные входные данные
- Gateway строго валидирует cron.add без нормализации, поэтому обернутые полезные нагрузки терпят неудачу
Что изменилось
- cron.add и cron.update теперь нормализуют общие формы оберток и выводят отсутствующие поля kind
- Схема инструмента cron агента соответствует схеме gateway, что уменьшает недопустимые полезные нагрузки
- Перечисления провайдеров выровнены между gateway, CLI, UI и средством выбора macOS
- Control UI использует поле счетчика jobs от gateway для состояния
Текущее поведение
- Нормализация: обернутые полезные нагрузки data/job разворачиваются; schedule.kind и payload.kind выводятся, когда это безопасно
- Значения по умолчанию: безопасные значения по умолчанию применяются для wakeMode и sessionTarget, когда они отсутствуют
- Провайдеры: Discord/Slack/Signal/iMessage теперь последовательно отображаются в CLI/UI
См. Задания Cron для нормализованной формы и примеров.
Проверка
- Следите за логами gateway для уменьшения ошибок cron.add INVALID_REQUEST
- Подтвердите, что Control UI cron status показывает количество заданий после обновления
Опциональные последующие действия
- Ручное дымовое тестирование Control UI: добавить задание cron для каждого провайдера + проверить количество заданий в статусе
Открытые вопросы
- Должен ли cron.add принимать явное состояние от клиентов (в настоящее время запрещено схемой)?
- Должны ли мы разрешать webchat в качестве явного провайдера доставки (в настоящее время фильтруется в разрешении доставки)?