From c8ef26b28956e63fea5469967822ae4d4244fb59 Mon Sep 17 00:00:00 2001 From: wgnrai Date: Wed, 8 Apr 2026 22:46:51 +0000 Subject: [PATCH] fix: coerce TaskSchedule cron fields to str to prevent Pydantic ValidationError TaskSchedule model fields (minute, hour, day, month, weekday) are typed as str, but LLMs frequently pass integers (e.g. 0, 9). Pydantic v2 does not auto-coerce int to str, causing ValidationError when creating scheduled tasks. Fix wraps all schedule dict values with str() in both construction sites: - tools/scheduler.py: create_scheduled_task() - helpers/task_scheduler.py: parse_task_schedule() --- helpers/task_scheduler.py | 10 +++++----- tools/scheduler.py | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/helpers/task_scheduler.py b/helpers/task_scheduler.py index 71f55e1c6..e9915e9d1 100644 --- a/helpers/task_scheduler.py +++ b/helpers/task_scheduler.py @@ -1035,11 +1035,11 @@ def parse_task_schedule(schedule_data: Dict[str, str]) -> TaskSchedule: """Parse dictionary into TaskSchedule with validation.""" try: return TaskSchedule( - minute=schedule_data.get('minute', '*'), - hour=schedule_data.get('hour', '*'), - day=schedule_data.get('day', '*'), - month=schedule_data.get('month', '*'), - weekday=schedule_data.get('weekday', '*'), + minute=str(schedule_data.get('minute', '*')), + hour=str(schedule_data.get('hour', '*')), + day=str(schedule_data.get('day', '*')), + month=str(schedule_data.get('month', '*')), + weekday=str(schedule_data.get('weekday', '*')), timezone=schedule_data.get('timezone', Localization.get().get_timezone()) ) except Exception as e: diff --git a/tools/scheduler.py b/tools/scheduler.py index 9181bbe1f..d6c5f6c51 100644 --- a/tools/scheduler.py +++ b/tools/scheduler.py @@ -156,11 +156,11 @@ class SchedulerTool(Tool): dedicated_context: bool = kwargs.get("dedicated_context", False) task_schedule = TaskSchedule( - minute=schedule.get("minute", "*"), - hour=schedule.get("hour", "*"), - day=schedule.get("day", "*"), - month=schedule.get("month", "*"), - weekday=schedule.get("weekday", "*"), + minute=str(schedule.get("minute", "*")), + hour=str(schedule.get("hour", "*")), + day=str(schedule.get("day", "*")), + month=str(schedule.get("month", "*")), + weekday=str(schedule.get("weekday", "*")), ) # Validate cron expression, agent might hallucinate