@workflow/core 4.2.0-beta.74 → 4.2.0-beta.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Capabilities table for workflow runs based on their `@workflow/core` version.
3
+ *
4
+ * When resuming a hook or webhook, the payload must be encoded in a format
5
+ * that the *target* workflow run's deployment can decode. This module provides
6
+ * a way to look up what serialization formats a given `@workflow/core` version
7
+ * supports, so that newer deployments can avoid encoding payloads in formats
8
+ * that older deployments don't understand (e.g., the `encr` encryption format).
9
+ *
10
+ * ## Adding a new format
11
+ *
12
+ * When a new serialization format is introduced:
13
+ * 1. Add the format constant to `SerializationFormat` in `serialization.ts`
14
+ * 2. Add an entry to `FORMAT_VERSION_TABLE` below with the minimum
15
+ * `@workflow/core` version that supports it
16
+ * 3. The `getRunCapabilities()` function will automatically include it
17
+ *
18
+ * ## History
19
+ *
20
+ * - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
21
+ * Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
22
+ * https://github.com/vercel/workflow/commit/7618ac36
23
+ */
24
+ import { type SerializationFormatType } from './serialization.js';
25
+ /**
26
+ * Capabilities of a workflow run based on its `@workflow/core` version.
27
+ */
28
+ export interface RunCapabilities {
29
+ /**
30
+ * The set of serialization format prefixes that the target run can decode.
31
+ * Use `supportedFormats.has(SerializationFormat.ENCRYPTED)` to check
32
+ * if encryption is supported, etc.
33
+ */
34
+ supportedFormats: ReadonlySet<SerializationFormatType>;
35
+ }
36
+ /**
37
+ * Look up what serialization capabilities a workflow run supports based on
38
+ * its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
39
+ *
40
+ * When the version is `undefined`, not a string, or not a valid semver string
41
+ * (e.g. very old runs that predate the field, or corrupted metadata),
42
+ * we assume the most conservative capabilities (baseline formats only).
43
+ */
44
+ export declare function getRunCapabilities(workflowCoreVersion: string | undefined): RunCapabilities;
45
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;CACxD;AA0BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,eAAe,CAcjB"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Capabilities table for workflow runs based on their `@workflow/core` version.
3
+ *
4
+ * When resuming a hook or webhook, the payload must be encoded in a format
5
+ * that the *target* workflow run's deployment can decode. This module provides
6
+ * a way to look up what serialization formats a given `@workflow/core` version
7
+ * supports, so that newer deployments can avoid encoding payloads in formats
8
+ * that older deployments don't understand (e.g., the `encr` encryption format).
9
+ *
10
+ * ## Adding a new format
11
+ *
12
+ * When a new serialization format is introduced:
13
+ * 1. Add the format constant to `SerializationFormat` in `serialization.ts`
14
+ * 2. Add an entry to `FORMAT_VERSION_TABLE` below with the minimum
15
+ * `@workflow/core` version that supports it
16
+ * 3. The `getRunCapabilities()` function will automatically include it
17
+ *
18
+ * ## History
19
+ *
20
+ * - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
21
+ * Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
22
+ * https://github.com/vercel/workflow/commit/7618ac36
23
+ */
24
+ import semver from 'semver';
25
+ import { SerializationFormat, } from './serialization.js';
26
+ /**
27
+ * Maps serialization format identifiers to the minimum `@workflow/core`
28
+ * version that introduced support for them. Formats not listed here are
29
+ * assumed to be supported by all specVersion 2 runs (e.g., `devl`).
30
+ */
31
+ const FORMAT_VERSION_TABLE = [
32
+ { format: SerializationFormat.ENCRYPTED, minVersion: '4.2.0-beta.64' },
33
+ // Future entries:
34
+ // { format: SerializationFormat.CBOR, minVersion: '5.x.y' },
35
+ // { format: SerializationFormat.ENCRYPTED_V2, minVersion: '5.x.y' },
36
+ ];
37
+ /**
38
+ * The set of formats supported by all specVersion 2 runs, regardless of
39
+ * `@workflow/core` version. These are the baseline formats that were present
40
+ * from the start of the specVersion 2 protocol.
41
+ */
42
+ const BASELINE_FORMATS = new Set([
43
+ SerializationFormat.DEVALUE_V1,
44
+ ]);
45
+ /**
46
+ * Look up what serialization capabilities a workflow run supports based on
47
+ * its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
48
+ *
49
+ * When the version is `undefined`, not a string, or not a valid semver string
50
+ * (e.g. very old runs that predate the field, or corrupted metadata),
51
+ * we assume the most conservative capabilities (baseline formats only).
52
+ */
53
+ export function getRunCapabilities(workflowCoreVersion) {
54
+ if (!workflowCoreVersion || !semver.valid(workflowCoreVersion)) {
55
+ return { supportedFormats: BASELINE_FORMATS };
56
+ }
57
+ const formats = new Set(BASELINE_FORMATS);
58
+ for (const { format, minVersion } of FORMAT_VERSION_TABLE) {
59
+ if (semver.gte(workflowCoreVersion, minVersion)) {
60
+ formats.add(format);
61
+ }
62
+ }
63
+ return { supportedFormats: formats };
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NhcGFiaWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sb0JBQW9CLENBQUM7QUFjNUI7Ozs7R0FJRztBQUNILE1BQU0sb0JBQW9CLEdBR3JCO0lBQ0gsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDdEUsa0JBQWtCO0lBQ2xCLDZEQUE2RDtJQUM3RCxxRUFBcUU7Q0FDdEUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUF5QyxJQUFJLEdBQUcsQ0FBQztJQUNyRSxtQkFBbUIsQ0FBQyxVQUFVO0NBQy9CLENBQUMsQ0FBQztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLG1CQUF1QztJQUV2QyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQTBCLGdCQUFnQixDQUFDLENBQUM7SUFFbkUsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDMUQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN2QyxDQUFDIn0=
@@ -1,2 +1,3 @@
1
1
  export declare const MAX_QUEUE_DELIVERIES = 48;
2
+ export declare const REPLAY_TIMEOUT_MS = 240000;
2
3
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,oBAAoB,KAAK,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AASvC,eAAO,MAAM,iBAAiB,SAAU,CAAC"}
@@ -11,4 +11,12 @@
11
11
  // At 48 attempts the total elapsed time is approximately 20 hours, which is
12
12
  // safely under the 24-hour message visibility limit.
13
13
  export const MAX_QUEUE_DELIVERIES = 48;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUseUVBQXlFO0FBQ3pFLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELDJFQUEyRTtBQUMzRSwrREFBK0Q7QUFDL0Qsd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQyJ9
14
+ // Maximum time allowed for a single workflow replay execution (in ms).
15
+ // If a replay exceeds this duration, the run is failed and the process exits.
16
+ // This must be lower than the function's maxDuration to ensure the
17
+ // timeout handler has time to post the run_failed event before the platform
18
+ // kills the function.
19
+ // Note that on hobby plan, the maxDuration is 60s, so this barrier will not be hit,
20
+ // and the queue will re-try until the visibility window expires.
21
+ export const REPLAY_TIMEOUT_MS = 240_000;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUseUVBQXlFO0FBQ3pFLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELDJFQUEyRTtBQUMzRSwrREFBK0Q7QUFDL0Qsd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUV2Qyx1RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLG1FQUFtRTtBQUNuRSw0RUFBNEU7QUFDNUUsc0JBQXNCO0FBQ3RCLG9GQUFvRjtBQUNwRixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"resume-hook.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-hook.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,IAAI,EAKV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAoC7D;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACtC,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,OAAO,EAAE,CAAC,EACV,qBAAqB,CAAC,EAAE,SAAS,GAChC,OAAO,CAAC,IAAI,CAAC,CAuGf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CA0DnB"}
1
+ {"version":3,"file":"resume-hook.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-hook.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,IAAI,EAKV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAqC7D;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACtC,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,OAAO,EAAE,CAAC,EACV,qBAAqB,CAAC,EAAE,SAAS,GAChC,OAAO,CAAC,IAAI,CAAC,CAmHf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CA0DnB"}
@@ -1,8 +1,9 @@
1
1
  import { waitUntil } from '@vercel/functions';
