@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,294 @@
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 rate limiter
9
+ */
10
+ export class TokenBucket {
11
+ tokens;
12
+ lastRefill;
13
+ capacity;
14
+ refillRate;
15
+ burstLimit;
16
+ constructor(config) {
17
+ this.capacity = config.capacity;
18
+ this.burstLimit = config.burstLimit ?? config.capacity;
19
+ this.tokens = config.initialTokens ?? config.capacity;
20
+ this.lastRefill = Date.now();
21
+ this.refillRate = config.capacity / config.window;
22
+ }
23
+ /**
24
+ * Try to consume tokens
25
+ */
26
+ consume(count = 1) {
27
+ this.refill();
28
+ if (count > this.burstLimit) {
29
+ return {
30
+ allowed: false,
31
+ remaining: Math.floor(this.tokens),
32
+ resetAt: this.calculateResetAt(),
33
+ retryAfter: undefined,
34
+ };
35
+ }
36
+ if (this.tokens >= count) {
37
+ this.tokens -= count;
38
+ return {
39
+ allowed: true,
40
+ remaining: Math.floor(this.tokens),
41
+ resetAt: this.calculateResetAt(),
42
+ };
43
+ }
44
+ const tokensNeeded = count - this.tokens;
45
+ const retryAfter = Math.ceil(tokensNeeded / this.refillRate);
46
+ return {
47
+ allowed: false,
48
+ remaining: Math.floor(this.tokens),
49
+ resetAt: this.calculateResetAt(),
50
+ retryAfter,
51
+ };
52
+ }
53
+ /**
54
+ * Check if tokens are available without consuming
55
+ */
56
+ check(count = 1) {
57
+ this.refill();
58
+ if (this.tokens >= count) {
59
+ return {
60
+ allowed: true,
61
+ remaining: Math.floor(this.tokens),
62
+ resetAt: this.calculateResetAt(),
63
+ };
64
+ }
65
+ const tokensNeeded = count - this.tokens;
66
+ const retryAfter = Math.ceil(tokensNeeded / this.refillRate);
67
+ return {
68
+ allowed: false,
69
+ remaining: Math.floor(this.tokens),
70
+ resetAt: this.calculateResetAt(),
71
+ retryAfter,
72
+ };
73
+ }
74
+ /**
75
+ * Get current token count
76
+ */
77
+ getTokens() {
78
+ this.refill();
79
+ return Math.floor(this.tokens);
80
+ }
81
+ /**
82
+ * Reset the bucket to full capacity
83
+ */
84
+ reset() {
85
+ this.tokens = this.capacity;
86
+ this.lastRefill = Date.now();
87
+ }
88
+ refill() {
89
+ const now = Date.now();
90
+ const elapsed = now - this.lastRefill;
91
+ const tokensToAdd = elapsed * this.refillRate;
92
+ this.tokens = Math.min(this.capacity, this.tokens + tokensToAdd);
93
+ this.lastRefill = now;
94
+ }
95
+ calculateResetAt() {
96
+ const tokensNeeded = this.capacity - this.tokens;
97
+ const timeToFull = tokensNeeded / this.refillRate;
98
+ return Date.now() + timeToFull;
99
+ }
100
+ }
101
+ /**
102
+ * Rate limiter that manages multiple buckets by key
103
+ */
104
+ export class RateLimiter {
105
+ buckets = new Map();
106
+ config;
107
+ cleanupInterval;
108
+ constructor(config, cleanupIntervalMs = 60000) {
109
+ this.config = config;
110
+ this.cleanupInterval = setInterval(() => {
111
+ this.cleanup();
112
+ }, cleanupIntervalMs);
113
+ }
114
+ /**
115
+ * Check rate limit for a key
116
+ */
117
+ check(key, count = 1) {
118
+ const bucket = this.getBucket(key);
119
+ return bucket.check(count);
120
+ }
121
+ /**
122
+ * Consume tokens for a key
123
+ */
124
+ consume(key, count = 1) {
125
+ const bucket = this.getBucket(key);
126
+ return bucket.consume(count);
127
+ }
128
+ /**
129
+ * Reset rate limit for a key
130
+ */
131
+ reset(key) {
132
+ const bucket = this.buckets.get(key);
133
+ if (bucket) {
134
+ bucket.reset();
135
+ }
136
+ }
137
+ /**
138
+ * Remove a key's bucket
139
+ */
140
+ remove(key) {
141
+ this.buckets.delete(key);
142
+ }
143
+ /**
144
+ * Get all tracked keys
145
+ */
146
+ getKeys() {
147
+ return Array.from(this.buckets.keys());
148
+ }
149
+ /**
150
+ * Dispose the rate limiter
151
+ */
152
+ dispose() {
153
+ if (this.cleanupInterval) {
154
+ clearInterval(this.cleanupInterval);
155
+ this.cleanupInterval = undefined;
156
+ }
157
+ this.buckets.clear();
158
+ }
159
+ getBucket(key) {
160
+ let bucket = this.buckets.get(key);
161
+ if (!bucket) {
162
+ bucket = new TokenBucket(this.config);
163
+ this.buckets.set(key, bucket);
164
+ }
165
+ return bucket;
166
+ }
167
+ cleanup() {
168
+ for (const [key, bucket] of this.buckets) {
169
+ if (bucket.getTokens() >= this.config.capacity) {
170
+ this.buckets.delete(key);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ /**
176
+ * Sliding window rate limiter
177
+ * More accurate than token bucket for some use cases
178
+ */
179
+ export class SlidingWindowRateLimiter {
180
+ windows = new Map();
181
+ maxRequests;
182
+ windowMs;
183
+ cleanupInterval;
184
+ constructor(maxRequests, windowMs, cleanupIntervalMs = 60000) {
185
+ this.maxRequests = maxRequests;
186
+ this.windowMs = windowMs;
187
+ this.cleanupInterval = setInterval(() => {
188
+ this.cleanup();
189
+ }, cleanupIntervalMs);
190
+ }
191
+ /**
192
+ * Check if request is allowed and record it
193
+ */
194
+ consume(key) {
195
+ const now = Date.now();
196
+ const window = this.getWindow(key);
197
+ const cutoff = now - this.windowMs;
198
+ window.timestamps = window.timestamps.filter(t => t > cutoff);
199
+ if (window.timestamps.length >= this.maxRequests) {
200
+ const oldestInWindow = window.timestamps[0];
201
+ const resetAt = oldestInWindow + this.windowMs;
202
+ return {
203
+ allowed: false,
204
+ remaining: 0,
205
+ resetAt,
206
+ retryAfter: resetAt - now,
207
+ };
208
+ }
209
+ window.timestamps.push(now);
210
+ return {
211
+ allowed: true,
212
+ remaining: this.maxRequests - window.timestamps.length,
213
+ resetAt: now + this.windowMs,
214
+ };
215
+ }
216
+ /**
217
+ * Check without consuming
218
+ */
219
+ check(key) {
220
+ const now = Date.now();
221
+ const window = this.windows.get(key);
222
+ if (!window) {
223
+ return {
224
+ allowed: true,
225
+ remaining: this.maxRequests,
226
+ resetAt: now + this.windowMs,
227
+ };
228
+ }
229
+ const cutoff = now - this.windowMs;
230
+ const validTimestamps = window.timestamps.filter(t => t > cutoff);
231
+ if (validTimestamps.length >= this.maxRequests) {
232
+ const oldestInWindow = validTimestamps[0];
233
+ const resetAt = oldestInWindow + this.windowMs;
234
+ return {
235
+ allowed: false,
236
+ remaining: 0,
237
+ resetAt,
238
+ retryAfter: resetAt - now,
239
+ };
240
+ }
241
+ return {
242
+ allowed: true,
243
+ remaining: this.maxRequests - validTimestamps.length,
244
+ resetAt: now + this.windowMs,
245
+ };
246
+ }
247
+ /**
248
+ * Reset a key's window
249
+ */
250
+ reset(key) {
251
+ this.windows.delete(key);
252
+ }
253
+ /**
254
+ * Dispose the rate limiter
255
+ */
256
+ dispose() {
257
+ if (this.cleanupInterval) {
258
+ clearInterval(this.cleanupInterval);
259
+ this.cleanupInterval = undefined;
260
+ }
261
+ this.windows.clear();
262
+ }
263
+ getWindow(key) {
264
+ let window = this.windows.get(key);
265
+ if (!window) {
266
+ window = { timestamps: [] };
267
+ this.windows.set(key, window);
268
+ }
269
+ return window;
270
+ }
271
+ cleanup() {
272
+ const now = Date.now();
273
+ const cutoff = now - this.windowMs;
274
+ for (const [key, window] of this.windows) {
275
+ window.timestamps = window.timestamps.filter(t => t > cutoff);
276
+ if (window.timestamps.length === 0) {
277
+ this.windows.delete(key);
278
+ }
279
+ }
280
+ }
281
+ }
282
+ /**
283
+ * Create a token bucket rate limiter
284
+ */
285
+ export function createRateLimiter(config) {
286
+ return new RateLimiter(config);
287
+ }
288
+ /**
289
+ * Create a sliding window rate limiter
290
+ */
291
+ export function createSlidingWindowLimiter(maxRequests, windowMs) {
292
+ return new SlidingWindowRateLimiter(maxRequests, windowMs);
293
+ }
294
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/triggers/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Trigger Manager
3
+ *
4
+ * Central management for all workflow triggers (cron, webhook, event).
5
+ * Coordinates trigger registration, firing, and lifecycle.
6
+ */
7
+ import type { WorkflowTrigger, TriggerContext, TriggerManager as ITriggerManager, CronTriggerConfig, WebhookTriggerConfig, EventTriggerConfig, Workflow, WorkflowState } from '@cogitator-ai/types';
8
+ import { type WebhookRequest } from './webhook-trigger';
9
+ /**
10
+ * Trigger store interface
11
+ */
12
+ export interface TriggerStore {
13
+ save(trigger: WorkflowTrigger): Promise<void>;
14
+ get(id: string): Promise<WorkflowTrigger | null>;
15
+ update(id: string, updates: Partial<WorkflowTrigger>): Promise<void>;
16
+ delete(id: string): Promise<void>;
17
+ list(workflowName?: string): Promise<WorkflowTrigger[]>;
18
+ listEnabled(): Promise<WorkflowTrigger[]>;
19
+ listByType(type: 'cron' | 'webhook' | 'event'): Promise<WorkflowTrigger[]>;
20
+ }
21
+ /**
22
+ * In-memory trigger store
23
+ */
24
+ export declare class InMemoryTriggerStore implements TriggerStore {
25
+ private triggers;
26
+ save(trigger: WorkflowTrigger): Promise<void>;
27
+ get(id: string): Promise<WorkflowTrigger | null>;
28
+ update(id: string, updates: Partial<WorkflowTrigger>): Promise<void>;
29
+ delete(id: string): Promise<void>;
30
+ list(workflowName?: string): Promise<WorkflowTrigger[]>;
31
+ listEnabled(): Promise<WorkflowTrigger[]>;
32
+ listByType(type: 'cron' | 'webhook' | 'event'): Promise<WorkflowTrigger[]>;
33
+ clear(): void;
34
+ }
35
+ /**
36
+ * Event emitter for triggers
37
+ */
38
+ export interface TriggerEventEmitter {
39
+ emit(eventType: string, payload: unknown): void;
40
+ on(eventType: string, callback: (payload: unknown) => void): () => void;
41
+ }
42
+ /**
43
+ * Simple event emitter implementation
44
+ */
45
+ export declare class SimpleTriggerEventEmitter implements TriggerEventEmitter {
46
+ private listeners;
47
+ emit(eventType: string, payload: unknown): void;
48
+ on(eventType: string, callback: (payload: unknown) => void): () => void;
49
+ clear(): void;
50
+ }
51
+ /**
52
+ * Trigger manager configuration
53
+ */
54
+ export interface TriggerManagerConfig {
55
+ store?: TriggerStore;
56
+ eventEmitter?: TriggerEventEmitter;
57
+ onTriggerFire?: (trigger: WorkflowTrigger, context: TriggerContext) => Promise<string>;
58
+ }
59
+ /**
60
+ * Default trigger manager implementation
61
+ */
62
+ export declare class DefaultTriggerManager implements ITriggerManager {
63
+ private store;
64
+ private eventEmitter;
65
+ private cronExecutor;
66
+ private webhookExecutor;
67
+ private triggerCallbacks;
68
+ private eventListeners;
69
+ private _started;
70
+ constructor(config?: TriggerManagerConfig);
71
+ /**
72
+ * Start the trigger manager
73
+ */
74
+ start(): void;
75
+ /**
76
+ * Stop the trigger manager
77
+ */
78
+ stop(): void;
79
+ /**
80
+ * Check if the manager is running
81
+ */
82
+ get isRunning(): boolean;
83
+ /**
84
+ * Register a trigger
85
+ */
86
+ register(trigger: Omit<WorkflowTrigger, 'id' | 'createdAt' | 'triggerCount' | 'errorCount'>): Promise<string>;
87
+ /**
88
+ * Unregister a trigger
89
+ */
90
+ unregister(id: string): Promise<void>;
91
+ /**
92
+ * Enable a trigger
93
+ */
94
+ enable(id: string): Promise<void>;
95
+ /**
96
+ * Disable a trigger
97
+ */
98
+ disable(id: string): Promise<void>;
99
+ /**
100
+ * Get a trigger
101
+ */
102
+ get(id: string): Promise<WorkflowTrigger | null>;
103
+ /**
104
+ * List triggers
105
+ */
106
+ list(workflowName?: string): Promise<WorkflowTrigger[]>;
107
+ /**
108
+ * List enabled triggers
109
+ */
110
+ listEnabled(): Promise<WorkflowTrigger[]>;
111
+ /**
112
+ * Manually fire a trigger
113
+ */
114
+ fire(id: string, partialContext?: Partial<TriggerContext>): Promise<string>;
115
+ /**
116
+ * Subscribe to trigger events
117
+ */
118
+ onTrigger(callback: (trigger: WorkflowTrigger, context: TriggerContext) => void): () => void;
119
+ /**
120
+ * Handle incoming webhook request
121
+ */
122
+ handleWebhook(request: WebhookRequest): Promise<import("./webhook-trigger").WebhookHandlerResult | null>;
123
+ /**
124
+ * Emit an event (for event triggers)
125
+ */
126
+ emitEvent(eventType: string, payload: unknown): void;
127
+ /**
128
+ * Register a workflow with triggers
129
+ */
130
+ registerWorkflow<S extends WorkflowState>(workflow: Workflow<S>, triggers: {
131
+ type: 'cron' | 'webhook' | 'event';
132
+ config: CronTriggerConfig | WebhookTriggerConfig | EventTriggerConfig;
133
+ }[]): Promise<string[]>;
134
+ /**
135
+ * Get trigger stats
136
+ */
137
+ getStats(): Promise<{
138
+ total: number;
139
+ enabled: number;
140
+ byType: Record<string, number>;
141
+ totalFired: number;
142
+ totalErrors: number;
143
+ }>;
144
+ /**
145
+ * Dispose the manager
146
+ */
147
+ dispose(): void;
148
+ private registerEventTrigger;
149
+ }
150
+ /**
151
+ * Create a trigger manager
152
+ */
153
+ export declare function createTriggerManager(config?: TriggerManagerConfig): DefaultTriggerManager;
154
+ /**
155
+ * Helper to create a cron trigger config
156
+ */
157
+ export declare function cronTrigger(expression: string, options?: Partial<Omit<CronTriggerConfig, 'expression'>>): CronTriggerConfig;
158
+ /**
159
+ * Helper to create a webhook trigger config
160
+ */
161
+ export declare function webhookTrigger(path: string, method?: WebhookTriggerConfig['method'], options?: Partial<Omit<WebhookTriggerConfig, 'path' | 'method'>>): WebhookTriggerConfig;
162
+ /**
163
+ * Helper to create an event trigger config
164
+ */
165
+ export declare function eventTrigger(eventType: string, options?: Partial<Omit<EventTriggerConfig, 'eventType'>>): EventTriggerConfig;
166
+ //# sourceMappingURL=trigger-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-manager.d.ts","sourceRoot":"","sources":["../../src/triggers/trigger-manager.ts"],"names":[],"mappings":"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"}