@cogitator-ai/workflows 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/dist/builder.d.ts +39 -0
  4. package/dist/builder.d.ts.map +1 -0
  5. package/dist/builder.js +224 -0
  6. package/dist/builder.js.map +1 -0
  7. package/dist/checkpoint.d.ts +33 -0
  8. package/dist/checkpoint.d.ts.map +1 -0
  9. package/dist/checkpoint.js +108 -0
  10. package/dist/checkpoint.js.map +1 -0
  11. package/dist/executor.d.ts +24 -0
  12. package/dist/executor.d.ts.map +1 -0
  13. package/dist/executor.js +207 -0
  14. package/dist/executor.js.map +1 -0
  15. package/dist/human/approval-store.d.ts +95 -0
  16. package/dist/human/approval-store.d.ts.map +1 -0
  17. package/dist/human/approval-store.js +377 -0
  18. package/dist/human/approval-store.js.map +1 -0
  19. package/dist/human/human-node.d.ts +104 -0
  20. package/dist/human/human-node.d.ts.map +1 -0
  21. package/dist/human/human-node.js +342 -0
  22. package/dist/human/human-node.js.map +1 -0
  23. package/dist/human/index.d.ts +17 -0
  24. package/dist/human/index.d.ts.map +1 -0
  25. package/dist/human/index.js +17 -0
  26. package/dist/human/index.js.map +1 -0
  27. package/dist/human/notifiers.d.ts +85 -0
  28. package/dist/human/notifiers.d.ts.map +1 -0
  29. package/dist/human/notifiers.js +289 -0
  30. package/dist/human/notifiers.js.map +1 -0
  31. package/dist/index.d.ts +32 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +19 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/manager/index.d.ts +19 -0
  36. package/dist/manager/index.d.ts.map +1 -0
  37. package/dist/manager/index.js +17 -0
  38. package/dist/manager/index.js.map +1 -0
  39. package/dist/manager/run-store.d.ts +78 -0
  40. package/dist/manager/run-store.d.ts.map +1 -0
  41. package/dist/manager/run-store.js +390 -0
  42. package/dist/manager/run-store.js.map +1 -0
  43. package/dist/manager/scheduler.d.ts +159 -0
  44. package/dist/manager/scheduler.d.ts.map +1 -0
  45. package/dist/manager/scheduler.js +355 -0
  46. package/dist/manager/scheduler.js.map +1 -0
  47. package/dist/manager/workflow-manager.d.ts +114 -0
  48. package/dist/manager/workflow-manager.d.ts.map +1 -0
  49. package/dist/manager/workflow-manager.js +460 -0
  50. package/dist/manager/workflow-manager.js.map +1 -0
  51. package/dist/nodes/agent.d.ts +24 -0
  52. package/dist/nodes/agent.d.ts.map +1 -0
  53. package/dist/nodes/agent.js +37 -0
  54. package/dist/nodes/agent.js.map +1 -0
  55. package/dist/nodes/base.d.ts +12 -0
  56. package/dist/nodes/base.d.ts.map +1 -0
  57. package/dist/nodes/base.js +5 -0
  58. package/dist/nodes/base.js.map +1 -0
  59. package/dist/nodes/function.d.ts +27 -0
  60. package/dist/nodes/function.d.ts.map +1 -0
  61. package/dist/nodes/function.js +29 -0
  62. package/dist/nodes/function.js.map +1 -0
  63. package/dist/nodes/index.d.ts +8 -0
  64. package/dist/nodes/index.d.ts.map +1 -0
  65. package/dist/nodes/index.js +8 -0
  66. package/dist/nodes/index.js.map +1 -0
  67. package/dist/nodes/tool.d.ts +19 -0
  68. package/dist/nodes/tool.d.ts.map +1 -0
  69. package/dist/nodes/tool.js +26 -0
  70. package/dist/nodes/tool.js.map +1 -0
  71. package/dist/observability/exporters.d.ts +93 -0
  72. package/dist/observability/exporters.d.ts.map +1 -0
  73. package/dist/observability/exporters.js +330 -0
  74. package/dist/observability/exporters.js.map +1 -0
  75. package/dist/observability/index.d.ts +17 -0
  76. package/dist/observability/index.d.ts.map +1 -0
  77. package/dist/observability/index.js +17 -0
  78. package/dist/observability/index.js.map +1 -0
  79. package/dist/observability/metrics.d.ts +114 -0
  80. package/dist/observability/metrics.d.ts.map +1 -0
  81. package/dist/observability/metrics.js +435 -0
  82. package/dist/observability/metrics.js.map +1 -0
  83. package/dist/observability/span-attributes.d.ts +95 -0
  84. package/dist/observability/span-attributes.d.ts.map +1 -0
  85. package/dist/observability/span-attributes.js +142 -0
  86. package/dist/observability/span-attributes.js.map +1 -0
  87. package/dist/observability/tracer.d.ts +110 -0
  88. package/dist/observability/tracer.d.ts.map +1 -0
  89. package/dist/observability/tracer.js +409 -0
  90. package/dist/observability/tracer.js.map +1 -0
  91. package/dist/patterns/index.d.ts +15 -0
  92. package/dist/patterns/index.d.ts.map +1 -0
  93. package/dist/patterns/index.js +15 -0
  94. package/dist/patterns/index.js.map +1 -0
  95. package/dist/patterns/map-reduce.d.ts +223 -0
  96. package/dist/patterns/map-reduce.d.ts.map +1 -0
  97. package/dist/patterns/map-reduce.js +378 -0
  98. package/dist/patterns/map-reduce.js.map +1 -0
  99. package/dist/saga/circuit-breaker.d.ts +153 -0
  100. package/dist/saga/circuit-breaker.d.ts.map +1 -0
  101. package/dist/saga/circuit-breaker.js +306 -0
  102. package/dist/saga/circuit-breaker.js.map +1 -0
  103. package/dist/saga/compensation.d.ts +134 -0
  104. package/dist/saga/compensation.d.ts.map +1 -0
  105. package/dist/saga/compensation.js +240 -0
  106. package/dist/saga/compensation.js.map +1 -0
  107. package/dist/saga/dead-letter.d.ts +113 -0
  108. package/dist/saga/dead-letter.d.ts.map +1 -0
  109. package/dist/saga/dead-letter.js +307 -0
  110. package/dist/saga/dead-letter.js.map +1 -0
  111. package/dist/saga/idempotency.d.ts +95 -0
  112. package/dist/saga/idempotency.d.ts.map +1 -0
  113. package/dist/saga/idempotency.js +266 -0
  114. package/dist/saga/idempotency.js.map +1 -0
  115. package/dist/saga/index.d.ts +16 -0
  116. package/dist/saga/index.d.ts.map +1 -0
  117. package/dist/saga/index.js +16 -0
  118. package/dist/saga/index.js.map +1 -0
  119. package/dist/saga/retry.d.ts +59 -0
  120. package/dist/saga/retry.d.ts.map +1 -0
  121. package/dist/saga/retry.js +222 -0
  122. package/dist/saga/retry.js.map +1 -0
  123. package/dist/scheduler.d.ts +37 -0
  124. package/dist/scheduler.d.ts.map +1 -0
  125. package/dist/scheduler.js +151 -0
  126. package/dist/scheduler.js.map +1 -0
  127. package/dist/subworkflows/index.d.ts +16 -0
  128. package/dist/subworkflows/index.d.ts.map +1 -0
  129. package/dist/subworkflows/index.js +16 -0
  130. package/dist/subworkflows/index.js.map +1 -0
  131. package/dist/subworkflows/parallel-subworkflows.d.ts +139 -0
  132. package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -0
  133. package/dist/subworkflows/parallel-subworkflows.js +270 -0
  134. package/dist/subworkflows/parallel-subworkflows.js.map +1 -0
  135. package/dist/subworkflows/subworkflow-node.d.ts +136 -0
  136. package/dist/subworkflows/subworkflow-node.d.ts.map +1 -0
  137. package/dist/subworkflows/subworkflow-node.js +164 -0
  138. package/dist/subworkflows/subworkflow-node.js.map +1 -0
  139. package/dist/timers/cron-parser.d.ts +110 -0
  140. package/dist/timers/cron-parser.d.ts.map +1 -0
  141. package/dist/timers/cron-parser.js +412 -0
  142. package/dist/timers/cron-parser.js.map +1 -0
  143. package/dist/timers/index.d.ts +18 -0
  144. package/dist/timers/index.d.ts.map +1 -0
  145. package/dist/timers/index.js +18 -0
  146. package/dist/timers/index.js.map +1 -0
  147. package/dist/timers/timer-manager.d.ts +219 -0
  148. package/dist/timers/timer-manager.d.ts.map +1 -0
  149. package/dist/timers/timer-manager.js +351 -0
  150. package/dist/timers/timer-manager.js.map +1 -0
  151. package/dist/timers/timer-node.d.ts +144 -0
  152. package/dist/timers/timer-node.d.ts.map +1 -0
  153. package/dist/timers/timer-node.js +246 -0
  154. package/dist/timers/timer-node.js.map +1 -0
  155. package/dist/timers/timer-store.d.ts +90 -0
  156. package/dist/timers/timer-store.d.ts.map +1 -0
  157. package/dist/timers/timer-store.js +357 -0
  158. package/dist/timers/timer-store.js.map +1 -0
  159. package/dist/triggers/cron-trigger.d.ts +102 -0
  160. package/dist/triggers/cron-trigger.d.ts.map +1 -0
  161. package/dist/triggers/cron-trigger.js +309 -0
  162. package/dist/triggers/cron-trigger.js.map +1 -0
  163. package/dist/triggers/index.d.ts +14 -0
  164. package/dist/triggers/index.d.ts.map +1 -0
  165. package/dist/triggers/index.js +10 -0
  166. package/dist/triggers/index.js.map +1 -0
  167. package/dist/triggers/rate-limiter.d.ts +130 -0
  168. package/dist/triggers/rate-limiter.d.ts.map +1 -0
  169. package/dist/triggers/rate-limiter.js +294 -0
  170. package/dist/triggers/rate-limiter.js.map +1 -0
  171. package/dist/triggers/trigger-manager.d.ts +166 -0
  172. package/dist/triggers/trigger-manager.d.ts.map +1 -0
  173. package/dist/triggers/trigger-manager.js +436 -0
  174. package/dist/triggers/trigger-manager.js.map +1 -0
  175. package/dist/triggers/webhook-trigger.d.ts +150 -0
  176. package/dist/triggers/webhook-trigger.d.ts.map +1 -0
  177. package/dist/triggers/webhook-trigger.js +452 -0
  178. package/dist/triggers/webhook-trigger.js.map +1 -0
  179. package/package.json +44 -0
