Summary
Extend the task scheduler (#550) to support one-shot delayed execution — tasks that fire once after a delay and then auto-purge. Used by the autonomous loop to schedule follow-ups.
Parent issue: #555 (Autonomous mode)
New Interval Types
"once_after_30m" — run once after 30 minutes
"once_after_2h" — run once after 2 hours
"once_at_9am" — run once at a specific time
"once_at_2026-03-20T14:00" — run once at exact datetime
Behavior
- One-shot tasks execute exactly once, then set status to
completed
- Completed one-shots auto-purge from
scheduled_tasks table after 24h
- Multiple one-shots respect the 5-min minimum cool-down between executions
- One-shots appear in the schedule list with a "once" badge
Implementation
Extend parse_interval() in scheduler.py to recognize once_after_* and once_at_* patterns. After execution, mark as completed instead of rescheduling.
Add purge job: on scheduler startup and every hour, delete completed one-shots older than 24h.
Dependencies
Acceptance Criteria
Summary
Extend the task scheduler (#550) to support one-shot delayed execution — tasks that fire once after a delay and then auto-purge. Used by the autonomous loop to schedule follow-ups.
Parent issue: #555 (Autonomous mode)
New Interval Types
"once_after_30m"— run once after 30 minutes"once_after_2h"— run once after 2 hours"once_at_9am"— run once at a specific time"once_at_2026-03-20T14:00"— run once at exact datetimeBehavior
completedscheduled_taskstable after 24hImplementation
Extend
parse_interval()inscheduler.pyto recognizeonce_after_*andonce_at_*patterns. After execution, mark as completed instead of rescheduling.Add purge job: on scheduler startup and every hour, delete completed one-shots older than 24h.
Dependencies
Acceptance Criteria
once_after_*intervals parsed correctlyonce_at_*intervals parsed correctly (time and datetime)