@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.
- package/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/builder.d.ts +39 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +224 -0
- package/dist/builder.js.map +1 -0
- package/dist/checkpoint.d.ts +33 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +108 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/executor.d.ts +24 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +207 -0
- package/dist/executor.js.map +1 -0
- package/dist/human/approval-store.d.ts +95 -0
- package/dist/human/approval-store.d.ts.map +1 -0
- package/dist/human/approval-store.js +377 -0
- package/dist/human/approval-store.js.map +1 -0
- package/dist/human/human-node.d.ts +104 -0
- package/dist/human/human-node.d.ts.map +1 -0
- package/dist/human/human-node.js +342 -0
- package/dist/human/human-node.js.map +1 -0
- package/dist/human/index.d.ts +17 -0
- package/dist/human/index.d.ts.map +1 -0
- package/dist/human/index.js +17 -0
- package/dist/human/index.js.map +1 -0
- package/dist/human/notifiers.d.ts +85 -0
- package/dist/human/notifiers.d.ts.map +1 -0
- package/dist/human/notifiers.js +289 -0
- package/dist/human/notifiers.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/manager/index.d.ts +19 -0
- package/dist/manager/index.d.ts.map +1 -0
- package/dist/manager/index.js +17 -0
- package/dist/manager/index.js.map +1 -0
- package/dist/manager/run-store.d.ts +78 -0
- package/dist/manager/run-store.d.ts.map +1 -0
- package/dist/manager/run-store.js +390 -0
- package/dist/manager/run-store.js.map +1 -0
- package/dist/manager/scheduler.d.ts +159 -0
- package/dist/manager/scheduler.d.ts.map +1 -0
- package/dist/manager/scheduler.js +355 -0
- package/dist/manager/scheduler.js.map +1 -0
- package/dist/manager/workflow-manager.d.ts +114 -0
- package/dist/manager/workflow-manager.d.ts.map +1 -0
- package/dist/manager/workflow-manager.js +460 -0
- package/dist/manager/workflow-manager.js.map +1 -0
- package/dist/nodes/agent.d.ts +24 -0
- package/dist/nodes/agent.d.ts.map +1 -0
- package/dist/nodes/agent.js +37 -0
- package/dist/nodes/agent.js.map +1 -0
- package/dist/nodes/base.d.ts +12 -0
- package/dist/nodes/base.d.ts.map +1 -0
- package/dist/nodes/base.js +5 -0
- package/dist/nodes/base.js.map +1 -0
- package/dist/nodes/function.d.ts +27 -0
- package/dist/nodes/function.d.ts.map +1 -0
- package/dist/nodes/function.js +29 -0
- package/dist/nodes/function.js.map +1 -0
- package/dist/nodes/index.d.ts +8 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +8 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/tool.d.ts +19 -0
- package/dist/nodes/tool.d.ts.map +1 -0
- package/dist/nodes/tool.js +26 -0
- package/dist/nodes/tool.js.map +1 -0
- package/dist/observability/exporters.d.ts +93 -0
- package/dist/observability/exporters.d.ts.map +1 -0
- package/dist/observability/exporters.js +330 -0
- package/dist/observability/exporters.js.map +1 -0
- package/dist/observability/index.d.ts +17 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +17 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +114 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +435 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/span-attributes.d.ts +95 -0
- package/dist/observability/span-attributes.d.ts.map +1 -0
- package/dist/observability/span-attributes.js +142 -0
- package/dist/observability/span-attributes.js.map +1 -0
- package/dist/observability/tracer.d.ts +110 -0
- package/dist/observability/tracer.d.ts.map +1 -0
- package/dist/observability/tracer.js +409 -0
- package/dist/observability/tracer.js.map +1 -0
- package/dist/patterns/index.d.ts +15 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +15 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/map-reduce.d.ts +223 -0
- package/dist/patterns/map-reduce.d.ts.map +1 -0
- package/dist/patterns/map-reduce.js +378 -0
- package/dist/patterns/map-reduce.js.map +1 -0
- package/dist/saga/circuit-breaker.d.ts +153 -0
- package/dist/saga/circuit-breaker.d.ts.map +1 -0
- package/dist/saga/circuit-breaker.js +306 -0
- package/dist/saga/circuit-breaker.js.map +1 -0
- package/dist/saga/compensation.d.ts +134 -0
- package/dist/saga/compensation.d.ts.map +1 -0
- package/dist/saga/compensation.js +240 -0
- package/dist/saga/compensation.js.map +1 -0
- package/dist/saga/dead-letter.d.ts +113 -0
- package/dist/saga/dead-letter.d.ts.map +1 -0
- package/dist/saga/dead-letter.js +307 -0
- package/dist/saga/dead-letter.js.map +1 -0
- package/dist/saga/idempotency.d.ts +95 -0
- package/dist/saga/idempotency.d.ts.map +1 -0
- package/dist/saga/idempotency.js +266 -0
- package/dist/saga/idempotency.js.map +1 -0
- package/dist/saga/index.d.ts +16 -0
- package/dist/saga/index.d.ts.map +1 -0
- package/dist/saga/index.js +16 -0
- package/dist/saga/index.js.map +1 -0
- package/dist/saga/retry.d.ts +59 -0
- package/dist/saga/retry.d.ts.map +1 -0
- package/dist/saga/retry.js +222 -0
- package/dist/saga/retry.js.map +1 -0
- package/dist/scheduler.d.ts +37 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +151 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/subworkflows/index.d.ts +16 -0
- package/dist/subworkflows/index.d.ts.map +1 -0
- package/dist/subworkflows/index.js +16 -0
- package/dist/subworkflows/index.js.map +1 -0
- package/dist/subworkflows/parallel-subworkflows.d.ts +139 -0
- package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -0
- package/dist/subworkflows/parallel-subworkflows.js +270 -0
- package/dist/subworkflows/parallel-subworkflows.js.map +1 -0
- package/dist/subworkflows/subworkflow-node.d.ts +136 -0
- package/dist/subworkflows/subworkflow-node.d.ts.map +1 -0
- package/dist/subworkflows/subworkflow-node.js +164 -0
- package/dist/subworkflows/subworkflow-node.js.map +1 -0
- package/dist/timers/cron-parser.d.ts +110 -0
- package/dist/timers/cron-parser.d.ts.map +1 -0
- package/dist/timers/cron-parser.js +412 -0
- package/dist/timers/cron-parser.js.map +1 -0
- package/dist/timers/index.d.ts +18 -0
- package/dist/timers/index.d.ts.map +1 -0
- package/dist/timers/index.js +18 -0
- package/dist/timers/index.js.map +1 -0
- package/dist/timers/timer-manager.d.ts +219 -0
- package/dist/timers/timer-manager.d.ts.map +1 -0
- package/dist/timers/timer-manager.js +351 -0
- package/dist/timers/timer-manager.js.map +1 -0
- package/dist/timers/timer-node.d.ts +144 -0
- package/dist/timers/timer-node.d.ts.map +1 -0
- package/dist/timers/timer-node.js +246 -0
- package/dist/timers/timer-node.js.map +1 -0
- package/dist/timers/timer-store.d.ts +90 -0
- package/dist/timers/timer-store.d.ts.map +1 -0
- package/dist/timers/timer-store.js +357 -0
- package/dist/timers/timer-store.js.map +1 -0
- package/dist/triggers/cron-trigger.d.ts +102 -0
- package/dist/triggers/cron-trigger.d.ts.map +1 -0
- package/dist/triggers/cron-trigger.js +309 -0
- package/dist/triggers/cron-trigger.js.map +1 -0
- package/dist/triggers/index.d.ts +14 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +10 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/rate-limiter.d.ts +130 -0
- package/dist/triggers/rate-limiter.d.ts.map +1 -0
- package/dist/triggers/rate-limiter.js +294 -0
- package/dist/triggers/rate-limiter.js.map +1 -0
- package/dist/triggers/trigger-manager.d.ts +166 -0
- package/dist/triggers/trigger-manager.d.ts.map +1 -0
- package/dist/triggers/trigger-manager.js +436 -0
- package/dist/triggers/trigger-manager.js.map +1 -0
- package/dist/triggers/webhook-trigger.d.ts +150 -0
- package/dist/triggers/webhook-trigger.d.ts.map +1 -0
- package/dist/triggers/webhook-trigger.js +452 -0
- package/dist/triggers/webhook-trigger.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/observability/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cogitator-ai/workflows - Patterns module
|
|
3
|
+
*
|
|
4
|
+
* Advanced workflow patterns for complex data processing.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Map-Reduce pattern for parallel processing
|
|
8
|
+
* - Dynamic fan-out based on state
|
|
9
|
+
* - Configurable concurrency limits
|
|
10
|
+
* - Partial failure handling
|
|
11
|
+
* - Progress tracking
|
|
12
|
+
* - Streaming reduce
|
|
13
|
+
*/
|
|
14
|
+
export { type MapItemResult, type MapProgressEvent, type MapNodeConfig, type ReduceNodeConfig, type MapReduceResult, type MapReduceNodeConfig, executeMap, executeReduce, executeMapReduce, mapNode, reduceNode, mapReduceNode, parallelMap, sequentialMap, batchedMap, collect, sum, count, first, last, groupBy, partition, flatMap, stats, } from './map-reduce';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,UAAU,EACV,aAAa,EACb,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,aAAa,EAEb,WAAW,EACX,aAAa,EACb,UAAU,EAEV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cogitator-ai/workflows - Patterns module
|
|
3
|
+
*
|
|
4
|
+
* Advanced workflow patterns for complex data processing.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Map-Reduce pattern for parallel processing
|
|
8
|
+
* - Dynamic fan-out based on state
|
|
9
|
+
* - Configurable concurrency limits
|
|
10
|
+
* - Partial failure handling
|
|
11
|
+
* - Progress tracking
|
|
12
|
+
* - Streaming reduce
|
|
13
|
+
*/
|
|
14
|
+
export { executeMap, executeReduce, executeMapReduce, mapNode, reduceNode, mapReduceNode, parallelMap, sequentialMap, batchedMap, collect, sum, count, first, last, groupBy, partition, flatMap, stats, } from './map-reduce';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAQL,UAAU,EACV,aAAa,EACb,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,aAAa,EAEb,WAAW,EACX,aAAa,EACb,UAAU,EAEV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map-Reduce pattern implementation for workflows
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Dynamic fan-out based on state
|
|
6
|
+
* - Configurable concurrency limits
|
|
7
|
+
* - Partial failure handling (continue with successful items)
|
|
8
|
+
* - Progress tracking per item
|
|
9
|
+
* - Streaming reduce (process as items complete)
|
|
10
|
+
* - Nested map-reduce support
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Item result wrapper
|
|
14
|
+
*/
|
|
15
|
+
export interface MapItemResult<T> {
|
|
16
|
+
index: number;
|
|
17
|
+
item: unknown;
|
|
18
|
+
result: T;
|
|
19
|
+
success: boolean;
|
|
20
|
+
error?: Error;
|
|
21
|
+
duration: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Map progress event
|
|
25
|
+
*/
|
|
26
|
+
export interface MapProgressEvent<T> {
|
|
27
|
+
total: number;
|
|
28
|
+
completed: number;
|
|
29
|
+
successful: number;
|
|
30
|
+
failed: number;
|
|
31
|
+
currentItem?: MapItemResult<T>;
|
|
32
|
+
pending: number;
|
|
33
|
+
running: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Map node configuration
|
|
37
|
+
*/
|
|
38
|
+
export interface MapNodeConfig<S, T> {
|
|
39
|
+
name: string;
|
|
40
|
+
/**
|
|
41
|
+
* Extract items to map over from state
|
|
42
|
+
*/
|
|
43
|
+
items: (state: S) => unknown[];
|
|
44
|
+
/**
|
|
45
|
+
* Map function to apply to each item
|
|
46
|
+
*/
|
|
47
|
+
mapper: (item: unknown, index: number, state: S) => Promise<T> | T;
|
|
48
|
+
/**
|
|
49
|
+
* Maximum concurrent mappers
|
|
50
|
+
* @default Infinity
|
|
51
|
+
*/
|
|
52
|
+
concurrency?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Continue processing if some items fail
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
continueOnError?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Progress callback
|
|
60
|
+
*/
|
|
61
|
+
onProgress?: (progress: MapProgressEvent<T>) => void;
|
|
62
|
+
/**
|
|
63
|
+
* Filter items before mapping
|
|
64
|
+
*/
|
|
65
|
+
filter?: (item: unknown, index: number, state: S) => boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Transform items before mapping
|
|
68
|
+
*/
|
|
69
|
+
transform?: (item: unknown, index: number, state: S) => unknown;
|
|
70
|
+
/**
|
|
71
|
+
* Timeout per item (ms)
|
|
72
|
+
*/
|
|
73
|
+
timeout?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Retry configuration per item
|
|
76
|
+
*/
|
|
77
|
+
retry?: {
|
|
78
|
+
maxAttempts: number;
|
|
79
|
+
delay?: number;
|
|
80
|
+
backoff?: 'linear' | 'exponential';
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Reduce node configuration
|
|
85
|
+
*/
|
|
86
|
+
export interface ReduceNodeConfig<S, T, R> {
|
|
87
|
+
name: string;
|
|
88
|
+
/**
|
|
89
|
+
* Initial accumulator value
|
|
90
|
+
*/
|
|
91
|
+
initial: R | ((state: S) => R);
|
|
92
|
+
/**
|
|
93
|
+
* Reducer function
|
|
94
|
+
*/
|
|
95
|
+
reducer: (accumulator: R, item: MapItemResult<T>, state: S) => R;
|
|
96
|
+
/**
|
|
97
|
+
* Process items as they complete (streaming)
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
100
|
+
streaming?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Only include successful items in reduce
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
successOnly?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Final transformation
|
|
108
|
+
*/
|
|
109
|
+
finalize?: (result: R, state: S) => R;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Map-Reduce result
|
|
113
|
+
*/
|
|
114
|
+
export interface MapReduceResult<T, R> {
|
|
115
|
+
results: MapItemResult<T>[];
|
|
116
|
+
reduced: R;
|
|
117
|
+
stats: {
|
|
118
|
+
total: number;
|
|
119
|
+
successful: number;
|
|
120
|
+
failed: number;
|
|
121
|
+
duration: number;
|
|
122
|
+
avgItemDuration: number;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Map-Reduce node configuration
|
|
127
|
+
*/
|
|
128
|
+
export interface MapReduceNodeConfig<S, T, R> {
|
|
129
|
+
name: string;
|
|
130
|
+
map: Omit<MapNodeConfig<S, T>, 'name'>;
|
|
131
|
+
reduce: Omit<ReduceNodeConfig<S, T, R>, 'name'>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Execute a map operation
|
|
135
|
+
*/
|
|
136
|
+
export declare function executeMap<S, T>(state: S, config: MapNodeConfig<S, T>): Promise<MapItemResult<T>[]>;
|
|
137
|
+
/**
|
|
138
|
+
* Execute a reduce operation
|
|
139
|
+
*/
|
|
140
|
+
export declare function executeReduce<S, T, R>(results: MapItemResult<T>[], state: S, config: ReduceNodeConfig<S, T, R>): R;
|
|
141
|
+
/**
|
|
142
|
+
* Execute a map-reduce operation
|
|
143
|
+
*/
|
|
144
|
+
export declare function executeMapReduce<S, T, R>(state: S, config: MapReduceNodeConfig<S, T, R>): Promise<MapReduceResult<T, R>>;
|
|
145
|
+
/**
|
|
146
|
+
* Create a map node factory
|
|
147
|
+
*/
|
|
148
|
+
export declare function mapNode<S, T>(name: string, config: Omit<MapNodeConfig<S, T>, 'name'>): MapNodeConfig<S, T>;
|
|
149
|
+
/**
|
|
150
|
+
* Create a reduce node factory
|
|
151
|
+
*/
|
|
152
|
+
export declare function reduceNode<S, T, R>(name: string, config: Omit<ReduceNodeConfig<S, T, R>, 'name'>): ReduceNodeConfig<S, T, R>;
|
|
153
|
+
/**
|
|
154
|
+
* Create a map-reduce node factory
|
|
155
|
+
*/
|
|
156
|
+
export declare function mapReduceNode<S, T, R>(name: string, config: Omit<MapReduceNodeConfig<S, T, R>, 'name'>): MapReduceNodeConfig<S, T, R>;
|
|
157
|
+
/**
|
|
158
|
+
* Parallel map helper - execute all items in parallel
|
|
159
|
+
*/
|
|
160
|
+
export declare function parallelMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise<T> | T, options?: {
|
|
161
|
+
continueOnError?: boolean;
|
|
162
|
+
onProgress?: (progress: MapProgressEvent<T>) => void;
|
|
163
|
+
}): Promise<MapItemResult<T>[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Sequential map helper - execute items one by one
|
|
166
|
+
*/
|
|
167
|
+
export declare function sequentialMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise<T> | T, options?: {
|
|
168
|
+
continueOnError?: boolean;
|
|
169
|
+
onProgress?: (progress: MapProgressEvent<T>) => void;
|
|
170
|
+
}): Promise<MapItemResult<T>[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Batched map helper - process items in fixed-size batches
|
|
173
|
+
*/
|
|
174
|
+
export declare function batchedMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise<T> | T, batchSize: number, options?: {
|
|
175
|
+
continueOnError?: boolean;
|
|
176
|
+
onProgress?: (progress: MapProgressEvent<T>) => void;
|
|
177
|
+
}): Promise<MapItemResult<T>[]>;
|
|
178
|
+
/**
|
|
179
|
+
* Collect helper - reduce results to an array
|
|
180
|
+
*/
|
|
181
|
+
export declare function collect<T>(): Omit<ReduceNodeConfig<unknown, T, T[]>, 'name'>;
|
|
182
|
+
/**
|
|
183
|
+
* Sum helper - reduce numbers to sum
|
|
184
|
+
*/
|
|
185
|
+
export declare function sum(): Omit<ReduceNodeConfig<unknown, number, number>, 'name'>;
|
|
186
|
+
/**
|
|
187
|
+
* Count helper - count successful items
|
|
188
|
+
*/
|
|
189
|
+
export declare function count(): Omit<ReduceNodeConfig<unknown, unknown, number>, 'name'>;
|
|
190
|
+
/**
|
|
191
|
+
* First helper - get first result
|
|
192
|
+
*/
|
|
193
|
+
export declare function first<T>(): Omit<ReduceNodeConfig<unknown, T, T | undefined>, 'name'>;
|
|
194
|
+
/**
|
|
195
|
+
* Last helper - get last result
|
|
196
|
+
*/
|
|
197
|
+
export declare function last<T>(): Omit<ReduceNodeConfig<unknown, T, T | undefined>, 'name'>;
|
|
198
|
+
/**
|
|
199
|
+
* GroupBy helper - group results by key
|
|
200
|
+
*/
|
|
201
|
+
export declare function groupBy<T, K extends string | number>(keyFn: (result: T, item: MapItemResult<T>) => K): Omit<ReduceNodeConfig<unknown, T, Record<K, T[]>>, 'name'>;
|
|
202
|
+
/**
|
|
203
|
+
* Partition helper - partition results by predicate
|
|
204
|
+
*/
|
|
205
|
+
export declare function partition<T>(predicate: (result: T, item: MapItemResult<T>) => boolean): Omit<ReduceNodeConfig<unknown, T, {
|
|
206
|
+
pass: T[];
|
|
207
|
+
fail: T[];
|
|
208
|
+
}>, 'name'>;
|
|
209
|
+
/**
|
|
210
|
+
* FlatMap helper - flatten arrays of results
|
|
211
|
+
*/
|
|
212
|
+
export declare function flatMap<T>(): Omit<ReduceNodeConfig<unknown, T[], T[]>, 'name'>;
|
|
213
|
+
/**
|
|
214
|
+
* Stats helper - compute statistics from numeric results
|
|
215
|
+
*/
|
|
216
|
+
export declare function stats(): Omit<ReduceNodeConfig<unknown, number, {
|
|
217
|
+
count: number;
|
|
218
|
+
sum: number;
|
|
219
|
+
avg: number;
|
|
220
|
+
min: number;
|
|
221
|
+
max: number;
|
|
222
|
+
}>, 'name'>;
|
|
223
|
+
//# sourceMappingURL=map-reduce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-reduce.d.ts","sourceRoot":"","sources":["../../src/patterns/map-reduce.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map-Reduce pattern implementation for workflows
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Dynamic fan-out based on state
|
|
6
|
+
* - Configurable concurrency limits
|
|
7
|
+
* - Partial failure handling (continue with successful items)
|
|
8
|
+
* - Progress tracking per item
|
|
9
|
+
* - Streaming reduce (process as items complete)
|
|
10
|
+
* - Nested map-reduce support
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Execute items with concurrency limit
|
|
14
|
+
*/
|
|
15
|
+
async function executeWithConcurrency(items, mapper, concurrency, onComplete) {
|
|
16
|
+
const results = new Array(items.length);
|
|
17
|
+
const pending = [];
|
|
18
|
+
let nextIndex = 0;
|
|
19
|
+
const executeNext = async () => {
|
|
20
|
+
const index = nextIndex++;
|
|
21
|
+
if (index >= items.length)
|
|
22
|
+
return;
|
|
23
|
+
const result = await mapper(items[index], index);
|
|
24
|
+
results[index] = result;
|
|
25
|
+
onComplete?.(result);
|
|
26
|
+
await executeNext();
|
|
27
|
+
};
|
|
28
|
+
const initialBatch = Math.min(concurrency, items.length);
|
|
29
|
+
for (let i = 0; i < initialBatch; i++) {
|
|
30
|
+
pending.push(executeNext());
|
|
31
|
+
}
|
|
32
|
+
await Promise.all(pending);
|
|
33
|
+
return results;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Execute single item with timeout and retry
|
|
37
|
+
*/
|
|
38
|
+
async function executeItem(item, index, state, config) {
|
|
39
|
+
const startTime = Date.now();
|
|
40
|
+
let lastError;
|
|
41
|
+
const maxAttempts = config.retry?.maxAttempts ?? 1;
|
|
42
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
43
|
+
try {
|
|
44
|
+
let processedItem = item;
|
|
45
|
+
if (config.transform) {
|
|
46
|
+
processedItem = config.transform(item, index, state);
|
|
47
|
+
}
|
|
48
|
+
let resultPromise = Promise.resolve(config.mapper(processedItem, index, state));
|
|
49
|
+
if (config.timeout) {
|
|
50
|
+
resultPromise = Promise.race([
|
|
51
|
+
resultPromise,
|
|
52
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Item timeout exceeded')), config.timeout)),
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
const result = await resultPromise;
|
|
56
|
+
return {
|
|
57
|
+
index,
|
|
58
|
+
item,
|
|
59
|
+
result,
|
|
60
|
+
success: true,
|
|
61
|
+
duration: Date.now() - startTime,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
66
|
+
if (attempt < maxAttempts - 1 && config.retry) {
|
|
67
|
+
const delay = config.retry.delay ?? 1000;
|
|
68
|
+
const actualDelay = config.retry.backoff === 'exponential'
|
|
69
|
+
? delay * Math.pow(2, attempt)
|
|
70
|
+
: delay * (attempt + 1);
|
|
71
|
+
await new Promise((resolve) => setTimeout(resolve, actualDelay));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
index,
|
|
77
|
+
item,
|
|
78
|
+
result: undefined,
|
|
79
|
+
success: false,
|
|
80
|
+
error: lastError,
|
|
81
|
+
duration: Date.now() - startTime,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Execute a map operation
|
|
86
|
+
*/
|
|
87
|
+
export async function executeMap(state, config) {
|
|
88
|
+
let items = config.items(state);
|
|
89
|
+
if (config.filter) {
|
|
90
|
+
items = items.filter((item, index) => config.filter(item, index, state));
|
|
91
|
+
}
|
|
92
|
+
const concurrency = config.concurrency ?? Infinity;
|
|
93
|
+
const results = [];
|
|
94
|
+
let completed = 0;
|
|
95
|
+
let successful = 0;
|
|
96
|
+
let failed = 0;
|
|
97
|
+
const emitProgress = (current) => {
|
|
98
|
+
if (config.onProgress) {
|
|
99
|
+
config.onProgress({
|
|
100
|
+
total: items.length,
|
|
101
|
+
completed,
|
|
102
|
+
successful,
|
|
103
|
+
failed,
|
|
104
|
+
currentItem: current,
|
|
105
|
+
pending: items.length - completed,
|
|
106
|
+
running: Math.min(concurrency, items.length - completed),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
emitProgress();
|
|
111
|
+
const mapper = async (item, index) => {
|
|
112
|
+
const result = await executeItem(item, index, state, config);
|
|
113
|
+
completed++;
|
|
114
|
+
if (result.success) {
|
|
115
|
+
successful++;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
failed++;
|
|
119
|
+
if (!config.continueOnError) {
|
|
120
|
+
throw result.error ?? new Error(`Item ${index} failed`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
emitProgress(result);
|
|
124
|
+
return result;
|
|
125
|
+
};
|
|
126
|
+
const allResults = await executeWithConcurrency(items, mapper, concurrency, (result) => results.push(result));
|
|
127
|
+
return allResults;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Execute a reduce operation
|
|
131
|
+
*/
|
|
132
|
+
export function executeReduce(results, state, config) {
|
|
133
|
+
const initial = typeof config.initial === 'function'
|
|
134
|
+
? config.initial(state)
|
|
135
|
+
: config.initial;
|
|
136
|
+
const items = config.successOnly !== false
|
|
137
|
+
? results.filter((r) => r.success)
|
|
138
|
+
: results;
|
|
139
|
+
let result = items.reduce((acc, item) => config.reducer(acc, item, state), initial);
|
|
140
|
+
if (config.finalize) {
|
|
141
|
+
result = config.finalize(result, state);
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Execute a map-reduce operation
|
|
147
|
+
*/
|
|
148
|
+
export async function executeMapReduce(state, config) {
|
|
149
|
+
const startTime = Date.now();
|
|
150
|
+
const mapConfig = {
|
|
151
|
+
name: `${config.name}:map`,
|
|
152
|
+
...config.map,
|
|
153
|
+
};
|
|
154
|
+
let streamingAccumulator;
|
|
155
|
+
if (config.reduce.streaming) {
|
|
156
|
+
streamingAccumulator =
|
|
157
|
+
typeof config.reduce.initial === 'function'
|
|
158
|
+
? config.reduce.initial(state)
|
|
159
|
+
: config.reduce.initial;
|
|
160
|
+
const originalOnProgress = mapConfig.onProgress;
|
|
161
|
+
mapConfig.onProgress = (progress) => {
|
|
162
|
+
if (progress.currentItem?.success) {
|
|
163
|
+
const reduceConfig = {
|
|
164
|
+
name: `${config.name}:reduce`,
|
|
165
|
+
...config.reduce,
|
|
166
|
+
};
|
|
167
|
+
if (reduceConfig.successOnly !== false || progress.currentItem.success) {
|
|
168
|
+
streamingAccumulator = reduceConfig.reducer(streamingAccumulator, progress.currentItem, state);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
originalOnProgress?.(progress);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const results = await executeMap(state, mapConfig);
|
|
175
|
+
const reduceConfig = {
|
|
176
|
+
name: `${config.name}:reduce`,
|
|
177
|
+
...config.reduce,
|
|
178
|
+
};
|
|
179
|
+
let reduced;
|
|
180
|
+
if (config.reduce.streaming && streamingAccumulator !== undefined) {
|
|
181
|
+
reduced = streamingAccumulator;
|
|
182
|
+
if (reduceConfig.finalize) {
|
|
183
|
+
reduced = reduceConfig.finalize(reduced, state);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
reduced = executeReduce(results, state, reduceConfig);
|
|
188
|
+
}
|
|
189
|
+
const duration = Date.now() - startTime;
|
|
190
|
+
const successful = results.filter((r) => r.success).length;
|
|
191
|
+
const totalDuration = results.reduce((sum, r) => sum + r.duration, 0);
|
|
192
|
+
return {
|
|
193
|
+
results,
|
|
194
|
+
reduced,
|
|
195
|
+
stats: {
|
|
196
|
+
total: results.length,
|
|
197
|
+
successful,
|
|
198
|
+
failed: results.length - successful,
|
|
199
|
+
duration,
|
|
200
|
+
avgItemDuration: results.length > 0 ? totalDuration / results.length : 0,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Create a map node factory
|
|
206
|
+
*/
|
|
207
|
+
export function mapNode(name, config) {
|
|
208
|
+
return { name, ...config };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create a reduce node factory
|
|
212
|
+
*/
|
|
213
|
+
export function reduceNode(name, config) {
|
|
214
|
+
return { name, ...config };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Create a map-reduce node factory
|
|
218
|
+
*/
|
|
219
|
+
export function mapReduceNode(name, config) {
|
|
220
|
+
return { name, ...config };
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Parallel map helper - execute all items in parallel
|
|
224
|
+
*/
|
|
225
|
+
export async function parallelMap(state, items, mapper, options = {}) {
|
|
226
|
+
return executeMap(state, {
|
|
227
|
+
name: 'parallelMap',
|
|
228
|
+
items,
|
|
229
|
+
mapper,
|
|
230
|
+
concurrency: Infinity,
|
|
231
|
+
...options,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Sequential map helper - execute items one by one
|
|
236
|
+
*/
|
|
237
|
+
export async function sequentialMap(state, items, mapper, options = {}) {
|
|
238
|
+
return executeMap(state, {
|
|
239
|
+
name: 'sequentialMap',
|
|
240
|
+
items,
|
|
241
|
+
mapper,
|
|
242
|
+
concurrency: 1,
|
|
243
|
+
...options,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Batched map helper - process items in fixed-size batches
|
|
248
|
+
*/
|
|
249
|
+
export async function batchedMap(state, items, mapper, batchSize, options = {}) {
|
|
250
|
+
return executeMap(state, {
|
|
251
|
+
name: 'batchedMap',
|
|
252
|
+
items,
|
|
253
|
+
mapper,
|
|
254
|
+
concurrency: batchSize,
|
|
255
|
+
...options,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Collect helper - reduce results to an array
|
|
260
|
+
*/
|
|
261
|
+
export function collect() {
|
|
262
|
+
return {
|
|
263
|
+
initial: [],
|
|
264
|
+
reducer: (acc, item) => {
|
|
265
|
+
acc.push(item.result);
|
|
266
|
+
return acc;
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Sum helper - reduce numbers to sum
|
|
272
|
+
*/
|
|
273
|
+
export function sum() {
|
|
274
|
+
return {
|
|
275
|
+
initial: 0,
|
|
276
|
+
reducer: (acc, item) => acc + item.result,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Count helper - count successful items
|
|
281
|
+
*/
|
|
282
|
+
export function count() {
|
|
283
|
+
return {
|
|
284
|
+
initial: 0,
|
|
285
|
+
reducer: (acc) => acc + 1,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* First helper - get first result
|
|
290
|
+
*/
|
|
291
|
+
export function first() {
|
|
292
|
+
return {
|
|
293
|
+
initial: undefined,
|
|
294
|
+
reducer: (acc, item) => acc ?? item.result,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Last helper - get last result
|
|
299
|
+
*/
|
|
300
|
+
export function last() {
|
|
301
|
+
return {
|
|
302
|
+
initial: undefined,
|
|
303
|
+
reducer: (_, item) => item.result,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* GroupBy helper - group results by key
|
|
308
|
+
*/
|
|
309
|
+
export function groupBy(keyFn) {
|
|
310
|
+
return {
|
|
311
|
+
initial: {},
|
|
312
|
+
reducer: (acc, item) => {
|
|
313
|
+
const key = keyFn(item.result, item);
|
|
314
|
+
if (!acc[key]) {
|
|
315
|
+
acc[key] = [];
|
|
316
|
+
}
|
|
317
|
+
acc[key].push(item.result);
|
|
318
|
+
return acc;
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Partition helper - partition results by predicate
|
|
324
|
+
*/
|
|
325
|
+
export function partition(predicate) {
|
|
326
|
+
return {
|
|
327
|
+
initial: { pass: [], fail: [] },
|
|
328
|
+
reducer: (acc, item) => {
|
|
329
|
+
if (predicate(item.result, item)) {
|
|
330
|
+
acc.pass.push(item.result);
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
acc.fail.push(item.result);
|
|
334
|
+
}
|
|
335
|
+
return acc;
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* FlatMap helper - flatten arrays of results
|
|
341
|
+
*/
|
|
342
|
+
export function flatMap() {
|
|
343
|
+
return {
|
|
344
|
+
initial: [],
|
|
345
|
+
reducer: (acc, item) => {
|
|
346
|
+
acc.push(...item.result);
|
|
347
|
+
return acc;
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Stats helper - compute statistics from numeric results
|
|
353
|
+
*/
|
|
354
|
+
export function stats() {
|
|
355
|
+
return {
|
|
356
|
+
initial: {
|
|
357
|
+
count: 0,
|
|
358
|
+
sum: 0,
|
|
359
|
+
avg: 0,
|
|
360
|
+
min: Infinity,
|
|
361
|
+
max: -Infinity,
|
|
362
|
+
},
|
|
363
|
+
reducer: (acc, item) => {
|
|
364
|
+
acc.count++;
|
|
365
|
+
acc.sum += item.result;
|
|
366
|
+
acc.min = Math.min(acc.min, item.result);
|
|
367
|
+
acc.max = Math.max(acc.max, item.result);
|
|
368
|
+
return acc;
|
|
369
|
+
},
|
|
370
|
+
finalize: (result) => ({
|
|
371
|
+
...result,
|
|
372
|
+
avg: result.count > 0 ? result.sum / result.count : 0,
|
|
373
|
+
min: result.count > 0 ? result.min : 0,
|
|
374
|
+
max: result.count > 0 ? result.max : 0,
|
|
375
|
+
}),
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=map-reduce.js.map
|