Cron Add のハードニング & スキーマ整合
Context
最近のゲートウェイログでは、無効なパラメータで繰り返されたcron.add 失敗が表示されます。(sessionTarget 、 wakeMode 、 payload 、 schedule がありません)。 これは、少なくとも1つのクライアント (エージェントツールコールパス) がラップされたジョブペイロードまたは部分的に指定されたジョブペイロードを送信している可能性があります。 それとは別に、TypeScript、ゲートウェイスキーマ、CLIフラグ、UIフォームタイプのcronプロバイダ列挙に加え、cronのUI不一致があります。 tatus (ゲートウェイは jobs を返し、jobCount を期待しています)。
目的
- 一般的な ラッパー ペイロードを正規化し、不足している
kindフィールドを推論することで、cron.addINVALID_REQUEST のスパムを停止します。 - ゲートウェイ のスキーマ、cron 型、CLI ドキュメント、UI フォーム全体で cron プロバイダー の一覧を整合させます。
- LLM が正しい ジョブ ペイロードを生成できるよう、エージェント の cron ツール スキーマを明示的にします。
- Control UI の cron ステータスにおける ジョブ 件数表示を修正します。
- 正規化と ツール の挙動をカバーするテストを追加します。
Non-goals
- cron のスケジューリング セマンティクスや ジョブ 実行の挙動を変更しません。
- 新しい スケジュール 種別や cron 式のパースを追加しません。
- 必要な フィールド 修正を超えて、cron の UI/UX を全面的に刷新しません。
Findings(current gaps)
- ゲートウェイ の
CronPayloadSchemaはsignal+imessageを除外していますが、TS 型には含まれています。 - Control UI の CronStatus は
jobCountを期待しますが、ゲートウェイ はjobsを返します。 - エージェント の cron ツール スキーマは任意の
jobオブジェクトを許可しており、不正な入力を可能にしています。 - ゲートウェイ は 正規化 なしで
cron.addを厳格に検証するため、ラップされた ペイロード は失敗します。
What changed
cron.addとcron.updateが一般的な ラッパー 形状を正規化し、不足しているkindフィールドを推論するようになりました。- エージェント の cron ツール スキーマが ゲートウェイ のスキーマと一致し、無効な ペイロード が減少しました。
- プロバイダの列挙は、ゲートウェイ、CLI、UI、およびmacOSピッカーで整列されます。
- Control UI は ステータス 用に ゲートウェイ の
jobs件数 フィールドを使用します。
現在の動作
- Normalization: ラップされた
data/jobペイロードは アンラップ され、安全な場合はschedule.kindとpayload.kindが推論されます。 - Defaults: 不足している場合、
wakeModeとsessionTargetに安全な デフォルト が適用されます。 - Providers: Discord/Slack/Signal/iMessage が CLI/UI 全体で一貫して表示されるようになりました。
検証
- ゲートウェイ ログを監視し、
cron.addINVALID_REQUEST エラーが減少していることを確認します。 - Control UI の cron ステータスが、更新後に ジョブ 件数を表示することを確認します。
任意のフォローアップ
- Control UI の 手動 スモーク テスト:プロバイダー ごとに cron ジョブ を 1 つ追加し、ステータス の ジョブ 件数を確認します。
Open Questions
cron.addは、クライアント からの 明示的なstateを受け付けるべきでしょうか(現在は スキーマ により不許可ですか)?webchatを 明示的な 配送 プロバイダー として許可すべきでしょうか(現在は 配送 解決 で フィルタリング されています)?