@workflow/world-testing 5.0.0-beta.17 → 5.0.0-beta.19
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.
|
@@ -16321,7 +16321,7 @@ function requiresNewerWorld(v) {
|
|
|
16321
16321
|
return false;
|
|
16322
16322
|
return v > SPEC_VERSION_CURRENT2;
|
|
16323
16323
|
}
|
|
16324
|
-
var SPEC_VERSION_LEGACY2, SPEC_VERSION_SUPPORTS_EVENT_SOURCING2, SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT2, SPEC_VERSION_SUPPORTS_ATTRIBUTES2, SPEC_VERSION_CURRENT2;
|
|
16324
|
+
var SPEC_VERSION_LEGACY2, SPEC_VERSION_SUPPORTS_EVENT_SOURCING2, SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT2, SPEC_VERSION_SUPPORTS_ATTRIBUTES2, SPEC_VERSION_SUPPORTS_COMPRESSION2, SPEC_VERSION_CURRENT2;
|
|
16325
16325
|
var init_spec_version2 = __esm({
|
|
16326
16326
|
"../world/dist/spec-version.js"() {
|
|
16327
16327
|
"use strict";
|
|
@@ -16329,7 +16329,8 @@ var init_spec_version2 = __esm({
|
|
|
16329
16329
|
SPEC_VERSION_SUPPORTS_EVENT_SOURCING2 = 2;
|
|
16330
16330
|
SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT2 = 3;
|
|
16331
16331
|
SPEC_VERSION_SUPPORTS_ATTRIBUTES2 = 4;
|
|
16332
|
-
|
|
16332
|
+
SPEC_VERSION_SUPPORTS_COMPRESSION2 = 5;
|
|
16333
|
+
SPEC_VERSION_CURRENT2 = SPEC_VERSION_SUPPORTS_COMPRESSION2;
|
|
16333
16334
|
__name(isLegacySpecVersion2, "isLegacySpecVersion");
|
|
16334
16335
|
__name(requiresNewerWorld, "requiresNewerWorld");
|
|
16335
16336
|
}
|
|
@@ -16660,6 +16661,7 @@ __export(dist_exports, {
|
|
|
16660
16661
|
SPEC_VERSION_LEGACY: () => SPEC_VERSION_LEGACY2,
|
|
16661
16662
|
SPEC_VERSION_SUPPORTS_ATTRIBUTES: () => SPEC_VERSION_SUPPORTS_ATTRIBUTES2,
|
|
16662
16663
|
SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT: () => SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT2,
|
|
16664
|
+
SPEC_VERSION_SUPPORTS_COMPRESSION: () => SPEC_VERSION_SUPPORTS_COMPRESSION2,
|
|
16663
16665
|
SPEC_VERSION_SUPPORTS_EVENT_SOURCING: () => SPEC_VERSION_SUPPORTS_EVENT_SOURCING2,
|
|
16664
16666
|
SerializedDataSchema: () => SerializedDataSchema2,
|
|
16665
16667
|
StepInvokePayloadSchema: () => StepInvokePayloadSchema2,
|
|
@@ -17077,7 +17079,7 @@ var init_log_format2 = __esm({
|
|
|
17077
17079
|
function SemanticConvention2(...names) {
|
|
17078
17080
|
return (value) => Object.fromEntries(names.map((name) => [name, value]));
|
|
17079
17081
|
}
|
|
17080
|
-
var WorkflowName2, WorkflowOperation2, WorkflowRunId2, WorkflowRunStatus2, WorkflowStartedAt2, WorkflowEventsCount2, WorkflowArgumentsCount2, WorkflowResultType2, WorkflowTracePropagated2, WorkflowTraceMode2, WorkflowErrorName2, WorkflowErrorMessage2, WorkflowErrorCode2, WorkflowStepsCreated2, WorkflowHooksCreated2, WorkflowWaitsCreated2, StepName2, StepId2, StepAttempt2, StepStatus2, StepMaxRetries2, StepTracePropagated2, StepSkipped2, StepSkipReason2, StepArgumentsCount2, StepResultType2, StepErrorName2, StepErrorMessage2, StepFatalError2, StepRetryExhausted2, StepRetryTimeoutSeconds2, StepRetryWillRetry2, MessagingSystem2, MessagingDestinationName2, MessagingMessageId2, MessagingOperationType2, QueueOverheadMs2, DeploymentId2, HookToken2, HookId2, HookFound2, WebhookHandlersTriggered2, WorkflowSuspensionState2, WorkflowSuspensionHookCount2, WorkflowSuspensionStepCount2, WorkflowSuspensionWaitCount2, HttpRequestMethod2, UrlFull2, ServerAddress2, ServerPort2, HttpResponseStatusCode2, ErrorType2, WorldParseFormat2, WorkflowEventsPagesLoaded2, QueueDeserializeTimeMs2, QueueExecutionTimeMs2, QueueSerializeTimeMs2, PeerService2, RpcSystem2, RpcService2, RpcMethod2, ErrorRetryable2, ErrorCategory2;
|
|
17082
|
+
var WorkflowName2, WorkflowOperation2, WorkflowRunId2, WorkflowRunStatus2, WorkflowStartedAt2, WorkflowEventsCount2, WorkflowArgumentsCount2, WorkflowResultType2, WorkflowTracePropagated2, WorkflowTraceMode2, WorkflowErrorName2, WorkflowErrorMessage2, WorkflowErrorCode2, WorkflowStepsCreated2, WorkflowHooksCreated2, WorkflowWaitsCreated2, StepName2, StepId2, StepAttempt2, StepStatus2, StepMaxRetries2, StepTracePropagated2, StepSkipped2, StepSkipReason2, StepArgumentsCount2, StepResultType2, StepErrorName2, StepErrorMessage2, StepFatalError2, StepRetryExhausted2, StepRetryTimeoutSeconds2, StepRetryWillRetry2, MessagingSystem2, MessagingDestinationName2, MessagingMessageId2, MessagingOperationType2, QueueOverheadMs2, DeploymentId2, HookToken2, HookId2, HookFound2, WebhookHandlersTriggered2, WorkflowSuspensionState2, WorkflowSuspensionHookCount2, WorkflowSuspensionStepCount2, WorkflowSuspensionWaitCount2, HttpRequestMethod2, UrlFull2, ServerAddress2, ServerPort2, HttpResponseStatusCode2, ErrorType2, WorldParseFormat2, WorkflowEventsPagesLoaded2, QueueDeserializeTimeMs2, QueueExecutionTimeMs2, QueueSerializeTimeMs2, SerializationOperation2, SerializationCompressed2, SerializationCodec2, SerializationUncompressedBytes2, SerializationStoredBytes2, SerializationCompressionRatio2, PeerService2, RpcSystem2, RpcService2, RpcMethod2, ErrorRetryable2, ErrorCategory2;
|
|
17081
17083
|
var init_semantic_conventions2 = __esm({
|
|
17082
17084
|
"../core/dist/telemetry/semantic-conventions.js"() {
|
|
17083
17085
|
"use strict";
|
|
@@ -17139,6 +17141,12 @@ var init_semantic_conventions2 = __esm({
|
|
|
17139
17141
|
QueueDeserializeTimeMs2 = SemanticConvention2("workflow.queue.deserialize_time_ms");
|
|
17140
17142
|
QueueExecutionTimeMs2 = SemanticConvention2("workflow.queue.execution_time_ms");
|
|
17141
17143
|
QueueSerializeTimeMs2 = SemanticConvention2("workflow.queue.serialize_time_ms");
|
|
17144
|
+
SerializationOperation2 = SemanticConvention2("workflow.serialization.operation");
|
|
17145
|
+
SerializationCompressed2 = SemanticConvention2("workflow.serialization.compressed");
|
|
17146
|
+
SerializationCodec2 = SemanticConvention2("workflow.serialization.codec");
|
|
17147
|
+
SerializationUncompressedBytes2 = SemanticConvention2("workflow.serialization.uncompressed_bytes");
|
|
17148
|
+
SerializationStoredBytes2 = SemanticConvention2("workflow.serialization.stored_bytes");
|
|
17149
|
+
SerializationCompressionRatio2 = SemanticConvention2("workflow.serialization.compression_ratio");
|
|
17142
17150
|
PeerService2 = SemanticConvention2("peer.service");
|
|
17143
17151
|
RpcSystem2 = SemanticConvention2("rpc.system");
|
|
17144
17152
|
RpcService2 = SemanticConvention2("rpc.service");
|
|
@@ -19177,7 +19185,7 @@ var version4;
|
|
|
19177
19185
|
var init_version3 = __esm({
|
|
19178
19186
|
"../core/dist/version.js"() {
|
|
19179
19187
|
"use strict";
|
|
19180
|
-
version4 = "5.0.0-beta.
|
|
19188
|
+
version4 = "5.0.0-beta.19";
|
|
19181
19189
|
}
|
|
19182
19190
|
});
|
|
19183
19191
|
|
|
@@ -20911,7 +20919,11 @@ var init_types3 = __esm({
|
|
|
20911
20919
|
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
20912
20920
|
DEVALUE_V1: "devl",
|
|
20913
20921
|
/** Encrypted payload (inner payload has its own format prefix) */
|
|
20914
|
-
ENCRYPTED: "encr"
|
|
20922
|
+
ENCRYPTED: "encr",
|
|
20923
|
+
/** Gzip-compressed payload (inner payload has its own format prefix) */
|
|
20924
|
+
GZIP: "gzip",
|
|
20925
|
+
/** Zstandard-compressed payload (inner payload has its own format prefix) */
|
|
20926
|
+
ZSTD: "zstd"
|
|
20915
20927
|
};
|
|
20916
20928
|
}
|
|
20917
20929
|
});
|
|
@@ -21060,6 +21072,168 @@ var init_format2 = __esm({
|
|
|
21060
21072
|
}
|
|
21061
21073
|
});
|
|
21062
21074
|
|
|
21075
|
+
// ../core/dist/serialization/compression.js
|
|
21076
|
+
function isCompressionDisabledByEnv2() {
|
|
21077
|
+
try {
|
|
21078
|
+
return typeof process !== "undefined" && process.env?.WORKFLOW_DISABLE_COMPRESSION === "1";
|
|
21079
|
+
} catch {
|
|
21080
|
+
return false;
|
|
21081
|
+
}
|
|
21082
|
+
}
|
|
21083
|
+
function codecOverrideFromEnv2() {
|
|
21084
|
+
try {
|
|
21085
|
+
const v = process.env?.WORKFLOW_COMPRESSION_CODEC;
|
|
21086
|
+
return v === "gzip" || v === "zstd" ? v : void 0;
|
|
21087
|
+
} catch {
|
|
21088
|
+
return void 0;
|
|
21089
|
+
}
|
|
21090
|
+
}
|
|
21091
|
+
function getNodeZlib2() {
|
|
21092
|
+
try {
|
|
21093
|
+
return globalThis.process?.getBuiltinModule?.("node:zlib");
|
|
21094
|
+
} catch {
|
|
21095
|
+
return void 0;
|
|
21096
|
+
}
|
|
21097
|
+
}
|
|
21098
|
+
function isZstdAvailable2() {
|
|
21099
|
+
const z3 = getNodeZlib2();
|
|
21100
|
+
return typeof z3?.zstdCompressSync === "function" && typeof z3?.zstdDecompressSync === "function";
|
|
21101
|
+
}
|
|
21102
|
+
function isGzipAvailable2() {
|
|
21103
|
+
return typeof CompressionStream === "function" && typeof DecompressionStream === "function";
|
|
21104
|
+
}
|
|
21105
|
+
async function pipeThroughTransform2(data, transform3) {
|
|
21106
|
+
const writer = transform3.writable.getWriter();
|
|
21107
|
+
const writePromise = writer.write(data).then(() => writer.close());
|
|
21108
|
+
writePromise.catch(() => {
|
|
21109
|
+
});
|
|
21110
|
+
const chunks = [];
|
|
21111
|
+
let total = 0;
|
|
21112
|
+
const reader = transform3.readable.getReader();
|
|
21113
|
+
for (; ; ) {
|
|
21114
|
+
const { done, value } = await reader.read();
|
|
21115
|
+
if (done)
|
|
21116
|
+
break;
|
|
21117
|
+
chunks.push(value);
|
|
21118
|
+
total += value.length;
|
|
21119
|
+
}
|
|
21120
|
+
await writePromise;
|
|
21121
|
+
const out = new Uint8Array(total);
|
|
21122
|
+
let offset = 0;
|
|
21123
|
+
for (const chunk of chunks) {
|
|
21124
|
+
out.set(chunk, offset);
|
|
21125
|
+
offset += chunk.length;
|
|
21126
|
+
}
|
|
21127
|
+
return out;
|
|
21128
|
+
}
|
|
21129
|
+
async function gzipBytes2(data) {
|
|
21130
|
+
return pipeThroughTransform2(data, new CompressionStream("gzip"));
|
|
21131
|
+
}
|
|
21132
|
+
async function gunzipBytes2(data) {
|
|
21133
|
+
return pipeThroughTransform2(data, new DecompressionStream("gzip"));
|
|
21134
|
+
}
|
|
21135
|
+
function zstdBytes2(data) {
|
|
21136
|
+
const z3 = getNodeZlib2();
|
|
21137
|
+
const level = z3?.constants?.ZSTD_c_compressionLevel;
|
|
21138
|
+
const opts = level !== void 0 ? { params: { [level]: ZSTD_LEVEL2 } } : void 0;
|
|
21139
|
+
return new Uint8Array(z3.zstdCompressSync(data, opts));
|
|
21140
|
+
}
|
|
21141
|
+
function unzstdBytes2(data) {
|
|
21142
|
+
const z3 = getNodeZlib2();
|
|
21143
|
+
if (!z3?.zstdDecompressSync) {
|
|
21144
|
+
throw new Error("Compressed (zstd) workflow data encountered but node:zlib zstd support is not available in this runtime (requires Node.js 22.15+). In the browser, register a zstd decoder via registerZstdDecoder (serialization-format.ts).");
|
|
21145
|
+
}
|
|
21146
|
+
return new Uint8Array(z3.zstdDecompressSync(data));
|
|
21147
|
+
}
|
|
21148
|
+
function recordStats2(stats, codec3, uncompressedBytes, storedBytes) {
|
|
21149
|
+
if (!stats)
|
|
21150
|
+
return;
|
|
21151
|
+
stats.recorded = true;
|
|
21152
|
+
stats.compressed = codec3 !== "none";
|
|
21153
|
+
stats.codec = codec3;
|
|
21154
|
+
stats.uncompressedBytes = uncompressedBytes;
|
|
21155
|
+
stats.storedBytes = storedBytes;
|
|
21156
|
+
}
|
|
21157
|
+
function selectWriteCodec2() {
|
|
21158
|
+
const override = codecOverrideFromEnv2();
|
|
21159
|
+
if (override === "gzip")
|
|
21160
|
+
return isGzipAvailable2() ? "gzip" : "none";
|
|
21161
|
+
if (isZstdAvailable2())
|
|
21162
|
+
return "zstd";
|
|
21163
|
+
if (isGzipAvailable2())
|
|
21164
|
+
return "gzip";
|
|
21165
|
+
return "none";
|
|
21166
|
+
}
|
|
21167
|
+
async function compress2(data, enabled, stats) {
|
|
21168
|
+
if (!(data instanceof Uint8Array))
|
|
21169
|
+
return data;
|
|
21170
|
+
if (!enabled || data.length < COMPRESSION_MIN_BYTES2 || isCompressionDisabledByEnv2()) {
|
|
21171
|
+
recordStats2(stats, "none", data.length, data.length);
|
|
21172
|
+
return data;
|
|
21173
|
+
}
|
|
21174
|
+
const codec3 = selectWriteCodec2();
|
|
21175
|
+
if (codec3 === "none") {
|
|
21176
|
+
recordStats2(stats, "none", data.length, data.length);
|
|
21177
|
+
return data;
|
|
21178
|
+
}
|
|
21179
|
+
const compressed = codec3 === "zstd" ? zstdBytes2(data) : await gzipBytes2(data);
|
|
21180
|
+
const format = codec3 === "zstd" ? SerializationFormat2.ZSTD : SerializationFormat2.GZIP;
|
|
21181
|
+
const wrappedLength = 4 + compressed.length;
|
|
21182
|
+
if (wrappedLength >= data.length * (1 - COMPRESSION_MIN_SAVINGS_RATIO2)) {
|
|
21183
|
+
recordStats2(stats, "none", data.length, data.length);
|
|
21184
|
+
return data;
|
|
21185
|
+
}
|
|
21186
|
+
recordStats2(stats, codec3, data.length, wrappedLength);
|
|
21187
|
+
return encodeWithFormatPrefix2(format, compressed);
|
|
21188
|
+
}
|
|
21189
|
+
async function decompress2(data, stats) {
|
|
21190
|
+
if (!(data instanceof Uint8Array))
|
|
21191
|
+
return data;
|
|
21192
|
+
const prefix = peekFormatPrefix2(data);
|
|
21193
|
+
if (prefix === SerializationFormat2.ZSTD) {
|
|
21194
|
+
const { payload } = decodeFormatPrefix2(data);
|
|
21195
|
+
const inflated = unzstdBytes2(payload);
|
|
21196
|
+
recordStats2(stats, "zstd", inflated.length, data.length);
|
|
21197
|
+
return inflated;
|
|
21198
|
+
}
|
|
21199
|
+
if (prefix === SerializationFormat2.GZIP) {
|
|
21200
|
+
if (!isGzipAvailable2()) {
|
|
21201
|
+
throw new Error("Compressed (gzip) workflow data encountered but DecompressionStream is not available in this runtime. Node.js 18+, browsers, and edge runtimes all support it.");
|
|
21202
|
+
}
|
|
21203
|
+
const { payload } = decodeFormatPrefix2(data);
|
|
21204
|
+
const inflated = await gunzipBytes2(payload);
|
|
21205
|
+
recordStats2(stats, "gzip", inflated.length, data.length);
|
|
21206
|
+
return inflated;
|
|
21207
|
+
}
|
|
21208
|
+
recordStats2(stats, "none", data.length, data.length);
|
|
21209
|
+
return data;
|
|
21210
|
+
}
|
|
21211
|
+
var COMPRESSION_MIN_BYTES2, COMPRESSION_MIN_SAVINGS_RATIO2, ZSTD_LEVEL2;
|
|
21212
|
+
var init_compression2 = __esm({
|
|
21213
|
+
"../core/dist/serialization/compression.js"() {
|
|
21214
|
+
"use strict";
|
|
21215
|
+
init_format2();
|
|
21216
|
+
init_types3();
|
|
21217
|
+
COMPRESSION_MIN_BYTES2 = 1024;
|
|
21218
|
+
COMPRESSION_MIN_SAVINGS_RATIO2 = 0.05;
|
|
21219
|
+
ZSTD_LEVEL2 = 3;
|
|
21220
|
+
__name(isCompressionDisabledByEnv2, "isCompressionDisabledByEnv");
|
|
21221
|
+
__name(codecOverrideFromEnv2, "codecOverrideFromEnv");
|
|
21222
|
+
__name(getNodeZlib2, "getNodeZlib");
|
|
21223
|
+
__name(isZstdAvailable2, "isZstdAvailable");
|
|
21224
|
+
__name(isGzipAvailable2, "isGzipAvailable");
|
|
21225
|
+
__name(pipeThroughTransform2, "pipeThroughTransform");
|
|
21226
|
+
__name(gzipBytes2, "gzipBytes");
|
|
21227
|
+
__name(gunzipBytes2, "gunzipBytes");
|
|
21228
|
+
__name(zstdBytes2, "zstdBytes");
|
|
21229
|
+
__name(unzstdBytes2, "unzstdBytes");
|
|
21230
|
+
__name(recordStats2, "recordStats");
|
|
21231
|
+
__name(selectWriteCodec2, "selectWriteCodec");
|
|
21232
|
+
__name(compress2, "compress");
|
|
21233
|
+
__name(decompress2, "decompress");
|
|
21234
|
+
}
|
|
21235
|
+
});
|
|
21236
|
+
|
|
21063
21237
|
// ../core/dist/serialization/encryption.js
|
|
21064
21238
|
async function resolveEncryptionKey2(key) {
|
|
21065
21239
|
return typeof key === "function" ? key() : key;
|
|
@@ -21142,7 +21316,7 @@ var init_errors6 = __esm({
|
|
|
21142
21316
|
|
|
21143
21317
|
// ../core/dist/serialization/client.js
|
|
21144
21318
|
async function deserialize3(data, encryptionKey, options) {
|
|
21145
|
-
const decrypted = await decrypt4(data, encryptionKey);
|
|
21319
|
+
const decrypted = await decompress2(await decrypt4(data, encryptionKey), options?.compressionStats);
|
|
21146
21320
|
if (!(decrypted instanceof Uint8Array)) {
|
|
21147
21321
|
if (devalueCodec2.deserializeLegacy) {
|
|
21148
21322
|
return devalueCodec2.deserializeLegacy(decrypted, "client", options);
|
|
@@ -21160,6 +21334,7 @@ var init_client2 = __esm({
|
|
|
21160
21334
|
"use strict";
|
|
21161
21335
|
init_dist6();
|
|
21162
21336
|
init_codec_devalue2();
|
|
21337
|
+
init_compression2();
|
|
21163
21338
|
init_encryption4();
|
|
21164
21339
|
init_errors6();
|
|
21165
21340
|
init_format2();
|
|
@@ -21173,7 +21348,8 @@ async function serialize3(value, encryptionKey, options) {
|
|
|
21173
21348
|
try {
|
|
21174
21349
|
const payload = devalueCodec2.serialize(value, "step", options);
|
|
21175
21350
|
const prefixed = encodeWithFormatPrefix2(SerializationFormat2.DEVALUE_V1, payload);
|
|
21176
|
-
|
|
21351
|
+
const compressed = await compress2(prefixed, options?.compression === true, options?.compressionStats);
|
|
21352
|
+
return encrypt4(compressed, encryptionKey);
|
|
21177
21353
|
} catch (error95) {
|
|
21178
21354
|
rethrowIfRuntimeError2(error95);
|
|
21179
21355
|
const { message, hint: hint3 } = formatSerializationError2("step value", error95);
|
|
@@ -21181,7 +21357,7 @@ async function serialize3(value, encryptionKey, options) {
|
|
|
21181
21357
|
}
|
|
21182
21358
|
}
|
|
21183
21359
|
async function deserialize4(data, encryptionKey, options) {
|
|
21184
|
-
const decrypted = await decrypt4(data, encryptionKey);
|
|
21360
|
+
const decrypted = await decompress2(await decrypt4(data, encryptionKey), options?.compressionStats);
|
|
21185
21361
|
if (!(decrypted instanceof Uint8Array)) {
|
|
21186
21362
|
if (devalueCodec2.deserializeLegacy) {
|
|
21187
21363
|
return devalueCodec2.deserializeLegacy(decrypted, "step", options);
|
|
@@ -21199,6 +21375,7 @@ var init_step2 = __esm({
|
|
|
21199
21375
|
"use strict";
|
|
21200
21376
|
init_dist6();
|
|
21201
21377
|
init_codec_devalue2();
|
|
21378
|
+
init_compression2();
|
|
21202
21379
|
init_encryption4();
|
|
21203
21380
|
init_errors6();
|
|
21204
21381
|
init_format2();
|
|
@@ -23591,7 +23768,15 @@ var init_capabilities2 = __esm({
|
|
|
23591
23768
|
import_semver3 = __toESM(require_semver5(), 1);
|
|
23592
23769
|
init_serialization4();
|
|
23593
23770
|
FORMAT_VERSION_TABLE2 = [
|
|
23594
|
-
{ format: SerializationFormat2.ENCRYPTED, minVersion: "4.2.0-beta.64" }
|
|
23771
|
+
{ format: SerializationFormat2.ENCRYPTED, minVersion: "4.2.0-beta.64" },
|
|
23772
|
+
// TODO(release): verify this matches the actual version that ships payload
|
|
23773
|
+
// compression. If a "Version Packages (beta)" PR merges before this change,
|
|
23774
|
+
// bump to the next beta. A too-low cutoff makes new producers write
|
|
23775
|
+
// compressed payloads to consumers that cannot decompress them; too-high
|
|
23776
|
+
// merely delays the optimization (safe). gzip and zstd ship together, so
|
|
23777
|
+
// they share a min version — a run that can read one can read both.
|
|
23778
|
+
{ format: SerializationFormat2.GZIP, minVersion: "5.0.0-beta.18" },
|
|
23779
|
+
{ format: SerializationFormat2.ZSTD, minVersion: "5.0.0-beta.18" }
|
|
23595
23780
|
// Future entries:
|
|
23596
23781
|
// { format: SerializationFormat.CBOR, minVersion: '5.x.y' },
|
|
23597
23782
|
// { format: SerializationFormat.ENCRYPTED_V2, minVersion: '5.x.y' },
|
|
@@ -24797,9 +24982,10 @@ async function resumeHook2(tokenOrHook, payload, encryptionKeyOverride) {
|
|
|
24797
24982
|
if (!capabilities.supportedFormats.has(SerializationFormat2.ENCRYPTED)) {
|
|
24798
24983
|
encryptionKey = void 0;
|
|
24799
24984
|
}
|
|
24985
|
+
const compression = (workflowRun.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2 && capabilities.supportedFormats.has(SerializationFormat2.GZIP);
|
|
24800
24986
|
const ops = [];
|
|
24801
24987
|
const v1Compat = isLegacySpecVersion2(hook.specVersion);
|
|
24802
|
-
const dehydratedPayload = await dehydrateStepReturnValue2(payload, hook.runId, encryptionKey, ops, globalThis, v1Compat, capabilities.framedByteStreams);
|
|
24988
|
+
const dehydratedPayload = await dehydrateStepReturnValue2(payload, hook.runId, encryptionKey, ops, globalThis, v1Compat, capabilities.framedByteStreams, compression);
|
|
24803
24989
|
safeWaitUntil2(Promise.all(ops), (err) => {
|
|
24804
24990
|
if (err === void 0)
|
|
24805
24991
|
return;
|
|
@@ -24921,6 +25107,26 @@ function unwrapSerializationCause2(error95) {
|
|
|
24921
25107
|
}
|
|
24922
25108
|
return error95;
|
|
24923
25109
|
}
|
|
25110
|
+
async function recordCompression2(stats, operation) {
|
|
25111
|
+
if (!stats.recorded)
|
|
25112
|
+
return;
|
|
25113
|
+
try {
|
|
25114
|
+
const span = await getActiveSpan3();
|
|
25115
|
+
if (!span)
|
|
25116
|
+
return;
|
|
25117
|
+
const uncompressedBytes = stats.uncompressedBytes ?? 0;
|
|
25118
|
+
const storedBytes = stats.storedBytes ?? 0;
|
|
25119
|
+
span.setAttributes({
|
|
25120
|
+
...SerializationOperation2(operation),
|
|
25121
|
+
...SerializationCompressed2(stats.compressed ?? false),
|
|
25122
|
+
...SerializationCodec2(stats.codec ?? "none"),
|
|
25123
|
+
...SerializationUncompressedBytes2(uncompressedBytes),
|
|
25124
|
+
...SerializationStoredBytes2(storedBytes),
|
|
25125
|
+
...stats.compressed && uncompressedBytes > 0 ? SerializationCompressionRatio2(1 - storedBytes / uncompressedBytes) : {}
|
|
25126
|
+
});
|
|
25127
|
+
} catch {
|
|
25128
|
+
}
|
|
25129
|
+
}
|
|
24924
25130
|
function getSerializeStream2(reducers, cryptoKey) {
|
|
24925
25131
|
const encoder3 = new TextEncoder();
|
|
24926
25132
|
const keyState = { resolved: false, key: void 0 };
|
|
@@ -25970,7 +26176,10 @@ async function maybeDecrypt2(data, key) {
|
|
|
25970
26176
|
return decrypt4(data, key);
|
|
25971
26177
|
}
|
|
25972
26178
|
async function hydrateWorkflowArguments(value, _runId, key, global2 = globalThis, extraRevivers = {}) {
|
|
25973
|
-
|
|
26179
|
+
const compressionStats = {};
|
|
26180
|
+
const inflated = await decompress2(await maybeDecrypt2(value, key), compressionStats);
|
|
26181
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26182
|
+
return deserialize5(inflated, {
|
|
25974
26183
|
global: global2,
|
|
25975
26184
|
extraRevivers: {
|
|
25976
26185
|
...getStreamAndRequestRevivers2(getWorkflowRevivers(global2)),
|
|
@@ -25978,16 +26187,21 @@ async function hydrateWorkflowArguments(value, _runId, key, global2 = globalThis
|
|
|
25978
26187
|
}
|
|
25979
26188
|
});
|
|
25980
26189
|
}
|
|
25981
|
-
async function dehydrateWorkflowReturnValue(value, _runId, key, global2 = globalThis, v1Compat = false) {
|
|
26190
|
+
async function dehydrateWorkflowReturnValue(value, _runId, key, global2 = globalThis, v1Compat = false, compression = false) {
|
|
25982
26191
|
if (v1Compat) {
|
|
25983
26192
|
const str = stringify2(value, getWorkflowReducers2(global2));
|
|
25984
26193
|
return revive2(str);
|
|
25985
26194
|
}
|
|
25986
26195
|
try {
|
|
25987
|
-
|
|
26196
|
+
const compressionStats = {};
|
|
26197
|
+
const result = await serialize3(value, key, {
|
|
25988
26198
|
global: global2,
|
|
25989
|
-
extraReducers: getStreamAndRequestReducers2(getWorkflowReducers2(global2))
|
|
26199
|
+
extraReducers: getStreamAndRequestReducers2(getWorkflowReducers2(global2)),
|
|
26200
|
+
compression,
|
|
26201
|
+
compressionStats
|
|
25990
26202
|
});
|
|
26203
|
+
await recordCompression2(compressionStats, "serialize");
|
|
26204
|
+
return result;
|
|
25991
26205
|
} catch (error95) {
|
|
25992
26206
|
const cause = unwrapSerializationCause2(error95);
|
|
25993
26207
|
const { message, hint: hint3 } = formatSerializationError2("workflow return value", cause);
|
|
@@ -25995,24 +26209,33 @@ async function dehydrateWorkflowReturnValue(value, _runId, key, global2 = global
|
|
|
25995
26209
|
}
|
|
25996
26210
|
}
|
|
25997
26211
|
async function hydrateWorkflowReturnValue2(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
25998
|
-
|
|
26212
|
+
const compressionStats = {};
|
|
26213
|
+
const result = await deserialize3(value, key, {
|
|
25999
26214
|
global: global2,
|
|
26000
26215
|
extraRevivers: {
|
|
26001
26216
|
...getStreamAndRequestRevivers2(getExternalRevivers2(global2, ops, runId, key)),
|
|
26002
26217
|
...extraRevivers
|
|
26003
|
-
}
|
|
26218
|
+
},
|
|
26219
|
+
compressionStats
|
|
26004
26220
|
});
|
|
26221
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26222
|
+
return result;
|
|
26005
26223
|
}
|
|
26006
|
-
async function dehydrateStepArguments2(value, _runId, key, global2 = globalThis, v1Compat = false) {
|
|
26224
|
+
async function dehydrateStepArguments2(value, _runId, key, global2 = globalThis, v1Compat = false, compression = false) {
|
|
26007
26225
|
if (v1Compat) {
|
|
26008
26226
|
const str = stringify2(value, getWorkflowReducers2(global2));
|
|
26009
26227
|
return revive2(str);
|
|
26010
26228
|
}
|
|
26011
26229
|
try {
|
|
26012
|
-
|
|
26230
|
+
const compressionStats = {};
|
|
26231
|
+
const result = await serialize3(value, key, {
|
|
26013
26232
|
global: global2,
|
|
26014
|
-
extraReducers: getStreamAndRequestReducers2(getWorkflowReducers2(global2))
|
|
26233
|
+
extraReducers: getStreamAndRequestReducers2(getWorkflowReducers2(global2)),
|
|
26234
|
+
compression,
|
|
26235
|
+
compressionStats
|
|
26015
26236
|
});
|
|
26237
|
+
await recordCompression2(compressionStats, "serialize");
|
|
26238
|
+
return result;
|
|
26016
26239
|
} catch (error95) {
|
|
26017
26240
|
const cause = unwrapSerializationCause2(error95);
|
|
26018
26241
|
const { message, hint: hint3 } = formatSerializationError2("step arguments", cause);
|
|
@@ -26020,36 +26243,49 @@ async function dehydrateStepArguments2(value, _runId, key, global2 = globalThis,
|
|
|
26020
26243
|
}
|
|
26021
26244
|
}
|
|
26022
26245
|
async function hydrateStepArguments2(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}, deploymentId) {
|
|
26023
|
-
|
|
26246
|
+
const compressionStats = {};
|
|
26247
|
+
const result = await deserialize4(value, key, {
|
|
26024
26248
|
global: global2,
|
|
26025
26249
|
extraRevivers: {
|
|
26026
26250
|
...getStreamAndRequestRevivers2(getStepRevivers2(global2, ops, runId, key, deploymentId)),
|
|
26027
26251
|
...extraRevivers
|
|
26028
|
-
}
|
|
26252
|
+
},
|
|
26253
|
+
compressionStats
|
|
26029
26254
|
});
|
|
26255
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26256
|
+
return result;
|
|
26030
26257
|
}
|
|
26031
|
-
async function dehydrateStepReturnValue2(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false) {
|
|
26258
|
+
async function dehydrateStepReturnValue2(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false, compression = false) {
|
|
26032
26259
|
if (v1Compat) {
|
|
26033
26260
|
const str = stringify2(value, getStepReducers2(global2, ops, runId, key, framedByteStreams));
|
|
26034
26261
|
return revive2(str);
|
|
26035
26262
|
}
|
|
26036
26263
|
try {
|
|
26037
|
-
|
|
26264
|
+
const compressionStats = {};
|
|
26265
|
+
const result = await serialize3(value, key, {
|
|
26038
26266
|
global: global2,
|
|
26039
|
-
extraReducers: getStreamAndRequestReducers2(getStepReducers2(global2, ops, runId, key, framedByteStreams))
|
|
26267
|
+
extraReducers: getStreamAndRequestReducers2(getStepReducers2(global2, ops, runId, key, framedByteStreams)),
|
|
26268
|
+
compression,
|
|
26269
|
+
compressionStats
|
|
26040
26270
|
});
|
|
26271
|
+
await recordCompression2(compressionStats, "serialize");
|
|
26272
|
+
return result;
|
|
26041
26273
|
} catch (error95) {
|
|
26042
26274
|
const cause = unwrapSerializationCause2(error95);
|
|
26043
26275
|
const { message, hint: hint3 } = formatSerializationError2("step return value", cause);
|
|
26044
26276
|
throw new SerializationError2(message, { hint: hint3, cause });
|
|
26045
26277
|
}
|
|
26046
26278
|
}
|
|
26047
|
-
async function dehydrateStepError(value, runId, key, ops = [], global2 = globalThis) {
|
|
26279
|
+
async function dehydrateStepError(value, runId, key, ops = [], global2 = globalThis, compression = false) {
|
|
26048
26280
|
try {
|
|
26049
26281
|
const str = stringify2(value, getStepReducers2(global2, ops, runId, key));
|
|
26050
26282
|
const payload = new TextEncoder().encode(str);
|
|
26051
26283
|
const serialized = encodeWithFormatPrefix2(SerializationFormat2.DEVALUE_V1, payload);
|
|
26052
|
-
|
|
26284
|
+
const compressionStats = {};
|
|
26285
|
+
const compressed = await compress2(serialized, compression, compressionStats);
|
|
26286
|
+
const encrypted = await maybeEncrypt(compressed, key);
|
|
26287
|
+
await recordCompression2(compressionStats, "serialize");
|
|
26288
|
+
return encrypted;
|
|
26053
26289
|
} catch (error95) {
|
|
26054
26290
|
const cause = unwrapSerializationCause2(error95);
|
|
26055
26291
|
const { message, hint: hint3 } = formatSerializationError2("step error", cause);
|
|
@@ -26057,7 +26293,9 @@ async function dehydrateStepError(value, runId, key, ops = [], global2 = globalT
|
|
|
26057
26293
|
}
|
|
26058
26294
|
}
|
|
26059
26295
|
async function hydrateStepError(value, _runId, key, global2 = globalThis, extraRevivers = {}) {
|
|
26060
|
-
const
|
|
26296
|
+
const compressionStats = {};
|
|
26297
|
+
const decrypted = await decompress2(await maybeDecrypt2(value, key), compressionStats);
|
|
26298
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26061
26299
|
if (!(decrypted instanceof Uint8Array)) {
|
|
26062
26300
|
return unflatten2(decrypted, {
|
|
26063
26301
|
...getWorkflowRevivers(global2),
|
|
@@ -26074,12 +26312,16 @@ async function hydrateStepError(value, _runId, key, global2 = globalThis, extraR
|
|
|
26074
26312
|
}
|
|
26075
26313
|
throw new Error(`Unsupported serialization format: ${format}`);
|
|
26076
26314
|
}
|
|
26077
|
-
async function dehydrateRunError(value, _runId, key, global2 = globalThis) {
|
|
26315
|
+
async function dehydrateRunError(value, _runId, key, global2 = globalThis, compression = false) {
|
|
26078
26316
|
try {
|
|
26079
26317
|
const str = stringify2(value, getWorkflowReducers2(global2));
|
|
26080
26318
|
const payload = new TextEncoder().encode(str);
|
|
26081
26319
|
const serialized = encodeWithFormatPrefix2(SerializationFormat2.DEVALUE_V1, payload);
|
|
26082
|
-
|
|
26320
|
+
const compressionStats = {};
|
|
26321
|
+
const compressed = await compress2(serialized, compression, compressionStats);
|
|
26322
|
+
const encrypted = await maybeEncrypt(compressed, key);
|
|
26323
|
+
await recordCompression2(compressionStats, "serialize");
|
|
26324
|
+
return encrypted;
|
|
26083
26325
|
} catch (error95) {
|
|
26084
26326
|
const cause = unwrapSerializationCause2(error95);
|
|
26085
26327
|
const { message, hint: hint3 } = formatSerializationError2("run error", cause);
|
|
@@ -26087,7 +26329,9 @@ async function dehydrateRunError(value, _runId, key, global2 = globalThis) {
|
|
|
26087
26329
|
}
|
|
26088
26330
|
}
|
|
26089
26331
|
async function hydrateRunError2(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
26090
|
-
const
|
|
26332
|
+
const compressionStats = {};
|
|
26333
|
+
const decrypted = await decompress2(await maybeDecrypt2(value, key), compressionStats);
|
|
26334
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26091
26335
|
if (!(decrypted instanceof Uint8Array)) {
|
|
26092
26336
|
return unflatten2(decrypted, {
|
|
26093
26337
|
...getExternalRevivers2(global2, ops, runId, key),
|
|
@@ -26105,7 +26349,10 @@ async function hydrateRunError2(value, runId, key, ops = [], global2 = globalThi
|
|
|
26105
26349
|
throw new Error(`Unsupported serialization format: ${format}`);
|
|
26106
26350
|
}
|
|
26107
26351
|
async function hydrateStepReturnValue(value, _runId, key, global2 = globalThis, extraRevivers = {}) {
|
|
26108
|
-
|
|
26352
|
+
const compressionStats = {};
|
|
26353
|
+
const inflated = await decompress2(await maybeDecrypt2(value, key), compressionStats);
|
|
26354
|
+
await recordCompression2(compressionStats, "deserialize");
|
|
26355
|
+
return deserialize5(inflated, {
|
|
26109
26356
|
global: global2,
|
|
26110
26357
|
extraRevivers: {
|
|
26111
26358
|
...getStreamAndRequestRevivers2(getWorkflowRevivers(global2)),
|
|
@@ -26143,6 +26390,7 @@ var init_serialization4 = __esm({
|
|
|
26143
26390
|
init_private2();
|
|
26144
26391
|
init_get_world_lazy2();
|
|
26145
26392
|
init_client2();
|
|
26393
|
+
init_compression2();
|
|
26146
26394
|
init_encryption4();
|
|
26147
26395
|
init_errors6();
|
|
26148
26396
|
init_format2();
|
|
@@ -26154,12 +26402,15 @@ var init_serialization4 = __esm({
|
|
|
26154
26402
|
init_workflow2();
|
|
26155
26403
|
init_context_storage2();
|
|
26156
26404
|
init_symbols2();
|
|
26405
|
+
init_semantic_conventions2();
|
|
26406
|
+
init_telemetry2();
|
|
26157
26407
|
init_util4();
|
|
26158
26408
|
init_abort_controller2();
|
|
26159
26409
|
defaultUlid2 = monotonicFactory2();
|
|
26160
26410
|
__name(getStreamType2, "getStreamType");
|
|
26161
26411
|
FRAME_HEADER_SIZE2 = 4;
|
|
26162
26412
|
__name(unwrapSerializationCause2, "unwrapSerializationCause");
|
|
26413
|
+
__name(recordCompression2, "recordCompression");
|
|
26163
26414
|
__name(getSerializeStream2, "getSerializeStream");
|
|
26164
26415
|
__name(getDeserializeStream2, "getDeserializeStream");
|
|
26165
26416
|
MAX_FRAME_SIZE2 = 1e8;
|
|
@@ -71951,6 +72202,7 @@ var SPEC_VERSION_LEGACY;
|
|
|
71951
72202
|
var SPEC_VERSION_SUPPORTS_EVENT_SOURCING;
|
|
71952
72203
|
var SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT;
|
|
71953
72204
|
var SPEC_VERSION_SUPPORTS_ATTRIBUTES;
|
|
72205
|
+
var SPEC_VERSION_SUPPORTS_COMPRESSION;
|
|
71954
72206
|
var SPEC_VERSION_CURRENT;
|
|
71955
72207
|
var init_spec_version = __esm2({
|
|
71956
72208
|
"../world/dist/spec-version.js"() {
|
|
@@ -71959,7 +72211,8 @@ var init_spec_version = __esm2({
|
|
|
71959
72211
|
SPEC_VERSION_SUPPORTS_EVENT_SOURCING = 2;
|
|
71960
72212
|
SPEC_VERSION_SUPPORTS_CBOR_QUEUE_TRANSPORT = 3;
|
|
71961
72213
|
SPEC_VERSION_SUPPORTS_ATTRIBUTES = 4;
|
|
71962
|
-
|
|
72214
|
+
SPEC_VERSION_SUPPORTS_COMPRESSION = 5;
|
|
72215
|
+
SPEC_VERSION_CURRENT = SPEC_VERSION_SUPPORTS_COMPRESSION;
|
|
71963
72216
|
__name2(isLegacySpecVersion, "isLegacySpecVersion");
|
|
71964
72217
|
}
|
|
71965
72218
|
});
|
|
@@ -73766,7 +74019,11 @@ var init_types = __esm2({
|
|
|
73766
74019
|
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
73767
74020
|
DEVALUE_V1: "devl",
|
|
73768
74021
|
/** Encrypted payload (inner payload has its own format prefix) */
|
|
73769
|
-
ENCRYPTED: "encr"
|
|
74022
|
+
ENCRYPTED: "encr",
|
|
74023
|
+
/** Gzip-compressed payload (inner payload has its own format prefix) */
|
|
74024
|
+
GZIP: "gzip",
|
|
74025
|
+
/** Zstandard-compressed payload (inner payload has its own format prefix) */
|
|
74026
|
+
ZSTD: "zstd"
|
|
73770
74027
|
};
|
|
73771
74028
|
}
|
|
73772
74029
|
});
|
|
@@ -73928,6 +74185,179 @@ var init_format = __esm2({
|
|
|
73928
74185
|
__name2(decodeFormatPrefix, "decodeFormatPrefix");
|
|
73929
74186
|
}
|
|
73930
74187
|
});
|
|
74188
|
+
function isCompressionDisabledByEnv() {
|
|
74189
|
+
try {
|
|
74190
|
+
return typeof process !== "undefined" && process.env?.WORKFLOW_DISABLE_COMPRESSION === "1";
|
|
74191
|
+
} catch {
|
|
74192
|
+
return false;
|
|
74193
|
+
}
|
|
74194
|
+
}
|
|
74195
|
+
__name(isCompressionDisabledByEnv, "isCompressionDisabledByEnv");
|
|
74196
|
+
function codecOverrideFromEnv() {
|
|
74197
|
+
try {
|
|
74198
|
+
const v = process.env?.WORKFLOW_COMPRESSION_CODEC;
|
|
74199
|
+
return v === "gzip" || v === "zstd" ? v : void 0;
|
|
74200
|
+
} catch {
|
|
74201
|
+
return void 0;
|
|
74202
|
+
}
|
|
74203
|
+
}
|
|
74204
|
+
__name(codecOverrideFromEnv, "codecOverrideFromEnv");
|
|
74205
|
+
function getNodeZlib() {
|
|
74206
|
+
try {
|
|
74207
|
+
return globalThis.process?.getBuiltinModule?.("node:zlib");
|
|
74208
|
+
} catch {
|
|
74209
|
+
return void 0;
|
|
74210
|
+
}
|
|
74211
|
+
}
|
|
74212
|
+
__name(getNodeZlib, "getNodeZlib");
|
|
74213
|
+
function isZstdAvailable() {
|
|
74214
|
+
const z22 = getNodeZlib();
|
|
74215
|
+
return typeof z22?.zstdCompressSync === "function" && typeof z22?.zstdDecompressSync === "function";
|
|
74216
|
+
}
|
|
74217
|
+
__name(isZstdAvailable, "isZstdAvailable");
|
|
74218
|
+
function isGzipAvailable() {
|
|
74219
|
+
return typeof CompressionStream === "function" && typeof DecompressionStream === "function";
|
|
74220
|
+
}
|
|
74221
|
+
__name(isGzipAvailable, "isGzipAvailable");
|
|
74222
|
+
async function pipeThroughTransform(data, transform22) {
|
|
74223
|
+
const writer = transform22.writable.getWriter();
|
|
74224
|
+
const writePromise = writer.write(data).then(() => writer.close());
|
|
74225
|
+
writePromise.catch(() => {
|
|
74226
|
+
});
|
|
74227
|
+
const chunks = [];
|
|
74228
|
+
let total = 0;
|
|
74229
|
+
const reader = transform22.readable.getReader();
|
|
74230
|
+
for (; ; ) {
|
|
74231
|
+
const { done, value } = await reader.read();
|
|
74232
|
+
if (done) break;
|
|
74233
|
+
chunks.push(value);
|
|
74234
|
+
total += value.length;
|
|
74235
|
+
}
|
|
74236
|
+
await writePromise;
|
|
74237
|
+
const out = new Uint8Array(total);
|
|
74238
|
+
let offset = 0;
|
|
74239
|
+
for (const chunk of chunks) {
|
|
74240
|
+
out.set(chunk, offset);
|
|
74241
|
+
offset += chunk.length;
|
|
74242
|
+
}
|
|
74243
|
+
return out;
|
|
74244
|
+
}
|
|
74245
|
+
__name(pipeThroughTransform, "pipeThroughTransform");
|
|
74246
|
+
async function gzipBytes(data) {
|
|
74247
|
+
return pipeThroughTransform(data, new CompressionStream("gzip"));
|
|
74248
|
+
}
|
|
74249
|
+
__name(gzipBytes, "gzipBytes");
|
|
74250
|
+
async function gunzipBytes(data) {
|
|
74251
|
+
return pipeThroughTransform(data, new DecompressionStream("gzip"));
|
|
74252
|
+
}
|
|
74253
|
+
__name(gunzipBytes, "gunzipBytes");
|
|
74254
|
+
function zstdBytes(data) {
|
|
74255
|
+
const z22 = getNodeZlib();
|
|
74256
|
+
const level = z22?.constants?.ZSTD_c_compressionLevel;
|
|
74257
|
+
const opts = level !== void 0 ? {
|
|
74258
|
+
params: {
|
|
74259
|
+
[level]: ZSTD_LEVEL
|
|
74260
|
+
}
|
|
74261
|
+
} : void 0;
|
|
74262
|
+
return new Uint8Array(z22.zstdCompressSync(data, opts));
|
|
74263
|
+
}
|
|
74264
|
+
__name(zstdBytes, "zstdBytes");
|
|
74265
|
+
function unzstdBytes(data) {
|
|
74266
|
+
const z22 = getNodeZlib();
|
|
74267
|
+
if (!z22?.zstdDecompressSync) {
|
|
74268
|
+
throw new Error("Compressed (zstd) workflow data encountered but node:zlib zstd support is not available in this runtime (requires Node.js 22.15+). In the browser, register a zstd decoder via registerZstdDecoder (serialization-format.ts).");
|
|
74269
|
+
}
|
|
74270
|
+
return new Uint8Array(z22.zstdDecompressSync(data));
|
|
74271
|
+
}
|
|
74272
|
+
__name(unzstdBytes, "unzstdBytes");
|
|
74273
|
+
function recordStats(stats, codec22, uncompressedBytes, storedBytes) {
|
|
74274
|
+
if (!stats) return;
|
|
74275
|
+
stats.recorded = true;
|
|
74276
|
+
stats.compressed = codec22 !== "none";
|
|
74277
|
+
stats.codec = codec22;
|
|
74278
|
+
stats.uncompressedBytes = uncompressedBytes;
|
|
74279
|
+
stats.storedBytes = storedBytes;
|
|
74280
|
+
}
|
|
74281
|
+
__name(recordStats, "recordStats");
|
|
74282
|
+
function selectWriteCodec() {
|
|
74283
|
+
const override = codecOverrideFromEnv();
|
|
74284
|
+
if (override === "gzip") return isGzipAvailable() ? "gzip" : "none";
|
|
74285
|
+
if (isZstdAvailable()) return "zstd";
|
|
74286
|
+
if (isGzipAvailable()) return "gzip";
|
|
74287
|
+
return "none";
|
|
74288
|
+
}
|
|
74289
|
+
__name(selectWriteCodec, "selectWriteCodec");
|
|
74290
|
+
async function compress(data, enabled, stats) {
|
|
74291
|
+
if (!(data instanceof Uint8Array)) return data;
|
|
74292
|
+
if (!enabled || data.length < COMPRESSION_MIN_BYTES || isCompressionDisabledByEnv()) {
|
|
74293
|
+
recordStats(stats, "none", data.length, data.length);
|
|
74294
|
+
return data;
|
|
74295
|
+
}
|
|
74296
|
+
const codec22 = selectWriteCodec();
|
|
74297
|
+
if (codec22 === "none") {
|
|
74298
|
+
recordStats(stats, "none", data.length, data.length);
|
|
74299
|
+
return data;
|
|
74300
|
+
}
|
|
74301
|
+
const compressed = codec22 === "zstd" ? zstdBytes(data) : await gzipBytes(data);
|
|
74302
|
+
const format = codec22 === "zstd" ? SerializationFormat.ZSTD : SerializationFormat.GZIP;
|
|
74303
|
+
const wrappedLength = 4 + compressed.length;
|
|
74304
|
+
if (wrappedLength >= data.length * (1 - COMPRESSION_MIN_SAVINGS_RATIO)) {
|
|
74305
|
+
recordStats(stats, "none", data.length, data.length);
|
|
74306
|
+
return data;
|
|
74307
|
+
}
|
|
74308
|
+
recordStats(stats, codec22, data.length, wrappedLength);
|
|
74309
|
+
return encodeWithFormatPrefix(format, compressed);
|
|
74310
|
+
}
|
|
74311
|
+
__name(compress, "compress");
|
|
74312
|
+
async function decompress(data, stats) {
|
|
74313
|
+
if (!(data instanceof Uint8Array)) return data;
|
|
74314
|
+
const prefix = peekFormatPrefix(data);
|
|
74315
|
+
if (prefix === SerializationFormat.ZSTD) {
|
|
74316
|
+
const { payload } = decodeFormatPrefix(data);
|
|
74317
|
+
const inflated = unzstdBytes(payload);
|
|
74318
|
+
recordStats(stats, "zstd", inflated.length, data.length);
|
|
74319
|
+
return inflated;
|
|
74320
|
+
}
|
|
74321
|
+
if (prefix === SerializationFormat.GZIP) {
|
|
74322
|
+
if (!isGzipAvailable()) {
|
|
74323
|
+
throw new Error("Compressed (gzip) workflow data encountered but DecompressionStream is not available in this runtime. Node.js 18+, browsers, and edge runtimes all support it.");
|
|
74324
|
+
}
|
|
74325
|
+
const { payload } = decodeFormatPrefix(data);
|
|
74326
|
+
const inflated = await gunzipBytes(payload);
|
|
74327
|
+
recordStats(stats, "gzip", inflated.length, data.length);
|
|
74328
|
+
return inflated;
|
|
74329
|
+
}
|
|
74330
|
+
recordStats(stats, "none", data.length, data.length);
|
|
74331
|
+
return data;
|
|
74332
|
+
}
|
|
74333
|
+
__name(decompress, "decompress");
|
|
74334
|
+
var COMPRESSION_MIN_BYTES;
|
|
74335
|
+
var COMPRESSION_MIN_SAVINGS_RATIO;
|
|
74336
|
+
var ZSTD_LEVEL;
|
|
74337
|
+
var init_compression = __esm2({
|
|
74338
|
+
"../core/dist/serialization/compression.js"() {
|
|
74339
|
+
"use strict";
|
|
74340
|
+
init_format();
|
|
74341
|
+
init_types();
|
|
74342
|
+
COMPRESSION_MIN_BYTES = 1024;
|
|
74343
|
+
COMPRESSION_MIN_SAVINGS_RATIO = 0.05;
|
|
74344
|
+
ZSTD_LEVEL = 3;
|
|
74345
|
+
__name2(isCompressionDisabledByEnv, "isCompressionDisabledByEnv");
|
|
74346
|
+
__name2(codecOverrideFromEnv, "codecOverrideFromEnv");
|
|
74347
|
+
__name2(getNodeZlib, "getNodeZlib");
|
|
74348
|
+
__name2(isZstdAvailable, "isZstdAvailable");
|
|
74349
|
+
__name2(isGzipAvailable, "isGzipAvailable");
|
|
74350
|
+
__name2(pipeThroughTransform, "pipeThroughTransform");
|
|
74351
|
+
__name2(gzipBytes, "gzipBytes");
|
|
74352
|
+
__name2(gunzipBytes, "gunzipBytes");
|
|
74353
|
+
__name2(zstdBytes, "zstdBytes");
|
|
74354
|
+
__name2(unzstdBytes, "unzstdBytes");
|
|
74355
|
+
__name2(recordStats, "recordStats");
|
|
74356
|
+
__name2(selectWriteCodec, "selectWriteCodec");
|
|
74357
|
+
__name2(compress, "compress");
|
|
74358
|
+
__name2(decompress, "decompress");
|
|
74359
|
+
}
|
|
74360
|
+
});
|
|
73931
74361
|
async function resolveEncryptionKey(key) {
|
|
73932
74362
|
return typeof key === "function" ? key() : key;
|
|
73933
74363
|
}
|
|
@@ -74401,6 +74831,12 @@ var WorkflowEventsPagesLoaded;
|
|
|
74401
74831
|
var QueueDeserializeTimeMs;
|
|
74402
74832
|
var QueueExecutionTimeMs;
|
|
74403
74833
|
var QueueSerializeTimeMs;
|
|
74834
|
+
var SerializationOperation;
|
|
74835
|
+
var SerializationCompressed;
|
|
74836
|
+
var SerializationCodec;
|
|
74837
|
+
var SerializationUncompressedBytes;
|
|
74838
|
+
var SerializationStoredBytes;
|
|
74839
|
+
var SerializationCompressionRatio;
|
|
74404
74840
|
var PeerService;
|
|
74405
74841
|
var RpcSystem;
|
|
74406
74842
|
var RpcService;
|
|
@@ -74468,6 +74904,12 @@ var init_semantic_conventions = __esm2({
|
|
|
74468
74904
|
QueueDeserializeTimeMs = SemanticConvention("workflow.queue.deserialize_time_ms");
|
|
74469
74905
|
QueueExecutionTimeMs = SemanticConvention("workflow.queue.execution_time_ms");
|
|
74470
74906
|
QueueSerializeTimeMs = SemanticConvention("workflow.queue.serialize_time_ms");
|
|
74907
|
+
SerializationOperation = SemanticConvention("workflow.serialization.operation");
|
|
74908
|
+
SerializationCompressed = SemanticConvention("workflow.serialization.compressed");
|
|
74909
|
+
SerializationCodec = SemanticConvention("workflow.serialization.codec");
|
|
74910
|
+
SerializationUncompressedBytes = SemanticConvention("workflow.serialization.uncompressed_bytes");
|
|
74911
|
+
SerializationStoredBytes = SemanticConvention("workflow.serialization.stored_bytes");
|
|
74912
|
+
SerializationCompressionRatio = SemanticConvention("workflow.serialization.compression_ratio");
|
|
74471
74913
|
PeerService = SemanticConvention("peer.service");
|
|
74472
74914
|
RpcSystem = SemanticConvention("rpc.system");
|
|
74473
74915
|
RpcService = SemanticConvention("rpc.service");
|
|
@@ -76731,7 +77173,8 @@ async function serialize(value, encryptionKey, options) {
|
|
|
76731
77173
|
try {
|
|
76732
77174
|
const payload = devalueCodec.serialize(value, "client", options);
|
|
76733
77175
|
const prefixed = encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
|
|
76734
|
-
|
|
77176
|
+
const compressed = await compress(prefixed, options?.compression === true, options?.compressionStats);
|
|
77177
|
+
return encrypt2(compressed, encryptionKey);
|
|
76735
77178
|
} catch (error482) {
|
|
76736
77179
|
rethrowIfRuntimeError(error482);
|
|
76737
77180
|
const { message, hint: hint22 } = formatSerializationError("client value", error482);
|
|
@@ -76743,7 +77186,7 @@ async function serialize(value, encryptionKey, options) {
|
|
|
76743
77186
|
}
|
|
76744
77187
|
__name(serialize, "serialize");
|
|
76745
77188
|
async function deserialize(data, encryptionKey, options) {
|
|
76746
|
-
const decrypted = await decrypt2(data, encryptionKey);
|
|
77189
|
+
const decrypted = await decompress(await decrypt2(data, encryptionKey), options?.compressionStats);
|
|
76747
77190
|
if (!(decrypted instanceof Uint8Array)) {
|
|
76748
77191
|
if (devalueCodec.deserializeLegacy) {
|
|
76749
77192
|
return devalueCodec.deserializeLegacy(decrypted, "client", options);
|
|
@@ -76762,6 +77205,7 @@ var init_client = __esm2({
|
|
|
76762
77205
|
"use strict";
|
|
76763
77206
|
init_dist2();
|
|
76764
77207
|
init_codec_devalue();
|
|
77208
|
+
init_compression();
|
|
76765
77209
|
init_encryption2();
|
|
76766
77210
|
init_errors3();
|
|
76767
77211
|
init_format();
|
|
@@ -76774,7 +77218,8 @@ async function serialize2(value, encryptionKey, options) {
|
|
|
76774
77218
|
try {
|
|
76775
77219
|
const payload = devalueCodec.serialize(value, "step", options);
|
|
76776
77220
|
const prefixed = encodeWithFormatPrefix(SerializationFormat.DEVALUE_V1, payload);
|
|
76777
|
-
|
|
77221
|
+
const compressed = await compress(prefixed, options?.compression === true, options?.compressionStats);
|
|
77222
|
+
return encrypt2(compressed, encryptionKey);
|
|
76778
77223
|
} catch (error482) {
|
|
76779
77224
|
rethrowIfRuntimeError(error482);
|
|
76780
77225
|
const { message, hint: hint22 } = formatSerializationError("step value", error482);
|
|
@@ -76786,7 +77231,7 @@ async function serialize2(value, encryptionKey, options) {
|
|
|
76786
77231
|
}
|
|
76787
77232
|
__name(serialize2, "serialize2");
|
|
76788
77233
|
async function deserialize2(data, encryptionKey, options) {
|
|
76789
|
-
const decrypted = await decrypt2(data, encryptionKey);
|
|
77234
|
+
const decrypted = await decompress(await decrypt2(data, encryptionKey), options?.compressionStats);
|
|
76790
77235
|
if (!(decrypted instanceof Uint8Array)) {
|
|
76791
77236
|
if (devalueCodec.deserializeLegacy) {
|
|
76792
77237
|
return devalueCodec.deserializeLegacy(decrypted, "step", options);
|
|
@@ -76805,6 +77250,7 @@ var init_step = __esm2({
|
|
|
76805
77250
|
"use strict";
|
|
76806
77251
|
init_dist2();
|
|
76807
77252
|
init_codec_devalue();
|
|
77253
|
+
init_compression();
|
|
76808
77254
|
init_encryption2();
|
|
76809
77255
|
init_errors3();
|
|
76810
77256
|
init_format();
|
|
@@ -78864,6 +79310,20 @@ var init_capabilities = __esm2({
|
|
|
78864
79310
|
{
|
|
78865
79311
|
format: SerializationFormat.ENCRYPTED,
|
|
78866
79312
|
minVersion: "4.2.0-beta.64"
|
|
79313
|
+
},
|
|
79314
|
+
// TODO(release): verify this matches the actual version that ships payload
|
|
79315
|
+
// compression. If a "Version Packages (beta)" PR merges before this change,
|
|
79316
|
+
// bump to the next beta. A too-low cutoff makes new producers write
|
|
79317
|
+
// compressed payloads to consumers that cannot decompress them; too-high
|
|
79318
|
+
// merely delays the optimization (safe). gzip and zstd ship together, so
|
|
79319
|
+
// they share a min version — a run that can read one can read both.
|
|
79320
|
+
{
|
|
79321
|
+
format: SerializationFormat.GZIP,
|
|
79322
|
+
minVersion: "5.0.0-beta.18"
|
|
79323
|
+
},
|
|
79324
|
+
{
|
|
79325
|
+
format: SerializationFormat.ZSTD,
|
|
79326
|
+
minVersion: "5.0.0-beta.18"
|
|
78867
79327
|
}
|
|
78868
79328
|
];
|
|
78869
79329
|
CAPABILITY_VERSION_TABLE = [
|
|
@@ -78882,7 +79342,7 @@ var version2;
|
|
|
78882
79342
|
var init_version = __esm2({
|
|
78883
79343
|
"../core/dist/version.js"() {
|
|
78884
79344
|
"use strict";
|
|
78885
|
-
version2 = "5.0.0-beta.
|
|
79345
|
+
version2 = "5.0.0-beta.19";
|
|
78886
79346
|
}
|
|
78887
79347
|
});
|
|
78888
79348
|
function getWorkflowQueueName(workflowName, namespace) {
|
|
@@ -80271,9 +80731,10 @@ async function resumeHook(tokenOrHook, payload, encryptionKeyOverride) {
|
|
|
80271
80731
|
if (!capabilities.supportedFormats.has(SerializationFormat.ENCRYPTED)) {
|
|
80272
80732
|
encryptionKey = void 0;
|
|
80273
80733
|
}
|
|
80734
|
+
const compression = (workflowRun.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION && capabilities.supportedFormats.has(SerializationFormat.GZIP);
|
|
80274
80735
|
const ops = [];
|
|
80275
80736
|
const v1Compat = isLegacySpecVersion(hook.specVersion);
|
|
80276
|
-
const dehydratedPayload = await dehydrateStepReturnValue(payload, hook.runId, encryptionKey, ops, globalThis, v1Compat, capabilities.framedByteStreams);
|
|
80737
|
+
const dehydratedPayload = await dehydrateStepReturnValue(payload, hook.runId, encryptionKey, ops, globalThis, v1Compat, capabilities.framedByteStreams, compression);
|
|
80277
80738
|
safeWaitUntil(Promise.all(ops), (err) => {
|
|
80278
80739
|
if (err === void 0) return;
|
|
80279
80740
|
runtimeLogger.warn("Background flush of hook payload ops failed", {
|
|
@@ -80406,6 +80867,25 @@ function unwrapSerializationCause(error482) {
|
|
|
80406
80867
|
return error482;
|
|
80407
80868
|
}
|
|
80408
80869
|
__name(unwrapSerializationCause, "unwrapSerializationCause");
|
|
80870
|
+
async function recordCompression(stats, operation) {
|
|
80871
|
+
if (!stats.recorded) return;
|
|
80872
|
+
try {
|
|
80873
|
+
const span = await getActiveSpan();
|
|
80874
|
+
if (!span) return;
|
|
80875
|
+
const uncompressedBytes = stats.uncompressedBytes ?? 0;
|
|
80876
|
+
const storedBytes = stats.storedBytes ?? 0;
|
|
80877
|
+
span.setAttributes({
|
|
80878
|
+
...SerializationOperation(operation),
|
|
80879
|
+
...SerializationCompressed(stats.compressed ?? false),
|
|
80880
|
+
...SerializationCodec(stats.codec ?? "none"),
|
|
80881
|
+
...SerializationUncompressedBytes(uncompressedBytes),
|
|
80882
|
+
...SerializationStoredBytes(storedBytes),
|
|
80883
|
+
...stats.compressed && uncompressedBytes > 0 ? SerializationCompressionRatio(1 - storedBytes / uncompressedBytes) : {}
|
|
80884
|
+
});
|
|
80885
|
+
} catch {
|
|
80886
|
+
}
|
|
80887
|
+
}
|
|
80888
|
+
__name(recordCompression, "recordCompression");
|
|
80409
80889
|
function getSerializeStream(reducers, cryptoKey) {
|
|
80410
80890
|
const encoder22 = new TextEncoder();
|
|
80411
80891
|
const keyState = {
|
|
@@ -81391,16 +81871,21 @@ async function maybeDecrypt(data, key) {
|
|
|
81391
81871
|
return decrypt2(data, key);
|
|
81392
81872
|
}
|
|
81393
81873
|
__name(maybeDecrypt, "maybeDecrypt");
|
|
81394
|
-
async function dehydrateWorkflowArguments(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false) {
|
|
81874
|
+
async function dehydrateWorkflowArguments(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false, compression = false) {
|
|
81395
81875
|
if (v1Compat) {
|
|
81396
81876
|
const str = stringify(value, getExternalReducers(global2, ops, runId, key, framedByteStreams));
|
|
81397
81877
|
return revive(str);
|
|
81398
81878
|
}
|
|
81399
81879
|
try {
|
|
81400
|
-
|
|
81880
|
+
const compressionStats = {};
|
|
81881
|
+
const result = await serialize(value, key, {
|
|
81401
81882
|
global: global2,
|
|
81402
|
-
extraReducers: getStreamAndRequestReducers(getExternalReducers(global2, ops, runId, key, framedByteStreams))
|
|
81883
|
+
extraReducers: getStreamAndRequestReducers(getExternalReducers(global2, ops, runId, key, framedByteStreams)),
|
|
81884
|
+
compression,
|
|
81885
|
+
compressionStats
|
|
81403
81886
|
});
|
|
81887
|
+
await recordCompression(compressionStats, "serialize");
|
|
81888
|
+
return result;
|
|
81404
81889
|
} catch (error482) {
|
|
81405
81890
|
const cause = unwrapSerializationCause(error482);
|
|
81406
81891
|
const { message, hint: hint22 } = formatSerializationError("workflow arguments", cause);
|
|
@@ -81412,25 +81897,34 @@ async function dehydrateWorkflowArguments(value, runId, key, ops = [], global2 =
|
|
|
81412
81897
|
}
|
|
81413
81898
|
__name(dehydrateWorkflowArguments, "dehydrateWorkflowArguments");
|
|
81414
81899
|
async function hydrateWorkflowReturnValue(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
81415
|
-
|
|
81900
|
+
const compressionStats = {};
|
|
81901
|
+
const result = await deserialize(value, key, {
|
|
81416
81902
|
global: global2,
|
|
81417
81903
|
extraRevivers: {
|
|
81418
81904
|
...getStreamAndRequestRevivers(getExternalRevivers(global2, ops, runId, key)),
|
|
81419
81905
|
...extraRevivers
|
|
81420
|
-
}
|
|
81906
|
+
},
|
|
81907
|
+
compressionStats
|
|
81421
81908
|
});
|
|
81909
|
+
await recordCompression(compressionStats, "deserialize");
|
|
81910
|
+
return result;
|
|
81422
81911
|
}
|
|
81423
81912
|
__name(hydrateWorkflowReturnValue, "hydrateWorkflowReturnValue");
|
|
81424
|
-
async function dehydrateStepArguments(value, _runId, key, global2 = globalThis, v1Compat = false) {
|
|
81913
|
+
async function dehydrateStepArguments(value, _runId, key, global2 = globalThis, v1Compat = false, compression = false) {
|
|
81425
81914
|
if (v1Compat) {
|
|
81426
81915
|
const str = stringify(value, getWorkflowReducers(global2));
|
|
81427
81916
|
return revive(str);
|
|
81428
81917
|
}
|
|
81429
81918
|
try {
|
|
81430
|
-
|
|
81919
|
+
const compressionStats = {};
|
|
81920
|
+
const result = await serialize2(value, key, {
|
|
81431
81921
|
global: global2,
|
|
81432
|
-
extraReducers: getStreamAndRequestReducers(getWorkflowReducers(global2))
|
|
81922
|
+
extraReducers: getStreamAndRequestReducers(getWorkflowReducers(global2)),
|
|
81923
|
+
compression,
|
|
81924
|
+
compressionStats
|
|
81433
81925
|
});
|
|
81926
|
+
await recordCompression(compressionStats, "serialize");
|
|
81927
|
+
return result;
|
|
81434
81928
|
} catch (error482) {
|
|
81435
81929
|
const cause = unwrapSerializationCause(error482);
|
|
81436
81930
|
const { message, hint: hint22 } = formatSerializationError("step arguments", cause);
|
|
@@ -81442,25 +81936,34 @@ async function dehydrateStepArguments(value, _runId, key, global2 = globalThis,
|
|
|
81442
81936
|
}
|
|
81443
81937
|
__name(dehydrateStepArguments, "dehydrateStepArguments");
|
|
81444
81938
|
async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}, deploymentId) {
|
|
81445
|
-
|
|
81939
|
+
const compressionStats = {};
|
|
81940
|
+
const result = await deserialize2(value, key, {
|
|
81446
81941
|
global: global2,
|
|
81447
81942
|
extraRevivers: {
|
|
81448
81943
|
...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key, deploymentId)),
|
|
81449
81944
|
...extraRevivers
|
|
81450
|
-
}
|
|
81945
|
+
},
|
|
81946
|
+
compressionStats
|
|
81451
81947
|
});
|
|
81948
|
+
await recordCompression(compressionStats, "deserialize");
|
|
81949
|
+
return result;
|
|
81452
81950
|
}
|
|
81453
81951
|
__name(hydrateStepArguments, "hydrateStepArguments");
|
|
81454
|
-
async function dehydrateStepReturnValue(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false) {
|
|
81952
|
+
async function dehydrateStepReturnValue(value, runId, key, ops = [], global2 = globalThis, v1Compat = false, framedByteStreams = false, compression = false) {
|
|
81455
81953
|
if (v1Compat) {
|
|
81456
81954
|
const str = stringify(value, getStepReducers(global2, ops, runId, key, framedByteStreams));
|
|
81457
81955
|
return revive(str);
|
|
81458
81956
|
}
|
|
81459
81957
|
try {
|
|
81460
|
-
|
|
81958
|
+
const compressionStats = {};
|
|
81959
|
+
const result = await serialize2(value, key, {
|
|
81461
81960
|
global: global2,
|
|
81462
|
-
extraReducers: getStreamAndRequestReducers(getStepReducers(global2, ops, runId, key, framedByteStreams))
|
|
81961
|
+
extraReducers: getStreamAndRequestReducers(getStepReducers(global2, ops, runId, key, framedByteStreams)),
|
|
81962
|
+
compression,
|
|
81963
|
+
compressionStats
|
|
81463
81964
|
});
|
|
81965
|
+
await recordCompression(compressionStats, "serialize");
|
|
81966
|
+
return result;
|
|
81464
81967
|
} catch (error482) {
|
|
81465
81968
|
const cause = unwrapSerializationCause(error482);
|
|
81466
81969
|
const { message, hint: hint22 } = formatSerializationError("step return value", cause);
|
|
@@ -81472,7 +81975,9 @@ async function dehydrateStepReturnValue(value, runId, key, ops = [], global2 = g
|
|
|
81472
81975
|
}
|
|
81473
81976
|
__name(dehydrateStepReturnValue, "dehydrateStepReturnValue");
|
|
81474
81977
|
async function hydrateRunError(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
81475
|
-
const
|
|
81978
|
+
const compressionStats = {};
|
|
81979
|
+
const decrypted = await decompress(await maybeDecrypt(value, key), compressionStats);
|
|
81980
|
+
await recordCompression(compressionStats, "deserialize");
|
|
81476
81981
|
if (!(decrypted instanceof Uint8Array)) {
|
|
81477
81982
|
return unflatten(decrypted, {
|
|
81478
81983
|
...getExternalRevivers(global2, ops, runId, key),
|
|
@@ -81530,6 +82035,7 @@ var init_serialization2 = __esm2({
|
|
|
81530
82035
|
init_private();
|
|
81531
82036
|
init_get_world_lazy();
|
|
81532
82037
|
init_client();
|
|
82038
|
+
init_compression();
|
|
81533
82039
|
init_encryption2();
|
|
81534
82040
|
init_errors3();
|
|
81535
82041
|
init_format();
|
|
@@ -81541,12 +82047,15 @@ var init_serialization2 = __esm2({
|
|
|
81541
82047
|
init_workflow();
|
|
81542
82048
|
init_context_storage();
|
|
81543
82049
|
init_symbols();
|
|
82050
|
+
init_semantic_conventions();
|
|
82051
|
+
init_telemetry();
|
|
81544
82052
|
init_util2();
|
|
81545
82053
|
init_abort_controller();
|
|
81546
82054
|
defaultUlid = monotonicFactory();
|
|
81547
82055
|
__name2(getStreamType, "getStreamType");
|
|
81548
82056
|
FRAME_HEADER_SIZE = 4;
|
|
81549
82057
|
__name2(unwrapSerializationCause, "unwrapSerializationCause");
|
|
82058
|
+
__name2(recordCompression, "recordCompression");
|
|
81550
82059
|
__name2(getSerializeStream, "getSerializeStream");
|
|
81551
82060
|
__name2(getDeserializeStream, "getDeserializeStream");
|
|
81552
82061
|
MAX_FRAME_SIZE = 1e8;
|
|
@@ -81877,6 +82386,7 @@ init_helpers();
|
|
|
81877
82386
|
init_wait_until();
|
|
81878
82387
|
var CROSS_DEPLOYMENT_CAPABILITY_PROBE_TIMEOUT_MS = 2e3;
|
|
81879
82388
|
var ulid3 = monotonicFactory();
|
|
82389
|
+
var hasWarnedLatestNoOp = false;
|
|
81880
82390
|
async function start(workflow, argsOrOptions, options) {
|
|
81881
82391
|
return await waitedUntil(() => {
|
|
81882
82392
|
const workflowName = workflow?.workflowId;
|
|
@@ -81905,22 +82415,34 @@ async function start(workflow, argsOrOptions, options) {
|
|
|
81905
82415
|
const currentDeploymentId = await world.getDeploymentId();
|
|
81906
82416
|
let deploymentId = opts.deploymentId ?? currentDeploymentId;
|
|
81907
82417
|
if (deploymentId === "latest") {
|
|
81908
|
-
if (
|
|
81909
|
-
|
|
82418
|
+
if (world.resolveLatestDeploymentId) {
|
|
82419
|
+
deploymentId = await world.resolveLatestDeploymentId();
|
|
82420
|
+
} else {
|
|
82421
|
+
if (!hasWarnedLatestNoOp) {
|
|
82422
|
+
hasWarnedLatestNoOp = true;
|
|
82423
|
+
runtimeLogger.warn("deploymentId: 'latest' has no effect in this world and was ignored. It is only supported by worlds with atomic deployments, such as Vercel. The run will target the current deployment.", {
|
|
82424
|
+
currentDeploymentId
|
|
82425
|
+
});
|
|
82426
|
+
}
|
|
82427
|
+
deploymentId = currentDeploymentId;
|
|
81910
82428
|
}
|
|
81911
|
-
deploymentId = await world.resolveLatestDeploymentId();
|
|
81912
82429
|
}
|
|
81913
82430
|
let framedByteStreams;
|
|
82431
|
+
let targetSupportsCompression;
|
|
81914
82432
|
if (deploymentId === currentDeploymentId) {
|
|
81915
82433
|
framedByteStreams = true;
|
|
82434
|
+
targetSupportsCompression = true;
|
|
81916
82435
|
} else if (typeof world.streams?.get !== "function") {
|
|
81917
82436
|
framedByteStreams = false;
|
|
82437
|
+
targetSupportsCompression = false;
|
|
81918
82438
|
} else {
|
|
81919
82439
|
const probe = await healthCheck(world, "workflow", {
|
|
81920
82440
|
deploymentId,
|
|
81921
82441
|
timeout: CROSS_DEPLOYMENT_CAPABILITY_PROBE_TIMEOUT_MS
|
|
81922
82442
|
}).catch(() => void 0);
|
|
81923
|
-
|
|
82443
|
+
const capabilities = getRunCapabilities(probe?.workflowCoreVersion);
|
|
82444
|
+
framedByteStreams = capabilities.framedByteStreams;
|
|
82445
|
+
targetSupportsCompression = capabilities.supportedFormats.has(SerializationFormat.GZIP);
|
|
81924
82446
|
}
|
|
81925
82447
|
const ops = [];
|
|
81926
82448
|
const runId = `wrun_${ulid3()}`;
|
|
@@ -81957,7 +82479,8 @@ async function start(workflow, argsOrOptions, options) {
|
|
|
81957
82479
|
deploymentId
|
|
81958
82480
|
});
|
|
81959
82481
|
const encryptionKey = rawKey ? await importKey(rawKey) : void 0;
|
|
81960
|
-
const
|
|
82482
|
+
const compression = targetSupportsCompression && specVersion >= SPEC_VERSION_SUPPORTS_COMPRESSION;
|
|
82483
|
+
const workflowArguments = await dehydrateWorkflowArguments(args, runId, encryptionKey, ops, globalThis, v1Compat, framedByteStreams, compression);
|
|
81961
82484
|
const executionContext = {
|
|
81962
82485
|
traceCarrier,
|
|
81963
82486
|
workflowCoreVersion: version2,
|
|
@@ -82049,7 +82572,7 @@ __name2(start, "start");
|
|
|
82049
82572
|
value: "start",
|
|
82050
82573
|
configurable: true
|
|
82051
82574
|
});
|
|
82052
|
-
})(start, "step//@workflow/core/runtime/start@5.0.0-beta.
|
|
82575
|
+
})(start, "step//@workflow/core/runtime/start@5.0.0-beta.19//start");
|
|
82053
82576
|
function isRetryableStartError(err) {
|
|
82054
82577
|
if (ThrottleError.is(err)) return true;
|
|
82055
82578
|
if (WorkflowWorldError.is(err) && err.status && err.status >= 500) return true;
|
|
@@ -82383,7 +82906,7 @@ var Run = class _Run {
|
|
|
82383
82906
|
value: "wakeUp",
|
|
82384
82907
|
configurable: true
|
|
82385
82908
|
});
|
|
82386
|
-
})(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82909
|
+
})(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#wakeUp");
|
|
82387
82910
|
(function(__wf_fn, __wf_id) {
|
|
82388
82911
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82389
82912
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82392,7 +82915,7 @@ var Run = class _Run {
|
|
|
82392
82915
|
value: "cancel",
|
|
82393
82916
|
configurable: true
|
|
82394
82917
|
});
|
|
82395
|
-
})(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82918
|
+
})(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#cancel");
|
|
82396
82919
|
(function(__wf_fn, __wf_id) {
|
|
82397
82920
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82398
82921
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82401,7 +82924,7 @@ var Run = class _Run {
|
|
|
82401
82924
|
value: "getReadable",
|
|
82402
82925
|
configurable: true
|
|
82403
82926
|
});
|
|
82404
|
-
})(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82927
|
+
})(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#getReadable");
|
|
82405
82928
|
(function(__wf_fn, __wf_id) {
|
|
82406
82929
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82407
82930
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82410,7 +82933,7 @@ var Run = class _Run {
|
|
|
82410
82933
|
value: "exists",
|
|
82411
82934
|
configurable: true
|
|
82412
82935
|
});
|
|
82413
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82936
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#exists");
|
|
82414
82937
|
(function(__wf_fn, __wf_id) {
|
|
82415
82938
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82416
82939
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82419,7 +82942,7 @@ var Run = class _Run {
|
|
|
82419
82942
|
value: "status",
|
|
82420
82943
|
configurable: true
|
|
82421
82944
|
});
|
|
82422
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82945
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#status");
|
|
82423
82946
|
(function(__wf_fn, __wf_id) {
|
|
82424
82947
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82425
82948
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82428,7 +82951,7 @@ var Run = class _Run {
|
|
|
82428
82951
|
value: "returnValue",
|
|
82429
82952
|
configurable: true
|
|
82430
82953
|
});
|
|
82431
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82954
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#returnValue");
|
|
82432
82955
|
(function(__wf_fn, __wf_id) {
|
|
82433
82956
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82434
82957
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82437,7 +82960,7 @@ var Run = class _Run {
|
|
|
82437
82960
|
value: "workflowName",
|
|
82438
82961
|
configurable: true
|
|
82439
82962
|
});
|
|
82440
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82963
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#workflowName");
|
|
82441
82964
|
(function(__wf_fn, __wf_id) {
|
|
82442
82965
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82443
82966
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82446,7 +82969,7 @@ var Run = class _Run {
|
|
|
82446
82969
|
value: "createdAt",
|
|
82447
82970
|
configurable: true
|
|
82448
82971
|
});
|
|
82449
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82972
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#createdAt");
|
|
82450
82973
|
(function(__wf_fn, __wf_id) {
|
|
82451
82974
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82452
82975
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82455,7 +82978,7 @@ var Run = class _Run {
|
|
|
82455
82978
|
value: "startedAt",
|
|
82456
82979
|
configurable: true
|
|
82457
82980
|
});
|
|
82458
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82981
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#startedAt");
|
|
82459
82982
|
(function(__wf_fn, __wf_id) {
|
|
82460
82983
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82461
82984
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -82464,7 +82987,7 @@ var Run = class _Run {
|
|
|
82464
82987
|
value: "completedAt",
|
|
82465
82988
|
configurable: true
|
|
82466
82989
|
});
|
|
82467
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
82990
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.19//Run#completedAt");
|
|
82468
82991
|
(function(__wf_cls, __wf_id) {
|
|
82469
82992
|
var __wf_sym = /* @__PURE__ */ Symbol.for("workflow-class-registry"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
82470
82993
|
__wf_reg.set(__wf_id, __wf_cls);
|
|
@@ -82474,7 +82997,7 @@ var Run = class _Run {
|
|
|
82474
82997
|
enumerable: false,
|
|
82475
82998
|
configurable: false
|
|
82476
82999
|
});
|
|
82477
|
-
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.
|
|
83000
|
+
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.19//Run");
|
|
82478
83001
|
async function fetch2(...args) {
|
|
82479
83002
|
return globalThis.fetch(...args);
|
|
82480
83003
|
}
|
|
@@ -93300,7 +93823,7 @@ import os from "node:os";
|
|
|
93300
93823
|
import { inspect } from "node:util";
|
|
93301
93824
|
|
|
93302
93825
|
// ../world-vercel/dist/version.js
|
|
93303
|
-
var version5 = "5.0.0-beta.
|
|
93826
|
+
var version5 = "5.0.0-beta.18";
|
|
93304
93827
|
|
|
93305
93828
|
// ../world-vercel/dist/utils.js
|
|
93306
93829
|
var HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
|
|
@@ -94086,11 +94609,14 @@ async function consumeListFrameStream(url3, headers, config4, opName) {
|
|
|
94086
94609
|
const chunks = response.body;
|
|
94087
94610
|
const events = [];
|
|
94088
94611
|
let next2;
|
|
94612
|
+
let hasMore;
|
|
94089
94613
|
let sawEndSentinel = false;
|
|
94090
94614
|
for await (const frame3 of decodeFrames(chunks)) {
|
|
94091
94615
|
if (frame3.meta._end === 1) {
|
|
94092
94616
|
if (typeof frame3.meta.next === "string")
|
|
94093
94617
|
next2 = frame3.meta.next;
|
|
94618
|
+
if (typeof frame3.meta.hasMore === "boolean")
|
|
94619
|
+
hasMore = frame3.meta.hasMore;
|
|
94094
94620
|
sawEndSentinel = true;
|
|
94095
94621
|
break;
|
|
94096
94622
|
}
|
|
@@ -94102,17 +94628,28 @@ async function consumeListFrameStream(url3, headers, config4, opName) {
|
|
|
94102
94628
|
if (!sawEndSentinel) {
|
|
94103
94629
|
throw new Error(`v4 ${opName}: frame stream ended without the end-of-stream sentinel (${events.length} events read) \u2014 truncated response?`);
|
|
94104
94630
|
}
|
|
94105
|
-
return {
|
|
94631
|
+
return {
|
|
94632
|
+
events,
|
|
94633
|
+
...next2 ? { next: next2 } : {},
|
|
94634
|
+
...hasMore !== void 0 ? { hasMore } : {}
|
|
94635
|
+
};
|
|
94106
94636
|
}
|
|
94107
94637
|
__name(consumeListFrameStream, "consumeListFrameStream");
|
|
94108
|
-
function
|
|
94109
|
-
const sp = new URLSearchParams();
|
|
94638
|
+
function appendListParams(sp, params) {
|
|
94110
94639
|
if (params.cursor)
|
|
94111
94640
|
sp.set("cursor", params.cursor);
|
|
94112
94641
|
if (params.limit !== void 0)
|
|
94113
94642
|
sp.set("limit", String(params.limit));
|
|
94114
94643
|
if (params.sortOrder)
|
|
94115
94644
|
sp.set("sortOrder", params.sortOrder);
|
|
94645
|
+
if (params.remoteRefBehavior) {
|
|
94646
|
+
sp.set("remoteRefBehavior", params.remoteRefBehavior);
|
|
94647
|
+
}
|
|
94648
|
+
}
|
|
94649
|
+
__name(appendListParams, "appendListParams");
|
|
94650
|
+
function paginationToQuery(params) {
|
|
94651
|
+
const sp = new URLSearchParams();
|
|
94652
|
+
appendListParams(sp, params);
|
|
94116
94653
|
const qs = sp.toString();
|
|
94117
94654
|
return qs ? `?${qs}` : "";
|
|
94118
94655
|
}
|
|
@@ -94127,12 +94664,7 @@ async function getEventsByCorrelationIdV4(correlationId, params = {}, config4) {
|
|
|
94127
94664
|
const { baseUrl, headers } = await getHttpConfig(config4);
|
|
94128
94665
|
const sp = new URLSearchParams();
|
|
94129
94666
|
sp.set("correlationId", correlationId);
|
|
94130
|
-
|
|
94131
|
-
sp.set("cursor", params.cursor);
|
|
94132
|
-
if (params.limit !== void 0)
|
|
94133
|
-
sp.set("limit", String(params.limit));
|
|
94134
|
-
if (params.sortOrder)
|
|
94135
|
-
sp.set("sortOrder", params.sortOrder);
|
|
94667
|
+
appendListParams(sp, params);
|
|
94136
94668
|
const url3 = `${baseUrl}/v4/events?${sp.toString()}`;
|
|
94137
94669
|
return consumeListFrameStream(url3, headers, config4, "listEventsByCorrelationId");
|
|
94138
94670
|
}
|
|
@@ -94518,14 +95050,19 @@ async function getWorkflowRunEvents(params, config4) {
|
|
|
94518
95050
|
const wirePagination = {
|
|
94519
95051
|
cursor: pagination?.cursor ?? void 0,
|
|
94520
95052
|
limit: pagination?.limit,
|
|
94521
|
-
sortOrder: pagination?.sortOrder
|
|
95053
|
+
sortOrder: pagination?.sortOrder,
|
|
95054
|
+
remoteRefBehavior: resolveData === "none" ? "lazy" : "resolve"
|
|
94522
95055
|
};
|
|
94523
95056
|
const result = await ("correlationId" in params ? getEventsByCorrelationIdV4(params.correlationId, wirePagination, config4) : getWorkflowRunEventsV4(params.runId, wirePagination, config4));
|
|
94524
95057
|
const events = result.events.map((listed) => buildEventFromV4(listed.event, listed.body, resolveData));
|
|
94525
95058
|
return {
|
|
94526
95059
|
data: events,
|
|
95060
|
+
// `next` is present even on the final page (it's the incremental-load
|
|
95061
|
+
// resume cursor), so prefer the server's explicit `hasMore`. The
|
|
95062
|
+
// `Boolean(next)` fallback covers older servers that don't emit it —
|
|
95063
|
+
// at the cost of one extra empty-page request per load.
|
|
94527
95064
|
cursor: result.next ?? null,
|
|
94528
|
-
hasMore: Boolean(result.next)
|
|
95065
|
+
hasMore: typeof result.hasMore === "boolean" ? result.hasMore : Boolean(result.next)
|
|
94529
95066
|
};
|
|
94530
95067
|
}
|
|
94531
95068
|
__name(getWorkflowRunEvents, "getWorkflowRunEvents");
|
|
@@ -94872,11 +95409,14 @@ __name(createStreamer2, "createStreamer");
|
|
|
94872
95409
|
function createVercelWorld(config4) {
|
|
94873
95410
|
const projectId = config4?.projectConfig?.projectId || process.env.VERCEL_PROJECT_ID;
|
|
94874
95411
|
return {
|
|
94875
|
-
// Spec
|
|
94876
|
-
//
|
|
94877
|
-
//
|
|
94878
|
-
//
|
|
94879
|
-
|
|
95412
|
+
// Spec v5: new runs may carry gzip-compressed payloads (compression is
|
|
95413
|
+
// entirely client-side — the workflow-server stores payloads opaquely
|
|
95414
|
+
// via RemoteRef and never deserializes them). Spec 5 is a superset of
|
|
95415
|
+
// spec 4, so native `attr_set` events and initial run attributes still
|
|
95416
|
+
// work. New runs are stamped with this version; the server must support
|
|
95417
|
+
// at least it — workflow-server declared spec-5 support in
|
|
95418
|
+
// vercel/workflow-server#520.
|
|
95419
|
+
specVersion: SPEC_VERSION_SUPPORTS_COMPRESSION2,
|
|
94880
95420
|
// On Vercel the platform fails the function invocation when the
|
|
94881
95421
|
// process exits non-zero, and VQS redelivers the queue message via a
|
|
94882
95422
|
// fresh invocation. The core runtime uses this to decide whether
|
|
@@ -95243,6 +95783,7 @@ var DEFAULT_STEP_MAX_RETRIES = 3;
|
|
|
95243
95783
|
async function executeStep(params) {
|
|
95244
95784
|
const { world, workflowRunId, workflowName, workflowStartedAt, stepId, stepName } = params;
|
|
95245
95785
|
const isVercel = process.env.VERCEL_URL !== void 0;
|
|
95786
|
+
const compression = (params.runSpecVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2;
|
|
95246
95787
|
const spanName = `step.execute ${stepDisplayName(stepName)}`;
|
|
95247
95788
|
return trace3(spanName, {}, async (span) => {
|
|
95248
95789
|
span?.setAttributes({
|
|
@@ -95267,7 +95808,7 @@ async function executeStep(params) {
|
|
|
95267
95808
|
correlationId: stepId,
|
|
95268
95809
|
eventData: {
|
|
95269
95810
|
stepName,
|
|
95270
|
-
error: await dehydrateStepError(new FatalError2(errorMessage), workflowRunId, await getEncryptionKey())
|
|
95811
|
+
error: await dehydrateStepError(new FatalError2(errorMessage), workflowRunId, await getEncryptionKey(), [], globalThis, compression)
|
|
95271
95812
|
}
|
|
95272
95813
|
});
|
|
95273
95814
|
} catch (stepFailErr) {
|
|
@@ -95366,7 +95907,7 @@ async function executeStep(params) {
|
|
|
95366
95907
|
correlationId: stepId,
|
|
95367
95908
|
eventData: {
|
|
95368
95909
|
stepName,
|
|
95369
|
-
error: await dehydrateStepError(wrappedError, workflowRunId, await getEncryptionKey())
|
|
95910
|
+
error: await dehydrateStepError(wrappedError, workflowRunId, await getEncryptionKey(), [], globalThis, compression)
|
|
95370
95911
|
}
|
|
95371
95912
|
});
|
|
95372
95913
|
} catch (err) {
|
|
@@ -95436,7 +95977,7 @@ async function executeStep(params) {
|
|
|
95436
95977
|
});
|
|
95437
95978
|
result = await trace3("step.dehydrate", {}, async (dehydrateSpan) => {
|
|
95438
95979
|
const startTime = Date.now();
|
|
95439
|
-
const dehydrated = await dehydrateStepReturnValue2(result, workflowRunId, encryptionKey, ops);
|
|
95980
|
+
const dehydrated = await dehydrateStepReturnValue2(result, workflowRunId, encryptionKey, ops, globalThis, false, false, compression);
|
|
95440
95981
|
const durationMs = Date.now() - startTime;
|
|
95441
95982
|
dehydrateSpan?.setAttributes({
|
|
95442
95983
|
...QueueSerializeTimeMs2(durationMs),
|
|
@@ -95536,7 +96077,7 @@ async function executeStep(params) {
|
|
|
95536
96077
|
correlationId: stepId,
|
|
95537
96078
|
eventData: {
|
|
95538
96079
|
stepName,
|
|
95539
|
-
error: await dehydrateStepError(effectiveErr, workflowRunId, await getEncryptionKey())
|
|
96080
|
+
error: await dehydrateStepError(effectiveErr, workflowRunId, await getEncryptionKey(), [], globalThis, compression)
|
|
95540
96081
|
}
|
|
95541
96082
|
});
|
|
95542
96083
|
} catch (stepFailErr) {
|
|
@@ -95583,7 +96124,7 @@ async function executeStep(params) {
|
|
|
95583
96124
|
correlationId: stepId,
|
|
95584
96125
|
eventData: {
|
|
95585
96126
|
stepName,
|
|
95586
|
-
error: await dehydrateStepError(wrappedError, workflowRunId, await getEncryptionKey())
|
|
96127
|
+
error: await dehydrateStepError(wrappedError, workflowRunId, await getEncryptionKey(), [], globalThis, compression)
|
|
95587
96128
|
}
|
|
95588
96129
|
});
|
|
95589
96130
|
} catch (stepFailErr) {
|
|
@@ -95629,7 +96170,7 @@ async function executeStep(params) {
|
|
|
95629
96170
|
correlationId: stepId,
|
|
95630
96171
|
eventData: {
|
|
95631
96172
|
stepName,
|
|
95632
|
-
error: await dehydrateStepError(err, workflowRunId, await getEncryptionKey()),
|
|
96173
|
+
error: await dehydrateStepError(err, workflowRunId, await getEncryptionKey(), [], globalThis, compression),
|
|
95633
96174
|
...RetryableError2.is(err) && { retryAfter: err.retryAfter }
|
|
95634
96175
|
}
|
|
95635
96176
|
});
|
|
@@ -95714,8 +96255,9 @@ async function handleSuspension({ suspension, world, run: run3, span, requestId
|
|
|
95714
96255
|
const hooksNeedingDisposal = allHookItems.filter((item) => item.disposed);
|
|
95715
96256
|
const rawKey = await world.getEncryptionKeyForRun?.(run3);
|
|
95716
96257
|
const encryptionKey = rawKey ? await importKey2(rawKey) : void 0;
|
|
96258
|
+
const compression = (run3.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2;
|
|
95717
96259
|
const hookEvents = await Promise.all(hooksNeedingCreation.map(async (queueItem) => {
|
|
95718
|
-
const hookMetadata = typeof queueItem.metadata === "undefined" ? void 0 : await dehydrateStepArguments2(queueItem.metadata, runId, encryptionKey, suspension.globalThis);
|
|
96260
|
+
const hookMetadata = typeof queueItem.metadata === "undefined" ? void 0 : await dehydrateStepArguments2(queueItem.metadata, runId, encryptionKey, suspension.globalThis, false, compression);
|
|
95719
96261
|
return {
|
|
95720
96262
|
queueItem,
|
|
95721
96263
|
hookEvent: {
|
|
@@ -95785,7 +96327,7 @@ async function handleSuspension({ suspension, world, run: run3, span, requestId
|
|
|
95785
96327
|
if (hooksNeedingAbort.length > 0) {
|
|
95786
96328
|
await Promise.all(hooksNeedingAbort.map(async (queueItem) => {
|
|
95787
96329
|
try {
|
|
95788
|
-
const abortPayload = await dehydrateStepArguments2({ aborted: true, reason: queueItem.abortReason }, runId, encryptionKey, suspension.globalThis);
|
|
96330
|
+
const abortPayload = await dehydrateStepArguments2({ aborted: true, reason: queueItem.abortReason }, runId, encryptionKey, suspension.globalThis, false, compression);
|
|
95789
96331
|
await world.events.create(runId, {
|
|
95790
96332
|
eventType: "hook_received",
|
|
95791
96333
|
specVersion: SPEC_VERSION_CURRENT2,
|
|
@@ -95828,7 +96370,7 @@ async function handleSuspension({ suspension, world, run: run3, span, requestId
|
|
|
95828
96370
|
args: queueItem.args,
|
|
95829
96371
|
closureVars: queueItem.closureVars,
|
|
95830
96372
|
thisVal: queueItem.thisVal
|
|
95831
|
-
}, runId, encryptionKey, suspension.globalThis);
|
|
96373
|
+
}, runId, encryptionKey, suspension.globalThis, false, compression);
|
|
95832
96374
|
const stepEvent = {
|
|
95833
96375
|
eventType: "step_created",
|
|
95834
96376
|
specVersion: SPEC_VERSION_CURRENT2,
|
|
@@ -96557,6 +97099,7 @@ init_util4();
|
|
|
96557
97099
|
init_dist6();
|
|
96558
97100
|
init_dist5();
|
|
96559
97101
|
init_parse_name2();
|
|
97102
|
+
init_dist7();
|
|
96560
97103
|
import { runInContext as runInContext2 } from "node:vm";
|
|
96561
97104
|
|
|
96562
97105
|
// ../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/url-alphabet/index.js
|
|
@@ -98141,7 +98684,17 @@ Learn more: https://workflow-sdk.dev/err/${ERROR_SLUGS2.FETCH_IN_WORKFLOW_FUNCTI
|
|
|
98141
98684
|
workflowFn(...args),
|
|
98142
98685
|
workflowDiscontinuation.promise
|
|
98143
98686
|
]);
|
|
98144
|
-
const dehydrated = await dehydrateWorkflowReturnValue(
|
|
98687
|
+
const dehydrated = await dehydrateWorkflowReturnValue(
|
|
98688
|
+
result,
|
|
98689
|
+
workflowRun.runId,
|
|
98690
|
+
encryptionKey,
|
|
98691
|
+
vmGlobalThis,
|
|
98692
|
+
false,
|
|
98693
|
+
// Gate payload compression on the run's specVersion: only runs
|
|
98694
|
+
// marked as possibly containing compressed payloads (spec >= 5)
|
|
98695
|
+
// get gzip data.
|
|
98696
|
+
(workflowRun.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2
|
|
98697
|
+
);
|
|
98145
98698
|
span?.setAttributes({
|
|
98146
98699
|
...WorkflowResultType2(typeof result)
|
|
98147
98700
|
});
|
|
@@ -98531,7 +99084,7 @@ async function recordFatalRunError({ world, workflowRun, runId, requestId, err,
|
|
|
98531
99084
|
eventType: "run_failed",
|
|
98532
99085
|
specVersion: SPEC_VERSION_CURRENT2,
|
|
98533
99086
|
eventData: {
|
|
98534
|
-
error: await dehydrateRunError(err, runId, await getEncryptionKey()),
|
|
99087
|
+
error: await dehydrateRunError(err, runId, await getEncryptionKey(), globalThis, (workflowRun?.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2),
|
|
98535
99088
|
errorCode
|
|
98536
99089
|
}
|
|
98537
99090
|
}, { requestId });
|
|
@@ -98659,7 +99212,8 @@ function workflowEntrypoint(workflowCode2, options) {
|
|
|
98659
99212
|
workflowName,
|
|
98660
99213
|
workflowStartedAt: bgStartedAt,
|
|
98661
99214
|
stepId: incomingStepId,
|
|
98662
|
-
stepName: incomingStepName
|
|
99215
|
+
stepName: incomingStepName,
|
|
99216
|
+
runSpecVersion: bgRun.specVersion
|
|
98663
99217
|
});
|
|
98664
99218
|
} finally {
|
|
98665
99219
|
replayBudget.resume();
|
|
@@ -98985,7 +99539,7 @@ function workflowEntrypoint(workflowCode2, options) {
|
|
|
98985
99539
|
eventType: "run_failed",
|
|
98986
99540
|
specVersion: SPEC_VERSION_CURRENT2,
|
|
98987
99541
|
eventData: {
|
|
98988
|
-
error: await dehydrateRunError(suspensionError, runId, encryptionKey),
|
|
99542
|
+
error: await dehydrateRunError(suspensionError, runId, encryptionKey, globalThis, (workflowRun?.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2),
|
|
98989
99543
|
errorCode
|
|
98990
99544
|
}
|
|
98991
99545
|
}, { requestId });
|
|
@@ -99066,7 +99620,8 @@ function workflowEntrypoint(workflowCode2, options) {
|
|
|
99066
99620
|
workflowName,
|
|
99067
99621
|
workflowStartedAt,
|
|
99068
99622
|
stepId: inlineStep.correlationId,
|
|
99069
|
-
stepName: inlineStep.stepName
|
|
99623
|
+
stepName: inlineStep.stepName,
|
|
99624
|
+
runSpecVersion: workflowRun.specVersion
|
|
99070
99625
|
});
|
|
99071
99626
|
} finally {
|
|
99072
99627
|
replayBudget.resume();
|
|
@@ -99156,7 +99711,7 @@ function workflowEntrypoint(workflowCode2, options) {
|
|
|
99156
99711
|
eventType: "run_failed",
|
|
99157
99712
|
specVersion: SPEC_VERSION_CURRENT2,
|
|
99158
99713
|
eventData: {
|
|
99159
|
-
error: await dehydrateRunError(terminalError, runId, encryptionKey),
|
|
99714
|
+
error: await dehydrateRunError(terminalError, runId, encryptionKey, globalThis, (workflowRun?.specVersion ?? 0) >= SPEC_VERSION_SUPPORTS_COMPRESSION2),
|
|
99160
99715
|
errorCode
|
|
99161
99716
|
}
|
|
99162
99717
|
}, { requestId });
|
|
@@ -115470,10 +116025,10 @@ var Run = class _Run {
|
|
|
115470
116025
|
return this.getReadable();
|
|
115471
116026
|
}
|
|
115472
116027
|
};
|
|
115473
|
-
Run.prototype["wakeUp"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
115474
|
-
Run.prototype["cancel"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
115475
|
-
Run.prototype["getReadable"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
115476
|
-
var __step_Run$exists = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116028
|
+
Run.prototype["wakeUp"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#wakeUp");
|
|
116029
|
+
Run.prototype["cancel"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#cancel");
|
|
116030
|
+
Run.prototype["getReadable"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#getReadable");
|
|
116031
|
+
var __step_Run$exists = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#exists");
|
|
115477
116032
|
Object.defineProperty(Run.prototype, "exists", {
|
|
115478
116033
|
get() {
|
|
115479
116034
|
return __step_Run$exists.call(this);
|
|
@@ -115481,7 +116036,7 @@ Object.defineProperty(Run.prototype, "exists", {
|
|
|
115481
116036
|
configurable: true,
|
|
115482
116037
|
enumerable: false
|
|
115483
116038
|
});
|
|
115484
|
-
var __step_Run$status = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116039
|
+
var __step_Run$status = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#status");
|
|
115485
116040
|
Object.defineProperty(Run.prototype, "status", {
|
|
115486
116041
|
get() {
|
|
115487
116042
|
return __step_Run$status.call(this);
|
|
@@ -115489,7 +116044,7 @@ Object.defineProperty(Run.prototype, "status", {
|
|
|
115489
116044
|
configurable: true,
|
|
115490
116045
|
enumerable: false
|
|
115491
116046
|
});
|
|
115492
|
-
var __step_Run$returnValue = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116047
|
+
var __step_Run$returnValue = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#returnValue");
|
|
115493
116048
|
Object.defineProperty(Run.prototype, "returnValue", {
|
|
115494
116049
|
get() {
|
|
115495
116050
|
return __step_Run$returnValue.call(this);
|
|
@@ -115497,7 +116052,7 @@ Object.defineProperty(Run.prototype, "returnValue", {
|
|
|
115497
116052
|
configurable: true,
|
|
115498
116053
|
enumerable: false
|
|
115499
116054
|
});
|
|
115500
|
-
var __step_Run$workflowName = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116055
|
+
var __step_Run$workflowName = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#workflowName");
|
|
115501
116056
|
Object.defineProperty(Run.prototype, "workflowName", {
|
|
115502
116057
|
get() {
|
|
115503
116058
|
return __step_Run$workflowName.call(this);
|
|
@@ -115505,7 +116060,7 @@ Object.defineProperty(Run.prototype, "workflowName", {
|
|
|
115505
116060
|
configurable: true,
|
|
115506
116061
|
enumerable: false
|
|
115507
116062
|
});
|
|
115508
|
-
var __step_Run$createdAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116063
|
+
var __step_Run$createdAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#createdAt");
|
|
115509
116064
|
Object.defineProperty(Run.prototype, "createdAt", {
|
|
115510
116065
|
get() {
|
|
115511
116066
|
return __step_Run$createdAt.call(this);
|
|
@@ -115513,7 +116068,7 @@ Object.defineProperty(Run.prototype, "createdAt", {
|
|
|
115513
116068
|
configurable: true,
|
|
115514
116069
|
enumerable: false
|
|
115515
116070
|
});
|
|
115516
|
-
var __step_Run$startedAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116071
|
+
var __step_Run$startedAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#startedAt");
|
|
115517
116072
|
Object.defineProperty(Run.prototype, "startedAt", {
|
|
115518
116073
|
get() {
|
|
115519
116074
|
return __step_Run$startedAt.call(this);
|
|
@@ -115521,7 +116076,7 @@ Object.defineProperty(Run.prototype, "startedAt", {
|
|
|
115521
116076
|
configurable: true,
|
|
115522
116077
|
enumerable: false
|
|
115523
116078
|
});
|
|
115524
|
-
var __step_Run$completedAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.
|
|
116079
|
+
var __step_Run$completedAt = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.19//Run#completedAt");
|
|
115525
116080
|
Object.defineProperty(Run.prototype, "completedAt", {
|
|
115526
116081
|
get() {
|
|
115527
116082
|
return __step_Run$completedAt.call(this);
|
|
@@ -115538,7 +116093,7 @@ Object.defineProperty(Run.prototype, "completedAt", {
|
|
|
115538
116093
|
enumerable: false,
|
|
115539
116094
|
configurable: false
|
|
115540
116095
|
});
|
|
115541
|
-
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.
|
|
116096
|
+
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.19//Run");
|
|
115542
116097
|
|
|
115543
116098
|
// ../core/dist/workflow/create-hook.js
|
|
115544
116099
|
aliasSerializationClass(RUN_CLASS_ID, Run);
|