@workflow/web 4.1.23 → 4.1.25

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.
@@ -18,7 +18,7 @@ import { createRequire as __wkfCreateRequire } from "node:module";
18
18
  if (typeof globalThis.require === "undefined") {
19
19
  globalThis.require = __wkfCreateRequire(import.meta.url);
20
20
  }
21
- import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-Cqq1tzT2.js";
21
+ import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-C2ZMBpJF.js";
22
22
  import require$$0$5, { PassThrough, Transform as Transform$1 } from "node:stream";
23
23
  import require$$0 from "util";
24
24
  import require$$1 from "crypto";
@@ -34069,9 +34069,6 @@ class DevalueError extends Error {
34069
34069
  this.root = root2;
34070
34070
  }
34071
34071
  }
34072
- function is_primitive(thing) {
34073
- return thing === null || typeof thing !== "object" && typeof thing !== "function";
34074
- }
34075
34072
  const object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(Object.prototype).sort().join("\0");
34076
34073
  function is_plain_object(thing) {
34077
34074
  const proto2 = Object.getPrototypeOf(thing);
@@ -34150,14 +34147,17 @@ function is_valid_array_index_string(s2) {
34150
34147
  }
34151
34148
  return is_valid_array_index(+s2);
34152
34149
  }
34153
- function valid_array_indices(array2) {
34154
- const keys2 = Object.keys(array2);
34150
+ function array_index_cut(keys2) {
34155
34151
  for (var i = keys2.length - 1; i >= 0; i--) {
34156
34152
  if (is_valid_array_index_string(keys2[i])) {
34157
34153
  break;
34158
34154
  }
34159
34155
  }
34160
- keys2.length = i + 1;
34156
+ return i + 1;
34157
+ }
34158
+ function valid_array_indices(array2) {
34159
+ const keys2 = Object.keys(array2);
34160
+ keys2.length = array_index_cut(keys2);
34161
34161
  return keys2;
34162
34162
  }
34163
34163
  function encode_native(array_buffer) {
@@ -34195,10 +34195,92 @@ const native = typeof Uint8Array.fromBase64 === "function";
34195
34195
  const buffer = typeof process === "object" && ((_a2 = process.versions) == null ? void 0 : _a2.node) !== void 0;
34196
34196
  const encode64 = native ? encode_native : buffer ? encode_buffer : encode_legacy;
34197
34197
  const decode64 = native ? decode_native : buffer ? decode_buffer : decode_legacy;
34198
- function parse$7(serialized, revivers) {
34198
+ function merge_operations(defaults2, overrides) {
34199
+ return defaults2;
34200
+ }
34201
+ const NOT_PLAIN = Object.freeze({ kind: "not-plain" });
34202
+ const SYMBOL_KEYS = Object.freeze({ kind: "symbol-keys" });
34203
+ const stringify_operations = {
34204
+ identify: (value) => value,
34205
+ typeOf: (value) => value === null ? "null" : typeof value,
34206
+ toPrimitive: (value) => value,
34207
+ tagOf: (value) => get_type(value),
34208
+ isThenable: (value) => typeof value.then === "function",
34209
+ toPromise: (thenable) => Promise.resolve(thenable),
34210
+ unbox: (boxed) => boxed.valueOf(),
34211
+ toISOString: (date2) => isNaN(date2.getDate()) ? "" : date2.toISOString(),
34212
+ toStringValue: (value) => value.toString(),
34213
+ regExpInfo: (regexp) => ({ source: regexp.source, flags: regexp.flags }),
34214
+ valuesOf: (set2) => set2,
34215
+ entriesOf: (map2) => map2,
34216
+ viewInfo: (view) => ({
34217
+ buffer: view.buffer,
34218
+ byteOffset: view.byteOffset,
34219
+ byteLength: view.byteLength,
34220
+ length: view.length,
34221
+ bufferByteLength: view.buffer.byteLength
34222
+ }),
34223
+ toArrayBuffer: (buffer2) => buffer2,
34224
+ lengthOf: (array2) => array2.length,
34225
+ hasOwn: (value, key) => Object.hasOwn(value, key),
34226
+ indicesOf: (array2) => valid_array_indices(array2),
34227
+ shapeOf: (value) => {
34228
+ if (!is_plain_object(value)) return NOT_PLAIN;
34229
+ if (enumerable_symbols(value).length > 0) return SYMBOL_KEYS;
34230
+ return {
34231
+ kind: Object.getPrototypeOf(value) === null ? "null-proto" : "plain",
34232
+ keys: Object.keys(value)
34233
+ };
34234
+ },
34235
+ get: (value, key) => value[key]
34236
+ };
34237
+ const default_stringify_operations = Object.freeze(stringify_operations);
34238
+ const parse_operations = {
34239
+ fromPrimitive: (primitive) => primitive,
34240
+ fromISOString: (iso) => new Date(iso),
34241
+ fromStringValue: (tag, text2) => {
34242
+ if (tag === "URL") return new URL(text2);
34243
+ if (tag === "URLSearchParams") return new URLSearchParams(text2);
34244
+ return Temporal[tag.slice(9)].from(text2);
34245
+ },
34246
+ fromArrayBuffer: (buffer2) => buffer2,
34247
+ fromRegExpInfo: (source, flags) => new RegExp(source, flags),
34248
+ fromViewInfo: (tag, buffer2, byteOffset, length) => {
34249
+ const Constructor = (
34250
+ /** @type {any} */
34251
+ globalThis[tag]
34252
+ );
34253
+ return byteOffset !== void 0 ? new Constructor(buffer2, byteOffset, length) : new Constructor(buffer2);
34254
+ },
34255
+ box: (value) => Object(value),
34256
+ createArray: (length) => new Array(length),
34257
+ createSparseArray: (length) => {
34258
+ const array2 = [];
34259
+ array2[MAX_ARRAY_INDEX] = void 0;
34260
+ delete array2[MAX_ARRAY_INDEX];
34261
+ array2.length = length;
34262
+ return array2;
34263
+ },
34264
+ createObject: () => ({}),
34265
+ createNullPrototypeObject: () => /* @__PURE__ */ Object.create(null),
34266
+ createSet: () => /* @__PURE__ */ new Set(),
34267
+ createMap: () => /* @__PURE__ */ new Map(),
34268
+ set: (target2, key, value) => {
34269
+ target2[key] = value;
34270
+ },
34271
+ addValue: (set2, value) => {
34272
+ set2.add(value);
34273
+ },
34274
+ addEntry: (map2, key, value) => {
34275
+ map2.set(key, value);
34276
+ }
34277
+ };
34278
+ const default_parse_operations = Object.freeze(parse_operations);
34279
+ function parse$7(serialized, revivers, options) {
34199
34280
  return unflatten(JSON.parse(serialized), revivers);
34200
34281
  }
34201
- function unflatten(parsed, revivers) {
34282
+ function unflatten(parsed, revivers, options) {
34283
+ const ops = merge_operations(default_parse_operations);
34202
34284
  if (typeof parsed === "number") return hydrate(parsed, true);
34203
34285
  if (!Array.isArray(parsed) || parsed.length === 0) {
34204
34286
  throw new Error("Invalid input");
@@ -34210,18 +34292,21 @@ function unflatten(parsed, revivers) {
34210
34292
  const hydrated = Array(values.length);
34211
34293
  let hydrating = null;
34212
34294
  function hydrate(index2, standalone = false) {
34213
- if (index2 === UNDEFINED) return void 0;
34214
- if (index2 === NAN) return NaN;
34215
- if (index2 === POSITIVE_INFINITY) return Infinity;
34216
- if (index2 === NEGATIVE_INFINITY) return -Infinity;
34217
- if (index2 === NEGATIVE_ZERO) return -0;
34295
+ if (index2 === UNDEFINED) return ops.fromPrimitive(void 0);
34296
+ if (index2 === NAN) return ops.fromPrimitive(NaN);
34297
+ if (index2 === POSITIVE_INFINITY) return ops.fromPrimitive(Infinity);
34298
+ if (index2 === NEGATIVE_INFINITY) return ops.fromPrimitive(-Infinity);
34299
+ if (index2 === NEGATIVE_ZERO) return ops.fromPrimitive(-0);
34218
34300
  if (standalone || typeof index2 !== "number") {
34219
34301
  throw new Error(`Invalid input`);
34220
34302
  }
34221
34303
  if (index2 in hydrated) return hydrated[index2];
34304
+ if (index2 >= values.length) {
34305
+ throw new Error(`Invalid input`);
34306
+ }
34222
34307
  const value = values[index2];
34223
34308
  if (!value || typeof value !== "object") {
34224
- hydrated[index2] = value;
34309
+ hydrated[index2] = ops.fromPrimitive(value);
34225
34310
  } else if (Array.isArray(value)) {
34226
34311
  if (typeof value[0] === "string") {
34227
34312
  const type = value[0];
@@ -34231,6 +34316,9 @@ function unflatten(parsed, revivers) {
34231
34316
  if (typeof i !== "number") {
34232
34317
  i = values.push(value[1]) - 1;
34233
34318
  }
34319
+ if (Object.hasOwn(hydrated, i)) {
34320
+ return hydrated[index2] = reviver(hydrated[i]);
34321
+ }
34234
34322
  hydrating ?? (hydrating = /* @__PURE__ */ new Set());
34235
34323
  if (hydrating.has(i)) {
34236
34324
  throw new Error("Invalid circular reference");
@@ -34242,44 +34330,44 @@ function unflatten(parsed, revivers) {
34242
34330
  }
34243
34331
  switch (type) {
34244
34332
  case "Date":
34245
- hydrated[index2] = new Date(value[1]);
34333
+ hydrated[index2] = ops.fromISOString(value[1]);
34246
34334
  break;
34247
34335
  case "Set":
34248
- const set2 = /* @__PURE__ */ new Set();
34336
+ const set2 = ops.createSet();
34249
34337
  hydrated[index2] = set2;
34250
34338
  for (let i = 1; i < value.length; i += 1) {
34251
- set2.add(hydrate(value[i]));
34339
+ ops.addValue(set2, hydrate(value[i]));
34252
34340
  }
34253
34341
  break;
34254
34342
  case "Map":
34255
- const map2 = /* @__PURE__ */ new Map();
34343
+ const map2 = ops.createMap();
34256
34344
  hydrated[index2] = map2;
34257
34345
  for (let i = 1; i < value.length; i += 2) {
34258
- map2.set(hydrate(value[i]), hydrate(value[i + 1]));
34346
+ ops.addEntry(map2, hydrate(value[i]), hydrate(value[i + 1]));
34259
34347
  }
34260
34348
  break;
34261
34349
  case "RegExp":
34262
- hydrated[index2] = new RegExp(value[1], value[2]);
34350
+ hydrated[index2] = ops.fromRegExpInfo(value[1], value[2]);
34263
34351
  break;
34264
34352
  case "Object": {
34265
34353
  const wrapped_index = value[1];
34266
34354
  if (typeof values[wrapped_index] === "object" && values[wrapped_index][0] !== "BigInt") {
34267
34355
  throw new Error("Invalid input");
34268
34356
  }
34269
- hydrated[index2] = Object(hydrate(wrapped_index));
34357
+ hydrated[index2] = ops.box(hydrate(wrapped_index));
34270
34358
  break;
34271
34359
  }
34272
34360
  case "BigInt":
34273
- hydrated[index2] = BigInt(value[1]);
34361
+ hydrated[index2] = ops.fromPrimitive(BigInt(value[1]));
34274
34362
  break;
34275
34363
  case "null":
34276
- const obj = /* @__PURE__ */ Object.create(null);
34364
+ const obj = ops.createNullPrototypeObject();
34277
34365
  hydrated[index2] = obj;
34278
34366
  for (let i = 1; i < value.length; i += 2) {
34279
34367
  if (value[i] === "__proto__") {
34280
34368
  throw new Error("Cannot parse an object with a `__proto__` property");
34281
34369
  }
34282
- obj[value[i]] = hydrate(value[i + 1]);
34370
+ ops.set(obj, value[i], hydrate(value[i + 1]));
34283
34371
  }
34284
34372
  break;
34285
34373
  case "Int8Array":
@@ -34298,9 +34386,8 @@ function unflatten(parsed, revivers) {
34298
34386
  if (values[value[1]][0] !== "ArrayBuffer") {
34299
34387
  throw new Error("Invalid data");
34300
34388
  }
34301
- const TypedArrayConstructor = globalThis[type];
34302
34389
  const buffer2 = hydrate(value[1]);
34303
- hydrated[index2] = value[2] !== void 0 ? new TypedArrayConstructor(buffer2, value[2], value[3]) : new TypedArrayConstructor(buffer2);
34390
+ hydrated[index2] = ops.fromViewInfo(type, buffer2, value[2], value[3]);
34304
34391
  break;
34305
34392
  }
34306
34393
  case "ArrayBuffer": {
@@ -34308,10 +34395,11 @@ function unflatten(parsed, revivers) {
34308
34395
  if (typeof base642 !== "string") {
34309
34396
  throw new Error("Invalid ArrayBuffer encoding");
34310
34397
  }
34311
- const arraybuffer = decode64(base642);
34312
- hydrated[index2] = arraybuffer;
34398
+ hydrated[index2] = ops.fromArrayBuffer(decode64(base642));
34313
34399
  break;
34314
34400
  }
34401
+ case "URL":
34402
+ case "URLSearchParams":
34315
34403
  case "Temporal.Duration":
34316
34404
  case "Temporal.Instant":
34317
34405
  case "Temporal.PlainDate":
@@ -34320,18 +34408,7 @@ function unflatten(parsed, revivers) {
34320
34408
  case "Temporal.PlainMonthDay":
34321
34409
  case "Temporal.PlainYearMonth":
34322
34410
  case "Temporal.ZonedDateTime": {
34323
- const temporalName = type.slice(9);
34324
- hydrated[index2] = Temporal[temporalName].from(value[1]);
34325
- break;
34326
- }
34327
- case "URL": {
34328
- const url2 = new URL(value[1]);
34329
- hydrated[index2] = url2;
34330
- break;
34331
- }
34332
- case "URLSearchParams": {
34333
- const url2 = new URLSearchParams(value[1]);
34334
- hydrated[index2] = url2;
34411
+ hydrated[index2] = ops.fromStringValue(type, value[1]);
34335
34412
  break;
34336
34413
  }
34337
34414
  default:
@@ -34342,47 +34419,44 @@ function unflatten(parsed, revivers) {
34342
34419
  if (!is_valid_array_len(len)) {
34343
34420
  throw new Error("Invalid input");
34344
34421
  }
34345
- const array2 = [];
34422
+ const array2 = ops.createSparseArray(len);
34346
34423
  hydrated[index2] = array2;
34347
- array2[MAX_ARRAY_INDEX] = void 0;
34348
- delete array2[MAX_ARRAY_INDEX];
34349
34424
  for (let i = 2; i < value.length; i += 2) {
34350
34425
  const idx = value[i];
34351
34426
  if (!is_valid_array_index(idx) || idx >= len) {
34352
34427
  throw new Error("Invalid input");
34353
34428
  }
34354
- array2[idx] = hydrate(value[i + 1]);
34429
+ ops.set(array2, idx, hydrate(value[i + 1]));
34355
34430
  }
34356
- array2.length = len;
34357
34431
  } else {
34358
- const array2 = new Array(value.length);
34432
+ const array2 = ops.createArray(value.length);
34359
34433
  hydrated[index2] = array2;
34360
34434
  for (let i = 0; i < value.length; i += 1) {
34361
34435
  const n = value[i];
34362
34436
  if (n === HOLE) continue;
34363
- array2[i] = hydrate(n);
34437
+ ops.set(array2, i, hydrate(n));
34364
34438
  }
34365
34439
  }
34366
34440
  } else {
34367
- const object2 = {};
34441
+ const object2 = ops.createObject();
34368
34442
  hydrated[index2] = object2;
34369
34443
  for (const key of Object.keys(value)) {
34370
34444
  if (key === "__proto__") {
34371
34445
  throw new Error("Cannot parse an object with a `__proto__` property");
34372
34446
  }
34373
- const n = value[key];
34374
- object2[key] = hydrate(n);
34447
+ ops.set(object2, key, hydrate(value[key]));
34375
34448
  }
34376
34449
  }
34377
34450
  return hydrated[index2];
34378
34451
  }
34379
34452
  return hydrate(0);
34380
34453
  }
34381
- function stringify$2(value, reducers) {
34454
+ function stringify$2(value, reducers, options) {
34382
34455
  const stringified = run(false, value, reducers);
34383
34456
  return typeof stringified === "string" ? stringified : `[${stringified.join(",")}]`;
34384
34457
  }
34385
- function run(async, value, reducers) {
34458
+ function run(async, value, reducers, options) {
34459
+ const ops = merge_operations(default_stringify_operations);
34386
34460
  const stringified = [];
34387
34461
  const indexes = /* @__PURE__ */ new Map();
34388
34462
  const custom2 = [];
@@ -34394,17 +34468,24 @@ function run(async, value, reducers) {
34394
34468
  const keys2 = [];
34395
34469
  let p2 = 0;
34396
34470
  function flatten(thing, index3) {
34397
- if (thing === void 0) return UNDEFINED;
34398
- if (Number.isNaN(thing)) return NAN;
34399
- if (thing === Infinity) return POSITIVE_INFINITY;
34400
- if (thing === -Infinity) return NEGATIVE_INFINITY;
34401
- if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO;
34402
- if (indexes.has(thing)) return (
34471
+ const type = ops.typeOf(thing);
34472
+ if (type === "undefined") return UNDEFINED;
34473
+ let number2;
34474
+ if (type === "number") {
34475
+ number2 = /** @type {number} */
34476
+ ops.toPrimitive(thing);
34477
+ if (Number.isNaN(number2)) return NAN;
34478
+ if (number2 === Infinity) return POSITIVE_INFINITY;
34479
+ if (number2 === -Infinity) return NEGATIVE_INFINITY;
34480
+ if (number2 === 0 && 1 / number2 < 0) return NEGATIVE_ZERO;
34481
+ }
34482
+ const id2 = ops.identify(thing);
34483
+ if (indexes.has(id2)) return (
34403
34484
  /** @type {number} */
34404
- indexes.get(thing)
34485
+ indexes.get(id2)
34405
34486
  );
34406
34487
  index3 ?? (index3 = p2++);
34407
- indexes.set(thing, index3);
34488
+ indexes.set(id2, index3);
34408
34489
  for (const { key, fn: fn2 } of custom2) {
34409
34490
  const value2 = fn2(thing);
34410
34491
  if (value2) {
@@ -34412,15 +34493,15 @@ function run(async, value, reducers) {
34412
34493
  return index3;
34413
34494
  }
34414
34495
  }
34415
- if (typeof thing === "function") {
34496
+ if (type === "function") {
34416
34497
  throw new DevalueError(`Cannot stringify a function`, keys2, thing, value);
34417
- } else if (typeof thing === "symbol") {
34498
+ } else if (type === "symbol") {
34418
34499
  throw new DevalueError(`Cannot stringify a Symbol primitive`, keys2, thing, value);
34419
34500
  }
34420
34501
  let str = "";
34421
- if (is_primitive(thing)) {
34422
- str = stringify_primitive(thing);
34423
- } else if (typeof thing.then === "function") {
34502
+ if (type !== "object") {
34503
+ str = stringify_primitive(type === "number" ? number2 : ops.toPrimitive(thing));
34504
+ } else if (ops.isThenable(thing)) {
34424
34505
  {
34425
34506
  throw new DevalueError(
34426
34507
  `Cannot stringify a Promise or thenable — use stringifyAsync instead`,
@@ -34430,54 +34511,51 @@ function run(async, value, reducers) {
34430
34511
  );
34431
34512
  }
34432
34513
  } else {
34433
- const type = get_type(thing);
34434
- switch (type) {
34514
+ const tag = ops.tagOf(thing);
34515
+ switch (tag) {
34435
34516
  case "Number":
34436
34517
  case "String":
34437
34518
  case "Boolean":
34438
34519
  case "BigInt":
34439
- str = `["Object",${flatten(thing.valueOf())}]`;
34520
+ str = `["Object",${flatten(ops.unbox(thing))}]`;
34440
34521
  break;
34441
34522
  case "Date":
34442
- const valid2 = !isNaN(thing.getDate());
34443
- str = `["Date","${valid2 ? thing.toISOString() : ""}"]`;
34523
+ str = `["Date","${ops.toISOString(thing)}"]`;
34444
34524
  break;
34445
34525
  case "URL":
34446
- str = `["URL",${stringify_string(thing.toString())}]`;
34526
+ str = `["URL",${stringify_string(ops.toStringValue(thing))}]`;
34447
34527
  break;
34448
34528
  case "URLSearchParams":
34449
- str = `["URLSearchParams",${stringify_string(thing.toString())}]`;
34529
+ str = `["URLSearchParams",${stringify_string(ops.toStringValue(thing))}]`;
34450
34530
  break;
34451
34531
  case "RegExp":
34452
- const { source, flags } = thing;
34532
+ const { source, flags } = ops.regExpInfo(thing);
34453
34533
  str = flags ? `["RegExp",${stringify_string(source)},"${flags}"]` : `["RegExp",${stringify_string(source)}]`;
34454
34534
  break;
34455
34535
  case "Array": {
34456
34536
  let mostly_dense = false;
34537
+ const length = ops.lengthOf(thing);
34457
34538
  str = "[";
34458
- for (let i = 0; i < thing.length; i += 1) {
34539
+ for (let i = 0; i < length; i += 1) {
34459
34540
  if (i > 0) str += ",";
34460
- if (Object.hasOwn(thing, i)) {
34541
+ if (ops.hasOwn(thing, i)) {
34461
34542
  keys2.push(`[${i}]`);
34462
- str += flatten(thing[i]);
34543
+ str += flatten(ops.get(thing, i));
34463
34544
  keys2.pop();
34464
34545
  } else if (mostly_dense) {
34465
34546
  str += HOLE;
34466
34547
  } else {
34467
- const populated_keys = valid_array_indices(
34468
- /** @type {any[]} */
34469
- thing
34470
- );
34548
+ const populated_keys = ops.indicesOf(thing);
34471
34549
  const population = populated_keys.length;
34472
- const d2 = String(thing.length).length;
34473
- const hole_cost = (thing.length - population) * 3;
34550
+ const d2 = String(length).length;
34551
+ const hole_cost = (length - population) * 3;
34474
34552
  const sparse_cost = 4 + d2 + population * (d2 + 1);
34475
34553
  if (hole_cost > sparse_cost) {
34476
- str = "[" + SPARSE + "," + thing.length;
34554
+ str = "[" + SPARSE + "," + length;
34477
34555
  for (let j2 = 0; j2 < populated_keys.length; j2++) {
34478
34556
  const key = populated_keys[j2];
34479
34557
  keys2.push(`[${key}]`);
34480
- str += "," + key + "," + flatten(thing[key]);
34558
+ str += "," + key + "," + flatten(ops.get(thing, key));
34481
34559
  keys2.pop();
34482
34560
  }
34483
34561
  break;
@@ -34492,15 +34570,19 @@ function run(async, value, reducers) {
34492
34570
  }
34493
34571
  case "Set":
34494
34572
  str = '["Set"';
34495
- for (const value2 of thing) {
34573
+ for (const value2 of ops.valuesOf(thing)) {
34496
34574
  str += `,${flatten(value2)}`;
34497
34575
  }
34498
34576
  str += "]";
34499
34577
  break;
34500
34578
  case "Map":
34501
34579
  str = '["Map"';
34502
- for (const [key, value2] of thing) {
34503
- keys2.push(`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`);
34580
+ for (const [key, value2] of ops.entriesOf(thing)) {
34581
+ const key_type = ops.typeOf(key);
34582
+ const key_is_primitive = key_type !== "object" && key_type !== "function" && key_type !== "symbol";
34583
+ keys2.push(
34584
+ `.get(${key_is_primitive ? stringify_primitive(ops.toPrimitive(key)) : "..."})`
34585
+ );
34504
34586
  str += `,${flatten(key)},${flatten(value2)}`;
34505
34587
  keys2.pop();
34506
34588
  }
@@ -34517,19 +34599,26 @@ function run(async, value, reducers) {
34517
34599
  case "Float32Array":
34518
34600
  case "Float64Array":
34519
34601
  case "BigInt64Array":
34520
- case "BigUint64Array":
34602
+ case "BigUint64Array": {
34603
+ const info = ops.viewInfo(thing);
34604
+ str = '["' + tag + '",' + flatten(info.buffer);
34605
+ if (info.byteLength !== info.bufferByteLength) {
34606
+ str += `,${info.byteOffset},${info.length}`;
34607
+ }
34608
+ str += "]";
34609
+ break;
34610
+ }
34521
34611
  case "DataView": {
34522
- const typedArray = thing;
34523
- str = '["' + type + '",' + flatten(typedArray.buffer);
34524
- if (typedArray.byteLength !== typedArray.buffer.byteLength) {
34525
- str += `,${typedArray.byteOffset},${typedArray.length}`;
34612
+ const info = ops.viewInfo(thing);
34613
+ str = '["' + tag + '",' + flatten(info.buffer);
34614
+ if (info.byteLength !== info.bufferByteLength) {
34615
+ str += `,${info.byteOffset},${info.byteLength}`;
34526
34616
  }
34527
34617
  str += "]";
34528
34618
  break;
34529
34619
  }
34530
34620
  case "ArrayBuffer": {
34531
- const arraybuffer = thing;
34532
- const base642 = encode64(arraybuffer);
34621
+ const base642 = encode64(ops.toArrayBuffer(thing));
34533
34622
  str = `["ArrayBuffer","${base642}"]`;
34534
34623
  break;
34535
34624
  }
@@ -34541,18 +34630,19 @@ function run(async, value, reducers) {
34541
34630
  case "Temporal.PlainMonthDay":
34542
34631
  case "Temporal.PlainYearMonth":
34543
34632
  case "Temporal.ZonedDateTime":
34544
- str = `["${type}",${stringify_string(thing.toString())}]`;
34633
+ str = `["${tag}",${stringify_string(ops.toStringValue(thing))}]`;
34545
34634
  break;
34546
- default:
34547
- if (!is_plain_object(thing)) {
34635
+ default: {
34636
+ const shape = ops.shapeOf(thing);
34637
+ if (shape.kind === "not-plain") {
34548
34638
  throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys2, thing, value);
34549
34639
  }
34550
- if (enumerable_symbols(thing).length > 0) {
34640
+ if (shape.kind === "symbol-keys") {
34551
34641
  throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys2, thing, value);
34552
34642
  }
34553
- if (Object.getPrototypeOf(thing) === null) {
34643
+ if (shape.kind === "null-proto") {
34554
34644
  str = '["null"';
34555
- for (const key of Object.keys(thing)) {
34645
+ for (const key of shape.keys) {
34556
34646
  if (key === "__proto__") {
34557
34647
  throw new DevalueError(
34558
34648
  `Cannot stringify objects with __proto__ keys`,
@@ -34562,14 +34652,14 @@ function run(async, value, reducers) {
34562
34652
  );
34563
34653
  }
34564
34654
  keys2.push(stringify_key(key));
34565
- str += `,${stringify_string(key)},${flatten(thing[key])}`;
34655
+ str += `,${stringify_string(key)},${flatten(ops.get(thing, key))}`;
34566
34656
  keys2.pop();
34567
34657
  }
34568
34658
  str += "]";
34569
34659
  } else {
34570
34660
  str = "{";
34571
34661
  let started = false;
34572
- for (const key of Object.keys(thing)) {
34662
+ for (const key of shape.keys) {
34573
34663
  if (key === "__proto__") {
34574
34664
  throw new DevalueError(
34575
34665
  `Cannot stringify objects with __proto__ keys`,
@@ -34581,11 +34671,12 @@ function run(async, value, reducers) {
34581
34671
  if (started) str += ",";
34582
34672
  started = true;
34583
34673
  keys2.push(stringify_key(key));
34584
- str += `${stringify_string(key)}:${flatten(thing[key])}`;
34674
+ str += `${stringify_string(key)}:${flatten(ops.get(thing, key))}`;
34585
34675
  keys2.pop();
34586
34676
  }
34587
34677
  str += "}";
34588
34678
  }
34679
+ }
34589
34680
  }
34590
34681
  }
34591
34682
  stringified[index3] = str;
@@ -34874,6 +34965,26 @@ function warnOnce(key, message2) {
34874
34965
  warnedEnvValues.add(key);
34875
34966
  console.warn(`[workflow] ${message2}`);
34876
34967
  }
34968
+ function envNumber(name2, fallback, options = {}) {
34969
+ const raw2 = process.env[name2];
34970
+ if (raw2 === void 0 || raw2 === "")
34971
+ return fallback;
34972
+ const { min: min2 = 0, max: max2, integer: integer2 = false } = options;
34973
+ const parsed = Number(raw2);
34974
+ if (!Number.isFinite(parsed) || integer2 && !Number.isInteger(parsed)) {
34975
+ warnOnce(`${name2}=${raw2}`, `Ignoring ${name2}: not a ${integer2 ? "finite integer" : "finite number"}; using default ${fallback}`);
34976
+ return fallback;
34977
+ }
34978
+ if (parsed < min2) {
34979
+ warnOnce(`${name2}=${raw2}`, `${name2} below minimum ${min2}; clamped`);
34980
+ return min2;
34981
+ }
34982
+ if (max2 !== void 0 && parsed > max2) {
34983
+ warnOnce(`${name2}=${raw2}`, `${name2} above maximum ${max2}; clamped`);
34984
+ return max2;
34985
+ }
34986
+ return parsed;
34987
+ }
34877
34988
  function envFlag(name2, fallback, env2 = process.env) {
34878
34989
  const raw2 = env2[name2];
34879
34990
  if (raw2 === void 0 || raw2 === "")
@@ -81857,7 +81968,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
81857
81968
  var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
81858
81969
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
81859
81970
  var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
81860
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DCJ0KRmM.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81971
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CmiyUOiW.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81861
81972
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
81862
81973
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
81863
81974
  return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
@@ -82179,7 +82290,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
82179
82290
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
82180
82291
  };
82181
82292
  var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
82182
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Dagv8YB7.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82293
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Ku6qjB5F.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82183
82294
  function ke(e, t) {
82184
82295
  if (!(e != null && e.position || t != null && t.position)) return true;
82185
82296
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -92071,7 +92182,7 @@ createLogger("build", {
92071
92182
  debugNamespace: "workflow:build"
92072
92183
  });
92073
92184
  const MAX_QUEUE_DELIVERIES = 48;
92074
- const version$1 = "4.8.7";
92185
+ const version$1 = "4.8.9";
92075
92186
  const execFileAsync = promisify(execFile);
92076
92187
  function parsePort$1(value, radix = 10) {
92077
92188
  const port = parseInt(value, radix);
@@ -120733,7 +120844,7 @@ function createLocalWorld(args) {
120733
120844
  const basedir = mergedConfig.dataDir;
120734
120845
  const hooksDir = path$3.join(basedir, "hooks");
120735
120846
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
120736
- const { HookSchema: HookSchema2 } = await import("./index-B4hi3c32.js");
120847
+ const { HookSchema: HookSchema2 } = await import("./index-iPDTwQkr.js");
120737
120848
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
120738
120849
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
120739
120850
  if (hook == null ? void 0 : hook.token) {
@@ -120770,6 +120881,7 @@ function createLocalWorld(args) {
120770
120881
  };
120771
120882
  }
120772
120883
  let _dispatcher;
120884
+ let _queueDispatcher;
120773
120885
  let _streamDispatcher;
120774
120886
  let _streamCloseDispatcher;
120775
120887
  let _nodeHttpAgents;
@@ -120820,6 +120932,64 @@ function getAgentOptions() {
120820
120932
  pipelining: 1
120821
120933
  };
120822
120934
  }
120935
+ const QUEUE_AGENT_CONNECTIONS = 64;
120936
+ const QUEUE_REQUEST_TIMEOUT_MS = 3e4;
120937
+ const getQueueRequestTimeoutMs = () => envNumber("WORKFLOW_VERCEL_QUEUE_TIMEOUT_MS", QUEUE_REQUEST_TIMEOUT_MS, {
120938
+ integer: true,
120939
+ min: 5e3,
120940
+ max: 12e4
120941
+ });
120942
+ function getQueueAgentOptions() {
120943
+ const timeoutMs = getQueueRequestTimeoutMs();
120944
+ return {
120945
+ ...getAgentOptions(),
120946
+ connections: envNumber("WORKFLOW_VERCEL_QUEUE_CONNECTIONS", QUEUE_AGENT_CONNECTIONS, { integer: true, min: 1, max: 1024 }),
120947
+ headersTimeout: timeoutMs,
120948
+ bodyTimeout: timeoutMs
120949
+ };
120950
+ }
120951
+ const ForwardingHandler = undiciExports.DecoratorHandler;
120952
+ function deadlineInterceptor(timeoutMs) {
120953
+ var _expired, _controller, _timer, _DeadlineHandler_instances, abort_fn;
120954
+ class DeadlineHandler extends ForwardingHandler {
120955
+ constructor(handler) {
120956
+ var _a3, _b2;
120957
+ super(handler);
120958
+ __privateAdd(this, _DeadlineHandler_instances);
120959
+ __privateAdd(this, _expired, false);
120960
+ __privateAdd(this, _controller);
120961
+ __privateAdd(this, _timer);
120962
+ __privateSet(this, _timer, setTimeout(() => {
120963
+ __privateSet(this, _expired, true);
120964
+ __privateMethod(this, _DeadlineHandler_instances, abort_fn).call(this);
120965
+ }, timeoutMs));
120966
+ (_b2 = (_a3 = __privateGet(this, _timer)).unref) == null ? void 0 : _b2.call(_a3);
120967
+ }
120968
+ onRequestStart(controller, context) {
120969
+ __privateSet(this, _controller, controller);
120970
+ super.onRequestStart(controller, context);
120971
+ if (__privateGet(this, _expired))
120972
+ __privateMethod(this, _DeadlineHandler_instances, abort_fn).call(this);
120973
+ }
120974
+ onResponseEnd(controller, trailers) {
120975
+ clearTimeout(__privateGet(this, _timer));
120976
+ super.onResponseEnd(controller, trailers);
120977
+ }
120978
+ onResponseError(controller, error2) {
120979
+ clearTimeout(__privateGet(this, _timer));
120980
+ super.onResponseError(controller, error2);
120981
+ }
120982
+ }
120983
+ _expired = new WeakMap();
120984
+ _controller = new WeakMap();
120985
+ _timer = new WeakMap();
120986
+ _DeadlineHandler_instances = new WeakSet();
120987
+ abort_fn = function() {
120988
+ var _a3;
120989
+ (_a3 = __privateGet(this, _controller)) == null ? void 0 : _a3.abort(new Error(`Queue request exceeded its ${timeoutMs}ms deadline`));
120990
+ };
120991
+ return (dispatch2) => (opts, handler) => dispatch2(opts, new DeadlineHandler(handler));
120992
+ }
120823
120993
  function getEventsAgentOptions() {
120824
120994
  return {
120825
120995
  ...getBaseAgentOptions(),
@@ -121000,7 +121170,7 @@ function getDispatcher(config2) {
121000
121170
  return resolveDispatcher(config2, getDefaultDispatcher);
121001
121171
  }
121002
121172
  function getQueueDispatcher(config2) {
121003
- return (config2 == null ? void 0 : config2.dispatcher) ?? getDefaultDispatcher();
121173
+ return resolveDispatcher(config2, getDefaultQueueDispatcher);
121004
121174
  }
121005
121175
  function getEventsDispatcher(config2) {
121006
121176
  return resolveDispatcher(config2, () => eventsRecycler.get());
@@ -121030,6 +121200,13 @@ function withBoundLifecycle(agent2, composed) {
121030
121200
  function createStreamDispatcher(retryOptions, agentOverrides) {
121031
121201
  return new undiciExports.RetryAgent(new undiciExports.Agent({ ...getStreamAgentOptions(), ...agentOverrides }), retryOptions);
121032
121202
  }
121203
+ function createQueueDispatcher() {
121204
+ return new undiciExports.RetryAgent(new undiciExports.Agent(getQueueAgentOptions()).compose(deadlineInterceptor(getQueueRequestTimeoutMs())), getRetryAgentOptions());
121205
+ }
121206
+ function getDefaultQueueDispatcher() {
121207
+ _queueDispatcher ?? (_queueDispatcher = createQueueDispatcher());
121208
+ return _queueDispatcher;
121209
+ }
121033
121210
  function getDefaultDispatcher() {
121034
121211
  _dispatcher ?? (_dispatcher = new undiciExports.RetryAgent(new undiciExports.Agent(getAgentOptions()), getRetryAgentOptions()));
121035
121212
  return _dispatcher;
@@ -121160,8 +121337,8 @@ function requireGetVercelOidcToken() {
121160
121337
  }
121161
121338
  try {
121162
121339
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
121163
- await import("./token-util-Br9V80P7.js").then((n) => n.t),
121164
- await import("./token-CERc2_Jt.js").then((n) => n.t)
121340
+ await import("./token-util-BszBIaAk.js").then((n) => n.t),
121341
+ await import("./token-CPIWEDbd.js").then((n) => n.t)
121165
121342
  ]);
121166
121343
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
121167
121344
  await refreshToken(options);
@@ -126707,7 +126884,7 @@ var QueueClient = class {
126707
126884
  setApi(this, new ApiClient({ ...options, region }));
126708
126885
  }
126709
126886
  };
126710
- const version = "4.7.3";
126887
+ const version = "4.7.4";
126711
126888
  const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
126712
126889
  const MAX_BODY_PARSE_RETRIES = 2;
126713
126890
  const BODY_PARSE_RETRY_BASE_MS = 100;
@@ -128529,10 +128706,10 @@ const getWorld = () => {
128529
128706
  return globalSymbols$1[WorldCache];
128530
128707
  };
128531
128708
  const DEFAULT_HEALTH_CHECK_TIMEOUT = 3e4;
128532
- const SAFE_WORKFLOW_NAME_PATTERN = /^[a-zA-Z0-9_\-./@]+$/;
128709
+ const SAFE_WORKFLOW_NAME_PATTERN = /^[a-zA-Z0-9_\-./@()[\]]+$/;
128533
128710
  function getWorkflowQueueName(workflowName, namespace2) {
128534
128711
  if (!SAFE_WORKFLOW_NAME_PATTERN.test(workflowName)) {
128535
- throw new Error(`Invalid workflow name "${workflowName}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, or at signs`);
128712
+ throw new Error(`Invalid workflow name "${workflowName}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, at signs, parentheses, or square brackets`);
128536
128713
  }
128537
128714
  const prefix = getQueueTopicPrefix("workflow", resolveQueueNamespace(namespace2));
128538
128715
  return `${prefix}${workflowName}`;
@@ -129254,12 +129431,22 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129254
129431
  let reconnectCount = 0;
129255
129432
  let totalReconnectCount = 0;
129256
129433
  let reader;
129434
+ let canceled = false;
129435
+ let cancelReason;
129257
129436
  let buffer2 = new Uint8Array(0);
129258
129437
  async function connect2() {
129438
+ if (canceled)
129439
+ return false;
129259
129440
  const world = getWorld();
129260
129441
  const effectiveStartIndex = reconnectSupported ? currentStartIndex + consumedFrames : startIndex;
129261
129442
  const stream = await world.readFromStream(name2, effectiveStartIndex);
129443
+ if (canceled) {
129444
+ await stream.cancel(cancelReason).catch(() => {
129445
+ });
129446
+ return false;
129447
+ }
129262
129448
  reader = stream.getReader();
129449
+ return true;
129263
129450
  }
129264
129451
  async function isVerifiedComplete() {
129265
129452
  try {
@@ -129271,11 +129458,15 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129271
129458
  }
129272
129459
  }
129273
129460
  async function reconnect() {
129461
+ if (canceled)
129462
+ return false;
129274
129463
  if (reader) {
129275
129464
  await reader.cancel().catch(() => {
129276
129465
  });
129277
129466
  reader = void 0;
129278
129467
  }
129468
+ if (canceled)
129469
+ return false;
129279
129470
  currentStartIndex += consumedFrames;
129280
129471
  consumedFrames = 0;
129281
129472
  buffer2 = new Uint8Array(0);
@@ -129289,19 +129480,27 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129289
129480
  throw new Error(`Stream "${name2}" exceeded maximum total reconnection attempts (${FRAMED_STREAM_MAX_TOTAL_RECONNECTS})`);
129290
129481
  }
129291
129482
  try {
129292
- await connect2();
129293
- return;
129483
+ if (!await connect2())
129484
+ return false;
129485
+ return true;
129294
129486
  } catch {
129487
+ if (canceled)
129488
+ return false;
129295
129489
  }
129296
129490
  }
129297
129491
  }
129298
129492
  return new ReadableStream({
129299
129493
  pull: async (controller) => {
129494
+ if (canceled)
129495
+ return;
129300
129496
  for (; ; ) {
129301
129497
  if (!reader) {
129302
129498
  try {
129303
- await connect2();
129499
+ if (!await connect2())
129500
+ return;
129304
129501
  } catch (err) {
129502
+ if (canceled)
129503
+ return;
129305
129504
  controller.error(err);
129306
129505
  return;
129307
129506
  }
@@ -129310,23 +129509,32 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129310
129509
  try {
129311
129510
  result = await reader.read();
129312
129511
  } catch (err) {
129512
+ if (canceled)
129513
+ return;
129313
129514
  if (!reconnectSupported) {
129314
129515
  controller.error(err);
129315
129516
  return;
129316
129517
  }
129317
129518
  try {
129318
- await reconnect();
129519
+ if (!await reconnect())
129520
+ return;
129319
129521
  } catch (reconnectErr) {
129320
129522
  controller.error(reconnectErr);
129321
129523
  return;
129322
129524
  }
129323
129525
  continue;
129324
129526
  }
129527
+ if (canceled)
129528
+ return;
129325
129529
  if (result.done || !result.value) {
129326
129530
  reader = void 0;
129327
- if (reconnectSupported && !await isVerifiedComplete()) {
129531
+ const verifiedComplete = !reconnectSupported || await isVerifiedComplete();
129532
+ if (canceled)
129533
+ return;
129534
+ if (!verifiedComplete) {
129328
129535
  try {
129329
- await reconnect();
129536
+ if (!await reconnect())
129537
+ return;
129330
129538
  } catch (reconnectErr) {
129331
129539
  controller.error(reconnectErr);
129332
129540
  return;
@@ -129360,12 +129568,15 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129360
129568
  }
129361
129569
  }
129362
129570
  },
129363
- cancel: async () => {
129364
- if (reader) {
129365
- await reader.cancel().catch((err) => {
129571
+ cancel: async (reason) => {
129572
+ canceled = true;
129573
+ cancelReason = reason;
129574
+ const currentReader = reader;
129575
+ reader = void 0;
129576
+ if (currentReader) {
129577
+ await currentReader.cancel(reason).catch((err) => {
129366
129578
  console.warn("Error closing ReadableStream reader:", err);
129367
129579
  });
129368
- reader = void 0;
129369
129580
  }
129370
129581
  }
129371
129582
  });
@@ -155881,7 +156092,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
155881
156092
  __proto__: null,
155882
156093
  loader
155883
156094
  }, Symbol.toStringTag, { value: "Module" }));
155884
- const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-BxnaECGo.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-Blj6TeEE.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-DivTczoC.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-7bf3847b.js", "version": "7bf3847b", "sri": void 0 };
156095
+ const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-8dRSI2dZ.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-CWZI6fn-.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C1On-L19.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-CaG8UDwA.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C1On-L19.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-25c2e662.js", "version": "25c2e662", "sri": void 0 };
155885
156096
  const assetsBuildDirectory = "build/client";
155886
156097
  const basename = "/";
155887
156098
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
@@ -155950,42 +156161,43 @@ const serverBuild = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineP
155950
156161
  ssr
155951
156162
  }, Symbol.toStringTag, { value: "Module" }));
155952
156163
  export {
155953
- validateUlidTimestamp as $,
156164
+ ulidToDate as $,
155954
156165
  envFlag as A,
155955
156166
  BaseEventSchema as B,
155956
- getQueueTopicPrefix as C,
156167
+ envNumber as C,
155957
156168
  DEFAULT_TIMESTAMP_THRESHOLD_FUTURE_MS as D,
155958
156169
  EVENT_DATA_REF_FIELDS as E,
155959
- isLegacySpecVersion as F,
155960
- isNodeHttpEnabled as G,
156170
+ getQueueTopicPrefix as F,
156171
+ isLegacySpecVersion as G,
155961
156172
  HookSchema as H,
155962
- isTerminalRunEventType as I,
155963
- isTerminalStepStatus as J,
155964
- isTerminalWorkflowRunStatus as K,
156173
+ isNodeHttpEnabled as I,
156174
+ isTerminalRunEventType as J,
156175
+ isTerminalStepStatus as K,
155965
156176
  LegacySerializedDataSchemaV1 as L,
155966
156177
  MessageId as M,
155967
156178
  Nt as N,
155968
- parseQueueName as O,
156179
+ isTerminalWorkflowRunStatus as O,
155969
156180
  PaginatedResponseSchema as P,
155970
156181
  QueuePayloadSchema as Q,
155971
156182
  RunInputSchema as R,
155972
156183
  SPEC_VERSION_CURRENT as S,
155973
156184
  TERMINAL_RUN_EVENT_TYPES as T,
155974
- reenqueueActiveRuns as U,
156185
+ parseQueueName as U,
155975
156186
  ValidQueueName as V,
155976
156187
  WaitSchema as W,
155977
- requiresNewerWorld as X,
155978
- resolveQueueNamespace as Y,
155979
- stripEventDataRefs as Z,
155980
- ulidToDate as _,
156188
+ reenqueueActiveRuns as X,
156189
+ requiresNewerWorld as Y,
156190
+ resolveQueueNamespace as Z,
156191
+ stripEventDataRefs as _,
155981
156192
  DEFAULT_TIMESTAMP_THRESHOLD_PAST_MS as a,
155982
- R as a0,
155983
- Ks as a1,
155984
- jsxRuntimeExports as a2,
155985
- Qe as a3,
155986
- requireTokenUtil as a4,
155987
- requireTokenError as a5,
155988
- serverBuild as a6,
156193
+ validateUlidTimestamp as a0,
156194
+ R as a1,
156195
+ Ks as a2,
156196
+ jsxRuntimeExports as a3,
156197
+ Qe as a4,
156198
+ requireTokenUtil as a5,
156199
+ requireTokenError as a6,
156200
+ serverBuild as a7,
155989
156201
  EventSchema as b,
155990
156202
  EventTypeSchema as c,
155991
156203
  HealthCheckPayloadSchema as d,