@cogitator-ai/workflows 0.11.10 → 0.12.1

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 (58) hide show
  1. package/README.md +7 -1
  2. package/dist/checkpoint.d.ts.map +1 -1
  3. package/dist/checkpoint.js +2 -4
  4. package/dist/checkpoint.js.map +1 -1
  5. package/dist/executor.d.ts +5 -2
  6. package/dist/executor.d.ts.map +1 -1
  7. package/dist/executor.js +18 -3
  8. package/dist/executor.js.map +1 -1
  9. package/dist/human/approval-store.d.ts.map +1 -1
  10. package/dist/human/approval-store.js +3 -5
  11. package/dist/human/approval-store.js.map +1 -1
  12. package/dist/index.d.ts +3 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/json-file.d.ts +13 -0
  17. package/dist/json-file.d.ts.map +1 -0
  18. package/dist/json-file.js +37 -0
  19. package/dist/json-file.js.map +1 -0
  20. package/dist/manager/run-store.d.ts.map +1 -1
  21. package/dist/manager/run-store.js +2 -1
  22. package/dist/manager/run-store.js.map +1 -1
  23. package/dist/manager/workflow-manager.d.ts.map +1 -1
  24. package/dist/manager/workflow-manager.js +1 -0
  25. package/dist/manager/workflow-manager.js.map +1 -1
  26. package/dist/nodes/adapters.d.ts +4 -2
  27. package/dist/nodes/adapters.d.ts.map +1 -1
  28. package/dist/nodes/adapters.js +6 -4
  29. package/dist/nodes/adapters.js.map +1 -1
  30. package/dist/nodes/agent.d.ts +16 -1
  31. package/dist/nodes/agent.d.ts.map +1 -1
  32. package/dist/nodes/agent.js +43 -2
  33. package/dist/nodes/agent.js.map +1 -1
  34. package/dist/nodes/approvals.d.ts +31 -0
  35. package/dist/nodes/approvals.d.ts.map +1 -0
  36. package/dist/nodes/approvals.js +51 -0
  37. package/dist/nodes/approvals.js.map +1 -0
  38. package/dist/nodes/base.d.ts +5 -0
  39. package/dist/nodes/base.d.ts.map +1 -1
  40. package/dist/nodes/function.d.ts +4 -3
  41. package/dist/nodes/function.d.ts.map +1 -1
  42. package/dist/nodes/function.js.map +1 -1
  43. package/dist/nodes/tool.d.ts +13 -0
  44. package/dist/nodes/tool.d.ts.map +1 -1
  45. package/dist/nodes/tool.js +23 -9
  46. package/dist/nodes/tool.js.map +1 -1
  47. package/dist/patterns/index.d.ts +1 -1
  48. package/dist/patterns/index.d.ts.map +1 -1
  49. package/dist/patterns/index.js +1 -1
  50. package/dist/patterns/index.js.map +1 -1
  51. package/dist/patterns/map-reduce.d.ts +54 -6
  52. package/dist/patterns/map-reduce.d.ts.map +1 -1
  53. package/dist/patterns/map-reduce.js +173 -112
  54. package/dist/patterns/map-reduce.js.map +1 -1
  55. package/dist/saga/dead-letter.d.ts.map +1 -1
  56. package/dist/saga/dead-letter.js +3 -4
  57. package/dist/saga/dead-letter.js.map +1 -1
  58. package/package.json +5 -4
