@amaster.ai/pi-task-scheduler 0.1.0-beta.0 → 0.1.0
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 +106 -19
- package/dist/extension.d.ts +10 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +140 -0
- package/dist/extension.js.map +1 -0
- package/dist/index.d.ts +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -69
- package/dist/index.js.map +1 -1
- package/dist/json-file.d.ts +3 -0
- package/dist/json-file.d.ts.map +1 -0
- package/dist/json-file.js +48 -0
- package/dist/json-file.js.map +1 -0
- package/dist/stores.d.ts +24 -0
- package/dist/stores.d.ts.map +1 -0
- package/dist/stores.js +134 -0
- package/dist/stores.js.map +1 -0
- package/dist/tools.d.ts +4 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +168 -0
- package/dist/tools.js.map +1 -0
- package/package.json +46 -3
- package/preview.png +0 -0
package/README.md
CHANGED
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
# @amaster.ai/pi-task-scheduler
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Scheduled task domain types, execution scheduler, and pi agent extension.
|
|
4
6
|
|
|
5
7
|
The package owns schedule parsing, task lifecycle state, process-local timers,
|
|
6
|
-
runner callbacks,
|
|
7
|
-
|
|
8
|
-
without coupling the scheduler to storage details.
|
|
8
|
+
runner callbacks, scheduler hooks, and LLM-callable tools for autonomous task
|
|
9
|
+
management.
|
|
9
10
|
|
|
10
|
-
##
|
|
11
|
+
## Storage
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
The package ships with a built-in file-based storage (default, zero external
|
|
14
|
+
dependencies):
|
|
14
15
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- a `ScheduledTaskRunner` callback for the actual work
|
|
16
|
+
- `JsonScheduledTaskStore` — persists tasks to a JSON file with atomic writes
|
|
17
|
+
- `FileSchedulerLock` — PID-based file lock for single-owner execution
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
For database-backed storage (multi-tenant, Prisma), use
|
|
20
|
+
`@amaster.ai/pi-storage/scheduler` which implements the same interfaces with
|
|
21
|
+
`DbScheduledTaskStore` and `RedisSchedulerLock`.
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
### Default (file storage)
|
|
22
24
|
|
|
23
25
|
```ts
|
|
24
|
-
import { PersistentTaskScheduler } from "@amaster.ai/pi-task-scheduler";
|
|
25
26
|
import {
|
|
26
|
-
|
|
27
|
+
PersistentTaskScheduler,
|
|
27
28
|
JsonScheduledTaskStore,
|
|
28
|
-
|
|
29
|
+
FileSchedulerLock,
|
|
30
|
+
} from "@amaster.ai/pi-task-scheduler";
|
|
29
31
|
|
|
30
32
|
const scheduler = new PersistentTaskScheduler({
|
|
31
33
|
store: new JsonScheduledTaskStore("/var/lib/pi/tasks.json"),
|
|
@@ -33,16 +35,101 @@ const scheduler = new PersistentTaskScheduler({
|
|
|
33
35
|
runner: async (task, run) => {
|
|
34
36
|
await runPrompt(task.prompt, { sessionId: run.sessionId });
|
|
35
37
|
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
await scheduler.start();
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Custom storage
|
|
44
|
+
|
|
45
|
+
Implement `ScheduledTaskStore` and `SchedulerLock` interfaces for any backend
|
|
46
|
+
(database, Redis, etc.):
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { PersistentTaskScheduler } from "@amaster.ai/pi-task-scheduler";
|
|
50
|
+
|
|
51
|
+
const scheduler = new PersistentTaskScheduler({
|
|
52
|
+
store: myCustomStore, // implements ScheduledTaskStore
|
|
53
|
+
lock: myCustomLock, // implements SchedulerLock
|
|
54
|
+
runner: async (task, run) => {
|
|
55
|
+
await runPrompt(task.prompt, { sessionId: run.sessionId });
|
|
40
56
|
},
|
|
41
57
|
});
|
|
42
58
|
|
|
43
59
|
await scheduler.start();
|
|
44
60
|
```
|
|
45
61
|
|
|
62
|
+
## Integration Modes
|
|
63
|
+
|
|
64
|
+
The package provides two integration paths depending on who controls the
|
|
65
|
+
scheduler lifecycle.
|
|
66
|
+
|
|
67
|
+
### Mode 1: Extension auto-discovery (standalone / CLI)
|
|
68
|
+
|
|
69
|
+
When installed as an npm dependency with the `pi.extensions` field in
|
|
70
|
+
`package.json`, the runtime auto-discovers and loads the extension. The
|
|
71
|
+
extension creates its own `PersistentTaskScheduler` with file-based storage
|
|
72
|
+
(`JsonScheduledTaskStore` + `FileSchedulerLock`) — fully self-contained, no
|
|
73
|
+
external infrastructure needed.
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
pi.extensions → session_start → creates file-based scheduler → registers tools + commands
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- **Storage**: `<agentDir>/data/tasks.json` (configurable via `dataDir`)
|
|
80
|
+
- **Lifecycle**: scheduler starts on `session_start`, stops on `session_shutdown`
|
|
81
|
+
- **Commands**: `/pi-scheduler-status`, `/pi-scheduler-list`, `/pi-scheduler-run-now`
|
|
82
|
+
- **LLM Tools**: `scheduler_create`, `scheduler_list`, `scheduler_get`, `scheduler_update`, `scheduler_delete`, `scheduler_run_now`
|
|
83
|
+
|
|
84
|
+
Configuration via settings key `pi-scheduler`:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"pi-scheduler": {
|
|
89
|
+
"dataDir": "/custom/path"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Mode 2: Dependency import (host-controlled)
|
|
95
|
+
|
|
96
|
+
When the host process owns the scheduler instance (e.g. backed by a database),
|
|
97
|
+
it bypasses the extension and registers tools directly using
|
|
98
|
+
`createSchedulerTools`:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import { createSchedulerTools } from "@amaster.ai/pi-task-scheduler/tools";
|
|
102
|
+
import { PersistentTaskScheduler } from "@amaster.ai/pi-task-scheduler";
|
|
103
|
+
|
|
104
|
+
const scheduler = new PersistentTaskScheduler({
|
|
105
|
+
store: myStore,
|
|
106
|
+
lock: myLock,
|
|
107
|
+
runner,
|
|
108
|
+
});
|
|
109
|
+
await scheduler.start();
|
|
110
|
+
|
|
111
|
+
// Returns ToolDefinition[] — register via your tool injection mechanism
|
|
112
|
+
const tools = createSchedulerTools(scheduler);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
In this mode the auto-discovered extension should be filtered out to prevent
|
|
116
|
+
double tool registration. The host manages scheduler start/stop independently.
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
host creates scheduler → createSchedulerTools(scheduler) → tools injected into runtime
|
|
120
|
+
→ extension filtered from auto-discovery
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Choosing a mode
|
|
124
|
+
|
|
125
|
+
| | Extension (Mode 1) | Dependency (Mode 2) |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| Storage | File-based (JSON) | Host-controlled |
|
|
128
|
+
| Scheduler lifecycle | Extension manages | Host manages |
|
|
129
|
+
| Tool registration | Extension registers | Host registers |
|
|
130
|
+
| Multi-tenant | No | Yes |
|
|
131
|
+
| Use case | CLI / standalone agent | Server / custom host |
|
|
132
|
+
|
|
46
133
|
## Scheduling
|
|
47
134
|
|
|
48
135
|
Tasks support three schedule types:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { type ScheduledTaskStore, type SchedulerLock, type TaskScheduler } from './index.js';
|
|
3
|
+
export type PiSchedulerExtensionConfig = {
|
|
4
|
+
dataDir?: string;
|
|
5
|
+
store?: ScheduledTaskStore;
|
|
6
|
+
lock?: SchedulerLock;
|
|
7
|
+
scheduler?: TaskScheduler;
|
|
8
|
+
};
|
|
9
|
+
export default function taskSchedulerExtension(pi: ExtensionAPI, injectedConfig?: PiSchedulerExtensionConfig): void;
|
|
10
|
+
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAOpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AA+BF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,EAAE,EAAE,YAAY,EAChB,cAAc,CAAC,EAAE,0BAA0B,GAC1C,IAAI,CA4FN"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { loadPiSettings, resolveAgentDir } from '@amaster.ai/pi-shared/settings';
|
|
3
|
+
import { PersistentTaskScheduler, } from './index.js';
|
|
4
|
+
import { FileSchedulerLock, JsonScheduledTaskStore } from './stores.js';
|
|
5
|
+
import { createSchedulerTools } from './tools.js';
|
|
6
|
+
const SETTINGS_KEY = 'pi-scheduler';
|
|
7
|
+
const STATUS_KEY = 'pi-scheduler';
|
|
8
|
+
function resolveConfig(raw) {
|
|
9
|
+
const resolved = {
|
|
10
|
+
dataDir: raw?.dataDir?.trim() || path.join(resolveAgentDir(), 'data'),
|
|
11
|
+
};
|
|
12
|
+
if (raw?.store)
|
|
13
|
+
resolved.store = raw.store;
|
|
14
|
+
if (raw?.lock)
|
|
15
|
+
resolved.lock = raw.lock;
|
|
16
|
+
if (raw?.scheduler)
|
|
17
|
+
resolved.scheduler = raw.scheduler;
|
|
18
|
+
return resolved;
|
|
19
|
+
}
|
|
20
|
+
function loadSettings(cwd) {
|
|
21
|
+
try {
|
|
22
|
+
const config = loadPiSettings(SETTINGS_KEY, {
|
|
23
|
+
cwd,
|
|
24
|
+
agentDir: resolveAgentDir(),
|
|
25
|
+
});
|
|
26
|
+
return Object.keys(config).length > 0 ? config : undefined;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export default function taskSchedulerExtension(pi, injectedConfig) {
|
|
33
|
+
let scheduler;
|
|
34
|
+
let ownsScheduler = false;
|
|
35
|
+
pi.on('session_start', async (_event, ctx) => {
|
|
36
|
+
const fileConfig = loadSettings(ctx.cwd);
|
|
37
|
+
const config = resolveConfig({ ...fileConfig, ...injectedConfig });
|
|
38
|
+
try {
|
|
39
|
+
if (config.scheduler) {
|
|
40
|
+
scheduler = config.scheduler;
|
|
41
|
+
ownsScheduler = false;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const store = config.store ?? new JsonScheduledTaskStore(path.join(config.dataDir, 'tasks.json'));
|
|
45
|
+
const lock = config.lock ?? new FileSchedulerLock(path.join(config.dataDir, 'scheduler.lock'));
|
|
46
|
+
const runner = async (task) => {
|
|
47
|
+
pi.sendUserMessage(task.prompt);
|
|
48
|
+
};
|
|
49
|
+
const instance = new PersistentTaskScheduler({ store, lock, runner });
|
|
50
|
+
await instance.start();
|
|
51
|
+
scheduler = instance;
|
|
52
|
+
ownsScheduler = true;
|
|
53
|
+
}
|
|
54
|
+
ctx.ui.setStatus(STATUS_KEY, scheduler.isActive() ? 'scheduler: active' : 'scheduler: idle');
|
|
55
|
+
// Register LLM-callable tools after scheduler is ready
|
|
56
|
+
const tools = createSchedulerTools(scheduler);
|
|
57
|
+
for (const tool of tools) {
|
|
58
|
+
pi.registerTool(tool);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
ctx.ui.setStatus(STATUS_KEY, 'scheduler: unavailable');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
pi.on('session_shutdown', async () => {
|
|
66
|
+
if (ownsScheduler) {
|
|
67
|
+
await scheduler?.stop();
|
|
68
|
+
}
|
|
69
|
+
scheduler = undefined;
|
|
70
|
+
ownsScheduler = false;
|
|
71
|
+
});
|
|
72
|
+
pi.registerCommand('pi-scheduler-status', {
|
|
73
|
+
description: 'Show task scheduler status.',
|
|
74
|
+
handler: async (_args, ctx) => {
|
|
75
|
+
if (!scheduler) {
|
|
76
|
+
ctx.ui.notify('Task scheduler is not running.', 'warning');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const status = await scheduler.status();
|
|
80
|
+
ctx.ui.notify(formatStatus(status), 'info');
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
pi.registerCommand('pi-scheduler-list', {
|
|
84
|
+
description: 'List scheduled tasks.',
|
|
85
|
+
handler: async (_args, ctx) => {
|
|
86
|
+
if (!scheduler) {
|
|
87
|
+
ctx.ui.notify('Task scheduler is not running.', 'warning');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const tasks = await scheduler.list();
|
|
91
|
+
ctx.ui.notify(formatTaskList(tasks), 'info');
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
pi.registerCommand('pi-scheduler-run-now', {
|
|
95
|
+
description: 'Run a scheduled task immediately by ID.',
|
|
96
|
+
handler: async (args, ctx) => {
|
|
97
|
+
const taskId = args.trim();
|
|
98
|
+
if (!taskId) {
|
|
99
|
+
ctx.ui.notify('Usage: /pi-scheduler-run-now <task-id>', 'warning');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!scheduler) {
|
|
103
|
+
ctx.ui.notify('Task scheduler is not running.', 'warning');
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const task = await scheduler.runNow(taskId);
|
|
107
|
+
if (!task) {
|
|
108
|
+
ctx.ui.notify(`Task not found: ${taskId}`, 'error');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
ctx.ui.notify(`Triggered: ${task.name ?? task.id}`, 'info');
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function formatStatus(status) {
|
|
116
|
+
const lines = [
|
|
117
|
+
`Active: ${status.active}`,
|
|
118
|
+
`Tasks: ${status.taskCount}`,
|
|
119
|
+
`Timers: ${status.scheduledTimerCount}`,
|
|
120
|
+
`Crons: ${status.scheduledCronCount}`,
|
|
121
|
+
];
|
|
122
|
+
if (status.runningTaskIds.length > 0) {
|
|
123
|
+
lines.push(`Running: ${status.runningTaskIds.join(', ')}`);
|
|
124
|
+
}
|
|
125
|
+
return lines.join('\n');
|
|
126
|
+
}
|
|
127
|
+
function formatTaskList(tasks) {
|
|
128
|
+
if (tasks.length === 0) {
|
|
129
|
+
return 'No scheduled tasks.';
|
|
130
|
+
}
|
|
131
|
+
return tasks
|
|
132
|
+
.map((t) => {
|
|
133
|
+
const name = t.name ?? t.id.slice(0, 8);
|
|
134
|
+
const status = t.enabled ? (t.lastStatus ?? 'pending') : 'disabled';
|
|
135
|
+
const next = t.nextRunAt ? ` next: ${t.nextRunAt}` : '';
|
|
136
|
+
return `${name} [${t.type}] ${status}${next}`;
|
|
137
|
+
})
|
|
138
|
+
.join('\n');
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EACL,uBAAuB,GAMxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,UAAU,GAAG,cAAc,CAAC;AAgBlC,SAAS,aAAa,CAAC,GAAgC;IACrD,MAAM,QAAQ,GAAmB;QAC/B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC;KACtE,CAAC;IACF,IAAI,GAAG,EAAE,KAAK;QAAE,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAC3C,IAAI,GAAG,EAAE,IAAI;QAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACxC,IAAI,GAAG,EAAE,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAsC,YAAY,EAAE;YAC/E,GAAG;YACH,QAAQ,EAAE,eAAe,EAAE;SAC5B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,MAAqC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,EAAgB,EAChB,cAA2C;IAE3C,IAAI,SAAoC,CAAC;IACzC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7B,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;gBACtF,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAEpF,MAAM,MAAM,GAAwB,KAAK,EAAE,IAAI,EAAE,EAAE;oBACjD,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,SAAS,GAAG,QAAQ,CAAC;gBACrB,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAE7F,uDAAuD;YACvD,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,SAAS,GAAG,SAAS,CAAC;QACtB,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE;QACxC,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;YACxC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,mBAAmB,EAAE;QACtC,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,sBAAsB,EAAE;QACzC,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,MAAoD;IACxE,MAAM,KAAK,GAAG;QACZ,WAAW,MAAM,CAAC,MAAM,EAAE;QAC1B,UAAU,MAAM,CAAC,SAAS,EAAE;QAC5B,WAAW,MAAM,CAAC,mBAAmB,EAAE;QACvC,UAAU,MAAM,CAAC,kBAAkB,EAAE;KACtC,CAAC;IACF,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACpE,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC;IAChD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export type ScheduledTaskType =
|
|
2
|
-
export type ScheduledTaskStatus =
|
|
1
|
+
export type ScheduledTaskType = 'cron' | 'once' | 'interval';
|
|
2
|
+
export type ScheduledTaskStatus = 'success' | 'error' | 'running';
|
|
3
3
|
export type ScheduledTaskModelConfig = {
|
|
4
4
|
provider: string;
|
|
5
5
|
model: string;
|
|
6
|
-
thinkingLevel?:
|
|
6
|
+
thinkingLevel?: 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
7
7
|
authProfileId?: string;
|
|
8
8
|
reasoning?: boolean;
|
|
9
9
|
};
|
|
10
10
|
export type ScheduledTaskRunHistoryEntry = {
|
|
11
11
|
id: string;
|
|
12
|
-
status: ScheduledTaskStatus |
|
|
12
|
+
status: ScheduledTaskStatus | 'paused' | 'resumed';
|
|
13
13
|
createdAt: string;
|
|
14
14
|
sessionId?: string;
|
|
15
15
|
message?: string;
|
|
@@ -44,8 +44,8 @@ export type ScheduledTask = {
|
|
|
44
44
|
lastError?: string;
|
|
45
45
|
runHistory?: ScheduledTaskRunHistoryEntry[];
|
|
46
46
|
};
|
|
47
|
-
export type ScheduledTaskCreateInput = Omit<ScheduledTask,
|
|
48
|
-
export type ScheduledTaskUpdate = Partial<Omit<ScheduledTask,
|
|
47
|
+
export type ScheduledTaskCreateInput = Omit<ScheduledTask, 'id' | 'createdAt' | 'updatedAt' | 'nextRunAt' | 'runCount' | 'lastStatus' | 'lastRunAt' | 'lastError' | 'runHistory'>;
|
|
48
|
+
export type ScheduledTaskUpdate = Partial<Omit<ScheduledTask, 'id' | 'tenantId' | 'userId' | 'workspaceId' | 'createdAt' | 'updatedAt' | 'lastRunAt' | 'lastError' | 'nextRunAt' | 'runCount' | 'lastStatus' | 'runHistory' | 'name' | 'description' | 'workspaceDir'>> & {
|
|
49
49
|
name?: string | undefined;
|
|
50
50
|
description?: string | undefined;
|
|
51
51
|
workspaceDir?: string | undefined;
|
|
@@ -152,15 +152,18 @@ export declare class PersistentTaskScheduler implements TaskScheduler {
|
|
|
152
152
|
export declare function resolveScheduledTaskDefinition(input: {
|
|
153
153
|
type?: ScheduledTaskType;
|
|
154
154
|
schedule?: string;
|
|
155
|
-
}): Pick<ScheduledTask,
|
|
155
|
+
}): Pick<ScheduledTask, 'type' | 'schedule' | 'intervalSeconds'>;
|
|
156
156
|
export declare function normalizeScheduledTask(rawTask: ScheduledTask): ScheduledTask;
|
|
157
157
|
export declare function computeNextRunAt(task: ScheduledTask): string | undefined;
|
|
158
|
-
export declare function createTaskHistoryEntry(status: ScheduledTaskRunHistoryEntry[
|
|
158
|
+
export declare function createTaskHistoryEntry(status: ScheduledTaskRunHistoryEntry['status'], message?: string, options?: {
|
|
159
159
|
createdAt?: string;
|
|
160
160
|
sessionId?: string;
|
|
161
161
|
}): ScheduledTaskRunHistoryEntry;
|
|
162
162
|
export declare function appendTaskHistory(history: ScheduledTaskRunHistoryEntry[] | undefined, entry: ScheduledTaskRunHistoryEntry): ScheduledTaskRunHistoryEntry[];
|
|
163
|
-
export declare function updateTaskHistoryEntry(history: ScheduledTaskRunHistoryEntry[] | undefined, entryId: string, patch: Pick<ScheduledTaskRunHistoryEntry,
|
|
163
|
+
export declare function updateTaskHistoryEntry(history: ScheduledTaskRunHistoryEntry[] | undefined, entryId: string, patch: Pick<ScheduledTaskRunHistoryEntry, 'status'> & Pick<Partial<ScheduledTaskRunHistoryEntry>, 'message'>): ScheduledTaskRunHistoryEntry[];
|
|
164
164
|
export declare function createScheduledTaskRunSessionId(): string;
|
|
165
165
|
export declare function scheduleExpressionForCroner(value: string): string;
|
|
166
|
+
export { default } from './extension.js';
|
|
167
|
+
export { FileSchedulerLock, JsonScheduledTaskStore } from './stores.js';
|
|
168
|
+
export { createSchedulerTools } from './tools.js';
|
|
166
169
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAClE,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,mBAAmB,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,wBAAwB,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,4BAA4B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|