2
2
  import { ERROR_SLUGS, HookNotFoundError, WorkflowRuntimeError, } from '@workflow/errors';
3
3
  import { isLegacySpecVersion, SPEC_VERSION_CURRENT, } from '@workflow/world';
4
+ import { getRunCapabilities } from '../capabilities.js';
4
5
  import { importKey } from '../encryption.js';
5
- import { dehydrateStepReturnValue, hydrateStepArguments, } from '../serialization.js';
6
+ import { dehydrateStepReturnValue, hydrateStepArguments, SerializationFormat, } from '../serialization.js';
6
7
  import { WEBHOOK_RESPONSE_WRITABLE } from '../symbols.js';
7
8
  import * as Attribute from '../telemetry/semantic-conventions.js';
8
9
  import { getSpanContextForTraceCarrier, trace } from '../telemetry.js';
@@ -94,6 +95,15 @@ export async function resumeHook(tokenOrHook, payload, encryptionKeyOverride) {
94
95
  ...Attribute.HookId(hook.hookId),
95
96
  ...Attribute.WorkflowRunId(hook.runId),
96
97
  });
98
+ // Check the target run's capabilities to ensure we encode the
99
+ // payload in a format the run's deployment can decode. For example,
100
+ // runs created before encryption support was added cannot decode
101
+ // the 'encr' serialization format.
102
+ const rawVersion = workflowRun.executionContext?.workflowCoreVersion;
103
+ const { supportedFormats } = getRunCapabilities(typeof rawVersion === 'string' ? rawVersion : undefined);
104
+ if (!supportedFormats.has(SerializationFormat.ENCRYPTED)) {
105
+ encryptionKey = undefined;
106
+ }
97
107
  // Dehydrate the payload for storage
