opencode-cron-job 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,28 +3,17 @@
3
3
  [![npm version](https://img.shields.io/npm/v/opencode-cron-job)](https://www.npmjs.com/package/opencode-cron-job)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
5
 
6
- **OpenCode plugin** — schedule recurring prompts via a simple markdown file.
7
- **OpenCode 插件** — 通过简单的 markdown 文件定时执行 prompt。
6
+ **OpenCode plugin** — schedule recurring prompts via a simple markdown file.
8
7
 
9
- > ⚠️ **Alpha** — This is an initial release and has not been extensively tested. Use at your own risk.
10
- > ⚠️ **Alpha** — 此为初版,未经充分测试,请谨慎使用。
8
+ [中文文档](./README.zh-CN.md)
11
9
 
12
- ---
13
-
14
- ## English
15
-
16
- ### Overview
10
+ > ⚠️ **Alpha** — Tested on Windows with terminal, desktop, and ACP server. Use at your own risk.
17
11
 
18
- `opencode-cron-job` is an OpenCode plugin that automatically reads cron tasks from `.cron-job/tasks.md` in your project root and injects prompts into your session on schedule. No MCP server, no HTTP API, no sidecar — runs entirely inside OpenCode.
19
-
20
- ### How it works
12
+ ---
21
13
 
22
- 1. Create `.cron-job/tasks.md` in your project
23
- 2. Write tasks using simple markdown format
24
- 3. OpenCode loads the plugin automatically → reads the file → starts timers
25
- 4. When a timer fires, the prompt is injected into your session
14
+ ## Install
26
15
 
27
- ### Install
16
+ Add to your OpenCode config:
28
17
 
29
18
  ```json
30
19
  {
@@ -32,18 +21,16 @@
32
21
  }
33
22
  ```
34
23
 
35
- OpenCode auto-installs npm plugins on startup.
36
-
37
- ### Usage
24
+ OpenCode auto-installs npm plugins on startup — no manual download needed.
38
25
 
39
- Edit `.cron-job/tasks.md` to define your cron tasks. The plugin automatically loads them on startup.
26
+ ## Usage
40
27
 
41
- To manage scheduled tasks, use natural language with the AI agent:
28
+ Just tell the AI agent what you need in natural language. The agent manages `.cron-job/tasks.md` for you through built-in tools:
42
29
 
30
+ - "Remind me to write a daily report at 9am"
31
+ - "Run a code review every Friday at 3pm"
32
+ - "Check server health every 30 minutes"
43
33
  - "List all my cron jobs"
44
- - "Run the code review task now"
45
- - "Delete the backup task"
46
- - "Reload the cron tasks from the file"
47
34
 
48
35
  The agent calls the following tools internally — you don't need to use them directly:
49
36
 
@@ -53,10 +40,18 @@ The agent calls the following tools internally — you don't need to use them di
53
40
  | `cron_list` | List all scheduled tasks |
54
41
  | `cron_run` | Run a task immediately |
55
42
  | `cron_delete` | Delete a task |
43
+ | `cron_once` | Schedule a one-shot delay task |
56
44
 
57
- ### Task file format
45
+ ## How it works
58
46
 
59
- Create `.cron-job/tasks.md`:
47
+ 1. **Plugin starts** → reads `.cron-job/tasks.md`, parses each `##` task block
48
+ 2. **Schedules** → registers a `node-cron` timer for each valid cron expression
49
+ 3. **Timer fires** → plugin finds the most recent session in the current workspace via API
50
+ 4. **Injects prompt** → sends the prompt directly into the session — no TUI input, no interruption
51
+
52
+ ## Task file format
53
+
54
+ `.cron-job/tasks.md` is auto-managed by the agent, but here's the format for reference:
60
55
 
61
56
  ```markdown
62
57
  # Cron Tasks
@@ -74,87 +69,13 @@ Each section starting with `##` is a task. Supported fields:
74
69
  - `cron` — standard 5-field cron expression (supports 6-field with seconds)
75
70
  - `prompt` — the prompt text to inject when the timer fires
76
71
 
77
- ### Update
72
+ ## Update
78
73
 
79
74
  ```bash
80
75
  # Clear plugin cache and restart OpenCode
81
76
  rm -rf ~/.cache/opencode/node_modules/opencode-cron-job
82
77
  ```
83
78
 
84
- ---
85
-
86
- ## 中文
87
-
88
- ### 概述
89
-
90
- `opencode-cron-job` 是一个 OpenCode 插件,自动读取项目根目录下的 `.cron-job/tasks.md` 文件,按 cron 表达式定时向当前会话注入 prompt。无需 MCP 服务、无需 HTTP API、无需 sidecar 进程,完全在 OpenCode 内部运行。
91
-
92
- ### 工作方式
93
-
94
- 1. 在项目根目录创建 `.cron-job/tasks.md`
95
- 2. 用简单的 markdown 格式编写任务
96
- 3. OpenCode 启动时自动加载插件 → 读取文件 → 启动定时器
97
- 4. 到时间自动向会话注入 prompt
98
-
99
- ### 安装
100
-
101
- ```json
102
- {
103
- "plugin": ["opencode-cron-job@latest"]
104
- }
105
- ```
106
-
107
- OpenCode 启动时自动安装 npm 插件。
108
-
109
- ### 使用方式
110
-
111
- 编辑 `.cron-job/tasks.md` 定义定时任务,插件启动时自动加载。
112
-
113
- 要管理任务,直接对 AI 说自然语言即可,例如:
114
-
115
- - "列出所有周期任务"
116
- - "立即执行一下代码检查"
117
- - "把备份任务删掉"
118
- - "重新加载任务文件"
119
-
120
- Agent 内部会调用以下工具来完成,你不需要直接使用:
121
-
122
- | 工具 | 说明 |
123
- |------|------|
124
- | `cron_create` | 创建周期任务(名称、cron 表达式、prompt) |
125
- | `cron_list` | 列出所有任务 |
126
- | `cron_run` | 立即执行一个任务 |
127
- | `cron_delete` | 删除任务 |
128
-
129
- ### 任务文件格式
130
-
131
- 创建 `.cron-job/tasks.md`:
132
-
133
- ```markdown
134
- # 周期任务
135
-
136
- ## 每日代码检查
137
- - cron: 0 9 * * *
138
- - prompt: 检查所有变更文件并生成报告
139
-
140
- ## 每小时备份
141
- - cron: 0 */1 * * *
142
- - prompt: 备份数据库
143
- ```
144
-
145
- 每个以 `##` 开头的区块为一个任务。支持字段:
146
- - `cron` — 标准 5 段 cron 表达式(也支持含秒的 6 段格式)
147
- - `prompt` — 定时触发时注入的 prompt 内容
148
-
149
- ### 更新
150
-
151
- ```bash
152
- # 清除插件缓存后重启 OpenCode
153
- rm -rf ~/.cache/opencode/node_modules/opencode-cron-job
154
- ```
155
-
156
- ---
157
-
158
- ## License / 许可证
79
+ ## License
159
80
 
160
81
  MIT
@@ -0,0 +1,81 @@
1
+ # opencode-cron-job
2
+
3
+ [![npm version](https://img.shields.io/npm/v/opencode-cron-job)](https://www.npmjs.com/package/opencode-cron-job)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
+
6
+ **OpenCode 插件** — 通过简单的 markdown 文件定时执行 prompt。
7
+
8
+ [English](./README.md)
9
+
10
+ > ⚠️ **Alpha** — 已在 Windows 上经过简单测试,支持终端版、桌面版和 ACP 服务器。
11
+
12
+ ---
13
+
14
+ ## 安装
15
+
16
+ 在 OpenCode 配置中添加:
17
+
18
+ ```json
19
+ {
20
+ "plugin": ["opencode-cron-job@latest"]
21
+ }
22
+ ```
23
+
24
+ OpenCode 启动时自动安装 npm 插件,无需手动下载。
25
+
26
+ ## 使用方式
27
+
28
+ 直接对 AI 说自然语言即可,Agent 会自动维护 `.cron-job/tasks.md`:
29
+
30
+ - "每天早上9点提醒我写日报"
31
+ - "每周五下午3点执行代码审查"
32
+ - "每30分钟检查一次服务器状态"
33
+ - "列出所有周期任务"
34
+
35
+ Agent 内部会调用以下工具来完成,你不需要直接使用:
36
+
37
+ | 工具 | 说明 |
38
+ |------|------|
39
+ | `cron_create` | 创建周期任务(名称、cron 表达式、prompt) |
40
+ | `cron_list` | 列出所有任务 |
41
+ | `cron_run` | 立即执行一个任务 |
42
+ | `cron_delete` | 删除任务 |
43
+ | `cron_once` | 定时一次性延迟任务 |
44
+
45
+ ## 工作原理
46
+
47
+ 1. **插件启动** → 读取 `.cron-job/tasks.md`,解析每个 `##` 任务区块
48
+ 2. **注册定时器** → 对每个有效的 cron 表达式调用 `node-cron` 注册定时任务
49
+ 3. **定时触发** → 到时间后插件通过 API 找到当前工作区最近的会话
50
+ 4. **注入 prompt** → 直接把 prompt 发送到会话中,不经过 TUI 输入,不中断用户操作
51
+
52
+ ## 任务文件格式
53
+
54
+ `.cron-job/tasks.md` 由 Agent 自动维护,参考格式如下:
55
+
56
+ ```markdown
57
+ # 周期任务
58
+
59
+ ## 每日代码检查
60
+ - cron: 0 9 * * *
61
+ - prompt: 检查所有变更文件并生成报告
62
+
63
+ ## 每小时备份
64
+ - cron: 0 */1 * * *
65
+ - prompt: 备份数据库
66
+ ```
67
+
68
+ 每个以 `##` 开头的区块为一个任务。支持字段:
69
+ - `cron` — 标准 5 段 cron 表达式(也支持含秒的 6 段格式)
70
+ - `prompt` — 定时触发时注入的 prompt 内容
71
+
72
+ ## 更新
73
+
74
+ ```bash
75
+ # 清除插件缓存后重启 OpenCode
76
+ rm -rf ~/.cache/opencode/node_modules/opencode-cron-job
77
+ ```
78
+
79
+ ## 许可证
80
+
81
+ MIT
package/dist/index.d.ts CHANGED
@@ -1,5 +1,2 @@
1
1
  import { type Plugin } from "@opencode-ai/plugin";
2
- declare const _default: {
3
- server: Plugin;
4
- };
5
- export default _default;
2
+ export declare const CronPlugin: Plugin;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { readFileSync, existsSync } from "fs";
1
+ import { readFileSync, existsSync, appendFileSync, mkdirSync, writeFileSync } from "fs";
2
2
  import { join } from "path";
3
3
  import cron from "node-cron";
4
4
  import { tool } from "@opencode-ai/plugin";
@@ -19,7 +19,7 @@ function parseDelay(s) {
19
19
  return n * 60000;
20
20
  }
21
21
  function parseTasks(content) {
22
- const tasks = [];
22
+ const result = [];
23
23
  const sections = content.split(/^## /m).filter((s) => s.trim());
24
24
  for (const section of sections) {
25
25
  const lines = section.split("\n");
@@ -31,51 +31,126 @@ function parseTasks(content) {
31
31
  const t = line.trim();
32
32
  if (t.startsWith("- cron:"))
33
33
  schedule = t.slice("- cron:".length).trim();
34
+ else if (t.startsWith("- delay:"))
35
+ schedule = t.slice("- delay:".length).trim();
34
36
  else if (t.startsWith("- prompt:"))
35
37
  prompt = t.slice("- prompt:".length).trim();
36
38
  }
37
39
  if (schedule && prompt)
38
- tasks.push({ name, schedule, prompt });
40
+ result.push({ name, schedule, prompt });
39
41
  }
40
- return tasks;
42
+ return result;
41
43
  }
42
44
  let jobs = [];
43
45
  let nextId = 1;
44
- const _CronPlugin = async ({ client, directory }) => {
46
+ export const CronPlugin = async ({ client, directory }) => {
45
47
  const tasksFile = join(directory, ".cron-job", "tasks.md");
46
- function fire(job) {
47
- client.tui.appendPrompt({ body: { text: job.prompt } })
48
- .then(() => client.tui.submitPrompt())
49
- .catch(() => { });
48
+ async function fire(job) {
49
+ try {
50
+ const res = await client.session.list({ query: { directory } });
51
+ const sessions = res.data;
52
+ if (!sessions || sessions.length === 0)
53
+ return;
54
+ sessions.sort((a, b) => b.time.updated - a.time.updated);
55
+ await client.session.promptAsync({
56
+ path: { id: sessions[0].id },
57
+ body: {
58
+ parts: [{ type: "text", text: `<cron-reminder>${job.prompt}</cron-reminder>` }],
59
+ },
60
+ });
61
+ }
62
+ catch (e) {
63
+ process.stderr.write(`[cron] fire error: ${e.message}\n`);
64
+ }
65
+ }
66
+ function scheduleCron(job) {
67
+ job.task = cron.schedule(job.schedule, () => {
68
+ if (job.cancelled)
69
+ return;
70
+ fire(job);
71
+ });
50
72
  }
51
- function schedule(j) {
52
- if (cron.validate(j.schedule)) {
53
- j.task = cron.schedule(j.schedule, () => fire(j));
73
+ function scheduleDelay(job) {
74
+ const ms = parseDelay(job.schedule);
75
+ if (ms <= 0)
76
+ return;
77
+ job.timer = setTimeout(() => {
78
+ if (job.cancelled)
79
+ return;
80
+ fire(job);
81
+ removeJobFromFile(job.name);
82
+ const idx = jobs.indexOf(job);
83
+ if (idx !== -1)
84
+ jobs.splice(idx, 1);
85
+ }, ms);
86
+ }
87
+ function startJob(item) {
88
+ const job = { ...item, id: String(nextId++), task: null, timer: null, cancelled: false };
89
+ if (cron.validate(job.schedule)) {
90
+ scheduleCron(job);
91
+ }
92
+ else {
93
+ scheduleDelay(job);
54
94
  }
95
+ return job;
55
96
  }
56
- // Load from file on startup
57
- if (existsSync(tasksFile)) {
97
+ function stopJob(job) {
98
+ job.cancelled = true;
99
+ job.task?.stop();
100
+ if (job.timer)
101
+ clearTimeout(job.timer);
102
+ }
103
+ function reloadJobs() {
104
+ for (const j of jobs)
105
+ stopJob(j);
106
+ jobs = [];
107
+ if (!existsSync(tasksFile))
108
+ return;
58
109
  const items = parseTasks(readFileSync(tasksFile, "utf-8"));
59
110
  for (const item of items) {
60
- const job = { ...item, id: String(nextId++), task: null, timer: null };
61
- schedule(job);
62
- jobs.push(job);
111
+ jobs.push(startJob(item));
112
+ }
113
+ }
114
+ function removeJobFromFile(name) {
115
+ try {
116
+ const content = readFileSync(tasksFile, "utf-8");
117
+ const tasks = parseTasks(content);
118
+ const remaining = tasks.filter((t) => t.name !== name);
119
+ const lines = ["# 周期任务"];
120
+ for (const t of remaining) {
121
+ lines.push("");
122
+ lines.push(`## ${t.name}`);
123
+ lines.push(cron.validate(t.schedule) ? `- cron: ${t.schedule}` : `- delay: ${t.schedule}`);
124
+ lines.push(`- prompt: ${t.prompt}`);
125
+ }
126
+ writeFileSync(tasksFile, lines.join("\n") + "\n");
127
+ }
128
+ catch (e) {
129
+ process.stderr.write(`[cron] remove file error: ${e.message}\n`);
63
130
  }
64
131
  }
132
+ // Load from file on startup
133
+ reloadJobs();
65
134
  return {
66
135
  tool: {
67
136
  cron_create: tool({
68
- description: "Create a new cron job. The job fires on schedule by injecting the prompt into the user's session. Jobs are ephemeral (in-memory) and lost when OpenCode restarts. To persist a job permanently, also add it to .cron-job/tasks.md so it auto-loads on startup.",
137
+ description: "Create a new cron job. Writes to .cron-job/tasks.md and schedules it.",
69
138
  args: {
70
139
  name: tool.schema.string().describe("Unique name for this job"),
71
- schedule: tool.schema.string().describe("Cron expression. 5-field format (min hour dom mon dow), e.g. '0 9 * * *' for daily at 9am. Supports 6-field with seconds: '*/30 * * * * *' for every 30s."),
72
- prompt: tool.schema.string().describe("The prompt text that gets injected into the session when the job fires. The AI will receive this as a user message and act on it."),
140
+ schedule: tool.schema.string().describe("Cron expression, e.g. '0 9 * * *'"),
141
+ prompt: tool.schema.string().describe("Prompt to inject when the job fires"),
73
142
  },
74
143
  async execute(args) {
75
- const job = { id: String(nextId++), name: args.name, schedule: args.schedule, prompt: args.prompt, task: null, timer: null };
76
- schedule(job);
77
- jobs.push(job);
78
- return `Created job: ${job.name} (ID: ${job.id}, cron: ${job.schedule})`;
144
+ const entry = `\n## ${args.name}\n- cron: ${args.schedule}\n- prompt: ${args.prompt}\n\n`;
145
+ if (!existsSync(tasksFile)) {
146
+ mkdirSync(join(directory, ".cron-job"), { recursive: true });
147
+ appendFileSync(tasksFile, `# 周期任务\n${entry}`);
148
+ }
149
+ else {
150
+ appendFileSync(tasksFile, entry);
151
+ }
152
+ jobs.push(startJob({ name: args.name, schedule: args.schedule, prompt: args.prompt }));
153
+ return `Created: ${args.name} (${args.schedule})`;
79
154
  },
80
155
  }),
81
156
  cron_list: tool({
@@ -88,9 +163,9 @@ const _CronPlugin = async ({ client, directory }) => {
88
163
  },
89
164
  }),
90
165
  cron_run: tool({
91
- description: "Run a job immediately (fire-and-forget). The job fires once right now regardless of its cron schedule. Useful for testing or one-off execution. The job remains scheduled and will continue firing on its normal cron schedule afterwards.",
166
+ description: "Run a job immediately",
92
167
  args: {
93
- jobId: tool.schema.string().describe("ID of the job to run. Get it from cron_list."),
168
+ jobId: tool.schema.string().describe("Job ID. Get it from cron_list."),
94
169
  },
95
170
  async execute(args) {
96
171
  const job = jobs.find((j) => j.id === args.jobId);
@@ -101,52 +176,46 @@ const _CronPlugin = async ({ client, directory }) => {
101
176
  },
102
177
  }),
103
178
  cron_delete: tool({
104
- description: "Delete a cron job. Stops the timer and removes it from memory. This does not modify .cron-job/tasks.md — if the job was defined there, it will reappear after OpenCode restarts.",
179
+ description: "Delete a cron job from .cron-job/tasks.md",
105
180
  args: {
106
- jobId: tool.schema.string().describe("ID of the job to delete. Get it from cron_list."),
181
+ jobId: tool.schema.string().describe("Job ID. Get it from cron_list."),
107
182
  },
108
183
  async execute(args) {
109
184
  const idx = jobs.findIndex((j) => j.id === args.jobId);
110
185
  if (idx === -1)
111
186
  return `Job ${args.jobId} not found.`;
112
- const [job] = jobs.splice(idx, 1);
113
- job.task?.stop();
114
- if (job.timer)
115
- clearTimeout(job.timer);
187
+ const job = jobs[idx];
188
+ stopJob(job);
189
+ jobs.splice(idx, 1);
190
+ removeJobFromFile(job.name);
116
191
  return `${job.name}: deleted`;
117
192
  },
118
193
  }),
119
194
  cron_once: tool({
120
- description: "Schedule a one-shot prompt after a delay. The job fires once and is automatically removed. Useful for reminders like 'remind me in 30 minutes'.",
195
+ description: "Schedule a one-shot prompt after a delay. Saved to .cron-job/tasks.md for persistence across restarts.",
121
196
  args: {
122
- prompt: tool.schema.string().describe("The prompt text to inject when the timer fires. The AI will receive this as a user message."),
123
- delay: tool.schema.string().describe("Delay before firing. Examples: '5m' (5 minutes), '30s', '2h', '1d'."),
124
- name: tool.schema.string().optional().describe("Optional name for this job (default: auto-generated)"),
197
+ prompt: tool.schema.string().describe("Prompt to inject when timer fires"),
198
+ delay: tool.schema.string().describe("Delay: '5m', '30s', '2h', '1d'"),
199
+ name: tool.schema.string().optional().describe("Optional name"),
125
200
  },
126
201
  async execute(args) {
127
202
  const ms = parseDelay(args.delay);
128
203
  if (ms <= 0)
129
- return `Invalid delay: ${args.delay}. Use format like '5m', '30s', '2h'.`;
204
+ return `Invalid delay: ${args.delay}`;
130
205
  const name = args.name || `reminder-${nextId}`;
131
- const job = {
132
- id: String(nextId++), name, schedule: args.delay, prompt: args.prompt,
133
- task: null, timer: null,
134
- };
135
- job.timer = setTimeout(() => {
136
- fire(job);
137
- // Auto-remove after firing
138
- const idx = jobs.indexOf(job);
139
- if (idx !== -1)
140
- jobs.splice(idx, 1);
141
- }, ms);
142
- jobs.push(job);
206
+ const entry = `\n## ${name}\n- delay: ${args.delay}\n- prompt: ${args.prompt}\n\n`;
207
+ if (!existsSync(tasksFile)) {
208
+ mkdirSync(join(directory, ".cron-job"), { recursive: true });
209
+ appendFileSync(tasksFile, `# 周期任务\n${entry}`);
210
+ }
211
+ else {
212
+ appendFileSync(tasksFile, entry);
213
+ }
214
+ jobs.push(startJob({ name, schedule: args.delay, prompt: args.prompt }));
143
215
  return `Scheduled: ${name} (fires in ${args.delay})`;
144
216
  },
145
217
  }),
146
218
  },
147
219
  };
148
220
  };
149
- export default {
150
- server: _CronPlugin,
151
- };
152
221
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-cron-job",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "OpenCode plugin - schedule recurring prompts via markdown files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",