@crewx/cron 0.1.1 → 0.1.3

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/SKILL.md ADDED
@@ -0,0 +1,349 @@
1
+ ---
2
+ name: cron
3
+ description: Cron Scheduler skill for CrewX - Schedule and execute crewx/shell commands automatically using cron expressions.
4
+ version: 1.1.0
5
+ ---
6
+
7
+ # Cron Scheduler Skill
8
+
9
+ > **Phase**: 1 (MVP)
10
+
11
+ Schedule and execute CrewX commands automatically using cron expressions.
12
+
13
+ ## Overview
14
+
15
+ The Cron Scheduler skill allows you to schedule `crewx q` (query), `crewx x` (execute), or raw shell commands to run automatically at specified intervals. It runs as a background daemon that checks schedules every minute and executes matching commands.
16
+
17
+ The daemon is managed by **PM2** (Process Manager 2), providing robust process management with automatic restarts, log management, and cross-platform compatibility.
18
+
19
+ ## Quick Start
20
+
21
+ ```bash
22
+ # Navigate to skill directory
23
+ cd skills/cron
24
+
25
+ # Install dependencies (includes PM2)
26
+ npm install
27
+
28
+ # Add a schedule (daily at 9:00 AM)
29
+ node cron.js add "0 9 * * *" "@crewx_claude_dev Daily code review"
30
+
31
+ # Start the daemon (uses PM2)
32
+ node cron.js start
33
+
34
+ # Check status
35
+ node cron.js status
36
+ ```
37
+
38
+ ## Prerequisites
39
+
40
+ This skill requires **PM2** (Process Manager 2) for daemon management. PM2 is included in the package dependencies and will be installed automatically when you run `npm install`.
41
+
42
+ If you need to install PM2 globally:
43
+ ```bash
44
+ npm install -g pm2
45
+ ```
46
+
47
+ ## Commands
48
+
49
+ ### Schedule Management
50
+
51
+ | Command | Description |
52
+ |---------|-------------|
53
+ | `add <cron> <command>` | Add a new schedule |
54
+ | `list` | List all schedules |
55
+ | `update <id>` | Update a schedule |
56
+ | `remove <id>` | Remove a schedule |
57
+ | `enable <id>` | Enable a schedule |
58
+ | `disable <id>` | Disable a schedule |
59
+ | `info <id>` | Show schedule details |
60
+ | `run <id>` | Run a schedule immediately (testing) |
61
+
62
+ ### Daemon Management
63
+
64
+ | Command | Description |
65
+ |---------|-------------|
66
+ | `start` | Start the cron daemon |
67
+ | `stop` | Stop the cron daemon |
68
+ | `status` | Check daemon status |
69
+
70
+ ## Usage Examples
71
+
72
+ ### Basic Scheduling
73
+
74
+ ```bash
75
+ # Daily code review at 9:00 AM
76
+ node cron.js add "0 9 * * *" "@crewx_claude_dev Daily code review" --name "Daily Review"
77
+
78
+ # Weekly report every Friday at 5:00 PM
79
+ node cron.js add "0 17 * * 5" "@crewx_gemini_dev Generate weekly report" --name "Weekly Report"
80
+
81
+ # Every hour on weekdays
82
+ node cron.js add "0 * * * 1-5" "@claude Check for new issues"
83
+
84
+ # Run a shell command
85
+ node cron.js add "*/5 * * * *" "echo hello >> /tmp/cron.log" --mode command --name "Hello Log"
86
+ ```
87
+
88
+ ### Options
89
+
90
+ ```bash
91
+ node cron.js add "0 9 * * *" "@agent command" \
92
+ --name "My Schedule" # Human-readable name
93
+ --mode query # "query", "execute", or "command" (default: execute)
94
+ --timezone "Asia/Seoul" # IANA timezone
95
+ --dir "/path/to/project" # Working directory
96
+ --timeout 300000 # Timeout in ms (default: 600000 = 10min)
97
+ --allow-concurrent # Allow overlapping executions
98
+ ```
99
+
100
+ ### Managing Schedules
101
+
102
+ ```bash
103
+ # List all schedules
104
+ node cron.js list
105
+
106
+ # Show schedule details
107
+ node cron.js info abc123
108
+
109
+ # Update a schedule (no need to remove and add again!)
110
+ node cron.js update abc123 --cron="0 10 * * *" # Change cron expression
111
+ node cron.js update abc123 --command="@agent new" # Change command
112
+ node cron.js update abc123 --name="New Name" # Change name
113
+ node cron.js update abc123 --cron="30 8 * * *" --name="Morning Task" # Multiple changes
114
+
115
+ # Disable/enable a schedule
116
+ node cron.js disable abc123
117
+ node cron.js enable abc123
118
+
119
+ # Remove a schedule
120
+ node cron.js remove abc123
121
+
122
+ # Test run a schedule immediately
123
+ node cron.js run abc123
124
+ ```
125
+
126
+ ### Update Options
127
+
128
+ ```bash
129
+ node cron.js update <id> \
130
+ --cron "0 9 * * *" # New cron expression
131
+ --command "@agent task" # New command
132
+ --name "New Name" # New name
133
+ --mode query # "query", "execute", or "command"
134
+ --timezone "Asia/Seoul" # IANA timezone
135
+ --dir "/path/to/project" # Working directory
136
+ --timeout 300000 # Timeout in ms
137
+ --allow-concurrent # Allow overlapping executions
138
+ --no-allow-concurrent # Disallow overlapping executions
139
+ ```
140
+
141
+ ### Daemon Control
142
+
143
+ ```bash
144
+ # Start daemon in background (via PM2)
145
+ node cron.js start
146
+
147
+ # Check if daemon is running
148
+ node cron.js status
149
+
150
+ # Stop daemon (via PM2)
151
+ node cron.js stop
152
+ ```
153
+
154
+ The daemon is managed by **PM2**, which provides:
155
+ - Automatic restarts on crashes
156
+ - Log management
157
+ - Process monitoring
158
+ - Cross-platform compatibility
159
+
160
+ ### Auto-Start Behavior
161
+
162
+ User commands like `add`, `list`, `run`, `enable`, `disable`, `update`, and `info` will automatically start the daemon if it is not running:
163
+
164
+ ```
165
+ ⚡ cron 데몬이 꺼져 있어서 자동 시작합니다...
166
+ ```
167
+
168
+ You can also use PM2 commands directly:
169
+ ```bash
170
+ # View PM2 process list
171
+ pm2 list
172
+
173
+ # View daemon logs
174
+ pm2 logs cron-daemon
175
+
176
+ # Monitor daemon
177
+ pm2 monit
178
+
179
+ # Restart daemon
180
+ pm2 restart cron-daemon
181
+ ```
182
+
183
+ ## Cron Expression Format
184
+
185
+ Standard 5-field cron format: `minute hour day month weekday`
186
+
187
+ ```
188
+ ┌───────────── minute (0 - 59)
189
+ │ ┌───────────── hour (0 - 23)
190
+ │ │ ┌───────────── day of month (1 - 31)
191
+ │ │ │ ┌───────────── month (1 - 12)
192
+ │ │ │ │ ┌───────────── day of week (0 - 6, Sunday = 0)
193
+ │ │ │ │ │
194
+ * * * * *
195
+ ```
196
+
197
+ ### Special Characters
198
+
199
+ | Character | Description | Example |
200
+ |-----------|-------------|---------|
201
+ | `*` | Any value | `* * * * *` (every minute) |
202
+ | `*/n` | Every n | `*/5 * * * *` (every 5 minutes) |
203
+ | `a-b` | Range | `0 9-17 * * *` (9 AM to 5 PM) |
204
+ | `a,b,c` | List | `0 9,12,18 * * *` (9 AM, 12 PM, 6 PM) |
205
+
206
+ ### Common Patterns
207
+
208
+ | Expression | Description |
209
+ |------------|-------------|
210
+ | `0 9 * * *` | Every day at 9:00 AM |
211
+ | `0 9 * * 1-5` | Weekdays at 9:00 AM |
212
+ | `0 */2 * * *` | Every 2 hours |
213
+ | `*/30 * * * *` | Every 30 minutes |
214
+ | `0 0 * * 0` | Every Sunday at midnight |
215
+ | `0 0 1 * *` | First day of every month |
216
+
217
+ ## File Structure
218
+
219
+ ```
220
+ skills/cron/
221
+ ├── cron.js # Main CLI + daemon
222
+ ├── ecosystem.config.js # PM2 configuration
223
+ ├── package.json # Dependencies
224
+ ├── SKILL.md # This documentation
225
+ ├── .cron-data.json # Schedule data (auto-created)
226
+ └── .daemon.log # Daemon log file (auto-created)
227
+ ```
228
+
229
+ ## Timezone Support
230
+
231
+ Specify timezone using IANA format:
232
+
233
+ ```bash
234
+ # Schedule for Asia/Seoul timezone
235
+ node cron.js add "0 9 * * *" "@agent task" --timezone "Asia/Seoul"
236
+
237
+ # Schedule for US Pacific time
238
+ node cron.js add "0 9 * * *" "@agent task" --timezone "America/Los_Angeles"
239
+ ```
240
+
241
+ If no timezone is specified, local system time is used.
242
+
243
+ ## Concurrent Execution Prevention
244
+
245
+ By default, a schedule will not start a new execution if the previous one is still running. This prevents overlap when commands take longer than expected.
246
+
247
+ To allow concurrent executions:
248
+
249
+ ```bash
250
+ node cron.js add "* * * * *" "@agent task" --allow-concurrent
251
+ ```
252
+
253
+ ## Cross-Platform Compatibility
254
+
255
+ This skill supports Windows, macOS, and Linux:
256
+
257
+ - **Windows**: Uses `windowsHide: true` to prevent console popups, `taskkill` for process termination
258
+ - **Unix/macOS**: Uses standard SIGTERM signals
259
+
260
+ ## Troubleshooting
261
+
262
+ ### Daemon won't start
263
+
264
+ ```bash
265
+ # Check if already running
266
+ node cron.js status
267
+
268
+ # Or check PM2 directly
269
+ pm2 list
270
+
271
+ # If stale process exists, stop first
272
+ node cron.js stop
273
+ node cron.js start
274
+ ```
275
+
276
+ ### Check daemon logs
277
+
278
+ ```bash
279
+ # View daemon logs via PM2
280
+ pm2 logs cron-daemon
281
+
282
+ # Or view log file directly
283
+ tail -f skills/cron/.daemon.log
284
+
285
+ # View PM2 process info
286
+ pm2 show cron-daemon
287
+ ```
288
+
289
+ ### Schedule not executing
290
+
291
+ 1. Check if daemon is running: `node cron.js status` or `pm2 list`
292
+ 2. Verify schedule is enabled: `node cron.js info <id>`
293
+ 3. Check cron expression is correct
294
+ 4. Test manually: `node cron.js run <id>`
295
+ 5. Check daemon logs: `pm2 logs cron-daemon`
296
+
297
+ ### PM2 not found
298
+
299
+ If you get "pm2 command not found", ensure PM2 is installed:
300
+ ```bash
301
+ npm install # Installs PM2 locally in node_modules
302
+ # Or install globally
303
+ npm install -g pm2
304
+ ```
305
+
306
+ ## Security Note
307
+
308
+ Do not include sensitive information directly in commands. Use environment variables instead:
309
+
310
+ ```bash
311
+ # Bad - API key exposed in schedule
312
+ node cron.js add "0 9 * * *" "@agent API_KEY=secret task"
313
+
314
+ # Good - Use environment variables
315
+ export API_KEY=secret
316
+ node cron.js add "0 9 * * *" "@agent task using env"
317
+ ```
318
+
319
+ ## API Reference
320
+
321
+ ### Schedule Object
322
+
323
+ ```typescript
324
+ interface Schedule {
325
+ id: string; // 6-character unique ID
326
+ cron: string; // Cron expression (5 fields)
327
+ command: string; // CrewX command to execute
328
+ mode: "query" | "execute" | "command"; // Execution mode
329
+ enabled: boolean; // Whether schedule is active
330
+ name?: string; // Human-readable name
331
+ working_directory?: string; // Execution directory
332
+ timezone?: string; // IANA timezone
333
+ timeout_ms?: number; // Timeout (default: 600000)
334
+ allow_concurrent?: boolean; // Allow overlapping runs
335
+ created_at: string; // ISO 8601 timestamp
336
+ updated_at: string; // ISO 8601 timestamp
337
+ last_run?: string; // Last execution time
338
+ next_run?: string; // Next scheduled time
339
+ run_count?: number; // Total execution count
340
+ }
341
+ ```
342
+
343
+ ## Future Enhancements (Phase 2+)
344
+
345
+ - Execution history with detailed logs
346
+ - Integration with CrewX TracingService
347
+ - Web UI for schedule management
348
+ - Notification on failure
349
+ - Retry logic for failed executions
package/dist/cli.js CHANGED
@@ -36,7 +36,6 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
- const commander_1 = require("commander");
40
39
  let PKG_VERSION = 'unknown';