98
108
  const ops = [];
99
109
  const v1Compat = isLegacySpecVersion(hook.specVersion);
@@ -228,4 +238,4 @@ export async function resumeWebhook(token, request) {
228
238
  }
229
239
  return response;
230
240
  }
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsb0JBQW9CLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixvQkFBb0IsR0FHckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxTQUFTLE1BQU0sc0NBQXNDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEM7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQWE7SUFLaEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDekIsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxNQUFN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
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsb0JBQW9CLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixvQkFBb0IsR0FHckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixHQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRDOzs7R0FHRztBQUNILEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxLQUFhO0lBS2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENB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
@@ -18,7 +18,7 @@ export async function start(workflow, argsOrOptions, options) {
18
18
  // @ts-expect-error this field is added by our client transform
19
19
  const workflowName = workflow?.workflowId;
20
20
  if (!workflowName) {
21
- throw new WorkflowRuntimeError(`'start' received an invalid workflow function. Ensure the Workflow Development Kit is configured correctly and the function includes a 'use workflow' directive.`, { slug: 'start-invalid-workflow-function' });
21
+ throw new WorkflowRuntimeError(`'start' received an invalid workflow function. Ensure the Workflow SDK is configured correctly and the function includes a 'use workflow' directive.`, { slug: 'start-invalid-workflow-function' });
22
22
  }
23
23
  return trace(`workflow.start ${workflowName}`, async (span) => {
24
24
  span?.setAttributes({
@@ -109,4 +109,4 @@ export async function start(workflow, argsOrOptions, options) {
109
109
  });
110
110
  });
111
111
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLElBQUksbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxzREFBc0Q7QUFDdEQsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztBQTBEaEMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQ3pCLFFBQTZELEVBQzdELGFBQW9DLEVBQ3BDLE9BQXNCO0lBRXRCLE9BQU8sTUFBTSxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQzVCLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsVUFB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
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLElBQUksbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxzREFBc0Q7QUFDdEQsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztBQTBEaEMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQ3pCLFFBQTZELEVBQzdELGFBQW9DLEVBQ3BDLE9BQXNCO0lBRXRCLE9BQU8sTUFBTSxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQzVCLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsVUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,KAAK,EAGV,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAyBzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GACnB,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2brC;AAID,wBAAgB,OAAO,SAAK"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,KAAK,EAGV,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AA8BzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GACnB,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAgfrC;AAID,wBAAgB,OAAO,SAAK"}
package/dist/runtime.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { EntityConflictError, RUN_ERROR_CODES, RunExpiredError, WorkflowRuntimeError, } from '@workflow/errors';
2
- import { classifyRunError } from './classify-error.js';
3
- import { MAX_QUEUE_DELIVERIES } from './runtime/constants.js';
4
2
  import { parseWorkflowName } from '@workflow/utils/parse-name';
5
3
  import { SPEC_VERSION_CURRENT, WorkflowInvokePayloadSchema, } from '@workflow/world';
4
+ import { classifyRunError } from './classify-error.js';
6
5
  import { importKey } from './encryption.js';
7
6
  import { WorkflowSuspension } from './global.js';
8
7
  import { runtimeLogger } from './logger.js';
8
+ import { MAX_QUEUE_DELIVERIES, REPLAY_TIMEOUT_MS, } from './runtime/constants.js';
9
9
  import { getAllWorkflowRunEvents, getQueueOverhead, handleHealthCheckMessage, parseHealthCheckPayload, withHealthCheck, } from './runtime/helpers.js';
10
10
  import { handleSuspension } from './runtime/suspension-handler.js';
11
11
  import { getWorld, getWorldHandlers } from './runtime/world.js';
@@ -86,6 +86,39 @@ export function workflowEntrypoint(workflowCode) {
86
86
  return;
87
87
  }
88
88
  const spanLinks = await linkToCurrentContext();
89
+ // --- Replay timeout guard ---
90
+ // If the replay takes longer than the timeout, fail the run and exit.
91
+ // This must be lower than the function's maxDuration to ensure
92
+ // the failure is recorded before the platform kills the function.
93
+ let replayTimeout;
94
+ if (process.env.VERCEL_URL !== undefined) {
95
+ replayTimeout = setTimeout(async () => {
96
+ runtimeLogger.error('Workflow replay exceeded timeout', {
97
+ workflowRunId: runId,
98
+ timeoutMs: REPLAY_TIMEOUT_MS,
99
+ });
100
+ try {
101
+ const world = getWorld();
102
+ await world.events.create(runId, {
103
+ eventType: 'run_failed',
104
+ specVersion: SPEC_VERSION_CURRENT,
105
+ eventData: {
106
+ error: {
107
+ message: `Workflow replay exceeded maximum duration (${REPLAY_TIMEOUT_MS / 1000}s)`,
108
+ },
109
+ errorCode: RUN_ERROR_CODES.REPLAY_TIMEOUT,
110
+ },
111
+ }, { requestId });
112
+ }
113
+ catch {
114
+ // Best effort — process exits regardless
115
+ }
116
+ // Note that this also prevents the runtime to acking the queue message,
117
+ // so the queue will call back once, after which a 410 will get it to exit early.
118
+ process.exit(1);
119
+ }, REPLAY_TIMEOUT_MS);
120
+ replayTimeout.unref();
121
+ }
89
122
  // Invoke user workflow within the propagated trace context and baggage
90
123
  return await withTraceContext(traceContext, async () => {
91
124
  // Set workflow context as baggage for automatic propagation
@@ -108,33 +141,40 @@ export function workflowEntrypoint(workflowCode) {
108
141
  ...Attribute.WorkflowTracePropagated(!!traceContext),
109
142
  });
110
143
  let workflowStartedAt = -1;
111
- let workflowRun = await world.runs.get(runId);
144
+ let workflowRun;
145
+ // Pre-loaded events from the run_started response.
146
+ // When present, we skip the events.list call to reduce TTFB.
147
+ let preloadedEvents;
112
148
  // --- Infrastructure: prepare the run state ---
149
+ // Always call run_started directly — this both transitions
150
+ // the run to 'running' AND returns the run entity, saving
151
+ // a separate runs.get round-trip.
152
+ // Contract: events.create('run_started') must be idempotent
153
+ // for runs already in 'running' status (return the run
154
+ // without error), not just for pending → running transitions.
113
155
  // Network/server errors propagate to the queue handler for retry.
114
156
  // WorkflowRuntimeError (data integrity issues) are fatal and
115
157
  // produce run_failed since retrying won't fix them.
116
158
  try {
117
- if (workflowRun.status === 'pending') {
118
- // Transition run to 'running' via event (event-sourced architecture)
119
- const result = await world.events.create(runId, {
120
- eventType: 'run_started',
121
- specVersion: SPEC_VERSION_CURRENT,
122
- }, { requestId });
123
- // Use the run entity from the event response (no extra get call needed)
124
- if (!result.run) {
125
- throw new WorkflowRuntimeError(`Event creation for 'run_started' did not return the run entity for run "${runId}"`);
126
- }
127
- workflowRun = result.run;
159
+ const result = await world.events.create(runId, {
160
+ eventType: 'run_started',
161
+ specVersion: SPEC_VERSION_CURRENT,
162
+ }, { requestId });
163
+ if (!result.run) {
164
+ throw new WorkflowRuntimeError(`Event creation for 'run_started' did not return the run entity for run "${runId}"`);
165
+ }
166
+ workflowRun = result.run;
167
+ // If the world returned events, use them to skip
168
+ // the initial events.list call and reduce TTFB.
169
+ if (result.events && result.events.length > 0) {
170
+ preloadedEvents = result.events;
128
171
  }
129
- // At this point, the workflow is "running" and `startedAt` should
130
- // definitely be set.
131
172
  if (!workflowRun.startedAt) {
132
173
  throw new WorkflowRuntimeError(`Workflow run "${runId}" has no "startedAt" timestamp`);
133
174
  }
134
175
  }
135
176
  catch (err) {
136
177
  // Run was concurrently completed/failed/cancelled
137
- // between the GET and the run_started event creation
138
178
  if (EntityConflictError.is(err) || RunExpiredError.is(err)) {
139
179
  runtimeLogger.info('Run already finished during setup, skipping', { workflowRunId: runId, message: err.message });
140
180
  return;
@@ -183,8 +223,11 @@ export function workflowEntrypoint(workflowCode) {
183
223
  // the replaying the workflow is itself failing.
184
224
  return;
185
225
  }
186
- // Load all events into memory before running
187
- const events = await getAllWorkflowRunEvents(workflowRun.runId);
226
+ // Load all events into memory before running.
227
+ // If we got pre-loaded events from the run_started response,
228
+ // skip the events.list round-trip to reduce TTFB.
229
+ const events = preloadedEvents ??
230
+ (await getAllWorkflowRunEvents(workflowRun.runId));
188
231
  // Check for any elapsed waits and create wait_completed events
189
232
  const now = Date.now();
190
233
  // Pre-compute completed correlation IDs for O(n) lookup instead of O(n²)
@@ -358,6 +401,10 @@ export function workflowEntrypoint(workflowCode) {
358
401
  });
359
402
  }); // End trace
360
403
  }); // End withWorkflowBaggage
