@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,309 @@
1
+ /**
2
+ * Cron Trigger
3
+ *
4
+ * Cron-based workflow scheduling with timezone support,
5
+ * catch-up for missed runs, and concurrency control.
6
+ */
7
+ import { nanoid } from 'nanoid';
8
+ import { parseCronExpression, getNextCronOccurrence, isValidCronExpression, } from '../timers/cron-parser';
9
+ /**
10
+ * Cron trigger executor
11
+ */
12
+ export class CronTriggerExecutor {
13
+ triggers = new Map();
14
+ intervals = new Map();
15
+ onFire;
16
+ constructor(options = {}) {
17
+ this.onFire = options.onFire;
18
+ }
19
+ /**
20
+ * Register a cron trigger
21
+ */
22
+ register(workflowName, config, externalId) {
23
+ const triggerId = externalId ?? nanoid();
24
+ if (!isValidCronExpression(config.expression)) {
25
+ throw new Error(`Invalid cron expression: ${config.expression}`);
26
+ }
27
+ const nextRun = this.calculateNextRun(config);
28
+ const state = {
29
+ triggerId,
30
+ workflowName,
31
+ config,
32
+ nextRun,
33
+ runCount: 0,
34
+ errorCount: 0,
35
+ activeRuns: 0,
36
+ enabled: config.enabled,
37
+ };
38
+ this.triggers.set(triggerId, state);
39
+ if (config.enabled) {
40
+ this.scheduleNext(triggerId);
41
+ if (config.runImmediately) {
42
+ this.fire(triggerId).catch(() => {
43
+ });
44
+ }
45
+ }
46
+ return triggerId;
47
+ }
48
+ /**
49
+ * Unregister a trigger
50
+ */
51
+ unregister(triggerId) {
52
+ const interval = this.intervals.get(triggerId);
53
+ if (interval) {
54
+ clearInterval(interval);
55
+ this.intervals.delete(triggerId);
56
+ }
57
+ this.triggers.delete(triggerId);
58
+ }
59
+ /**
60
+ * Enable a trigger
61
+ */
62
+ enable(triggerId) {
63
+ const state = this.triggers.get(triggerId);
64
+ if (!state)
65
+ throw new Error(`Trigger not found: ${triggerId}`);
66
+ state.enabled = true;
67
+ state.config.enabled = true;
68
+ state.nextRun = this.calculateNextRun(state.config);
69
+ this.scheduleNext(triggerId);
70
+ }
71
+ /**
72
+ * Disable a trigger
73
+ */
74
+ disable(triggerId) {
75
+ const state = this.triggers.get(triggerId);
76
+ if (!state)
77
+ throw new Error(`Trigger not found: ${triggerId}`);
78
+ state.enabled = false;
79
+ state.config.enabled = false;
80
+ const interval = this.intervals.get(triggerId);
81
+ if (interval) {
82
+ clearInterval(interval);
83
+ this.intervals.delete(triggerId);
84
+ }
85
+ }
86
+ /**
87
+ * Get trigger state
88
+ */
89
+ getState(triggerId) {
90
+ return this.triggers.get(triggerId);
91
+ }
92
+ /**
93
+ * Get all triggers for a workflow
94
+ */
95
+ getTriggersForWorkflow(workflowName) {
96
+ return Array.from(this.triggers.values()).filter(t => t.workflowName === workflowName);
97
+ }
98
+ /**
99
+ * Get all enabled triggers
100
+ */
101
+ getEnabledTriggers() {
102
+ return Array.from(this.triggers.values()).filter(t => t.enabled);
103
+ }
104
+ /**
105
+ * Manually fire a trigger
106
+ */
107
+ async fire(triggerId) {
108
+ const state = this.triggers.get(triggerId);
109
+ if (!state) {
110
+ return {
111
+ triggered: false,
112
+ reason: 'Trigger not found',
113
+ };
114
+ }
115
+ const now = Date.now();
116
+ if (state.config.maxConcurrent !== undefined &&
117
+ state.activeRuns >= state.config.maxConcurrent) {
118
+ return {
119
+ triggered: false,
120
+ skipped: true,
121
+ reason: `Max concurrent runs reached: ${state.config.maxConcurrent}`,
122
+ nextRun: state.nextRun,
123
+ };
124
+ }
125
+ const context = {
126
+ triggerId,
127
+ triggerType: 'cron',
128
+ timestamp: now,
129
+ metadata: {
130
+ expression: state.config.expression,
131
+ timezone: state.config.timezone,
132
+ scheduled: state.nextRun,
133
+ },
134
+ };
135
+ if (state.config.condition && !state.config.condition(context)) {
136
+ return {
137
+ triggered: false,
138
+ skipped: true,
139
+ reason: 'Condition not met',
140
+ nextRun: state.nextRun,
141
+ };
142
+ }
143
+ const input = typeof state.config.input === 'function'
144
+ ? state.config.input(context)
145
+ : state.config.input;
146
+ if (input) {
147
+ context.payload = input;
148
+ }
149
+ state.activeRuns++;
150
+ state.lastRun = now;
151
+ try {
152
+ const trigger = this.toWorkflowTrigger(state);
153
+ const runId = await this.onFire?.(trigger, context);
154
+ state.runCount++;
155
+ state.activeRuns--;
156
+ state.nextRun = this.calculateNextRun(state.config);
157
+ return {
158
+ triggered: true,
159
+ runId,
160
+ nextRun: state.nextRun,
161
+ };
162
+ }
163
+ catch (error) {
164
+ state.errorCount++;
165
+ state.activeRuns--;
166
+ state.lastError = error instanceof Error ? error.message : String(error);
167
+ return {
168
+ triggered: false,
169
+ reason: state.lastError,
170
+ nextRun: state.nextRun,
171
+ };
172
+ }
173
+ }
174
+ /**
175
+ * Check for catch-up runs (missed scheduled runs)
176
+ */
177
+ async catchUp(triggerId, since) {
178
+ const state = this.triggers.get(triggerId);
179
+ if (!state?.config.catchUp) {
180
+ return [];
181
+ }
182
+ const results = [];
183
+ const now = Date.now();
184
+ let currentTime = since;
185
+ while (currentTime < now) {
186
+ const nextRun = getNextCronOccurrence(state.config.expression, { timezone: state.config.timezone, currentDate: new Date(currentTime) });
187
+ if (!nextRun || nextRun.getTime() >= now) {
188
+ break;
189
+ }
190
+ const result = await this.fire(triggerId);
191
+ results.push(result);
192
+ currentTime = nextRun.getTime() + 1;
193
+ }
194
+ return results;
195
+ }
196
+ /**
197
+ * Get all triggers
198
+ */
199
+ getAll() {
200
+ return Array.from(this.triggers.values());
201
+ }
202
+ /**
203
+ * Dispose all triggers
204
+ */
205
+ dispose() {
206
+ for (const interval of this.intervals.values()) {
207
+ clearInterval(interval);
208
+ }
209
+ this.intervals.clear();
210
+ this.triggers.clear();
211
+ }
212
+ scheduleNext(triggerId) {
213
+ const state = this.triggers.get(triggerId);
214
+ if (!state?.enabled)
215
+ return;
216
+ const existingInterval = this.intervals.get(triggerId);
217
+ if (existingInterval) {
218
+ clearInterval(existingInterval);
219
+ }
220
+ const now = Date.now();
221
+ const nextRun = state.nextRun ?? this.calculateNextRun(state.config);
222
+ if (!nextRun)
223
+ return;
224
+ const delay = Math.max(0, nextRun - now);
225
+ const timeoutId = setTimeout(async () => {
226
+ if (!this.triggers.has(triggerId))
227
+ return;
228
+ await this.fire(triggerId);
229
+ const checkInterval = this.calculateCheckInterval(state.config);
230
+ const interval = setInterval(async () => {
231
+ const currentState = this.triggers.get(triggerId);
232
+ if (!currentState?.enabled) {
233
+ clearInterval(interval);
234
+ return;
235
+ }
236
+ const currentNow = Date.now();
237
+ if (currentState.nextRun && currentNow >= currentState.nextRun) {
238
+ await this.fire(triggerId);
239
+ }
240
+ }, checkInterval);
241
+ this.intervals.set(triggerId, interval);
242
+ }, delay);
243
+ this.intervals.set(triggerId, timeoutId);
244
+ }
245
+ calculateNextRun(config) {
246
+ try {
247
+ const next = getNextCronOccurrence(config.expression, {
248
+ timezone: config.timezone,
249
+ });
250
+ return next?.getTime();
251
+ }
252
+ catch {
253
+ return undefined;
254
+ }
255
+ }
256
+ calculateCheckInterval(config) {
257
+ const parsed = parseCronExpression(config.expression);
258
+ if (parsed.fields.second && parsed.fields.second.length < 60) {
259
+ return 1000;
260
+ }
261
+ return 60000;
262
+ }
263
+ toWorkflowTrigger(state) {
264
+ return {
265
+ id: state.triggerId,
266
+ workflowName: state.workflowName,
267
+ type: 'cron',
268
+ config: state.config,
269
+ enabled: state.enabled,
270
+ createdAt: Date.now(),
271
+ lastTriggered: state.lastRun,
272
+ nextTrigger: state.nextRun,
273
+ triggerCount: state.runCount,
274
+ errorCount: state.errorCount,
275
+ lastError: state.lastError,
276
+ };
277
+ }
278
+ }
279
+ /**
280
+ * Create a cron trigger executor
281
+ */
282
+ export function createCronTrigger(options = {}) {
283
+ return new CronTriggerExecutor(options);
284
+ }
285
+ /**
286
+ * Validate a cron trigger config
287
+ */
288
+ export function validateCronTriggerConfig(config) {
289
+ const errors = [];
290
+ if (!config.expression) {
291
+ errors.push('Cron expression is required');
292
+ }
293
+ else if (!isValidCronExpression(config.expression)) {
294
+ errors.push(`Invalid cron expression: ${config.expression}`);
295
+ }
296
+ if (config.timezone) {
297
+ try {
298
+ Intl.DateTimeFormat(undefined, { timeZone: config.timezone });
299
+ }
300
+ catch {
301
+ errors.push(`Invalid timezone: ${config.timezone}`);
302
+ }
303
+ }
304
+ if (config.maxConcurrent !== undefined && config.maxConcurrent < 1) {
305
+ errors.push('maxConcurrent must be at least 1');
306
+ }
307
+ return errors;
308
+ }
309
+ //# sourceMappingURL=cron-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-trigger.js","sourceRoot":"","sources":["../../src/triggers/cron-trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Trigger System
3
+ *
4
+ * Workflow triggers for cron scheduling, webhooks, and events.
5
+ */
6
+ export { TokenBucket, RateLimiter, SlidingWindowRateLimiter, createRateLimiter, createSlidingWindowLimiter, } from './rate-limiter';
7
+ export type { TokenBucketConfig, RateLimitResult, } from './rate-limiter';
8
+ export { CronTriggerExecutor, createCronTrigger, validateCronTriggerConfig, } from './cron-trigger';
9
+ export type { CronTriggerState, CronTriggerResult, } from './cron-trigger';
10
+ export { WebhookTriggerExecutor, WebhookAuthError, WebhookRateLimitError, createWebhookTrigger, validateWebhookTriggerConfig, } from './webhook-trigger';
11
+ export type { WebhookRequest, WebhookResponse, WebhookTriggerState, WebhookHandlerResult, } from './webhook-trigger';
12
+ export { InMemoryTriggerStore, SimpleTriggerEventEmitter, DefaultTriggerManager, createTriggerManager, cronTrigger, webhookTrigger, eventTrigger, } from './trigger-manager';
13
+ export type { TriggerStore, TriggerEventEmitter, TriggerManagerConfig, } from './trigger-manager';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/triggers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Trigger System
3
+ *
4
+ * Workflow triggers for cron scheduling, webhooks, and events.
5
+ */
6
+ export { TokenBucket, RateLimiter, SlidingWindowRateLimiter, createRateLimiter, createSlidingWindowLimiter, } from './rate-limiter';
7
+ export { CronTriggerExecutor, createCronTrigger, validateCronTriggerConfig, } from './cron-trigger';
8
+ export { WebhookTriggerExecutor, WebhookAuthError, WebhookRateLimitError, createWebhookTrigger, validateWebhookTriggerConfig, } from './webhook-trigger';
9
+ export { InMemoryTriggerStore, SimpleTriggerEventEmitter, DefaultTriggerManager, createTriggerManager, cronTrigger, webhookTrigger, eventTrigger, } from './trigger-manager';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/triggers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Rate Limiter
3
+ *
4
+ * Token bucket algorithm implementation for rate limiting
5
+ * with support for burst limits and sliding windows.
6
+ */
7
+ /**
8
+ * Token bucket configuration
9
+ */
10
+ export interface TokenBucketConfig {
11
+ /** Maximum number of tokens (requests per window) */
12
+ capacity: number;
13
+ /** Window size in milliseconds */
14
+ window: number;
15
+ /** Burst limit - maximum tokens that can be consumed at once */
16
+ burstLimit?: number;
17
+ /** Initial token count (defaults to capacity) */
18
+ initialTokens?: number;
19
+ }
20
+ /**
21
+ * Rate limit check result
22
+ */
23
+ export interface RateLimitResult {
24
+ allowed: boolean;
25
+ remaining: number;
26
+ resetAt: number;
27
+ retryAfter?: number;
28
+ }
29
+ /**
30
+ * Token bucket rate limiter
31
+ */
32
+ export declare class TokenBucket {
33
+ private tokens;
34
+ private lastRefill;
35
+ private readonly capacity;
36
+ private readonly refillRate;
37
+ private readonly burstLimit;
38
+ constructor(config: TokenBucketConfig);
39
+ /**
40
+ * Try to consume tokens
41
+ */
42
+ consume(count?: number): RateLimitResult;
43
+ /**
44
+ * Check if tokens are available without consuming
45
+ */
46
+ check(count?: number): RateLimitResult;
47
+ /**
48
+ * Get current token count
49
+ */
50
+ getTokens(): number;
51
+ /**
52
+ * Reset the bucket to full capacity
53
+ */
54
+ reset(): void;
55
+ private refill;
56
+ private calculateResetAt;
57
+ }
58
+ /**
59
+ * Rate limiter that manages multiple buckets by key
60
+ */
61
+ export declare class RateLimiter {
62
+ private buckets;
63
+ private readonly config;
64
+ private cleanupInterval?;
65
+ constructor(config: TokenBucketConfig, cleanupIntervalMs?: number);
66
+ /**
67
+ * Check rate limit for a key
68
+ */
69
+ check(key: string, count?: number): RateLimitResult;
70
+ /**
71
+ * Consume tokens for a key
72
+ */
73
+ consume(key: string, count?: number): RateLimitResult;
74
+ /**
75
+ * Reset rate limit for a key
76
+ */
77
+ reset(key: string): void;
78
+ /**
79
+ * Remove a key's bucket
80
+ */
81
+ remove(key: string): void;
82
+ /**
83
+ * Get all tracked keys
84
+ */
85
+ getKeys(): string[];
86
+ /**
87
+ * Dispose the rate limiter
88
+ */
89
+ dispose(): void;
90
+ private getBucket;
91
+ private cleanup;
92
+ }
93
+ /**
94
+ * Sliding window rate limiter
95
+ * More accurate than token bucket for some use cases
96
+ */
97
+ export declare class SlidingWindowRateLimiter {
98
+ private windows;
99
+ private readonly maxRequests;
100
+ private readonly windowMs;
101
+ private cleanupInterval?;
102
+ constructor(maxRequests: number, windowMs: number, cleanupIntervalMs?: number);
103
+ /**
104
+ * Check if request is allowed and record it
105
+ */
106
+ consume(key: string): RateLimitResult;
107
+ /**
108
+ * Check without consuming
109
+ */
110
+ check(key: string): RateLimitResult;
111
+ /**
112
+ * Reset a key's window
113
+ */
114
+ reset(key: string): void;
115
+ /**
116
+ * Dispose the rate limiter
117
+ */
118
+ dispose(): void;
119
+ private getWindow;
120
+ private cleanup;
121
+ }
122
+ /**
123
+ * Create a token bucket rate limiter
124
+ */
125
+ export declare function createRateLimiter(config: TokenBucketConfig): RateLimiter;
126
+ /**
127
+ * Create a sliding window rate limiter
128
+ */
129
+ export declare function createSlidingWindowLimiter(maxRequests: number, windowMs: number): SlidingWindowRateLimiter;
130
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/triggers/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,iBAAiB;IAQrC;;OAEG;IACH,OAAO,CAAC,KAAK,SAAI,GAAG,eAAe;IAgCnC;;OAEG;IACH,KAAK,CAAC,KAAK,SAAI,GAAG,eAAe;IAsBjC;;OAEG;IACH,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,gBAAgB;CAKzB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAiC;gBAE7C,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,SAAQ;IAQhE;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,eAAe;IAK9C;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,eAAe;IAKhD;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,OAAO;CAOhB;AAED;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAiC;gBAE7C,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,SAAQ;IAS5E;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IA2BrC;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAiCnC;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,OAAO;CAWhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAExE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,wBAAwB,CAE1B"}