@forgehive/task 0.1.7 → 0.1.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-replay.test.d.ts","sourceRoot":"","sources":["../../src/test/safe-replay.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require("@forgehive/schema");
4
+ const index_1 = require("../index");
5
+ describe('safeReplay functionality tests', () => {
6
+ // Common variables
7
+ let prices;
8
+ let boundaries;
9
+ // ToDo: Add correct type for schema and getTickerPrice
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ let schema;
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ let getTickerPrice; // Using any temporarily until we implement safeReplay
14
+ beforeEach(() => {
15
+ // Create a schema for the task
16
+ schema = new schema_1.Schema({
17
+ ticker: schema_1.Schema.string()
18
+ });
19
+ // Mock price data
20
+ prices = {
21
+ 'AAPL': 150.23
22
+ };
23
+ // Define the boundaries
24
+ boundaries = {
25
+ fetchData: async (ticker) => {
26
+ // check if the ticker is in the prices object
27
+ if (!prices[ticker]) {
28
+ throw new Error(`Ticker ${ticker} not found in prices`);
29
+ }
30
+ return prices[ticker];
31
+ }
32
+ };
33
+ // Create the task using createTask
34
+ getTickerPrice = (0, index_1.createTask)(schema, boundaries, async ({ ticker }, { fetchData }) => {
35
+ const price = await fetchData(ticker);
36
+ return {
37
+ ticker,
38
+ price
39
+ };
40
+ });
41
+ });
42
+ it('Should replay a previous execution using the execution log and replay the fetchData boundary', async () => {
43
+ // Create a manual execution log
44
+ const executionLog = {
45
+ input: { ticker: 'AAPL' },
46
+ output: {
47
+ ticker: 'AAPL',
48
+ price: 160.23
49
+ },
50
+ boundaries: {
51
+ fetchData: [
52
+ {
53
+ input: ['AAPL'],
54
+ output: 160.23
55
+ }
56
+ ]
57
+ }
58
+ };
59
+ // No safeReplay method yet, this will be implemented later
60
+ // This will be our test for that functionality
61
+ const [replayResult, replayError, replayLog] = await getTickerPrice.safeReplay(executionLog);
62
+ // Verify the replay execution
63
+ expect(replayError).toBeNull();
64
+ expect(replayResult).toMatchObject({
65
+ ticker: 'AAPL',
66
+ price: 150.23
67
+ });
68
+ expect(replayLog).toMatchObject({
69
+ input: { ticker: 'AAPL' },
70
+ output: {
71
+ ticker: 'AAPL',
72
+ price: 150.23
73
+ },
74
+ boundaries: {
75
+ fetchData: [
76
+ {
77
+ input: ['AAPL'],
78
+ output: 150.23,
79
+ }
80
+ ]
81
+ }
82
+ });
83
+ });
84
+ it('Should execute with mixed boundaries modes', async () => {
85
+ // Create a manual execution log for testing
86
+ const executionLog = {
87
+ input: { ticker: 'AAPL' },
88
+ output: {
89
+ ticker: 'AAPL',
90
+ price: 160.23
91
+ },
92
+ boundaries: {
93
+ fetchData: [
94
+ {
95
+ input: ['AAPL'],
96
+ output: 160.23
97
+ }
98
+ ]
99
+ }
100
+ };
101
+ // Use mixed mode - replay for fetchData but execute logAccess
102
+ const [replayResult, replayError, replayLog] = await getTickerPrice.safeReplay(executionLog, {
103
+ boundaries: {
104
+ fetchData: 'replay',
105
+ }
106
+ });
107
+ // Verify the replay execution
108
+ expect(replayError).toBeNull();
109
+ expect(replayResult).toMatchObject({
110
+ ticker: 'AAPL',
111
+ price: 160.23
112
+ });
113
+ expect(replayLog).toMatchObject({
114
+ input: { ticker: 'AAPL' },
115
+ output: {
116
+ ticker: 'AAPL',
117
+ price: 160.23
118
+ },
119
+ boundaries: {
120
+ fetchData: [
121
+ {
122
+ input: ['AAPL'],
123
+ output: 160.23
124
+ }
125
+ ]
126
+ }
127
+ });
128
+ });
129
+ it('Should properly handle errors in boundary replay mode', async () => {
130
+ // Create a manual execution log with an error in the boundary
131
+ const executionLog = {
132
+ input: { ticker: 'AAPL' },
133
+ output: null,
134
+ error: 'API error: Rate limit exceeded',
135
+ boundaries: {
136
+ fetchData: [
137
+ {
138
+ input: ['AAPL'],
139
+ error: 'API error: Rate limit exceeded'
140
+ }
141
+ ]
142
+ }
143
+ };
144
+ // Use replay mode for fetchData
145
+ const [replayResult, replayError, replayLog] = await getTickerPrice.safeReplay(executionLog, {
146
+ boundaries: {
147
+ fetchData: 'replay',
148
+ }
149
+ });
150
+ // Verify the replay execution - should have an error
151
+ expect(replayResult).toBeNull();
152
+ expect(replayError).not.toBeNull();
153
+ expect(replayError === null || replayError === void 0 ? void 0 : replayError.message).toBe('API error: Rate limit exceeded');
154
+ // The log should contain the error from the boundary
155
+ expect(replayLog.error).toBeDefined();
156
+ expect(replayLog.boundaries.fetchData[0].error).toBe('API error: Rate limit exceeded');
157
+ });
158
+ });
159
+ //# sourceMappingURL=safe-replay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-replay.test.js","sourceRoot":"","sources":["../../src/test/safe-replay.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-with-boundaries.test.js","sourceRoot":"","sources":["../../src/test/task-with-boundaries.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-with-boundaries.test.js","sourceRoot":"","sources":["../../src/test/task-with-boundaries.test.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,34 @@ export type Mode = 'proxy' | 'proxy-pass' | 'proxy-catch' | 'replay';
7
7
  */
