@workflow/world-testing 4.1.21 → 4.1.23

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.
@@ -33710,9 +33710,9 @@ var require_redirect = __commonJS({
33710
33710
  var require_response_error = __commonJS({
33711
33711
  "../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/response-error.js"(exports2, module2) {
33712
33712
  "use strict";
33713
- var DecoratorHandler = require_decorator_handler();
33713
+ var DecoratorHandler2 = require_decorator_handler();
33714
33714
  var { ResponseError } = require_errors();
33715
- var ResponseErrorHandler = class extends DecoratorHandler {
33715
+ var ResponseErrorHandler = class extends DecoratorHandler2 {
33716
33716
  static {
33717
33717
  __name(this, "ResponseErrorHandler");
33718
33718
  }
@@ -33820,8 +33820,8 @@ var require_dump = __commonJS({
33820
33820
  "../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/dump.js"(exports2, module2) {
33821
33821
  "use strict";
33822
33822
  var { InvalidArgumentError, RequestAbortedError } = require_errors();
33823
- var DecoratorHandler = require_decorator_handler();
33824
- var DumpHandler = class extends DecoratorHandler {
33823
+ var DecoratorHandler2 = require_decorator_handler();
33824
+ var DumpHandler = class extends DecoratorHandler2 {
33825
33825
  static {
33826
33826
  __name(this, "DumpHandler");
33827
33827
  }
@@ -33911,7 +33911,7 @@ var require_dns = __commonJS({
33911
33911
  "use strict";
33912
33912
  var { isIP } = require("node:net");
33913
33913
  var { lookup } = require("node:dns");
33914
- var DecoratorHandler = require_decorator_handler();
33914
+ var DecoratorHandler2 = require_decorator_handler();
33915
33915
  var { InvalidArgumentError, InformationalError } = require_errors();
33916
33916
  var maxInt = Math.pow(2, 31) - 1;
33917
33917
  function hasSafeIterator(headers) {
@@ -34220,7 +34220,7 @@ var require_dns = __commonJS({
34220
34220
  return new DNSDispatchHandler(this, meta3, opts);
34221
34221
  }
34222
34222
  };
34223
- var DNSDispatchHandler = class extends DecoratorHandler {
34223
+ var DNSDispatchHandler = class extends DecoratorHandler2 {
34224
34224
  static {
34225
34225
  __name(this, "DNSDispatchHandler");
34226
34226
  }
@@ -36150,7 +36150,7 @@ var require_decompress = __commonJS({
36150
36150
  "use strict";
36151
36151
  var { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require("node:zlib");
36152
36152
  var { pipeline } = require("node:stream");
36153
- var DecoratorHandler = require_decorator_handler();
36153
+ var DecoratorHandler2 = require_decorator_handler();
36154
36154
  var { runtimeFeatures } = require_runtime_features();
36155
36155
  var supportedEncodings = {
36156
36156
  gzip: createGunzip,
@@ -36169,7 +36169,7 @@ var require_decompress = __commonJS({
36169
36169
  /** @type {boolean} */
36170
36170
  false
36171
36171
  );
36172
- var DecompressHandler = class extends DecoratorHandler {
36172
+ var DecompressHandler = class extends DecoratorHandler2 {
36173
36173
  static {
36174
36174
  __name(this, "DecompressHandler");
36175
36175
  }
@@ -44146,7 +44146,7 @@ var require_undici = __commonJS({
44146
44146
  var mockErrors = require_mock_errors();
44147
44147
  var RetryHandler = require_retry_handler();
44148
44148
  var { getGlobalDispatcher, setGlobalDispatcher } = require_global2();
44149
- var DecoratorHandler = require_decorator_handler();
44149
+ var DecoratorHandler2 = require_decorator_handler();
44150
44150
  var RedirectHandler = require_redirect_handler();
44151
44151
  Object.assign(Dispatcher.prototype, api);
44152
44152
  module2.exports.Dispatcher = Dispatcher;
@@ -44161,7 +44161,7 @@ var require_undici = __commonJS({
44161
44161
  module2.exports.RetryAgent = RetryAgent2;
44162
44162
  module2.exports.H2CClient = H2CClient;
44163
44163
  module2.exports.RetryHandler = RetryHandler;
44164
- module2.exports.DecoratorHandler = DecoratorHandler;
44164
+ module2.exports.DecoratorHandler = DecoratorHandler2;
44165
44165
  module2.exports.RedirectHandler = RedirectHandler;
44166
44166
  module2.exports.interceptors = {
44167
44167
  redirect: require_redirect(),
@@ -50526,7 +50526,7 @@ init_dist();
50526
50526
  init_node();
50527
50527
 
50528
50528
  // ../core/dist/version.js
50529
- var version2 = "4.8.6";
50529
+ var version2 = "4.8.8";
50530
50530
 
50531
50531
  // ../core/dist/runtime/world.js
50532
50532
  var import_node_module = require("node:module");
@@ -53893,6 +53893,7 @@ init_zod();
53893
53893
  init_dist();
53894
53894
  var import_undici2 = __toESM(require_undici(), 1);
53895
53895
  var _dispatcher;
53896
+ var _queueDispatcher;
53896
53897
  var _streamDispatcher;
53897
53898
  var _streamCloseDispatcher;
53898
53899
  var _nodeHttpAgents;
@@ -53947,6 +53948,61 @@ function getAgentOptions() {
53947
53948
  };
53948
53949
  }
53949
53950
  __name(getAgentOptions, "getAgentOptions");
53951
+ var QUEUE_AGENT_CONNECTIONS = 64;
53952
+ var QUEUE_REQUEST_TIMEOUT_MS = 3e4;
53953
+ var getQueueRequestTimeoutMs = /* @__PURE__ */ __name(() => envNumber("WORKFLOW_VERCEL_QUEUE_TIMEOUT_MS", QUEUE_REQUEST_TIMEOUT_MS, {
53954
+ integer: true,
53955
+ min: 5e3,
53956
+ max: 12e4
53957
+ }), "getQueueRequestTimeoutMs");
53958
+ function getQueueAgentOptions() {
53959
+ const timeoutMs = getQueueRequestTimeoutMs();
53960
+ return {
53961
+ ...getAgentOptions(),
53962
+ connections: envNumber("WORKFLOW_VERCEL_QUEUE_CONNECTIONS", QUEUE_AGENT_CONNECTIONS, { integer: true, min: 1, max: 1024 }),
53963
+ headersTimeout: timeoutMs,
53964
+ bodyTimeout: timeoutMs
53965
+ };
53966
+ }
53967
+ __name(getQueueAgentOptions, "getQueueAgentOptions");
53968
+ var ForwardingHandler = import_undici2.DecoratorHandler;
53969
+ function deadlineInterceptor(timeoutMs) {
53970
+ class DeadlineHandler extends ForwardingHandler {
53971
+ static {
53972
+ __name(this, "DeadlineHandler");
53973
+ }
53974
+ #expired = false;
53975
+ #controller;
53976
+ #timer;
53977
+ constructor(handler) {
53978
+ super(handler);
53979
+ this.#timer = setTimeout(() => {
53980
+ this.#expired = true;
53981
+ this.#abort();
53982
+ }, timeoutMs);
53983
+ this.#timer.unref?.();
53984
+ }
53985
+ #abort() {
53986
+ this.#controller?.abort(new Error(`Queue request exceeded its ${timeoutMs}ms deadline`));
53987
+ }
53988
+ onRequestStart(controller, context2) {
53989
+ this.#controller = controller;
53990
+ super.onRequestStart(controller, context2);
53991
+ if (this.#expired)
53992
+ this.#abort();
53993
+ }
53994
+ onResponseEnd(controller, trailers) {
53995
+ clearTimeout(this.#timer);
53996
+ super.onResponseEnd(controller, trailers);
53997
+ }
53998
+ onResponseError(controller, error48) {
53999
+ clearTimeout(this.#timer);
54000
+ super.onResponseError(controller, error48);
54001
+ }
54002
+ }
54003
+ return (dispatch) => (opts, handler) => dispatch(opts, new DeadlineHandler(handler));
54004
+ }
54005
+ __name(deadlineInterceptor, "deadlineInterceptor");
53950
54006
  function getEventsAgentOptions() {
53951
54007
  return {
53952
54008
  ...getBaseAgentOptions(),
@@ -54137,7 +54193,7 @@ function getDispatcher(config3) {
54137
54193
  }
54138
54194
  __name(getDispatcher, "getDispatcher");
54139
54195
  function getQueueDispatcher(config3) {
54140
- return config3?.dispatcher ?? getDefaultDispatcher();
54196
+ return resolveDispatcher(config3, getDefaultQueueDispatcher);
54141
54197
  }
54142
54198
  __name(getQueueDispatcher, "getQueueDispatcher");
54143
54199
  function getEventsDispatcher(config3) {
@@ -54174,6 +54230,15 @@ function createStreamDispatcher(retryOptions, agentOverrides) {
54174
54230
  return new import_undici2.RetryAgent(new import_undici2.Agent({ ...getStreamAgentOptions(), ...agentOverrides }), retryOptions);
54175
54231
  }
54176
54232
  __name(createStreamDispatcher, "createStreamDispatcher");
54233
+ function createQueueDispatcher() {
54234
+ return new import_undici2.RetryAgent(new import_undici2.Agent(getQueueAgentOptions()).compose(deadlineInterceptor(getQueueRequestTimeoutMs())), getRetryAgentOptions());
54235
+ }
54236
+ __name(createQueueDispatcher, "createQueueDispatcher");
54237
+ function getDefaultQueueDispatcher() {
54238
+ _queueDispatcher ??= createQueueDispatcher();
54239
+ return _queueDispatcher;
54240
+ }
54241
+ __name(getDefaultQueueDispatcher, "getDefaultQueueDispatcher");
54177
54242
  function getDefaultDispatcher() {
54178
54243
  _dispatcher ??= new import_undici2.RetryAgent(new import_undici2.Agent(getAgentOptions()), getRetryAgentOptions());
54179
54244
  return _dispatcher;
@@ -54274,6 +54339,36 @@ var WorkflowHttpTransport = SemanticConvention3("workflow.http.transport");
54274
54339
 
54275
54340
  // ../world-vercel/dist/http-core.js
54276
54341
  var REQUEST_TIMEOUT_MS = 6e4;
54342
+ var TRANSIENT_TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
54343
+ "UND_ERR_INFO",
54344
+ "UND_ERR_REQ_RETRY",
54345
+ "UND_ERR_SOCKET",
54346
+ "UND_ERR_CONNECT",
54347
+ "UND_ERR_CONNECT_TIMEOUT",
54348
+ "UND_ERR_HEADERS_TIMEOUT",
54349
+ "UND_ERR_BODY_TIMEOUT",
54350
+ "UND_ERR_CLOSED",
54351
+ "ECONNRESET",
54352
+ "ECONNREFUSED",
54353
+ "ENOTFOUND",
54354
+ "EAI_AGAIN",
54355
+ "EPIPE",
54356
+ "ETIMEDOUT"
54357
+ ]);
54358
+ function getTransientTransportCode(error48) {
54359
+ let current = error48;
54360
+ for (let depth = 0; current != null && depth < 8; depth++) {
54361
+ if (typeof current === "object" && "code" in current) {
54362
+ const code = current.code;
54363
+ if (typeof code === "string" && TRANSIENT_TRANSPORT_ERROR_CODES.has(code)) {
54364
+ return code;
54365
+ }
54366
+ }
54367
+ current = current?.cause;
54368
+ }
54369
+ return void 0;
54370
+ }
54371
+ __name(getTransientTransportCode, "getTransientTransportCode");
54277
54372
  var HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
54278
54373
  var DIAGNOSTIC_HEADERS = [
54279
54374
  "x-vercel-id",
@@ -54414,11 +54509,18 @@ async function instrumentedFetch(opts) {
54414
54509
  const elapsed = Date.now() - start2;
54415
54510
  onTransportOutcome?.(error48);
54416
54511
  if (error48 instanceof Error && (error48.name === "TimeoutError" || error48.name === "AbortError")) {
54417
- const timeoutError = new WorkflowWorldError(`${method} ${label} timed out after ${elapsed}ms`, { url: url2, cause: error48 });
54512
+ const timeoutError = new WorkflowWorldError(`${method} ${label} timed out after ${elapsed}ms`, { url: url2, code: "TIMEOUT", cause: error48 });
54418
54513
  span?.setAttributes({ ...ErrorType2("TIMEOUT") });
54419
54514
  span?.recordException?.(timeoutError);
54420
54515
  throw timeoutError;
54421
54516
  }
54517
+ const transportCode = getTransientTransportCode(error48);
54518
+ if (transportCode) {
54519
+ const transportError2 = new WorkflowWorldError(`${method} ${label} transport failure after ${elapsed}ms (${transportCode})`, { url: url2, code: "TRANSPORT", cause: error48 });
54520
+ span?.setAttributes({ ...ErrorType2("TRANSPORT") });
54521
+ span?.recordException?.(transportError2);
54522
+ throw transportError2;
54523
+ }
54422
54524
  throw error48;
54423
54525
  }
54424
54526
  const ms2 = Date.now() - start2;
@@ -54434,6 +54536,16 @@ async function instrumentedFetch(opts) {
54434
54536
  try {
54435
54537
  error49 = await buildError(response);
54436
54538
  } catch (cause) {
54539
+ const transportCode = getTransientTransportCode(cause);
54540
+ if (transportCode) {
54541
+ if (deferTransportSuccessUntilBody) {
54542
+ onTransportOutcome?.(cause);
54543
+ }
54544
+ const transportError2 = new WorkflowWorldError(`${method} ${label} response body transport failure (${transportCode})`, { url: url2, code: "TRANSPORT", cause });
54545
+ span?.setAttributes({ ...ErrorType2("TRANSPORT") });
54546
+ span?.recordException?.(transportError2);
54547
+ throw transportError2;
54548
+ }
54437
54549
  if (deferTransportSuccessUntilBody) {
54438
54550
  onTransportOutcome?.(cause);
54439
54551
  }
@@ -61591,42 +61703,13 @@ var import_oidc3 = __toESM(require_dist(), 1);
61591
61703
  init_dist();
61592
61704
 
61593
61705
  // ../world-vercel/dist/version.js
61594
- var version3 = "4.7.2";
61706
+ var version3 = "4.7.4";
61595
61707
 
61596
61708
  // ../world-vercel/dist/utils.js
61597
61709
  var WORKFLOW_SERVER_URL_OVERRIDE = "";
61598
61710
  var IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
61599
61711
  var MAX_BODY_PARSE_RETRIES = 2;
61600
61712
  var BODY_PARSE_RETRY_BASE_MS = 100;
61601
- var TRANSIENT_TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
61602
- "UND_ERR_REQ_RETRY",
61603
- "UND_ERR_SOCKET",
61604
- "UND_ERR_CONNECT",
61605
- "UND_ERR_CONNECT_TIMEOUT",
61606
- "UND_ERR_HEADERS_TIMEOUT",
61607
- "UND_ERR_BODY_TIMEOUT",
61608
- "UND_ERR_CLOSED",
61609
- "ECONNRESET",
61610
- "ECONNREFUSED",
61611
- "ENOTFOUND",
61612
- "EAI_AGAIN",
61613
- "EPIPE",
61614
- "ETIMEDOUT"
61615
- ]);
61616
- function getTransientTransportCode(error48) {
61617
- let current = error48;
61618
- for (let depth = 0; current != null && depth < 5; depth++) {
61619
- if (typeof current === "object" && "code" in current) {
61620
- const code = current.code;
61621
- if (typeof code === "string" && TRANSIENT_TRANSPORT_ERROR_CODES.has(code)) {
61622
- return code;
61623
- }
61624
- }
61625
- current = current?.cause;
61626
- }
61627
- return void 0;
61628
- }
61629
- __name(getTransientTransportCode, "getTransientTransportCode");
61630
61713
  var getWorkflowServerUrlOverride = /* @__PURE__ */ __name(() => WORKFLOW_SERVER_URL_OVERRIDE || process.env.VERCEL_WORKFLOW_SERVER_URL || "", "getWorkflowServerUrlOverride");
61631
61714
  var DEFAULT_RESOLVE_DATA_OPTION2 = "all";
61632
61715
  function deserializeError(obj) {
@@ -62468,7 +62551,8 @@ async function fetchV4(url2, init, config3, opName) {
62468
62551
  }
62469
62552
  } catch (cause) {
62470
62553
  noteEventsTransportOutcome(dispatcher, cause);
62471
- controller.error(cause);
62554
+ const transportCode = getTransientTransportCode(cause);
62555
+ controller.error(transportCode ? new WorkflowWorldError(`v4 ${opName}: response stream transport failure (${transportCode})`, { url: url2, code: "TRANSPORT", cause }) : cause);
62472
62556
  }
62473
62557
  },
62474
62558
  cancel(reason) {
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "steps": {
4
+ "workflows/retriable-and-fatal.ts": {
5
+ "stepThatFails": {
6
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatFails"
7
+ },
8
+ "stepThatThrowsRetryableError": {
9
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
10
+ }
11
+ },
4
12
  "workflows/hooks.ts": {
5
13
  "writeEvent": {
6
14
  "stepId": "step//./workflows/hooks//writeEvent"
@@ -11,24 +19,14 @@
11
19
  "stepId": "step//./workflows/addition//add"
12
20
  }
13
21
  },
14
- "workflows/null-byte.ts": {
15
- "nullByteStep": {
16
- "stepId": "step//./workflows/null-byte//nullByteStep"
17
- }
18
- },
19
- "workflows/noop.ts": {
20
- "noop": {
21
- "stepId": "step//./workflows/noop//noop"
22
- }
23
- },
24
22
  "workflows/event-limit.ts": {
25
23
  "tick": {
26
24
  "stepId": "step//./workflows/event-limit//tick"
27
25
  }
28
26
  },
29
- "workflow/dist/stdlib.js": {
30
- "fetch": {
31
- "stepId": "step//workflow@4.8.6//fetch"
27
+ "workflows/noop.ts": {
28
+ "noop": {
29
+ "stepId": "step//./workflows/noop//noop"
32
30
  }
33
31
  },
34
32
  "workflow/dist/internal/builtins.js": {
@@ -42,16 +40,66 @@
42
40
  "stepId": "__builtin_response_text"
43
41
  }
44
42
  },
45
- "workflows/retriable-and-fatal.ts": {
46
- "stepThatFails": {
47
- "stepId": "step//./workflows/retriable-and-fatal//stepThatFails"
48
- },
49
- "stepThatThrowsRetryableError": {
50
- "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
43
+ "workflows/null-byte.ts": {
44
+ "nullByteStep": {
45
+ "stepId": "step//./workflows/null-byte//nullByteStep"
46
+ }
47
+ },
48
+ "workflow/dist/stdlib.js": {
49
+ "fetch": {
50
+ "stepId": "step//workflow@4.8.8//fetch"
51
51
  }
52
52
  }
53
53
  },
54
54
  "workflows": {
55
+ "workflows/retriable-and-fatal.ts": {
56
+ "retryableAndFatalErrorWorkflow": {
57
+ "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
58
+ "graph": {
59
+ "nodes": [
60
+ {
61
+ "id": "start",
62
+ "type": "workflowStart",
63
+ "data": {
64
+ "label": "Start: retryableAndFatalErrorWorkflow",
65
+ "nodeKind": "workflow_start"
66
+ }
67
+ },
68
+ {
69
+ "id": "node_0",
70
+ "type": "step",
71
+ "data": {
72
+ "label": "stepThatThrowsRetryableError",
73
+ "nodeKind": "step",
74
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
75
+ }
76
+ },
77
+ {
78
+ "id": "end",
79
+ "type": "workflowEnd",
80
+ "data": {
81
+ "label": "Return",
82
+ "nodeKind": "workflow_end"
83
+ }
84
+ }
85
+ ],
86
+ "edges": [
87
+ {
88
+ "id": "e_start_node_0",
89
+ "source": "start",
90
+ "target": "node_0",
91
+ "type": "default"
92
+ },
93
+ {
94
+ "id": "e_node_0_end",
95
+ "source": "node_0",
96
+ "target": "end",
97
+ "type": "default"
98
+ }
99
+ ]
100
+ }
101
+ }
102
+ },
55
103
  "workflows/hooks.ts": {
56
104
  "collectWithHook": {
57
105
  "workflowId": "workflow//./workflows/hooks//collectWithHook",
@@ -173,16 +221,16 @@
173
221
  }
174
222
  }
175
223
  },
176
- "workflows/null-byte.ts": {
177
- "nullByteWorkflow": {
178
- "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
224
+ "workflows/event-limit.ts": {
225
+ "runawayWorkflow": {
226
+ "workflowId": "workflow//./workflows/event-limit//runawayWorkflow",
179
227
  "graph": {
180
228
  "nodes": [
181
229
  {
182
230
  "id": "start",
183
231
  "type": "workflowStart",
184
232
  "data": {
185
- "label": "Start: nullByteWorkflow",
233
+ "label": "Start: runawayWorkflow",
186
234
  "nodeKind": "workflow_start"
187
235
  }
188
236
  },
@@ -190,9 +238,12 @@
190
238
  "id": "node_0",
191
239
  "type": "step",
192
240
  "data": {
193
- "label": "nullByteStep",
241
+ "label": "tick",
194
242
  "nodeKind": "step",
195
- "stepId": "step//./workflows/null-byte//nullByteStep"
243
+ "stepId": "step//./workflows/event-limit//tick"
244
+ },
245
+ "metadata": {
246
+ "loopId": "loop_0"
196
247
  }
197
248
  },
198
249
  {
@@ -205,6 +256,12 @@
205
256
  }
206
257
  ],
207
258
  "edges": [
259
+ {
260
+ "id": "e_node_0_back_node_0",
261
+ "source": "node_0",
262
+ "target": "node_0",
263
+ "type": "loop"
264
+ },
208
265
  {
209
266
  "id": "e_start_node_0",
210
267
  "source": "start",
@@ -284,73 +341,16 @@
284
341
  }
285
342
  }
286
343
  },
287
- "workflows/event-limit.ts": {
288
- "runawayWorkflow": {
289
- "workflowId": "workflow//./workflows/event-limit//runawayWorkflow",
290
- "graph": {
291
- "nodes": [
292
- {
293
- "id": "start",
294
- "type": "workflowStart",
295
- "data": {
296
- "label": "Start: runawayWorkflow",
297
- "nodeKind": "workflow_start"
298
- }
299
- },
300
- {
301
- "id": "node_0",
302
- "type": "step",
303
- "data": {
304
- "label": "tick",
305
- "nodeKind": "step",
306
- "stepId": "step//./workflows/event-limit//tick"
307
- },
308
- "metadata": {
309
- "loopId": "loop_0"
310
- }
311
- },
312
- {
313
- "id": "end",
314
- "type": "workflowEnd",
315
- "data": {
316
- "label": "Return",
317
- "nodeKind": "workflow_end"
318
- }
319
- }
320
- ],
321
- "edges": [
322
- {
323
- "id": "e_node_0_back_node_0",
324
- "source": "node_0",
325
- "target": "node_0",
326
- "type": "loop"
327
- },
328
- {
329
- "id": "e_start_node_0",
330
- "source": "start",
331
- "target": "node_0",
332
- "type": "default"
333
- },
334
- {
335
- "id": "e_node_0_end",
336
- "source": "node_0",
337
- "target": "end",
338
- "type": "default"
339
- }
340
- ]
341
- }
342
- }
343
- },
344
- "workflows/retriable-and-fatal.ts": {
345
- "retryableAndFatalErrorWorkflow": {
346
- "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
344
+ "workflows/null-byte.ts": {
345
+ "nullByteWorkflow": {
346
+ "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
347
347
  "graph": {
348
348
  "nodes": [
349
349
  {
350
350
  "id": "start",
351
351
  "type": "workflowStart",
352
352
  "data": {
353
- "label": "Start: retryableAndFatalErrorWorkflow",
353
+ "label": "Start: nullByteWorkflow",
354
354
  "nodeKind": "workflow_start"
355
355
  }
356
356
  },
@@ -358,9 +358,9 @@
358
358
  "id": "node_0",
359
359
  "type": "step",
360
360
  "data": {
361
- "label": "stepThatThrowsRetryableError",
361
+ "label": "nullByteStep",
362
362
  "nodeKind": "step",
363
- "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
363
+ "stepId": "step//./workflows/null-byte//nullByteStep"
364
364
  }
365
365
  },
366
366
  {