> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Усиление cron add

# Усиление Cron Add и выравнивание схем

## Контекст

Недавние логи шлюза показывают повторяющиеся сбои `cron.add` с недопустимыми параметрами (отсутствуют `sessionTarget`, `wakeMode`, `payload`, а также некорректный `schedule`). Это указывает на то, что как минимум один клиент (вероятно, путь вызова инструмента агента) отправляет обёрнутые или частично заданные полезные нагрузки заданий. Отдельно наблюдается расхождение между перечислениями провайдеров cron в TypeScript, схемой шлюза, флагами CLI и типами форм UI, а также несоответствие UI для `cron.status` (ожидает `jobCount`, тогда как шлюз возвращает `jobs`).

## Цели

* Остановить спам `cron.add` INVALID\_REQUEST за счёт нормализации распространённых обёрток полезных нагрузок и вывода недостающих полей `kind`.
* Выровнять списки провайдеров cron между схемой шлюза, типами cron, документацией CLI и формами UI.
* Сделать схему инструмента cron для агента явной, чтобы LLM формировала корректные полезные нагрузки заданий.
* Исправить отображение количества заданий статуса cron в Control UI.
* Добавить тесты для покрытия нормализации и поведения инструмента.

## Не цели

* Изменять семантику планирования cron или поведение выполнения заданий.
* Добавлять новые типы расписаний или разбор cron-выражений.
* Перерабатывать UI/UX для cron сверх необходимых исправлений полей.

## Выводы (текущие пробелы)

* `CronPayloadSchema` в шлюзе исключает `signal` + `imessage`, тогда как типы TS их включают.
* CronStatus в Control UI ожидает `jobCount`, но шлюз возвращает `jobs`.
* Схема инструмента cron для агента допускает произвольные объекты `job`, что позволяет формировать некорректные входные данные.
* Шлюз строго валидирует `cron.add` без нормализации, из‑за чего обёрнутые полезные нагрузки не проходят.

## Что изменилось

* `cron.add` и `cron.update` теперь нормализуют распространённые формы обёрток и выводят недостающие поля `kind`.
* Схема инструмента cron для агента соответствует схеме шлюза, что снижает количество недопустимых полезных нагрузок.
* Перечисления провайдеров выровнены между шлюзом, CLI, UI и выборщиком macOS.
* Control UI использует поле счётчика `jobs` шлюза для статуса.

## Текущее поведение

* **Нормализация:** обёрнутые полезные нагрузки `data`/`job` разворачиваются; `schedule.kind` и `payload.kind` выводятся, когда это безопасно.
* **Значения по умолчанию:** безопасные значения по умолчанию применяются для `wakeMode` и `sessionTarget` при отсутствии.
* **Провайдеры:** Discord/Slack/Signal/iMessage теперь последовательно представлены в CLI/UI.

См. [Cron jobs](/automation/cron-jobs) для нормализованной формы и примеров.

## Проверка

* Отслеживайте логи шлюза на предмет снижения количества ошибок `cron.add` INVALID\_REQUEST.
* Убедитесь, что в Control UI после обновления отображается количество заданий статуса cron.

## Необязательные последующие меры

* Ручной smoke‑тест Control UI: добавить по одному заданию cron для каждого провайдера и проверить количество заданий статуса.

## Открытые вопросы

* Должен ли `cron.add` принимать явный `state` от клиентов (в настоящее время запрещено схемой)?
* Следует ли разрешить `webchat` как явного провайдера доставки (в настоящее время отфильтровывается при разрешении доставки)?
