tools/scheduler.py.dox.md
scheduler.py agent tool.scheduler.py because this directory is intentionally flat.scheduler.py owns the runtime implementation.scheduler.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.SchedulerTool (Tool)
async execute(self, **kwargs)async list_tasks(self, **kwargs) -> Responseasync find_task_by_name(self, **kwargs) -> Responseasync show_task(self, **kwargs) -> Responseasync run_task(self, **kwargs) -> Responseasync delete_task(self, **kwargs) -> Responseasync update_task(self, **kwargs) -> Responseasync create_scheduled_task(self, **kwargs) -> Response_current_action(tool: Tool, kwargs: dict) -> str_normalize_timezone(value: Any) -> str | None_schedule_timezone(kwargs: dict) -> str | None_task_schedule_from_input(schedule: Any, timezone: str | None=...) -> TaskSchedule_validate_task_schedule(task_schedule: TaskSchedule) -> str_task_plan_from_input(plan: Any) -> tuple[TaskPlan | None, str]DEFAULT_WAIT_TIMEOUT, LOCAL_TIMEZONE_ALIASES.helpers.tool.Tool subclasses and return helpers.tool.Response from execute(...).break_loop behavior, intervention handling, prompt instructions, or side effects change.SchedulerTool is a Tool.SchedulerTool defines execute(...).agent, asyncio, datetime, helpers, helpers.localization, helpers.projects, helpers.task_scheduler, helpers.tool, json, pytz, random, re, typing.str.strip.lower.replace, str.strip, _normalize_timezone, TaskSchedule, task_schedule.to_crontab, timezone_name.lower, Localization.get.get_timezone, pytz.timezone, schedule.split, re.match, parse_datetime, TaskPlan.create, _current_action, get_context_project_name, TaskScheduler.get.get_tasks, Response, TaskScheduler.get.find_task_by_name, TaskScheduler.get.get_task_by_uuid, scheduler.get_task_by_uuid, self._resolve_project_metadata.tests/test_task_scheduler_timezone.pytests/test_timezone_regressions.pytests/test_tool_action_contracts.pytests/test_tool_request_normalization.pyNo child DOX files.