@@ -0,0 +1,390 @@
1
+ /**
2
+ * Workflow Run Store implementations
3
+ *
4
+ * Features:
5
+ * - In-memory store for development/testing
6
+ * - File-based store for persistence
7
+ * - Query filtering and pagination
8
+ * - Statistics aggregation
9
+ */
10
+ import * as fs from 'node:fs/promises';
11
+ import * as path from 'node:path';
12
+ /**
13
+ * In-memory run store for development and testing
14
+ */
15
+ export class InMemoryRunStore {
16
+ runs = new Map();
17
+ async save(run) {
18
+ this.runs.set(run.id, { ...run });
19
+ }
20
+ async get(id) {
21
+ return this.runs.get(id) ?? null;
22
+ }
23
+ async list(filters) {
24
+ let runs = Array.from(this.runs.values());
25
+ if (filters) {
26
+ runs = this.applyFilters(runs, filters);
27
+ }
28
+ return runs;
29
+ }
30
+ async count(filters) {
31
+ let runs = Array.from(this.runs.values());
32
+ if (filters) {
33
+ const countFilters = { ...filters };
34
+ delete countFilters.limit;
35
+ delete countFilters.offset;
36
+ runs = this.applyFilters(runs, countFilters);
37
+ }
38
+ return runs.length;
39
+ }
40
+ async update(id, updates) {
41
+ const run = this.runs.get(id);
42
+ if (run) {
43
+ this.runs.set(id, { ...run, ...updates });
44
+ }
45
+ }
46
+ async delete(id) {
47
+ this.runs.delete(id);
48
+ }
49
+ async getStats(workflowName) {
50
+ let runs = Array.from(this.runs.values());
51
+ if (workflowName) {
52
+ runs = runs.filter((r) => r.workflowName === workflowName);
53
+ }
54
+ return this.calculateStats(runs);
55
+ }
56
+ async cleanup(olderThan) {
57
+ const threshold = Date.now() - olderThan;
58
+ let deleted = 0;
59
+ for (const [id, run] of this.runs) {
60
+ const timestamp = run.completedAt ?? run.startedAt ?? 0;
61
+ if (timestamp < threshold && this.isTerminal(run.status)) {
62
+ this.runs.delete(id);
63
+ deleted++;
64
+ }
65
+ }
66
+ return deleted;
67
+ }
68
+ applyFilters(runs, filters) {
69
+ let result = runs;
70
+ if (filters.status) {
71
+ const statuses = Array.isArray(filters.status)
72
+ ? filters.status
73
+ : [filters.status];
74
+ result = result.filter((r) => statuses.includes(r.status));
75
+ }
76
+ if (filters.workflowName) {
77
+ result = result.filter((r) => r.workflowName === filters.workflowName);
78
+ }
79
+ if (filters.tags && filters.tags.length > 0) {
80
+ result = result.filter((r) => filters.tags.some((tag) => r.tags.includes(tag)));
81
+ }
82
+ if (filters.triggerId) {
83
+ result = result.filter((r) => r.triggerId === filters.triggerId);
84
+ }
85
+ if (filters.parentRunId) {
86
+ result = result.filter((r) => r.parentRunId === filters.parentRunId);
87
+ }
88
+ if (filters.startedAfter) {
89
+ result = result.filter((r) => r.startedAt && r.startedAt >= filters.startedAfter);
90
+ }
91
+ if (filters.startedBefore) {
92
+ result = result.filter((r) => r.startedAt && r.startedAt <= filters.startedBefore);
93
+ }
94
+ if (filters.completedAfter) {
95
+ result = result.filter((r) => r.completedAt && r.completedAt >= filters.completedAfter);
96
+ }
97
+ if (filters.completedBefore) {
98
+ result = result.filter((r) => r.completedAt && r.completedAt <= filters.completedBefore);
99
+ }
100
+ if (filters.hasError !== undefined) {
101
+ result = result.filter((r) => Boolean(r.error) === filters.hasError);
102
+ }
103
+ const orderBy = filters.orderBy ?? 'startedAt';
104
+ const direction = filters.orderDirection ?? 'desc';
105
+ result.sort((a, b) => {
106
+ const aVal = a[orderBy] ?? 0;
107
+ const bVal = b[orderBy] ?? 0;
108
+ return direction === 'asc'
109
+ ? (aVal) - (bVal)
110
+ : (bVal) - (aVal);
111
+ });
112
+ const offset = filters.offset ?? 0;
113
+ const limit = filters.limit ?? Infinity;
114
+ result = result.slice(offset, offset + limit);
115
+ return result;
116
+ }
117
+ calculateStats(runs) {
118
+ const byStatus = {
119
+ pending: 0,
120
+ scheduled: 0,
121
+ running: 0,
122
+ paused: 0,
123
+ waiting: 0,
124
+ completed: 0,
125
+ failed: 0,
126
+ cancelled: 0,
127
+ timeout: 0,
128
+ };
129
+ let totalDuration = 0;
130
+ let durationCount = 0;
131
+ let successCount = 0;
132
+ let failureCount = 0;
133
+ for (const run of runs) {
134
+ byStatus[run.status]++;
135
+ if (run.startedAt && run.completedAt) {
136
+ totalDuration += run.completedAt - run.startedAt;
137
+ durationCount++;
138
+ }
139
+ if (run.status === 'completed') {
140
+ successCount++;
141
+ }
142
+ else if (run.status === 'failed' || run.status === 'timeout') {
143
+ failureCount++;
144
+ }
145
+ }
146
+ const terminalCount = successCount + failureCount;
147
+ return {
148
+ total: runs.length,
149
+ byStatus,
150
+ avgDuration: durationCount > 0 ? totalDuration / durationCount : 0,
151
+ successRate: terminalCount > 0 ? successCount / terminalCount : 0,
152
+ failureRate: terminalCount > 0 ? failureCount / terminalCount : 0,
153
+ };
154
+ }
155
+ isTerminal(status) {
156
+ return ['completed', 'failed', 'cancelled', 'timeout'].includes(status);
157
+ }
158
+ /**
159
+ * Clear all data (for testing)
160
+ */
161
+ clear() {
162
+ this.runs.clear();
163
+ }
164
+ /**
165
+ * Get all runs (for debugging)
166
+ */
167
+ getAll() {
168
+ return Array.from(this.runs.values());
169
+ }
170
+ }
171
+ /**
172
+ * File-based run store for persistence
173
+ */
174
+ export class FileRunStore {
175
+ directory;
176
+ cache = new Map();
177
+ cacheExpiry = new Map();
178
+ cacheTTL;
179
+ constructor(options) {
180
+ this.directory = options.directory;
181
+ this.cacheTTL = options.cacheTTL ?? 60000;
182
+ }
183
+ getRunPath(id) {
184
+ return path.join(this.directory, `${id}.json`);
185
+ }
186
+ isCacheValid(id) {
187
+ const expiry = this.cacheExpiry.get(id);
188
+ return expiry !== undefined && expiry > Date.now();
189
+ }
190
+ async save(run) {
191
+ await fs.mkdir(this.directory, { recursive: true });
192
+ await fs.writeFile(this.getRunPath(run.id), JSON.stringify(run, null, 2), 'utf-8');
193
+ this.cache.set(run.id, run);
194
+ this.cacheExpiry.set(run.id, Date.now() + this.cacheTTL);
195
+ }
196
+ async get(id) {
197
+ if (this.isCacheValid(id)) {
198
+ return this.cache.get(id) ?? null;
199
+ }
200
+ try {
201
+ const content = await fs.readFile(this.getRunPath(id), 'utf-8');
202
+ const run = JSON.parse(content);
203
+ this.cache.set(id, run);
204
+ this.cacheExpiry.set(id, Date.now() + this.cacheTTL);
205
+ return run;
206
+ }
207
+ catch {
208
+ return null;
209
+ }
210
+ }
211
+ async list(filters) {
212
+ const runs = await this.loadAllRuns();
213
+ return this.applyFilters(runs, filters);
214
+ }
215
+ async count(filters) {
216
+ const runs = await this.loadAllRuns();
217
+ const countFilters = filters ? { ...filters } : undefined;
218
+ if (countFilters) {
219
+ delete countFilters.limit;
220
+ delete countFilters.offset;
221
+ }
222
+ return this.applyFilters(runs, countFilters).length;
223
+ }
224
+ async update(id, updates) {
225
+ const run = await this.get(id);
226
+ if (run) {
227
+ await this.save({ ...run, ...updates });
228
+ }
229
+ }
230
+ async delete(id) {
231
+ try {
232
+ await fs.unlink(this.getRunPath(id));
233
+ }
234
+ catch {
235
+ }
236
+ this.cache.delete(id);
237
+ this.cacheExpiry.delete(id);
238
+ }
239
+ async getStats(workflowName) {
240
+ let runs = await this.loadAllRuns();
241
+ if (workflowName) {
242
+ runs = runs.filter((r) => r.workflowName === workflowName);
243
+ }
244
+ return this.calculateStats(runs);
245
+ }
246
+ async cleanup(olderThan) {
247
+ const threshold = Date.now() - olderThan;
248
+ const runs = await this.loadAllRuns();
249
+ let deleted = 0;
250
+ for (const run of runs) {
251
+ const timestamp = run.completedAt ?? run.startedAt ?? 0;
252
+ if (timestamp < threshold && this.isTerminal(run.status)) {
253
+ await this.delete(run.id);
254
+ deleted++;
255
+ }
256
+ }
257
+ return deleted;
258
+ }
259
+ async loadAllRuns() {
260
+ const runs = [];
261
+ try {
262
+ await fs.mkdir(this.directory, { recursive: true });
263
+ const files = await fs.readdir(this.directory);
264
+ for (const file of files) {
265
+ if (!file.endsWith('.json'))
266
+ continue;
267
+ const id = file.replace('.json', '');
268
+ const run = await this.get(id);
269
+ if (run) {
270
+ runs.push(run);
271
+ }
272
+ }
273
+ }
274
+ catch {
275
+ }
276
+ return runs;
277
+ }
278
+ applyFilters(runs, filters) {
279
+ if (!filters)
280
+ return runs;
281
+ let result = runs;
282
+ if (filters.status) {
283
+ const statuses = Array.isArray(filters.status)
284
+ ? filters.status
285
+ : [filters.status];
286
+ result = result.filter((r) => statuses.includes(r.status));
287
+ }
288
+ if (filters.workflowName) {
289
+ result = result.filter((r) => r.workflowName === filters.workflowName);
290
+ }
291
+ if (filters.tags && filters.tags.length > 0) {
292
+ result = result.filter((r) => filters.tags.some((tag) => r.tags.includes(tag)));
293
+ }
294
+ if (filters.triggerId) {
295
+ result = result.filter((r) => r.triggerId === filters.triggerId);
296
+ }
297
+ if (filters.parentRunId) {
298
+ result = result.filter((r) => r.parentRunId === filters.parentRunId);
299
+ }
300
+ if (filters.startedAfter) {
301
+ result = result.filter((r) => r.startedAt && r.startedAt >= filters.startedAfter);
302
+ }
303
+ if (filters.startedBefore) {
304
+ result = result.filter((r) => r.startedAt && r.startedAt <= filters.startedBefore);
305
+ }
306
+ if (filters.completedAfter) {
307
+ result = result.filter((r) => r.completedAt && r.completedAt >= filters.completedAfter);
308
+ }
309
+ if (filters.completedBefore) {
310
+ result = result.filter((r) => r.completedAt && r.completedAt <= filters.completedBefore);
311
+ }
312
+ if (filters.hasError !== undefined) {
313
+ result = result.filter((r) => Boolean(r.error) === filters.hasError);
314
+ }
315
+ const orderBy = filters.orderBy ?? 'startedAt';
316
+ const direction = filters.orderDirection ?? 'desc';
317
+ result.sort((a, b) => {
318
+ const aVal = a[orderBy] ?? 0;
319
+ const bVal = b[orderBy] ?? 0;
320
+ return direction === 'asc'
321
+ ? (aVal) - (bVal)
322
+ : (bVal) - (aVal);
323
+ });
324
+ const offset = filters.offset ?? 0;
325
+ const limit = filters.limit ?? Infinity;
326
+ result = result.slice(offset, offset + limit);
327
+ return result;
328
+ }
329
+ calculateStats(runs) {
330
+ const byStatus = {
331
+ pending: 0,
332
+ scheduled: 0,
333
+ running: 0,
334
+ paused: 0,
335
+ waiting: 0,
336
+ completed: 0,
337
+ failed: 0,
338
+ cancelled: 0,
339
+ timeout: 0,
340
+ };
341
+ let totalDuration = 0;
342
+ let durationCount = 0;
343
+ let successCount = 0;
344
+ let failureCount = 0;
345
+ for (const run of runs) {
346
+ byStatus[run.status]++;
347
+ if (run.startedAt && run.completedAt) {
348
+ totalDuration += run.completedAt - run.startedAt;
349
+ durationCount++;
350
+ }
351
+ if (run.status === 'completed') {
352
+ successCount++;
353
+ }
354
+ else if (run.status === 'failed' || run.status === 'timeout') {
355
+ failureCount++;
356
+ }
357
+ }
358
+ const terminalCount = successCount + failureCount;
359
+ return {
360
+ total: runs.length,
361
+ byStatus,
362
+ avgDuration: durationCount > 0 ? totalDuration / durationCount : 0,
363
+ successRate: terminalCount > 0 ? successCount / terminalCount : 0,
364
+ failureRate: terminalCount > 0 ? failureCount / terminalCount : 0,
365
+ };
366
+ }
367
+ isTerminal(status) {
368
+ return ['completed', 'failed', 'cancelled', 'timeout'].includes(status);
369
+ }
370
+ /**
371
+ * Clear cache
372
+ */
373
+ clearCache() {
374
+ this.cache.clear();
375
+ this.cacheExpiry.clear();
376
+ }
377
+ }
378
+ /**
379
+ * Create an in-memory run store
380
+ */
381
+ export function createInMemoryRunStore() {
382
+ return new InMemoryRunStore();
383
+ }
384
+ /**
385
+ * Create a file-based run store
386
+ */
387
+ export function createFileRunStore(options) {
388
+ return new FileRunStore(options);
389
+ }
390
+ //# sourceMappingURL=run-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-store.js","sourceRoot":"","sources":["../../src/manager/run-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Workflow Scheduler
3
+ *
4
+ * Features:
5
+ * - Priority queue for pending runs
6
+ * - Cron-based scheduling
7
+ * - Delayed execution
8
+ * - Concurrency control
9
+ */
10
+ import type { Workflow, WorkflowState, ScheduleOptions, RunStore } from '@cogitator-ai/types';
11
+ /**
12
+ * Priority queue item
13
+ */
14
+ export interface QueueItem {
15
+ runId: string;
16
+ workflowName: string;
17
+ priority: number;
18
+ scheduledFor: number;
19
+ }
20
+ /**
21
+ * Scheduler configuration
22
+ */
23
+ export interface SchedulerConfig {
24
+ runStore: RunStore;
25
+ maxConcurrency?: number;
26
+ pollInterval?: number;
27
+ onRunReady?: (runId: string) => void;
28
+ }
29
+ /**
30
+ * Priority queue implementation using a heap
31
+ */
32
+ export declare class PriorityQueue {
33
+ private items;
34
+ /**
35
+ * Add item to queue (sorted by scheduledFor then priority)
36
+ */
37
+ enqueue(item: QueueItem): void;
38
+ /**
39
+ * Remove and return highest priority item
40
+ */
41
+ dequeue(): QueueItem | undefined;
42
+ /**
43
+ * Peek at highest priority item without removing
44
+ */
45
+ peek(): QueueItem | undefined;
46
+ /**
47
+ * Remove item by runId
48
+ */
49
+ remove(runId: string): boolean;
50
+ /**
51
+ * Get items ready to execute (scheduledFor <= now)
52
+ */
53
+ getReady(now?: number): QueueItem[];
54
+ /**
55
+ * Get queue size
56
+ */
57
+ size(): number;
58
+ /**
59
+ * Clear the queue
60
+ */
61
+ clear(): void;
62
+ /**
63
+ * Get all items (for inspection)
64
+ */
65
+ getAll(): QueueItem[];
66
+ private bubbleUp;
67
+ private bubbleDown;
68
+ private compare;
69
+ }
70
+ /**
71
+ * Cron-based scheduled job
72
+ */
73
+ export interface CronJob {
74
+ id: string;
75
+ workflowName: string;
76
+ workflow: Workflow<WorkflowState>;
77
+ expression: string;
78
+ timezone?: string;
79
+ options?: Omit<ScheduleOptions, 'at' | 'cron' | 'timezone'>;
80
+ nextRun: number;
81
+ enabled: boolean;
82
+ }
83
+ /**
84
+ * Job scheduler for workflow runs
85
+ */
86
+ export declare class JobScheduler {
87
+ private queue;
88
+ private cronJobs;
89
+ private runStore;
90
+ private maxConcurrency;
91
+ private pollInterval;
92
+ private onRunReady?;
93
+ private runningCount;
94
+ private pollTimer?;
95
+ private disposed;
96
+ constructor(config: SchedulerConfig);
97
+ /**
98
+ * Start the scheduler
99
+ */
100
+ start(): void;
101
+ /**
102
+ * Stop the scheduler
103
+ */
104
+ stop(): void;
105
+ /**
106
+ * Schedule a workflow run
107
+ */
108
+ scheduleRun<S extends WorkflowState>(workflow: Workflow<S>, options?: ScheduleOptions): Promise<string>;
109
+ /**
110
+ * Register a cron-based recurring job
111
+ */
112
+ registerCronJob<S extends WorkflowState>(workflow: Workflow<S>, expression: string, options?: {
113
+ id?: string;
114
+ timezone?: string;
115
+ jobOptions?: Omit<ScheduleOptions, 'at' | 'cron' | 'timezone'>;
116
+ }): string;
117
+ /**
118
+ * Unregister a cron job
119
+ */
120
+ unregisterCronJob(jobId: string): boolean;
121
+ /**
122
+ * Enable/disable a cron job
123
+ */
124
+ setCronJobEnabled(jobId: string, enabled: boolean): boolean;
125
+ /**
126
+ * Cancel a scheduled run
127
+ */
128
+ cancelRun(runId: string, reason?: string): Promise<boolean>;
129
+ /**
130
+ * Mark run as started
131
+ */
132
+ runStarted(_runId: string): void;
133
+ /**
134
+ * Mark run as completed
135
+ */
136
+ runCompleted(_runId: string): void;
137
+ /**
138
+ * Get queue size
139
+ */
140
+ getQueueSize(): number;
141
+ /**
142
+ * Get running count
143
+ */
144
+ getRunningCount(): number;
145
+ /**
146
+ * Get all cron jobs
147
+ */
148
+ getCronJobs(): CronJob[];
149
+ /**
150
+ * Dispose the scheduler
151
+ */
152
+ dispose(): void;
153
+ private tick;
154
+ }
155
+ /**
156
+ * Create a job scheduler
157
+ */
158
+ export declare function createJobScheduler(config: SchedulerConfig): JobScheduler;
159
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/manager/scheduler.ts"],"names":[],"mappings":"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"}