@forgehive/task 0.2.1 → 0.2.2

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/README.md CHANGED
@@ -47,14 +47,14 @@ const registerUser = createTask(
47
47
  async (argv, boundaries) => {
48
48
  // argv is typed based on the schema (has name: string, age?: number)
49
49
  console.log(`Registering user: ${argv.name}`);
50
-
50
+
51
51
  // Call boundaries with type safety
52
52
  await boundaries.saveToDatabase({ name: argv.name, age: argv.age });
53
53
  const emailSent = await boundaries.sendEmail(
54
54
  'admin@example.com',
55
55
  `New user registered: ${argv.name}`
56
56
  );
57
-
57
+
58
58
  return {
59
59
  success: true,
60
60
  emailSent,
@@ -184,27 +184,27 @@ describe('Init task', () => {
184
184
  it('should create a config file when dryRun is false', async () => {
185
185
  // Mock the saveFile boundary
186
186
  const saveFileMock = jest.fn();
187
-
187
+
188
188
  // Override the boundaries
189
189
  init.getBoundaries().saveFile = saveFileMock;
190
-
190
+
191
191
  // Run the task
192
192
  await init.run({ dryRun: false });
193
-
193
+
194
194
  // Verify the boundary was called
195
195
  expect(saveFileMock).toHaveBeenCalled();
196
196
  });
197
-
197
+
198
198
  it('should not create a file when dryRun is true', async () => {
199
199
  // Mock the saveFile boundary
200
200
  const saveFileMock = jest.fn();
201
-
201
+
202
202
  // Override the boundaries
203
203
  init.getBoundaries().saveFile = saveFileMock;
204
-
204
+
205
205
  // Run the task
206
206
  await init.run({ dryRun: true });
207
-
207
+
208
208
  // Verify the boundary was not called
209
209
  expect(saveFileMock).not.toHaveBeenCalled();
210
210
  });
@@ -236,6 +236,160 @@ Returns a `TaskInstanceType` with methods for running and managing the task.
236
236
  - `isValid(argv?)`: Check if input is valid
237
237
  - `asBoundary()`: Convert the task to a boundary function
238
238
 
239
+ ## Adding Metadata to Task Execution
240
+
241
+ Tasks automatically provide a `setMetadata` boundary that allows you to add custom metadata to execution records. This metadata is useful for tracking, debugging, and analytics.
242
+
243
+ ### Basic Usage
244
+
245
+ ```typescript
246
+ import { createTask, Schema } from '@forgehive/task';
247
+
248
+ const schema = new Schema({
249
+ userId: Schema.string(),
250
+ operation: Schema.string()
251
+ });
252
+
253
+ const boundaries = {
254
+ processPayment: async (amount: number): Promise<string> => {
255
+ // Payment processing logic
256
+ return 'payment-id-123';
257
+ }
258
+ };
259
+
260
+ const processUserAction = createTask({
261
+ schema,
262
+ boundaries,
263
+ fn: async ({ userId, operation }, { processPayment, setMetadata }) => {
264
+ // Add metadata at the beginning
265
+ await setMetadata('userId', userId);
266
+ await setMetadata('environment', 'production');
267
+
268
+ if (operation === 'payment') {
269
+ await setMetadata('step', 'processing-payment');
270
+ const paymentId = await processPayment(100);
271
+
272
+ await setMetadata('step', 'payment-completed');
273
+ await setMetadata('paymentId', paymentId);
274
+
275
+ return { success: true, paymentId };
276
+ }
277
+
278
+ await setMetadata('step', 'completed');
279
+ return { success: true };
280
+ }
281
+ });
282
+ ```
283
+
284
+ ### Metadata in Execution Records
285
+
286
+ When you run a task, the metadata appears in the execution record:
287
+
288
+ ```typescript
289
+ const [result, error, record] = await processUserAction.safeRun({
290
+ userId: 'user-123',
291
+ operation: 'payment'
292
+ });
293
+
294
+ console.log(record.metadata);
295
+ // Output:
296
+ // {
297
+ // userId: 'user-123',
298
+ // environment: 'production',
299
+ // step: 'payment-completed',
300
+ // paymentId: 'payment-id-123'
301
+ // }
302
+ ```
303
+
304
+ ### Key Features
305
+
306
+ - **Dynamic Updates**: Metadata can be updated multiple times during execution
307
+ - **Error Preservation**: Metadata is preserved even if the task fails
308
+ - **Replay Support**: Metadata is properly handled during task replays
309
+ - **No Boundary Logs**: `setMetadata` calls don't appear in boundary execution logs
310
+ - **Type Safe**: Full TypeScript support with intellisense
311
+
312
+ ### Practical Example: User Registration
313
+
314
+ ```typescript
315
+ const registerUser = createTask({
316
+ schema: new Schema({
317
+ email: Schema.string(),
318
+ plan: Schema.string()
319
+ }),
320
+ boundaries: {
321
+ validateEmail: async (email: string) => true,
322
+ createUser: async (userData: any) => ({ id: 'user-123' }),
323
+ sendWelcomeEmail: async (email: string) => true
324
+ },
325
+ fn: async ({ email, plan }, { validateEmail, createUser, sendWelcomeEmail, setMetadata }) => {
326
+ // Track the registration flow
327
+ await setMetadata('registrationFlow', 'started');
328
+ await setMetadata('plan', plan);
329
+ await setMetadata('timestamp', Date.now().toString());
330
+
331
+ // Validate email
332
+ await setMetadata('step', 'validating-email');
333
+ const isValidEmail = await validateEmail(email);
334
+
335
+ if (!isValidEmail) {
336
+ await setMetadata('step', 'validation-failed');
337
+ throw new Error('Invalid email');
338
+ }
339
+
340
+ // Create user
341
+ await setMetadata('step', 'creating-user');
342
+ const user = await createUser({ email, plan });
343
+ await setMetadata('userId', user.id);
344
+
345
+ // Send welcome email
346
+ await setMetadata('step', 'sending-welcome-email');
347
+ await sendWelcomeEmail(email);
348
+
349
+ await setMetadata('step', 'completed');
350
+ await setMetadata('registrationFlow', 'success');
351
+
352
+ return { userId: user.id, success: true };
353
+ }
354
+ });
355
+ ```
356
+
357
+ ### Using Metadata for Analytics
358
+
359
+ Metadata is particularly useful for tracking task performance and user behavior:
360
+
361
+ ```typescript
362
+ // Add listener to track analytics
363
+ registerUser.addListener((record) => {
364
+ // Send metadata to analytics service
365
+ analytics.track('task_executed', {
366
+ taskName: record.taskName,
367
+ success: record.type === 'success',
368
+ metadata: record.metadata,
369
+ duration: Date.now() - parseInt(record.metadata?.timestamp || '0')
370
+ });
371
+ });
372
+ ```
373
+
374
+ ### Environment-Specific Metadata
375
+
376
+ Tasks automatically receive environment metadata when executed in different contexts:
377
+
378
+ - **CLI execution**: `environment: 'cli'`
379
+ - **Lambda execution**: `environment: 'hive-lambda'`
380
+ - **Custom contexts**: Pass metadata through `safeRun(args, context)`
381
+
382
+ You can combine this with your custom metadata:
383
+
384
+ ```typescript
385
+ const [result, error, record] = await task.safeRun(
386
+ { userId: 'user-123' },
387
+ { executionContext: 'background-job', version: '1.2.3' }
388
+ );
389
+
390
+ // record.metadata will contain both your custom metadata and the context
391
+ ```
392
+
239
393
  ## License
240
394
 
241
- MIT
395
+ MIT
package/dist/index.d.ts CHANGED
@@ -80,7 +80,10 @@ type BoundaryData = Array<{
80
80
  output?: unknown;
81
81
  }>;
82
82
  export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
83
- export type TaskFunction<S, B extends Boundaries> = (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<any>;
83
+ export type ExecutionRecordBoundaries = {
84
+ setMetadata: (key: string, value: string) => Promise<void>;
85
+ };
86
+ export type TaskFunction<S, B extends Boundaries> = (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<any>;
84
87
  /**
85
88
  * Utility function to compute the execution record type based on output and error state
86
89
  */
@@ -131,6 +134,16 @@ export declare const Task: {
131
134
  * Resets all mocked boundaries back to their original functions
132
135
  */
133
136
  resetMocks(): void;
137
+ /**
138
+ * Creates execution record boundaries that modify execution metadata and logging
139
+ * These boundaries are automatically injected into all task executions
140
+ *
141
+ * To add a new execution boundary:
142
+ * 1. Add the boundary function here
143
+ * 2. Update the ExecutionRecordBoundaries type to include the new boundary
144
+ * 3. That's it! The boundary will be available in all tasks automatically
145
+ */
146
+ _createExecutionBoundaries(metadata: Record<string, string>): Record<string, WrappedBoundaryFunction>;
134
147
  _createBounderies({ definition, baseData, mode, boundaryModes }: {
135
148
  definition: B;
136
149
  baseData: BoundaryTapeData | null;
@@ -156,7 +169,7 @@ export interface CreateTaskConfig<S extends Schema<Record<string, SchemaType>>,
156
169
  description?: string;
157
170
  schema: S;
158
171
  boundaries: B;
159
- fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<R>;
172
+ fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<R>;
160
173
  mode?: Mode;
161
174
  boundariesData?: BoundaryTapeData;
162
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -55,6 +55,8 @@ const Task = class Task {
55
55
  try {
56
56
  // Call the task's safeRun method
57
57
  const [outcome, error, log] = await this.safeRun(eventArgs);
58
+ // Extend log metadata with environment info
59
+ log.metadata = Object.assign(Object.assign({}, log.metadata), { environment: 'hive-lambda' });
58
60
  // Send log to Hive if environment variables are present
59
61
  await this._sendToHive(log);
60
62
  if (error) {
@@ -221,6 +223,26 @@ const Task = class Task {
221
223
  resetMocks() {
222
224
  this._boundaryMocks = {};
223
225
  }
226
+ /**
227
+ * Creates execution record boundaries that modify execution metadata and logging
228
+ * These boundaries are automatically injected into all task executions
229
+ *
230
+ * To add a new execution boundary:
231
+ * 1. Add the boundary function here
232
+ * 2. Update the ExecutionRecordBoundaries type to include the new boundary
233
+ * 3. That's it! The boundary will be available in all tasks automatically
234
+ */
235
+ _createExecutionBoundaries(metadata) {
236
+ return {
237
+ // Allows setting metadata key-value pairs from within task execution
238
+ setMetadata: (0, boundary_1.createBoundary)(async (...args) => {
239
+ const [key, value] = args;
240
+ metadata[key] = value;
241
+ })
242
+ // Future execution boundaries can be added here:
243
+ // addMetrics: createBoundary(async (...args: unknown[]): Promise<void> => { ... }),
244
+ };
245
+ }
224
246
  _createBounderies({ definition, baseData, mode = 'proxy', boundaryModes = {} }) {
225
247
  const boundariesFns = {};
226
248
  for (const name in definition) {
@@ -268,9 +290,12 @@ const Task = class Task {
268
290
  baseData: this._boundariesData,
269
291
  mode: this._mode
270
292
  });
293
+ // Create and inject execution record boundaries (setMetadata, etc.)
294
+ const executionRecordBoundaries = this._createExecutionBoundaries(metadata);
295
+ const allBoundaries = Object.assign(Object.assign({}, executionBoundaries), executionRecordBoundaries);
271
296
  // Start run for each boundary
272
- for (const name in executionBoundaries) {
273
- const boundary = executionBoundaries[name];
297
+ for (const name in allBoundaries) {
298
+ const boundary = allBoundaries[name];
274
299
  boundary.startRun();
275
300
  }
276
301
  // Handle schema validation
@@ -296,7 +321,7 @@ const Task = class Task {
296
321
  let error = null;
297
322
  try {
298
323
  // Execute the task function
299
- output = await this._fn(argv, executionBoundaries);
324
+ output = await this._fn(argv, allBoundaries);
300
325
  logItem.output = output;
301
326
  logItem.type = 'success';
302
327
  }
@@ -325,6 +350,8 @@ const Task = class Task {
325
350
  this._accumulatedBoundariesData[name] = [...currentData, ...runData];
326
351
  }
327
352
  }
353
+ // Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
354
+ // Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
328
355
  // Set boundaries in log item before emitting
329
356
  logItem.boundaries = boundariesRunLog;
330
357
  // Emit the log item
@@ -365,9 +392,14 @@ const Task = class Task {
365
392
  mode: 'proxy',
366
393
  boundaryModes: config.boundaries
367
394
  });
395
+ // Create and inject execution record boundaries (setMetadata, etc.)
396
+ // Clone the metadata to avoid mutating the original metadata
397
+ const replayMetadata = Object.assign({}, (logItem.metadata || {}));
398
+ const executionRecordBoundaries = this._createExecutionBoundaries(replayMetadata);
399
+ const allBoundaries = Object.assign(Object.assign({}, executionBoundaries), executionRecordBoundaries);
368
400
  // Start run for each boundary
369
- for (const name in executionBoundaries) {
370
- const boundary = executionBoundaries[name];
401
+ for (const name in allBoundaries) {
402
+ const boundary = allBoundaries[name];
371
403
  boundary.startRun();
372
404
  }
373
405
  // Handle schema validation - reusing the input from the execution log
@@ -391,7 +423,7 @@ const Task = class Task {
391
423
  let error = null;
392
424
  try {
393
425
  // Execute the task function with replay boundaries
394
- output = await this._fn(argv, executionBoundaries);
426
+ output = await this._fn(argv, allBoundaries);
395
427
  logItem.output = output;
396
428
  logItem.type = 'success';
397
429
  }
@@ -416,8 +448,12 @@ const Task = class Task {
416
448
  boundariesRunLog[name] = runData;
417
449
  }
418
450
  }
451
+ // Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
452
+ // Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
419
453
  // Set boundaries in log item before emitting
420
454
  logItem.boundaries = boundariesRunLog;
455
+ // Update the log item metadata with changes made during replay
456
+ logItem.metadata = replayMetadata;
421
457
  // Emit the log item
422
458
  this.emit(logItem);
423
459
  // Return the output, error, and log item
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execution-record-boundaries.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-record-boundaries.test.d.ts","sourceRoot":"","sources":["../../src/test/execution-record-boundaries.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('execution-record-boundaries', () => {
5
+ describe('setMetadata boundary', () => {
6
+ it('should add metadata to execution record when setMetadata is called', async () => {
7
+ // Create a schema
8
+ const schema = new index_1.Schema({
9
+ value: index_1.Schema.number()
10
+ });
11
+ // Create a task that uses setMetadata
12
+ const task = (0, index_1.createTask)({
13
+ name: 'metadata-test-task',
14
+ schema,
15
+ boundaries: {
16
+ multiply: async (value) => value * 2
17
+ },
18
+ fn: async ({ value }, { multiply, setMetadata }) => {
19
+ await setMetadata('userId', '12345');
20
+ await setMetadata('executionType', 'background');
21
+ const result = await multiply(value);
22
+ return { result };
23
+ }
24
+ });
25
+ // Run the task with safeRun
26
+ const [result, error, record] = await task.safeRun({ value: 5 });
27
+ // Verify the execution was successful
28
+ expect(error).toBeNull();
29
+ expect(result).toEqual({ result: 10 });
30
+ // Verify the metadata is included in the record
31
+ expect(record.metadata).toEqual({
32
+ userId: '12345',
33
+ executionType: 'background'
34
+ });
35
+ // Verify the task name and other fields are correct
36
+ expect(record.taskName).toBe('metadata-test-task');
37
+ expect(record.input).toEqual({ value: 5 });
38
+ expect(record.output).toEqual({ result: 10 });
39
+ expect(record.type).toBe('success');
40
+ });
41
+ it('should not include setMetadata calls in boundary logs', async () => {
42
+ // Create a schema
43
+ const schema = new index_1.Schema({
44
+ value: index_1.Schema.number()
45
+ });
46
+ // Create a task that uses setMetadata and other boundaries
47
+ const task = (0, index_1.createTask)({
48
+ name: 'boundary-log-test',
49
+ schema,
50
+ boundaries: {
51
+ multiply: async (value) => value * 2,
52
+ fetchData: async (data) => `fetched-${data}`
53
+ },
54
+ fn: async ({ value }, { multiply, fetchData, setMetadata }) => {
55
+ await setMetadata('step', 'start');
56
+ const multiplied = await multiply(value);
57
+ await setMetadata('step', 'multiplied');
58
+ const fetched = await fetchData('test');
59
+ await setMetadata('step', 'completed');
60
+ return { multiplied, fetched };
61
+ }
62
+ });
63
+ // Run the task with safeRun
64
+ const [result, error, record] = await task.safeRun({ value: 3 });
65
+ // Verify the execution was successful
66
+ expect(error).toBeNull();
67
+ expect(result).toEqual({ multiplied: 6, fetched: 'fetched-test' });
68
+ // Verify the metadata is updated to the final value
69
+ expect(record.metadata).toEqual({
70
+ step: 'completed'
71
+ });
72
+ // Verify that only the actual boundaries appear in the logs
73
+ expect(record.boundaries).toHaveProperty('multiply');
74
+ expect(record.boundaries).toHaveProperty('fetchData');
75
+ expect(record.boundaries).not.toHaveProperty('setMetadata');
76
+ // Verify the boundary logs contain the expected calls
77
+ expect(record.boundaries.multiply).toHaveLength(1);
78
+ expect(record.boundaries.multiply[0]).toEqual({
79
+ input: [3],
80
+ output: 6
81
+ });
82
+ expect(record.boundaries.fetchData).toHaveLength(1);
83
+ expect(record.boundaries.fetchData[0]).toEqual({
84
+ input: ['test'],
85
+ output: 'fetched-test'
86
+ });
87
+ });
88
+ it('should preserve metadata in error scenarios', async () => {
89
+ // Create a schema
90
+ const schema = new index_1.Schema({
91
+ value: index_1.Schema.number()
92
+ });
93
+ // Create a task that sets metadata before throwing an error
94
+ const task = (0, index_1.createTask)({
95
+ name: 'error-metadata-test',
96
+ schema,
97
+ boundaries: {},
98
+ fn: async ({ value }, { setMetadata }) => {
99
+ await setMetadata('errorContext', 'validation');
100
+ await setMetadata('userId', '67890');
101
+ if (value < 0) {
102
+ throw new Error('Value cannot be negative');
103
+ }
104
+ return { result: value };
105
+ }
106
+ });
107
+ // Run the task with a value that will cause an error
108
+ const [result, error, record] = await task.safeRun({ value: -1 });
109
+ // Verify the execution failed as expected
110
+ expect(result).toBeNull();
111
+ expect(error).not.toBeNull();
112
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe('Value cannot be negative');
113
+ // Verify the metadata is preserved in the error record
114
+ expect(record.metadata).toEqual({
115
+ errorContext: 'validation',
116
+ userId: '67890'
117
+ });
118
+ // Verify other record fields
119
+ expect(record.taskName).toBe('error-metadata-test');
120
+ expect(record.input).toEqual({ value: -1 });
121
+ expect(record.error).toBe('Value cannot be negative');
122
+ expect(record.type).toBe('error');
123
+ });
124
+ it('should preserve existing metadata when adding new metadata', async () => {
125
+ // Create a schema
126
+ const schema = new index_1.Schema({
127
+ value: index_1.Schema.number()
128
+ });
129
+ // Create a task that uses setMetadata
130
+ const task = (0, index_1.createTask)({
131
+ name: 'preserve-metadata-test',
132
+ schema,
133
+ boundaries: {},
134
+ fn: async ({ value }, { setMetadata }) => {
135
+ await setMetadata('step1', 'completed');
136
+ await setMetadata('step2', 'in-progress');
137
+ await setMetadata('step1', 'updated'); // Overwrite step1
138
+ return { result: value * 2 };
139
+ }
140
+ });
141
+ // Run the task with initial metadata context
142
+ const [result, error, record] = await task.safeRun({ value: 4 });
143
+ // Verify the execution was successful
144
+ expect(error).toBeNull();
145
+ expect(result).toEqual({ result: 8 });
146
+ // Verify the metadata contains the final values
147
+ expect(record.metadata).toEqual({
148
+ step1: 'updated',
149
+ step2: 'in-progress'
150
+ });
151
+ });
152
+ it('should work with setMetadata in safeReplay', async () => {
153
+ var _a, _b, _c, _d;
154
+ // Create a schema
155
+ const schema = new index_1.Schema({
156
+ value: index_1.Schema.number()
157
+ });
158
+ // Use a counter to ensure different values between original and replay
159
+ let executionCounter = 0;
160
+ // Create a task with boundaries and metadata
161
+ const task = (0, index_1.createTask)({
162
+ name: 'replay-metadata-test',
163
+ schema,
164
+ boundaries: {
165
+ fetchData: async (value) => value * 3
166
+ },
167
+ fn: async ({ value }, { fetchData, setMetadata }) => {
168
+ executionCounter++;
169
+ await setMetadata('replayTest', 'true');
170
+ await setMetadata('executionNumber', executionCounter.toString());
171
+ const result = await fetchData(value);
172
+ return { result };
173
+ }
174
+ });
175
+ // First, run the task normally to get an execution record
176
+ const [, , originalRecord] = await task.safeRun({ value: 2 });
177
+ // Verify original metadata was set
178
+ expect(originalRecord.metadata).toHaveProperty('replayTest', 'true');
179
+ expect(originalRecord.metadata).toHaveProperty('executionNumber', '1');
180
+ // Now replay the task
181
+ const [replayResult, replayError, replayRecord] = await task.safeReplay(originalRecord, { boundaries: { fetchData: 'replay' } });
182
+ // Verify the replay was successful
183
+ expect(replayError).toBeNull();
184
+ expect(replayResult).toEqual({ result: 6 });
185
+ // Verify that the replay has its own metadata (setMetadata was called again)
186
+ expect(replayRecord.metadata).toHaveProperty('replayTest', 'true');
187
+ expect(replayRecord.metadata).toHaveProperty('executionNumber', '2');
188
+ // The execution numbers should be different since setMetadata was called again
189
+ expect((_a = replayRecord.metadata) === null || _a === void 0 ? void 0 : _a.executionNumber).not.toBe((_b = originalRecord.metadata) === null || _b === void 0 ? void 0 : _b.executionNumber);
190
+ expect((_c = originalRecord.metadata) === null || _c === void 0 ? void 0 : _c.executionNumber).toBe('1');
191
+ expect((_d = replayRecord.metadata) === null || _d === void 0 ? void 0 : _d.executionNumber).toBe('2');
192
+ });
193
+ it('should handle empty metadata gracefully', async () => {
194
+ // Create a schema
195
+ const schema = new index_1.Schema({
196
+ value: index_1.Schema.number()
197
+ });
198
+ // Create a task that doesn't use setMetadata
199
+ const task = (0, index_1.createTask)({
200
+ name: 'no-metadata-test',
201
+ schema,
202
+ boundaries: {
203
+ multiply: async (value) => value * 2
204
+ },
205
+ fn: async ({ value }, { multiply }) => {
206
+ const result = await multiply(value);
207
+ return { result };
208
+ }
209
+ });
210
+ // Run the task without using setMetadata
211
+ const [result, error, record] = await task.safeRun({ value: 7 });
212
+ // Verify the execution was successful
213
+ expect(error).toBeNull();
214
+ expect(result).toEqual({ result: 14 });
215
+ // Verify the metadata is empty but defined
216
+ expect(record.metadata).toEqual({});
217
+ });
218
+ });
219
+ });
220
+ //# sourceMappingURL=execution-record-boundaries.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-record-boundaries.test.js","sourceRoot":"","sources":["../../src/test/execution-record-boundaries.test.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.2.1",
3
+ "version": "0.2.2",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
package/src/index.ts CHANGED
@@ -139,10 +139,19 @@ type BoundaryData = Array<{input: unknown[], output?: unknown}>
139
139
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
140
140
  export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
141
141
 
142
+ // Type for execution record boundaries that are automatically injected
143
+ // When adding new execution boundaries, add their types here
144
+ export type ExecutionRecordBoundaries = {
145
+ setMetadata: (key: string, value: string) => Promise<void>
146
+ // Future execution boundaries can be added here:
147
+ // setContext: (context: Record<string, unknown>) => Promise<void>
148
+ // addTag: (tag: string) => Promise<void>
149
+ }
150
+
142
151
  // Helper type for task function with proper typing
143
152
  export type TaskFunction<S, B extends Boundaries> =
144
153
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
- (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<any>;
154
+ (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<any>;
146
155
 
147
156
  /**
148
157
  * Utility function to compute the execution record type based on output and error state
@@ -355,6 +364,28 @@ export const Task = class Task<
355
364
  this._boundaryMocks = {}
356
365
  }
357
366
 
367
+ /**
368
+ * Creates execution record boundaries that modify execution metadata and logging
369
+ * These boundaries are automatically injected into all task executions
370
+ *
371
+ * To add a new execution boundary:
372
+ * 1. Add the boundary function here
373
+ * 2. Update the ExecutionRecordBoundaries type to include the new boundary
374
+ * 3. That's it! The boundary will be available in all tasks automatically
375
+ */
376
+ _createExecutionBoundaries(metadata: Record<string, string>): Record<string, WrappedBoundaryFunction> {
377
+ return {
378
+ // Allows setting metadata key-value pairs from within task execution
379
+ setMetadata: createBoundary(async (...args: unknown[]): Promise<void> => {
380
+ const [key, value] = args as [string, string]
381
+ metadata[key] = value
382
+ })
383
+
384
+ // Future execution boundaries can be added here:
385
+ // addMetrics: createBoundary(async (...args: unknown[]): Promise<void> => { ... }),
386
+ }
387
+ }
388
+
358
389
  _createBounderies ({
359
390
  definition,
360
391
  baseData,
@@ -431,9 +462,16 @@ export const Task = class Task<
431
462
  mode: this._mode
432
463
  })
433
464
 
465
+ // Create and inject execution record boundaries (setMetadata, etc.)
466
+ const executionRecordBoundaries = this._createExecutionBoundaries(metadata)
467
+ const allBoundaries = {
468
+ ...executionBoundaries,
469
+ ...executionRecordBoundaries
470
+ }
471
+
434
472
  // Start run for each boundary
435
- for (const name in executionBoundaries) {
436
- const boundary = executionBoundaries[name]
473
+ for (const name in allBoundaries) {
474
+ const boundary = allBoundaries[name]
437
475
  boundary.startRun()
438
476
  }
439
477
 
@@ -470,7 +508,7 @@ export const Task = class Task<
470
508
  // Execute the task function
471
509
  output = await this._fn(
472
510
  argv as Parameters<Func>[0],
473
- executionBoundaries as unknown as Parameters<Func>[1]
511
+ allBoundaries as unknown as Parameters<Func>[1]
474
512
  )
475
513
 
476
514
  logItem.output = output
@@ -507,6 +545,9 @@ export const Task = class Task<
507
545
  }
508
546
  }
509
547
 
548
+ // Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
549
+ // Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
550
+
510
551
  // Set boundaries in log item before emitting
511
552
  logItem.boundaries = boundariesRunLog
512
553
 
@@ -566,9 +607,18 @@ export const Task = class Task<
566
607
  boundaryModes: config.boundaries
567
608
  })
568
609
 
610
+ // Create and inject execution record boundaries (setMetadata, etc.)
611
+ // Clone the metadata to avoid mutating the original metadata
612
+ const replayMetadata = { ...(logItem.metadata || {}) }
613
+ const executionRecordBoundaries = this._createExecutionBoundaries(replayMetadata)
614
+ const allBoundaries = {
615
+ ...executionBoundaries,
616
+ ...executionRecordBoundaries
617
+ }
618
+
569
619
  // Start run for each boundary
570
- for (const name in executionBoundaries) {
571
- const boundary = executionBoundaries[name]
620
+ for (const name in allBoundaries) {
621
+ const boundary = allBoundaries[name]
572
622
  boundary.startRun()
573
623
  }
574
624
 
@@ -603,7 +653,7 @@ export const Task = class Task<
603
653
  // Execute the task function with replay boundaries
604
654
  output = await this._fn(
605
655
  argv,
606
- executionBoundaries as unknown as Parameters<Func>[1]
656
+ allBoundaries as unknown as Parameters<Func>[1]
607
657
  )
608
658
 
609
659
  logItem.output = output
@@ -632,9 +682,15 @@ export const Task = class Task<
632
682
  }
633
683
  }
634
684
 
685
+ // Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
686
+ // Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
687
+
635
688
  // Set boundaries in log item before emitting
636
689
  logItem.boundaries = boundariesRunLog
637
690
 
691
+ // Update the log item metadata with changes made during replay
692
+ logItem.metadata = replayMetadata
693
+
638
694
  // Emit the log item
639
695
  this.emit(logItem)
640
696
 
@@ -684,6 +740,12 @@ export const Task = class Task<
684
740
  // Call the task's safeRun method
685
741
  const [outcome, error, log] = await this.safeRun(eventArgs)
686
742
 
743
+ // Extend log metadata with environment info
744
+ log.metadata = {
745
+ ...log.metadata,
746
+ environment: 'hive-lambda'
747
+ }
748
+
687
749
  // Send log to Hive if environment variables are present
688
750
  await this._sendToHive(log)
689
751
 
@@ -823,7 +885,7 @@ export interface CreateTaskConfig<
823
885
  description?: string
824
886
  schema: S
825
887
  boundaries: B
826
- fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<R>
888
+ fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<R>
827
889
  mode?: Mode
828
890
  boundariesData?: BoundaryTapeData
829
891
  }
@@ -0,0 +1,266 @@
1
+ import { createTask, Schema } from '../index'
2
+
3
+ describe('execution-record-boundaries', () => {
4
+ describe('setMetadata boundary', () => {
5
+ it('should add metadata to execution record when setMetadata is called', async () => {
6
+ // Create a schema
7
+ const schema = new Schema({
8
+ value: Schema.number()
9
+ })
10
+
11
+ // Create a task that uses setMetadata
12
+ const task = createTask({
13
+ name: 'metadata-test-task',
14
+ schema,
15
+ boundaries: {
16
+ multiply: async (value: number) => value * 2
17
+ },
18
+ fn: async ({ value }, { multiply, setMetadata }) => {
19
+ await setMetadata('userId', '12345')
20
+ await setMetadata('executionType', 'background')
21
+
22
+ const result = await multiply(value)
23
+ return { result }
24
+ }
25
+ })
26
+
27
+ // Run the task with safeRun
28
+ const [result, error, record] = await task.safeRun({ value: 5 })
29
+
30
+ // Verify the execution was successful
31
+ expect(error).toBeNull()
32
+ expect(result).toEqual({ result: 10 })
33
+
34
+ // Verify the metadata is included in the record
35
+ expect(record.metadata).toEqual({
36
+ userId: '12345',
37
+ executionType: 'background'
38
+ })
39
+
40
+ // Verify the task name and other fields are correct
41
+ expect(record.taskName).toBe('metadata-test-task')
42
+ expect(record.input).toEqual({ value: 5 })
43
+ expect(record.output).toEqual({ result: 10 })
44
+ expect(record.type).toBe('success')
45
+ })
46
+
47
+ it('should not include setMetadata calls in boundary logs', async () => {
48
+ // Create a schema
49
+ const schema = new Schema({
50
+ value: Schema.number()
51
+ })
52
+
53
+ // Create a task that uses setMetadata and other boundaries
54
+ const task = createTask({
55
+ name: 'boundary-log-test',
56
+ schema,
57
+ boundaries: {
58
+ multiply: async (value: number) => value * 2,
59
+ fetchData: async (data: string) => `fetched-${data}`
60
+ },
61
+ fn: async ({ value }, { multiply, fetchData, setMetadata }) => {
62
+ await setMetadata('step', 'start')
63
+
64
+ const multiplied = await multiply(value)
65
+ await setMetadata('step', 'multiplied')
66
+
67
+ const fetched = await fetchData('test')
68
+ await setMetadata('step', 'completed')
69
+
70
+ return { multiplied, fetched }
71
+ }
72
+ })
73
+
74
+ // Run the task with safeRun
75
+ const [result, error, record] = await task.safeRun({ value: 3 })
76
+
77
+ // Verify the execution was successful
78
+ expect(error).toBeNull()
79
+ expect(result).toEqual({ multiplied: 6, fetched: 'fetched-test' })
80
+
81
+ // Verify the metadata is updated to the final value
82
+ expect(record.metadata).toEqual({
83
+ step: 'completed'
84
+ })
85
+
86
+ // Verify that only the actual boundaries appear in the logs
87
+ expect(record.boundaries).toHaveProperty('multiply')
88
+ expect(record.boundaries).toHaveProperty('fetchData')
89
+ expect(record.boundaries).not.toHaveProperty('setMetadata')
90
+
91
+ // Verify the boundary logs contain the expected calls
92
+ expect(record.boundaries.multiply).toHaveLength(1)
93
+ expect(record.boundaries.multiply[0]).toEqual({
94
+ input: [3],
95
+ output: 6
96
+ })
97
+
98
+ expect(record.boundaries.fetchData).toHaveLength(1)
99
+ expect(record.boundaries.fetchData[0]).toEqual({
100
+ input: ['test'],
101
+ output: 'fetched-test'
102
+ })
103
+ })
104
+
105
+ it('should preserve metadata in error scenarios', async () => {
106
+ // Create a schema
107
+ const schema = new Schema({
108
+ value: Schema.number()
109
+ })
110
+
111
+ // Create a task that sets metadata before throwing an error
112
+ const task = createTask({
113
+ name: 'error-metadata-test',
114
+ schema,
115
+ boundaries: {},
116
+ fn: async ({ value }, { setMetadata }) => {
117
+ await setMetadata('errorContext', 'validation')
118
+ await setMetadata('userId', '67890')
119
+
120
+ if (value < 0) {
121
+ throw new Error('Value cannot be negative')
122
+ }
123
+
124
+ return { result: value }
125
+ }
126
+ })
127
+
128
+ // Run the task with a value that will cause an error
129
+ const [result, error, record] = await task.safeRun({ value: -1 })
130
+
131
+ // Verify the execution failed as expected
132
+ expect(result).toBeNull()
133
+ expect(error).not.toBeNull()
134
+ expect(error?.message).toBe('Value cannot be negative')
135
+
136
+ // Verify the metadata is preserved in the error record
137
+ expect(record.metadata).toEqual({
138
+ errorContext: 'validation',
139
+ userId: '67890'
140
+ })
141
+
142
+ // Verify other record fields
143
+ expect(record.taskName).toBe('error-metadata-test')
144
+ expect(record.input).toEqual({ value: -1 })
145
+ expect(record.error).toBe('Value cannot be negative')
146
+ expect(record.type).toBe('error')
147
+ })
148
+
149
+ it('should preserve existing metadata when adding new metadata', async () => {
150
+ // Create a schema
151
+ const schema = new Schema({
152
+ value: Schema.number()
153
+ })
154
+
155
+ // Create a task that uses setMetadata
156
+ const task = createTask({
157
+ name: 'preserve-metadata-test',
158
+ schema,
159
+ boundaries: {},
160
+ fn: async ({ value }, { setMetadata }) => {
161
+ await setMetadata('step1', 'completed')
162
+ await setMetadata('step2', 'in-progress')
163
+ await setMetadata('step1', 'updated') // Overwrite step1
164
+
165
+ return { result: value * 2 }
166
+ }
167
+ })
168
+
169
+ // Run the task with initial metadata context
170
+ const [result, error, record] = await task.safeRun({ value: 4 })
171
+
172
+ // Verify the execution was successful
173
+ expect(error).toBeNull()
174
+ expect(result).toEqual({ result: 8 })
175
+
176
+ // Verify the metadata contains the final values
177
+ expect(record.metadata).toEqual({
178
+ step1: 'updated',
179
+ step2: 'in-progress'
180
+ })
181
+ })
182
+
183
+ it('should work with setMetadata in safeReplay', async () => {
184
+ // Create a schema
185
+ const schema = new Schema({
186
+ value: Schema.number()
187
+ })
188
+
189
+ // Use a counter to ensure different values between original and replay
190
+ let executionCounter = 0
191
+
192
+ // Create a task with boundaries and metadata
193
+ const task = createTask({
194
+ name: 'replay-metadata-test',
195
+ schema,
196
+ boundaries: {
197
+ fetchData: async (value: number) => value * 3
198
+ },
199
+ fn: async ({ value }, { fetchData, setMetadata }) => {
200
+ executionCounter++
201
+ await setMetadata('replayTest', 'true')
202
+ await setMetadata('executionNumber', executionCounter.toString())
203
+
204
+ const result = await fetchData(value)
205
+ return { result }
206
+ }
207
+ })
208
+
209
+ // First, run the task normally to get an execution record
210
+ const [, , originalRecord] = await task.safeRun({ value: 2 })
211
+
212
+ // Verify original metadata was set
213
+ expect(originalRecord.metadata).toHaveProperty('replayTest', 'true')
214
+ expect(originalRecord.metadata).toHaveProperty('executionNumber', '1')
215
+
216
+ // Now replay the task
217
+ const [replayResult, replayError, replayRecord] = await task.safeReplay(
218
+ originalRecord,
219
+ { boundaries: { fetchData: 'replay' } }
220
+ )
221
+
222
+ // Verify the replay was successful
223
+ expect(replayError).toBeNull()
224
+ expect(replayResult).toEqual({ result: 6 })
225
+
226
+ // Verify that the replay has its own metadata (setMetadata was called again)
227
+ expect(replayRecord.metadata).toHaveProperty('replayTest', 'true')
228
+ expect(replayRecord.metadata).toHaveProperty('executionNumber', '2')
229
+
230
+ // The execution numbers should be different since setMetadata was called again
231
+ expect(replayRecord.metadata?.executionNumber).not.toBe(originalRecord.metadata?.executionNumber)
232
+ expect(originalRecord.metadata?.executionNumber).toBe('1')
233
+ expect(replayRecord.metadata?.executionNumber).toBe('2')
234
+ })
235
+
236
+ it('should handle empty metadata gracefully', async () => {
237
+ // Create a schema
238
+ const schema = new Schema({
239
+ value: Schema.number()
240
+ })
241
+
242
+ // Create a task that doesn't use setMetadata
243
+ const task = createTask({
244
+ name: 'no-metadata-test',
245
+ schema,
246
+ boundaries: {
247
+ multiply: async (value: number) => value * 2
248
+ },
249
+ fn: async ({ value }, { multiply }) => {
250
+ const result = await multiply(value)
251
+ return { result }
252
+ }
253
+ })
254
+
255
+ // Run the task without using setMetadata
256
+ const [result, error, record] = await task.safeRun({ value: 7 })
257
+
258
+ // Verify the execution was successful
259
+ expect(error).toBeNull()
260
+ expect(result).toEqual({ result: 14 })
261
+
262
+ // Verify the metadata is empty but defined
263
+ expect(record.metadata).toEqual({})
264
+ })
265
+ })
266
+ })