opencode-cron-job 0.1.4 → 0.1.5

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
@@ -53,6 +53,7 @@ The agent calls the following tools internally — you don't need to use them di
53
53
  | `cron_list` | List all scheduled tasks |
54
54
  | `cron_run` | Run a task immediately |
55
55
  | `cron_delete` | Delete a task |
56
+ | `cron_once` | Schedule a one-shot delay task |
56
57
 
57
58
  ### Task file format
58
59
 
@@ -125,6 +126,7 @@ Agent 内部会调用以下工具来完成,你不需要直接使用:
125
126
  | `cron_list` | 列出所有任务 |
126
127
  | `cron_run` | 立即执行一个任务 |
127
128
  | `cron_delete` | 删除任务 |
129
+ | `cron_once` | 定时一次性延迟任务 |
128
130
 
129
131
  ### 任务文件格式
130
132
 
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: job.prompt }],
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.5",
4
4
  "description": "OpenCode plugin - schedule recurring prompts via markdown files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",