@cogitator-ai/workflows 0.10.2 → 0.11.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 +32 -1
- package/dist/human/human-node.d.ts +7 -0
- package/dist/human/human-node.d.ts.map +1 -1
- package/dist/human/human-node.js +140 -70
- package/dist/human/human-node.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manager/workflow-manager.d.ts +29 -2
- package/dist/manager/workflow-manager.d.ts.map +1 -1
- package/dist/manager/workflow-manager.js +98 -8
- package/dist/manager/workflow-manager.js.map +1 -1
- package/dist/nodes/adapters.d.ts +3 -1
- package/dist/nodes/adapters.d.ts.map +1 -1
- package/dist/nodes/adapters.js +3 -1
- package/dist/nodes/adapters.js.map +1 -1
- package/dist/saga/dead-letter.d.ts +12 -0
- package/dist/saga/dead-letter.d.ts.map +1 -1
- package/dist/saga/dead-letter.js +8 -0
- package/dist/saga/dead-letter.js.map +1 -1
- package/dist/saga/index.d.ts +1 -0
- package/dist/saga/index.d.ts.map +1 -1
- package/dist/saga/index.js +1 -0
- package/dist/saga/index.js.map +1 -1
- package/dist/saga/postgres-dlq.d.ts +44 -0
- package/dist/saga/postgres-dlq.d.ts.map +1 -0
- package/dist/saga/postgres-dlq.js +151 -0
- package/dist/saga/postgres-dlq.js.map +1 -0
- package/dist/timers/timer-node.d.ts +14 -0
- package/dist/timers/timer-node.d.ts.map +1 -1
- package/dist/timers/timer-node.js +73 -23
- package/dist/timers/timer-node.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { nanoid } from 'nanoid';
|
|
2
|
+
import { createIfMissing, TABLE_NAME } from '../postgres-schema.js';
|
|
3
|
+
import { BaseDLQ } from './dead-letter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Dead letter queue in Postgres, so failed nodes survive a restart and every process of an app
|
|
6
|
+
* sees the same queue. Entries are stored whole as JSONB, with the fields filters use in their
|
|
7
|
+
* own columns. Expired entries are never returned and `cleanupExpired()` deletes them.
|
|
8
|
+
*/
|
|
9
|
+
export class PostgresDLQ extends BaseDLQ {
|
|
10
|
+
client;
|
|
11
|
+
table;
|
|
12
|
+
defaultTTL;
|
|
13
|
+
ready;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super();
|
|
16
|
+
const table = options.table ?? 'cogitator_workflow_dead_letters';
|
|
17
|
+
if (!TABLE_NAME.test(table))
|
|
18
|
+
throw new Error(`Invalid dead letter table name: ${table}`);
|
|
19
|
+
this.client = options.client;
|
|
20
|
+
this.table = table;
|
|
21
|
+
this.defaultTTL = options.defaultTTL ?? 7 * 24 * 60 * 60 * 1000;
|
|
22
|
+
}
|
|
23
|
+
async add(entry) {
|
|
24
|
+
await this.ensureTable();
|
|
25
|
+
const id = `dlq_${nanoid(12)}`;
|
|
26
|
+
const now = Date.now();
|
|
27
|
+
const stored = {
|
|
28
|
+
...entry,
|
|
29
|
+
id,
|
|
30
|
+
createdAt: now,
|
|
31
|
+
expiresAt: now + this.defaultTTL,
|
|
32
|
+
};
|
|
33
|
+
await this.client.query(`INSERT INTO ${this.table} (id, workflow_id, workflow_name, node_id, attempts, created_at, expires_at, tags, data)
|
|
34
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb)`, [
|
|
35
|
+
id,
|
|
36
|
+
stored.workflowId,
|
|
37
|
+
stored.workflowName,
|
|
38
|
+
stored.nodeId,
|
|
39
|
+
stored.attempts,
|
|
40
|
+
stored.createdAt,
|
|
41
|
+
stored.expiresAt,
|
|
42
|
+
stored.tags ?? [],
|
|
43
|
+
JSON.stringify(stored),
|
|
44
|
+
]);
|
|
45
|
+
return id;
|
|
46
|
+
}
|
|
47
|
+
async get(id) {
|
|
48
|
+
await this.ensureTable();
|
|
49
|
+
const { rows } = await this.client.query(`SELECT data FROM ${this.table} WHERE id = $1 AND (expires_at IS NULL OR expires_at > $2)`, [id, Date.now()]);
|
|
50
|
+
return rows[0] ? rows[0].data : null;
|
|
51
|
+
}
|
|
52
|
+
async list(filters = {}) {
|
|
53
|
+
await this.ensureTable();
|
|
54
|
+
const { where, values } = this.where(filters);
|
|
55
|
+
let sql = `SELECT data FROM ${this.table} ${where} ORDER BY created_at DESC, id`;
|
|
56
|
+
if (filters.limit !== undefined) {
|
|
57
|
+
values.push(filters.limit);
|
|
58
|
+
sql += ` LIMIT $${values.length}`;
|
|
59
|
+
}
|
|
60
|
+
if (filters.offset !== undefined) {
|
|
61
|
+
values.push(filters.offset);
|
|
62
|
+
sql += ` OFFSET $${values.length}`;
|
|
63
|
+
}
|
|
64
|
+
const { rows } = await this.client.query(sql, values);
|
|
65
|
+
return rows.map((row) => row.data);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Records a retry attempt: `attempts` goes up by one and `lastAttempt` is now. Running the node
|
|
69
|
+
* again is `WorkflowManager.retryDeadLetter`'s job, which calls this.
|
|
70
|
+
*/
|
|
71
|
+
async retry(id) {
|
|
72
|
+
await this.ensureTable();
|
|
73
|
+
const now = Date.now();
|
|
74
|
+
const { rows } = await this.client.query(`UPDATE ${this.table}
|
|
75
|
+
SET attempts = attempts + 1,
|
|
76
|
+
data = jsonb_set(jsonb_set(data, '{attempts}', to_jsonb(attempts + 1)), '{lastAttempt}', to_jsonb($2::bigint))
|
|
77
|
+
WHERE id = $1 AND (expires_at IS NULL OR expires_at > $2)
|
|
78
|
+
RETURNING id`, [id, now]);
|
|
79
|
+
return rows.length > 0;
|
|
80
|
+
}
|
|
81
|
+
async remove(id) {
|
|
82
|
+
await this.ensureTable();
|
|
83
|
+
const { rows } = await this.client.query(`DELETE FROM ${this.table} WHERE id = $1 RETURNING id`, [id]);
|
|
84
|
+
return rows.length > 0;
|
|
85
|
+
}
|
|
86
|
+
async count(filters = {}) {
|
|
87
|
+
await this.ensureTable();
|
|
88
|
+
const { where, values } = this.where(filters);
|
|
89
|
+
const { rows } = await this.client.query(`SELECT count(*)::int AS n FROM ${this.table} ${where}`, values);
|
|
90
|
+
return Number(rows[0]?.n ?? 0);
|
|
91
|
+
}
|
|
92
|
+
async clear() {
|
|
93
|
+
await this.ensureTable();
|
|
94
|
+
await this.client.query(`DELETE FROM ${this.table}`);
|
|
95
|
+
}
|
|
96
|
+
/** Deletes expired entries and says how many went. */
|
|
97
|
+
async cleanupExpired() {
|
|
98
|
+
await this.ensureTable();
|
|
99
|
+
const { rows } = await this.client.query(`DELETE FROM ${this.table} WHERE expires_at IS NOT NULL AND expires_at <= $1 RETURNING id`, [Date.now()]);
|
|
100
|
+
return rows.length;
|
|
101
|
+
}
|
|
102
|
+
where(filters) {
|
|
103
|
+
const values = [Date.now()];
|
|
104
|
+
const clauses = ['(expires_at IS NULL OR expires_at > $1)'];
|
|
105
|
+
const add = (sql, value) => {
|
|
106
|
+
values.push(value);
|
|
107
|
+
clauses.push(sql(values.length));
|
|
108
|
+
};
|
|
109
|
+
if (filters.workflowId !== undefined)
|
|
110
|
+
add((n) => `workflow_id = $${n}`, filters.workflowId);
|
|
111
|
+
if (filters.workflowName !== undefined)
|
|
112
|
+
add((n) => `workflow_name = $${n}`, filters.workflowName);
|
|
113
|
+
if (filters.nodeId !== undefined)
|
|
114
|
+
add((n) => `node_id = $${n}`, filters.nodeId);
|
|
115
|
+
if (filters.minAttempts !== undefined)
|
|
116
|
+
add((n) => `attempts >= $${n}`, filters.minAttempts);
|
|
117
|
+
if (filters.maxAttempts !== undefined)
|
|
118
|
+
add((n) => `attempts <= $${n}`, filters.maxAttempts);
|
|
119
|
+
if (filters.createdAfter !== undefined)
|
|
120
|
+
add((n) => `created_at >= $${n}`, filters.createdAfter);
|
|
121
|
+
if (filters.createdBefore !== undefined)
|
|
122
|
+
add((n) => `created_at <= $${n}`, filters.createdBefore);
|
|
123
|
+
if (filters.tags !== undefined && filters.tags.length > 0)
|
|
124
|
+
add((n) => `tags @> $${n}::text[]`, filters.tags);
|
|
125
|
+
return { where: `WHERE ${clauses.join(' AND ')}`, values };
|
|
126
|
+
}
|
|
127
|
+
ensureTable() {
|
|
128
|
+
this.ready ??= this.createTable().catch((error) => {
|
|
129
|
+
this.ready = undefined;
|
|
130
|
+
throw error;
|
|
131
|
+
});
|
|
132
|
+
return this.ready;
|
|
133
|
+
}
|
|
134
|
+
async createTable() {
|
|
135
|
+
const base = this.table.replace('.', '_');
|
|
136
|
+
await createIfMissing(this.client, `CREATE TABLE IF NOT EXISTS ${this.table} (
|
|
137
|
+
id TEXT PRIMARY KEY,
|
|
138
|
+
workflow_id TEXT NOT NULL,
|
|
139
|
+
workflow_name TEXT NOT NULL,
|
|
140
|
+
node_id TEXT NOT NULL,
|
|
141
|
+
attempts INTEGER NOT NULL,
|
|
142
|
+
created_at BIGINT NOT NULL,
|
|
143
|
+
expires_at BIGINT,
|
|
144
|
+
tags TEXT[] NOT NULL,
|
|
145
|
+
data JSONB NOT NULL
|
|
146
|
+
)`);
|
|
147
|
+
await createIfMissing(this.client, `CREATE INDEX IF NOT EXISTS ${base}_workflow_idx ON ${this.table} (workflow_id, created_at DESC)`);
|
|
148
|
+
await createIfMissing(this.client, `CREATE INDEX IF NOT EXISTS ${base}_created_idx ON ${this.table} (created_at DESC)`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=postgres-dlq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-dlq.js","sourceRoot":"","sources":["../../src/saga/postgres-dlq.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,10 @@ export interface TimerNodeResult {
|
|
|
67
67
|
scheduledAt: number;
|
|
68
68
|
firesAt: number;
|
|
69
69
|
waited: number;
|
|
70
|
+
/**
|
|
71
|
+
* The persisted timer was cancelled through its store (for example `TimerManager.cancel`)
|
|
72
|
+
* before the wait ended. An abort of the run does not resolve, it rejects with `AbortError`
|
|
73
|
+
*/
|
|
70
74
|
cancelled: boolean;
|
|
71
75
|
}
|
|
72
76
|
/**
|
|
@@ -77,6 +81,7 @@ export interface TimerExecutionContext {
|
|
|
77
81
|
runId: string;
|
|
78
82
|
nodeId: string;
|
|
79
83
|
timerStore?: TimerStore;
|
|
84
|
+
/** Abort signal of the run; aborting it stops the wait and rejects with `AbortError` */
|
|
80
85
|
signal?: AbortSignal;
|
|
81
86
|
/** Called with the stored entry once a persisted timer is scheduled */
|
|
82
87
|
onTimerScheduled?: (entry: TimerEntry) => void;
|
|
@@ -103,6 +108,15 @@ export declare function untilNode<S>(name: string, getDate: (state: S) => Date |
|
|
|
103
108
|
export declare function calculateTimerDelay<S>(config: AnyTimerNodeConfig<S>, state: S): number;
|
|
104
109
|
/**
|
|
105
110
|
* Execute a timer node
|
|
111
|
+
*
|
|
112
|
+
* Aborting `context.signal` stops the wait and rejects with {@link AbortError}, so a run
|
|
113
|
+
* paused or cancelled mid-wait does not record the node as completed. A persisted timer is
|
|
114
|
+
* cancelled in its store and marked as interrupted, and the next execution of the node in
|
|
115
|
+
* the same run (a resumed run) waits only until the interrupted timer's `firesAt`.
|
|
116
|
+
*
|
|
117
|
+
* A persisted timer cancelled through its store while the node waits (for example with
|
|
118
|
+
* `TimerManager.cancel`) resolves with `cancelled: true` once the wait ends, and reports
|
|
119
|
+
* `onCancelled` instead of `onFired`.
|
|
106
120
|
*/
|
|
107
121
|
export declare function executeTimerNode<S>(config: AnyTimerNodeConfig<S>, state: S, context: TimerExecutionContext): Promise<TimerNodeResult>;
|
|
108
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer-node.d.ts","sourceRoot":"","sources":["../../src/timers/timer-node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"timer-node.d.ts","sourceRoot":"","sources":["../../src/timers/timer-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGlE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,eAAe;IAC5D,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,eAAe;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAM,GAC9D,gBAAgB,CAOlB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EAC9B,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAM,GACtE,kBAAkB,CAAC,CAAC,CAAC,CAOvB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,CAAM,GACjE,cAAc,CAWhB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,EACpC,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAM,GAClE,eAAe,CAAC,CAAC,CAAC,CAOpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CA8BtF;AAaD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAyE1B;AAuCD;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,SAAkB;CAItC;AA+BD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU;sBAGjD,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;uBAGzC,CAAC,QACZ,MAAM,YACF,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,YACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;yBAI5D,MAAM,cACA,MAAM,YACT,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;gBAGnD,CAAC,QACL,MAAM,WACH,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,YAC3B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;uBAG7C,CAAC,UACV,kBAAkB,CAAC,CAAC,CAAC,SACtB,CAAC,WACC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC;EAGvD;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;+BACD,MAAM;0BACX,MAAM;0BACN,MAAM;wBACR,MAAM;uBACP,MAAM;wBACL,MAAM;CACT,CAAC;AAEX;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyBtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAkBjD"}
|
|
@@ -84,24 +84,53 @@ export function calculateTimerDelay(config, state) {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Metadata key set on a persisted timer whose wait was interrupted by an abort of the run.
|
|
89
|
+
* The next execution of the same node in the same run waits until its `firesAt`.
|
|
90
|
+
*/
|
|
91
|
+
const INTERRUPTED = 'interrupted';
|
|
92
|
+
/**
|
|
93
|
+
* Metadata key pointing from an interrupted timer to the timer that took over its wait.
|
|
94
|
+
*/
|
|
95
|
+
const RESUMED_BY = 'resumedBy';
|
|
87
96
|
/**
|
|
88
97
|
* Execute a timer node
|
|
98
|
+
*
|
|
99
|
+
* Aborting `context.signal` stops the wait and rejects with {@link AbortError}, so a run
|
|
100
|
+
* paused or cancelled mid-wait does not record the node as completed. A persisted timer is
|
|
101
|
+
* cancelled in its store and marked as interrupted, and the next execution of the node in
|
|
102
|
+
* the same run (a resumed run) waits only until the interrupted timer's `firesAt`.
|
|
103
|
+
*
|
|
104
|
+
* A persisted timer cancelled through its store while the node waits (for example with
|
|
105
|
+
* `TimerManager.cancel`) resolves with `cancelled: true` once the wait ends, and reports
|
|
106
|
+
* `onCancelled` instead of `onFired`.
|
|
89
107
|
*/
|
|
90
108
|
export async function executeTimerNode(config, state, context) {
|
|
91
109
|
const now = Date.now();
|
|
92
|
-
const
|
|
93
|
-
const
|
|
110
|
+
const store = config.persist ? context.timerStore : undefined;
|
|
111
|
+
const interrupted = store ? await findInterruptedTimer(store, context) : undefined;
|
|
112
|
+
const firesAt = interrupted?.firesAt ?? now + calculateTimerDelay(config, state);
|
|
113
|
+
const delay = Math.max(0, firesAt - now);
|
|
94
114
|
let timerId;
|
|
95
|
-
if (
|
|
96
|
-
timerId = await
|
|
115
|
+
if (store) {
|
|
116
|
+
timerId = await store.schedule({
|
|
97
117
|
workflowId: context.workflowId,
|
|
98
118
|
runId: context.runId,
|
|
99
119
|
nodeId: context.nodeId,
|
|
100
120
|
firesAt,
|
|
101
121
|
type: config.type === 'until' ? 'fixed' : config.type,
|
|
102
|
-
metadata: {
|
|
122
|
+
metadata: {
|
|
123
|
+
nodeType: config.type,
|
|
124
|
+
delay,
|
|
125
|
+
...(interrupted && { resumedFrom: interrupted.id }),
|
|
126
|
+
},
|
|
103
127
|
});
|
|
104
|
-
|
|
128
|
+
if (interrupted) {
|
|
129
|
+
await store.update(interrupted.id, {
|
|
130
|
+
metadata: { ...interrupted.metadata, [RESUMED_BY]: timerId },
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
const entry = await store.get(timerId);
|
|
105
134
|
if (entry) {
|
|
106
135
|
config.onScheduled?.(entry);
|
|
107
136
|
try {
|
|
@@ -116,31 +145,26 @@ export async function executeTimerNode(config, state, context) {
|
|
|
116
145
|
timerId = `timer_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
117
146
|
}
|
|
118
147
|
const startWait = Date.now();
|
|
119
|
-
let cancelled = false;
|
|
120
148
|
try {
|
|
121
149
|
await waitWithAbort(delay, context.signal);
|
|
122
150
|
}
|
|
123
151
|
catch (error) {
|
|
124
|
-
if (error instanceof AbortError) {
|
|
125
|
-
|
|
126
|
-
if (config.persist && context.timerStore && timerId) {
|
|
127
|
-
await context.timerStore.cancel(timerId);
|
|
128
|
-
const entry = await context.timerStore.get(timerId);
|
|
129
|
-
if (entry) {
|
|
130
|
-
config.onCancelled?.(entry);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
throw error;
|
|
152
|
+
if (error instanceof AbortError && store) {
|
|
153
|
+
await interruptTimer(store, timerId, config);
|
|
136
154
|
}
|
|
155
|
+
throw error;
|
|
137
156
|
}
|
|
138
157
|
const waited = Date.now() - startWait;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
158
|
+
let cancelled = false;
|
|
159
|
+
if (store) {
|
|
160
|
+
await store.markFired(timerId);
|
|
161
|
+
const entry = await store.get(timerId);
|
|
162
|
+
cancelled = entry?.cancelled === true && !entry.fired;
|
|
142
163
|
if (entry) {
|
|
143
|
-
|
|
164
|
+
if (cancelled)
|
|
165
|
+
config.onCancelled?.(entry);
|
|
166
|
+
else
|
|
167
|
+
config.onFired?.(entry);
|
|
144
168
|
}
|
|
145
169
|
}
|
|
146
170
|
return {
|
|
@@ -151,6 +175,32 @@ export async function executeTimerNode(config, state, context) {
|
|
|
151
175
|
cancelled,
|
|
152
176
|
};
|
|
153
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* The latest persisted timer of this node and run whose wait an abort interrupted and no
|
|
180
|
+
* later execution has taken over yet
|
|
181
|
+
*/
|
|
182
|
+
async function findInterruptedTimer(store, context) {
|
|
183
|
+
const entries = await store.getByRun(context.runId);
|
|
184
|
+
return entries
|
|
185
|
+
.filter((entry) => entry.workflowId === context.workflowId &&
|
|
186
|
+
entry.nodeId === context.nodeId &&
|
|
187
|
+
!entry.fired &&
|
|
188
|
+
entry.metadata?.[INTERRUPTED] === true &&
|
|
189
|
+
entry.metadata[RESUMED_BY] === undefined)
|
|
190
|
+
.sort((a, b) => b.createdAt - a.createdAt)[0];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Cancel a persisted timer whose wait was aborted and mark it as interrupted
|
|
194
|
+
*/
|
|
195
|
+
async function interruptTimer(store, timerId, config) {
|
|
196
|
+
await store.cancel(timerId);
|
|
197
|
+
const entry = await store.get(timerId);
|
|
198
|
+
if (!entry)
|
|
199
|
+
return;
|
|
200
|
+
const metadata = { ...entry.metadata, [INTERRUPTED]: true };
|
|
201
|
+
await store.update(timerId, { metadata });
|
|
202
|
+
config.onCancelled?.({ ...entry, metadata });
|
|
203
|
+
}
|
|
154
204
|
/**
|
|
155
205
|
* Abort error for timer cancellation
|
|
156
206
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer-node.js","sourceRoot":"","sources":["../../src/timers/timer-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"timer-node.js","sourceRoot":"","sources":["../../src/timers/timer-node.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/workflows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "DAG-based workflow engine for Cogitator agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"node": ">=22.12.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@cogitator-ai/core": "0.
|
|
22
|
-
"@cogitator-ai/types": "0.
|
|
21
|
+
"@cogitator-ai/core": "0.28.0",
|
|
22
|
+
"@cogitator-ai/types": "0.31.0",
|
|
23
23
|
"cron-parser": "^5.10.1",
|
|
24
24
|
"nanoid": "^6.0.1"
|
|
25
25
|
},
|