404
+ }).finally(() => {
405
+ if (replayTimeout) {
406
+ clearTimeout(replayTimeout);
407
+ }
361
408
  }); // End withTraceContext
362
409
  });
363
410
  return withHealthCheck(handler);
@@ -365,4 +412,4 @@ export function workflowEntrypoint(workflowCode) {
365
412
  // this is a no-op placeholder as the client is
366
413
  // expecting this to be present but we aren't actually using it
367
414
  export function runStep() { }
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGVBQWUsRUFDZixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLDJCQUEyQixHQUU1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLHFC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
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGVBQWUsRUFDZixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLDJCQUEyQixHQUU1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFB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
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "4.2.0-beta.74";
1
+ export declare const version = "4.2.0-beta.76";
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.74';
2
+ export const version = '4.2.0-beta.76';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIn0=
@@ -13,6 +13,10 @@ Creates a webhook that can be used to suspend and resume a workflow run upon rec
13
13
 
14
14
  Webhooks provide a way for external systems to send HTTP requests directly to your workflow. Unlike hooks which accept arbitrary payloads, webhooks work with standard HTTP `Request` objects and can return HTTP `Response` objects.
15
15
 
16
+ <Callout type="warn">
17
+ `createWebhook()` creates a public endpoint at `/.well-known/workflow/v1/webhook/:token`, and the token in that URL is the only authorization performed for incoming requests resuming that webhook. This is convenient for prototypes and simple resume links because it avoids creating another route, but if you need stronger security, prefer [`createHook()`](/docs/api-reference/workflow/create-hook) behind your own route and authorize the request before calling [`resumeHook()`](/docs/api-reference/workflow-api/resume-hook) to avoid unauthenticated workflow resumptions.
18
+ </Callout>
19
+
16
20
  ```ts lineNumbers
17
21
  import { createWebhook } from "workflow"
18
22
 
@@ -221,6 +221,10 @@ While hooks are powerful, they require you to manually handle HTTP requests and
221
221
 
222
222
  When using Workflow SDK, webhooks are automatically wired up at `/.well-known/workflow/v1/webhook/:token` without any additional setup.
223
223
 
224
+ <Callout type="warn">
225
+ `createWebhook()` exposes a public route at `/.well-known/workflow/v1/webhook/:token`, and the token in that URL is the only authorization performed for incoming requests. This is convenient for prototypes and a simple developer experience because you can share the webhook URL (endpoint) without creating another route, but if you need stronger security, prefer [`createHook()`](/docs/api-reference/workflow/create-hook) behind your own route and authorize the request before calling [`resumeHook()`](/docs/api-reference/workflow-api/resume-hook) to avoid unauthenticated workflow resumptions.
226
+ </Callout>
227
+
224
228
  <Callout type="info">
225
229
  See the full API reference for [`createWebhook()`](/docs/api-reference/workflow/create-webhook) for all available options.
226
230
  </Callout>
@@ -190,7 +190,7 @@ async function doublePoint(point: Point) {
190
190
  ### Requirements
191
191
 
192
192
  <Callout type="warn">
193
- Both methods must be implemented as **static** methods on the class. Instance methods are not supported.
193
+ `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` must be implemented as **static** methods on the class. Defining them as instance methods is not supported.
194
194
  </Callout>
195
195
 
196
196
  - The data returned by `WORKFLOW_SERIALIZE` must itself be serializable (see [Supported Serializable Types](#supported-serializable-types))
@@ -205,9 +205,9 @@ The `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` methods run inside the workf
205
205
  Keep these methods simple and focused on data transformation only.
206
206
  </Callout>
207
207
 
208
- ### Complex Example
208
+ ### Instance Methods as Steps
209
209
 
210
- A class that uses Node.js APIs or other non-deterministic operations cannot be used directly inside a workflow function. The recommended approach is to make the class workflow-compatible by adding `"use step"` to its instance methods. The SWC compiler will strip the method bodies from the workflow bundle and replace them with proxy functions that invoke the method as a step — with full Node.js runtime access. The `this` context (the class instance) is automatically serialized and deserialized across the workflow/step boundary.
210
+ In practice, many classes have methods that need Node.js APIs, perform network calls, or interact with databases — operations that are not allowed in the `"use workflow"` execution context. You can make these methods workflow-compatible by adding `"use step"` to them. The SWC compiler will strip the method bodies from the workflow bundle and replace them with proxy functions that invoke the method as a step — with full Node.js runtime access. The `this` context (the class instance) is automatically serialized and deserialized across the workflow/step boundary.
211
211
 
212
212
  This requires the class to implement `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE`, so that the instance can be passed to the step execution context.
213
213
 
@@ -593,6 +593,7 @@ Stream errors don't trigger automatic retries for the producer step. Design your
593
593
  - [`sleep()` API Reference](/docs/api-reference/workflow/sleep) - Pause workflow execution for a duration
594
594
  - [`start()` API Reference](/docs/api-reference/workflow-api/start) - Start workflows and access the `Run` object
595
595
  - [`getRun()` API Reference](/docs/api-reference/workflow-api/get-run) - Retrieve runs and their streams later
596
+ - [world.streams](/docs/api-reference/workflow-api/world/streams) - Low-level stream read/write/close via World SDK
596
597
  - [DurableAgent](/docs/api-reference/workflow-ai/durable-agent) - AI agents with built-in streaming support
597
598
  - [Errors and Retries](/docs/foundations/errors-and-retries) - Understanding error handling and retry behavior
598
599
  - [Serialization](/docs/foundations/serialization) - Understanding what data types can be passed in workflows
@@ -15,7 +15,7 @@ import { File, Folder, Files } from "fumadocs-ui/components/files";
15
15
  This guide explores how JavaScript directives enable the Workflow SDK's execution model. For getting started with workflows, see the [getting started](/docs/getting-started) guides for your framework.
16
16
  </Callout>
17
17
 
18
- The Workflow Development Kit uses JavaScript directives (`"use workflow"` and `"use step"`) as the foundation for its durable execution model. Directives provide the compile-time semantic boundary necessary for workflows to suspend, resume, and maintain deterministic behavior across replays.
18
+ The Workflow SDK uses JavaScript directives (`"use workflow"` and `"use step"`) as the foundation for its durable execution model. Directives provide the compile-time semantic boundary necessary for workflows to suspend, resume, and maintain deterministic behavior across replays.
19
19
 
20
20
  This page explores how directives enable this execution model and the design principles that led us here.
21
21
 
@@ -339,7 +339,7 @@ This approach requires:
339
339
  - Storing/mutating class properties was not obvious (similar closure/mutation issues as the runtime-only approach)
340
340
  - Class-based syntax that doesn't feel "JavaScript native" to developers used to functional patterns
341
341
 
342
- As the JavaScript ecosystem has moved toward function-forward programming (exemplified by React's shift from class components to functions and hooks), requiring developers to use classes felt like a step backward and also didn't match our own personal taste as authors of the DevKit.
342
+ As the JavaScript ecosystem has moved toward function-forward programming (exemplified by React's shift from class components to functions and hooks), requiring developers to use classes felt like a step backward and also didn't match our own personal taste as authors of the SDK.
343
343
 
344
344
  **The core problem: Presents workflows as regular runtime code**
345
345
 
@@ -615,4 +615,4 @@ As TC39 members, we at Vercel are actively working with the standards body and b
615
615
 
616
616
  Directives aren't about syntax preference, they're about expressing semantic boundaries. `"use workflow"` tells the compiler, developer, and runtime that this code is deterministic, resumable, and sandboxed.
617
617
 
618
- This clarity enables the Workflow Development Kit to provide durable execution with familiar JavaScript patterns, while maintaining the compile-time guarantees necessary for reliable workflow orchestration.
618
+ This clarity enables the Workflow SDK to provide durable execution with familiar JavaScript patterns, while maintaining the compile-time guarantees necessary for reliable workflow orchestration.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/core",
3
- "version": "4.2.0-beta.74",
3
+ "version": "4.2.0-beta.76",
4
4
  "description": "Core runtime and engine for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -77,18 +77,20 @@
77
77
  "ms": "2.1.3",
78
78
  "nanoid": "5.1.6",
79
79
  "seedrandom": "3.0.5",
80
+ "semver": "7.7.4",
80
81
  "ulid": "~3.0.1",
81
82
  "zod": "4.3.6",
82
- "@workflow/errors": "4.1.0-beta.19",
83
+ "@workflow/errors": "4.1.0-beta.20",
83
84
  "@workflow/serde": "4.1.0-beta.2",
84
85
  "@workflow/utils": "4.1.0-beta.13",
85
- "@workflow/world": "4.1.0-beta.14",
86
- "@workflow/world-local": "4.1.0-beta.47",
87
- "@workflow/world-vercel": "4.1.0-beta.45"
86
+ "@workflow/world": "4.1.0-beta.15",
87
+ "@workflow/world-local": "4.1.0-beta.49",
88
+ "@workflow/world-vercel": "4.1.0-beta.47"
88
89
  },
89
90
  "devDependencies": {
90
91
  "@opentelemetry/api": "1.9.0",
91
92
  "@types/debug": "4.1.12",
93
+ "@types/semver": "7.7.1",
92
94
  "@types/node": "22.19.0",
93
95
  "@types/seedrandom": "3.0.8",
94
96
  "cross-env": "10.1.0",