@workflow/core 4.0.1-beta.2 → 4.0.1-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -21
- package/dist/builtins.js +1 -1
- package/dist/create-hook.js +1 -1
- package/dist/define-hook.d.ts +40 -25
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +22 -27
- package/dist/events-consumer.js +1 -1
- package/dist/global.d.ts +10 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +14 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/logger.js +1 -1
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +39 -11
- package/dist/parse-name.js +1 -1
- package/dist/private.d.ts +5 -0
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +6 -1
- package/dist/runtime/resume-hook.d.ts +15 -10
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +71 -61
- package/dist/runtime/start.d.ts +5 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +56 -45
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +20 -20
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +213 -57
- package/dist/schemas.d.ts +1 -15
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +2 -15
- package/dist/serialization.d.ts +54 -7
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +129 -34
- package/dist/sleep.d.ts +33 -0
- package/dist/sleep.d.ts.map +1 -0
- package/dist/sleep.js +10 -0
- package/dist/source-map.d.ts +10 -0
- package/dist/source-map.d.ts.map +1 -0
- package/dist/source-map.js +56 -0
- package/dist/step/context-storage.d.ts +2 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/get-closure-vars.d.ts +9 -0
- package/dist/step/get-closure-vars.d.ts.map +1 -0
- package/dist/step/get-closure-vars.js +16 -0
- package/dist/step/get-step-metadata.js +1 -1
- package/dist/step/get-workflow-metadata.js +1 -1
- package/dist/step/writable-stream.d.ts +14 -0
- package/dist/step/writable-stream.d.ts.map +1 -0
- package/dist/step/writable-stream.js +30 -0
- package/dist/step.d.ts +1 -1
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +35 -6
- package/dist/symbols.d.ts +1 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +2 -1
- package/dist/telemetry/semantic-conventions.d.ts +46 -38
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +7 -3
- package/dist/telemetry.d.ts +8 -4
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +20 -6
- package/dist/types.d.ts +0 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -26
- package/dist/util.d.ts +9 -27
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +34 -42
- package/dist/vm/index.js +2 -2
- package/dist/vm/uuid.js +1 -1
- package/dist/workflow/create-hook.js +1 -1
- package/dist/workflow/define-hook.d.ts +3 -3
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +1 -1
- package/dist/workflow/get-workflow-metadata.js +1 -1
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +2 -2
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -1
- package/dist/workflow/sleep.d.ts +4 -0
- package/dist/workflow/sleep.d.ts.map +1 -0
- package/dist/workflow/sleep.js +55 -0
- package/dist/workflow/writable-stream.js +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +22 -7
- package/dist/writable-stream.d.ts +5 -4
- package/dist/writable-stream.d.ts.map +1 -1
- package/dist/writable-stream.js +7 -6
- package/package.json +21 -18
- package/dist/builtins.js.map +0 -1
- package/dist/create-hook.js.map +0 -1
- package/dist/define-hook.js.map +0 -1
- package/dist/events-consumer.js.map +0 -1
- package/dist/global.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/observability.js.map +0 -1
- package/dist/parse-name.js.map +0 -1
- package/dist/private.js.map +0 -1
- package/dist/runtime/resume-hook.js.map +0 -1
- package/dist/runtime/start.js.map +0 -1
- package/dist/runtime/world.js.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/schemas.js.map +0 -1
- package/dist/serialization.js.map +0 -1
- package/dist/step/context-storage.js.map +0 -1
- package/dist/step/get-step-metadata.js.map +0 -1
- package/dist/step/get-workflow-metadata.js.map +0 -1
- package/dist/step.js.map +0 -1
- package/dist/symbols.js.map +0 -1
- package/dist/telemetry/semantic-conventions.js.map +0 -1
- package/dist/telemetry.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/util.js.map +0 -1
- package/dist/vm/index.js.map +0 -1
- package/dist/vm/uuid.js.map +0 -1
- package/dist/workflow/create-hook.js.map +0 -1
- package/dist/workflow/define-hook.js.map +0 -1
- package/dist/workflow/get-workflow-metadata.js.map +0 -1
- package/dist/workflow/hook.js.map +0 -1
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/writable-stream.js.map +0 -1
- package/dist/workflow.js.map +0 -1
- package/dist/writable-stream.js.map +0 -1
package/dist/serialization.d.ts
CHANGED
|
@@ -13,10 +13,11 @@ export declare class WorkflowServerReadableStream extends ReadableStream<Uint8Ar
|
|
|
13
13
|
constructor(name: string, startIndex?: number);
|
|
14
14
|
}
|
|
15
15
|
export declare class WorkflowServerWritableStream extends WritableStream<Uint8Array> {
|
|
16
|
-
constructor(name: string);
|
|
16
|
+
constructor(name: string, runId: string | Promise<string>);
|
|
17
17
|
}
|
|
18
18
|
export interface SerializableSpecial {
|
|
19
19
|
ArrayBuffer: string;
|
|
20
|
+
BigInt: string;
|
|
20
21
|
BigInt64Array: string;
|
|
21
22
|
BigUint64Array: string;
|
|
22
23
|
Date: string;
|
|
@@ -57,6 +58,10 @@ export interface SerializableSpecial {
|
|
|
57
58
|
redirected: boolean;
|
|
58
59
|
};
|
|
59
60
|
Set: any[];
|
|
61
|
+
StepFunction: {
|
|
62
|
+
stepId: string;
|
|
63
|
+
closureVars?: Record<string, any>;
|
|
64
|
+
};
|
|
60
65
|
URL: string;
|
|
61
66
|
URLSearchParams: string;
|
|
62
67
|
Uint8Array: string;
|
|
@@ -81,7 +86,7 @@ type Revivers = {
|
|
|
81
86
|
* @param ops
|
|
82
87
|
* @returns
|
|
83
88
|
*/
|
|
84
|
-
export declare function getExternalReducers(global: Record<string, any> | undefined, ops: Promise<
|
|
89
|
+
export declare function getExternalReducers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string | Promise<string>): Reducers;
|
|
85
90
|
/**
|
|
86
91
|
* Reducers for serialization boundary from within the workflow execution
|
|
87
92
|
* environment, passing return value to the client side and into step arguments.
|
|
@@ -90,14 +95,45 @@ export declare function getExternalReducers(global: Record<string, any> | undefi
|
|
|
90
95
|
* @returns
|
|
91
96
|
*/
|
|
92
97
|
export declare function getWorkflowReducers(global?: Record<string, any>): Reducers;
|
|
98
|
+
export declare function getCommonRevivers(global?: Record<string, any>): {
|
|
99
|
+
readonly ArrayBuffer: (value: string) => any;
|
|
100
|
+
readonly BigInt: (value: string) => any;
|
|
101
|
+
readonly BigInt64Array: (value: string) => any;
|
|
102
|
+
readonly BigUint64Array: (value: string) => any;
|
|
103
|
+
readonly Date: (value: string) => any;
|
|
104
|
+
readonly Error: (value: Record<string, any>) => any;
|
|
105
|
+
readonly Float32Array: (value: string) => any;
|
|
106
|
+
readonly Float64Array: (value: string) => any;
|
|
107
|
+
readonly Headers: (value: [string, string][]) => any;
|
|
108
|
+
readonly Int8Array: (value: string) => any;
|
|
109
|
+
readonly Int16Array: (value: string) => any;
|
|
110
|
+
readonly Int32Array: (value: string) => any;
|
|
111
|
+
readonly Map: (value: [any, any][]) => any;
|
|
112
|
+
readonly RegExp: (value: {
|
|
113
|
+
source: string;
|
|
114
|
+
flags: string;
|
|
115
|
+
}) => any;
|
|
116
|
+
readonly Set: (value: any[]) => any;
|
|
117
|
+
readonly StepFunction: (value: {
|
|
118
|
+
stepId: string;
|
|
119
|
+
closureVars?: Record<string, any>;
|
|
120
|
+
}) => any;
|
|
121
|
+
readonly URL: (value: string) => any;
|
|
122
|
+
readonly URLSearchParams: (value: string) => any;
|
|
123
|
+
readonly Uint8Array: (value: string) => any;
|
|
124
|
+
readonly Uint8ClampedArray: (value: string) => any;
|
|
125
|
+
readonly Uint16Array: (value: string) => any;
|
|
126
|
+
readonly Uint32Array: (value: string) => any;
|
|
127
|
+
};
|
|
93
128
|
/**
|
|
94
129
|
* Revivers for deserialization boundary from the client side,
|
|
95
130
|
* receiving the return value from the workflow handler.
|
|
96
131
|
*
|
|
97
132
|
* @param global
|
|
98
133
|
* @param ops
|
|
134
|
+
* @param runId
|
|
99
135
|
*/
|
|
100
|
-
export declare function getExternalRevivers(global: Record<string, any> | undefined, ops: Promise<
|
|
136
|
+
export declare function getExternalRevivers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string | Promise<string>): Revivers;
|
|
101
137
|
/**
|
|
102
138
|
* Revivers for deserialization boundary from within the workflow execution
|
|
103
139
|
* environment, receiving arguments from the client side, and return values
|
|
@@ -114,9 +150,10 @@ export declare function getWorkflowRevivers(global?: Record<string, any>): Reviv
|
|
|
114
150
|
*
|
|
115
151
|
* @param value
|
|
116
152
|
* @param global
|
|
153
|
+
* @param runId
|
|
117
154
|
* @returns The dehydrated value, ready to be inserted into the database
|
|
118
155
|
*/
|
|
119
|
-
export declare function dehydrateWorkflowArguments(value: unknown, ops: Promise<
|
|
156
|
+
export declare function dehydrateWorkflowArguments(value: unknown, ops: Promise<void>[], runId: string | Promise<string>, global?: Record<string, any>): any;
|
|
120
157
|
/**
|
|
121
158
|
* Called from workflow execution environment to hydrate the workflow
|
|
122
159
|
* arguments from the database at the start of workflow execution.
|
|
@@ -142,10 +179,13 @@ export declare function dehydrateWorkflowReturnValue(value: unknown, global?: Re
|
|
|
142
179
|
* return value of a completed workflow run.
|
|
143
180
|
*
|
|
144
181
|
* @param value
|
|
182
|
+
* @param ops
|
|
145
183
|
* @param global
|
|
184
|
+
* @param extraRevivers
|
|
185
|
+
* @param runId
|
|
146
186
|
* @returns The hydrated return value, ready to be consumed by the client
|
|
147
187
|
*/
|
|
148
|
-
export declare function hydrateWorkflowReturnValue(value: Parameters<typeof devalue.unflatten>[0], ops: Promise<
|
|
188
|
+
export declare function hydrateWorkflowReturnValue(value: Parameters<typeof devalue.unflatten>[0], ops: Promise<void>[], runId: string | Promise<string>, global?: Record<string, any>, extraRevivers?: Record<string, (value: any) => any>): any;
|
|
149
189
|
/**
|
|
150
190
|
* Called from the workflow handler when a step is being created.
|
|
151
191
|
* Dehydrates values from within the workflow execution environment
|
|
@@ -161,26 +201,33 @@ export declare function dehydrateStepArguments(value: unknown, global: Record<st
|
|
|
161
201
|
* from the database at the start of the step execution.
|
|
162
202
|
*
|
|
163
203
|
* @param value
|
|
204
|
+
* @param ops
|
|
164
205
|
* @param global
|
|
206
|
+
* @param extraRevivers
|
|
207
|
+
* @param runId
|
|
165
208
|
* @returns The hydrated value, ready to be consumed by the step user-code function
|
|
166
209
|
*/
|
|
167
|
-
export declare function hydrateStepArguments(value: Parameters<typeof devalue.unflatten>[0], ops: Promise<any>[], global?: Record<string, any>, extraRevivers?: Record<string, (value: any) => any>): any;
|
|
210
|
+
export declare function hydrateStepArguments(value: Parameters<typeof devalue.unflatten>[0], ops: Promise<any>[], runId: string | Promise<string>, global?: Record<string, any>, extraRevivers?: Record<string, (value: any) => any>): any;
|
|
168
211
|
/**
|
|
169
212
|
* Called from the step handler when a step has completed.
|
|
170
213
|
* Dehydrates values from within the step execution environment
|
|
171
214
|
* into a format that can be saved to the database.
|
|
172
215
|
*
|
|
173
216
|
* @param value
|
|
217
|
+
* @param ops
|
|
174
218
|
* @param global
|
|
219
|
+
* @param runId
|
|
175
220
|
* @returns The dehydrated value, ready to be inserted into the database
|
|
176
221
|
*/
|
|
177
|
-
export declare function dehydrateStepReturnValue(value: unknown, ops: Promise<any>[], global?: Record<string, any>): any;
|
|
222
|
+
export declare function dehydrateStepReturnValue(value: unknown, ops: Promise<any>[], runId: string | Promise<string>, global?: Record<string, any>): any;
|
|
178
223
|
/**
|
|
179
224
|
* Called from the workflow handler when replaying the event log of a `step_completed` event.
|
|
180
225
|
* Hydrates the return value of a step from the database.
|
|
181
226
|
*
|
|
182
227
|
* @param value
|
|
183
228
|
* @param global
|
|
229
|
+
* @param extraRevivers
|
|
230
|
+
* @param runId
|
|
184
231
|
* @returns The hydrated return value of a step, ready to be consumed by the workflow handler
|
|
185
232
|
*/
|
|
186
233
|
export declare function hydrateStepReturnValue(value: Parameters<typeof devalue.unflatten>[0], global?: Record<string, any>, extraRevivers?: Record<string, (value: any) => any>): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
|
package/dist/serialization.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
2
2
|
import * as devalue from 'devalue';
|
|
3
|
+
import { getStepFunction } from './private.js';
|
|
3
4
|
import { getWorld } from './runtime/world.js';
|
|
5
|
+
import { contextStorage } from './step/context-storage.js';
|
|
4
6
|
import { BODY_INIT_SYMBOL, STREAM_NAME_SYMBOL, STREAM_TYPE_SYMBOL, WEBHOOK_RESPONSE_WRITABLE, } from './symbols.js';
|
|
5
7
|
/**
|
|
6
8
|
* Detect if a readable stream is a byte stream.
|
|
@@ -94,17 +96,26 @@ export class WorkflowServerReadableStream extends ReadableStream {
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
export class WorkflowServerWritableStream extends WritableStream {
|
|
97
|
-
constructor(name) {
|
|
99
|
+
constructor(name, runId) {
|
|
100
|
+
// runId can be a promise, because we need a runID to write to a stream,
|
|
101
|
+
// but at class instantiation time, we might not have a run ID yet. This
|
|
102
|
+
// mainly happens when calling start() for a workflow with already-serialized
|
|
103
|
+
// arguments.
|
|
104
|
+
if (typeof runId !== 'string' && !(runId instanceof Promise)) {
|
|
105
|
+
throw new Error(`"runId" must be a string or a promise that resolves to a string, got "${typeof runId}"`);
|
|
106
|
+
}
|
|
98
107
|
if (typeof name !== 'string' || name.length === 0) {
|
|
99
108
|
throw new Error(`"name" is required, got "${name}"`);
|
|
100
109
|
}
|
|
101
110
|
const world = getWorld();
|
|
102
111
|
super({
|
|
103
|
-
|
|
104
|
-
await
|
|
112
|
+
async write(chunk) {
|
|
113
|
+
const _runId = await runId;
|
|
114
|
+
await world.writeToStream(name, _runId, chunk);
|
|
105
115
|
},
|
|
106
|
-
|
|
107
|
-
await
|
|
116
|
+
async close() {
|
|
117
|
+
const _runId = await runId;
|
|
118
|
+
await world.closeStream(name, _runId);
|
|
108
119
|
},
|
|
109
120
|
});
|
|
110
121
|
}
|
|
@@ -119,12 +130,16 @@ function getCommonReducers(global = globalThis) {
|
|
|
119
130
|
// Avoid returning falsy value for zero-length buffers
|
|
120
131
|
if (length === 0)
|
|
121
132
|
return '.';
|
|
122
|
-
|
|
133
|
+
// Create a proper copy to avoid ArrayBuffer detachment issues
|
|
134
|
+
// Buffer.from(ArrayBuffer, offset, length) creates a view, not a copy
|
|
135
|
+
const uint8 = new Uint8Array(value, offset, length);
|
|
136
|
+
return Buffer.from(uint8).toString('base64');
|
|
123
137
|
};
|
|
124
138
|
const viewToBase64 = (value) => abToBase64(value.buffer, value.byteOffset, value.byteLength);
|
|
125
139
|
return {
|
|
126
140
|
ArrayBuffer: (value) => value instanceof global.ArrayBuffer &&
|
|
127
141
|
abToBase64(value, 0, value.byteLength),
|
|
142
|
+
BigInt: (value) => typeof value === 'bigint' && value.toString(),
|
|
128
143
|
BigInt64Array: (value) => value instanceof global.BigInt64Array && viewToBase64(value),
|
|
129
144
|
BigUint64Array: (value) => value instanceof global.BigUint64Array && viewToBase64(value),
|
|
130
145
|
Date: (value) => {
|
|
@@ -184,6 +199,22 @@ function getCommonReducers(global = globalThis) {
|
|
|
184
199
|
};
|
|
185
200
|
},
|
|
186
201
|
Set: (value) => value instanceof global.Set && Array.from(value),
|
|
202
|
+
StepFunction: (value) => {
|
|
203
|
+
if (typeof value !== 'function')
|
|
204
|
+
return false;
|
|
205
|
+
const stepId = value.stepId;
|
|
206
|
+
if (typeof stepId !== 'string')
|
|
207
|
+
return false;
|
|
208
|
+
// Check if the step function has closure variables
|
|
209
|
+
const closureVarsFn = value.__closureVarsFn;
|
|
210
|
+
if (closureVarsFn && typeof closureVarsFn === 'function') {
|
|
211
|
+
// Invoke the closure variables function and serialize along with stepId
|
|
212
|
+
const closureVars = closureVarsFn();
|
|
213
|
+
return { stepId, closureVars };
|
|
214
|
+
}
|
|
215
|
+
// No closure variables - return object with just stepId
|
|
216
|
+
return { stepId };
|
|
217
|
+
},
|
|
187
218
|
URL: (value) => value instanceof global.URL && value.href,
|
|
188
219
|
URLSearchParams: (value) => {
|
|
189
220
|
if (!(value instanceof global.URLSearchParams))
|
|
@@ -207,7 +238,7 @@ function getCommonReducers(global = globalThis) {
|
|
|
207
238
|
* @param ops
|
|
208
239
|
* @returns
|
|
209
240
|
*/
|
|
210
|
-
export function getExternalReducers(global = globalThis, ops) {
|
|
241
|
+
export function getExternalReducers(global = globalThis, ops, runId) {
|
|
211
242
|
return {
|
|
212
243
|
...getCommonReducers(global),
|
|
213
244
|
ReadableStream: (value) => {
|
|
@@ -219,13 +250,13 @@ export function getExternalReducers(global = globalThis, ops) {
|
|
|
219
250
|
}
|
|
220
251
|
const name = global.crypto.randomUUID();
|
|
221
252
|
const type = getStreamType(value);
|
|
222
|
-
const writable = new WorkflowServerWritableStream(name);
|
|
253
|
+
const writable = new WorkflowServerWritableStream(name, runId);
|
|
223
254
|
if (type === 'bytes') {
|
|
224
255
|
ops.push(value.pipeTo(writable));
|
|
225
256
|
}
|
|
226
257
|
else {
|
|
227
258
|
ops.push(value
|
|
228
|
-
.pipeThrough(getSerializeStream(getExternalReducers(global, ops)))
|
|
259
|
+
.pipeThrough(getSerializeStream(getExternalReducers(global, ops, runId)))
|
|
229
260
|
.pipeTo(writable));
|
|
230
261
|
}
|
|
231
262
|
const s = { name };
|
|
@@ -237,9 +268,8 @@ export function getExternalReducers(global = globalThis, ops) {
|
|
|
237
268
|
if (!(value instanceof global.WritableStream))
|
|
238
269
|
return false;
|
|
239
270
|
const name = global.crypto.randomUUID();
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
.pipeTo(value));
|
|
271
|
+
const readable = new WorkflowServerReadableStream(name);
|
|
272
|
+
ops.push(readable.pipeTo(value));
|
|
243
273
|
return { name };
|
|
244
274
|
},
|
|
245
275
|
};
|
|
@@ -293,9 +323,10 @@ export function getWorkflowReducers(global = globalThis) {
|
|
|
293
323
|
*
|
|
294
324
|
* @param global
|
|
295
325
|
* @param ops
|
|
326
|
+
* @param runId
|
|
296
327
|
* @returns
|
|
297
328
|
*/
|
|
298
|
-
function getStepReducers(global = globalThis, ops) {
|
|
329
|
+
function getStepReducers(global = globalThis, ops, runId) {
|
|
299
330
|
return {
|
|
300
331
|
...getCommonReducers(global),
|
|
301
332
|
ReadableStream: (value) => {
|
|
@@ -311,15 +342,18 @@ function getStepReducers(global = globalThis, ops) {
|
|
|
311
342
|
let name = value[STREAM_NAME_SYMBOL];
|
|
312
343
|
let type = value[STREAM_TYPE_SYMBOL];
|
|
313
344
|
if (!name) {
|
|
345
|
+
if (!runId) {
|
|
346
|
+
throw new Error('ReadableStream cannot be serialized without a valid runId');
|
|
347
|
+
}
|
|
314
348
|
name = global.crypto.randomUUID();
|
|
315
349
|
type = getStreamType(value);
|
|
316
|
-
const writable = new WorkflowServerWritableStream(name);
|
|
350
|
+
const writable = new WorkflowServerWritableStream(name, runId);
|
|
317
351
|
if (type === 'bytes') {
|
|
318
352
|
ops.push(value.pipeTo(writable));
|
|
319
353
|
}
|
|
320
354
|
else {
|
|
321
355
|
ops.push(value
|
|
322
|
-
.pipeThrough(getSerializeStream(getStepReducers(global, ops)))
|
|
356
|
+
.pipeThrough(getSerializeStream(getStepReducers(global, ops, runId)))
|
|
323
357
|
.pipeTo(writable));
|
|
324
358
|
}
|
|
325
359
|
}
|
|
@@ -333,16 +367,19 @@ function getStepReducers(global = globalThis, ops) {
|
|
|
333
367
|
return false;
|
|
334
368
|
let name = value[STREAM_NAME_SYMBOL];
|
|
335
369
|
if (!name) {
|
|
370
|
+
if (!runId) {
|
|
371
|
+
throw new Error('WritableStream cannot be serialized without a valid runId');
|
|
372
|
+
}
|
|
336
373
|
name = global.crypto.randomUUID();
|
|
337
374
|
ops.push(new WorkflowServerReadableStream(name)
|
|
338
|
-
.pipeThrough(getDeserializeStream(getStepRevivers(global, ops)))
|
|
375
|
+
.pipeThrough(getDeserializeStream(getStepRevivers(global, ops, runId)))
|
|
339
376
|
.pipeTo(value));
|
|
340
377
|
}
|
|
341
378
|
return { name };
|
|
342
379
|
},
|
|
343
380
|
};
|
|
344
381
|
}
|
|
345
|
-
function getCommonRevivers(global = globalThis) {
|
|
382
|
+
export function getCommonRevivers(global = globalThis) {
|
|
346
383
|
function reviveArrayBuffer(value) {
|
|
347
384
|
// Handle sentinel value for zero-length buffers
|
|
348
385
|
const base64 = value === '.' ? '' : value;
|
|
@@ -354,6 +391,7 @@ function getCommonRevivers(global = globalThis) {
|
|
|
354
391
|
}
|
|
355
392
|
return {
|
|
356
393
|
ArrayBuffer: reviveArrayBuffer,
|
|
394
|
+
BigInt: (value) => global.BigInt(value),
|
|
357
395
|
BigInt64Array: (value) => {
|
|
358
396
|
const ab = reviveArrayBuffer(value);
|
|
359
397
|
return new global.BigInt64Array(ab);
|
|
@@ -393,6 +431,47 @@ function getCommonRevivers(global = globalThis) {
|
|
|
393
431
|
Map: (value) => new global.Map(value),
|
|
394
432
|
RegExp: (value) => new global.RegExp(value.source, value.flags),
|
|
395
433
|
Set: (value) => new global.Set(value),
|
|
434
|
+
StepFunction: (value) => {
|
|
435
|
+
const stepId = value.stepId;
|
|
436
|
+
const closureVars = value.closureVars;
|
|
437
|
+
const stepFn = getStepFunction(stepId);
|
|
438
|
+
if (!stepFn) {
|
|
439
|
+
throw new Error(`Step function "${stepId}" not found. Make sure the step function is registered.`);
|
|
440
|
+
}
|
|
441
|
+
// If closure variables were serialized, return a wrapper function
|
|
442
|
+
// that sets up AsyncLocalStorage context when invoked
|
|
443
|
+
if (closureVars) {
|
|
444
|
+
const wrappedStepFn = ((...args) => {
|
|
445
|
+
// Get the current context from AsyncLocalStorage
|
|
446
|
+
const currentContext = contextStorage.getStore();
|
|
447
|
+
if (!currentContext) {
|
|
448
|
+
throw new Error('Cannot call step function with closure variables outside step context');
|
|
449
|
+
}
|
|
450
|
+
// Create a new context with the closure variables merged in
|
|
451
|
+
const newContext = {
|
|
452
|
+
...currentContext,
|
|
453
|
+
closureVars,
|
|
454
|
+
};
|
|
455
|
+
// Run the step function with the new context that includes closure vars
|
|
456
|
+
return contextStorage.run(newContext, () => stepFn(...args));
|
|
457
|
+
});
|
|
458
|
+
// Copy properties from original step function
|
|
459
|
+
Object.defineProperty(wrappedStepFn, 'name', {
|
|
460
|
+
value: stepFn.name,
|
|
461
|
+
});
|
|
462
|
+
Object.defineProperty(wrappedStepFn, 'stepId', {
|
|
463
|
+
value: stepId,
|
|
464
|
+
writable: false,
|
|
465
|
+
enumerable: false,
|
|
466
|
+
configurable: false,
|
|
467
|
+
});
|
|
468
|
+
if (stepFn.maxRetries !== undefined) {
|
|
469
|
+
wrappedStepFn.maxRetries = stepFn.maxRetries;
|
|
470
|
+
}
|
|
471
|
+
return wrappedStepFn;
|
|
472
|
+
}
|
|
473
|
+
return stepFn;
|
|
474
|
+
},
|
|
396
475
|
URL: (value) => new global.URL(value),
|
|
397
476
|
URLSearchParams: (value) => new global.URLSearchParams(value === '.' ? '' : value),
|
|
398
477
|
Uint8Array: (value) => {
|
|
@@ -419,8 +498,9 @@ function getCommonRevivers(global = globalThis) {
|
|
|
419
498
|
*
|
|
420
499
|
* @param global
|
|
421
500
|
* @param ops
|
|
501
|
+
* @param runId
|
|
422
502
|
*/
|
|
423
|
-
export function getExternalRevivers(global = globalThis, ops) {
|
|
503
|
+
export function getExternalRevivers(global = globalThis, ops, runId) {
|
|
424
504
|
return {
|
|
425
505
|
...getCommonRevivers(global),
|
|
426
506
|
Request: (value) => {
|
|
@@ -454,14 +534,14 @@ export function getExternalRevivers(global = globalThis, ops) {
|
|
|
454
534
|
return readable;
|
|
455
535
|
}
|
|
456
536
|
else {
|
|
457
|
-
const transform = getDeserializeStream(getExternalRevivers(global, ops));
|
|
537
|
+
const transform = getDeserializeStream(getExternalRevivers(global, ops, runId));
|
|
458
538
|
ops.push(readable.pipeTo(transform.writable));
|
|
459
539
|
return transform.readable;
|
|
460
540
|
}
|
|
461
541
|
},
|
|
462
542
|
WritableStream: (value) => {
|
|
463
|
-
const serialize = getSerializeStream(getExternalReducers(global, ops));
|
|
464
|
-
ops.push(serialize.readable.pipeTo(new WorkflowServerWritableStream(value.name)));
|
|
543
|
+
const serialize = getSerializeStream(getExternalReducers(global, ops, runId));
|
|
544
|
+
ops.push(serialize.readable.pipeTo(new WorkflowServerWritableStream(value.name, runId)));
|
|
465
545
|
return serialize.writable;
|
|
466
546
|
},
|
|
467
547
|
};
|
|
@@ -532,9 +612,10 @@ export function getWorkflowRevivers(global = globalThis) {
|
|
|
532
612
|
*
|
|
533
613
|
* @param global
|
|
534
614
|
* @param ops
|
|
615
|
+
* @param runId
|
|
535
616
|
* @returns
|
|
536
617
|
*/
|
|
537
|
-
function getStepRevivers(global = globalThis, ops) {
|
|
618
|
+
function getStepRevivers(global = globalThis, ops, runId) {
|
|
538
619
|
return {
|
|
539
620
|
...getCommonRevivers(global),
|
|
540
621
|
Request: (value) => {
|
|
@@ -577,14 +658,17 @@ function getStepRevivers(global = globalThis, ops) {
|
|
|
577
658
|
return readable;
|
|
578
659
|
}
|
|
579
660
|
else {
|
|
580
|
-
const transform = getDeserializeStream(getStepRevivers(global, ops));
|
|
661
|
+
const transform = getDeserializeStream(getStepRevivers(global, ops, runId));
|
|
581
662
|
ops.push(readable.pipeTo(transform.writable));
|
|
582
663
|
return transform.readable;
|
|
583
664
|
}
|
|
584
665
|
},
|
|
585
666
|
WritableStream: (value) => {
|
|
586
|
-
|
|
587
|
-
|
|
667
|
+
if (!runId) {
|
|
668
|
+
throw new Error('WritableStream cannot be revived without a valid runId');
|
|
669
|
+
}
|
|
670
|
+
const serialize = getSerializeStream(getStepReducers(global, ops, runId));
|
|
671
|
+
ops.push(serialize.readable.pipeTo(new WorkflowServerWritableStream(value.name, runId)));
|
|
588
672
|
return serialize.writable;
|
|
589
673
|
},
|
|
590
674
|
};
|
|
@@ -596,11 +680,12 @@ function getStepRevivers(global = globalThis, ops) {
|
|
|
596
680
|
*
|
|
597
681
|
* @param value
|
|
598
682
|
* @param global
|
|
683
|
+
* @param runId
|
|
599
684
|
* @returns The dehydrated value, ready to be inserted into the database
|
|
600
685
|
*/
|
|
601
|
-
export function dehydrateWorkflowArguments(value, ops, global = globalThis) {
|
|
686
|
+
export function dehydrateWorkflowArguments(value, ops, runId, global = globalThis) {
|
|
602
687
|
try {
|
|
603
|
-
const str = devalue.stringify(value, getExternalReducers(global, ops));
|
|
688
|
+
const str = devalue.stringify(value, getExternalReducers(global, ops, runId));
|
|
604
689
|
return revive(str);
|
|
605
690
|
}
|
|
606
691
|
catch (error) {
|
|
@@ -646,12 +731,15 @@ export function dehydrateWorkflowReturnValue(value, global = globalThis) {
|
|
|
646
731
|
* return value of a completed workflow run.
|
|
647
732
|
*
|
|
648
733
|
* @param value
|
|
734
|
+
* @param ops
|
|
649
735
|
* @param global
|
|
736
|
+
* @param extraRevivers
|
|
737
|
+
* @param runId
|
|
650
738
|
* @returns The hydrated return value, ready to be consumed by the client
|
|
651
739
|
*/
|
|
652
|
-
export function hydrateWorkflowReturnValue(value, ops, global = globalThis, extraRevivers = {}) {
|
|
740
|
+
export function hydrateWorkflowReturnValue(value, ops, runId, global = globalThis, extraRevivers = {}) {
|
|
653
741
|
const obj = devalue.unflatten(value, {
|
|
654
|
-
...getExternalRevivers(global, ops),
|
|
742
|
+
...getExternalRevivers(global, ops, runId),
|
|
655
743
|
...extraRevivers,
|
|
656
744
|
});
|
|
657
745
|
return obj;
|
|
@@ -679,12 +767,15 @@ export function dehydrateStepArguments(value, global) {
|
|
|
679
767
|
* from the database at the start of the step execution.
|
|
680
768
|
*
|
|
681
769
|
* @param value
|
|
770
|
+
* @param ops
|
|
682
771
|
* @param global
|
|
772
|
+
* @param extraRevivers
|
|
773
|
+
* @param runId
|
|
683
774
|
* @returns The hydrated value, ready to be consumed by the step user-code function
|
|
684
775
|
*/
|
|
685
|
-
export function hydrateStepArguments(value, ops, global = globalThis, extraRevivers = {}) {
|
|
776
|
+
export function hydrateStepArguments(value, ops, runId, global = globalThis, extraRevivers = {}) {
|
|
686
777
|
const obj = devalue.unflatten(value, {
|
|
687
|
-
...getStepRevivers(global, ops),
|
|
778
|
+
...getStepRevivers(global, ops, runId),
|
|
688
779
|
...extraRevivers,
|
|
689
780
|
});
|
|
690
781
|
return obj;
|
|
@@ -695,12 +786,14 @@ export function hydrateStepArguments(value, ops, global = globalThis, extraReviv
|
|
|
695
786
|
* into a format that can be saved to the database.
|
|
696
787
|
*
|
|
697
788
|
* @param value
|
|
789
|
+
* @param ops
|
|
698
790
|
* @param global
|
|
791
|
+
* @param runId
|
|
699
792
|
* @returns The dehydrated value, ready to be inserted into the database
|
|
700
793
|
*/
|
|
701
|
-
export function dehydrateStepReturnValue(value, ops, global = globalThis) {
|
|
794
|
+
export function dehydrateStepReturnValue(value, ops, runId, global = globalThis) {
|
|
702
795
|
try {
|
|
703
|
-
const str = devalue.stringify(value, getStepReducers(global, ops));
|
|
796
|
+
const str = devalue.stringify(value, getStepReducers(global, ops, runId));
|
|
704
797
|
return revive(str);
|
|
705
798
|
}
|
|
706
799
|
catch (error) {
|
|
@@ -713,6 +806,8 @@ export function dehydrateStepReturnValue(value, ops, global = globalThis) {
|
|
|
713
806
|
*
|
|
714
807
|
* @param value
|
|
715
808
|
* @param global
|
|
809
|
+
* @param extraRevivers
|
|
810
|
+
* @param runId
|
|
716
811
|
* @returns The hydrated return value of a step, ready to be consumed by the workflow handler
|
|
717
812
|
*/
|
|
718
813
|
export function hydrateStepReturnValue(value, global = globalThis, extraRevivers = {}) {
|
|
@@ -722,4 +817,4 @@ export function hydrateStepReturnValue(value, global = globalThis, extraRevivers
|
|
|
722
817
|
});
|
|
723
818
|
return obj;
|
|
724
819
|
}
|
|
725
|
-
//# sourceMappingURL=serialization.js.map
|
|
820
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBRXRCOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFzQjtJQUNsRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsUUFBa0I7SUFFbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBa0I7UUFDbEQsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVO1lBQ3pCLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDdEQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENB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
|
package/dist/sleep.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { StringValue } from 'ms';
|
|
2
|
+
/**
|
|
3
|
+
* Sleep within a workflow for a given duration.
|
|
4
|
+
*
|
|
5
|
+
* This is a built-in runtime function that uses timer events in the event log.
|
|
6
|
+
*
|
|
7
|
+
* @param duration - The duration to sleep for, this is a string in the format
|
|
8
|
+
* of `"1000ms"`, `"1s"`, `"1m"`, `"1h"`, or `"1d"`.
|
|
9
|
+
* @overload
|
|
10
|
+
* @returns A promise that resolves when the sleep is complete.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sleep(duration: StringValue): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Sleep within a workflow until a specific date.
|
|
15
|
+
*
|
|
16
|
+
* This is a built-in runtime function that uses timer events in the event log.
|
|
17
|
+
*
|
|
18
|
+
* @param date - The date to sleep until, this must be a future date.
|
|
19
|
+
* @overload
|
|
20
|
+
* @returns A promise that resolves when the sleep is complete.
|
|
21
|
+
*/
|
|
22
|
+
export declare function sleep(date: Date): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Sleep within a workflow for a given duration in milliseconds.
|
|
25
|
+
*
|
|
26
|
+
* This is a built-in runtime function that uses timer events in the event log.
|
|
27
|
+
*
|
|
28
|
+
* @param durationMs - The duration to sleep for in milliseconds.
|
|
29
|
+
* @overload
|
|
30
|
+
* @returns A promise that resolves when the sleep is complete.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sleep(durationMs: number): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=sleep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAGtC;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/sleep.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WORKFLOW_SLEEP } from './symbols.js';
|
|
2
|
+
export async function sleep(param) {
|
|
3
|
+
// Inside the workflow VM, the sleep function is stored in the globalThis object behind a symbol
|
|
4
|
+
const sleepFn = globalThis[WORKFLOW_SLEEP];
|
|
5
|
+
if (!sleepFn) {
|
|
6
|
+
throw new Error('`sleep()` can only be called inside a workflow function');
|
|
7
|
+
}
|
|
8
|
+
return sleepFn(param);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xlZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2xlZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW9DOUMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsS0FBa0M7SUFDNUQsZ0dBQWdHO0lBQ2hHLE1BQU0sT0FBTyxHQUFJLFVBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDIn0=
|