Cron Add Hardening & Schema-Angleichung
Kontext
Die Gateway-Logs zeigen wiederholt cron.add-Fehler mit ungültigen Parametern (fehlende sessionTarget, wakeMode, payload und fehlerhafte schedule). Das deutet darauf hin, dass mindestens ein Client (wahrscheinlich der Agent Tool Call Path) umschlossene oder unvollständig spezifizierte Job-Payloads sendet. Zusätzlich gibt es Abweichungen zwischen den Cron-Provider-Enums in TypeScript, Gateway-Schema, CLI-Flags und UI-Formulartypen, plus eine UI-Diskrepanz bei cron.status (erwartet jobCount, während Gateway jobs zurückgibt).
Ziele
cron.addINVALID_REQUEST-Spam stoppen, indem gängige Wrapper-Payloads normalisiert und fehlendekind-Felder abgeleitet werden.- Cron-Provider-Listen über Gateway-Schema, Cron-Typen, CLI-Docs und UI-Formulare hinweg angleichen.
- Agent-Cron-Tool-Schema explizit machen, damit das LLM korrekte Job-Payloads erzeugt.
- Die Anzeige der Job-Anzahl im Control UI Cron-Status reparieren.
- Tests hinzufügen, die Normalisierung und Tool-Verhalten abdecken.
Nicht-Ziele
- Cron-Scheduling-Semantik oder Job-Ausführungsverhalten ändern.
- Neue Schedule-Arten oder Cron-Expression-Parsing hinzufügen.
- UI/UX für Cron über die notwendigen Feld-Fixes hinaus überarbeiten.
Erkenntnisse (aktuelle Lücken)
CronPayloadSchemaim Gateway schließtsignal+imessageaus, während TS-Typen sie enthalten.- Control UI CronStatus erwartet
jobCount, aber Gateway gibtjobszurück. - Agent-Cron-Tool-Schema erlaubt beliebige
job-Objekte, was fehlerhafte Eingaben ermöglicht. - Gateway validiert
cron.addstrikt ohne Normalisierung, sodass umschlossene Payloads fehlschlagen.
Was sich geändert hat
cron.addundcron.updatenormalisieren jetzt gängige Wrapper-Formen und leiten fehlendekind-Felder ab.- Agent-Cron-Tool-Schema entspricht dem Gateway-Schema, was ungültige Payloads reduziert.
- Provider-Enums sind über Gateway, CLI, UI und macOS-Picker hinweg angeglichen.
- Control UI verwendet das
jobs-Count-Feld des Gateways für den Status.
Aktuelles Verhalten
- Normalisierung: Umschlossene
data/job-Payloads werden entpackt;schedule.kindundpayload.kindwerden abgeleitet, wenn sicher möglich. - Defaults: Sichere Standardwerte werden für
wakeModeundsessionTargetangewendet, wenn sie fehlen. - Provider: Discord/Slack/Signal/iMessage werden jetzt konsistent über CLI/UI hinweg angezeigt.
Siehe Cron-Jobs für die normalisierte Form und Beispiele.
Verifikation
- Gateway-Logs auf reduzierte
cron.addINVALID_REQUEST-Fehler prüfen. - Bestätigen, dass Control UI Cron-Status die Job-Anzahl nach Refresh anzeigt.
Optionale Follow-ups
- Manueller Control UI Smoke-Test: Einen Cron-Job pro Provider hinzufügen + Job-Anzahl im Status verifizieren.
Offene Fragen
- Sollte
cron.addexplizitenstatevon Clients akzeptieren (aktuell durch Schema nicht erlaubt)? - Sollten wir
webchatals expliziten Delivery-Provider erlauben (aktuell in der Delivery-Resolution gefiltert)?