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 解決でフィルタリングされています)?