@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,342 @@
1
+ /**
2
+ * Human-in-the-Loop Node
3
+ *
4
+ * Features:
5
+ * - Async human approvals
6
+ * - Multiple approval types (binary, multi-choice, free-form, rating)
7
+ * - Approval chains (sequential approvers)
8
+ * - Timeout handling with configurable actions
9
+ * - Delegation support
10
+ * - Priority-based routing
11
+ */
12
+ import { nanoid } from 'nanoid';
13
+ /**
14
+ * Execute a human approval node
15
+ */
16
+ export async function executeHumanNode(state, config, context) {
17
+ const approval = config.approval;
18
+ const description = typeof approval.description === 'function'
19
+ ? approval.description(state)
20
+ : approval.description;
21
+ const assignee = typeof approval.assignee === 'function'
22
+ ? approval.assignee(state)
23
+ : approval.assignee;
24
+ const assigneeGroup = typeof approval.assigneeGroup === 'function'
25
+ ? approval.assigneeGroup(state)
26
+ : approval.assigneeGroup;
27
+ if (approval.chain && approval.chain.length > 0) {
28
+ return executeApprovalChain(state, config, context, approval.chain);
29
+ }
30
+ const request = {
31
+ id: nanoid(),
32
+ workflowId: context.workflowId,
33
+ runId: context.runId,
34
+ nodeId: context.nodeId,
35
+ type: approval.type,
36
+ title: approval.title,
37
+ description,
38
+ choices: approval.choices,
39
+ assignee,
40
+ assigneeGroup,
41
+ deadline: approval.timeout ? Date.now() + approval.timeout : undefined,
42
+ timeout: approval.timeout,
43
+ timeoutAction: approval.timeoutAction,
44
+ escalateTo: approval.escalateTo,
45
+ priority: approval.priority,
46
+ metadata: { state },
47
+ createdAt: Date.now(),
48
+ };
49
+ await context.approvalStore.createRequest(request);
50
+ await context.approvalNotifier?.notify(request);
51
+ const response = await waitForResponse(request, context.approvalStore, context.approvalNotifier);
52
+ const approved = isApproved(request.type, response.decision);
53
+ return {
54
+ approved,
55
+ decision: response.decision,
56
+ response,
57
+ state,
58
+ timedOut: response.respondedBy === '__timeout__',
59
+ escalated: response.respondedBy === '__escalation__',
60
+ };
61
+ }
62
+ /**
63
+ * Execute approval chain (sequential approvers)
64
+ */
65
+ async function executeApprovalChain(state, config, context, chain) {
66
+ const approval = config.approval;
67
+ const responses = [];
68
+ let lastResponse;
69
+ for (let i = 0; i < chain.length; i++) {
70
+ const step = chain[i];
71
+ const effectiveTimeoutAction = step.timeoutAction === 'skip' ? 'fail' : (step.timeoutAction ?? 'fail');
72
+ const request = {
73
+ id: nanoid(),
74
+ workflowId: context.workflowId,
75
+ runId: context.runId,
76
+ nodeId: `${context.nodeId}:chain:${i}`,
77
+ type: approval.type,
78
+ title: `${approval.title} (Step ${i + 1}/${chain.length})`,
79
+ description: typeof approval.description === 'function'
80
+ ? approval.description(state)
81
+ : approval.description,
82
+ choices: approval.choices,
83
+ assignee: step.assignee,
84
+ deadline: step.timeout ? Date.now() + step.timeout : undefined,
85
+ timeout: step.timeout,
86
+ timeoutAction: effectiveTimeoutAction,
87
+ priority: approval.priority,
88
+ metadata: {
89
+ state,
90
+ chainStep: i,
91
+ chainTotal: chain.length,
92
+ role: step.role,
93
+ previousResponses: responses,
94
+ },
95
+ createdAt: Date.now(),
96
+ };
97
+ await context.approvalStore.createRequest(request);
98
+ await context.approvalNotifier?.notify(request);
99
+ const response = await waitForResponse(request, context.approvalStore, context.approvalNotifier);
100
+ responses.push(response);
101
+ lastResponse = response;
102
+ if (step.required && !isApproved(approval.type, response.decision)) {
103
+ return {
104
+ approved: false,
105
+ decision: response.decision,
106
+ response,
107
+ state,
108
+ timedOut: response.respondedBy === '__timeout__',
109
+ escalated: response.respondedBy === '__escalation__',
110
+ };
111
+ }
112
+ }
113
+ return {
114
+ approved: true,
115
+ decision: lastResponse?.decision,
116
+ response: lastResponse,
117
+ state,
118
+ };
119
+ }
120
+ /**
121
+ * Wait for response or handle timeout
122
+ */
123
+ async function waitForResponse(request, store, notifier) {
124
+ return new Promise((resolve) => {
125
+ let timeoutId;
126
+ let unsubscribeFn;
127
+ const cleanup = () => {
128
+ if (timeoutId)
129
+ clearTimeout(timeoutId);
130
+ unsubscribeFn?.();
131
+ };
132
+ unsubscribeFn = store.onResponse(request.id, (response) => {
133
+ cleanup();
134
+ resolve(response);
135
+ });
136
+ if (request.timeout) {
137
+ timeoutId = setTimeout(async () => {
138
+ cleanup();
139
+ const timeoutResponse = await handleTimeout(request, store, notifier);
140
+ resolve(timeoutResponse);
141
+ }, request.timeout);
142
+ }
143
+ });
144
+ }
145
+ /**
146
+ * Create a fail response for timeout
147
+ */
148
+ async function createFailResponse(request, store) {
149
+ const response = {
150
+ requestId: request.id,
151
+ decision: { error: 'Timeout exceeded, no response received' },
152
+ respondedBy: '__timeout__',
153
+ respondedAt: Date.now(),
154
+ comment: 'Request timed out without response',
155
+ };
156
+ await store.submitResponse(response);
157
+ return response;
158
+ }
159
+ /**
160
+ * Handle timeout based on configured action
161
+ */
162
+ async function handleTimeout(request, store, notifier) {
163
+ await notifier?.notifyTimeout(request);
164
+ const action = request.timeoutAction ?? 'fail';
165
+ switch (action) {
166
+ case 'approve': {
167
+ const response = {
168
+ requestId: request.id,
169
+ decision: true,
170
+ respondedBy: '__timeout__',
171
+ respondedAt: Date.now(),
172
+ comment: 'Auto-approved due to timeout',
173
+ };
174
+ await store.submitResponse(response);
175
+ return response;
176
+ }
177
+ case 'reject': {
178
+ const response = {
179
+ requestId: request.id,
180
+ decision: false,
181
+ respondedBy: '__timeout__',
182
+ respondedAt: Date.now(),
183
+ comment: 'Auto-rejected due to timeout',
184
+ };
185
+ await store.submitResponse(response);
186
+ return response;
187
+ }
188
+ case 'escalate': {
189
+ if (request.escalateTo) {
190
+ await notifier?.notifyEscalation(request, 'Timeout exceeded');
191
+ const escalatedRequest = {
192
+ ...request,
193
+ id: nanoid(),
194
+ assignee: request.escalateTo,
195
+ assigneeGroup: undefined,
196
+ metadata: {
197
+ ...request.metadata,
198
+ escalatedFrom: request.assignee,
199
+ escalationReason: 'Timeout exceeded',
200
+ },
201
+ createdAt: Date.now(),
202
+ };
203
+ await store.createRequest(escalatedRequest);
204
+ await notifier?.notify(escalatedRequest);
205
+ return new Promise((resolve) => {
206
+ store.onResponse(escalatedRequest.id, resolve);
207
+ });
208
+ }
209
+ return createFailResponse(request, store);
210
+ }
211
+ case 'fail':
212
+ default:
213
+ return createFailResponse(request, store);
214
+ }
215
+ }
216
+ /**
217
+ * Check if decision counts as approved based on type
218
+ */
219
+ function isApproved(type, decision) {
220
+ switch (type) {
221
+ case 'approve-reject':
222
+ return decision === true || decision === 'approve';
223
+ case 'multi-choice':
224
+ return decision !== null && decision !== undefined;
225
+ case 'free-form':
226
+ return typeof decision === 'string' && decision.trim().length > 0;
227
+ case 'numeric-rating':
228
+ return typeof decision === 'number' && !isNaN(decision);
229
+ default:
230
+ return Boolean(decision);
231
+ }
232
+ }
233
+ /**
234
+ * Create a human approval node factory
235
+ */
236
+ export function humanNode(name, approval) {
237
+ return {
238
+ name,
239
+ approval,
240
+ };
241
+ }
242
+ /**
243
+ * Create a simple approve/reject node
244
+ */
245
+ export function approvalNode(name, options) {
246
+ return humanNode(name, {
247
+ type: 'approve-reject',
248
+ title: options.title,
249
+ description: options.description,
250
+ assignee: options.assignee,
251
+ timeout: options.timeout,
252
+ timeoutAction: options.timeoutAction,
253
+ priority: options.priority,
254
+ });
255
+ }
256
+ /**
257
+ * Create a multi-choice selection node
258
+ */
259
+ export function choiceNode(name, options) {
260
+ return humanNode(name, {
261
+ type: 'multi-choice',
262
+ title: options.title,
263
+ description: options.description,
264
+ choices: options.choices,
265
+ assignee: options.assignee,
266
+ timeout: options.timeout,
267
+ priority: options.priority,
268
+ });
269
+ }
270
+ /**
271
+ * Create a free-form input node
272
+ */
273
+ export function inputNode(name, options) {
274
+ return humanNode(name, {
275
+ type: 'free-form',
276
+ title: options.title,
277
+ description: options.description,
278
+ assignee: options.assignee,
279
+ timeout: options.timeout,
280
+ priority: options.priority,
281
+ });
282
+ }
283
+ /**
284
+ * Create a rating node
285
+ */
286
+ export function ratingNode(name, options) {
287
+ return humanNode(name, {
288
+ type: 'numeric-rating',
289
+ title: options.title,
290
+ description: options.description,
291
+ assignee: options.assignee,
292
+ timeout: options.timeout,
293
+ priority: options.priority,
294
+ });
295
+ }
296
+ /**
297
+ * Create an approval chain node
298
+ */
299
+ export function chainNode(name, options) {
300
+ return humanNode(name, {
301
+ type: 'approve-reject',
302
+ title: options.title,
303
+ description: options.description,
304
+ chain: options.chain,
305
+ priority: options.priority,
306
+ });
307
+ }
308
+ /**
309
+ * Create a manager → director → VP chain
310
+ */
311
+ export function managementChain(name, options) {
312
+ const chain = [
313
+ {
314
+ assignee: options.manager,
315
+ role: 'Manager',
316
+ required: true,
317
+ timeout: options.timeoutPerStep,
318
+ },
319
+ ];
320
+ if (options.director) {
321
+ chain.push({
322
+ assignee: options.director,
323
+ role: 'Director',
324
+ required: true,
325
+ timeout: options.timeoutPerStep,
326
+ });
327
+ }
328
+ if (options.vp) {
329
+ chain.push({
330
+ assignee: options.vp,
331
+ role: 'VP',
332
+ required: true,
333
+ timeout: options.timeoutPerStep,
334
+ });
335
+ }
336
+ return chainNode(name, {
337
+ title: options.title,
338
+ description: options.description,
339
+ chain,
340
+ });
341
+ }
342
+ //# sourceMappingURL=human-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human-node.js","sourceRoot":"","sources":["../../src/human/human-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @cogitator-ai/workflows - Human-in-the-Loop module
3
+ *
4
+ * Enables human approvals in workflow execution.
5
+ *
6
+ * Features:
7
+ * - Async approvals (can take days)
8
+ * - Multiple types: approve/reject, multi-choice, free-form, rating
9
+ * - Timeout with configurable actions (approve/reject/escalate/fail)
10
+ * - Approval chains (manager → director → CEO)
11
+ * - Delegation support
12
+ * - Audit trail via checkpoint store
13
+ */
14
+ export { InMemoryApprovalStore, FileApprovalStore, withDelegation, } from './approval-store';
15
+ export { ConsoleNotifier, WebhookNotifier, CompositeNotifier, slackNotifier, filteredNotifier, priorityRouter, nullNotifier, } from './notifiers';
16
+ export { type HumanNodeContext, type HumanNodeResult, executeHumanNode, humanNode, approvalNode, choiceNode, inputNode, ratingNode, chainNode, managementChain, } from './human-node';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @cogitator-ai/workflows - Human-in-the-Loop module
3
+ *
4
+ * Enables human approvals in workflow execution.
5
+ *
6
+ * Features:
7
+ * - Async approvals (can take days)
8
+ * - Multiple types: approve/reject, multi-choice, free-form, rating
9
+ * - Timeout with configurable actions (approve/reject/escalate/fail)
10
+ * - Approval chains (manager → director → CEO)
11
+ * - Delegation support
12
+ * - Audit trail via checkpoint store
13
+ */
14
+ export { InMemoryApprovalStore, FileApprovalStore, withDelegation, } from './approval-store';
15
+ export { ConsoleNotifier, WebhookNotifier, CompositeNotifier, slackNotifier, filteredNotifier, priorityRouter, nullNotifier, } from './notifiers';
16
+ export { executeHumanNode, humanNode, approvalNode, choiceNode, inputNode, ratingNode, chainNode, managementChain, } from './human-node';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/human/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAGL,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Approval Notifiers
3
+ *
4
+ * Features:
5
+ * - Console notifier for development
6
+ * - Webhook notifier for HTTP integrations
7
+ * - Composite notifier for multiple channels
8
+ */
9
+ import type { ApprovalNotifier, ApprovalRequest } from '@cogitator-ai/types';
10
+ /**
11
+ * Console notifier for development and debugging
12
+ */
13
+ export declare class ConsoleNotifier implements ApprovalNotifier {
14
+ private prefix;
15
+ constructor(options?: {
16
+ prefix?: string;
17
+ });
18
+ notify(request: ApprovalRequest): Promise<void>;
19
+ notifyEscalation(request: ApprovalRequest, reason: string): Promise<void>;
20
+ notifyTimeout(request: ApprovalRequest): Promise<void>;
21
+ notifyDelegation(request: ApprovalRequest, from: string, to: string): Promise<void>;
22
+ }
23
+ /**
24
+ * Webhook notifier for HTTP integrations (Slack, Teams, custom)
25
+ */
26
+ export declare class WebhookNotifier implements ApprovalNotifier {
27
+ private url;
28
+ private headers;
29
+ private formatPayload;
30
+ private timeout;
31
+ constructor(options: {
32
+ url: string;
33
+ headers?: Record<string, string>;
34
+ formatPayload?: (event: 'request' | 'escalation' | 'timeout' | 'delegation', request: ApprovalRequest, extra?: Record<string, unknown>) => unknown;
35
+ timeout?: number;
36
+ });
37
+ private defaultFormat;
38
+ private send;
39
+ notify(request: ApprovalRequest): Promise<void>;
40
+ notifyEscalation(request: ApprovalRequest, reason: string): Promise<void>;
41
+ notifyTimeout(request: ApprovalRequest): Promise<void>;
42
+ notifyDelegation(request: ApprovalRequest, from: string, to: string): Promise<void>;
43
+ }
44
+ /**
45
+ * Slack-formatted webhook notifier
46
+ */
47
+ export declare function slackNotifier(webhookUrl: string, options?: {
48
+ channel?: string;
49
+ username?: string;
50
+ iconEmoji?: string;
51
+ }): WebhookNotifier;
52
+ /**
53
+ * Composite notifier that sends to multiple channels
54
+ */
55
+ export declare class CompositeNotifier implements ApprovalNotifier {
56
+ private notifiers;
57
+ private continueOnError;
58
+ constructor(notifiers: ApprovalNotifier[], options?: {
59
+ continueOnError?: boolean;
60
+ });
61
+ notify(request: ApprovalRequest): Promise<void>;
62
+ notifyEscalation(request: ApprovalRequest, reason: string): Promise<void>;
63
+ notifyTimeout(request: ApprovalRequest): Promise<void>;
64
+ notifyDelegation(request: ApprovalRequest, from: string, to: string): Promise<void>;
65
+ private fanOut;
66
+ }
67
+ /**
68
+ * Filtered notifier that only notifies for certain requests
69
+ */
70
+ export declare function filteredNotifier(notifier: ApprovalNotifier, filter: (request: ApprovalRequest) => boolean): ApprovalNotifier;
71
+ /**
72
+ * Priority-based notifier routing
73
+ */
74
+ export declare function priorityRouter(options: {
75
+ urgent?: ApprovalNotifier;
76
+ high?: ApprovalNotifier;
77
+ normal?: ApprovalNotifier;
78
+ low?: ApprovalNotifier;
79
+ default?: ApprovalNotifier;
80
+ }): ApprovalNotifier;
81
+ /**
82
+ * Null notifier that does nothing (useful for testing)
83
+ */
84
+ export declare const nullNotifier: ApprovalNotifier;
85
+ //# sourceMappingURL=notifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifiers.d.ts","sourceRoot":"","sources":["../../src/human/notifiers.ts"],"names":[],"mappings":"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"}