The name fallback used byte-index slice on the prompt, which panics on multi-byte UTF-8 characters like Chinese. Use is_char_boundary() to find a safe truncation point.
- storage/scheduler.rs: ScheduledJob/JobRun types + CRUD on Storage - tools/cron.rs: 6 cron agent tools (add/list/remove/enable/disable/update) - scheduler/types.rs: keep only Schedule enum - scheduler/mod.rs: use Arc<Storage> instead of raw SqlitePool - gateway/mod.rs: inject Storage directly, replace pool field - storage/mod.rs: scheduler tables in init_schema