@workflow/world-testing 4.1.20 → 4.1.21

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.
@@ -44746,7 +44746,7 @@ var require_token_util = __commonJS({
44746
44746
  findProjectInfo: /* @__PURE__ */ __name(() => findProjectInfo, "findProjectInfo"),
44747
44747
  getTokenPayload: /* @__PURE__ */ __name(() => getTokenPayload, "getTokenPayload"),
44748
44748
  getVercelDataDir: /* @__PURE__ */ __name(() => getVercelDataDir, "getVercelDataDir"),
44749
- getVercelOidcToken: /* @__PURE__ */ __name(() => getVercelOidcToken5, "getVercelOidcToken"),
44749
+ getVercelOidcToken: /* @__PURE__ */ __name(() => getVercelOidcToken6, "getVercelOidcToken"),
44750
44750
  getVercelToken: /* @__PURE__ */ __name(() => getVercelToken2, "getVercelToken"),
44751
44751
  isExpired: /* @__PURE__ */ __name(() => isExpired, "isExpired"),
44752
44752
  loadToken: /* @__PURE__ */ __name(() => loadToken, "loadToken"),
@@ -44808,7 +44808,7 @@ var require_token_util = __commonJS({
44808
44808
  }
44809
44809
  }
44810
44810
  __name(getVercelToken2, "getVercelToken");
44811
- async function getVercelOidcToken5(authToken, projectId, teamId) {
44811
+ async function getVercelOidcToken6(authToken, projectId, teamId) {
44812
44812
  const url2 = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : ""}`;
44813
44813
  const res = await fetch(url2, {
44814
44814
  method: "POST",
@@ -44825,7 +44825,7 @@ var require_token_util = __commonJS({
44825
44825
  assertVercelOidcTokenResponse(tokenRes);
44826
44826
  return tokenRes;
44827
44827
  }
44828
- __name(getVercelOidcToken5, "getVercelOidcToken");
44828
+ __name(getVercelOidcToken6, "getVercelOidcToken");
44829
44829
  function assertVercelOidcTokenResponse(res) {
44830
44830
  if (!res || typeof res !== "object") {
44831
44831
  throw new TypeError(
@@ -45000,13 +45000,13 @@ var require_get_vercel_oidc_token = __commonJS({
45000
45000
  var __toCommonJS2 = /* @__PURE__ */ __name((mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod), "__toCommonJS");
45001
45001
  var get_vercel_oidc_token_exports = {};
45002
45002
  __export2(get_vercel_oidc_token_exports, {
45003
- getVercelOidcToken: /* @__PURE__ */ __name(() => getVercelOidcToken5, "getVercelOidcToken"),
45003
+ getVercelOidcToken: /* @__PURE__ */ __name(() => getVercelOidcToken6, "getVercelOidcToken"),
45004
45004
  getVercelOidcTokenSync: /* @__PURE__ */ __name(() => getVercelOidcTokenSync2, "getVercelOidcTokenSync")
45005
45005
  });
45006
45006
  module2.exports = __toCommonJS2(get_vercel_oidc_token_exports);
45007
45007
  var import_get_context = require_get_context();
45008
45008
  var import_token_error = require_token_error();
45009
- async function getVercelOidcToken5(options) {
45009
+ async function getVercelOidcToken6(options) {
45010
45010
  let token = "";
45011
45011
  let err;
45012
45012
  try {
@@ -45036,7 +45036,7 @@ ${error48.message}`;
45036
45036
  }
45037
45037
  return token;
45038
45038
  }
45039
- __name(getVercelOidcToken5, "getVercelOidcToken");
45039
+ __name(getVercelOidcToken6, "getVercelOidcToken");
45040
45040
  function getVercelOidcTokenSync2() {
45041
45041
  const token = (0, import_get_context.getContext)().headers?.["x-vercel-oidc-token"] ?? process.env.VERCEL_OIDC_TOKEN;
45042
45042
  if (!token) {
@@ -50526,7 +50526,7 @@ init_dist();
50526
50526
  init_node();
50527
50527
 
50528
50528
  // ../core/dist/version.js
50529
- var version2 = "4.8.5";
50529
+ var version2 = "4.8.6";
50530
50530
 
50531
50531
  // ../core/dist/runtime/world.js
50532
50532
  var import_node_module = require("node:module");
@@ -51928,6 +51928,8 @@ function createQueue(config3) {
51928
51928
  const transport = new TypedJsonTransport();
51929
51929
  const generateId2 = monotonicFactory();
51930
51930
  const semaphore = new import_async_sema.Sema(WORKFLOW_LOCAL_QUEUE_CONCURRENCY);
51931
+ const closeController = new AbortController();
51932
+ const closeSignal = closeController.signal;
51931
51933
  const inflightMessages = /* @__PURE__ */ new Map();
51932
51934
  const directHandlers = /* @__PURE__ */ new Map();
51933
51935
  const queue = /* @__PURE__ */ __name(async (queueName, message, opts) => {
@@ -51986,6 +51988,7 @@ function createQueue(config3) {
51986
51988
  headers: new Headers(headers),
51987
51989
  body,
51988
51990
  agents: nodeHttpAgents,
51991
+ signal: closeSignal,
51989
51992
  headersTimeoutMs: agentOptions.headersTimeout,
51990
51993
  bodyTimeoutMs: agentOptions.bodyTimeout
51991
51994
  }) : (
@@ -51995,7 +51998,8 @@ function createQueue(config3) {
51995
51998
  duplex: "half",
51996
51999
  dispatcher: httpAgent,
51997
52000
  headers,
51998
- body
52001
+ body,
52002
+ signal: closeSignal
51999
52003
  })
52000
52004
  );
52001
52005
  }
@@ -52101,6 +52105,9 @@ function createQueue(config3) {
52101
52105
  directHandlers.set(prefix, handler);
52102
52106
  },
52103
52107
  async close() {
52108
+ if (closeSignal.aborted)
52109
+ return;
52110
+ closeController.abort();
52104
52111
  if (nodeHttpAgents)
52105
52112
  destroyNodeHttpAgents(nodeHttpAgents);
52106
52113
  await httpAgent?.close();
@@ -54367,7 +54374,7 @@ function httpClientSpanAttributes(args) {
54367
54374
  }
54368
54375
  __name(httpClientSpanAttributes, "httpClientSpanAttributes");
54369
54376
  async function instrumentedFetch(opts) {
54370
- const { method, url: url2, headers, body, dispatcher, peerService = "workflow-server", timeoutMs = REQUEST_TIMEOUT_MS, signal: callerSignal, injectTraceContext = true, cacheBust = true, logLabel, buildError, onTransportOutcome } = opts;
54377
+ const { method, url: url2, headers, body, dispatcher, peerService = "workflow-server", timeoutMs = REQUEST_TIMEOUT_MS, signal: callerSignal, injectTraceContext = true, cacheBust = true, logLabel, buildError, onTransportOutcome, deferTransportSuccessUntilBody = false } = opts;
54371
54378
  const label = logLabel ?? url2;
54372
54379
  return trace4(`http ${method}`, { kind: await getSpanKind3("CLIENT") }, async (span) => {
54373
54380
  span?.setAttributes(httpClientSpanAttributes({ method, url: url2, peerService }));
@@ -54415,18 +54422,31 @@ async function instrumentedFetch(opts) {
54415
54422
  throw error48;
54416
54423
  }
54417
54424
  const ms2 = Date.now() - start2;
54418
- onTransportOutcome?.();
54425
+ if (!deferTransportSuccessUntilBody)
54426
+ onTransportOutcome?.();
54419
54427
  httpLog(method, label, response, ms2);
54420
54428
  span?.setAttributes({ ...HttpResponseStatusCode2(response.status) });
54421
54429
  if (!response.ok) {
54422
54430
  span?.setAttributes({ ...ErrorType2(`HTTP ${response.status}`) });
54423
54431
  logCurlRepro(method, url2, headers);
54424
54432
  if (buildError) {
54425
- const error49 = await buildError(response);
54433
+ let error49;
54434
+ try {
54435
+ error49 = await buildError(response);
54436
+ } catch (cause) {
54437
+ if (deferTransportSuccessUntilBody) {
54438
+ onTransportOutcome?.(cause);
54439
+ }
54440
+ throw cause;
54441
+ }
54442
+ if (deferTransportSuccessUntilBody)
54443
+ onTransportOutcome?.();
54426
54444
  span?.recordException?.(error49);
54427
54445
  throw error49;
54428
54446
  }
54429
54447
  const text = await response.text().catch(() => "");
54448
+ if (deferTransportSuccessUntilBody)
54449
+ onTransportOutcome?.();
54430
54450
  const error48 = errorForResponse(response.status, `${method} ${label} -> HTTP ${response.status}: ${response.statusText}${text ? ` ${text}` : ""}${formatVercelDiagnostics(response.headers)}`, {
54431
54451
  url: url2,
54432
54452
  retryAfter: parseRetryAfter(response.headers.get("Retry-After"))
@@ -61571,7 +61591,7 @@ var import_oidc3 = __toESM(require_dist(), 1);
61571
61591
  init_dist();
61572
61592
 
61573
61593
  // ../world-vercel/dist/version.js
61574
- var version3 = "4.7.1";
61594
+ var version3 = "4.7.2";
61575
61595
 
61576
61596
  // ../world-vercel/dist/utils.js
61577
61597
  var WORKFLOW_SERVER_URL_OVERRIDE = "";
@@ -62088,21 +62108,35 @@ function createQueue2(config3) {
62088
62108
  __name(createQueue2, "createQueue");
62089
62109
 
62090
62110
  // ../world-vercel/dist/resolve-latest-deployment.js
62111
+ var import_oidc4 = __toESM(require_dist(), 1);
62091
62112
  init_zod();
62092
62113
  var ResolveLatestDeploymentResponseSchema = object({
62093
62114
  id: string2()
62094
62115
  });
62116
+ async function resolveDeploymentIdentityToken(config3) {
62117
+ if (config3?.token)
62118
+ return config3.token;
62119
+ if (process.env.VERCEL === "1") {
62120
+ const oidcToken = await (0, import_oidc4.getVercelOidcToken)().catch(() => null);
62121
+ if (oidcToken)
62122
+ return oidcToken;
62123
+ }
62124
+ return resolveVercelApiToken(config3);
62125
+ }
62126
+ __name(resolveDeploymentIdentityToken, "resolveDeploymentIdentityToken");
62095
62127
  function createResolveLatestDeploymentId(config3) {
62096
62128
  return /* @__PURE__ */ __name(async function resolveLatestDeploymentId() {
62097
62129
  const currentDeploymentId = process.env.VERCEL_DEPLOYMENT_ID;
62098
62130
  if (!currentDeploymentId) {
62099
62131
  throw new Error("Cannot resolve latest deployment: VERCEL_DEPLOYMENT_ID environment variable is not set");
62100
62132
  }
62101
- const token = await resolveVercelApiToken(config3);
62133
+ const token = await resolveDeploymentIdentityToken(config3);
62102
62134
  if (!token) {
62103
62135
  throw new Error("Cannot resolve latest deployment: no OIDC token or VERCEL_TOKEN available");
62104
62136
  }
62105
- const url2 = `https://api.vercel.com/v1/workflow/resolve-latest-deployment/${encodeURIComponent(currentDeploymentId)}`;
62137
+ const teamId = config3?.projectConfig?.teamId;
62138
+ const query = teamId ? `?${new URLSearchParams({ teamId })}` : "";
62139
+ const url2 = `https://api.vercel.com/v1/workflow/resolve-latest-deployment/${encodeURIComponent(currentDeploymentId)}${query}`;
62106
62140
  const response = await instrumentedFetch({
62107
62141
  method: "GET",
62108
62142
  url: url2,
@@ -62119,7 +62153,8 @@ function createResolveLatestDeploymentId(config3) {
62119
62153
  } catch {
62120
62154
  body = "<unable to read response body>";
62121
62155
  }
62122
- return new Error(`Failed to resolve latest deployment for ${currentDeploymentId}: HTTP ${res.status} ${res.statusText}${body ? ` \u2014 ${body}` : ""}`);
62156
+ const hint = res.status === 404 ? ". The deployment exists but was not visible to the identity this request authenticated as, which means the request resolved to a different team. Set the World's `projectConfig.teamId` to scope it explicitly." : "";
62157
+ return new Error(`Failed to resolve latest deployment for ${currentDeploymentId}: HTTP ${res.status} ${res.statusText}${body ? ` \u2014 ${body}` : ""}${hint}`);
62123
62158
  }, "buildError")
62124
62159
  });
62125
62160
  const data = await response.json();
@@ -62400,7 +62435,7 @@ __name(readerToIterator, "readerToIterator");
62400
62435
  // ../world-vercel/dist/events-v4.js
62401
62436
  async function fetchV4(url2, init, config3, opName) {
62402
62437
  const dispatcher = getEventsDispatcher(config3);
62403
- return instrumentedFetch({
62438
+ const response = await instrumentedFetch({
62404
62439
  method: init.method,
62405
62440
  url: url2,
62406
62441
  headers: init.headers,
@@ -62411,9 +62446,40 @@ async function fetchV4(url2, init, config3, opName) {
62411
62446
  // service indefinitely, so without this every request routed onto it fails
62412
62447
  // until the compute instance is recycled — see noteEventsTransportOutcome.
62413
62448
  onTransportOutcome: /* @__PURE__ */ __name((error48) => noteEventsTransportOutcome(dispatcher, error48), "onTransportOutcome"),
62449
+ deferTransportSuccessUntilBody: true,
62414
62450
  timeoutMs: null,
62415
62451
  logLabel: opName,
62416
- buildError: /* @__PURE__ */ __name(async (response) => errorFromV4Response(response.status, headersToRecord(response.headers), await response.text(), opName, url2), "buildError")
62452
+ buildError: /* @__PURE__ */ __name(async (response2) => errorFromV4Response(response2.status, headersToRecord(response2.headers), await response2.text(), opName, url2), "buildError")
62453
+ });
62454
+ if (!response.body) {
62455
+ noteEventsTransportOutcome(dispatcher);
62456
+ return response;
62457
+ }
62458
+ const reader = response.body.getReader();
62459
+ const body = new ReadableStream({
62460
+ async pull(controller) {
62461
+ try {
62462
+ const chunk = await reader.read();
62463
+ if (chunk.done) {
62464
+ noteEventsTransportOutcome(dispatcher);
62465
+ controller.close();
62466
+ } else {
62467
+ controller.enqueue(chunk.value);
62468
+ }
62469
+ } catch (cause) {
62470
+ noteEventsTransportOutcome(dispatcher, cause);
62471
+ controller.error(cause);
62472
+ }
62473
+ },
62474
+ cancel(reason) {
62475
+ noteEventsTransportOutcome(dispatcher);
62476
+ return reader.cancel(reason);
62477
+ }
62478
+ });
62479
+ return new Response(body, {
62480
+ status: response.status,
62481
+ statusText: response.statusText,
62482
+ headers: response.headers
62417
62483
  });
62418
62484
  }
62419
62485
  __name(fetchV4, "fetchV4");
@@ -1,11 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "steps": {
4
- "workflows/noop.ts": {
5
- "noop": {
6
- "stepId": "step//./workflows/noop//noop"
7
- }
8
- },
9
4
  "workflows/hooks.ts": {
10
5
  "writeEvent": {
11
6
  "stepId": "step//./workflows/hooks//writeEvent"
@@ -16,12 +11,24 @@
16
11
  "stepId": "step//./workflows/addition//add"
17
12
  }
18
13
  },
19
- "workflows/retriable-and-fatal.ts": {
20
- "stepThatFails": {
21
- "stepId": "step//./workflows/retriable-and-fatal//stepThatFails"
22
- },
23
- "stepThatThrowsRetryableError": {
24
- "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
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
+ "workflows/event-limit.ts": {
25
+ "tick": {
26
+ "stepId": "step//./workflows/event-limit//tick"
27
+ }
28
+ },
29
+ "workflow/dist/stdlib.js": {
30
+ "fetch": {
31
+ "stepId": "step//workflow@4.8.6//fetch"
25
32
  }
26
33
  },
27
34
  "workflow/dist/internal/builtins.js": {
@@ -35,33 +42,26 @@
35
42
  "stepId": "__builtin_response_text"
36
43
  }
37
44
  },
38
- "workflows/event-limit.ts": {
39
- "tick": {
40
- "stepId": "step//./workflows/event-limit//tick"
41
- }
42
- },
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.5//fetch"
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"
51
51
  }
52
52
  }
53
53
  },
54
54
  "workflows": {
55
- "workflows/noop.ts": {
56
- "brokenWf": {
57
- "workflowId": "workflow//./workflows/noop//brokenWf",
55
+ "workflows/hooks.ts": {
56
+ "collectWithHook": {
57
+ "workflowId": "workflow//./workflows/hooks//collectWithHook",
58
58
  "graph": {
59
59
  "nodes": [
60
60
  {
61
61
  "id": "start",
62
62
  "type": "workflowStart",
63
63
  "data": {
64
- "label": "Start: brokenWf",
64
+ "label": "Start: collectWithHook",
65
65
  "nodeKind": "workflow_start"
66
66
  }
67
67
  },
@@ -69,18 +69,22 @@
69
69
  "id": "node_0",
70
70
  "type": "step",
71
71
  "data": {
72
- "label": "noop",
72
+ "label": "writeEvent",
73
73
  "nodeKind": "step",
74
- "stepId": "step//./workflows/noop//noop"
74
+ "stepId": "step//./workflows/hooks//writeEvent"
75
75
  }
76
76
  },
77
77
  {
78
78
  "id": "node_1",
79
79
  "type": "step",
80
80
  "data": {
81
- "label": "noop",
81
+ "label": "writeEvent",
82
82
  "nodeKind": "step",
83
- "stepId": "step//./workflows/noop//noop"
83
+ "stepId": "step//./workflows/hooks//writeEvent"
84
+ },
85
+ "metadata": {
86
+ "loopId": "loop_0",
87
+ "loopIsAwait": true
84
88
  }
85
89
  },
86
90
  {
@@ -99,6 +103,12 @@
99
103
  "target": "node_0",
100
104
  "type": "default"
101
105
  },
106
+ {
107
+ "id": "e_node_1_back_node_1",
108
+ "source": "node_1",
109
+ "target": "node_1",
110
+ "type": "loop"
111
+ },
102
112
  {
103
113
  "id": "e_node_0_node_1",
104
114
  "source": "node_0",
@@ -115,16 +125,16 @@
115
125
  }
116
126
  }
117
127
  },
118
- "workflows/hooks.ts": {
119
- "collectWithHook": {
120
- "workflowId": "workflow//./workflows/hooks//collectWithHook",
128
+ "workflows/addition.ts": {
129
+ "addition": {
130
+ "workflowId": "workflow//./workflows/addition//addition",
121
131
  "graph": {
122
132
  "nodes": [
123
133
  {
124
134
  "id": "start",
125
135
  "type": "workflowStart",
126
136
  "data": {
127
- "label": "Start: collectWithHook",
137
+ "label": "Start: addition",
128
138
  "nodeKind": "workflow_start"
129
139
  }
130
140
  },
@@ -132,22 +142,9 @@
132
142
  "id": "node_0",
133
143
  "type": "step",
134
144
  "data": {
135
- "label": "writeEvent",
136
- "nodeKind": "step",
137
- "stepId": "step//./workflows/hooks//writeEvent"
138
- }
139
- },
140
- {
141
- "id": "node_1",
142
- "type": "step",
143
- "data": {
144
- "label": "writeEvent",
145
+ "label": "add",
145
146
  "nodeKind": "step",
146
- "stepId": "step//./workflows/hooks//writeEvent"
147
- },
148
- "metadata": {
149
- "loopId": "loop_0",
150
- "loopIsAwait": true
147
+ "stepId": "step//./workflows/addition//add"
151
148
  }
152
149
  },
153
150
  {
@@ -167,20 +164,8 @@
167
164
  "type": "default"
168
165
  },
169
166
  {
170
- "id": "e_node_1_back_node_1",
171
- "source": "node_1",
172
- "target": "node_1",
173
- "type": "loop"
174
- },
175
- {
176
- "id": "e_node_0_node_1",
167
+ "id": "e_node_0_end",
177
168
  "source": "node_0",
178
- "target": "node_1",
179
- "type": "default"
180
- },
181
- {
182
- "id": "e_node_1_end",
183
- "source": "node_1",
184
169
  "target": "end",
185
170
  "type": "default"
186
171
  }
@@ -188,16 +173,16 @@
188
173
  }
189
174
  }
190
175
  },
191
- "workflows/addition.ts": {
192
- "addition": {
193
- "workflowId": "workflow//./workflows/addition//addition",
176
+ "workflows/null-byte.ts": {
177
+ "nullByteWorkflow": {
178
+ "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
194
179
  "graph": {
195
180
  "nodes": [
196
181
  {
197
182
  "id": "start",
198
183
  "type": "workflowStart",
199
184
  "data": {
200
- "label": "Start: addition",
185
+ "label": "Start: nullByteWorkflow",
201
186
  "nodeKind": "workflow_start"
202
187
  }
203
188
  },
@@ -205,9 +190,9 @@
205
190
  "id": "node_0",
206
191
  "type": "step",
207
192
  "data": {
208
- "label": "add",
193
+ "label": "nullByteStep",
209
194
  "nodeKind": "step",
210
- "stepId": "step//./workflows/addition//add"
195
+ "stepId": "step//./workflows/null-byte//nullByteStep"
211
196
  }
212
197
  },
213
198
  {
@@ -236,16 +221,16 @@
236
221
  }
237
222
  }
238
223
  },
239
- "workflows/retriable-and-fatal.ts": {
240
- "retryableAndFatalErrorWorkflow": {
241
- "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
224
+ "workflows/noop.ts": {
225
+ "brokenWf": {
226
+ "workflowId": "workflow//./workflows/noop//brokenWf",
242
227
  "graph": {
243
228
  "nodes": [
244
229
  {
245
230
  "id": "start",
246
231
  "type": "workflowStart",
247
232
  "data": {
248
- "label": "Start: retryableAndFatalErrorWorkflow",
233
+ "label": "Start: brokenWf",
249
234
  "nodeKind": "workflow_start"
250
235
  }
251
236
  },
@@ -253,9 +238,18 @@
253
238
  "id": "node_0",
254
239
  "type": "step",
255
240
  "data": {
256
- "label": "stepThatThrowsRetryableError",
241
+ "label": "noop",
257
242
  "nodeKind": "step",
258
- "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
243
+ "stepId": "step//./workflows/noop//noop"
244
+ }
245
+ },
246
+ {
247
+ "id": "node_1",
248
+ "type": "step",
249
+ "data": {
250
+ "label": "noop",
251
+ "nodeKind": "step",
252
+ "stepId": "step//./workflows/noop//noop"
259
253
  }
260
254
  },
261
255
  {
@@ -275,8 +269,14 @@
275
269
  "type": "default"
276
270
  },
277
271
  {
278
- "id": "e_node_0_end",
272
+ "id": "e_node_0_node_1",
279
273
  "source": "node_0",
274
+ "target": "node_1",
275
+ "type": "default"
276
+ },
277
+ {
278
+ "id": "e_node_1_end",
279
+ "source": "node_1",
280
280
  "target": "end",
281
281
  "type": "default"
282
282
  }
@@ -341,16 +341,16 @@
341
341
  }
342
342
  }
343
343
  },
344
- "workflows/null-byte.ts": {
345
- "nullByteWorkflow": {
346
- "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
344
+ "workflows/retriable-and-fatal.ts": {
345
+ "retryableAndFatalErrorWorkflow": {
346
+ "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
347
347
  "graph": {
348
348
  "nodes": [
349
349
  {
350
350
  "id": "start",
351
351
  "type": "workflowStart",
352
352
  "data": {
353
- "label": "Start: nullByteWorkflow",
353
+ "label": "Start: retryableAndFatalErrorWorkflow",
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": "nullByteStep",
361
+ "label": "stepThatThrowsRetryableError",
362
362
  "nodeKind": "step",
363
- "stepId": "step//./workflows/null-byte//nullByteStep"
363
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
364
364
  }
365
365
  },
366
366
  {