8
8
  export type BoundaryFunction<TReturn = any> = (...args: any[]) => Promise<TReturn>;
9
9
  /**
10
- * Represents a record of a boundary function call
10
+ * Success record for a boundary function call
11
11
  * @template TInput - The type of input data
12
12
  * @template TOutput - The type of output data
13
13
  */
14
- export interface BoundaryRecord<TInput = any[], TOutput = any> {
14
+ export type BoundarySuccessRecord<TInput = unknown[], TOutput = unknown> = {
15
15
  input: TInput;
16
- output?: TOutput;
17
- error?: string;
18
- }
16
+ output: TOutput;
17
+ error?: undefined;
18
+ };
19
+ /**
20
+ * Error record for a boundary function call
21
+ * @template TInput - The type of input data
22
+ */
23
+ export type BoundaryErrorRecord<TInput = unknown[]> = {
24
+ input: TInput;
25
+ output?: undefined;
26
+ error: string;
27
+ };
28
+ /**
29
+ * Represents a record of a boundary function call - either success or error
30
+ * @template TInput - The type of input data
31
+ * @template TOutput - The type of output data
32
+ */
33
+ export type BoundaryRecord<TInput = unknown[], TOutput = unknown> = BoundarySuccessRecord<TInput, TOutput> | BoundaryErrorRecord<TInput>;
34
+ /**
35
+ * Represents the tape data for all boundaries
36
+ */
37
+ export type BoundaryTapeData = Record<string, Array<BoundaryRecord>>;
19
38
  /**
20
39
  * Represents a wrapped boundary function with additional methods
21
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AAEnD,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEpE;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAElF;;;;GAIG;AAEH,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,gBAAgB;IACvF,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,OAAO,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;CACrF;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAChE,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,YAAY,EAAE,IAAI,IAAI,KAAG,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,IAAI,GAAG,KAAK,CA4HxI,CAAA"}
1
+ {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AAEnD,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEpE;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAElF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAAI;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAC9D,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,gBAAgB;IACvF,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,OAAO,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;CACrF;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAChE,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,YAAY,EAAE,IAAI,IAAI,KAAG,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAiIxI,CAAA"}
@@ -57,9 +57,6 @@ const createBoundary = (fn) => {
57
57
  });
58
58
  return result;
59
59
  };
60
- const record = {
61
- input: args
62
- };
63
60
  if (mode === 'proxy-pass') {
64
61
  const record = findRecord(args, cacheTape);
65
62
  if (typeof record !== 'undefined') {
@@ -74,7 +71,8 @@ const createBoundary = (fn) => {
74
71
  if (typeof record === 'undefined') {
75
72
  throw new Error('No tape value for this inputs');
76
73
  }
77
- if (typeof record.error !== 'undefined') {
74
+ // Check if this is an error record by checking if error property exists
75
+ if (record.error !== undefined) {
78
76
  throw new Error(record.error);
79
77
  }
80
78
  return record.output;
@@ -96,20 +94,28 @@ const createBoundary = (fn) => {
96
94
  })();
97
95
  }
98
96
  else {
99
- record.error = error.message;
97
+ // Create an error record
98
+ const errorRecord = {
99
+ input: args,
100
+ error: error.message
101
+ };
100
102
  if (hasRun) {
101
- runLog.push(record);
103
+ runLog.push(errorRecord);
102
104
  }
103
- cacheTape.push(record);
105
+ cacheTape.push(errorRecord);
104
106
  throw error;
105
107
  }
106
108
  }
107
109
  else {
108
- record.output = result;
110
+ // Create a success record
111
+ const successRecord = {
112
+ input: args,
113
+ output: result
114
+ };
109
115
  if (hasRun) {
110
- runLog.push(record);
116
+ runLog.push(successRecord);
111
117
  }
112
- cacheTape.push(record);
118
+ cacheTape.push(successRecord);
113
119
  return result;
114
120
  }
115
121
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgehive/task",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
package/src/index.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { Schema, type SchemaType, type InferSchema, type SchemaDescription } from '@forgehive/schema'
2
- import { createBoundary, type Mode, type Boundaries, type WrappedBoundaries, type WrappedBoundaryFunction } from './utils/boundary'
2
+ import {
3
+ createBoundary,
4
+ type Mode,
5
+ type Boundaries,
6
+ type WrappedBoundaries,
7
+ type WrappedBoundaryFunction,
8
+ type BoundaryRecord,
9
+ type BoundaryTapeData
10
+ } from './utils/boundary'
3
11
 
4
12
  export interface Task {
5
13
  id: string;
@@ -11,7 +19,17 @@ export interface Task {
11
19
  export type BaseFunction = (...args: any[]) => any
12
20
 
13
21
  // Re-export the boundary types for external use
14
- export type { BoundaryFunction, WrappedBoundaryFunction, Boundaries, WrappedBoundaries, Mode } from './utils/boundary'
22
+ export type {
23
+ BoundaryFunction,
24
+ WrappedBoundaryFunction,
25
+ Boundaries,
26
+ WrappedBoundaries,
27
+ Mode,
28
+ BoundarySuccessRecord,
29
+ BoundaryErrorRecord,
30
+ BoundaryRecord,
31
+ BoundaryTapeData
32
+ } from './utils/boundary'
15
33
 
16
34
  // Re-export Schema for external use
17
35
  export { Schema }
@@ -20,7 +38,14 @@ export interface TaskConfig<B extends Boundaries = Boundaries> {
20
38
  schema?: Schema<Record<string, SchemaType>>
21
39
  mode?: Mode
22
40
  boundaries?: B
23
- boundariesData?: Record<string, unknown>
41
+ boundariesData?: BoundaryTapeData
42
+ }
43
+
44
+ // Interface for safeReplay configuration
45
+ export interface ReplayConfig<B extends Boundaries = Boundaries> {
46
+ boundaries: {
47
+ [K in keyof B]?: Mode
48
+ }
24
49
  }
25
50
 
26
51
  // ToDo: Add a type for the boundaries data
@@ -39,11 +64,7 @@ export interface TaskRecord<InputType = unknown, OutputType = unknown> {
39
64
  }
40
65
 
41
66
  // Make BoundaryLog generic
42
- export type BoundaryLog<I extends unknown[] = unknown[], O = unknown> = {
43
- input: I
44
- output: O | null
45
- error: string | null
46
- }
67
+ export type BoundaryLog<I extends unknown[] = unknown[], O = unknown> = BoundaryRecord<I, O>;
47
68
 
48
69
  // Mapped type for boundaries
49
70
  export type BoundaryLogsFor<B extends Boundaries> = {
@@ -89,7 +110,7 @@ export interface TaskInstanceType<Func extends BaseFunction = BaseFunction, B ex
89
110
  // Boundary methods
90
111
  asBoundary: () => (args: Parameters<Func>[0]) => Promise<ReturnType<Func>>
91
112
  getBoundaries: () => WrappedBoundaries<B>
92
- setBoundariesData: (boundariesData: Record<string, unknown>) => void
113
+ setBoundariesData: (boundariesData: BoundaryTapeData) => void
93
114
  getBondariesData: () => Record<string, unknown>
94
115
 
95
116
  // Mocking methods for testing
@@ -99,8 +120,17 @@ export interface TaskInstanceType<Func extends BaseFunction = BaseFunction, B ex
99
120
 
100
121
  run: (argv?: Parameters<Func>[0]) => Promise<ReturnType<Func>>
101
122
  safeRun: (argv?: Parameters<Func>[0]) => Promise<[ReturnType<Func> | null, Error | null, ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B>]>
123
+
124
+ // Method for replaying task execution
125
+ safeReplay: (
126
+ executionLog: ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B>,
127
+ config: ReplayConfig<B>
128
+ ) => Promise<[ReturnType<Func> | null, Error | null, ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B>]>
102
129
  }
103
130
 
131
+ // Define a type for the accumulated boundary data
132
+ type BoundaryData = Array<{input: unknown[], output?: unknown}>
133
+
104
134
  // Helper type to infer schema type
105
135
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
136
  export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
@@ -110,9 +140,6 @@ export type TaskFunction<S, B extends Boundaries> =
110
140
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
141
  (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<any>;
112
142
 
113
- // Define a type for the accumulated boundary data
114
- type BoundaryData = Array<{input: unknown[], output?: unknown}>
115
-
116
143
  export const Task = class Task<
117
144
  B extends Boundaries = Boundaries,
118
145
  Func extends BaseFunction = BaseFunction
@@ -125,7 +152,7 @@ export const Task = class Task<
125
152
  _description?: string
126
153
 
127
154
  _boundariesDefinition: B
128
- _boundariesData: Record<string, unknown> | null
155
+ _boundariesData: BoundaryTapeData | null
129
156
  _accumulatedBoundariesData: Record<string, BoundaryData> = {}
130
157
 
131
158
  // For storing mocks
@@ -250,7 +277,7 @@ export const Task = class Task<
250
277
  })
251
278
  }
252
279
 
253
- setBoundariesData (boundariesData: Record<string, unknown>): void {
280
+ setBoundariesData (boundariesData: BoundaryTapeData): void {
254
281
  this._boundariesData = boundariesData
255
282
 
256
283
  // Update accumulated data as well
@@ -297,31 +324,36 @@ export const Task = class Task<
297
324
  _createBounderies ({
298
325
  definition,
299
326
  baseData,
300
- mode = 'proxy'
327
+ mode = 'proxy',
328
+ boundaryModes = {}
301
329
  }: {
302
330
  definition: B;
303
- baseData: Record<string, unknown> | null;
331
+ baseData: BoundaryTapeData | null;
304
332
  mode?: Mode;
333
+ boundaryModes?: Record<string, Mode | undefined>;
305
334
  }): WrappedBoundaries<B> {
306
335
  const boundariesFns: Record<string, WrappedBoundaryFunction> = {}
307
336
 
308
337
  for (const name in definition) {
338
+ // Get the configured mode for this boundary or use default
339
+ const boundaryMode = boundaryModes[name] || mode
340
+
309
341
  // Check if we have a mock for this boundary
310
342
  if (this._boundaryMocks[name]) {
311
343
  boundariesFns[name] = this._boundaryMocks[name]
312
344
  continue
313
345
  }
314
346
 
315
- // Otherwise create the normal boundary
347
+ // Create the boundary
316
348
  const boundary = createBoundary(definition[name])
317
349
 
318
350
  if (baseData !== null && typeof baseData[name] !== 'undefined') {
319
- const tape = baseData[name]
320
-
321
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
322
- boundary.setTape(tape as any)
351
+ const boundaryData = baseData[name] as Array<BoundaryRecord<Parameters<B[Extract<keyof B, string>]>, Awaited<ReturnType<B[Extract<keyof B, string>]>>>>
352
+ boundary.setTape(boundaryData)
323
353
  }
324
- boundary.setMode(mode as Mode)
354
+
355
+ // Set the mode after setting the tape
356
+ boundary.setMode(boundaryMode)
325
357
 
326
358
  boundariesFns[name] = boundary
327
359
  }
@@ -436,6 +468,120 @@ export const Task = class Task<
436
468
  return [output, error, logItem]
437
469
  }
438
470
 
471
+ async safeReplay(
472
+ executionLog: ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B>,
473
+ config: ReplayConfig<B> = {
474
+ boundaries: {}
475
+ }
476
+ ): Promise<[
477
+ ReturnType<Func> | null,
478
+ Error | null,
479
+ ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B>
480
+ ]> {
481
+ // Extract the input from the execution log
482
+ const argv = executionLog.input
483
+
484
+ // Initialize log item for this replay
485
+ const logItem: ExecutionRecord<Parameters<Func>[0], ReturnType<Func>, B> = {
486
+ input: argv,
487
+ boundaries: {} as BoundaryLogsFor<B>
488
+ }
489
+
490
+ // Create boundaries for this replay execution with custom modes based on config
491
+ const boundariesConfig: BoundaryTapeData = {}
492
+
493
+ // Setup boundary data for replay mode boundaries
494
+ for (const name in this._boundariesDefinition) {
495
+ // Check if this boundary is configured for replay mode
496
+ const mode = config.boundaries[name] || 'proxy'
497
+
498
+ if (mode === 'replay' && executionLog.boundaries[name]) {
499
+ // Add boundary data from the execution log for replay mode
500
+ boundariesConfig[name] = executionLog.boundaries[name]
501
+ }
502
+ }
503
+
504
+ // Create fresh boundaries for this execution
505
+ const executionBoundaries = this._createBounderies({
506
+ definition: this._boundariesDefinition,
507
+ baseData: boundariesConfig,
508
+ mode: 'proxy',
509
+ boundaryModes: config.boundaries
510
+ })
511
+
512
+ // Start run for each boundary
513
+ for (const name in executionBoundaries) {
514
+ const boundary = executionBoundaries[name]
515
+ boundary.startRun()
516
+ }
517
+
518
+ // Handle schema validation - reusing the input from the execution log
519
+ if (this._schema) {
520
+ const validation = this._schema.safeParse(argv)
521
+ if (!validation.success) {
522
+ const errorDetails = validation.error?.errors.map(err =>
523
+ `${err.path.join('.')}: ${err.message}`
524
+ ).join(', ')
525
+
526
+ const errorMessage = errorDetails
527
+ ? `Invalid input on: ${errorDetails}`
528
+ : 'Invalid input'
529
+
530
+ logItem.error = errorMessage
531
+ logItem.output = executionLog.output // Keep the original output
532
+
533
+ // Copy the boundary data from the execution log
534
+ logItem.boundaries = executionLog.boundaries
535
+
536
+ this.emit(logItem)
537
+ return [null, new Error(errorMessage), logItem]
538
+ }
539
+ }
540
+
541
+ let output: ReturnType<Func> | null = null
542
+ let error: Error | null = null
543
+
544
+ try {
545
+ // Execute the task function with replay boundaries
546
+ output = await this._fn(
547
+ argv,
548
+ executionBoundaries as unknown as Parameters<Func>[1]
549
+ )
550
+
551
+ logItem.output = output
552
+ } catch (caughtError) {
553
+ const errorMessage = caughtError instanceof Error ? caughtError.message : String(caughtError)
554
+ logItem.error = errorMessage
555
+ error = new Error(errorMessage)
556
+ }
557
+
558
+ // Process boundary data after execution
559
+ const boundariesRunLog: BoundaryLogsFor<B> = {} as BoundaryLogsFor<B>
560
+
561
+ for (const name in executionBoundaries) {
562
+ const boundary = executionBoundaries[name]
563
+ const runData = boundary.getRunData()
564
+
565
+ // For boundaries in replay mode, use the original log data instead
566
+ const mode = config.boundaries[name] || 'proxy'
567
+ if (mode === 'replay' && executionLog.boundaries[name]) {
568
+ boundariesRunLog[name as keyof B] = executionLog.boundaries[name as keyof B]
569
+ } else {
570
+ // For other modes, use the actual run data
571
+ boundariesRunLog[name as keyof B] = runData as unknown as BoundaryLogsFor<B>[typeof name]
572
+ }
573
+ }
574
+
575
+ // Set boundaries in log item before emitting
576
+ logItem.boundaries = boundariesRunLog
577
+
578
+ // Emit the log item
579
+ this.emit(logItem)
580
+
581
+ // Return the output, error, and log item
582
+ return [output, error, logItem]
583
+ }
584
+
439
585
  async run (argv?: Parameters<Func>[0]): Promise<ReturnType<Func>> {
440
586
  const [result, error] = await this.safeRun(argv)
441
587