@polpo-ai/node 0.15.45 → 0.15.46

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/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./core/index.js";
2
+ export { SQLiteScheduleStore } from "./scheduling/sqlite-schedule-store.js";
2
3
  export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
3
4
  export { spawnLoopEngine } from "./adapters/loop-engine.js";
4
5
  export { NodeSpawner } from "./adapters/node-spawner.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // Core abstractions (includes orchestrator, config, session-reader, state-machine,
2
2
  // types, events, hooks, playbooks, templates, ink, quality, scheduling, etc.)
3
3
  export * from "./core/index.js";
4
+ export { SQLiteScheduleStore } from "./scheduling/sqlite-schedule-store.js";
4
5
  // Stores
5
6
  export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
6
7
  // Engine
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAEhC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wFAAwF;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAItM,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AActE,0CAA0C;AAC1C,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvD,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1H,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wFAAwF;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAItM,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AActE,0CAA0C;AAC1C,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvD,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1H,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export { Scheduler } from "./scheduler.js";
2
2
  export { parseCron, matchesCron, nextCronOccurrence, isCronExpression } from "./cron.js";
3
+ export { SQLiteScheduleStore } from "./sqlite-schedule-store.js";
4
+ export { LocalScheduleDriver, LocalScheduleWorker, } from "./local-schedule-driver.js";
5
+ export { createLocalScheduleRunHandler } from "./schedule-dispatcher.js";
6
+ export type { LocalScheduleDriverOptions, LocalScheduleRunContext, LocalScheduleRunHandler, LocalScheduleRunResult, LocalScheduleTickResult, LocalScheduleWorkerErrorContext, LocalScheduleWorkerOptions, } from "./local-schedule-driver.js";
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC"}
@@ -1,3 +1,6 @@
1
1
  export { Scheduler } from "./scheduler.js";
2
2
  export { parseCron, matchesCron, nextCronOccurrence, isCronExpression } from "./cron.js";
