@workflow/core 4.2.0-beta.69 → 4.2.0-beta.70

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/dist/runtime.js CHANGED
@@ -4,12 +4,12 @@ import { SPEC_VERSION_CURRENT, WorkflowInvokePayloadSchema, } from '@workflow/wo
4
4
  import { importKey } from './encryption.js';
5
5
  import { WorkflowSuspension } from './global.js';
6
6
  import { runtimeLogger } from './logger.js';
7
- import { getAllWorkflowRunEvents, getQueueOverhead, getWorkflowQueueName, handleHealthCheckMessage, parseHealthCheckPayload, queueMessage, withHealthCheck, withThrottleRetry, } from './runtime/helpers.js';
7
+ import { getAllWorkflowRunEvents, getQueueOverhead, handleHealthCheckMessage, parseHealthCheckPayload, withHealthCheck, } from './runtime/helpers.js';
8
8
  import { handleSuspension } from './runtime/suspension-handler.js';
9
9
  import { getWorld, getWorldHandlers } from './runtime/world.js';
10
10
  import { remapErrorStack } from './source-map.js';
11
11
  import * as Attribute from './telemetry/semantic-conventions.js';
12
- import { linkToCurrentContext, serializeTraceCarrier, trace, withTraceContext, withWorkflowBaggage, } from './telemetry.js';
12
+ import { linkToCurrentContext, trace, withTraceContext, withWorkflowBaggage, } from './telemetry.js';
13
13
  import { getErrorName, getErrorStack, normalizeUnknownError } from './types.js';
14
14
  import { buildWorkflowSuspensionMessage } from './util.js';
15
15
  import { runWorkflow } from './workflow.js';
@@ -40,7 +40,7 @@ export function workflowEntrypoint(workflowCode) {
40
40
  await handleHealthCheckMessage(healthCheck, 'workflow');
41
41
  return;
42
42
  }
43
- const { runId, traceCarrier: traceContext, requestedAt, serverErrorRetryCount, } = WorkflowInvokePayloadSchema.parse(message_);
43
+ const { runId, traceCarrier: traceContext, requestedAt, } = WorkflowInvokePayloadSchema.parse(message_);
44
44
  // Extract the workflow name from the topic name
45
45
  const workflowName = metadata.queueName.slice('__wkf_workflow_'.length);
46
46
  const spanLinks = await linkToCurrentContext();
@@ -65,229 +65,239 @@ export function workflowEntrypoint(workflowCode) {
65
65
  ...Attribute.WorkflowRunId(runId),
66
66
  ...Attribute.WorkflowTracePropagated(!!traceContext),
67
67
  });
