@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
- SPEC_VERSION_CURRENT2 = SPEC_VERSION_SUPPORTS_ATTRIBUTES2;
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.17";
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
- return encrypt4(prefixed, encryptionKey);
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
- return deserialize5(await maybeDecrypt2(value, key), {
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
- return await serialize3(value, key, {
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
- return deserialize3(value, key, {
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
- return await serialize3(value, key, {
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
- return deserialize4(value, key, {
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
- return await serialize3(value, key, {
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
- return await maybeEncrypt(serialized, key);
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 decrypted = await maybeDecrypt2(value, key);
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
- return await maybeEncrypt(serialized, key);
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 decrypted = await maybeDecrypt2(value, key);
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
- return deserialize5(await maybeDecrypt2(value, key), {
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
- SPEC_VERSION_CURRENT = SPEC_VERSION_SUPPORTS_ATTRIBUTES;
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
- return encrypt2(prefixed, encryptionKey);
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
- return encrypt2(prefixed, encryptionKey);
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.17";
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
- return await serialize(value, key, {
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
- return deserialize(value, key, {
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
- return await serialize2(value, key, {
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
- return deserialize2(value, key, {
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
- return await serialize2(value, key, {
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 decrypted = await maybeDecrypt(value, key);
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 (!world.resolveLatestDeploymentId) {
81909
- throw new WorkflowRuntimeError("deploymentId 'latest' requires a World that implements resolveLatestDeploymentId()");
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
- framedByteStreams = getRunCapabilities(probe?.workflowCoreVersion).framedByteStreams;
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 workflowArguments = await dehydrateWorkflowArguments(args, runId, encryptionKey, ops, globalThis, v1Compat, framedByteStreams);
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.17//start");
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.17//Run#wakeUp");
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.17//Run#cancel");
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.17//Run#getReadable");
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.17//Run#exists");
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.17//Run#status");
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.17//Run#returnValue");
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.17//Run#workflowName");
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.17//Run#createdAt");
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.17//Run#startedAt");
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.17//Run#completedAt");
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.17//Run");
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.16";
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 { events, ...next2 ? { next: next2 } : {} };
94631
+ return {
94632
+ events,
94633
+ ...next2 ? { next: next2 } : {},
94634
+ ...hasMore !== void 0 ? { hasMore } : {}
94635
+ };
94106
94636
  }
94107
94637
  __name(consumeListFrameStream, "consumeListFrameStream");
94108
- function paginationToQuery(params) {
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
- if (params.cursor)
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 v4: the workflow-server materializes native `attr_set` events
94876
- // and accepts initial run attributes on creation. New runs are stamped
94877
- // with this version; the server must be at least this version (it
94878
- // rejects runs newer than its own SPEC_VERSION_CURRENT).
94879
- specVersion: SPEC_VERSION_SUPPORTS_ATTRIBUTES2,
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(result, workflowRun.runId, encryptionKey, vmGlobalThis);
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.17//Run#wakeUp");
115474
- Run.prototype["cancel"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.17//Run#cancel");
115475
- Run.prototype["getReadable"] = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.17//Run#getReadable");
115476
- var __step_Run$exists = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//@workflow/core/runtime/run@5.0.0-beta.17//Run#exists");
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.17//Run#status");
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.17//Run#returnValue");
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.17//Run#workflowName");
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.17//Run#createdAt");
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.17//Run#startedAt");
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.17//Run#completedAt");
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.17//Run");
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);