Cron Add 堅牢化とスキーマ調整

背景

最近の gateway ログでは、無効なパラメータ(sessionTarget、wakeMode、payload の欠落、および不正な形式の schedule)による cron.add の失敗が繰り返し発生しています。これは、少なくとも 1 つのクライアント(おそらく agent ツール呼び出しパス)が wrapped または部分的に指定されたジョブペイロードを送信していることを示しています。さらに、TypeScript の cron provider 列挙型、gateway schema、CLI フラグ、UI フォームタイプの間でドリフトがあり、cron.status の UI ミスマッチ(jobCount を期待するが、gateway は jobs を返す)があります。

目標

  • 一般的な wrapper ペイロードを正規化し、欠落している kind フィールドを推論することで、cron.add INVALID_REQUEST スパムを停止
  • gateway schema、cron タイプ、CLI ドキュメント、UI フォーム全体で cron provider リストを調整
  • agent cron ツール schema を明示的にして、LLM が正しいジョブペイロードを生成できるようにする
  • Control UI cron status ジョブカウント表示を修正
  • 正規化とツール動作をカバーするテストを追加

非目標

  • cron スケジューリングセマンティクスまたはジョブ実行動作の変更
  • 新しい schedule kind または cron 式パースの追加
  • 必要なフィールド修正を超えた cron の UI/UX の全面改修

発見(現在のギャップ)

  • Gateway の CronPayloadSchema は signal + imessage を除外していますが、TS タイプには含まれています
  • Control UI CronStatus は jobCount を期待しますが、gateway は jobs を返します
  • Agent cron ツール schema は任意のジョブオブジェクトを許可し、不正な入力を可能にします
  • Gateway は正規化なしで cron.add を厳密に検証するため、wrapped ペイロードは失敗します

変更内容

  • cron.add と cron.update は現在、一般的な wrapper 形状を正規化し、欠落している kind フィールドを推論します
  • Agent cron ツール schema は gateway schema と一致し、無効なペイロードを削減します
  • Provider 列挙型は gateway、CLI、UI、macOS picker 全体で調整されます
  • Control UI は状態に gateway の jobs count フィールドを使用します

現在の動作

  • 正規化: wrapped data/job ペイロードはアンラップされます;安全な場合は schedule.kind と payload.kind が推論されます
  • デフォルト: 欠落している場合、wakeMode と sessionTarget に安全なデフォルトが適用されます
  • Provider: Discord/Slack/Signal/iMessage は CLI/UI 全体で一貫して表示されるようになりました

正規化された形状と例については、Cron ジョブ を参照してください。

検証

  • gateway ログを監視して、cron.add INVALID_REQUEST エラーの削減を確認
  • 更新後に Control UI cron status がジョブカウントを表示することを確認

オプションのフォローアップ

  • 手動 Control UI スモークテスト:provider ごとに cron ジョブを追加 + status ジョブカウントを確認

未解決の質問

  • cron.add はクライアントからの明示的な state を受け入れるべきですか(現在は schema で禁止されています)?
  • webchat を明示的な delivery provider として許可すべきですか(現在は delivery 解決でフィルタリングされています)?