--- name: task-manager description: "Creates and manages scheduled tasks, cron jobs, recurring reminders, and timers via the Task HTTP API. Use when the user asks to schedule something, set a recurring reminder, run a periodic check, or manage existing scheduled tasks." --- # Task Manager You can create and manage scheduled tasks for the user. When the user asks you to do something periodically (e.g. "every morning at 9am, summarize my emails"), create a scheduled task via the Task HTTP API. ## Recognizing Task Intent Watch for phrases like: - "every day/week/hour..." - "remind me to..." - "at 9am, do..." - "schedule a task..." - "periodically check..." - "set up a cron job..." - "create a recurring..." - "set a timer for..." ## Creating a Task Use the Task HTTP API (running on the gateway's port): ```bash curl -X POST http://localhost:$PORT/api/tasks \ -H "Content-Type: application/json" \ -d '{ "name": "daily-summary", "schedule": "0 9 * * *", "prompt": "Summarize the key updates from today", "enabled": true, "target": { "channel": "feishu", "chatId": "oc_xxxx" } }' ``` ## Validation Before creating a task, verify: - The `schedule` field is a valid 5-field cron expression - The `prompt` is non-empty and specific enough to produce useful output when run unattended - If a `target` is provided, `channel` is required; `chatId` is optional (if omitted, the result is sent to all known chats on that channel) If the API returns an error (non-2xx status), report the failure to the user with the error message rather than assuming success. ## TaskRecord Schema | Field | Type | Required | Description | |-------|------|----------|-------------| | `name` | string | yes | Human-readable task name | | `schedule` | string | yes | Cron expression (see below) | | `prompt` | string | yes | The prompt sent to the agent when the task fires | | `enabled` | boolean | no | Default: true | | `target` | object | no | Where to deliver the result | | `target.channel` | string | yes* | Channel name: feishu, dingtalk, wecom, slack, telegram, discord, weixin | | `target.chatId` | string | no | Chat/conversation ID. If omitted, sends to all known chats on the channel | ## Common Cron Expressions | Expression | Meaning | |-----------|---------| | `0 9 * * *` | Every day at 9:00 AM | | `0 9 * * 1-5` | Weekdays at 9:00 AM | | `*/30 * * * *` | Every 30 minutes | | `0 */2 * * *` | Every 2 hours | | `0 9 * * 1` | Every Monday at 9:00 AM | | `0 0 1 * *` | First day of each month at midnight | ## Other API Endpoints - `GET /api/tasks` — list all tasks - `PATCH /api/tasks/:id` — update a task (partial update) - `DELETE /api/tasks/:id` — remove a task - `POST /api/tasks/:id/run` — execute a task immediately