feat: time-aware model routing for cron jobs (#317)
Some checks failed
Forge CI / smoke-and-build (pull_request) Failing after 1m5s

Route cron jobs to different models based on time of day.

- Peak hours (user active): cheaper model, user catches errors
- Off-peak hours (user absent): stronger model, errors go uncorrected

Config under smart_model_routing.cron_time_routing:
  enabled, timezone, peak_hours (start/end), peak_model, offpeak_model

Integrates into cron/scheduler.py via resolve_cron_turn_route(), which
checks time-aware routing first, then falls back to normal smart routing.

12 tests added (test_cron_time_routing.py). All 18 routing tests pass.

Closes #317
This commit is contained in:
Alexander Whitestone
2026-04-13 17:30:07 -04:00
parent 1ec02cf061
commit e6c346c6bb
5 changed files with 340 additions and 3 deletions

View File

@@ -87,6 +87,21 @@ model:
# cheap_model:
# provider: openrouter
# model: google/gemini-2.5-flash
# # Time-aware cron routing: pick model based on hour of day.
# # Peak hours = user present, cheaper model OK (they catch errors).
# # Off-peak = user absent, stronger model (errors go uncorrected).
# cron_time_routing:
# enabled: true
# timezone: "America/New_York" # IANA timezone (default: UTC)
# peak_hours:
# start: 9 # inclusive, 0-23
# end: 18 # exclusive, 0-23
# peak_model: # model during peak hours (user active)
# provider: openrouter
# model: xiaomi/mimo-v2-pro
# offpeak_model: # model during off-peak (user absent)
# provider: openrouter
# model: anthropic/claude-sonnet-4
# =============================================================================
# Git Worktree Isolation