@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,436 @@
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 { nanoid } from 'nanoid';
8
+ import { createCronTrigger } from './cron-trigger';
9
+ import { createWebhookTrigger } from './webhook-trigger';
10
+ /**
11
+ * In-memory trigger store
12
+ */
13
+ export class InMemoryTriggerStore {
14
+ triggers = new Map();
15
+ async save(trigger) {
16
+ this.triggers.set(trigger.id, { ...trigger });
17
+ }
18
+ async get(id) {
19
+ return this.triggers.get(id) ?? null;
20
+ }
21
+ async update(id, updates) {
22
+ const existing = this.triggers.get(id);
23
+ if (existing) {
24
+ this.triggers.set(id, { ...existing, ...updates });
25
+ }
26
+ }
27
+ async delete(id) {
28
+ this.triggers.delete(id);
29
+ }
30
+ async list(workflowName) {
31
+ const all = Array.from(this.triggers.values());
32
+ if (workflowName) {
33
+ return all.filter(t => t.workflowName === workflowName);
34
+ }
35
+ return all;
36
+ }
37
+ async listEnabled() {
38
+ return Array.from(this.triggers.values()).filter(t => t.enabled);
39
+ }
40
+ async listByType(type) {
41
+ return Array.from(this.triggers.values()).filter(t => t.type === type);
42
+ }
43
+ clear() {
44
+ this.triggers.clear();
45
+ }
46
+ }
47
+ /**
48
+ * Simple event emitter implementation
49
+ */
50
+ export class SimpleTriggerEventEmitter {
51
+ listeners = new Map();
52
+ emit(eventType, payload) {
53
+ const callbacks = this.listeners.get(eventType);
54
+ if (callbacks) {
55
+ for (const callback of callbacks) {
56
+ try {
57
+ callback(payload);
58
+ }
59
+ catch {
60
+ }
61
+ }
62
+ }
63
+ }
64
+ on(eventType, callback) {
65
+ let callbacks = this.listeners.get(eventType);
66
+ if (!callbacks) {
67
+ callbacks = new Set();
68
+ this.listeners.set(eventType, callbacks);
69
+ }
70
+ callbacks.add(callback);
71
+ return () => {
72
+ callbacks?.delete(callback);
73
+ if (callbacks?.size === 0) {
74
+ this.listeners.delete(eventType);
75
+ }
76
+ };
77
+ }
78
+ clear() {
79
+ this.listeners.clear();
80
+ }
81
+ }
82
+ /**
83
+ * Default trigger manager implementation
84
+ */
85
+ export class DefaultTriggerManager {
86
+ store;
87
+ eventEmitter;
88
+ cronExecutor;
89
+ webhookExecutor;
90
+ triggerCallbacks = new Set();
91
+ eventListeners = new Map();
92
+ _started = false;
93
+ constructor(config = {}) {
94
+ this.store = config.store ?? new InMemoryTriggerStore();
95
+ this.eventEmitter = config.eventEmitter ?? new SimpleTriggerEventEmitter();
96
+ const onFire = async (trigger, context) => {
97
+ for (const callback of this.triggerCallbacks) {
98
+ try {
99
+ callback(trigger, context);
100
+ }
101
+ catch {
102
+ }
103
+ }
104
+ await this.store.update(trigger.id, {
105
+ lastTriggered: context.timestamp,
106
+ triggerCount: trigger.triggerCount + 1,
107
+ });
108
+ if (config.onTriggerFire) {
109
+ return config.onTriggerFire(trigger, context);
110
+ }
111
+ return nanoid();
112
+ };
113
+ this.cronExecutor = createCronTrigger({ onFire });
114
+ this.webhookExecutor = createWebhookTrigger({ onFire });
115
+ }
116
+ /**
117
+ * Start the trigger manager
118
+ */
119
+ start() {
120
+ this._started = true;
121
+ }
122
+ /**
123
+ * Stop the trigger manager
124
+ */
125
+ stop() {
126
+ this._started = false;
127
+ this.cronExecutor.dispose();
128
+ this.webhookExecutor.dispose();
129
+ }
130
+ /**
131
+ * Check if the manager is running
132
+ */
133
+ get isRunning() {
134
+ return this._started;
135
+ }
136
+ /**
137
+ * Register a trigger
138
+ */
139
+ async register(trigger) {
140
+ const id = nanoid();
141
+ const now = Date.now();
142
+ const fullTrigger = {
143
+ ...trigger,
144
+ id,
145
+ createdAt: now,
146
+ triggerCount: 0,
147
+ errorCount: 0,
148
+ };
149
+ await this.store.save(fullTrigger);
150
+ switch (trigger.type) {
151
+ case 'cron': {
152
+ const config = trigger.config;
153
+ this.cronExecutor.register(trigger.workflowName, config, id);
154
+ break;
155
+ }
156
+ case 'webhook': {
157
+ const config = trigger.config;
158
+ this.webhookExecutor.register(trigger.workflowName, config, id);
159
+ break;
160
+ }
161
+ case 'event': {
162
+ const config = trigger.config;
163
+ this.registerEventTrigger(id, trigger.workflowName, config);
164
+ break;
165
+ }
166
+ }
167
+ return id;
168
+ }
169
+ /**
170
+ * Unregister a trigger
171
+ */
172
+ async unregister(id) {
173
+ const trigger = await this.store.get(id);
174
+ if (!trigger)
175
+ return;
176
+ switch (trigger.type) {
177
+ case 'cron':
178
+ this.cronExecutor.unregister(id);
179
+ break;
180
+ case 'webhook':
181
+ this.webhookExecutor.unregister(id);
182
+ break;
183
+ case 'event': {
184
+ const unsubscribe = this.eventListeners.get(id);
185
+ if (unsubscribe) {
186
+ unsubscribe();
187
+ this.eventListeners.delete(id);
188
+ }
189
+ break;
190
+ }
191
+ }
192
+ await this.store.delete(id);
193
+ }
194
+ /**
195
+ * Enable a trigger
196
+ */
197
+ async enable(id) {
198
+ const trigger = await this.store.get(id);
199
+ if (!trigger)
200
+ throw new Error(`Trigger not found: ${id}`);
201
+ await this.store.update(id, { enabled: true });
202
+ switch (trigger.type) {
203
+ case 'cron':
204
+ this.cronExecutor.enable(id);
205
+ break;
206
+ case 'webhook':
207
+ this.webhookExecutor.enable(id);
208
+ break;
209
+ case 'event':
210
+ this.registerEventTrigger(id, trigger.workflowName, trigger.config);
211
+ break;
212
+ }
213
+ }
214
+ /**
215
+ * Disable a trigger
216
+ */
217
+ async disable(id) {
218
+ const trigger = await this.store.get(id);
219
+ if (!trigger)
220
+ throw new Error(`Trigger not found: ${id}`);
221
+ await this.store.update(id, { enabled: false });
222
+ switch (trigger.type) {
223
+ case 'cron':
224
+ this.cronExecutor.disable(id);
225
+ break;
226
+ case 'webhook':
227
+ this.webhookExecutor.disable(id);
228
+ break;
229
+ case 'event': {
230
+ const unsubscribe = this.eventListeners.get(id);
231
+ if (unsubscribe) {
232
+ unsubscribe();
233
+ this.eventListeners.delete(id);
234
+ }
235
+ break;
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Get a trigger
241
+ */
242
+ async get(id) {
243
+ return this.store.get(id);
244
+ }
245
+ /**
246
+ * List triggers
247
+ */
248
+ async list(workflowName) {
249
+ return this.store.list(workflowName);
250
+ }
251
+ /**
252
+ * List enabled triggers
253
+ */
254
+ async listEnabled() {
255
+ return this.store.listEnabled();
256
+ }
257
+ /**
258
+ * Manually fire a trigger
259
+ */
260
+ async fire(id, partialContext) {
261
+ const trigger = await this.store.get(id);
262
+ if (!trigger)
263
+ throw new Error(`Trigger not found: ${id}`);
264
+ const context = {
265
+ triggerId: id,
266
+ triggerType: partialContext?.triggerType ?? 'manual',
267
+ timestamp: Date.now(),
268
+ ...partialContext,
269
+ };
270
+ for (const callback of this.triggerCallbacks) {
271
+ try {
272
+ callback(trigger, context);
273
+ }
274
+ catch {
275
+ }
276
+ }
277
+ await this.store.update(id, {
278
+ lastTriggered: context.timestamp,
279
+ triggerCount: trigger.triggerCount + 1,
280
+ });
281
+ return nanoid();
282
+ }
283
+ /**
284
+ * Subscribe to trigger events
285
+ */
286
+ onTrigger(callback) {
287
+ this.triggerCallbacks.add(callback);
288
+ return () => {
289
+ this.triggerCallbacks.delete(callback);
290
+ };
291
+ }
292
+ /**
293
+ * Handle incoming webhook request
294
+ */
295
+ async handleWebhook(request) {
296
+ return this.webhookExecutor.handle(request);
297
+ }
298
+ /**
299
+ * Emit an event (for event triggers)
300
+ */
301
+ emitEvent(eventType, payload) {
302
+ this.eventEmitter.emit(eventType, payload);
303
+ }
304
+ /**
305
+ * Register a workflow with triggers
306
+ */
307
+ async registerWorkflow(workflow, triggers) {
308
+ const ids = [];
309
+ for (const trigger of triggers) {
310
+ const id = await this.register({
311
+ workflowName: workflow.name,
312
+ type: trigger.type,
313
+ config: trigger.config,
314
+ enabled: true,
315
+ });
316
+ ids.push(id);
317
+ }
318
+ return ids;
319
+ }
320
+ /**
321
+ * Get trigger stats
322
+ */
323
+ async getStats() {
324
+ const all = await this.store.list();
325
+ const enabled = all.filter(t => t.enabled);
326
+ const byType = { cron: 0, webhook: 0, event: 0 };
327
+ let totalFired = 0;
328
+ let totalErrors = 0;
329
+ for (const trigger of all) {
330
+ byType[trigger.type] = (byType[trigger.type] ?? 0) + 1;
331
+ totalFired += trigger.triggerCount;
332
+ totalErrors += trigger.errorCount;
333
+ }
334
+ return {
335
+ total: all.length,
336
+ enabled: enabled.length,
337
+ byType,
338
+ totalFired,
339
+ totalErrors,
340
+ };
341
+ }
342
+ /**
343
+ * Dispose the manager
344
+ */
345
+ dispose() {
346
+ this.stop();
347
+ this.triggerCallbacks.clear();
348
+ for (const unsubscribe of this.eventListeners.values()) {
349
+ unsubscribe();
350
+ }
351
+ this.eventListeners.clear();
352
+ if (this.eventEmitter instanceof SimpleTriggerEventEmitter) {
353
+ this.eventEmitter.clear();
354
+ }
355
+ }
356
+ registerEventTrigger(id, _workflowName, config) {
357
+ const existing = this.eventListeners.get(id);
358
+ if (existing) {
359
+ existing();
360
+ }
361
+ const unsubscribe = this.eventEmitter.on(config.eventType, async (payload) => {
362
+ if (config.source) {
363
+ const eventSource = payload?.source;
364
+ if (eventSource !== config.source)
365
+ return;
366
+ }
367
+ if (config.filter && !config.filter(payload)) {
368
+ return;
369
+ }
370
+ const transformedPayload = config.transform
371
+ ? config.transform(payload)
372
+ : payload;
373
+ const trigger = await this.store.get(id);
374
+ if (!trigger?.enabled)
375
+ return;
376
+ const context = {
377
+ triggerId: id,
378
+ triggerType: 'event',
379
+ timestamp: Date.now(),
380
+ payload: transformedPayload,
381
+ metadata: {
382
+ eventType: config.eventType,
383
+ source: config.source,
384
+ },
385
+ };
386
+ for (const callback of this.triggerCallbacks) {
387
+ try {
388
+ callback(trigger, context);
389
+ }
390
+ catch {
391
+ }
392
+ }
393
+ await this.store.update(id, {
394
+ lastTriggered: context.timestamp,
395
+ triggerCount: trigger.triggerCount + 1,
396
+ });
397
+ });
398
+ this.eventListeners.set(id, unsubscribe);
399
+ }
400
+ }
401
+ /**
402
+ * Create a trigger manager
403
+ */
404
+ export function createTriggerManager(config = {}) {
405
+ return new DefaultTriggerManager(config);
406
+ }
407
+ /**
408
+ * Helper to create a cron trigger config
409
+ */
410
+ export function cronTrigger(expression, options = {}) {
411
+ return {
412
+ expression,
413
+ enabled: true,
414
+ ...options,
415
+ };
416
+ }
417
+ /**
418
+ * Helper to create a webhook trigger config
419
+ */
420
+ export function webhookTrigger(path, method = 'POST', options = {}) {
421
+ return {
422
+ path,
423
+ method,
424
+ ...options,
425
+ };
426
+ }
427
+ /**
428
+ * Helper to create an event trigger config
429
+ */
430
+ export function eventTrigger(eventType, options = {}) {
431
+ return {
432
+ eventType,
433
+ ...options,
434
+ };
435
+ }
436
+ //# sourceMappingURL=trigger-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-manager.js","sourceRoot":"","sources":["../../src/triggers/trigger-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAWhC,OAAO,EAA4B,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAA+B,oBAAoB,EAAuB,MAAM,mBAAmB,CAAC;AAe3G;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEtD,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAAiC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAqB;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAkC;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAUD;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAC5B,SAAS,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEvE,IAAI,CAAC,SAAiB,EAAE,OAAgB;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;gBAAC,MAAM,CAAC;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,EAAE,CAAC,SAAiB,EAAE,QAAoC;QACxD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExB,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,SAAS,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAWD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,KAAK,CAAe;IACpB,YAAY,CAAsB;IAClC,YAAY,CAAsB;IAClC,eAAe,CAAyB;IACxC,gBAAgB,GAAG,IAAI,GAAG,EAA+D,CAAC;IAC1F,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/C,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAE3E,MAAM,MAAM,GAAG,KAAK,EAAE,OAAwB,EAAE,OAAuB,EAAmB,EAAE;YAC1F,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC;gBACT,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;gBAClC,aAAa,EAAE,OAAO,CAAC,SAAS;gBAChC,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC;aACvC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAkF;QAElF,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,WAAW,GAAoB;YACnC,GAAG,OAAO;YACV,EAAE;YACF,SAAS,EAAE,GAAG;YACd,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;SACd,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAA2B,CAAC;gBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7D,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,MAAM,GAAG,OAAO,CAAC,MAA8B,CAAC;gBACtD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChE,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,OAAO,CAAC,MAA4B,CAAC;gBACpD,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,MAA4B,CAAC,CAAC;gBAC1F,MAAM;QACV,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,YAAqB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,cAAwC;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAmB;YAC9B,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,QAAQ;YACpD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,cAAc;SAClB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;YAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC;SACvC,CAAC,CAAC;QAEH,OAAO,MAAM,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS,CACP,QAAqE;QAErE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,SAAiB,EAAE,OAAgB;QAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,QAAqB,EACrB,QAGG;QAEH,MAAM,GAAG,GAAa,EAAE,CAAC;QAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;gBAC7B,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QAOZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,MAAM,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACzE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACvD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;YACnC,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC;QACpC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,MAAM;YACN,UAAU;YACV,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAE9B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,WAAW,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,YAAY,YAAY,yBAAyB,EAAE,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,EAAU,EACV,aAAqB,EACrB,MAA0B;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAI,OAA+B,EAAE,MAAM,CAAC;gBAC7D,IAAI,WAAW,KAAK,MAAM,CAAC,MAAM;oBAAE,OAAO;YAC5C,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS;gBACzC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,OAAO,CAAC;YAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,OAAO;YAE9B,MAAM,OAAO,GAAmB;gBAC9B,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,OAAO;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC;gBACT,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;gBAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;gBAChC,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC;aACvC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA+B,EAAE;IAEjC,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,UAA0D,EAAE;IAE5D,OAAO;QACL,UAAU;QACV,OAAO,EAAE,IAAI;QACb,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,SAAyC,MAAM,EAC/C,UAAkE,EAAE;IAEpE,OAAO;QACL,IAAI;QACJ,MAAM;QACN,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,UAA0D,EAAE;IAE5D,OAAO;QACL,SAAS;QACT,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Webhook Trigger
3
+ *
4
+ * HTTP-based workflow triggers with authentication,
5
+ * rate limiting, payload validation, and deduplication.
6
+ */
7
+ import type { WebhookTriggerConfig, TriggerContext, WorkflowTrigger } from '@cogitator-ai/types';
8
+ /**
9
+ * Incoming webhook request
10
+ */
11
+ export interface WebhookRequest {
12
+ method: string;
13
+ path: string;
14
+ headers: Record<string, string | string[] | undefined>;
15
+ body?: unknown;
16
+ query?: Record<string, string>;
17
+ ip?: string;
18
+ }
19
+ /**
20
+ * Webhook response
21
+ */
22
+ export interface WebhookResponse {
23
+ status: number;
24
+ headers?: Record<string, string>;
25
+ body?: unknown;
26
+ }
27
+ /**
28
+ * Webhook trigger state
29
+ */
30
+ export interface WebhookTriggerState {
31
+ triggerId: string;
32
+ workflowName: string;
33
+ config: WebhookTriggerConfig;
34
+ triggerCount: number;
35
+ errorCount: number;
36
+ lastTriggered?: number;
37
+ lastError?: string;
38
+ enabled: boolean;
39
+ createdAt: number;
40
+ }
41
+ /**
42
+ * Webhook handler result
43
+ */
44
+ export interface WebhookHandlerResult {
45
+ triggered: boolean;
46
+ runId?: string;
47
+ response: WebhookResponse;
48
+ }
49
+ /**
50
+ * Authentication error
51
+ */
52
+ export declare class WebhookAuthError extends Error {
53
+ constructor(message: string);
54
+ }
55
+ /**
56
+ * Rate limit error
57
+ */
58
+ export declare class WebhookRateLimitError extends Error {
59
+ readonly retryAfter: number;
60
+ readonly remaining: number;
61
+ readonly resetAt: number;
62
+ constructor(retryAfter: number, remaining: number, resetAt: number);
63
+ }
64
+ /**
65
+ * Webhook trigger executor
66
+ */
67
+ export declare class WebhookTriggerExecutor {
68
+ private triggers;
69
+ private triggersByPath;
70
+ private rateLimiters;
71
+ private deduplicationCache;
72
+ private cleanupInterval?;
73
+ private onFire?;
74
+ constructor(options?: {
75
+ onFire?: (trigger: WorkflowTrigger, context: TriggerContext) => Promise<string>;
76
+ cleanupIntervalMs?: number;
77
+ });
78
+ /**
79
+ * Register a webhook trigger
80
+ */
81
+ register(workflowName: string, config: WebhookTriggerConfig, externalId?: string): string;
82
+ /**
83
+ * Unregister a trigger
84
+ */
85
+ unregister(triggerId: string): void;
86
+ /**
87
+ * Enable a trigger
88
+ */
89
+ enable(triggerId: string): void;
90
+ /**
91
+ * Disable a trigger
92
+ */
93
+ disable(triggerId: string): void;
94
+ /**
95
+ * Handle an incoming webhook request
96
+ */
97
+ handle(request: WebhookRequest): Promise<WebhookHandlerResult | null>;
98
+ /**
99
+ * Handle a specific trigger
100
+ */
101
+ handleTrigger(state: WebhookTriggerState, request: WebhookRequest): Promise<WebhookHandlerResult>;
102
+ /**
103
+ * Get trigger state
104
+ */
105
+ getState(triggerId: string): WebhookTriggerState | undefined;
106
+ /**
107
+ * Get all triggers for a workflow
108
+ */
109
+ getTriggersForWorkflow(workflowName: string): WebhookTriggerState[];
110
+ /**
111
+ * Get all enabled triggers
112
+ */
113
+ getEnabledTriggers(): WebhookTriggerState[];
114
+ /**
115
+ * Get all triggers
116
+ */
117
+ getAll(): WebhookTriggerState[];
118
+ /**
119
+ * Get registered paths
120
+ */
121
+ getRegisteredPaths(): {
122
+ path: string;
123
+ method: string;
124
+ triggerId: string;
125
+ }[];
126
+ /**
127
+ * Dispose the executor
128
+ */
129
+ dispose(): void;
130
+ private authenticate;
131
+ private checkRateLimit;
132
+ private isDuplicate;
133
+ private cleanupDeduplicationCache;
134
+ private normalizePathKey;
135
+ private getClientKey;
136
+ private getHeader;
137
+ private normalizeHeaders;
138
+ private toWorkflowTrigger;
139
+ }
140
+ /**
141
+ * Create a webhook trigger executor
142
+ */
143
+ export declare function createWebhookTrigger(options?: {
144
+ onFire?: (trigger: WorkflowTrigger, context: TriggerContext) => Promise<string>;
145
+ }): WebhookTriggerExecutor;
146
+ /**
147
+ * Validate a webhook trigger config
148
+ */
149
+ export declare function validateWebhookTriggerConfig(config: WebhookTriggerConfig): string[];
150
+ //# sourceMappingURL=webhook-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/webhook-trigger.ts"],"names":[],"mappings":"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"}