plugin.json
- name
- scheduled-tasks
- version
- 0.1.11
- description
- Run tasks on a schedule
- extensions
- dev.sailry.platform
plugin.json
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "scheduled-tasks",
"version": "0.1.11",
"description": "Run tasks on a schedule",
"extensions": {
"dev.sailry.platform": {
"api_version": "v1",
"storage": {
"collections": [
{
"scope": "node",
"prefix": "task/",
"schema": {
"type": "object",
"required": [
"id",
"name",
"prompt",
"config",
"timing",
"queue"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 32768
},
"project": {
"type": [
"string",
"null"
],
"default": null
},
"worktree": {
"type": [
"string",
"null"
],
"default": null
},
"config": {
"type": "object"
},
"enabled": {
"type": "boolean",
"default": true
},
"queue": {
"type": "string",
"pattern": "^[a-zA-Z0-9._-]{1,128}$"
},
"timing": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "once"
},
"data": {
"type": "object",
"required": [
"at_ms"
],
"properties": {
"at_ms": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}
}
},
{
"type": "object",
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "every"
},
"data": {
"type": "object",
"required": [
"anchor_ms",
"interval_ms"
],
"properties": {
"anchor_ms": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"interval_ms": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
}
}
}
},
{
"type": "object",
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "weekly"
},
"data": {
"type": "object",
"required": [
"timezone",
"weekdays",
"hour",
"minute"
],
"properties": {
"timezone": {
"type": "string",
"minLength": 1
},
"weekdays": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"uniqueItems": true,
"items": {
"type": "integer",
"minimum": 1,
"maximum": 7
}
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23
},
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59
}
}
}
}
}
]
}
}
}
}
]
},
"description": {
"label": "Run tasks on a schedule",
"locales": {
"zh-CN": "按计划执行任务"
}
},
"scope": "host",
"actions": [
"storage.read",
"storage.write",
"dispatch.manage",
"sessions.start",
"projects.read",
"models.read",
"conversation.read"
],
"display": {
"label": "Scheduled tasks",
"locales": {
"zh-CN": "定时任务"
},
"icon": "reicon:time/calendar"
},
"host": {
"entry": "dev.sailry.platform/host/main.js",
"resources": [
"dev.sailry.platform/host/main.js",
"dev.sailry.platform/host/management.js",
"dev.sailry.platform/host/records.js",
"dev.sailry.platform/host/dispatch.js",
"dev.sailry.platform/host/mutations.js",
"dev.sailry.platform/host/tools.js"
],
"handlers": [
"list",
"save",
"remove",
"run",
"history",
"cancel",
"stop",
"projects",
"initialize",
"scheduled_tasks"
],
"turn": {
"initialize": "initialize"
}
},
"tools": [
{
"name": "scheduled_tasks",
"contexts": [
"workspace",
"plugin"
],
"presentation": "summary",
"description": "List, create, update or delete scheduled Agent tasks in the current project, or unassigned tasks in an unassigned session. These tasks run an Agent, unlike reminder notifications. Create requires name, prompt and timing; enabled defaults to true. Inherit the execution session's project, worktree and model configuration; do not choose defaults or another project. List returns IDs, latest revisions and an after cursor; use the latest revision for update or delete. Update changes only supplied fields and preserves model configuration. once uses at_ms; every uses anchor_ms and interval_ms, a fixed elapsed interval. Those times are UTC milliseconds and new or changed timing must start in the future. weekly uses timezone (explicit IANA name), weekdays (distinct ISO days 1=Monday through 7=Sunday), hour and minute; Node chooses the next future local occurrence. Repeated local times run once at the earlier instant; missing local times are skipped. Ask for the time and timezone if missing. The execution Node must remain running; no email or external delivery is configured by this tool.",
"handler": {
"name": "scheduled_tasks",
"flow": {
"operations": [
"storage.transaction"
]
},
"parameters": {
"type": "object",
"additionalProperties": false,
"required": [
"action"
],
"properties": {
"action": {
"type": "string",
"enum": [
"list",
"create",
"update",
"delete"
]
},
"id": {
"type": "string"
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"after": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string",
"minLength": 1
},
"prompt": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
},
"timing": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "once"
},
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"at_ms"
],
"properties": {
"at_ms": {
"type": "integer",
"minimum": 0
}
}
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "every"
},
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"anchor_ms",
"interval_ms"
],
"properties": {
"anchor_ms": {
"type": "integer",
"minimum": 0
},
"interval_ms": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
}
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"data"
],
"properties": {
"kind": {
"const": "weekly"
},
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"timezone",
"weekdays",
"hour",
"minute"
],
"properties": {
"timezone": {
"type": "string",
"minLength": 1
},
"weekdays": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"uniqueItems": true,
"items": {
"type": "integer",
"minimum": 1,
"maximum": 7
}
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23
},
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59
}
}
}
}
}
]
}
},
"allOf": [
{
"if": {
"properties": {
"action": {
"const": "create"
}
}
},
"then": {
"required": [
"name",
"prompt",
"timing"
]
}
},
{
"if": {
"properties": {
"action": {
"enum": [
"update",
"delete"
]
}
}
},
"then": {
"required": [
"id",
"revision"
]
}
},
{
"if": {
"properties": {
"action": {
"const": "update"
}
}
},
"then": {
"anyOf": [
{
"required": [
"name"
]
},
{
"required": [
"prompt"
]
},
{
"required": [
"timing"
]
},
{
"required": [
"enabled"
]
}
]
}
}
]
}
},
"display": {
"label": "Scheduled tasks",
"locales": {
"zh-CN": "定时任务",
"zh-TW": "定時任務",
"ja": "定期タスク",
"ko": "예약 작업",
"fr": "Tâches planifiées",
"de": "Geplante Aufgaben",
"es": "Tareas programadas",
"pt-BR": "Tarefas agendadas",
"ru": "Запланированные задачи",
"en": "Scheduled tasks"
},
"icon": "reicon:time/calendar",
"input": {
"summary": {
"path": "/name"
}
},
"approval": [
{
"message": {
"label": "Create scheduled task %{name}",
"locales": {
"zh-CN": "创建定时任务 %{name}"
}
},
"values": {
"name": {
"source": "arguments",
"path": "/name"
}
},
"when": {
"all": [
{
"value": {
"source": "arguments",
"path": "/action"
},
"equals": "create"
}
]
}
},
{
"message": {
"label": "Update scheduled task %{name}",
"locales": {
"zh-CN": "更新定时任务 %{name}"
}
},
"values": {
"name": {
"source": "arguments",
"path": "/name"
}
},
"when": {
"all": [
{
"value": {
"source": "arguments",
"path": "/action"
},
"equals": "update"
},
{
"value": {
"source": "arguments",
"path": "/name"
},
"equals": null,
"negate": true
}
]
}
},
{
"message": {
"label": "Update scheduled task %{id}",
"locales": {
"zh-CN": "更新定时任务 %{id}"
}
},
"values": {
"id": {
"source": "arguments",
"path": "/id"
}
},
"when": {
"all": [
{
"value": {
"source": "arguments",
"path": "/action"
},
"equals": "update"
},
{
"value": {
"source": "arguments",
"path": "/name"
},
"equals": null
}
]
}
},
{
"message": {
"label": "Delete scheduled task %{id}",
"locales": {
"zh-CN": "删除定时任务 %{id}"
}
},
"values": {
"id": {
"source": "arguments",
"path": "/id"
}
},
"when": {
"all": [
{
"value": {
"source": "arguments",
"path": "/action"
},
"equals": "delete"
}
]
}
}
]
}
}
],
"desktop": {
"entry": "dev.sailry.platform/desktop/main.js",
"resources": [
"dev.sailry.platform/desktop/main.js",
"dev.sailry.platform/desktop/editor.js",
"dev.sailry.platform/desktop/view.js",
"dev.sailry.platform/desktop/details.js",
"dev.sailry.platform/desktop/schedule.js",
"dev.sailry.platform/desktop/locales.js",
"dev.sailry.platform/host/management.js",
"dev.sailry.platform/host/records.js",
"dev.sailry.platform/host/dispatch.js",
"dev.sailry.platform/host/mutations.js"
],
"navigation_options": {
"pinned": true,
"details": true,
"order": 200
},
"navigation": {
"label": "Scheduled tasks",
"locales": {
"zh-CN": "定时任务"
},
"icon": "reicon:time/calendar"
}
},
"category": "automation",
"tint": "amber"
}
}
}
What else this package ships
These files come with the package and this site does not publish them. They are listed so you know what is there before you install it.
- 12JavaScript files
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- dev.sailry.platformships a directory of files