68
- return await withThrottleRetry(async () => {
69
- let workflowStartedAt = -1;
70
- let workflowRun = await world.runs.get(runId);
71
- try {
72
- if (workflowRun.status === 'pending') {
73
- // Transition run to 'running' via event (event-sourced architecture)
74
- const result = await world.events.create(runId, {
75
- eventType: 'run_started',
76
- specVersion: SPEC_VERSION_CURRENT,
77
- });
78
- // Use the run entity from the event response (no extra get call needed)
79
- if (!result.run) {
80
- throw new WorkflowRuntimeError(`Event creation for 'run_started' did not return the run entity for run "${runId}"`);
81
- }
82
- workflowRun = result.run;
83
- }
84
- // At this point, the workflow is "running" and `startedAt` should
85
- // definitely be set.
86
- if (!workflowRun.startedAt) {
87
- throw new WorkflowRuntimeError(`Workflow run "${runId}" has no "startedAt" timestamp`);
88
- }
89
- workflowStartedAt = +workflowRun.startedAt;
90
- span?.setAttributes({
91
- ...Attribute.WorkflowRunStatus(workflowRun.status),
92
- ...Attribute.WorkflowStartedAt(workflowStartedAt),
93
- });
94
- if (workflowRun.status !== 'running') {
95
- // Workflow has already completed or failed, so we can skip it
96
- runtimeLogger.info('Workflow already completed or failed, skipping', {
97
- workflowRunId: runId,
98
- status: workflowRun.status,
99
- });
100
- // TODO: for `cancel`, we actually want to propagate a WorkflowCancelled event
101
- // inside the workflow context so the user can gracefully exit. this is SIGTERM
102
- // TODO: furthermore, there should be a timeout or a way to force cancel SIGKILL
103
- // so that we actually exit here without replaying the workflow at all, in the case
104
- // the replaying the workflow is itself failing.
105
- return;
106
- }
107
- // Load all events into memory before running
108
- const events = await getAllWorkflowRunEvents(workflowRun.runId);
109
- // Check for any elapsed waits and create wait_completed events
110
- const now = Date.now();
111
- // Pre-compute completed correlation IDs for O(n) lookup instead of O(n²)
112
- const completedWaitIds = new Set(events
113
- .filter((e) => e.eventType === 'wait_completed')
114
- .map((e) => e.correlationId));
115
- // Collect all waits that need completion
116
- const waitsToComplete = events
117
- .filter((e) => e.eventType === 'wait_created' &&
118
- e.correlationId !== undefined &&
119
- !completedWaitIds.has(e.correlationId) &&
120
- now >= e.eventData.resumeAt.getTime())
121
- .map((e) => ({
122
- eventType: 'wait_completed',
68
+ let workflowStartedAt = -1;
69
+ let workflowRun = await world.runs.get(runId);
70
+ // --- Infrastructure: prepare the run state ---
71
+ // Network/server errors propagate to the queue handler for retry.
72
+ // WorkflowRuntimeError (data integrity issues) are fatal and
73
+ // produce run_failed since retrying won't fix them.
74
+ try {
75
+ if (workflowRun.status === 'pending') {
76
+ // Transition run to 'running' via event (event-sourced architecture)
77
+ const result = await world.events.create(runId, {
78
+ eventType: 'run_started',
123
79
  specVersion: SPEC_VERSION_CURRENT,
124
- correlationId: e.correlationId,
125
- }));
126
- // Create all wait_completed events
127
- for (const waitEvent of waitsToComplete) {
128
- try {
129
- const result = await world.events.create(runId, waitEvent);
130
- // Add the event to the events array so the workflow can see it
131
- events.push(result.event);
132
- }
133
- catch (err) {
134
- if (WorkflowAPIError.is(err) && err.status === 409) {
135
- runtimeLogger.info('Wait already completed, skipping', {
136
- workflowRunId: runId,
137
- correlationId: waitEvent.correlationId,
138
- });
139
- continue;
140
- }
141
- throw err;
142
- }
143
- }
144
- const result = await trace('workflow.replay', {}, async (replaySpan) => {
145
- replaySpan?.setAttributes({
146
- ...Attribute.WorkflowEventsCount(events.length),
147
- });
148
- // Resolve the encryption key for this run's deployment
149
- const rawKey = await world.getEncryptionKeyForRun?.(workflowRun);
150
- const encryptionKey = rawKey
151
- ? await importKey(rawKey)
152
- : undefined;
153
- return await runWorkflow(workflowCode, workflowRun, events, encryptionKey);
154
80
  });
155
- // Complete the workflow run via event (event-sourced architecture)
81
+ // Use the run entity from the event response (no extra get call needed)
82
+ if (!result.run) {
83
+ throw new WorkflowRuntimeError(`Event creation for 'run_started' did not return the run entity for run "${runId}"`);
84
+ }
85
+ workflowRun = result.run;
86
+ }
87
+ // At this point, the workflow is "running" and `startedAt` should
88
+ // definitely be set.
89
+ if (!workflowRun.startedAt) {
90
+ throw new WorkflowRuntimeError(`Workflow run "${runId}" has no "startedAt" timestamp`);
91
+ }
92
+ }
93
+ catch (err) {
94
+ if (err instanceof WorkflowRuntimeError) {
95
+ runtimeLogger.error('Fatal runtime error during workflow setup', { workflowRunId: runId, error: err.message });
156
96
  try {
157
97
  await world.events.create(runId, {
158
- eventType: 'run_completed',
98
+ eventType: 'run_failed',
159
99
  specVersion: SPEC_VERSION_CURRENT,
160
100
  eventData: {
161
- output: result,
101
+ error: {
102
+ message: err.message,
103
+ stack: err.stack,
104
+ },
162
105
  },
163
106
  });
164
107
  }
165
- catch (err) {
166
- if (WorkflowAPIError.is(err) &&
167
- (err.status === 409 || err.status === 410)) {
168
- runtimeLogger.warn('Tried completing workflow run, but run has already finished.', {
169
- workflowRunId: runId,
170
- message: err.message,
171
- });
108
+ catch (failErr) {
109
+ if (WorkflowAPIError.is(failErr) &&
110
+ (failErr.status === 409 || failErr.status === 410)) {
172
111
  return;
173
112
  }
174
- else {
175
- throw err;
176
- }
113
+ throw failErr;
177
114
  }
178
- span?.setAttributes({
179
- ...Attribute.WorkflowRunStatus('completed'),
180
- ...Attribute.WorkflowEventsCount(events.length),
181
- });
115
+ return;
116
+ }
117
+ throw err;
118
+ }
119
+ workflowStartedAt = +workflowRun.startedAt;
120
+ span?.setAttributes({
121
+ ...Attribute.WorkflowRunStatus(workflowRun.status),
122
+ ...Attribute.WorkflowStartedAt(workflowStartedAt),
123
+ });
124
+ if (workflowRun.status !== 'running') {
125
+ // Workflow has already completed or failed, so we can skip it
126
+ runtimeLogger.info('Workflow already completed or failed, skipping', {
127
+ workflowRunId: runId,
128
+ status: workflowRun.status,
129
+ });
130
+ // TODO: for `cancel`, we actually want to propagate a WorkflowCancelled event
131
+ // inside the workflow context so the user can gracefully exit. this is SIGTERM
132
+ // TODO: furthermore, there should be a timeout or a way to force cancel SIGKILL
133
+ // so that we actually exit here without replaying the workflow at all, in the case
134
+ // the replaying the workflow is itself failing.
135
+ return;
136
+ }
137
+ // Load all events into memory before running
138
+ const events = await getAllWorkflowRunEvents(workflowRun.runId);
139
+ // Check for any elapsed waits and create wait_completed events
140
+ const now = Date.now();
141
+ // Pre-compute completed correlation IDs for O(n) lookup instead of O(n²)
142
+ const completedWaitIds = new Set(events
143
+ .filter((e) => e.eventType === 'wait_completed')
144
+ .map((e) => e.correlationId));
145
+ // Collect all waits that need completion
146
+ const waitsToComplete = events
147
+ .filter((e) => e.eventType === 'wait_created' &&
148
+ e.correlationId !== undefined &&
149
+ !completedWaitIds.has(e.correlationId) &&
150
+ now >= e.eventData.resumeAt.getTime())
151
+ .map((e) => ({
152
+ eventType: 'wait_completed',
153
+ specVersion: SPEC_VERSION_CURRENT,
154
+ correlationId: e.correlationId,
155
+ }));
156
+ // Create all wait_completed events
157
+ for (const waitEvent of waitsToComplete) {
158
+ try {
159
+ const result = await world.events.create(runId, waitEvent);
160
+ // Add the event to the events array so the workflow can see it
161
+ events.push(result.event);
182
162
  }
183
163
  catch (err) {
184
- if (WorkflowSuspension.is(err)) {
185
- const suspensionMessage = buildWorkflowSuspensionMessage(runId, err.stepCount, err.hookCount, err.waitCount);
186
- if (suspensionMessage) {
187
- runtimeLogger.debug(suspensionMessage);
188
- }
189
- const result = await handleSuspension({
190
- suspension: err,
191
- world,
192
- run: workflowRun,
193
- span,
164
+ if (WorkflowAPIError.is(err) && err.status === 409) {
165
+ runtimeLogger.info('Wait already completed, skipping', {
166
+ workflowRunId: runId,
167
+ correlationId: waitEvent.correlationId,
194
168
  });
195
- if (result.timeoutSeconds !== undefined) {
196
- return { timeoutSeconds: result.timeoutSeconds };
197
- }
169
+ continue;
198
170
  }
199
- else {
200
- // Retry server errors (5xx) with exponential backoff before failing the run
201
- if (WorkflowAPIError.is(err) &&
202
- err.status !== undefined &&
203
- err.status >= 500) {
204
- const retryCount = serverErrorRetryCount ?? 0;
205
- const delaySecondSteps = [5, 30, 120]; // 5s, 30s, 120s
206
- if (retryCount < delaySecondSteps.length) {
207
- runtimeLogger.warn('Server error (5xx), re-enqueueing workflow with backoff', {
208
- workflowRunId: runId,
209
- retryCount,
210
- delaySeconds: delaySecondSteps[retryCount],
211
- error: err.message,
212
- });
213
- await queueMessage(world, getWorkflowQueueName(workflowName), {
214
- runId,
215
- serverErrorRetryCount: retryCount + 1,
216
- traceCarrier: await serializeTraceCarrier(),
217
- requestedAt: new Date(),
218
- }, { delaySeconds: delaySecondSteps[retryCount] });
219
- return; // Don't fail the run, retry later
220
- }
221
- // Fall through to run_failed after exhausting retries
222
- }
223
- else if (WorkflowAPIError.is(err) &&
224
- err.status === 429) {
225
- // Throw to let withThrottleRetry handle it
226
- throw err;
227
- }
228
- // NOTE: this error could be an error thrown in user code, or could also be a WorkflowRuntimeError
229
- // (for instance when the event log is corrupted, this is thrown by the event consumer). We could
230
- // specially handle these if needed.
231
- // Record exception for OTEL error tracking
232
- if (err instanceof Error) {
233
- span?.recordException?.(err);
234
- }
235
- const normalizedError = await normalizeUnknownError(err);
236
- const errorName = normalizedError.name || getErrorName(err);
237
- const errorMessage = normalizedError.message;
238
- let errorStack = normalizedError.stack || getErrorStack(err);
239
- // Remap error stack using source maps to show original source locations
240
- if (errorStack) {
241
- const parsedName = parseWorkflowName(workflowName);
242
- const filename = parsedName?.moduleSpecifier || workflowName;
243
- errorStack = remapErrorStack(errorStack, filename, workflowCode);
244
- }
245
- runtimeLogger.error('Error while running workflow', {
171
+ throw err;
172
+ }
173
+ }
174
+ // Resolve the encryption key for this run's deployment
175
+ const rawKey = await world.getEncryptionKeyForRun?.(workflowRun);
176
+ const encryptionKey = rawKey
177
+ ? await importKey(rawKey)
178
+ : undefined;
179
+ // --- User code execution ---
180
+ // Only errors from runWorkflow() (user workflow code) should
181
+ // produce run_failed. Infrastructure errors (network, server)
182
+ // must propagate to the queue handler for automatic retry.
183
+ let workflowResult;
184
+ try {
185
+ workflowResult = await trace('workflow.replay', {}, async (replaySpan) => {
186
+ replaySpan?.setAttributes({
187
+ ...Attribute.WorkflowEventsCount(events.length),
188
+ });
189
+ return await runWorkflow(workflowCode, workflowRun, events, encryptionKey);
190
+ });
191
+ }
192
+ catch (err) {
193
+ // WorkflowSuspension is normal control flow not an error
194
+ if (WorkflowSuspension.is(err)) {
195
+ const suspensionMessage = buildWorkflowSuspensionMessage(runId, err.stepCount, err.hookCount, err.waitCount);
196
+ if (suspensionMessage) {
197
+ runtimeLogger.debug(suspensionMessage);
198
+ }
199
+ const result = await handleSuspension({
200
+ suspension: err,
201
+ world,
202
+ run: workflowRun,
203
+ span,
204
+ });
205
+ if (result.timeoutSeconds !== undefined) {
206
+ return { timeoutSeconds: result.timeoutSeconds };
207
+ }
208
+ // Suspension handled, no further work needed
209
+ return;
210
+ }
211
+ // This is a user code error or a WorkflowRuntimeError
212
+ // (e.g., corrupted event log). Fail the workflow run.
213
+ // Record exception for OTEL error tracking
214
+ if (err instanceof Error) {
215
+ span?.recordException?.(err);
216
+ }
217
+ const normalizedError = await normalizeUnknownError(err);
218
+ const errorName = normalizedError.name || getErrorName(err);
219
+ const errorMessage = normalizedError.message;
220
+ let errorStack = normalizedError.stack || getErrorStack(err);
221
+ // Remap error stack using source maps to show original source locations
222
+ if (errorStack) {
223
+ const parsedName = parseWorkflowName(workflowName);
224
+ const filename = parsedName?.moduleSpecifier || workflowName;
225
+ errorStack = remapErrorStack(errorStack, filename, workflowCode);
226
+ }
227
+ runtimeLogger.error('Error while running workflow', {
228
+ workflowRunId: runId,
229
+ errorName,
230
+ errorStack,
231
+ });
232
+ // Fail the workflow run via event (event-sourced architecture)
233
+ try {
234
+ await world.events.create(runId, {
235
+ eventType: 'run_failed',
236
+ specVersion: SPEC_VERSION_CURRENT,
237
+ eventData: {
238
+ error: {
239
+ message: errorMessage,
240
+ stack: errorStack,
241
+ },
242
+ // TODO: include error codes when we define them
243
+ },
244
+ });
245
+ }
246
+ catch (failErr) {
247
+ if (WorkflowAPIError.is(failErr) &&
248
+ (failErr.status === 409 || failErr.status === 410)) {
249
+ runtimeLogger.warn('Tried failing workflow run, but run has already finished.', {
246
250
  workflowRunId: runId,
247
- errorName,
248
- errorStack,
251
+ message: failErr.message,
249
252
  });
250
- // Fail the workflow run via event (event-sourced architecture)
251
- try {
252
- await world.events.create(runId, {
253
- eventType: 'run_failed',
254
- specVersion: SPEC_VERSION_CURRENT,
255
- eventData: {
256
- error: {
257
- message: errorMessage,
258
- stack: errorStack,
259
- },
260
- // TODO: include error codes when we define them
261
- },
262
- });
263
- }
264
- catch (err) {
265
- if (WorkflowAPIError.is(err) &&
266
- (err.status === 409 || err.status === 410)) {
267
- runtimeLogger.warn('Tried failing workflow run, but run has already finished.', {
268
- workflowRunId: runId,
269
- message: err.message,
270
- });
271
- span?.setAttributes({
272
- ...Attribute.WorkflowErrorName(errorName),
273
- ...Attribute.WorkflowErrorMessage(errorMessage),
274
- ...Attribute.ErrorType(errorName),
275
- });
276
- return;
277
- }
278
- else {
279
- throw err;
280
- }
281
- }
282
253
  span?.setAttributes({
283
- ...Attribute.WorkflowRunStatus('failed'),
284
254
  ...Attribute.WorkflowErrorName(errorName),
285
255
  ...Attribute.WorkflowErrorMessage(errorMessage),
286
256
  ...Attribute.ErrorType(errorName),
287
257
  });
258
+ return;
288
259
  }
260
+ else {
261
+ throw failErr;
262
+ }
263
+ }
264
+ span?.setAttributes({
265
+ ...Attribute.WorkflowRunStatus('failed'),
266
+ ...Attribute.WorkflowErrorName(errorName),
267
+ ...Attribute.WorkflowErrorMessage(errorMessage),
268
+ ...Attribute.ErrorType(errorName),
269
+ });
270
+ return;
271
+ }
272
+ // --- Infrastructure: complete the run ---
273
+ // This is outside the user-code try/catch so that failures
274
+ // here (e.g., network errors) propagate to the queue handler.
275
+ try {
276
+ await world.events.create(runId, {
277
+ eventType: 'run_completed',
278
+ specVersion: SPEC_VERSION_CURRENT,
279
+ eventData: {
280
+ output: workflowResult,
281
+ },
282
+ });
283
+ }
284
+ catch (err) {
285
+ if (WorkflowAPIError.is(err) &&
286
+ (err.status === 409 || err.status === 410)) {
287
+ runtimeLogger.warn('Tried completing workflow run, but run has already finished.', {
288
+ workflowRunId: runId,
289
+ message: err.message,
290
+ });
291
+ return;
289
292
  }
290
- }); // End withThrottleRetry
293
+ else {
294
+ throw err;
295
+ }
296
+ }
297
+ span?.setAttributes({
298
+ ...Attribute.WorkflowRunStatus('completed'),
299
+ ...Attribute.WorkflowEventsCount(events.length),
300
+ });
291
301
  }); // End trace
292
302
  }); // End withWorkflowBaggage
293
303
  }); // End withTraceContext
@@ -297,4 +307,4 @@ export function workflowEntrypoint(workflowCode) {
297
307
  // this is a no-op placeholder as the client is
298
308
  // expecting this to be present but we aren't actually using it
299
309
  export function runStep() { }
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsMkJBQTJCLEdBRTVCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssU0FBUyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxD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
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsMkJBQTJCLEdBRTVCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFH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
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "4.2.0-beta.69";
1
+ export declare const version = "4.2.0-beta.70";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '4.2.0-beta.69';
2
+ export const version = '4.2.0-beta.70';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/core",
3
- "version": "4.2.0-beta.69",
3
+ "version": "4.2.0-beta.70",
4
4
  "description": "Core runtime and engine for Workflow DevKit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -87,7 +87,7 @@
87
87
  "@workflow/serde": "4.1.0-beta.2",
88
88
  "@workflow/utils": "4.1.0-beta.13",
89
89
  "@workflow/world": "4.1.0-beta.12",
90
- "@workflow/world-local": "4.1.0-beta.42",
90
+ "@workflow/world-local": "4.1.0-beta.43",
91
91
  "@workflow/world-vercel": "4.1.0-beta.43"
92
92
  },
93
93
  "devDependencies": {