3
+ export { SQLiteScheduleStore } from "./sqlite-schedule-store.js";
4
+ export { LocalScheduleDriver, LocalScheduleWorker, } from "./local-schedule-driver.js";
5
+ export { createLocalScheduleRunHandler } from "./schedule-dispatcher.js";
3
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { type CompleteScheduleRunInput, type Schedule, type ScheduleDriver, type ScheduleDriverRegistration, type ScheduleLease, type ScheduleRun, type ScheduleRunError, type ScheduleRunReferences, type ScheduleStore } from "@polpo-ai/core/scheduling";
2
+ export interface LocalScheduleDriverOptions {
3
+ now?: () => Date | string;
4
+ }
5
+ export declare class LocalScheduleDriver implements ScheduleDriver {
6
+ private readonly nowProvider;
7
+ constructor(options?: LocalScheduleDriverOptions);
8
+ register(schedule: Schedule): Promise<ScheduleDriverRegistration>;
9
+ update(schedule: Schedule): Promise<ScheduleDriverRegistration>;
10
+ pause(_schedule: Schedule): Promise<void>;
11
+ resume(_schedule: Schedule): Promise<void>;
12
+ delete(_schedule: Schedule): Promise<void>;
13
+ private registration;
14
+ }
15
+ export interface LocalScheduleRunResult {
16
+ status: Extract<CompleteScheduleRunInput["status"], "succeeded" | "failed" | "skipped" | "cancelled">;
17
+ references: ScheduleRunReferences;
18
+ result?: CompleteScheduleRunInput["result"];
19
+ error?: ScheduleRunError;
20
+ }
21
+ export interface LocalScheduleRunContext {
22
+ schedule: Schedule;
23
+ run: ScheduleRun;
24
+ lease: ScheduleLease;
25
+ signal: AbortSignal;
26
+ }
27
+ export type LocalScheduleRunHandler = (context: LocalScheduleRunContext) => Promise<LocalScheduleRunResult>;
28
+ export interface LocalScheduleWorkerErrorContext {
29
+ phase: "materialize" | "dispatch" | "heartbeat" | "poll";
30
+ scheduleId?: string;
31
+ runId?: string;
32
+ }
33
+ export interface LocalScheduleWorkerOptions {
34
+ store: ScheduleStore;
35
+ handler: LocalScheduleRunHandler;
36
+ workerId?: string;
37
+ now?: () => Date | string;
38
+ createLeaseToken?: () => string;
39
+ leaseDurationMs?: number;
40
+ pollIntervalMs?: number;
41
+ maxOccurrencesPerSchedulePerTick?: number;
42
+ maxRunsPerTick?: number;
43
+ onError?: (error: unknown, context: LocalScheduleWorkerErrorContext) => void;
44
+ }
45
+ export interface LocalScheduleTickResult {
46
+ alreadyRunning: boolean;
47
+ materialized: number;
48
+ dispatched: number;
49
+ succeeded: number;
50
+ skipped: number;
51
+ cancelled: number;
52
+ failed: number;
53
+ deferred: number;
54
+ conflicts: number;
55
+ }
56
+ export declare class LocalScheduleWorker {
57
+ private readonly store;
58
+ private readonly handler;
59
+ private readonly workerId;
60
+ private readonly nowProvider;
61
+ private readonly createLeaseToken;
62
+ private readonly leaseDurationMs;
63
+ private readonly pollIntervalMs;
64
+ private readonly maxOccurrencesPerSchedulePerTick;
65
+ private readonly maxRunsPerTick;
66
+ private readonly onError?;
67
+ private tickInProgress;
68
+ private timer?;
69
+ private polling;
70
+ constructor(options: LocalScheduleWorkerOptions);
71
+ start(): void;
72
+ stop(): void;
73
+ tick(): Promise<LocalScheduleTickResult>;
74
+ private materialize;
75
+ private dueOccurrences;
76
+ private processRuns;
77
+ private skipRun;
78
+ private completeOnceSchedule;
79
+ private createLease;
80
+ private startHeartbeat;
81
+ private scheduleNextPoll;
82
+ private report;
83
+ }
84
+ //# sourceMappingURL=local-schedule-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-schedule-driver.d.ts","sourceRoot":"","sources":["../../src/scheduling/local-schedule-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,412 @@
1
+ import { nanoid } from "nanoid";
2
+ import { ScheduleConflictError, ScheduleInvalidStateError, listScheduleOccurrences, nextScheduleOccurrence, previousScheduleOccurrence, scheduleOccurrenceIdentity, } from "@polpo-ai/core/scheduling";
3
+ const DEFAULT_LEASE_DURATION_MS = 30_000;
4
+ const DEFAULT_POLL_INTERVAL_MS = 1_000;
5
+ const DEFAULT_MAX_OCCURRENCES_PER_TICK = 100;
6
+ const DEFAULT_MAX_RUNS_PER_TICK = 250;
7
+ export class LocalScheduleDriver {
8
+ nowProvider;
9
+ constructor(options = {}) {
10
+ this.nowProvider = options.now ?? (() => new Date());
11
+ }
12
+ async register(schedule) {
13
+ return this.registration(schedule);
14
+ }
15
+ async update(schedule) {
16
+ return this.registration(schedule);
17
+ }
18
+ async pause(_schedule) { }
19
+ async resume(_schedule) { }
20
+ async delete(_schedule) { }
21
+ registration(schedule) {
22
+ const now = validClock(this.nowProvider(), "Local schedule driver");
23
+ if (!schedule.id) {
24
+ throw new ScheduleInvalidStateError("Local schedule driver requires an id");
25
+ }
26
+ return {
27
+ kind: "local",
28
+ status: "registered",
29
+ providerId: `local:${schedule.id}`,
30
+ updatedAt: now.toISOString(),
31
+ };
32
+ }
33
+ }
34
+ export class LocalScheduleWorker {
35
+ store;
36
+ handler;
37
+ workerId;
38
+ nowProvider;
39
+ createLeaseToken;
40
+ leaseDurationMs;
41
+ pollIntervalMs;
42
+ maxOccurrencesPerSchedulePerTick;
43
+ maxRunsPerTick;
44
+ onError;
45
+ tickInProgress = false;
46
+ timer;
47
+ polling = false;
48
+ constructor(options) {
49
+ if (!options?.store)
50
+ throw new Error("Local schedule worker requires a store");
51
+ if (typeof options.handler !== "function") {
52
+ throw new Error("Local schedule worker requires a handler");
53
+ }
54
+ this.store = options.store;
55
+ this.handler = options.handler;
56
+ this.workerId = nonEmpty(options.workerId ?? `local-worker-${nanoid()}`, "workerId");
57
+ this.nowProvider = options.now ?? (() => new Date());
58
+ this.createLeaseToken = options.createLeaseToken ?? (() => nanoid());
59
+ this.leaseDurationMs = boundedInteger(options.leaseDurationMs ?? DEFAULT_LEASE_DURATION_MS, "leaseDurationMs", 1_000, 60 * 60 * 1_000);
60
+ this.pollIntervalMs = boundedInteger(options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS, "pollIntervalMs", 100, 60_000);
61
+ this.maxOccurrencesPerSchedulePerTick = boundedInteger(options.maxOccurrencesPerSchedulePerTick
62
+ ?? DEFAULT_MAX_OCCURRENCES_PER_TICK, "maxOccurrencesPerSchedulePerTick", 1, 1_000);
63
+ this.maxRunsPerTick = boundedInteger(options.maxRunsPerTick ?? DEFAULT_MAX_RUNS_PER_TICK, "maxRunsPerTick", 1, 1_000);
64
+ this.onError = options.onError;
65
+ }
66
+ start() {
67
+ if (this.polling)
68
+ return;
69
+ this.polling = true;
70
+ this.scheduleNextPoll(0);
71
+ }
72
+ stop() {
73
+ this.polling = false;
74
+ if (this.timer)
75
+ clearTimeout(this.timer);
76
+ this.timer = undefined;
77
+ }
78
+ async tick() {
79
+ if (this.tickInProgress)
80
+ return createTickResult(true);
81
+ const now = validClock(this.nowProvider(), "Local schedule worker");
82
+ const result = createTickResult(false);
83
+ this.tickInProgress = true;
84
+ try {
85
+ const schedules = await this.store.list({ status: "active" });
86
+ for (const schedule of schedules) {
87
+ try {
88
+ await this.materialize(schedule, now, result);
89
+ }
90
+ catch (error) {
91
+ if (error instanceof ScheduleConflictError)
92
+ result.conflicts += 1;
93
+ else
94
+ result.failed += 1;
95
+ this.report(error, {
96
+ phase: "materialize",
97
+ scheduleId: schedule.id,
98
+ });
99
+ }
100
+ }
101
+ await this.processRuns(now, result);
102
+ return result;
103
+ }
104
+ finally {
105
+ this.tickInProgress = false;
106
+ }
107
+ }
108
+ async materialize(initialSchedule, now, result) {
109
+ let schedule = initialSchedule;
110
+ if (!schedule.nextOccurrenceAt) {
111
+ const baseline = new Date(schedule.createdAt);
112
+ const next = nextScheduleOccurrence(schedule, baseline);
113
+ schedule = await this.store.updateOperationalState(schedule.id, { nextOccurrenceAt: next?.occurrenceAt ?? null }, { expectedRevision: schedule.revision });
114
+ }
115
+ if (!schedule.nextOccurrenceAt
116
+ || Date.parse(schedule.nextOccurrenceAt) > now.getTime()) {
117
+ return;
118
+ }
119
+ let due = this.dueOccurrences(schedule, now);
120
+ if (due.length === 0)
121
+ return;
122
+ if (schedule.policy.catchUp === "latest") {
123
+ const last = due[due.length - 1];
124
+ const following = nextScheduleOccurrence(schedule, last.occurrenceAt);
125
+ if (due.length === this.maxOccurrencesPerSchedulePerTick
126
+ && following
127
+ && Date.parse(following.occurrenceAt) <= now.getTime()) {
128
+ const latest = previousScheduleOccurrence(schedule, now);
129
+ due = latest ? [latest] : [];
130
+ }
131
+ }
132
+ if (due.length === 0)
133
+ return;
134
+ const existing = new Set((await this.store.listRuns({ scheduleId: schedule.id, limit: 1_000 }))
135
+ .map((run) => run.idempotencyKey));
136
+ for (const occurrence of due) {
137
+ await this.store.createRun({
138
+ scheduleId: schedule.id,
139
+ occurrenceAt: occurrence.occurrenceAt,
140
+ triggerId: occurrence.triggerId,
141
+ idempotencyKey: occurrence.idempotencyKey,
142
+ });
143
+ if (!existing.has(occurrence.idempotencyKey)) {
144
+ existing.add(occurrence.idempotencyKey);
145
+ result.materialized += 1;
146
+ }
147
+ }
148
+ const last = due[due.length - 1];
149
+ const next = nextScheduleOccurrence(schedule, last.occurrenceAt);
150
+ await this.store.updateOperationalState(schedule.id, {
151
+ lastOccurrenceAt: last.occurrenceAt,
152
+ nextOccurrenceAt: next?.occurrenceAt ?? null,
153
+ }, { expectedRevision: schedule.revision });
154
+ }
155
+ dueOccurrences(schedule, now) {
156
+ const first = scheduleOccurrenceIdentity(schedule, schedule.nextOccurrenceAt);
157
+ if (Date.parse(first.occurrenceAt) > now.getTime())
158
+ return [];
159
+ if (this.maxOccurrencesPerSchedulePerTick === 1)
160
+ return [first];
161
+ return [
162
+ first,
163
+ ...listScheduleOccurrences(schedule, {
164
+ after: first.occurrenceAt,
165
+ through: now,
166
+ limit: this.maxOccurrencesPerSchedulePerTick - 1,
167
+ }),
168
+ ];
169
+ }
170
+ async processRuns(now, result) {
171
+ const candidates = (await this.store.listRuns({
172
+ status: ["pending", "claimed", "running"],
173
+ limit: this.maxRunsPerTick,
174
+ order: "asc",
175
+ }));
176
+ const latestRunBySchedule = new Map();
177
+ for (const candidate of candidates) {
178
+ if ((candidate.status === "claimed" || candidate.status === "running")
179
+ && candidate.lease
180
+ && Date.parse(candidate.lease.expiresAt) > now.getTime()) {
181
+ continue;
182
+ }
183
+ const schedule = await this.store.get(candidate.scheduleId);
184
+ if (!schedule || schedule.status !== "active") {
185
+ result.deferred += 1;
186
+ continue;
187
+ }
188
+ const expired = now.getTime() - Date.parse(candidate.occurrenceAt)
189
+ > schedule.policy.misfireGraceSeconds * 1_000;
190
+ let superseded = false;
191
+ if (schedule.policy.catchUp === "latest") {
192
+ if (!latestRunBySchedule.has(schedule.id)) {
193
+ const [latest] = await this.store.listRuns({
194
+ scheduleId: schedule.id,
195
+ limit: 1,
196
+ order: "desc",
197
+ });
198
+ latestRunBySchedule.set(schedule.id, latest?.id);
199
+ }
200
+ superseded = latestRunBySchedule.get(schedule.id) !== candidate.id;
201
+ }
202
+ if (expired || superseded) {
203
+ await this.skipRun(candidate, schedule, now, expired ? "misfire_grace_exceeded" : "superseded_by_latest", result);
204
+ continue;
205
+ }
206
+ if (await this.store.countActiveRuns(schedule.id)
207
+ >= schedule.policy.maxConcurrency) {
208
+ result.deferred += 1;
209
+ continue;
210
+ }
211
+ const lease = this.createLease(now);
212
+ const claimed = await this.store.claimRun(candidate.id, lease);
213
+ if (!claimed)
214
+ continue;
215
+ let running;
216
+ try {
217
+ running = await this.store.startRun(candidate.id, lease);
218
+ }
219
+ catch (error) {
220
+ try {
221
+ await this.store.releaseRun(candidate.id, lease);
222
+ }
223
+ catch {
224
+ // A stale lease is recoverable by the next worker tick.
225
+ }
226
+ result.deferred += 1;
227
+ this.report(error, {
228
+ phase: "dispatch",
229
+ scheduleId: schedule.id,
230
+ runId: candidate.id,
231
+ });
232
+ continue;
233
+ }
234
+ result.dispatched += 1;
235
+ const controller = new AbortController();
236
+ const stopHeartbeat = this.startHeartbeat(running, lease, controller);
237
+ try {
238
+ const completion = await this.handler({
239
+ schedule,
240
+ run: running,
241
+ lease,
242
+ signal: controller.signal,
243
+ });
244
+ stopHeartbeat();
245
+ const completed = await this.store.completeRun(candidate.id, {
246
+ lease,
247
+ ...completion,
248
+ });
249
+ incrementTerminalResult(result, completed.status);
250
+ if (schedule.timing.kind === "once") {
251
+ await this.completeOnceSchedule(schedule.id, result);
252
+ }
253
+ }
254
+ catch (error) {
255
+ stopHeartbeat();
256
+ controller.abort(error);
257
+ try {
258
+ await this.store.releaseRun(candidate.id, lease);
259
+ }
260
+ catch {
261
+ // Expired ownership is intentionally left for lease reclamation.
262
+ }
263
+ result.failed += 1;
264
+ this.report(error, {
265
+ phase: "dispatch",
266
+ scheduleId: schedule.id,
267
+ runId: candidate.id,
268
+ });
269
+ }
270
+ }
271
+ }
272
+ async skipRun(candidate, schedule, now, reason, result) {
273
+ const lease = this.createLease(now);
274
+ const claimed = await this.store.claimRun(candidate.id, lease);
275
+ if (!claimed) {
276
+ result.deferred += 1;
277
+ return;
278
+ }
279
+ await this.store.completeRun(candidate.id, {
280
+ lease,
281
+ status: "skipped",
282
+ references: {},
283
+ result: { reason },
284
+ });
285
+ result.skipped += 1;
286
+ if (schedule.timing.kind === "once") {
287
+ await this.completeOnceSchedule(schedule.id, result);
288
+ }
289
+ }
290
+ async completeOnceSchedule(scheduleId, result) {
291
+ const latest = await this.store.get(scheduleId);
292
+ if (!latest || latest.status !== "active")
293
+ return;
294
+ try {
295
+ await this.store.update(scheduleId, { status: "completed" }, { expectedRevision: latest.revision });
296
+ }
297
+ catch (error) {
298
+ if (error instanceof ScheduleConflictError)
299
+ result.conflicts += 1;
300
+ else
301
+ throw error;
302
+ }
303
+ }
304
+ createLease(now) {
305
+ const token = nonEmpty(this.createLeaseToken(), "lease token");
306
+ return {
307
+ owner: this.workerId,
308
+ token,
309
+ expiresAt: new Date(now.getTime() + this.leaseDurationMs).toISOString(),
310
+ };
311
+ }
312
+ startHeartbeat(run, lease, controller) {
313
+ let stopped = false;
314
+ let renewing = false;
315
+ const interval = setInterval(async () => {
316
+ if (stopped || renewing)
317
+ return;
318
+ renewing = true;
319
+ try {
320
+ const now = validClock(this.nowProvider(), "Local schedule worker");
321
+ const renewed = {
322
+ ...lease,
323
+ expiresAt: new Date(now.getTime() + this.leaseDurationMs).toISOString(),
324
+ };
325
+ if (!await this.store.renewLease(run.id, renewed)) {
326
+ controller.abort(new ScheduleConflictError(`Schedule run "${run.id}" lease ownership was lost`));
327
+ stopped = true;
328
+ clearInterval(interval);
329
+ }
330
+ }
331
+ catch (error) {
332
+ controller.abort(error);
333
+ this.report(error, {
334
+ phase: "heartbeat",
335
+ scheduleId: run.scheduleId,
336
+ runId: run.id,
337
+ });
338
+ stopped = true;
339
+ clearInterval(interval);
340
+ }
341
+ finally {
342
+ renewing = false;
343
+ }
344
+ }, Math.max(100, Math.floor(this.leaseDurationMs / 3)));
345
+ interval.unref?.();
346
+ return () => {
347
+ stopped = true;
348
+ clearInterval(interval);
349
+ };
350
+ }
351
+ scheduleNextPoll(delay) {
352
+ if (!this.polling)
353
+ return;
354
+ this.timer = setTimeout(async () => {
355
+ try {
356
+ await this.tick();
357
+ }
358
+ catch (error) {
359
+ this.report(error, { phase: "poll" });
360
+ }
361
+ finally {
362
+ this.scheduleNextPoll(this.pollIntervalMs);
363
+ }
364
+ }, delay);
365
+ this.timer.unref?.();
366
+ }
367
+ report(error, context) {
368
+ this.onError?.(error, context);
369
+ }
370
+ }
371
+ function createTickResult(alreadyRunning) {
372
+ return {
373
+ alreadyRunning,
374
+ materialized: 0,
375
+ dispatched: 0,
376
+ succeeded: 0,
377
+ skipped: 0,
378
+ cancelled: 0,
379
+ failed: 0,
380
+ deferred: 0,
381
+ conflicts: 0,
382
+ };
383
+ }
384
+ function incrementTerminalResult(result, status) {
385
+ if (status === "succeeded")
386
+ result.succeeded += 1;
387
+ else if (status === "skipped")
388
+ result.skipped += 1;
389
+ else if (status === "cancelled")
390
+ result.cancelled += 1;
391
+ else if (status === "failed")
392
+ result.failed += 1;
393
+ }
394
+ function validClock(value, label) {
395
+ const date = new Date(value);
396
+ if (!Number.isFinite(date.getTime())) {
397
+ throw new ScheduleInvalidStateError(`${label} clock returned an invalid date`);
398
+ }
399
+ return date;
400
+ }
401
+ function boundedInteger(value, label, min, max) {
402
+ if (!Number.isInteger(value) || value < min || value > max) {
403
+ throw new Error(`${label} must be an integer between ${min} and ${max}`);
404
+ }
405
+ return value;
406
+ }
407
+ function nonEmpty(value, label) {
408
+ if (!value.trim())
409
+ throw new Error(`${label} must be a non-empty string`);
410
+ return value.trim();
411
+ }
412
+ //# sourceMappingURL=local-schedule-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-schedule-driver.js","sourceRoot":"","sources":["../../src/scheduling/local-schedule-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ScheduleDispatcher } from "@polpo-ai/core/scheduling";
2
+ import type { LocalScheduleRunHandler } from "./local-schedule-driver.js";
3
+ /**
4
+ * Connects the generic schedule dispatcher to the durable local worker.
5
+ */
6
+ export declare function createLocalScheduleRunHandler(dispatcher: ScheduleDispatcher): LocalScheduleRunHandler;
7
+ //# sourceMappingURL=schedule-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-dispatcher.d.ts","sourceRoot":"","sources":["../../src/scheduling/schedule-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,kBAAkB,GAC7B,uBAAuB,CAMzB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Connects the generic schedule dispatcher to the durable local worker.
3
+ */
4
+ export function createLocalScheduleRunHandler(dispatcher) {
5
+ if (!dispatcher || typeof dispatcher.dispatch !== "function") {
6
+ throw new Error("Local schedule run handler requires a dispatcher");
7
+ }
8
+ return ({ run, schedule, signal }) => dispatcher.dispatch(run, schedule, { signal });
9
+ }
10
+ //# sourceMappingURL=schedule-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-dispatcher.js","sourceRoot":"","sources":["../../src/scheduling/schedule-dispatcher.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA8B;IAE9B,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CACnC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC"}