@@ -1,20 +1,34 @@
1
+ import { askToolApproval } from './approvals.js';
2
+ /**
3
+ * Run one tool as a workflow step, the way an agent run calls it: through the node context's
4
+ * `cogitator.invokeTool`, so the mapped arguments are validated against the tool's schema, a call
5
+ * that needs approval is asked for (see `approvals`), the guardrails apply, a sandboxed tool runs
6
+ * in the sandbox and `tool.timeout` is kept. A call that fails, or is declined, fails the node.
7
+ */
1
8
  export function toolNode(tool, options) {
2
9
  return {
3
10
  name: tool.name,
4
11
  fn: async (ctx) => {
12
+ const extCtx = ctx;
13
+ const cogitator = extCtx.cogitator;
14
+ if (!cogitator) {
15
+ throw new Error(`toolNode "${tool.name}" requires a Cogitator instance in the node context`);
16
+ }
5
17
  const args = options.argsMapper(ctx.state, ctx.input);
6
- const toolContext = {
18
+ const signal = options.signal ?? extCtx.signal;
19
+ const invocation = await cogitator.invokeTool(tool, args, {
20
+ toolCallId: `${ctx.nodeId}:visit:${extCtx.visit ?? 1}`,
7
21
  agentId: `workflow:${ctx.workflowId}:${ctx.nodeId}`,
8
22
  runId: ctx.workflowId,
9
- signal: options.signal ??
10
- ctx.signal ??
11
- new AbortController().signal,
12
- };
13
- const result = await tool.execute(args, toolContext);
14
- const stateUpdate = options.stateMapper?.(result);
23
+ ...(signal && { signal }),
24
+ onApproval: async (request) => (await askToolApproval(request, `workflow node "${ctx.nodeId}"`, options.approvals, extCtx)) ?? 'pause',
25
+ });
26
+ if (invocation.error !== undefined) {
27
+ throw new Error(`toolNode "${tool.name}" failed in workflow "${ctx.workflowId}", node "${ctx.nodeId}": ${invocation.error}`);
28
+ }
15
29
  return {
16
- state: stateUpdate,
17
- output: result,
30
+ state: options.stateMapper?.(invocation.result),
31
+ output: invocation.result,
18
32
  };
19
33
  },
20
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/nodes/tool.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,QAAQ,CACtB,IAA0B,EAC1B,OAAkC;IAElC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,EAAE,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE,YAAY,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE;gBACnD,KAAK,EAAE,GAAG,CAAC,UAAU;gBACrB,MAAM,EACJ,OAAO,CAAC,MAAM;oBACb,GAAuC,CAAC,MAAM;oBAC/C,IAAI,eAAe,EAAE,CAAC,MAAM;aAC/B,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAErD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;YAElD,OAAO;gBACL,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/nodes/tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAcxE;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,IAA0B,EAC1B,OAAkC;IAElC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,EAAE,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;YACxC,MAAM,MAAM,GAAG,GAAmD,CAAC;YACnE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,IAAI,qDAAqD,CAC5E,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,IAAY,EAAE,IAAI,EAAE;gBAChE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,UAAU,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE;gBACtD,OAAO,EAAE,YAAY,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE;gBACnD,KAAK,EAAE,GAAG,CAAC,UAAU;gBACrB,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzB,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC5B,CAAC,MAAM,eAAe,CACpB,OAAO,EACP,kBAAkB,GAAG,CAAC,MAAM,GAAG,EAC/B,OAAO,CAAC,SAAS,EACjB,MAAgC,CACjC,CAAC,IAAI,OAAO;aAChB,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,IAAI,yBAAyB,GAAG,CAAC,UAAU,YAAY,GAAG,CAAC,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,CAC5G,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- 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.js';
1
+ export { type MapItemResult, type MapProgressEvent, type MapNodeConfig, type ReduceNodeConfig, type MapReduceResult, type MapReduceNodeConfig, type MapItemContext, type MapExecutionOptions, MapItemSkippedError, MapItemTimeoutError, executeMap, executeReduce, executeMapReduce, mapNode, reduceNode, mapReduceNode, parallelMap, sequentialMap, batchedMap, collect, sum, count, first, last, groupBy, partition, flatMap, stats, } from './map-reduce.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
@@ -1,2 +1,2 @@
1
- export { executeMap, executeReduce, executeMapReduce, mapNode, reduceNode, mapReduceNode, parallelMap, sequentialMap, batchedMap, collect, sum, count, first, last, groupBy, partition, flatMap, stats, } from './map-reduce.js';
1
+ export { MapItemSkippedError, MapItemTimeoutError, executeMap, executeReduce, executeMapReduce, mapNode, reduceNode, mapReduceNode, parallelMap, sequentialMap, batchedMap, collect, sum, count, first, last, groupBy, partition, flatMap, stats, } from './map-reduce.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC"}
@@ -15,15 +15,34 @@ export interface MapProgressEvent<T> {
15
15
  pending: number;
16
16
  running: number;
17
17
  }
18
+ /**
19
+ * What a mapper gets besides the item: the signal to stop on and which attempt this is.
20
+ */
21
+ export interface MapItemContext {
22
+ /**
23
+ * Aborted when this attempt times out, another item fails the map (without
24
+ * `continueOnError`), or the workflow run is cancelled or paused. Pass it on to agent runs,
25
+ * fetches and tools so their work stops too
26
+ */
27
+ signal: AbortSignal;
28
+ /** 1 for the first attempt, 2 for the first retry, ... */
29
+ attempt: number;
30
+ }
18
31
  export interface MapNodeConfig<S, T> {
19
32
  name: string;
20
33
  items: (state: S) => unknown[];
21
- mapper: (item: unknown, index: number, state: S) => Promise<T> | T;
34
+ mapper: (item: unknown, index: number, state: S, ctx: MapItemContext) => Promise<T> | T;
22
35
  concurrency?: number;
36
+ /**
37
+ * Keep mapping when an item fails: failed items appear in the results with `success: false`.
38
+ * Without it the first failure stops the map: no further item starts, items in flight are
39
+ * aborted, and the map rejects with that failure
40
+ */
23
41
  continueOnError?: boolean;
24
42
  onProgress?: (progress: MapProgressEvent<T>) => void;
25
43
  filter?: (item: unknown, index: number, state: S) => boolean;
26
44
  transform?: (item: unknown, index: number, state: S) => unknown;
45
+ /** Time limit of one attempt in ms: a late attempt is aborted (`ctx.signal`) and fails */
27
46
  timeout?: number;
28
47
  retry?: {
29
48
  maxAttempts: number;
@@ -31,6 +50,25 @@ export interface MapNodeConfig<S, T> {
31
50
  backoff?: 'linear' | 'exponential';
32
51
  };
33
52
  }
53
+ /** Options of a map run. */
54
+ export interface MapExecutionOptions {
55
+ /** Cancels the map: no further item starts and the items in flight are aborted */
56
+ signal?: AbortSignal;
57
+ }
58
+ /**
59
+ * Result error of an item that never ran because the map stopped first: another item failed
60
+ * or the run was cancelled. `cause` is what stopped the map.
61
+ */
62
+ export declare class MapItemSkippedError extends Error {
63
+ readonly index: number;
64
+ constructor(index: number, cause: Error);
65
+ }
66
+ /** An attempt of an item that ran past the map's `timeout`. */
67
+ export declare class MapItemTimeoutError extends Error {
68
+ readonly index: number;
69
+ readonly timeoutMs: number;
70
+ constructor(index: number, timeoutMs: number);
71
+ }
34
72
  export interface ReduceNodeConfig<S, T, R> {
35
73
  name: string;
36
74
  initial: R | ((state: S) => R);
@@ -55,23 +93,33 @@ export interface MapReduceNodeConfig<S, T, R> {
55
93
  map: Omit<MapNodeConfig<S, T>, 'name'>;
56
94
  reduce: Omit<ReduceNodeConfig<S, T, R>, 'name'>;
57
95
  }
58
- export declare function executeMap<S, T>(state: S, config: MapNodeConfig<S, T>): Promise<MapItemResult<T>[]>;
96
+ /**
97
+ * Map the items of `state` with `config.mapper`, at most `concurrency` at a time. Without
98
+ * `continueOnError` the first failed item stops the map: no further item starts, the items in
99
+ * flight are aborted, and the map rejects with that item's error. Aborting `options.signal`
100
+ * stops it the same way. The rejection carries `partialResults`, one entry per item: what it
101
+ * returned, why it failed, or a `MapItemSkippedError` for an item that never ran.
102
+ */
103
+ export declare function executeMap<S, T>(state: S, config: MapNodeConfig<S, T>, options?: MapExecutionOptions): Promise<MapItemResult<T>[]>;
59
104
  export declare function executeReduce<S, T, R>(results: MapItemResult<T>[], state: S, config: ReduceNodeConfig<S, T, R>): R;
60
- export declare function executeMapReduce<S, T, R>(state: S, config: MapReduceNodeConfig<S, T, R>): Promise<MapReduceResult<T, R>>;
105
+ export declare function executeMapReduce<S, T, R>(state: S, config: MapReduceNodeConfig<S, T, R>, options?: MapExecutionOptions): Promise<MapReduceResult<T, R>>;
61
106
  export declare function mapNode<S, T>(name: string, config: Omit<MapNodeConfig<S, T>, 'name'>): MapNodeConfig<S, T>;
62
107
  export declare function reduceNode<S, T, R>(name: string, config: Omit<ReduceNodeConfig<S, T, R>, 'name'>): ReduceNodeConfig<S, T, R>;
63
108
  export declare function mapReduceNode<S, T, R>(name: string, config: Omit<MapReduceNodeConfig<S, T, R>, 'name'>): MapReduceNodeConfig<S, T, R>;
64
- export declare function parallelMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise<T> | T, options?: {
109
+ export declare function parallelMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S, ctx: MapItemContext) => Promise<T> | T, options?: {
65
110
  continueOnError?: boolean;
66
111
  onProgress?: (progress: MapProgressEvent<T>) => void;
112
+ signal?: AbortSignal;
67
113
  }): Promise<MapItemResult<T>[]>;
68
- export declare function sequentialMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise<T> | T, options?: {
114
+ export declare function sequentialMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S, ctx: MapItemContext) => Promise<T> | T, options?: {
69
115
  continueOnError?: boolean;
70
116
  onProgress?: (progress: MapProgressEvent<T>) => void;
117
+ signal?: AbortSignal;
71
118
  }): Promise<MapItemResult<T>[]>;
72
- 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?: {
119
+ export declare function batchedMap<S, T>(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S, ctx: MapItemContext) => Promise<T> | T, batchSize: number, options?: {
73
120
  continueOnError?: boolean;
74
121
  onProgress?: (progress: MapProgressEvent<T>) => void;
122
+ signal?: AbortSignal;
75
123
  }): Promise<MapItemResult<T>[]>;
76
124
  export declare function collect<T>(): Omit<ReduceNodeConfig<unknown, T, T[]>, 'name'>;
77
125
  export declare function sum(): Omit<ReduceNodeConfig<unknown, number, number>, 'name'>;
@@ -1 +1 @@
1
- {"version":3,"file":"map-reduce.d.ts","sourceRoot":"","sources":["../../src/patterns/map-reduce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-reduce.d.ts","sourceRoot":"","sources":["../../src/patterns/map-reduce.ts"],"names":[],"mappings":"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"}
@@ -1,70 +1,109 @@
1
- async function executeWithConcurrency(items, mapper, concurrency, onComplete) {
2
- const results = new Array(items.length);
3
- const pending = [];
4
- let nextIndex = 0;
5
- const executeNext = async () => {
6
- const index = nextIndex++;
7
- if (index >= items.length)
1
+ /**
2
+ * Result error of an item that never ran because the map stopped first: another item failed
3
+ * or the run was cancelled. `cause` is what stopped the map.
4
+ */
5
+ export class MapItemSkippedError extends Error {
6
+ index;
7
+ constructor(index, cause) {
8
+ super(`Item ${index} was not mapped: ${cause.message}`, { cause });
9
+ this.name = 'MapItemSkippedError';
10
+ this.index = index;
11
+ }
12
+ }
13
+ /** An attempt of an item that ran past the map's `timeout`. */
14
+ export class MapItemTimeoutError extends Error {
15
+ index;
16
+ timeoutMs;
17
+ constructor(index, timeoutMs) {
18
+ super(`Item ${index} timed out after ${timeoutMs}ms`);
19
+ this.name = 'MapItemTimeoutError';
20
+ this.index = index;
21
+ this.timeoutMs = timeoutMs;
22
+ }
23
+ }
24
+ function toError(value, fallback) {
25
+ return value instanceof Error ? value : new Error(value === undefined ? fallback : String(value));
26
+ }
27
+ /** Resolve after `ms`, or reject with the signal's reason once it aborts. */
28
+ function abortableDelay(ms, signal) {
29
+ return new Promise((resolve, reject) => {
30
+ if (signal.aborted) {
31
+ reject(toError(signal.reason, 'Map aborted'));
8
32
  return;
9
- const result = await mapper(items[index], index);
10
- results[index] = result;
11
- onComplete?.(result);
12
- await executeNext();
13
- };
14
- const initialBatch = Math.min(concurrency, items.length);
15
- for (let i = 0; i < initialBatch; i++) {
16
- pending.push(executeNext());
33
+ }
34
+ const onAbort = () => {
35
+ clearTimeout(timer);
36
+ reject(toError(signal.reason, 'Map aborted'));
37
+ };
38
+ const timer = setTimeout(() => {
39
+ signal.removeEventListener('abort', onAbort);
40
+ resolve();
41
+ }, ms);
42
+ signal.addEventListener('abort', onAbort, { once: true });
43
+ });
44
+ }
45
+ /**
46
+ * Settle with `work`, or reject as soon as `signal` aborts. A mapper that ignores its signal
47
+ * keeps running detached, but the map does not wait for it.
48
+ */
49
+ function raceWithSignal(work, signal) {
50
+ return new Promise((resolve, reject) => {
51
+ const onAbort = () => reject(toError(signal.reason, 'Map aborted'));
52
+ if (signal.aborted) {
53
+ onAbort();
54
+ }
55
+ else {
56
+ signal.addEventListener('abort', onAbort, { once: true });
57
+ }
58
+ work.then((value) => {
59
+ signal.removeEventListener('abort', onAbort);
60
+ resolve(value);
61
+ }, (error) => {
62
+ signal.removeEventListener('abort', onAbort);
63
+ reject(toError(error, 'Map item failed'));
64
+ });
65
+ });
66
+ }
67
+ async function runAttempt(item, index, state, config, attempt, mapSignal) {
68
+ const controller = new AbortController();
69
+ const forward = () => controller.abort(mapSignal.reason);
70
+ mapSignal.addEventListener('abort', forward, { once: true });
71
+ const timer = config.timeout !== undefined && config.timeout > 0
72
+ ? setTimeout(() => controller.abort(new MapItemTimeoutError(index, config.timeout)), config.timeout)
73
+ : undefined;
74
+ try {
75
+ const work = Promise.resolve().then(() => {
76
+ const processed = config.transform ? config.transform(item, index, state) : item;
77
+ return config.mapper(processed, index, state, { signal: controller.signal, attempt });
78
+ });
79
+ return await raceWithSignal(work, controller.signal);
80
+ }
81
+ finally {
82
+ if (timer)
83
+ clearTimeout(timer);
84
+ mapSignal.removeEventListener('abort', forward);
17
85
  }
18
- await Promise.all(pending);
19
- return results;
20
86
  }
21
- async function executeItem(item, index, state, config) {
87
+ async function executeItem(item, index, state, config, mapSignal) {
22
88
  const startTime = Date.now();
23
89
  let lastError;
24
- const maxAttempts = config.retry?.maxAttempts ?? 1;
25
- for (let attempt = 0; attempt < maxAttempts; attempt++) {
90
+ const maxAttempts = Math.max(1, config.retry?.maxAttempts ?? 1);
91
+ for (let attempt = 1; attempt <= maxAttempts && !mapSignal.aborted; attempt++) {
26
92
  try {
27
- let processedItem = item;
28
- if (config.transform) {
29
- processedItem = config.transform(item, index, state);
30
- }
31
- let resultPromise = Promise.resolve(config.mapper(processedItem, index, state));
32
- if (config.timeout) {
33
- let timer;
34
- const timeoutPromise = new Promise((_, reject) => {
35
- timer = setTimeout(() => reject(new Error('Item timeout exceeded')), config.timeout);
36
- });
37
- try {
38
- const result = await Promise.race([resultPromise, timeoutPromise]);
39
- return {
40
- index,
41
- item,
42
- result,
43
- success: true,
44
- duration: Date.now() - startTime,
45
- };
46
- }
47
- finally {
48
- clearTimeout(timer);
49
- }
50
- }
51
- const result = await resultPromise;
52
- return {
53
- index,
54
- item,
55
- result,
56
- success: true,
57
- duration: Date.now() - startTime,
58
- };
93
+ const result = await runAttempt(item, index, state, config, attempt, mapSignal);
94
+ return { index, item, result, success: true, duration: Date.now() - startTime };
59
95
  }
60
96
  catch (error) {
61
- lastError = error instanceof Error ? error : new Error(String(error));
62
- if (attempt < maxAttempts - 1 && config.retry) {
63
- const delay = config.retry.delay ?? 1000;
64
- const actualDelay = config.retry.backoff === 'exponential'
65
- ? delay * Math.pow(2, attempt)
66
- : delay * (attempt + 1);
67
- await new Promise((resolve) => setTimeout(resolve, actualDelay));
97
+ lastError = toError(error, 'Map item failed');
98
+ }
99
+ if (attempt < maxAttempts && config.retry && !mapSignal.aborted) {
100
+ const delay = config.retry.delay ?? 1000;
101
+ const wait = config.retry.backoff === 'exponential' ? delay * Math.pow(2, attempt - 1) : delay * attempt;
102
+ try {
103
+ await abortableDelay(wait, mapSignal);
104
+ }
105
+ catch {
106
+ break;
68
107
  }
69
108
  }
70
109
  }
@@ -73,68 +112,87 @@ async function executeItem(item, index, state, config) {
73
112
  item,
74
113
  result: undefined,
75
114
  success: false,
76
- error: lastError,
115
+ error: lastError ?? toError(mapSignal.reason, 'Map aborted'),
77
116
  duration: Date.now() - startTime,
78
117
  };
79
118
  }
80
- export async function executeMap(state, config) {
119
+ /**
120
+ * Map the items of `state` with `config.mapper`, at most `concurrency` at a time. Without
121
+ * `continueOnError` the first failed item stops the map: no further item starts, the items in
122
+ * flight are aborted, and the map rejects with that item's error. Aborting `options.signal`
123
+ * stops it the same way. The rejection carries `partialResults`, one entry per item: what it
124
+ * returned, why it failed, or a `MapItemSkippedError` for an item that never ran.
125
+ */
126
+ export async function executeMap(state, config, options = {}) {
127
+ const runSignal = options.signal;
128
+ if (runSignal?.aborted)
129
+ throw toError(runSignal.reason, 'Map aborted');
81
130
  let items = config.items(state);
82
131
  if (config.filter) {
83
132
  items = items.filter((item, index) => config.filter(item, index, state));
84
133
  }
85
- const concurrency = config.concurrency ?? Infinity;
134
+ const controller = new AbortController();
135
+ const forwardRunAbort = () => controller.abort(runSignal?.reason);
136
+ runSignal?.addEventListener('abort', forwardRunAbort, { once: true });
137
+ const results = new Array(items.length);
138
+ const concurrency = Math.max(1, config.concurrency ?? Infinity);
139
+ let nextIndex = 0;
140
+ let running = 0;
86
141
  let completed = 0;
87
142
  let successful = 0;
88
143
  let failed = 0;
89
- let started = false;
144
+ let failure;
90
145
  const emitProgress = (current) => {
91
- if (config.onProgress) {
92
- config.onProgress({
93
- total: items.length,
94
- completed,
95
- successful,
96
- failed,
97
- currentItem: current,
98
- pending: items.length - completed,
99
- running: started ? Math.min(concurrency, items.length - completed) : 0,
100
- });
101
- }
146
+ config.onProgress?.({
147
+ total: items.length,
148
+ completed,
149
+ successful,
150
+ failed,
151
+ currentItem: current,
152
+ pending: items.length - completed,
153
+ running,
154
+ });
102
155
  };
103
- emitProgress();
104
- const mapper = async (item, index) => {
105
- started = true;
106
- const result = await executeItem(item, index, state, config);
107
- completed++;
108
- if (result.success) {
109
- successful++;
110
- }
111
- else {
112
- failed++;
113
- if (!config.continueOnError) {
114
- throw result.error ?? new Error(`Item ${index} failed`);
156
+ const worker = async () => {
157
+ while (!controller.signal.aborted && nextIndex < items.length) {
158
+ const index = nextIndex++;
159
+ running++;
160
+ const result = await executeItem(items[index], index, state, config, controller.signal);
161
+ running--;
162
+ results[index] = result;
163
+ completed++;
164
+ if (result.success) {
165
+ successful++;
166
+ }
167
+ else {
168
+ failed++;
169
+ if (!config.continueOnError && !controller.signal.aborted) {
170
+ failure = result.error ?? new Error(`Item ${index} failed`);
171
+ controller.abort(failure);
172
+ }
115
173
  }
174
+ emitProgress(result);
116
175
  }
117
- emitProgress(result);
118
- return result;
119
176
  };
177
+ emitProgress();
120
178
  try {
121
- return await executeWithConcurrency(items, mapper, concurrency);
179
+ await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => worker()));
122
180
  }
123
- catch (error) {
124
- const err = error instanceof Error ? error : new Error(String(error));
125
- const partialResults = [];
126
- for (let i = 0; i < items.length; i++) {
127
- partialResults.push({
128
- index: i,
129
- item: items[i],
130
- result: undefined,
131
- success: false,
132
- error: err,
133
- duration: 0,
134
- });
135
- }
136
- throw Object.assign(err, { partialResults });
181
+ finally {
182
+ runSignal?.removeEventListener('abort', forwardRunAbort);
137
183
  }
184
+ if (!controller.signal.aborted)
185
+ return results;
186
+ const reason = failure ?? toError(controller.signal.reason, 'Map aborted');
187
+ const partialResults = items.map((item, index) => results[index] ?? {
188
+ index,
189
+ item,
190
+ result: undefined,
191
+ success: false,
192
+ error: new MapItemSkippedError(index, reason),
193
+ duration: 0,
194
+ });
195
+ throw Object.assign(reason, { partialResults });
138
196
  }
139
197
  export function executeReduce(results, state, config) {
140
198
  const initial = typeof config.initial === 'function'
@@ -147,7 +205,7 @@ export function executeReduce(results, state, config) {
147
205
  }
148
206
  return result;
149
207
  }
150
- export async function executeMapReduce(state, config) {
208
+ export async function executeMapReduce(state, config, options = {}) {
151
209
  const startTime = Date.now();
152
210
  const mapConfig = {
153
211
  name: `${config.name}:map`,
@@ -169,7 +227,7 @@ export async function executeMapReduce(state, config) {
169
227
  streamingQueue.sort((a, b) => a.index - b.index);
170
228
  while (streamingQueue.length > 0 && streamingQueue[0].index === nextExpectedIndex) {
171
229
  const item = streamingQueue.shift();
172
- if (item.success && reduceConfig.successOnly !== false) {
230
+ if (item.success || reduceConfig.successOnly === false) {
173
231
  streamingAccumulator = reduceConfig.reducer(streamingAccumulator, item, state);
174
232
  }
175
233
  nextExpectedIndex++;
@@ -184,7 +242,7 @@ export async function executeMapReduce(state, config) {
184
242
  originalOnProgress?.(progress);
185
243
  };
186
244
  }
187
- const results = await executeMap(state, mapConfig);
245
+ const results = await executeMap(state, mapConfig, options);
188
246
  const reduceConfig = {
189
247
  name: `${config.name}:reduce`,
190
248
  ...config.reduce,
@@ -224,31 +282,34 @@ export function mapReduceNode(name, config) {
224
282
  return { name, ...config };
225
283
  }
226
284
  export async function parallelMap(state, items, mapper, options = {}) {
285
+ const { signal, ...mapOptions } = options;
227
286
  return executeMap(state, {
228
287
  name: 'parallelMap',
229
288
  items,
230
289
  mapper,
231
290
  concurrency: Infinity,
232
- ...options,
233
- });
291
+ ...mapOptions,
292
+ }, { signal });
234
293
  }
235
294
  export async function sequentialMap(state, items, mapper, options = {}) {
295
+ const { signal, ...mapOptions } = options;
236
296
  return executeMap(state, {
237
297
  name: 'sequentialMap',
238
298
  items,
239
299
  mapper,
240
300
  concurrency: 1,
241
- ...options,
242
- });
301
+ ...mapOptions,
302
+ }, { signal });
243
303
  }
244
304
  export async function batchedMap(state, items, mapper, batchSize, options = {}) {
305
+ const { signal, ...mapOptions } = options;
245
306
  return executeMap(state, {
246
307
  name: 'batchedMap',
247
308
  items,
248
309
  mapper,
249
310
  concurrency: batchSize,
250
- ...options,
251
- });
311
+ ...mapOptions,
312
+ }, { signal });
252
313
  }
253
314
  export function collect() {
254
315
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"map-reduce.js","sourceRoot":"","sources":["../../src/patterns/map-reduce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-reduce.js","sourceRoot":"","sources":["../../src/patterns/map-reduce.ts"],"names":[],"mappings":"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"}