@aigne/afs-scheduler 1.12.0-beta.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/LICENSE.md +26 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
- package/dist/cron-parser.cjs +202 -0
- package/dist/cron-parser.d.cts +65 -0
- package/dist/cron-parser.d.cts.map +1 -0
- package/dist/cron-parser.d.mts +65 -0
- package/dist/cron-parser.d.mts.map +1 -0
- package/dist/cron-parser.mjs +200 -0
- package/dist/cron-parser.mjs.map +1 -0
- package/dist/do-executor.cjs +59 -0
- package/dist/do-executor.d.cts +30 -0
- package/dist/do-executor.d.cts.map +1 -0
- package/dist/do-executor.d.mts +30 -0
- package/dist/do-executor.d.mts.map +1 -0
- package/dist/do-executor.mjs +59 -0
- package/dist/do-executor.mjs.map +1 -0
- package/dist/do-job-executor.cjs +53 -0
- package/dist/do-job-executor.d.cts +28 -0
- package/dist/do-job-executor.d.cts.map +1 -0
- package/dist/do-job-executor.d.mts +28 -0
- package/dist/do-job-executor.d.mts.map +1 -0
- package/dist/do-job-executor.mjs +53 -0
- package/dist/do-job-executor.mjs.map +1 -0
- package/dist/do-types.d.cts +66 -0
- package/dist/do-types.d.cts.map +1 -0
- package/dist/do-types.d.mts +66 -0
- package/dist/do-types.d.mts.map +1 -0
- package/dist/index.cjs +34 -0
- package/dist/index.d.cts +11 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.mjs +11 -0
- package/dist/job-coordinator.cjs +216 -0
- package/dist/job-coordinator.d.cts +8 -0
- package/dist/job-coordinator.d.cts.map +1 -0
- package/dist/job-coordinator.d.mts +8 -0
- package/dist/job-coordinator.d.mts.map +1 -0
- package/dist/job-coordinator.mjs +216 -0
- package/dist/job-coordinator.mjs.map +1 -0
- package/dist/local-executor.cjs +25 -0
- package/dist/local-executor.d.cts +12 -0
- package/dist/local-executor.d.cts.map +1 -0
- package/dist/local-executor.d.mts +12 -0
- package/dist/local-executor.d.mts.map +1 -0
- package/dist/local-executor.mjs +25 -0
- package/dist/local-executor.mjs.map +1 -0
- package/dist/scheduler-provider.cjs +1236 -0
- package/dist/scheduler-provider.d.cts +95 -0
- package/dist/scheduler-provider.d.cts.map +1 -0
- package/dist/scheduler-provider.d.mts +95 -0
- package/dist/scheduler-provider.d.mts.map +1 -0
- package/dist/scheduler-provider.mjs +1237 -0
- package/dist/scheduler-provider.mjs.map +1 -0
- package/dist/task-runner.cjs +70 -0
- package/dist/task-runner.d.cts +25 -0
- package/dist/task-runner.d.cts.map +1 -0
- package/dist/task-runner.d.mts +25 -0
- package/dist/task-runner.d.mts.map +1 -0
- package/dist/task-runner.mjs +70 -0
- package/dist/task-runner.mjs.map +1 -0
- package/dist/task-store.cjs +186 -0
- package/dist/task-store.d.cts +60 -0
- package/dist/task-store.d.cts.map +1 -0
- package/dist/task-store.d.mts +60 -0
- package/dist/task-store.d.mts.map +1 -0
- package/dist/task-store.mjs +187 -0
- package/dist/task-store.mjs.map +1 -0
- package/dist/types.cjs +185 -0
- package/dist/types.d.cts +384 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +384 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +176 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +59 -0
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import { DONamespace } from "./do-types.mjs";
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
|
|
4
|
+
//#region src/types.d.ts
|
|
5
|
+
interface BudgetEstimate {
|
|
6
|
+
tokens?: number;
|
|
7
|
+
duration?: number;
|
|
8
|
+
calls?: number;
|
|
9
|
+
}
|
|
10
|
+
type TaskStatus = "pending" | "running" | "done" | "failed" | "cancelled" | "budget-blocked" | "timeout";
|
|
11
|
+
interface TaskEntry {
|
|
12
|
+
id: string;
|
|
13
|
+
status: TaskStatus;
|
|
14
|
+
taskPath: string;
|
|
15
|
+
args?: unknown;
|
|
16
|
+
estimate?: BudgetEstimate;
|
|
17
|
+
result?: TaskResult;
|
|
18
|
+
error?: string;
|
|
19
|
+
created: number;
|
|
20
|
+
started?: number;
|
|
21
|
+
ended?: number;
|
|
22
|
+
attempts: number;
|
|
23
|
+
procId?: string;
|
|
24
|
+
/** Caller identity that created the task. Used to authorize lifecycle actions. */
|
|
25
|
+
ownerKey?: string;
|
|
26
|
+
/** ID of the schedule that created this task (for duplicate protection) */
|
|
27
|
+
scheduleId?: string;
|
|
28
|
+
/** Heartbeat deadline — task times out if no heartbeat received by this time (epoch ms) */
|
|
29
|
+
deadline?: number;
|
|
30
|
+
/** Last heartbeat timestamp (epoch ms) */
|
|
31
|
+
lastHeartbeat?: number;
|
|
32
|
+
/** Timeout duration in ms — used for sliding window extension on heartbeat */
|
|
33
|
+
timeout?: number;
|
|
34
|
+
/** ID of the job this task belongs to (map-reduce) */
|
|
35
|
+
jobId?: string;
|
|
36
|
+
/** Batch index within the job (map task) */
|
|
37
|
+
batchIndex?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Claim-based (pull model) task — not auto-executed via the internal
|
|
40
|
+
* executor. An external worker must `claim` it, do the work out-of-band,
|
|
41
|
+
* then `submit` the result. Set when `dispatch` is called with an
|
|
42
|
+
* `assignee` field (see #1067).
|
|
43
|
+
*/
|
|
44
|
+
claimable?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Claim constraint for claimable tasks: "" (or absent) = any worker may
|
|
47
|
+
* claim; a specific DID = only that worker may claim.
|
|
48
|
+
*/
|
|
49
|
+
assignee?: string;
|
|
50
|
+
/** DID of the worker currently holding the claim/lease. */
|
|
51
|
+
claimedBy?: string;
|
|
52
|
+
/** Epoch ms when the task was most recently claimed. */
|
|
53
|
+
claimedAt?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Opaque optimistic-concurrency token for the claim contract (see
|
|
56
|
+
* docs/guides/provider-authoring.md ifMatch). Regenerated whenever
|
|
57
|
+
* claim-relevant state changes (claim/reclaim/submit). Callers must treat
|
|
58
|
+
* this as opaque — never parse or compare beyond equality.
|
|
59
|
+
*/
|
|
60
|
+
version?: string;
|
|
61
|
+
}
|
|
62
|
+
interface TaskResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
data?: unknown;
|
|
65
|
+
error?: string;
|
|
66
|
+
}
|
|
67
|
+
interface ScheduleEntry {
|
|
68
|
+
id: string;
|
|
69
|
+
name: string;
|
|
70
|
+
cron: string;
|
|
71
|
+
taskPath: string;
|
|
72
|
+
args?: unknown;
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
created: number;
|
|
75
|
+
/** Caller identity that created the schedule. Used to authorize lifecycle actions. */
|
|
76
|
+
ownerKey?: string;
|
|
77
|
+
lastRun?: number;
|
|
78
|
+
nextRun?: number;
|
|
79
|
+
}
|
|
80
|
+
interface TaskContext {
|
|
81
|
+
procId?: string;
|
|
82
|
+
}
|
|
83
|
+
interface TaskExecutor {
|
|
84
|
+
run(taskId: string, taskPath: string, args: unknown, context?: TaskContext): Promise<TaskResult>;
|
|
85
|
+
cancel?(taskId: string): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
declare const DispatchArgsSchema: z.ZodObject<{
|
|
88
|
+
task: z.ZodString;
|
|
89
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
90
|
+
estimate: z.ZodOptional<z.ZodObject<{
|
|
91
|
+
tokens: z.ZodOptional<z.ZodNumber>;
|
|
92
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
calls: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
}, z.core.$strip>>;
|
|
95
|
+
proc: z.ZodOptional<z.ZodObject<{
|
|
96
|
+
type: z.ZodEnum<{
|
|
97
|
+
realm: "realm";
|
|
98
|
+
blocklet: "blocklet";
|
|
99
|
+
"agent-run": "agent-run";
|
|
100
|
+
"ash-script": "ash-script";
|
|
101
|
+
resource: "resource";
|
|
102
|
+
}>;
|
|
103
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
104
|
+
appId: z.ZodOptional<z.ZodString>;
|
|
105
|
+
budget: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
106
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
}, z.core.$strip>>;
|
|
108
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
type DispatchArgs = z.infer<typeof DispatchArgsSchema>;
|
|
111
|
+
declare const CancelArgsSchema: z.ZodObject<{
|
|
112
|
+
taskId: z.ZodString;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
type CancelArgs = z.infer<typeof CancelArgsSchema>;
|
|
115
|
+
declare const RetryArgsSchema: z.ZodObject<{
|
|
116
|
+
taskId: z.ZodString;
|
|
117
|
+
}, z.core.$strip>;
|
|
118
|
+
type RetryArgs = z.infer<typeof RetryArgsSchema>;
|
|
119
|
+
declare const ScheduleArgsSchema: z.ZodObject<{
|
|
120
|
+
name: z.ZodString;
|
|
121
|
+
cron: z.ZodString;
|
|
122
|
+
task: z.ZodString;
|
|
123
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
124
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
type ScheduleArgs = z.infer<typeof ScheduleArgsSchema>;
|
|
127
|
+
declare const UnscheduleArgsSchema: z.ZodObject<{
|
|
128
|
+
scheduleId: z.ZodOptional<z.ZodString>;
|
|
129
|
+
name: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
type UnscheduleArgs = z.infer<typeof UnscheduleArgsSchema>;
|
|
132
|
+
declare const HeartbeatArgsSchema: z.ZodObject<{
|
|
133
|
+
taskId: z.ZodString;
|
|
134
|
+
progress: z.ZodOptional<z.ZodUnknown>;
|
|
135
|
+
}, z.core.$strip>;
|
|
136
|
+
type HeartbeatArgs = z.infer<typeof HeartbeatArgsSchema>;
|
|
137
|
+
declare const ClaimArgsSchema: z.ZodObject<{
|
|
138
|
+
taskId: z.ZodString;
|
|
139
|
+
workerId: z.ZodString;
|
|
140
|
+
leaseDuration: z.ZodOptional<z.ZodNumber>;
|
|
141
|
+
ifMatch: z.ZodOptional<z.ZodString>;
|
|
142
|
+
}, z.core.$strip>;
|
|
143
|
+
type ClaimArgs = z.infer<typeof ClaimArgsSchema>;
|
|
144
|
+
declare const SubmitArgsSchema: z.ZodObject<{
|
|
145
|
+
taskId: z.ZodString;
|
|
146
|
+
workerId: z.ZodString;
|
|
147
|
+
success: z.ZodOptional<z.ZodBoolean>;
|
|
148
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
149
|
+
artifacts: z.ZodOptional<z.ZodUnknown>;
|
|
150
|
+
verifyTask: z.ZodOptional<z.ZodString>;
|
|
151
|
+
verifyArgs: z.ZodOptional<z.ZodUnknown>;
|
|
152
|
+
}, z.core.$strip>;
|
|
153
|
+
type SubmitArgs = z.infer<typeof SubmitArgsSchema>;
|
|
154
|
+
interface TickResult {
|
|
155
|
+
dispatched: number;
|
|
156
|
+
timedOut: number;
|
|
157
|
+
}
|
|
158
|
+
type JobStatus = "pending" | "mapping" | "reducing" | "done" | "failed" | "cancelled";
|
|
159
|
+
interface JobProgress {
|
|
160
|
+
pending: number;
|
|
161
|
+
running: number;
|
|
162
|
+
done: number;
|
|
163
|
+
failed: number;
|
|
164
|
+
}
|
|
165
|
+
interface JobEntry {
|
|
166
|
+
id: string;
|
|
167
|
+
name?: string;
|
|
168
|
+
status: JobStatus;
|
|
169
|
+
mapTask: string;
|
|
170
|
+
reduceTask?: string;
|
|
171
|
+
args?: unknown;
|
|
172
|
+
totalItems: number;
|
|
173
|
+
batchSize: number;
|
|
174
|
+
concurrency: number;
|
|
175
|
+
timeout?: number;
|
|
176
|
+
totalBatches: number;
|
|
177
|
+
progress: JobProgress;
|
|
178
|
+
/** Map task IDs, indexed by batchIndex */
|
|
179
|
+
mapTaskIds: string[];
|
|
180
|
+
reduceTaskId?: string;
|
|
181
|
+
/** Per-batch map results (null = failed or pending) */
|
|
182
|
+
mapResults: (unknown | null)[];
|
|
183
|
+
/** Final result: reduce output (if reduceTask) or mapResults */
|
|
184
|
+
result?: unknown;
|
|
185
|
+
error?: string;
|
|
186
|
+
created: number;
|
|
187
|
+
started?: number;
|
|
188
|
+
ended?: number;
|
|
189
|
+
}
|
|
190
|
+
declare const SubmitJobArgsSchema: z.ZodObject<{
|
|
191
|
+
name: z.ZodOptional<z.ZodString>;
|
|
192
|
+
mapTask: z.ZodString;
|
|
193
|
+
reduceTask: z.ZodOptional<z.ZodString>;
|
|
194
|
+
totalItems: z.ZodNumber;
|
|
195
|
+
batchSize: z.ZodOptional<z.ZodNumber>;
|
|
196
|
+
concurrency: z.ZodOptional<z.ZodNumber>;
|
|
197
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
198
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
199
|
+
}, z.core.$strip>;
|
|
200
|
+
type SubmitJobArgs = z.infer<typeof SubmitJobArgsSchema>;
|
|
201
|
+
declare const CancelJobArgsSchema: z.ZodObject<{
|
|
202
|
+
jobId: z.ZodString;
|
|
203
|
+
}, z.core.$strip>;
|
|
204
|
+
type CancelJobArgs = z.infer<typeof CancelJobArgsSchema>;
|
|
205
|
+
interface SchedulerSnapshot {
|
|
206
|
+
version: 1 | 2 | 3;
|
|
207
|
+
tasks: Record<string, TaskEntry>;
|
|
208
|
+
history: TaskEntry[];
|
|
209
|
+
/** v2+: cron schedules. Missing in v1 snapshots → treated as empty. */
|
|
210
|
+
schedules?: ScheduleEntry[];
|
|
211
|
+
/** v3+: map-reduce jobs. Missing in v1/v2 snapshots → treated as empty. */
|
|
212
|
+
jobs?: JobEntry[];
|
|
213
|
+
}
|
|
214
|
+
declare const SchedulerSnapshotSchema: z.ZodObject<{
|
|
215
|
+
version: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
|
|
216
|
+
tasks: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
217
|
+
id: z.ZodString;
|
|
218
|
+
status: z.ZodEnum<{
|
|
219
|
+
timeout: "timeout";
|
|
220
|
+
pending: "pending";
|
|
221
|
+
running: "running";
|
|
222
|
+
done: "done";
|
|
223
|
+
failed: "failed";
|
|
224
|
+
cancelled: "cancelled";
|
|
225
|
+
"budget-blocked": "budget-blocked";
|
|
226
|
+
}>;
|
|
227
|
+
taskPath: z.ZodString;
|
|
228
|
+
created: z.ZodNumber;
|
|
229
|
+
attempts: z.ZodNumber;
|
|
230
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
231
|
+
estimate: z.ZodOptional<z.ZodObject<{
|
|
232
|
+
tokens: z.ZodOptional<z.ZodNumber>;
|
|
233
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
234
|
+
calls: z.ZodOptional<z.ZodNumber>;
|
|
235
|
+
}, z.core.$strip>>;
|
|
236
|
+
result: z.ZodOptional<z.ZodObject<{
|
|
237
|
+
success: z.ZodBoolean;
|
|
238
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
239
|
+
error: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, z.core.$strip>>;
|
|
241
|
+
error: z.ZodOptional<z.ZodString>;
|
|
242
|
+
started: z.ZodOptional<z.ZodNumber>;
|
|
243
|
+
ended: z.ZodOptional<z.ZodNumber>;
|
|
244
|
+
procId: z.ZodOptional<z.ZodString>;
|
|
245
|
+
ownerKey: z.ZodOptional<z.ZodString>;
|
|
246
|
+
scheduleId: z.ZodOptional<z.ZodString>;
|
|
247
|
+
deadline: z.ZodOptional<z.ZodNumber>;
|
|
248
|
+
lastHeartbeat: z.ZodOptional<z.ZodNumber>;
|
|
249
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
250
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
251
|
+
batchIndex: z.ZodOptional<z.ZodNumber>;
|
|
252
|
+
claimable: z.ZodOptional<z.ZodBoolean>;
|
|
253
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
254
|
+
claimedBy: z.ZodOptional<z.ZodString>;
|
|
255
|
+
claimedAt: z.ZodOptional<z.ZodNumber>;
|
|
256
|
+
version: z.ZodOptional<z.ZodString>;
|
|
257
|
+
}, z.core.$strip>>;
|
|
258
|
+
history: z.ZodArray<z.ZodObject<{
|
|
259
|
+
id: z.ZodString;
|
|
260
|
+
status: z.ZodEnum<{
|
|
261
|
+
timeout: "timeout";
|
|
262
|
+
pending: "pending";
|
|
263
|
+
running: "running";
|
|
264
|
+
done: "done";
|
|
265
|
+
failed: "failed";
|
|
266
|
+
cancelled: "cancelled";
|
|
267
|
+
"budget-blocked": "budget-blocked";
|
|
268
|
+
}>;
|
|
269
|
+
taskPath: z.ZodString;
|
|
270
|
+
created: z.ZodNumber;
|
|
271
|
+
attempts: z.ZodNumber;
|
|
272
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
273
|
+
estimate: z.ZodOptional<z.ZodObject<{
|
|
274
|
+
tokens: z.ZodOptional<z.ZodNumber>;
|
|
275
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
276
|
+
calls: z.ZodOptional<z.ZodNumber>;
|
|
277
|
+
}, z.core.$strip>>;
|
|
278
|
+
result: z.ZodOptional<z.ZodObject<{
|
|
279
|
+
success: z.ZodBoolean;
|
|
280
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
281
|
+
error: z.ZodOptional<z.ZodString>;
|
|
282
|
+
}, z.core.$strip>>;
|
|
283
|
+
error: z.ZodOptional<z.ZodString>;
|
|
284
|
+
started: z.ZodOptional<z.ZodNumber>;
|
|
285
|
+
ended: z.ZodOptional<z.ZodNumber>;
|
|
286
|
+
procId: z.ZodOptional<z.ZodString>;
|
|
287
|
+
ownerKey: z.ZodOptional<z.ZodString>;
|
|
288
|
+
scheduleId: z.ZodOptional<z.ZodString>;
|
|
289
|
+
deadline: z.ZodOptional<z.ZodNumber>;
|
|
290
|
+
lastHeartbeat: z.ZodOptional<z.ZodNumber>;
|
|
291
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
292
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
293
|
+
batchIndex: z.ZodOptional<z.ZodNumber>;
|
|
294
|
+
claimable: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
296
|
+
claimedBy: z.ZodOptional<z.ZodString>;
|
|
297
|
+
claimedAt: z.ZodOptional<z.ZodNumber>;
|
|
298
|
+
version: z.ZodOptional<z.ZodString>;
|
|
299
|
+
}, z.core.$strip>>;
|
|
300
|
+
schedules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
301
|
+
id: z.ZodString;
|
|
302
|
+
name: z.ZodString;
|
|
303
|
+
cron: z.ZodString;
|
|
304
|
+
taskPath: z.ZodString;
|
|
305
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
306
|
+
enabled: z.ZodBoolean;
|
|
307
|
+
created: z.ZodNumber;
|
|
308
|
+
ownerKey: z.ZodOptional<z.ZodString>;
|
|
309
|
+
lastRun: z.ZodOptional<z.ZodNumber>;
|
|
310
|
+
nextRun: z.ZodOptional<z.ZodNumber>;
|
|
311
|
+
}, z.core.$strip>>>;
|
|
312
|
+
jobs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
313
|
+
id: z.ZodString;
|
|
314
|
+
name: z.ZodOptional<z.ZodString>;
|
|
315
|
+
status: z.ZodEnum<{
|
|
316
|
+
pending: "pending";
|
|
317
|
+
done: "done";
|
|
318
|
+
failed: "failed";
|
|
319
|
+
cancelled: "cancelled";
|
|
320
|
+
mapping: "mapping";
|
|
321
|
+
reducing: "reducing";
|
|
322
|
+
}>;
|
|
323
|
+
mapTask: z.ZodString;
|
|
324
|
+
reduceTask: z.ZodOptional<z.ZodString>;
|
|
325
|
+
args: z.ZodOptional<z.ZodUnknown>;
|
|
326
|
+
totalItems: z.ZodNumber;
|
|
327
|
+
batchSize: z.ZodNumber;
|
|
328
|
+
concurrency: z.ZodNumber;
|
|
329
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
330
|
+
totalBatches: z.ZodNumber;
|
|
331
|
+
progress: z.ZodObject<{
|
|
332
|
+
pending: z.ZodNumber;
|
|
333
|
+
running: z.ZodNumber;
|
|
334
|
+
done: z.ZodNumber;
|
|
335
|
+
failed: z.ZodNumber;
|
|
336
|
+
}, z.core.$strip>;
|
|
337
|
+
mapTaskIds: z.ZodArray<z.ZodString>;
|
|
338
|
+
reduceTaskId: z.ZodOptional<z.ZodString>;
|
|
339
|
+
mapResults: z.ZodArray<z.ZodUnknown>;
|
|
340
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
341
|
+
error: z.ZodOptional<z.ZodString>;
|
|
342
|
+
created: z.ZodNumber;
|
|
343
|
+
started: z.ZodOptional<z.ZodNumber>;
|
|
344
|
+
ended: z.ZodOptional<z.ZodNumber>;
|
|
345
|
+
}, z.core.$strip>>>;
|
|
346
|
+
}, z.core.$strip>;
|
|
347
|
+
interface SchedulerProviderOptions {
|
|
348
|
+
name?: string;
|
|
349
|
+
description?: string;
|
|
350
|
+
executor?: TaskExecutor;
|
|
351
|
+
maxHistory?: number;
|
|
352
|
+
storagePath?: string;
|
|
353
|
+
/** AFS path where the proc provider is mounted. Default: "/proc" */
|
|
354
|
+
procPath?: string;
|
|
355
|
+
/** TTL for budget-blocked tasks in ms. Stale budget-blocked tasks are evicted on restore. Default: 86400000 (24h). Set to 0 to disable. */
|
|
356
|
+
budgetBlockedTTL?: number;
|
|
357
|
+
/** Timeout for cron/scheduled tasks in ms. Default: 0 (disabled). Runtimes with strict execution caps should set this explicitly. */
|
|
358
|
+
scheduledTaskTimeoutMs?: number;
|
|
359
|
+
/** Default lease duration (ms) for claim-based tasks when `claim` omits `leaseDuration`. Default: 300000 (5 min). */
|
|
360
|
+
defaultLeaseDuration?: number;
|
|
361
|
+
/**
|
|
362
|
+
* Default AFS task path for the verification agent task enqueued by
|
|
363
|
+
* `submit` when the caller omits `verifyTask`. No default — if neither is
|
|
364
|
+
* set, `submit` rejects with VALIDATION_ERROR (verification must never be
|
|
365
|
+
* silently skipped, per #777's agent-driven-verification decision).
|
|
366
|
+
*/
|
|
367
|
+
verifyTaskPath?: string;
|
|
368
|
+
/**
|
|
369
|
+
* Hook called with each background task promise.
|
|
370
|
+
* In Cloudflare Workers, pass `ctx.waitUntil` to keep the isolate alive
|
|
371
|
+
* while fire-and-forget tasks complete.
|
|
372
|
+
*/
|
|
373
|
+
waitUntil?: (promise: Promise<unknown>) => void;
|
|
374
|
+
/**
|
|
375
|
+
* DONamespace for Coordinator DOs.
|
|
376
|
+
* When set, submit-job and cancel-job delegate to Coordinator DOs
|
|
377
|
+
* instead of using in-memory coordination. Each job gets its own DO
|
|
378
|
+
* instance that manages wave dispatch via alarm chaining.
|
|
379
|
+
*/
|
|
380
|
+
coordinatorNamespace?: DONamespace;
|
|
381
|
+
}
|
|
382
|
+
//#endregion
|
|
383
|
+
export { BudgetEstimate, CancelArgs, CancelArgsSchema, CancelJobArgs, CancelJobArgsSchema, ClaimArgs, ClaimArgsSchema, DispatchArgs, DispatchArgsSchema, HeartbeatArgs, HeartbeatArgsSchema, JobEntry, JobProgress, JobStatus, RetryArgs, RetryArgsSchema, ScheduleArgs, ScheduleArgsSchema, ScheduleEntry, SchedulerProviderOptions, SchedulerSnapshot, SchedulerSnapshotSchema, SubmitArgs, SubmitArgsSchema, SubmitJobArgs, SubmitJobArgsSchema, TaskContext, TaskEntry, TaskExecutor, TaskResult, TaskStatus, TickResult, UnscheduleArgs, UnscheduleArgsSchema };
|
|
384
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|
package/dist/types.mjs
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
|
|
3
|
+
//#region src/types.ts
|
|
4
|
+
const DispatchArgsSchema = z.object({
|
|
5
|
+
task: z.string().min(1),
|
|
6
|
+
args: z.unknown().optional(),
|
|
7
|
+
estimate: z.object({
|
|
8
|
+
tokens: z.number().int().nonnegative().optional(),
|
|
9
|
+
duration: z.number().int().nonnegative().optional(),
|
|
10
|
+
calls: z.number().int().nonnegative().optional()
|
|
11
|
+
}).optional(),
|
|
12
|
+
proc: z.object({
|
|
13
|
+
type: z.enum([
|
|
14
|
+
"realm",
|
|
15
|
+
"blocklet",
|
|
16
|
+
"agent-run",
|
|
17
|
+
"ash-script",
|
|
18
|
+
"resource"
|
|
19
|
+
]),
|
|
20
|
+
parentId: z.string().optional(),
|
|
21
|
+
appId: z.string().optional(),
|
|
22
|
+
budget: z.record(z.string(), z.number().positive()).optional(),
|
|
23
|
+
timeout: z.number().int().positive().optional()
|
|
24
|
+
}).optional(),
|
|
25
|
+
assignee: z.string().optional()
|
|
26
|
+
});
|
|
27
|
+
const CancelArgsSchema = z.object({ taskId: z.string().min(1) });
|
|
28
|
+
const RetryArgsSchema = z.object({ taskId: z.string().min(1) });
|
|
29
|
+
const ScheduleArgsSchema = z.object({
|
|
30
|
+
name: z.string().min(1),
|
|
31
|
+
cron: z.string().min(1),
|
|
32
|
+
task: z.string().min(1),
|
|
33
|
+
args: z.unknown().optional(),
|
|
34
|
+
enabled: z.boolean().optional()
|
|
35
|
+
});
|
|
36
|
+
const UnscheduleArgsSchema = z.object({
|
|
37
|
+
scheduleId: z.string().min(1).optional(),
|
|
38
|
+
name: z.string().min(1).optional()
|
|
39
|
+
});
|
|
40
|
+
const HeartbeatArgsSchema = z.object({
|
|
41
|
+
taskId: z.string().min(1),
|
|
42
|
+
progress: z.unknown().optional()
|
|
43
|
+
});
|
|
44
|
+
const ClaimArgsSchema = z.object({
|
|
45
|
+
taskId: z.string().min(1),
|
|
46
|
+
workerId: z.string().min(1),
|
|
47
|
+
leaseDuration: z.number().int().positive().optional(),
|
|
48
|
+
ifMatch: z.string().optional()
|
|
49
|
+
});
|
|
50
|
+
const SubmitArgsSchema = z.object({
|
|
51
|
+
taskId: z.string().min(1),
|
|
52
|
+
workerId: z.string().min(1),
|
|
53
|
+
success: z.boolean().optional(),
|
|
54
|
+
result: z.unknown().optional(),
|
|
55
|
+
artifacts: z.unknown().optional(),
|
|
56
|
+
verifyTask: z.string().min(1).optional(),
|
|
57
|
+
verifyArgs: z.unknown().optional()
|
|
58
|
+
});
|
|
59
|
+
const SubmitJobArgsSchema = z.object({
|
|
60
|
+
name: z.string().optional(),
|
|
61
|
+
mapTask: z.string().min(1),
|
|
62
|
+
reduceTask: z.string().min(1).optional(),
|
|
63
|
+
totalItems: z.number().int().positive(),
|
|
64
|
+
batchSize: z.number().int().positive().optional(),
|
|
65
|
+
concurrency: z.number().int().positive().optional(),
|
|
66
|
+
args: z.unknown().optional(),
|
|
67
|
+
timeout: z.number().int().positive().optional()
|
|
68
|
+
});
|
|
69
|
+
const CancelJobArgsSchema = z.object({ jobId: z.string().min(1) });
|
|
70
|
+
/** Zod schema for validating restored snapshots */
|
|
71
|
+
const TaskResultSchema = z.object({
|
|
72
|
+
success: z.boolean(),
|
|
73
|
+
data: z.unknown().optional(),
|
|
74
|
+
error: z.string().optional()
|
|
75
|
+
});
|
|
76
|
+
const BudgetEstimateSchema = z.object({
|
|
77
|
+
tokens: z.number().nonnegative().optional(),
|
|
78
|
+
duration: z.number().nonnegative().optional(),
|
|
79
|
+
calls: z.number().nonnegative().optional()
|
|
80
|
+
});
|
|
81
|
+
const TaskEntrySchema = z.object({
|
|
82
|
+
id: z.string(),
|
|
83
|
+
status: z.enum([
|
|
84
|
+
"pending",
|
|
85
|
+
"running",
|
|
86
|
+
"done",
|
|
87
|
+
"failed",
|
|
88
|
+
"cancelled",
|
|
89
|
+
"budget-blocked",
|
|
90
|
+
"timeout"
|
|
91
|
+
]),
|
|
92
|
+
taskPath: z.string(),
|
|
93
|
+
created: z.number().nonnegative(),
|
|
94
|
+
attempts: z.number().nonnegative(),
|
|
95
|
+
args: z.unknown().optional(),
|
|
96
|
+
estimate: BudgetEstimateSchema.optional(),
|
|
97
|
+
result: TaskResultSchema.optional(),
|
|
98
|
+
error: z.string().optional(),
|
|
99
|
+
started: z.number().nonnegative().optional(),
|
|
100
|
+
ended: z.number().nonnegative().optional(),
|
|
101
|
+
procId: z.string().optional(),
|
|
102
|
+
ownerKey: z.string().optional(),
|
|
103
|
+
scheduleId: z.string().optional(),
|
|
104
|
+
deadline: z.number().nonnegative().optional(),
|
|
105
|
+
lastHeartbeat: z.number().nonnegative().optional(),
|
|
106
|
+
timeout: z.number().nonnegative().optional(),
|
|
107
|
+
jobId: z.string().optional(),
|
|
108
|
+
batchIndex: z.number().int().nonnegative().optional(),
|
|
109
|
+
claimable: z.boolean().optional(),
|
|
110
|
+
assignee: z.string().optional(),
|
|
111
|
+
claimedBy: z.string().optional(),
|
|
112
|
+
claimedAt: z.number().nonnegative().optional(),
|
|
113
|
+
version: z.string().optional()
|
|
114
|
+
});
|
|
115
|
+
const ScheduleEntrySchema = z.object({
|
|
116
|
+
id: z.string(),
|
|
117
|
+
name: z.string(),
|
|
118
|
+
cron: z.string(),
|
|
119
|
+
taskPath: z.string(),
|
|
120
|
+
args: z.unknown().optional(),
|
|
121
|
+
enabled: z.boolean(),
|
|
122
|
+
created: z.number().nonnegative(),
|
|
123
|
+
ownerKey: z.string().optional(),
|
|
124
|
+
lastRun: z.number().nonnegative().optional(),
|
|
125
|
+
nextRun: z.number().nonnegative().optional()
|
|
126
|
+
});
|
|
127
|
+
const JobProgressSchema = z.object({
|
|
128
|
+
pending: z.number().int().nonnegative(),
|
|
129
|
+
running: z.number().int().nonnegative(),
|
|
130
|
+
done: z.number().int().nonnegative(),
|
|
131
|
+
failed: z.number().int().nonnegative()
|
|
132
|
+
});
|
|
133
|
+
const JobEntrySchema = z.object({
|
|
134
|
+
id: z.string(),
|
|
135
|
+
name: z.string().optional(),
|
|
136
|
+
status: z.enum([
|
|
137
|
+
"pending",
|
|
138
|
+
"mapping",
|
|
139
|
+
"reducing",
|
|
140
|
+
"done",
|
|
141
|
+
"failed",
|
|
142
|
+
"cancelled"
|
|
143
|
+
]),
|
|
144
|
+
mapTask: z.string(),
|
|
145
|
+
reduceTask: z.string().optional(),
|
|
146
|
+
args: z.unknown().optional(),
|
|
147
|
+
totalItems: z.number().int().positive(),
|
|
148
|
+
batchSize: z.number().int().positive(),
|
|
149
|
+
concurrency: z.number().int().positive(),
|
|
150
|
+
timeout: z.number().int().positive().optional(),
|
|
151
|
+
totalBatches: z.number().int().nonnegative(),
|
|
152
|
+
progress: JobProgressSchema,
|
|
153
|
+
mapTaskIds: z.array(z.string()),
|
|
154
|
+
reduceTaskId: z.string().optional(),
|
|
155
|
+
mapResults: z.array(z.unknown()),
|
|
156
|
+
result: z.unknown().optional(),
|
|
157
|
+
error: z.string().optional(),
|
|
158
|
+
created: z.number().nonnegative(),
|
|
159
|
+
started: z.number().nonnegative().optional(),
|
|
160
|
+
ended: z.number().nonnegative().optional()
|
|
161
|
+
});
|
|
162
|
+
const SchedulerSnapshotSchema = z.object({
|
|
163
|
+
version: z.union([
|
|
164
|
+
z.literal(1),
|
|
165
|
+
z.literal(2),
|
|
166
|
+
z.literal(3)
|
|
167
|
+
]),
|
|
168
|
+
tasks: z.record(z.string(), TaskEntrySchema),
|
|
169
|
+
history: z.array(TaskEntrySchema),
|
|
170
|
+
schedules: z.array(ScheduleEntrySchema).optional(),
|
|
171
|
+
jobs: z.array(JobEntrySchema).optional()
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
175
|
+
export { CancelArgsSchema, CancelJobArgsSchema, ClaimArgsSchema, DispatchArgsSchema, HeartbeatArgsSchema, RetryArgsSchema, ScheduleArgsSchema, SchedulerSnapshotSchema, SubmitArgsSchema, SubmitJobArgsSchema, UnscheduleArgsSchema };
|
|
176
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"zod/v4\";\n\n// ─── TaskEntry ───\n\nexport interface BudgetEstimate {\n tokens?: number;\n duration?: number;\n calls?: number;\n}\n\nexport type TaskStatus =\n | \"pending\"\n | \"running\"\n | \"done\"\n | \"failed\"\n | \"cancelled\"\n | \"budget-blocked\"\n | \"timeout\";\n\nexport interface TaskEntry {\n id: string;\n status: TaskStatus;\n taskPath: string;\n args?: unknown;\n estimate?: BudgetEstimate;\n result?: TaskResult;\n error?: string;\n created: number;\n started?: number;\n ended?: number;\n attempts: number;\n procId?: string;\n /** Caller identity that created the task. Used to authorize lifecycle actions. */\n ownerKey?: string;\n /** ID of the schedule that created this task (for duplicate protection) */\n scheduleId?: string;\n /** Heartbeat deadline — task times out if no heartbeat received by this time (epoch ms) */\n deadline?: number;\n /** Last heartbeat timestamp (epoch ms) */\n lastHeartbeat?: number;\n /** Timeout duration in ms — used for sliding window extension on heartbeat */\n timeout?: number;\n /** ID of the job this task belongs to (map-reduce) */\n jobId?: string;\n /** Batch index within the job (map task) */\n batchIndex?: number;\n /**\n * Claim-based (pull model) task — not auto-executed via the internal\n * executor. An external worker must `claim` it, do the work out-of-band,\n * then `submit` the result. Set when `dispatch` is called with an\n * `assignee` field (see #1067).\n */\n claimable?: boolean;\n /**\n * Claim constraint for claimable tasks: \"\" (or absent) = any worker may\n * claim; a specific DID = only that worker may claim.\n */\n assignee?: string;\n /** DID of the worker currently holding the claim/lease. */\n claimedBy?: string;\n /** Epoch ms when the task was most recently claimed. */\n claimedAt?: number;\n /**\n * Opaque optimistic-concurrency token for the claim contract (see\n * docs/guides/provider-authoring.md ifMatch). Regenerated whenever\n * claim-relevant state changes (claim/reclaim/submit). Callers must treat\n * this as opaque — never parse or compare beyond equality.\n */\n version?: string;\n}\n\nexport interface TaskResult {\n success: boolean;\n data?: unknown;\n error?: string;\n}\n\n// ─── ScheduleEntry ───\n\nexport interface ScheduleEntry {\n id: string;\n name: string;\n cron: string;\n taskPath: string;\n args?: unknown;\n enabled: boolean;\n created: number;\n /** Caller identity that created the schedule. Used to authorize lifecycle actions. */\n ownerKey?: string;\n lastRun?: number;\n nextRun?: number;\n}\n\n// ─── TaskContext ───\n\nexport interface TaskContext {\n procId?: string;\n}\n\n// ─── TaskExecutor ───\n\nexport interface TaskExecutor {\n run(taskId: string, taskPath: string, args: unknown, context?: TaskContext): Promise<TaskResult>;\n cancel?(taskId: string): Promise<void>;\n}\n\n// ─── Action Schemas ───\n\nexport const DispatchArgsSchema = z.object({\n task: z.string().min(1),\n args: z.unknown().optional(),\n estimate: z\n .object({\n tokens: z.number().int().nonnegative().optional(),\n duration: z.number().int().nonnegative().optional(),\n calls: z.number().int().nonnegative().optional(),\n })\n .optional(),\n proc: z\n .object({\n type: z.enum([\"realm\", \"blocklet\", \"agent-run\", \"ash-script\", \"resource\"]),\n parentId: z.string().optional(),\n appId: z.string().optional(),\n budget: z.record(z.string(), z.number().positive()).optional(),\n timeout: z.number().int().positive().optional(),\n })\n .optional(),\n /**\n * When present, the task is claim-based (pull model): it is created as\n * `pending` but NOT auto-executed — an external worker must `claim` it.\n * \"\" = any worker may claim; a DID = only that worker may claim.\n */\n assignee: z.string().optional(),\n});\nexport type DispatchArgs = z.infer<typeof DispatchArgsSchema>;\n\nexport const CancelArgsSchema = z.object({\n taskId: z.string().min(1),\n});\nexport type CancelArgs = z.infer<typeof CancelArgsSchema>;\n\nexport const RetryArgsSchema = z.object({\n taskId: z.string().min(1),\n});\nexport type RetryArgs = z.infer<typeof RetryArgsSchema>;\n\nexport const ScheduleArgsSchema = z.object({\n name: z.string().min(1),\n cron: z.string().min(1),\n task: z.string().min(1),\n args: z.unknown().optional(),\n enabled: z.boolean().optional(),\n});\nexport type ScheduleArgs = z.infer<typeof ScheduleArgsSchema>;\n\nexport const UnscheduleArgsSchema = z.object({\n scheduleId: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n});\nexport type UnscheduleArgs = z.infer<typeof UnscheduleArgsSchema>;\n\nexport const HeartbeatArgsSchema = z.object({\n taskId: z.string().min(1),\n progress: z.unknown().optional(),\n});\nexport type HeartbeatArgs = z.infer<typeof HeartbeatArgsSchema>;\n\n// ─── Claim / Submit (external worker pull model, #1067) ───\n\nexport const ClaimArgsSchema = z.object({\n taskId: z.string().min(1),\n /** Claiming worker's identity (DID). Checked against the task's `assignee` constraint. */\n workerId: z.string().min(1),\n /** Lease duration in ms. Defaults to `SchedulerProviderOptions.defaultLeaseDuration`. */\n leaseDuration: z.number().int().positive().optional(),\n /**\n * Opaque version the caller last observed for this task (via read/list).\n * If it no longer matches the task's current version, the claim is\n * rejected with `AFSConflictError` (AFS_CONFLICT) — another worker won\n * the race. Omit to skip the optimistic-concurrency check (last-claim-wins).\n */\n ifMatch: z.string().optional(),\n});\nexport type ClaimArgs = z.infer<typeof ClaimArgsSchema>;\n\nexport const SubmitArgsSchema = z.object({\n taskId: z.string().min(1),\n /** Must match the worker that currently holds the claim/lease. */\n workerId: z.string().min(1),\n /** Whether the worker's execution succeeded. Default: true. */\n success: z.boolean().optional(),\n result: z.unknown().optional(),\n artifacts: z.unknown().optional(),\n /**\n * AFS task path for the verification agent task enqueued on submit.\n * Verification is itself an agent task, not a script gate (#777 decision).\n * Falls back to `SchedulerProviderOptions.verifyTaskPath`; if neither is\n * set, submit fails validation rather than silently skipping verification.\n */\n verifyTask: z.string().min(1).optional(),\n verifyArgs: z.unknown().optional(),\n});\nexport type SubmitArgs = z.infer<typeof SubmitArgsSchema>;\n\nexport interface TickResult {\n dispatched: number;\n timedOut: number;\n}\n\n// ─── Job (Map-Reduce) ───\n\nexport type JobStatus = \"pending\" | \"mapping\" | \"reducing\" | \"done\" | \"failed\" | \"cancelled\";\n\nexport interface JobProgress {\n pending: number;\n running: number;\n done: number;\n failed: number;\n}\n\nexport interface JobEntry {\n id: string;\n name?: string;\n status: JobStatus;\n\n // Map configuration\n mapTask: string;\n reduceTask?: string;\n args?: unknown;\n totalItems: number;\n batchSize: number;\n concurrency: number;\n timeout?: number;\n\n // Progress\n totalBatches: number;\n progress: JobProgress;\n\n // Task tracking\n /** Map task IDs, indexed by batchIndex */\n mapTaskIds: string[];\n reduceTaskId?: string;\n\n // Results\n /** Per-batch map results (null = failed or pending) */\n mapResults: (unknown | null)[];\n /** Final result: reduce output (if reduceTask) or mapResults */\n result?: unknown;\n error?: string;\n\n // Timing\n created: number;\n started?: number;\n ended?: number;\n}\n\nexport const SubmitJobArgsSchema = z.object({\n name: z.string().optional(),\n mapTask: z.string().min(1),\n reduceTask: z.string().min(1).optional(),\n totalItems: z.number().int().positive(),\n batchSize: z.number().int().positive().optional(),\n concurrency: z.number().int().positive().optional(),\n args: z.unknown().optional(),\n timeout: z.number().int().positive().optional(),\n});\nexport type SubmitJobArgs = z.infer<typeof SubmitJobArgsSchema>;\n\nexport const CancelJobArgsSchema = z.object({\n jobId: z.string().min(1),\n});\nexport type CancelJobArgs = z.infer<typeof CancelJobArgsSchema>;\n\n// ─── Snapshot ───\n\nexport interface SchedulerSnapshot {\n version: 1 | 2 | 3;\n tasks: Record<string, TaskEntry>;\n history: TaskEntry[];\n /** v2+: cron schedules. Missing in v1 snapshots → treated as empty. */\n schedules?: ScheduleEntry[];\n /** v3+: map-reduce jobs. Missing in v1/v2 snapshots → treated as empty. */\n jobs?: JobEntry[];\n}\n\n/** Zod schema for validating restored snapshots */\nconst TaskResultSchema = z.object({\n success: z.boolean(),\n data: z.unknown().optional(),\n error: z.string().optional(),\n});\n\nconst BudgetEstimateSchema = z.object({\n tokens: z.number().nonnegative().optional(),\n duration: z.number().nonnegative().optional(),\n calls: z.number().nonnegative().optional(),\n});\n\nconst TaskEntrySchema = z.object({\n id: z.string(),\n status: z.enum([\n \"pending\",\n \"running\",\n \"done\",\n \"failed\",\n \"cancelled\",\n \"budget-blocked\",\n \"timeout\",\n ]),\n taskPath: z.string(),\n created: z.number().nonnegative(),\n attempts: z.number().nonnegative(),\n args: z.unknown().optional(),\n estimate: BudgetEstimateSchema.optional(),\n result: TaskResultSchema.optional(),\n error: z.string().optional(),\n started: z.number().nonnegative().optional(),\n ended: z.number().nonnegative().optional(),\n procId: z.string().optional(),\n ownerKey: z.string().optional(),\n // v2 fields\n scheduleId: z.string().optional(),\n deadline: z.number().nonnegative().optional(),\n lastHeartbeat: z.number().nonnegative().optional(),\n timeout: z.number().nonnegative().optional(),\n // v3 fields (map-reduce)\n jobId: z.string().optional(),\n batchIndex: z.number().int().nonnegative().optional(),\n // claim/lease fields (#1067) — optional, back-compat with pre-existing snapshots\n claimable: z.boolean().optional(),\n assignee: z.string().optional(),\n claimedBy: z.string().optional(),\n claimedAt: z.number().nonnegative().optional(),\n version: z.string().optional(),\n});\n\nconst ScheduleEntrySchema = z.object({\n id: z.string(),\n name: z.string(),\n cron: z.string(),\n taskPath: z.string(),\n args: z.unknown().optional(),\n enabled: z.boolean(),\n created: z.number().nonnegative(),\n ownerKey: z.string().optional(),\n lastRun: z.number().nonnegative().optional(),\n nextRun: z.number().nonnegative().optional(),\n});\n\nconst JobProgressSchema = z.object({\n pending: z.number().int().nonnegative(),\n running: z.number().int().nonnegative(),\n done: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n});\n\nconst JobEntrySchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n status: z.enum([\"pending\", \"mapping\", \"reducing\", \"done\", \"failed\", \"cancelled\"]),\n mapTask: z.string(),\n reduceTask: z.string().optional(),\n args: z.unknown().optional(),\n totalItems: z.number().int().positive(),\n batchSize: z.number().int().positive(),\n concurrency: z.number().int().positive(),\n timeout: z.number().int().positive().optional(),\n totalBatches: z.number().int().nonnegative(),\n progress: JobProgressSchema,\n mapTaskIds: z.array(z.string()),\n reduceTaskId: z.string().optional(),\n mapResults: z.array(z.unknown()),\n result: z.unknown().optional(),\n error: z.string().optional(),\n created: z.number().nonnegative(),\n started: z.number().nonnegative().optional(),\n ended: z.number().nonnegative().optional(),\n});\n\nexport const SchedulerSnapshotSchema = z.object({\n version: z.union([z.literal(1), z.literal(2), z.literal(3)]),\n tasks: z.record(z.string(), TaskEntrySchema),\n history: z.array(TaskEntrySchema),\n schedules: z.array(ScheduleEntrySchema).optional(),\n jobs: z.array(JobEntrySchema).optional(),\n});\n\n// ─── Provider Options ───\n\nexport interface SchedulerProviderOptions {\n name?: string;\n description?: string;\n executor?: TaskExecutor;\n maxHistory?: number;\n storagePath?: string;\n /** AFS path where the proc provider is mounted. Default: \"/proc\" */\n procPath?: string;\n /** TTL for budget-blocked tasks in ms. Stale budget-blocked tasks are evicted on restore. Default: 86400000 (24h). Set to 0 to disable. */\n budgetBlockedTTL?: number;\n /** Timeout for cron/scheduled tasks in ms. Default: 0 (disabled). Runtimes with strict execution caps should set this explicitly. */\n scheduledTaskTimeoutMs?: number;\n /** Default lease duration (ms) for claim-based tasks when `claim` omits `leaseDuration`. Default: 300000 (5 min). */\n defaultLeaseDuration?: number;\n /**\n * Default AFS task path for the verification agent task enqueued by\n * `submit` when the caller omits `verifyTask`. No default — if neither is\n * set, `submit` rejects with VALIDATION_ERROR (verification must never be\n * silently skipped, per #777's agent-driven-verification decision).\n */\n verifyTaskPath?: string;\n /**\n * Hook called with each background task promise.\n * In Cloudflare Workers, pass `ctx.waitUntil` to keep the isolate alive\n * while fire-and-forget tasks complete.\n */\n waitUntil?: (promise: Promise<unknown>) => void;\n /**\n * DONamespace for Coordinator DOs.\n * When set, submit-job and cancel-job delegate to Coordinator DOs\n * instead of using in-memory coordination. Each job gets its own DO\n * instance that manages wave dispatch via alarm chaining.\n */\n coordinatorNamespace?: import(\"./do-types.js\").DONamespace;\n}\n"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aigne/afs-scheduler",
|
|
3
|
+
"version": "1.12.0-beta.5",
|
|
4
|
+
"description": "AIGNE AFS Scheduler Provider — task dispatch and execution management",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"author": "Arcblock <blocklet@arcblock.io> https://github.com/arcblock",
|
|
10
|
+
"homepage": "https://github.com/arcblock/arc",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/arcblock/arc"
|
|
14
|
+
},
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/arcblock/arc/issues"
|
|
17
|
+
},
|
|
18
|
+
"type": "module",
|
|
19
|
+
"main": "./dist/index.cjs",
|
|
20
|
+
"module": "./dist/index.mjs",
|
|
21
|
+
"types": "./dist/index.d.cts",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"require": "./dist/index.cjs",
|
|
25
|
+
"import": "./dist/index.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./*": "./*"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"README.md",
|
|
33
|
+
"CHANGELOG.md"
|
|
34
|
+
],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@aigne/uuid": "^13.0.1",
|
|
37
|
+
"ufo": "^1.6.3",
|
|
38
|
+
"zod": "^4.0.0",
|
|
39
|
+
"@aigne/afs": "^1.12.0-beta.5"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/bun": "^1.3.6",
|
|
43
|
+
"npm-run-all": "^4.1.5",
|
|
44
|
+
"rimraf": "^6.1.2",
|
|
45
|
+
"tsdown": "0.20.0-beta.3",
|
|
46
|
+
"typescript": "5.9.2",
|
|
47
|
+
"@aigne/afs-json": "1.12.0-beta.5",
|
|
48
|
+
"@aigne/afs-proc": "1.12.0-beta.5",
|
|
49
|
+
"@aigne/afs-testing": "1.12.0-beta.5",
|
|
50
|
+
"@aigne/typescript-config": "0.0.0"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsdown",
|
|
54
|
+
"check-types": "tsc --noEmit",
|
|
55
|
+
"clean": "rimraf dist coverage",
|
|
56
|
+
"test": "bun test",
|
|
57
|
+
"test:coverage": "bun test --coverage --coverage-reporter=lcov --coverage-reporter=text"
|
|
58
|
+
}
|
|
59
|
+
}
|