41
40
  try {
42
41
  const _pkgPath = fs.existsSync(path.join(__dirname, 'package.json'))
@@ -61,295 +60,371 @@ function loadTracer() {
61
60
  }
62
61
  return null;
63
62
  }
64
- const rawArgs = process.argv.slice(2);
65
- if (rawArgs[0] === 'help' && rawArgs.length === 1) {
63
+ const engine_1 = require("./src/engine");
64
+ function getOpt(args, long, short) {
65
+ for (let i = 0; i < args.length; i++) {
66
+ const a = args[i];
67
+ if (a === long || (short && a === short)) {
68
+ return args[i + 1];
69
+ }
70
+ if (a.startsWith(long + '=')) {
71
+ return a.slice(long.length + 1);
72
+ }
73
+ if (short && a.startsWith(short + '=')) {
74
+ return a.slice(short.length + 1);
75
+ }
76
+ }
77
+ return undefined;
78
+ }
79
+ function hasFlag(args, long, short) {
80
+ return args.includes(long) || (short ? args.includes(short) : false);
81
+ }
82
+ function showDetailedUsage() {
66
83
  const skillMd = path.join(__dirname, '..', 'SKILL.md');
67
84
  if (fs.existsSync(skillMd)) {
68
85
  process.stdout.write(fs.readFileSync(skillMd, 'utf-8'));
69
- process.exit(0);
86
+ }
87
+ else {
88
+ console.log('No SKILL.md found. Use --help for usage.');
70
89
  }
71
90
  }
72
- const engine_1 = require("./src/engine");
73
- commander_1.program
74
- .name('cron')
75
- .description(`@crewx/cron@${PKG_VERSION} - Schedule and execute crewx commands automatically`)
76
- .version(PKG_VERSION);
77
- commander_1.program
78
- .command('add <cron> <command>')
79
- .description('Add a new schedule')
80
- .option('-n, --name <name>', 'Schedule name')
81
- .option('-m, --mode <mode>', 'Execution mode: query, execute, or command', 'execute')
82
- .option('-t, --timezone <tz>', 'Timezone (IANA format, e.g., Asia/Seoul)')
83
- .option('-d, --dir <directory>', 'Working directory')
84
- .option('--timeout <ms>', 'Timeout in milliseconds', '600000')
85
- .option('--allow-concurrent', 'Allow concurrent executions')
86
- .action((cron, command, options) => {
87
- (0, engine_1.ensureDaemonRunning)();
88
- const schedule = (0, engine_1.addSchedule)(cron, command, {
89
- name: options.name,
90
- mode: options.mode,
91
- timezone: options.timezone,
92
- dir: options.dir,
93
- timeout: options.timeout,
94
- allowConcurrent: options.allowConcurrent,
95
- });
96
- console.log(`Schedule created: ${schedule.id}`);
97
- console.log(`Cron: ${cron} (${(0, engine_1.describeCron)(cron)})`);
98
- console.log(`Command: ${command}`);
99
- console.log(`Mode: ${schedule.mode}`);
100
- if (schedule.timezone)
101
- console.log(`Timezone: ${schedule.timezone}`);
102
- if (schedule.next_run)
103
- console.log(`Next run: ${new Date(schedule.next_run).toLocaleString()}`);
104
- });
105
- commander_1.program
106
- .command('list')
107
- .alias('ls')
108
- .description('List all schedules')
109
- .option('--json', 'Output as JSON')
110
- .action((options) => {
111
- (0, engine_1.ensureDaemonRunning)();
112
- const schedules = (0, engine_1.loadSchedules)();
113
- if (options.json) {
114
- console.log(JSON.stringify(schedules, null, 2));
91
+ function printUsage() {
92
+ console.log(`
93
+ @crewx/cron@${PKG_VERSION} - Cron-based task scheduler for AI agents
94
+
95
+ Usage:
96
+ cron <command> [options]
97
+
98
+ Commands:
99
+ cron add <schedule> <command> Add a new schedule
100
+ cron list List all schedules
101
+ cron remove <id> Remove a schedule
102
+ cron enable <id> Enable a schedule
103
+ cron disable <id> Disable a schedule
104
+ cron update <id> [options] Update a schedule
105
+ cron info <id> Show schedule details
106
+ cron run <id> Run a schedule immediately
107
+ cron start Start the cron daemon
108
+ cron stop Stop the cron daemon
109
+ cron status Check daemon status
110
+ cron usage Show detailed guide
111
+
112
+ Options:
113
+ --version Show version
114
+ --help, -h Show this help
115
+
116
+ Examples:
117
+ cron add "0 9 * * *" "@agent daily report" --name "Morning Report"
118
+ cron list
119
+ cron run <id>
120
+ cron start
121
+
122
+ For detailed usage guide: cron usage
123
+ `);
124
+ }
125
+ const args = process.argv.slice(2);
126
+ const command = args[0];
127
+ if (args.length > 0 && command !== 'daemon') {
128
+ (0, engine_1.logUsage)(args.join(' '));
129
+ }
130
+ const isDaemonForeground = command === 'daemon' && args.includes('--foreground');
131
+ async function runMain() {
132
+ if (hasFlag(args, '--version')) {
133
+ console.log(PKG_VERSION);
115
134
  return;
116
135
  }
117
- if (schedules.length === 0) {
118
- console.log('No schedules found.');
136
+ if (!command || command === 'help' || hasFlag(args, '--help', '-h')) {
137
+ printUsage();
119
138
  return;
120
139
  }
121
- console.log(`\nSchedules (${schedules.length}):\n`);
122
- console.log('| ID | Name | Cron | Status | Command |');
123
- console.log('|--------|----------------|-------------|--------|----------------------------|');
124
- for (const s of schedules) {
125
- const status = s.enabled ? 'ON ' : 'OFF';
126
- const name = (s.name ?? '-').substring(0, 14).padEnd(14);
127
- const cron = s.cron.substring(0, 11).padEnd(11);
128
- const cmd = s.command.substring(0, 26).padEnd(26);
129
- console.log(`| ${s.id} | ${name} | ${cron} | ${status} | ${cmd} |`);
130
- }
131
- console.log('');
132
- });
133
- commander_1.program
134
- .command('remove <id>')
135
- .alias('rm')
136
- .description('Remove a schedule')
137
- .action((id) => {
138
- (0, engine_1.ensureDaemonRunning)();
139
- try {
140
- const removed = (0, engine_1.removeSchedule)(id);
141
- console.log(`Removed schedule: ${id}`);
142
- console.log(`Cron: ${removed.cron}`);
143
- console.log(`Command: ${removed.command}`);
144
- }
145
- catch (e) {
146
- const err = e;
147
- console.error(err.message);
148
- process.exit(1);
149
- }
150
- });
151
- commander_1.program
152
- .command('enable <id>')
153
- .description('Enable a schedule')
154
- .action((id) => {
155
- (0, engine_1.ensureDaemonRunning)();
156
- try {
157
- (0, engine_1.enableSchedule)(id);
158
- console.log(`Enabled schedule: ${id}`);
159
- }
160
- catch (e) {
161
- const err = e;
162
- console.error(err.message);
163
- process.exit(1);
164
- }
165
- });
166
- commander_1.program
167
- .command('disable <id>')
168
- .description('Disable a schedule')
169
- .action((id) => {
170
- (0, engine_1.ensureDaemonRunning)();
171
- try {
172
- (0, engine_1.disableSchedule)(id);
173
- console.log(`Disabled schedule: ${id}`);
174
- }
175
- catch (e) {
176
- const err = e;
177
- console.error(err.message);
178
- process.exit(1);
179
- }
180
- });
181
- commander_1.program
182
- .command('update <id>')
183
- .description('Update a schedule')
184
- .option('-c, --cron <cron>', 'New cron expression')
185
- .option('-C, --command <command>', 'New command')
186
- .option('-n, --name <name>', 'New name')
187
- .option('-m, --mode <mode>', 'Execution mode: query, execute, or command')
188
- .option('-t, --timezone <tz>', 'Timezone (IANA format)')
189
- .option('-d, --dir <directory>', 'Working directory')
190
- .option('--timeout <ms>', 'Timeout in milliseconds')
191
- .option('--allow-concurrent', 'Allow concurrent executions')
192
- .option('--no-allow-concurrent', 'Disallow concurrent executions')
193
- .action((id, options) => {
194
- (0, engine_1.ensureDaemonRunning)();
195
- try {
196
- const updateOpts = {
197
- cron: options.cron,
198
- command: options.command,
199
- name: options.name,
200
- mode: options.mode,
201
- timezone: options.timezone,
202
- working_directory: options.dir,
203
- timeout_ms: options.timeout ? parseInt(options.timeout, 10) : undefined,
204
- allow_concurrent: options.allowConcurrent,
205
- };
206
- const { schedule, changes } = (0, engine_1.updateSchedule)(id, updateOpts);
207
- if (changes.length === 0) {
208
- console.log('No changes specified. Use --cron, --command, --name, etc.');
209
- process.exit(1);
140
+ switch (command) {
141
+ case 'usage': {
142
+ showDetailedUsage();
143
+ break;
210
144
  }
211
- console.log(`Updated schedule: ${id}`);
212
- changes.forEach(c => console.log(` ${c}`));
213
- if (schedule.next_run) {
214
- console.log(`Next run: ${new Date(schedule.next_run).toLocaleString()}`);
145
+ case 'add': {
146
+ const positional = [];
147
+ for (let i = 1; i < args.length; i++) {
148
+ if (args[i].startsWith('-')) {
149
+ if (['--name', '-n', '--mode', '-m', '--timezone', '-t', '--dir', '-d', '--timeout'].includes(args[i])) {
150
+ i++;
151
+ }
152
+ continue;
153
+ }
154
+ positional.push(args[i]);
155
+ }
156
+ if (positional.length < 2) {
157
+ console.error('Usage: cron add <schedule> <command> [--name <name>] [--mode <mode>]');
158
+ process.exit(1);
159
+ }
160
+ const cronExpr = positional[0];
161
+ const cmd = positional.slice(1).join(' ');
162
+ const subArgs = args.slice(1);
163
+ (0, engine_1.ensureDaemonRunning)();
164
+ const schedule = (0, engine_1.addSchedule)(cronExpr, cmd, {
165
+ name: getOpt(subArgs, '--name', '-n'),
166
+ mode: getOpt(subArgs, '--mode', '-m'),
167
+ timezone: getOpt(subArgs, '--timezone', '-t'),
168
+ dir: getOpt(subArgs, '--dir', '-d'),
169
+ timeout: getOpt(subArgs, '--timeout'),
170
+ allowConcurrent: hasFlag(subArgs, '--allow-concurrent'),
171
+ });
172
+ console.log(`Schedule created: ${schedule.id}`);
173
+ console.log(`Cron: ${cronExpr} (${(0, engine_1.describeCron)(cronExpr)})`);
174
+ console.log(`Command: ${cmd}`);
175
+ console.log(`Mode: ${schedule.mode}`);
176
+ if (schedule.timezone)
177
+ console.log(`Timezone: ${schedule.timezone}`);
178
+ if (schedule.next_run)
179
+ console.log(`Next run: ${new Date(schedule.next_run).toLocaleString()}`);
180
+ break;
215
181
  }
216
- }
217
- catch (e) {
218
- const err = e;
219
- console.error(err.message);
220
- process.exit(1);
221
- }
222
- });
223
- commander_1.program
224
- .command('info <id>')
225
- .description('Show detailed information about a schedule')
226
- .option('--json', 'Output as JSON')
227
- .action((id, options) => {
228
- (0, engine_1.ensureDaemonRunning)();
229
- const schedules = (0, engine_1.loadSchedules)();
230
- const schedule = schedules.find(s => s.id === id);
231
- if (!schedule) {
232
- console.error(`Schedule not found: ${id}`);
233
- process.exit(1);
234
- }
235
- if (options.json) {
236
- console.log(JSON.stringify(schedule, null, 2));
237
- return;
238
- }
239
- console.log(`\nSchedule: ${schedule.id}`);
240
- console.log('─'.repeat(40));
241
- console.log(`Name: ${schedule.name ?? '-'}`);
242
- console.log(`Cron: ${schedule.cron} (${(0, engine_1.describeCron)(schedule.cron)})`);
243
- console.log(`Command: ${schedule.command}`);
244
- console.log(`Mode: ${schedule.mode}`);
245
- console.log(`Status: ${schedule.enabled ? 'Enabled' : 'Disabled'}`);
246
- console.log(`Timezone: ${schedule.timezone ?? 'Local'}`);
247
- console.log(`Working Dir: ${schedule.working_directory ?? 'Project root'}`);
248
- console.log(`Timeout: ${schedule.timeout_ms / 1000}s`);
249
- console.log(`Allow Concurrent: ${schedule.allow_concurrent ? 'Yes' : 'No'}`);
250
- console.log('─'.repeat(40));
251
- console.log(`Created: ${new Date(schedule.created_at).toLocaleString()}`);
252
- console.log(`Updated: ${new Date(schedule.updated_at).toLocaleString()}`);
253
- console.log(`Last Run: ${schedule.last_run ? new Date(schedule.last_run).toLocaleString() : 'Never'}`);
254
- console.log(`Next Run: ${schedule.next_run ? new Date(schedule.next_run).toLocaleString() : 'Unknown'}`);
255
- console.log(`Run Count: ${schedule.run_count ?? 0}`);
256
- console.log('');
257
- });
258
- commander_1.program
259
- .command('run <id>')
260
- .description('Run a schedule immediately (for testing)')
261
- .action(async (id) => {
262
- (0, engine_1.ensureDaemonRunning)();
263
- const schedules = (0, engine_1.loadSchedules)();
264
- const schedule = schedules.find(s => s.id === id);
265
- if (!schedule) {
266
- console.error(`Schedule not found: ${id}`);
267
- process.exit(1);
268
- }
269
- console.log(`Running schedule: ${id}`);
270
- const result = await (0, engine_1.executeSchedule)(schedule);
271
- console.log(`Result: ${result.success ? 'Success' : 'Failed'}`);
272
- if (result.error)
273
- console.log(`Error: ${result.error}`);
274
- });
275
- commander_1.program
276
- .command('start')
277
- .description('Start the cron daemon')
278
- .action(() => {
279
- if ((0, engine_1.isDaemonRunning)()) {
280
- const status = (0, engine_1.getDaemonStatus)();
281
- console.error(`Daemon already running (PID: ${status.pid ?? 'unknown'})`);
282
- process.exit(1);
283
- }
284
- try {
285
- const pid = (0, engine_1.startDaemon)();
286
- console.log(`Cron daemon started (PID: ${pid})`);
287
- console.log(`PID file: ${engine_1.DATA_PATHS.PID_FILE}`);
288
- }
289
- catch (e) {
290
- const err = e;
291
- console.error('Failed to start daemon:', err.message);
292
- process.exit(1);
293
- }
294
- });
295
- commander_1.program
296
- .command('stop')
297
- .description('Stop the cron daemon')
298
- .action(() => {
299
- try {
300
- const stopped = (0, engine_1.stopDaemon)();
301
- if (!stopped) {
302
- console.error('Daemon not running');
303
- process.exit(1);
182
+ case 'list':
183
+ case 'ls': {
184
+ const jsonOutput = hasFlag(args, '--json');
185
+ (0, engine_1.ensureDaemonRunning)();
186
+ const schedules = (0, engine_1.loadSchedules)();
187
+ if (jsonOutput) {
188
+ console.log(JSON.stringify(schedules, null, 2));
189
+ return;
190
+ }
191
+ if (schedules.length === 0) {
192
+ console.log('No schedules found.');
193
+ return;
194
+ }
195
+ console.log(`\nSchedules (${schedules.length}):\n`);
196
+ console.log('| ID | Name | Cron | Status | Command |');
197
+ console.log('|--------|----------------|-------------|--------|----------------------------|');
198
+ for (const s of schedules) {
199
+ const status = s.enabled ? 'ON ' : 'OFF';
200
+ const name = (s.name ?? '-').substring(0, 14).padEnd(14);
201
+ const cron = s.cron.substring(0, 11).padEnd(11);
202
+ const cmd = s.command.substring(0, 26).padEnd(26);
203
+ console.log(`| ${s.id} | ${name} | ${cron} | ${status} | ${cmd} |`);
204
+ }
205
+ console.log('');
206
+ break;
304
207
  }
305
- console.log('Cron daemon stopped');
306
- }
307
- catch (e) {
308
- const err = e;
309
- console.error('Failed to stop daemon:', err.message);
310
- process.exit(1);
311
- }
312
- });
313
- commander_1.program
314
- .command('status')
315
- .description('Check daemon status')
316
- .option('--json', 'Output as JSON')
317
- .action((options) => {
318
- const status = (0, engine_1.getDaemonStatus)();
319
- if (options.json) {
320
- console.log(JSON.stringify(status, null, 2));
321
- return;
322
- }
323
- if (status.running && status.pid) {
324
- console.log(`Daemon is running (PID: ${status.pid})`);
325
- if (status.started_at) {
326
- console.log(`Started: ${new Date(status.started_at).toLocaleString()}`);
208
+ case 'remove':
209
+ case 'rm': {
210
+ const id = args[1];
211
+ if (!id) {
212
+ console.error('Usage: cron remove <id>');
213
+ process.exit(1);
214
+ }
215
+ (0, engine_1.ensureDaemonRunning)();
216
+ try {
217
+ const removed = (0, engine_1.removeSchedule)(id);
218
+ console.log(`Removed schedule: ${id}`);
219
+ console.log(`Cron: ${removed.cron}`);
220
+ console.log(`Command: ${removed.command}`);
221
+ }
222
+ catch (e) {
223
+ const err = e;
224
+ console.error(err.message);
225
+ process.exit(1);
226
+ }
227
+ break;
228
+ }
229
+ case 'enable': {
230
+ const id = args[1];
231
+ if (!id) {
232
+ console.error('Usage: cron enable <id>');
233
+ process.exit(1);
234
+ }
235
+ (0, engine_1.ensureDaemonRunning)();
236
+ try {
237
+ (0, engine_1.enableSchedule)(id);
238
+ console.log(`Enabled schedule: ${id}`);
239
+ }
240
+ catch (e) {
241
+ const err = e;
242
+ console.error(err.message);
243
+ process.exit(1);
244
+ }
245
+ break;
246
+ }
247
+ case 'disable': {
248
+ const id = args[1];
249
+ if (!id) {
250
+ console.error('Usage: cron disable <id>');
251
+ process.exit(1);
252
+ }
253
+ (0, engine_1.ensureDaemonRunning)();
254
+ try {
255
+ (0, engine_1.disableSchedule)(id);
256
+ console.log(`Disabled schedule: ${id}`);
257
+ }
258
+ catch (e) {
259
+ const err = e;
260
+ console.error(err.message);
261
+ process.exit(1);
262
+ }
263
+ break;
264
+ }
265
+ case 'update': {
266
+ const id = args[1];
267
+ if (!id) {
268
+ console.error('Usage: cron update <id> [--cron <expr>] [--command <cmd>] [--name <name>]');
269
+ process.exit(1);
270
+ }
271
+ const subArgs = args.slice(1);
272
+ (0, engine_1.ensureDaemonRunning)();
273
+ try {
274
+ const updateOpts = {
275
+ cron: getOpt(subArgs, '--cron', '-c'),
276
+ command: getOpt(subArgs, '--command', '-C'),
277
+ name: getOpt(subArgs, '--name', '-n'),
278
+ mode: getOpt(subArgs, '--mode', '-m'),
279
+ timezone: getOpt(subArgs, '--timezone', '-t'),
280
+ working_directory: getOpt(subArgs, '--dir', '-d'),
281
+ timeout_ms: getOpt(subArgs, '--timeout') ? parseInt(getOpt(subArgs, '--timeout'), 10) : undefined,
282
+ allow_concurrent: hasFlag(subArgs, '--allow-concurrent') ? true : hasFlag(subArgs, '--no-allow-concurrent') ? false : undefined,
283
+ };
284
+ const { schedule, changes } = (0, engine_1.updateSchedule)(id, updateOpts);
285
+ if (changes.length === 0) {
286
+ console.log('No changes specified. Use --cron, --command, --name, etc.');
287
+ process.exit(1);
288
+ }
289
+ console.log(`Updated schedule: ${id}`);
290
+ changes.forEach(c => console.log(` ${c}`));
291
+ if (schedule.next_run) {
292
+ console.log(`Next run: ${new Date(schedule.next_run).toLocaleString()}`);
293
+ }
294
+ }
295
+ catch (e) {
296
+ const err = e;
297
+ console.error(err.message);
298
+ process.exit(1);
299
+ }
300
+ break;
301
+ }
302
+ case 'info': {
303
+ const id = args[1];
304
+ if (!id) {
305
+ console.error('Usage: cron info <id>');
306
+ process.exit(1);
307
+ }
308
+ const jsonOutput = hasFlag(args, '--json');
309
+ (0, engine_1.ensureDaemonRunning)();
310
+ const schedules = (0, engine_1.loadSchedules)();
311
+ const schedule = schedules.find(s => s.id === id);
312
+ if (!schedule) {
313
+ console.error(`Schedule not found: ${id}`);
314
+ process.exit(1);
315
+ }
316
+ if (jsonOutput) {
317
+ console.log(JSON.stringify(schedule, null, 2));
318
+ return;
319
+ }
320
+ console.log(`\nSchedule: ${schedule.id}`);
321
+ console.log('─'.repeat(40));
322
+ console.log(`Name: ${schedule.name ?? '-'}`);
323
+ console.log(`Cron: ${schedule.cron} (${(0, engine_1.describeCron)(schedule.cron)})`);
324
+ console.log(`Command: ${schedule.command}`);
325
+ console.log(`Mode: ${schedule.mode}`);
326
+ console.log(`Status: ${schedule.enabled ? 'Enabled' : 'Disabled'}`);
327
+ console.log(`Timezone: ${schedule.timezone ?? 'Local'}`);
328
+ console.log(`Working Dir: ${schedule.working_directory ?? 'Project root'}`);
329
+ console.log(`Timeout: ${schedule.timeout_ms / 1000}s`);
330
+ console.log(`Allow Concurrent: ${schedule.allow_concurrent ? 'Yes' : 'No'}`);
331
+ console.log('─'.repeat(40));
332
+ console.log(`Created: ${new Date(schedule.created_at).toLocaleString()}`);
333
+ console.log(`Updated: ${new Date(schedule.updated_at).toLocaleString()}`);
334
+ console.log(`Last Run: ${schedule.last_run ? new Date(schedule.last_run).toLocaleString() : 'Never'}`);
335
+ console.log(`Next Run: ${schedule.next_run ? new Date(schedule.next_run).toLocaleString() : 'Unknown'}`);
336
+ console.log(`Run Count: ${schedule.run_count ?? 0}`);
337
+ console.log('');
338
+ break;
339
+ }
340
+ case 'run': {
341
+ const id = args[1];
342
+ if (!id) {
343
+ console.error('Usage: cron run <id>');
344
+ process.exit(1);
345
+ }
346
+ (0, engine_1.ensureDaemonRunning)();
347
+ const schedules = (0, engine_1.loadSchedules)();
348
+ const schedule = schedules.find(s => s.id === id);
349
+ if (!schedule) {
350
+ console.error(`Schedule not found: ${id}`);
351
+ process.exit(1);
352
+ }
353
+ console.log(`Running schedule: ${id}`);
354
+ const result = await (0, engine_1.executeSchedule)(schedule);
355
+ console.log(`Result: ${result.success ? 'Success' : 'Failed'}`);
356
+ if (result.error)
357
+ console.log(`Error: ${result.error}`);
358
+ break;
359
+ }
360
+ case 'start': {
361
+ if ((0, engine_1.isDaemonRunning)()) {
362
+ const status = (0, engine_1.getDaemonStatus)();
363
+ console.error(`Daemon already running (PID: ${status.pid ?? 'unknown'})`);
364
+ process.exit(1);
365
+ }
366
+ try {
367
+ const pid = (0, engine_1.startDaemon)();
368
+ console.log(`Cron daemon started (PID: ${pid})`);
369
+ console.log(`PID file: ${engine_1.DATA_PATHS.PID_FILE}`);
370
+ }
371
+ catch (e) {
372
+ const err = e;
373
+ console.error('Failed to start daemon:', err.message);
374
+ process.exit(1);
375
+ }
376
+ break;
377
+ }
378
+ case 'stop': {
379
+ try {
380
+ const stopped = (0, engine_1.stopDaemon)();
381
+ if (!stopped) {
382
+ console.error('Daemon not running');
383
+ process.exit(1);
384
+ }
385
+ console.log('Cron daemon stopped');
386
+ }
387
+ catch (e) {
388
+ const err = e;
389
+ console.error('Failed to stop daemon:', err.message);
390
+ process.exit(1);
391
+ }
392
+ break;
393
+ }
394
+ case 'status': {
395
+ const jsonOutput = hasFlag(args, '--json');
396
+ const status = (0, engine_1.getDaemonStatus)();
397
+ if (jsonOutput) {
398
+ console.log(JSON.stringify(status, null, 2));
399
+ return;
400
+ }
401
+ if (status.running && status.pid) {
402
+ console.log(`Daemon is running (PID: ${status.pid})`);
403
+ if (status.started_at) {
404
+ console.log(`Started: ${new Date(status.started_at).toLocaleString()}`);
405
+ }
406
+ }
407
+ else {
408
+ console.log('Daemon is not running');
409
+ }
410
+ console.log(`Schedules: ${status.schedules.enabled}/${status.schedules.total} enabled`);
411
+ break;
412
+ }
413
+ case 'daemon': {
414
+ if (hasFlag(args, '--foreground')) {
415
+ (0, engine_1.runDaemonForeground)();
416
+ }
417
+ else {
418
+ console.log('Use "cron start" to start the daemon');
419
+ }
420
+ break;
421
+ }
422
+ default: {
423
+ console.error(`Unknown command: ${command}`);
424
+ printUsage();
425
+ process.exit(1);
327
426
  }
328
427
  }
329
- else {
330
- console.log('Daemon is not running');
331
- }
332
- console.log(`Schedules: ${status.schedules.enabled}/${status.schedules.total} enabled`);
333
- });
334
- commander_1.program
335
- .command('daemon')
336
- .description('Internal daemon command')
337
- .option('--foreground', 'Run in foreground')
338
- .action((options) => {
339
- if (options.foreground) {
340
- (0, engine_1.runDaemonForeground)();
341
- }
342
- else {
343
- console.log('Use "cron start" to start the daemon');
344
- }
345
- });
346
- const args = process.argv.slice(2);
347
- if (args.length > 0 && args[0] !== 'daemon') {
348
- (0, engine_1.logUsage)(args.join(' '));
349
- }
350
- const isDaemonForeground = args[0] === 'daemon' && args.includes('--foreground');
351
- async function runMain() {
352
- await commander_1.program.parseAsync(process.argv);
353
428
  }
354
429
  const tracer = isDaemonForeground ? null : loadTracer();
355
430
  if (tracer) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/cron",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Cron Scheduler for CrewX - Schedule and execute crewx commands automatically",
5
5
  "type": "commonjs",
6
6
  "main": "dist/src/engine.js",
@@ -12,7 +12,7 @@
12
12
  }
13
13
  },
14
14
  "bin": { "cron": "./dist/cli.js" },
15
- "files": ["dist"],
15
+ "files": ["dist", "SKILL.md"],
16
16
  "scripts": {
17
17
  "build": "tsc",
18
18
  "dev": "ts-node cli.ts",
@@ -20,9 +20,7 @@
20
20
  },
21
21
  "keywords": ["crewx", "cron", "scheduler", "automation"],
22
22
  "license": "MIT",
23
- "dependencies": {
24
- "commander": "^12.0.0"
25
- },
23
+ "dependencies": {},
26
24
  "devDependencies": {
27
25
  "@types/node": "^20.0.0",
28
26
  "ts-node": "^10.9.0",