CURRENT STATE: OverwatchService is a background timer that detects stalled Kanban tasks and either nudges the assigned agent or escalates to a Decision. It is entirely reactive — it only responds to inactivity on existing tasks. There is no way to start new work on a schedule.
GAP: ADS cannot proactively trigger agent sessions at a set time or recurring interval without a human creating an inbox message first.
INSPIRED BY: Devin's Schedules feature — cron-expression-based resources that create new sessions automatically. Each schedule has a prompt, cron string, timezone, and enabled flag. They are managed as first-class API resources.
IMPLEMENT:
- Define a schedules.json schema at workspaces/{project}/schedules.json. Each entry: { id, agentSlug, prompt, cron, timezone, enabled, lastFiredAt }.
- Add a SchedulerService (registered alongside OverwatchService as a hosted background service). On each timer tick, iterate enabled schedules and evaluate whether the cron expression is due, accounting for timezone.
- Use a cron parsing library (e.g. Cronos, which is already common in .NET) for expression evaluation.
- When a schedule fires, write a new inbox message to workspaces/{project}/agents/{agentSlug}/inbox/ — this triggers the existing DispatcherService pipeline with no executor changes needed.
- Update lastFiredAt in schedules.json after firing to prevent double-fires.
- Add a Schedules UI page for managing schedule entries.
FILES TO CHANGE: new ai-dev.core/Services/SchedulerService.cs, new ai-dev.core/Features/Schedules/, ai-dev.core/Extensions/ (register hosted service), new UI page.
CURRENT STATE: OverwatchService is a background timer that detects stalled Kanban tasks and either nudges the assigned agent or escalates to a Decision. It is entirely reactive — it only responds to inactivity on existing tasks. There is no way to start new work on a schedule.
GAP: ADS cannot proactively trigger agent sessions at a set time or recurring interval without a human creating an inbox message first.
INSPIRED BY: Devin's Schedules feature — cron-expression-based resources that create new sessions automatically. Each schedule has a prompt, cron string, timezone, and enabled flag. They are managed as first-class API resources.
IMPLEMENT:
FILES TO CHANGE: new ai-dev.core/Services/SchedulerService.cs, new ai-dev.core/Features/Schedules/, ai-dev.core/Extensions/ (register hosted service), new UI page.