@cogitator-ai/workflows 0.8.0 → 0.9.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 +17 -0
- package/dist/builder.d.ts +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js.map +1 -1
- package/dist/checkpoint-stores.d.ts.map +1 -1
- package/dist/checkpoint-stores.js +4 -5
- package/dist/checkpoint-stores.js.map +1 -1
- package/dist/human/approval-outcomes.d.ts +26 -0
- package/dist/human/approval-outcomes.d.ts.map +1 -0
- package/dist/human/approval-outcomes.js +61 -0
- package/dist/human/approval-outcomes.js.map +1 -0
- package/dist/human/approval-store.d.ts +12 -0
- package/dist/human/approval-store.d.ts.map +1 -1
- package/dist/human/approval-store.js +52 -9
- package/dist/human/approval-store.js.map +1 -1
- package/dist/human/durable-approval-stores.d.ts +118 -0
- package/dist/human/durable-approval-stores.d.ts.map +1 -0
- package/dist/human/durable-approval-stores.js +383 -0
- package/dist/human/durable-approval-stores.js.map +1 -0
- package/dist/human/human-node.d.ts +13 -7
- package/dist/human/human-node.d.ts.map +1 -1
- package/dist/human/human-node.js +9 -8
- package/dist/human/human-node.js.map +1 -1
- package/dist/human/index.d.ts +2 -1
- package/dist/human/index.d.ts.map +1 -1
- package/dist/human/index.js +1 -0
- package/dist/human/index.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/manager/durable-run-stores.d.ts +88 -0
- package/dist/manager/durable-run-stores.d.ts.map +1 -0
- package/dist/manager/durable-run-stores.js +492 -0
- package/dist/manager/durable-run-stores.js.map +1 -0
- package/dist/manager/run-store.d.ts +1 -0
- package/dist/manager/run-store.d.ts.map +1 -1
- package/dist/manager/run-store.js +21 -10
- package/dist/manager/run-store.js.map +1 -1
- package/dist/manager/workflow-manager.d.ts +4 -0
- package/dist/manager/workflow-manager.d.ts.map +1 -1
- package/dist/manager/workflow-manager.js +28 -12
- package/dist/manager/workflow-manager.js.map +1 -1
- package/dist/observability/exporters.js +1 -1
- package/dist/observability/exporters.js.map +1 -1
- package/dist/observability/tracer.d.ts +1 -0
- package/dist/observability/tracer.d.ts.map +1 -1
- package/dist/observability/tracer.js +2 -1
- package/dist/observability/tracer.js.map +1 -1
- package/dist/postgres-schema.d.ts +18 -0
- package/dist/postgres-schema.d.ts.map +1 -0
- package/dist/postgres-schema.js +35 -0
- package/dist/postgres-schema.js.map +1 -0
- package/dist/subworkflows/parallel-subworkflows.d.ts +15 -11
- package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -1
- package/dist/subworkflows/parallel-subworkflows.js +21 -31
- package/dist/subworkflows/parallel-subworkflows.js.map +1 -1
- package/dist/timers/durable-timer-stores.d.ts +174 -0
- package/dist/timers/durable-timer-stores.d.ts.map +1 -0
- package/dist/timers/durable-timer-stores.js +501 -0
- package/dist/timers/durable-timer-stores.js.map +1 -0
- package/dist/timers/timer-manager.d.ts +28 -1
- package/dist/timers/timer-manager.d.ts.map +1 -1
- package/dist/timers/timer-manager.js +87 -3
- package/dist/timers/timer-manager.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable approval stores: Redis and Postgres.
|
|
3
|
+
*
|
|
4
|
+
* A human node often waits in one process (a worker) while the answer is
|
|
5
|
+
* submitted from another (a web server), so `onResponse` both reacts to
|
|
6
|
+
* responses submitted through the same store instance and polls the backend
|
|
7
|
+
* for responses written elsewhere.
|
|
8
|
+
*/
|
|
9
|
+
import { createIfMissing, fromJson, TABLE_NAME } from '../postgres-schema.js';
|
|
10
|
+
import { ApprovalAlreadyAnsweredError, submitOrExisting, withdrawnResponse, } from './approval-outcomes.js';
|
|
11
|
+
const DEFAULT_POLL_INTERVAL = 1000;
|
|
12
|
+
/**
|
|
13
|
+
* Approvals in Redis: requests and responses as JSON under their id, with
|
|
14
|
+
* sorted sets (scored by creation time) of pending request ids overall, per
|
|
15
|
+
* workflow and per assignee, so pending lookups never scan the keyspace.
|
|
16
|
+
*/
|
|
17
|
+
export class RedisApprovalStore {
|
|
18
|
+
client;
|
|
19
|
+
prefix;
|
|
20
|
+
watcher;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
this.client = options.client;
|
|
23
|
+
this.prefix = options.keyPrefix ?? 'cogitator:workflow-approvals';
|
|
24
|
+
this.watcher = new ResponseWatcher((requestId) => this.getResponse(requestId), options);
|
|
25
|
+
}
|
|
26
|
+
async createRequest(request) {
|
|
27
|
+
const [previous, answered] = await Promise.all([
|
|
28
|
+
this.getRequest(request.id),
|
|
29
|
+
this.client.get(this.responseKey(request.id)),
|
|
30
|
+
]);
|
|
31
|
+
await this.client.set(this.requestKey(request.id), JSON.stringify(request));
|
|
32
|
+
const indexes = answered === null ? this.pendingIndexes(request) : [];
|
|
33
|
+
if (previous) {
|
|
34
|
+
const outdated = this.pendingIndexes(previous).filter((key) => !indexes.includes(key));
|
|
35
|
+
await Promise.all(outdated.map((key) => this.client.zrem(key, request.id)));
|
|
36
|
+
}
|
|
37
|
+
await Promise.all(indexes.map((key) => this.client.zadd(key, request.createdAt, request.id)));
|
|
38
|
+
}
|
|
39
|
+
async getRequest(id) {
|
|
40
|
+
const raw = await this.client.get(this.requestKey(id));
|
|
41
|
+
return raw ? JSON.parse(raw) : null;
|
|
42
|
+
}
|
|
43
|
+
async getPendingRequests(workflowId) {
|
|
44
|
+
if (workflowId) {
|
|
45
|
+
return this.readPending(this.workflowIndexKey(workflowId), (request) => request.workflowId === workflowId);
|
|
46
|
+
}
|
|
47
|
+
return this.readPending(this.pendingKey(), () => true);
|
|
48
|
+
}
|
|
49
|
+
async getPendingForAssignee(assignee) {
|
|
50
|
+
return this.readPending(this.assigneeIndexKey(assignee), (request) => isAssignedTo(request, assignee));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Records the answer; the first answer wins (claimed by adding the request
|
|
54
|
+
* to the answered set), a later one throws `ApprovalAlreadyAnsweredError`.
|
|
55
|
+
*/
|
|
56
|
+
async submitResponse(response) {
|
|
57
|
+
const claimed = await this.client.zadd(this.answeredKey(), Date.now(), response.requestId);
|
|
58
|
+
if (Number(claimed) !== 1) {
|
|
59
|
+
const existing = await this.getResponse(response.requestId);
|
|
60
|
+
throw new ApprovalAlreadyAnsweredError(response.requestId, existing ?? undefined);
|
|
61
|
+
}
|
|
62
|
+
await this.client.set(this.responseKey(response.requestId), JSON.stringify(response));
|
|
63
|
+
const request = await this.getRequest(response.requestId);
|
|
64
|
+
if (request) {
|
|
65
|
+
await Promise.all(this.pendingIndexes(request).map((key) => this.client.zrem(key, request.id)));
|
|
66
|
+
}
|
|
67
|
+
this.watcher.deliver(response);
|
|
68
|
+
}
|
|
69
|
+
async getResponse(requestId) {
|
|
70
|
+
const raw = await this.client.get(this.responseKey(requestId));
|
|
71
|
+
return raw ? JSON.parse(raw) : null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Removes the request. A request nobody answered yet gets `withdrawnResponse`
|
|
75
|
+
* as its answer, which stays stored so waiters in other processes see it.
|
|
76
|
+
*/
|
|
77
|
+
async deleteRequest(id) {
|
|
78
|
+
const request = await this.getRequest(id);
|
|
79
|
+
const pending = request !== null && (await this.getResponse(id)) === null;
|
|
80
|
+
if (pending) {
|
|
81
|
+
await submitOrExisting(this, withdrawnResponse(id));
|
|
82
|
+
await this.client.del(this.requestKey(id));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.watcher.cancel(id);
|
|
86
|
+
await this.client.del(this.requestKey(id), this.responseKey(id));
|
|
87
|
+
await this.client.zrem(this.answeredKey(), id);
|
|
88
|
+
}
|
|
89
|
+
if (request) {
|
|
90
|
+
await Promise.all(this.pendingIndexes(request).map((key) => this.client.zrem(key, id)));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
onResponse(requestId, callback) {
|
|
94
|
+
return this.watcher.watch(requestId, callback);
|
|
95
|
+
}
|
|
96
|
+
/** Stop polling and drop every registered callback. */
|
|
97
|
+
dispose() {
|
|
98
|
+
this.watcher.dispose();
|
|
99
|
+
}
|
|
100
|
+
async readPending(indexKey, belongs) {
|
|
101
|
+
const ids = await this.client.zrange(indexKey, 0, -1);
|
|
102
|
+
if (ids.length === 0)
|
|
103
|
+
return [];
|
|
104
|
+
const [requests, responses] = await Promise.all([
|
|
105
|
+
this.client.mget(...ids.map((id) => this.requestKey(id))),
|
|
106
|
+
this.client.mget(...ids.map((id) => this.responseKey(id))),
|
|
107
|
+
]);
|
|
108
|
+
const pending = [];
|
|
109
|
+
const stale = [];
|
|
110
|
+
ids.forEach((id, index) => {
|
|
111
|
+
const raw = requests[index];
|
|
112
|
+
const request = raw ? JSON.parse(raw) : null;
|
|
113
|
+
if (request && responses[index] === null && belongs(request))
|
|
114
|
+
pending.push(request);
|
|
115
|
+
else
|
|
116
|
+
stale.push(id);
|
|
117
|
+
});
|
|
118
|
+
if (stale.length > 0)
|
|
119
|
+
await this.client.zrem(indexKey, ...stale);
|
|
120
|
+
return pending;
|
|
121
|
+
}
|
|
122
|
+
pendingIndexes(request) {
|
|
123
|
+
const assignees = new Set(request.assigneeGroup ?? []);
|
|
124
|
+
if (request.assignee !== undefined)
|
|
125
|
+
assignees.add(request.assignee);
|
|
126
|
+
return [
|
|
127
|
+
this.pendingKey(),
|
|
128
|
+
this.workflowIndexKey(request.workflowId),
|
|
129
|
+
...[...assignees].map((assignee) => this.assigneeIndexKey(assignee)),
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
requestKey(id) {
|
|
133
|
+
return `${this.prefix}:request:${id}`;
|
|
134
|
+
}
|
|
135
|
+
answeredKey() {
|
|
136
|
+
return `${this.prefix}:answered`;
|
|
137
|
+
}
|
|
138
|
+
responseKey(requestId) {
|
|
139
|
+
return `${this.prefix}:response:${requestId}`;
|
|
140
|
+
}
|
|
141
|
+
pendingKey() {
|
|
142
|
+
return `${this.prefix}:pending`;
|
|
143
|
+
}
|
|
144
|
+
workflowIndexKey(workflowId) {
|
|
145
|
+
return `${this.prefix}:pending:workflow:${workflowId}`;
|
|
146
|
+
}
|
|
147
|
+
assigneeIndexKey(assignee) {
|
|
148
|
+
return `${this.prefix}:pending:assignee:${assignee}`;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Approvals in Postgres: a requests table with the workflow and assignees
|
|
153
|
+
* as indexed columns next to the JSONB request, and a responses table keyed
|
|
154
|
+
* by request id; pending means no matching response row.
|
|
155
|
+
*/
|
|
156
|
+
export class PostgresApprovalStore {
|
|
157
|
+
client;
|
|
158
|
+
requests;
|
|
159
|
+
responses;
|
|
160
|
+
indexPrefix;
|
|
161
|
+
watcher;
|
|
162
|
+
ready;
|
|
163
|
+
constructor(options) {
|
|
164
|
+
const prefix = options.tablePrefix ?? 'cogitator_workflow_approvals';
|
|
165
|
+
if (!TABLE_NAME.test(prefix)) {
|
|
166
|
+
throw new Error(`Invalid approval table prefix: ${prefix}`);
|
|
167
|
+
}
|
|
168
|
+
this.client = options.client;
|
|
169
|
+
this.requests = `${prefix}_requests`;
|
|
170
|
+
this.responses = `${prefix}_responses`;
|
|
171
|
+
this.indexPrefix = prefix.replace('.', '_');
|
|
172
|
+
this.watcher = new ResponseWatcher((requestId) => this.getResponse(requestId), options);
|
|
173
|
+
}
|
|
174
|
+
async createRequest(request) {
|
|
175
|
+
await this.ensureTables();
|
|
176
|
+
await this.client.query(`INSERT INTO ${this.requests} (id, workflow_id, assignee, assignee_group, created_at, data)
|
|
177
|
+
VALUES ($1, $2, $3, $4, $5, $6)
|
|
178
|
+
ON CONFLICT (id) DO UPDATE
|
|
179
|
+
SET workflow_id = EXCLUDED.workflow_id, assignee = EXCLUDED.assignee,
|
|
180
|
+
assignee_group = EXCLUDED.assignee_group, created_at = EXCLUDED.created_at,
|
|
181
|
+
data = EXCLUDED.data`, [
|
|
182
|
+
request.id,
|
|
183
|
+
request.workflowId,
|
|
184
|
+
request.assignee ?? null,
|
|
185
|
+
request.assigneeGroup ?? [],
|
|
186
|
+
request.createdAt,
|
|
187
|
+
JSON.stringify(request),
|
|
188
|
+
]);
|
|
189
|
+
}
|
|
190
|
+
async getRequest(id) {
|
|
191
|
+
await this.ensureTables();
|
|
192
|
+
const { rows } = await this.client.query(`SELECT data FROM ${this.requests} WHERE id = $1`, [
|
|
193
|
+
id,
|
|
194
|
+
]);
|
|
195
|
+
return rows[0] ? fromJson(rows[0].data) : null;
|
|
196
|
+
}
|
|
197
|
+
async getPendingRequests(workflowId) {
|
|
198
|
+
await this.ensureTables();
|
|
199
|
+
const { rows } = workflowId
|
|
200
|
+
? await this.client.query(`SELECT r.data FROM ${this.requests} r
|
|
201
|
+
WHERE r.workflow_id = $1 AND ${this.unanswered()}
|
|
202
|
+
ORDER BY r.created_at, r.id`, [workflowId])
|
|
203
|
+
: await this.client.query(`SELECT r.data FROM ${this.requests} r
|
|
204
|
+
WHERE ${this.unanswered()}
|
|
205
|
+
ORDER BY r.created_at, r.id`);
|
|
206
|
+
return rows.map((row) => fromJson(row.data));
|
|
207
|
+
}
|
|
208
|
+
async getPendingForAssignee(assignee) {
|
|
209
|
+
await this.ensureTables();
|
|
210
|
+
const { rows } = await this.client.query(`SELECT r.data FROM ${this.requests} r
|
|
211
|
+
WHERE (r.assignee = $1 OR r.assignee_group @> ARRAY[$1]::text[]) AND ${this.unanswered()}
|
|
212
|
+
ORDER BY r.created_at, r.id`, [assignee]);
|
|
213
|
+
return rows.map((row) => fromJson(row.data));
|
|
214
|
+
}
|
|
215
|
+
/** Records the answer; the first answer wins, a later one throws `ApprovalAlreadyAnsweredError`. */
|
|
216
|
+
async submitResponse(response) {
|
|
217
|
+
await this.ensureTables();
|
|
218
|
+
const { rows } = await this.client.query(`INSERT INTO ${this.responses} (request_id, data)
|
|
219
|
+
VALUES ($1, $2)
|
|
220
|
+
ON CONFLICT (request_id) DO NOTHING
|
|
221
|
+
RETURNING request_id`, [response.requestId, JSON.stringify(response)]);
|
|
222
|
+
if (rows.length === 0) {
|
|
223
|
+
const existing = await this.getResponse(response.requestId);
|
|
224
|
+
throw new ApprovalAlreadyAnsweredError(response.requestId, existing ?? undefined);
|
|
225
|
+
}
|
|
226
|
+
this.watcher.deliver(response);
|
|
227
|
+
}
|
|
228
|
+
async getResponse(requestId) {
|
|
229
|
+
await this.ensureTables();
|
|
230
|
+
const { rows } = await this.client.query(`SELECT data FROM ${this.responses} WHERE request_id = $1`, [requestId]);
|
|
231
|
+
return rows[0] ? fromJson(rows[0].data) : null;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Removes the request. A request nobody answered yet gets `withdrawnResponse`
|
|
235
|
+
* as its answer, which stays stored so waiters in other processes see it.
|
|
236
|
+
*/
|
|
237
|
+
async deleteRequest(id) {
|
|
238
|
+
await this.ensureTables();
|
|
239
|
+
const pending = (await this.getRequest(id)) !== null && (await this.getResponse(id)) === null;
|
|
240
|
+
if (pending) {
|
|
241
|
+
await submitOrExisting(this, withdrawnResponse(id));
|
|
242
|
+
await this.client.query(`DELETE FROM ${this.requests} WHERE id = $1`, [id]);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
this.watcher.cancel(id);
|
|
246
|
+
await this.client.query(`WITH removed AS (DELETE FROM ${this.responses} WHERE request_id = $1)
|
|
247
|
+
DELETE FROM ${this.requests} WHERE id = $1`, [id]);
|
|
248
|
+
}
|
|
249
|
+
onResponse(requestId, callback) {
|
|
250
|
+
return this.watcher.watch(requestId, callback);
|
|
251
|
+
}
|
|
252
|
+
/** Stop polling and drop every registered callback. */
|
|
253
|
+
dispose() {
|
|
254
|
+
this.watcher.dispose();
|
|
255
|
+
}
|
|
256
|
+
unanswered() {
|
|
257
|
+
return `NOT EXISTS (SELECT 1 FROM ${this.responses} s WHERE s.request_id = r.id)`;
|
|
258
|
+
}
|
|
259
|
+
ensureTables() {
|
|
260
|
+
this.ready ??= this.createTables().catch((error) => {
|
|
261
|
+
this.ready = undefined;
|
|
262
|
+
throw error;
|
|
263
|
+
});
|
|
264
|
+
return this.ready;
|
|
265
|
+
}
|
|
266
|
+
async createTables() {
|
|
267
|
+
const statements = [
|
|
268
|
+
`CREATE TABLE IF NOT EXISTS ${this.requests} (
|
|
269
|
+
id TEXT PRIMARY KEY,
|
|
270
|
+
workflow_id TEXT NOT NULL,
|
|
271
|
+
assignee TEXT,
|
|
272
|
+
assignee_group TEXT[] NOT NULL DEFAULT '{}',
|
|
273
|
+
created_at BIGINT NOT NULL,
|
|
274
|
+
data JSONB NOT NULL
|
|
275
|
+
)`,
|
|
276
|
+
`CREATE TABLE IF NOT EXISTS ${this.responses} (
|
|
277
|
+
request_id TEXT PRIMARY KEY,
|
|
278
|
+
data JSONB NOT NULL
|
|
279
|
+
)`,
|
|
280
|
+
`CREATE INDEX IF NOT EXISTS ${this.indexPrefix}_requests_workflow_idx
|
|
281
|
+
ON ${this.requests} (workflow_id, created_at)`,
|
|
282
|
+
`CREATE INDEX IF NOT EXISTS ${this.indexPrefix}_requests_assignee_idx
|
|
283
|
+
ON ${this.requests} (assignee)`,
|
|
284
|
+
`CREATE INDEX IF NOT EXISTS ${this.indexPrefix}_requests_assignee_group_idx
|
|
285
|
+
ON ${this.requests} USING GIN (assignee_group)`,
|
|
286
|
+
];
|
|
287
|
+
for (const statement of statements)
|
|
288
|
+
await createIfMissing(this.client, statement);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Callbacks waiting for responses: delivered at once for responses submitted
|
|
293
|
+
* through the store, and found by polling for responses written elsewhere
|
|
294
|
+
* while at least one callback for the request is registered.
|
|
295
|
+
*/
|
|
296
|
+
class ResponseWatcher {
|
|
297
|
+
fetch;
|
|
298
|
+
watches = new Map();
|
|
299
|
+
pollInterval;
|
|
300
|
+
onPollError;
|
|
301
|
+
constructor(fetch, options) {
|
|
302
|
+
this.fetch = fetch;
|
|
303
|
+
this.pollInterval = options.pollInterval ?? DEFAULT_POLL_INTERVAL;
|
|
304
|
+
this.onPollError = options.onPollError;
|
|
305
|
+
}
|
|
306
|
+
watch(requestId, callback) {
|
|
307
|
+
let watch = this.watches.get(requestId);
|
|
308
|
+
if (!watch) {
|
|
309
|
+
watch = { listeners: new Set() };
|
|
310
|
+
this.watches.set(requestId, watch);
|
|
311
|
+
this.schedule(requestId, watch);
|
|
312
|
+
}
|
|
313
|
+
const listener = { callback };
|
|
314
|
+
watch.listeners.add(listener);
|
|
315
|
+
void this.check(requestId, watch);
|
|
316
|
+
const subscribed = watch;
|
|
317
|
+
return () => {
|
|
318
|
+
subscribed.listeners.delete(listener);
|
|
319
|
+
if (subscribed.listeners.size === 0)
|
|
320
|
+
this.stop(requestId, subscribed);
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
deliver(response) {
|
|
324
|
+
const watch = this.watches.get(response.requestId);
|
|
325
|
+
if (!watch)
|
|
326
|
+
return;
|
|
327
|
+
this.stop(response.requestId, watch);
|
|
328
|
+
const listeners = [...watch.listeners];
|
|
329
|
+
watch.listeners.clear();
|
|
330
|
+
for (const { callback } of listeners) {
|
|
331
|
+
try {
|
|
332
|
+
callback(response);
|
|
333
|
+
}
|
|
334
|
+
catch { }
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
cancel(requestId) {
|
|
338
|
+
const watch = this.watches.get(requestId);
|
|
339
|
+
if (!watch)
|
|
340
|
+
return;
|
|
341
|
+
this.stop(requestId, watch);
|
|
342
|
+
watch.listeners.clear();
|
|
343
|
+
}
|
|
344
|
+
dispose() {
|
|
345
|
+
for (const requestId of [...this.watches.keys()])
|
|
346
|
+
this.cancel(requestId);
|
|
347
|
+
}
|
|
348
|
+
stop(requestId, watch) {
|
|
349
|
+
if (watch.timer !== undefined)
|
|
350
|
+
clearTimeout(watch.timer);
|
|
351
|
+
watch.timer = undefined;
|
|
352
|
+
if (this.watches.get(requestId) === watch)
|
|
353
|
+
this.watches.delete(requestId);
|
|
354
|
+
}
|
|
355
|
+
schedule(requestId, watch) {
|
|
356
|
+
const timer = setTimeout(() => void this.poll(requestId, watch), this.pollInterval);
|
|
357
|
+
if (typeof timer === 'object' && 'unref' in timer)
|
|
358
|
+
timer.unref();
|
|
359
|
+
watch.timer = timer;
|
|
360
|
+
}
|
|
361
|
+
async poll(requestId, watch) {
|
|
362
|
+
watch.timer = undefined;
|
|
363
|
+
await this.check(requestId, watch);
|
|
364
|
+
if (this.watches.get(requestId) === watch)
|
|
365
|
+
this.schedule(requestId, watch);
|
|
366
|
+
}
|
|
367
|
+
async check(requestId, watch) {
|
|
368
|
+
let response;
|
|
369
|
+
try {
|
|
370
|
+
response = await this.fetch(requestId);
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
this.onPollError?.(error, requestId);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if (response && this.watches.get(requestId) === watch)
|
|
377
|
+
this.deliver(response);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
function isAssignedTo(request, assignee) {
|
|
381
|
+
return request.assignee === assignee || (request.assigneeGroup?.includes(assignee) ?? false);
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=durable-approval-stores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-approval-stores.js","sourceRoot":"","sources":["../../src/human/durable-approval-stores.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,15 +30,21 @@ export interface HumanNodeResult<S extends WorkflowState> {
|
|
|
30
30
|
state: S;
|
|
31
31
|
timedOut?: boolean;
|
|
32
32
|
escalated?: boolean;
|
|
33
|
+
/** The request was deleted, or expired, before anyone answered */
|
|
34
|
+
withdrawn?: boolean;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Execute a human approval node
|
|
36
38
|
*/
|
|
37
39
|
export declare function executeHumanNode<S extends WorkflowState>(state: S, config: HumanNodeConfig<S>, context: HumanNodeContext): Promise<HumanNodeResult<S>>;
|
|
40
|
+
/** A human node config with its name set, as the node factories return it. */
|
|
41
|
+
export type NamedHumanNodeConfig<S extends WorkflowState> = HumanNodeConfig<S> & {
|
|
42
|
+
name: string;
|
|
43
|
+
};
|
|
38
44
|
/**
|
|
39
45
|
* Create a human approval node factory
|
|
40
46
|
*/
|
|
41
|
-
export declare function humanNode<S extends WorkflowState>(name: string, approval: HumanNodeConfig<S>['approval']):
|
|
47
|
+
export declare function humanNode<S extends WorkflowState>(name: string, approval: HumanNodeConfig<S>['approval']): NamedHumanNodeConfig<S>;
|
|
42
48
|
/**
|
|
43
49
|
* Create a simple approve/reject node
|
|
44
50
|
*/
|
|
@@ -49,7 +55,7 @@ export declare function approvalNode<S extends WorkflowState>(name: string, opti
|
|
|
49
55
|
timeout?: number;
|
|
50
56
|
timeoutAction?: 'approve' | 'reject' | 'fail';
|
|
51
57
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
52
|
-
}):
|
|
58
|
+
}): NamedHumanNodeConfig<S>;
|
|
53
59
|
/**
|
|
54
60
|
* Create a multi-choice selection node
|
|
55
61
|
*/
|
|
@@ -60,7 +66,7 @@ export declare function choiceNode<S extends WorkflowState>(name: string, option
|
|
|
60
66
|
assignee?: string | ((state: S) => string);
|
|
61
67
|
timeout?: number;
|
|
62
68
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
63
|
-
}):
|
|
69
|
+
}): NamedHumanNodeConfig<S>;
|
|
64
70
|
/**
|
|
65
71
|
* Create a free-form input node
|
|
66
72
|
*/
|
|
@@ -70,7 +76,7 @@ export declare function inputNode<S extends WorkflowState>(name: string, options
|
|
|
70
76
|
assignee?: string | ((state: S) => string);
|
|
71
77
|
timeout?: number;
|
|
72
78
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
73
|
-
}):
|
|
79
|
+
}): NamedHumanNodeConfig<S>;
|
|
74
80
|
/**
|
|
75
81
|
* Create a rating node
|
|
76
82
|
*/
|
|
@@ -80,7 +86,7 @@ export declare function ratingNode<S extends WorkflowState>(name: string, option
|
|
|
80
86
|
assignee?: string | ((state: S) => string);
|
|
81
87
|
timeout?: number;
|
|
82
88
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
83
|
-
}):
|
|
89
|
+
}): NamedHumanNodeConfig<S>;
|
|
84
90
|
/**
|
|
85
91
|
* Create an approval chain node
|
|
86
92
|
*/
|
|
@@ -89,7 +95,7 @@ export declare function chainNode<S extends WorkflowState>(name: string, options
|
|
|
89
95
|
description?: string | ((state: S) => string);
|
|
90
96
|
chain: ApprovalChainStep[];
|
|
91
97
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
92
|
-
}):
|
|
98
|
+
}): NamedHumanNodeConfig<S>;
|
|
93
99
|
/**
|
|
94
100
|
* Create a manager → director → VP chain
|
|
95
101
|
*/
|
|
@@ -100,5 +106,5 @@ export declare function managementChain<S extends WorkflowState>(name: string, o
|
|
|
100
106
|
director?: string;
|
|
101
107
|
vp?: string;
|
|
102
108
|
timeoutPerStep?: number;
|
|
103
|
-
}):
|
|
109
|
+
}): NamedHumanNodeConfig<S>;
|
|
104
110
|
//# sourceMappingURL=human-node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human-node.d.ts","sourceRoot":"","sources":["../../src/human/human-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAEf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAEhB,cAAc,EACd,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"human-node.d.ts","sourceRoot":"","sources":["../../src/human/human-node.ts"],"names":[],"mappings":"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"}
|
package/dist/human/human-node.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Priority-based routing
|
|
11
11
|
*/
|
|
12
12
|
import { nanoid } from 'nanoid';
|
|
13
|
+
import { isUnanswered, submitOrExisting, WITHDRAWN } from './approval-outcomes.js';
|
|
13
14
|
/**
|
|
14
15
|
* Execute a human approval node
|
|
15
16
|
*/
|
|
@@ -45,7 +46,7 @@ export async function executeHumanNode(state, config, context) {
|
|
|
45
46
|
await context.approvalStore.createRequest(request);
|
|
46
47
|
await context.approvalNotifier?.notify(request);
|
|
47
48
|
const response = await waitForResponse(request, context.approvalStore, context.approvalNotifier);
|
|
48
|
-
const approved = isApproved(request.type, response.decision);
|
|
49
|
+
const approved = !isUnanswered(response) && isApproved(request.type, response.decision);
|
|
49
50
|
return {
|
|
50
51
|
approved,
|
|
51
52
|
decision: response.decision,
|
|
@@ -53,6 +54,7 @@ export async function executeHumanNode(state, config, context) {
|
|
|
53
54
|
state,
|
|
54
55
|
timedOut: response.respondedBy === '__timeout__',
|
|
55
56
|
escalated: response.respondedBy === '__escalation__',
|
|
57
|
+
withdrawn: response.respondedBy === WITHDRAWN,
|
|
56
58
|
};
|
|
57
59
|
}
|
|
58
60
|
/**
|
|
@@ -99,7 +101,8 @@ async function executeApprovalChain(state, config, context, chain) {
|
|
|
99
101
|
if (timedOut && step.timeoutAction === 'skip') {
|
|
100
102
|
continue;
|
|
101
103
|
}
|
|
102
|
-
if (step.required &&
|
|
104
|
+
if (step.required &&
|
|
105
|
+
(isUnanswered(response) || !isApproved(approval.type, response.decision))) {
|
|
103
106
|
return {
|
|
104
107
|
approved: false,
|
|
105
108
|
decision: response.decision,
|
|
@@ -107,6 +110,7 @@ async function executeApprovalChain(state, config, context, chain) {
|
|
|
107
110
|
state,
|
|
108
111
|
timedOut,
|
|
109
112
|
escalated: response.respondedBy === '__escalation__',
|
|
113
|
+
withdrawn: response.respondedBy === WITHDRAWN,
|
|
110
114
|
};
|
|
111
115
|
}
|
|
112
116
|
}
|
|
@@ -153,8 +157,7 @@ async function createFailResponse(request, store) {
|
|
|
153
157
|
respondedAt: Date.now(),
|
|
154
158
|
comment: 'Request timed out without response',
|
|
155
159
|
};
|
|
156
|
-
|
|
157
|
-
return response;
|
|
160
|
+
return submitOrExisting(store, response);
|
|
158
161
|
}
|
|
159
162
|
/**
|
|
160
163
|
* Handle timeout based on configured action
|
|
@@ -171,8 +174,7 @@ async function handleTimeout(request, store, notifier) {
|
|
|
171
174
|
respondedAt: Date.now(),
|
|
172
175
|
comment: 'Auto-approved due to timeout',
|
|
173
176
|
};
|
|
174
|
-
|
|
175
|
-
return response;
|
|
177
|
+
return submitOrExisting(store, response);
|
|
176
178
|
}
|
|
177
179
|
case 'reject': {
|
|
178
180
|
const response = {
|
|
@@ -182,8 +184,7 @@ async function handleTimeout(request, store, notifier) {
|
|
|
182
184
|
respondedAt: Date.now(),
|
|
183
185
|
comment: 'Auto-rejected due to timeout',
|
|
184
186
|
};
|
|
185
|
-
|
|
186
|
-
return response;
|
|
187
|
+
return submitOrExisting(store, response);
|
|
187
188
|
}
|
|
188
189
|
case 'escalate': {
|
|
189
190
|
if (request.escalateTo) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human-node.js","sourceRoot":"","sources":["../../src/human/human-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"human-node.js","sourceRoot":"","sources":["../../src/human/human-node.ts"],"names":[],"mappings":"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"}
|
package/dist/human/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - Audit trail via checkpoint store
|
|
13
13
|
*/
|
|
14
14
|
export { InMemoryApprovalStore, FileApprovalStore, withDelegation } from './approval-store.js';
|
|
15
|
+
export { ApprovalAlreadyAnsweredError, WITHDRAWN, isUnanswered, submitOrExisting, withdrawnResponse, } from './approval-outcomes.js';
|
|
15
16
|
export { ConsoleNotifier, WebhookNotifier, CompositeNotifier, slackNotifier, filteredNotifier, priorityRouter, nullNotifier, } from './notifiers.js';
|
|
16
|
-
export { type HumanNodeContext, type HumanNodeResult, executeHumanNode, humanNode, approvalNode, choiceNode, inputNode, ratingNode, chainNode, managementChain, } from './human-node.js';
|
|
17
|
+
export { type HumanNodeContext, type HumanNodeResult, type NamedHumanNodeConfig, executeHumanNode, humanNode, approvalNode, choiceNode, inputNode, ratingNode, chainNode, managementChain, } from './human-node.js';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EACL,4BAA4B,EAC5B,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,eAAe,GAChB,MAAM,cAAc,CAAC"}
|
package/dist/human/index.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - Audit trail via checkpoint store
|
|
13
13
|
*/
|
|
14
14
|
export { InMemoryApprovalStore, FileApprovalStore, withDelegation } from './approval-store.js';
|
|
15
|
+
export { ApprovalAlreadyAnsweredError, WITHDRAWN, isUnanswered, submitOrExisting, withdrawnResponse, } from './approval-outcomes.js';
|
|
15
16
|
export { ConsoleNotifier, WebhookNotifier, CompositeNotifier, slackNotifier, filteredNotifier, priorityRouter, nullNotifier, } from './notifiers.js';
|
|
16
17
|
export { executeHumanNode, humanNode, approvalNode, choiceNode, inputNode, ratingNode, chainNode, managementChain, } from './human-node.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/dist/human/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EACL,4BAA4B,EAC5B,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAIL,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,eAAe,GAChB,MAAM,cAAc,CAAC"}
|