@workflow/world-testing 4.1.0-beta.67 → 4.1.0-beta.69

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.
@@ -30831,6 +30831,20 @@ function parseDurationToDate(param) {
30831
30831
  }
30832
30832
  __name(parseDurationToDate, "parseDurationToDate");
30833
30833
 
30834
+ // ../utils/dist/world-target.js
30835
+ function resolveWorkflowTargetWorld(env = process.env) {
30836
+ const configuredWorld = env.WORKFLOW_TARGET_WORLD;
30837
+ if (configuredWorld) {
30838
+ return configuredWorld;
30839
+ }
30840
+ return env.VERCEL_DEPLOYMENT_ID ? "vercel" : "local";
30841
+ }
30842
+ __name(resolveWorkflowTargetWorld, "resolveWorkflowTargetWorld");
30843
+ function isVercelWorldTarget(targetWorld) {
30844
+ return targetWorld === "vercel" || targetWorld === "@workflow/world-vercel";
30845
+ }
30846
+ __name(isVercelWorldTarget, "isVercelWorldTarget");
30847
+
30834
30848
  // ../errors/dist/index.js
30835
30849
  var BASE_URL = "https://useworkflow.dev/err";
30836
30850
  function isError(value) {
@@ -49078,19 +49092,21 @@ function createQueue(config3) {
49078
49092
  body
49079
49093
  });
49080
49094
  }
49081
- if (response.ok) {
49082
- return;
49083
- }
49084
49095
  const text = await response.text();
49085
- if (response.status === 503) {
49096
+ if (response.ok) {
49086
49097
  try {
49087
49098
  const timeoutSeconds = Number(JSON.parse(text).timeoutSeconds);
49088
- const timeoutMs = Math.min(timeoutSeconds * 1e3, MAX_SAFE_TIMEOUT_MS);
49089
- await (0, import_promises3.setTimeout)(timeoutMs);
49090
- defaultRetriesLeft++;
49091
- continue;
49099
+ if (Number.isFinite(timeoutSeconds) && timeoutSeconds >= 0) {
49100
+ if (timeoutSeconds > 0) {
49101
+ const timeoutMs = Math.min(timeoutSeconds * 1e3, MAX_SAFE_TIMEOUT_MS);
49102
+ await (0, import_promises3.setTimeout)(timeoutMs);
49103
+ }
49104
+ defaultRetriesLeft++;
49105
+ continue;
49106
+ }
49092
49107
  } catch {
49093
49108
  }
49109
+ return;
49094
49110
  }
49095
49111
  console.error(`[local world] Failed to queue message`, {
49096
49112
  queueName,
@@ -49143,7 +49159,7 @@ function createQueue(config3) {
49143
49159
  timeoutSeconds = Math.min(result.timeoutSeconds, LOCAL_QUEUE_MAX_VISIBILITY);
49144
49160
  }
49145
49161
  if (timeoutSeconds != null) {
49146
- return Response.json({ timeoutSeconds }, { status: 503 });
49162
+ return Response.json({ timeoutSeconds });
49147
49163
  }
49148
49164
  return Response.json({ ok: true });
49149
49165
  } catch (error48) {
@@ -50142,6 +50158,16 @@ function createEventsStorage(basedir) {
50142
50158
  wait
50143
50159
  };
50144
50160
  },
50161
+ async get(runId, eventId, params) {
50162
+ const compositeKey = `${runId}-${eventId}`;
50163
+ const eventPath = import_node_path5.default.join(basedir, "events", `${compositeKey}.json`);
50164
+ const event = await readJSON(eventPath, EventSchema);
50165
+ if (!event) {
50166
+ throw new Error(`Event ${eventId} in run ${runId} not found`);
50167
+ }
50168
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
50169
+ return filterEventData(event, resolveData);
50170
+ },
50145
50171
  async list(params) {
50146
50172
  const { runId } = params;
50147
50173
  const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
@@ -50608,11 +50634,17 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
50608
50634
  headers: {
50609
50635
  authorization: `Bearer ${token}`
50610
50636
  },
50637
+ // @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
50611
50638
  dispatcher: getDispatcher()
50612
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- undici v7 dispatcher types don't match @types/node's RequestInit
50613
50639
  });
50614
50640
  if (!response.ok) {
50615
- throw new Error(`Failed to fetch run key for ${runId} (deployment ${deploymentId}): HTTP ${response.status}`);
50641
+ let body;
50642
+ try {
50643
+ body = await response.text();
50644
+ } catch {
50645
+ body = "<unable to read response body>";
50646
+ }
50647
+ throw new Error(`Failed to fetch run key for ${runId} (deployment ${deploymentId}): HTTP ${response.status} ${response.statusText}${body ? ` \u2014 ${body}` : ""}`);
50616
50648
  }
50617
50649
  const data = await response.json();
50618
50650
  const result = object({ key: string2().nullable() }).safeParse(data);
@@ -50628,7 +50660,7 @@ __name(fetchRunKey, "fetchRunKey");
50628
50660
  function createGetEncryptionKeyForRun(projectId, teamId, token) {
50629
50661
  if (!projectId)
50630
50662
  return void 0;
50631
- const currentDeploymentId = process.env.VERCEL_DEPLOYMENT_ID;
50663
+ const isServerlessRuntime = process.env.VERCEL === "1";
50632
50664
  let localDeploymentKey;
50633
50665
  function getLocalDeploymentKey() {
50634
50666
  if (localDeploymentKey)
@@ -50643,12 +50675,16 @@ function createGetEncryptionKeyForRun(projectId, teamId, token) {
50643
50675
  return /* @__PURE__ */ __name(async function getEncryptionKeyForRun(run, context2) {
50644
50676
  const runId = typeof run === "string" ? run : run.runId;
50645
50677
  const deploymentId = typeof run === "string" ? context2?.deploymentId : run.deploymentId;
50646
- if (!deploymentId || deploymentId === currentDeploymentId) {
50647
- const localKey = getLocalDeploymentKey();
50648
- if (!localKey)
50649
- return void 0;
50650
- return deriveRunKey(localKey, projectId, runId);
50678
+ if (isServerlessRuntime) {
50679
+ if (!deploymentId || deploymentId === process.env.VERCEL_DEPLOYMENT_ID) {
50680
+ const localKey = getLocalDeploymentKey();
50681
+ if (!localKey)
50682
+ return void 0;
50683
+ return deriveRunKey(localKey, projectId, runId);
50684
+ }
50651
50685
  }
50686
+ if (!deploymentId)
50687
+ return void 0;
50652
50688
  return fetchRunKey(deploymentId, projectId, runId, { token, teamId });
50653
50689
  }, "getEncryptionKeyForRun");
50654
50690
  }
@@ -53076,7 +53112,7 @@ var RpcService3 = SemanticConvention3("rpc.service");
53076
53112
  var RpcMethod3 = SemanticConvention3("rpc.method");
53077
53113
 
53078
53114
  // ../world-vercel/dist/version.js
53079
- var version2 = "4.1.0-beta.40";
53115
+ var version2 = "4.1.0-beta.42";
53080
53116
 
53081
53117
  // ../world-vercel/dist/utils.js
53082
53118
  var WORKFLOW_SERVER_URL_OVERRIDE = "";
@@ -53852,6 +53888,22 @@ async function hydrateEventRefs(events, config3, refResolveConcurrency) {
53852
53888
  });
53853
53889
  }
53854
53890
  __name(hydrateEventRefs, "hydrateEventRefs");
53891
+ async function getEvent(runId, eventId, params, config3) {
53892
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION2;
53893
+ const remoteRefBehavior = resolveData === "none" ? "lazy" : "resolve";
53894
+ const searchParams = new URLSearchParams();
53895
+ searchParams.set("remoteRefBehavior", remoteRefBehavior);
53896
+ const queryString = searchParams.toString();
53897
+ const endpoint = `/v2/runs/${runId}/events/${eventId}${queryString ? `?${queryString}` : ""}`;
53898
+ const event = await makeRequest({
53899
+ endpoint,
53900
+ options: { method: "GET" },
53901
+ config: config3,
53902
+ schema: resolveData === "none" ? EventWithRefsSchema : EventSchema
53903
+ });
53904
+ return filterEventData2(event, resolveData);
53905
+ }
53906
+ __name(getEvent, "getEvent");
53855
53907
  async function getWorkflowRunEvents(params, config3) {
53856
53908
  const searchParams = new URLSearchParams();
53857
53909
  const { pagination, resolveData = DEFAULT_RESOLVE_DATA_OPTION2 } = params;
@@ -54109,6 +54161,7 @@ function createStorage2(config3) {
54109
54161
  },
54110
54162
  events: {
54111
54163
  create: /* @__PURE__ */ __name((runId, data, params) => createWorkflowRunEvent(runId, data, params, config3), "create"),
54164
+ get: /* @__PURE__ */ __name((runId, eventId, params) => getEvent(runId, eventId, params, config3), "get"),
54112
54165
  list: /* @__PURE__ */ __name((params) => getWorkflowRunEvents(params, config3), "list"),
54113
54166
  listByCorrelationId: /* @__PURE__ */ __name((params) => getWorkflowRunEvents(params, config3), "listByCorrelationId")
54114
54167
  },
@@ -54241,27 +54294,19 @@ var require2 = (0, import_node_module.createRequire)((0, import_node_path9.join)
54241
54294
  var WorldCache = /* @__PURE__ */ Symbol.for("@workflow/world//cache");
54242
54295
  var StubbedWorldCache = /* @__PURE__ */ Symbol.for("@workflow/world//stubbedCache");
54243
54296
  var globalSymbols = globalThis;
54244
- function defaultWorld() {
54245
- if (process.env.VERCEL_DEPLOYMENT_ID) {
54246
- return "vercel";
54247
- }
54248
- return "local";
54249
- }
54250
- __name(defaultWorld, "defaultWorld");
54251
54297
  var createWorld = /* @__PURE__ */ __name(() => {
54252
- const targetWorld = process.env.WORKFLOW_TARGET_WORLD || defaultWorld();
54253
- if (targetWorld === "vercel") {
54254
- return createVercelWorld({
54255
- token: process.env.WORKFLOW_VERCEL_AUTH_TOKEN,
54256
- projectConfig: {
54257
- environment: process.env.WORKFLOW_VERCEL_ENV,
54258
- projectId: process.env.WORKFLOW_VERCEL_PROJECT,
54259
- // real ID (prj_xxx)
54260
- projectName: process.env.WORKFLOW_VERCEL_PROJECT_NAME,
54261
- // slug (my-app)
54262
- teamId: process.env.WORKFLOW_VERCEL_TEAM
54263
- }
54264
- });
54298
+ const targetWorld = resolveWorkflowTargetWorld();
54299
+ if (isVercelWorldTarget(targetWorld)) {
54300
+ const staleEnvVars = [
54301
+ "WORKFLOW_VERCEL_PROJECT",
54302
+ "WORKFLOW_VERCEL_TEAM",
54303
+ "WORKFLOW_VERCEL_AUTH_TOKEN",
54304
+ "WORKFLOW_VERCEL_ENV"
54305
+ ].filter((key) => process.env[key]);
54306
+ if (staleEnvVars.length > 0) {
54307
+ console.warn(`[workflow] Warning: ${staleEnvVars.join(", ")} env var(s) are set but have no effect at runtime. These are only used by the Workflow CLI. Remove them from your Vercel project environment variables.`);
54308
+ }
54309
+ return createVercelWorld();
54265
54310
  }
54266
54311
  if (targetWorld === "local") {
54267
54312
  return createLocalWorld({
@@ -55303,6 +55348,19 @@ function getStepFunction(stepId) {
55303
55348
  return void 0;
55304
55349
  }
55305
55350
  __name(getStepFunction, "getStepFunction");
55351
+ function scheduleWhenIdle(ctx, fn) {
55352
+ const check2 = /* @__PURE__ */ __name(() => {
55353
+ if (ctx.pendingDeliveries > 0) {
55354
+ ctx.promiseQueue.then(() => {
55355
+ setTimeout(check2, 0);
55356
+ });
55357
+ } else {
55358
+ fn();
55359
+ }
55360
+ }, "check");
55361
+ setTimeout(check2, 0);
55362
+ }
55363
+ __name(scheduleWhenIdle, "scheduleWhenIdle");
55306
55364
 
55307
55365
  // ../core/dist/serialization.js
55308
55366
  var SerializationFormat = {
@@ -57161,7 +57219,7 @@ function createUseStep(ctx) {
57161
57219
  });
57162
57220
  ctx.eventsConsumer.subscribe((event) => {
57163
57221
  if (!event) {
57164
- ctx.promiseQueue = ctx.promiseQueue.then(() => {
57222
+ scheduleWhenIdle(ctx, () => {
57165
57223
  ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
57166
57224
  });
57167
57225
  return EventConsumerResult.NotConsumed;
@@ -57211,12 +57269,15 @@ function createUseStep(ctx) {
57211
57269
  }
57212
57270
  if (event.eventType === "step_completed") {
57213
57271
  ctx.invocationsQueue.delete(event.correlationId);
57272
+ ctx.pendingDeliveries++;
57214
57273
  ctx.promiseQueue = ctx.promiseQueue.then(async () => {
57215
57274
  try {
57216
57275
  const hydratedResult = await hydrateStepReturnValue(event.eventData.result, ctx.runId, ctx.encryptionKey, ctx.globalThis);
57217
57276
  resolve3(hydratedResult);
57218
57277
  } catch (error48) {
57219
57278
  reject(error48);
57279
+ } finally {
57280
+ ctx.pendingDeliveries--;
57220
57281
  }
57221
57282
  });
57222
57283
  return EventConsumerResult.Finished;
@@ -57380,8 +57441,8 @@ function createCreateHook(ctx) {
57380
57441
  ctx.eventsConsumer.subscribe((event) => {
57381
57442
  if (!event) {
57382
57443
  eventLogEmpty = true;
57383
- if (promises.length > 0) {
57384
- ctx.promiseQueue = ctx.promiseQueue.then(() => {
57444
+ if (promises.length > 0 && payloadsQueue.length === 0) {
57445
+ scheduleWhenIdle(ctx, () => {
57385
57446
  ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
57386
57447
  });
57387
57448
  }
@@ -57416,12 +57477,15 @@ function createCreateHook(ctx) {
57416
57477
  if (promises.length > 0) {
57417
57478
  const next2 = promises.shift();
57418
57479
  if (next2) {
57480
+ ctx.pendingDeliveries++;
57419
57481
  ctx.promiseQueue = ctx.promiseQueue.then(async () => {
57420
57482
  try {
57421
57483
  const payload = await hydrateStepReturnValue(event.eventData.payload, ctx.runId, ctx.encryptionKey, ctx.globalThis);
57422
57484
  next2.resolve(payload);
57423
57485
  } catch (error48) {
57424
57486
  next2.reject(error48);
57487
+ } finally {
57488
+ ctx.pendingDeliveries--;
57425
57489
  }
57426
57490
  });
57427
57491
  }
@@ -57452,19 +57516,22 @@ function createCreateHook(ctx) {
57452
57516
  if (payloadsQueue.length > 0) {
57453
57517
  const nextPayload = payloadsQueue.shift();
57454
57518
  if (nextPayload) {
57519
+ ctx.pendingDeliveries++;
57455
57520
  ctx.promiseQueue = ctx.promiseQueue.then(async () => {
57456
57521
  try {
57457
57522
  const payload = await hydrateStepReturnValue(nextPayload.eventData.payload, ctx.runId, ctx.encryptionKey, ctx.globalThis);
57458
57523
  resolvers.resolve(payload);
57459
57524
  } catch (error48) {
57460
57525
  resolvers.reject(error48);
57526
+ } finally {
57527
+ ctx.pendingDeliveries--;
57461
57528
  }
57462
57529
  });
57463
57530
  return resolvers.promise;
57464
57531
  }
57465
57532
  }
57466
57533
  if (eventLogEmpty) {
57467
- ctx.promiseQueue = ctx.promiseQueue.then(() => {
57534
+ scheduleWhenIdle(ctx, () => {
57468
57535
  ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
57469
57536
  });
57470
57537
  }
@@ -57486,7 +57553,7 @@ function createCreateHook(ctx) {
57486
57553
  }
57487
57554
  if (promises.length > 0) {
57488
57555
  promises.length = 0;
57489
- ctx.promiseQueue = ctx.promiseQueue.then(() => {
57556
+ scheduleWhenIdle(ctx, () => {
57490
57557
  ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
57491
57558
  });
57492
57559
  }
@@ -57531,7 +57598,7 @@ function createSleep(ctx) {
57531
57598
  ctx.invocationsQueue.set(correlationId, waitItem);
57532
57599
  ctx.eventsConsumer.subscribe((event) => {
57533
57600
  if (!event) {
57534
- ctx.promiseQueue = ctx.promiseQueue.then(() => {
57601
+ scheduleWhenIdle(ctx, () => {
57535
57602
  ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
57536
57603
  });
57537
57604
  return EventConsumerResult.NotConsumed;
@@ -57628,7 +57695,8 @@ async function runWorkflow(workflowCode2, workflowRun, events, encryptionKey) {
57628
57695
  },
57629
57696
  set promiseQueue(value) {
57630
57697
  promiseQueueHolder.current = value;
57631
- }
57698
+ },
57699
+ pendingDeliveries: 0
57632
57700
  };
57633
57701
  workflowContext.eventsConsumer.subscribe((event) => {
57634
57702
  const createdAt = event?.createdAt;
@@ -57658,6 +57726,7 @@ async function runWorkflow(workflowCode2, workflowRun, events, encryptionKey) {
57658
57726
  vmGlobalThis[WORKFLOW_GET_STREAM_ID] = (namespace) => getWorkflowRunStreamId(workflowRun.runId, namespace);
57659
57727
  const url2 = isVercel ? `https://${process.env.VERCEL_URL}` : `http://localhost:${port ?? 3e3}`;
57660
57728
  const ctx = {
57729
+ workflowName: workflowRun.workflowName,
57661
57730
  workflowRunId: workflowRun.runId,
57662
57731
  workflowStartedAt: new vmGlobalThis.Date(+startedAt),
57663
57732
  url: url2
@@ -58255,11 +58324,13 @@ var stepHandler = getWorldHandlers().createQueueHandler("__wkf_step_", async (me
58255
58324
  result = await trace2("step.execute", {}, async () => {
58256
58325
  return await contextStorage.run({
58257
58326
  stepMetadata: {
58327
+ stepName,
58258
58328
  stepId,
58259
58329
  stepStartedAt: /* @__PURE__ */ new Date(+stepStartedAt),
58260
58330
  attempt
58261
58331
  },
58262
58332
  workflowMetadata: {
58333
+ workflowName,
58263
58334
  workflowRunId,
58264
58335
  workflowStartedAt: /* @__PURE__ */ new Date(+workflowStartedAt),
58265
58336
  // TODO: there should be a getUrl method on the world interface itself. This
@@ -58941,7 +59012,7 @@ function getWritable(options = {}) {
58941
59012
  __name(getWritable, "getWritable");
58942
59013
 
58943
59014
  // ../workflow/dist/stdlib.js
58944
- var fetch = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//workflow@4.2.0-beta.66//fetch");
59015
+ var fetch = globalThis[/* @__PURE__ */ Symbol.for("WORKFLOW_USE_STEP")]("step//workflow@4.2.0-beta.68//fetch");
58945
59016
 
58946
59017
  // ../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.js
58947
59018
  var NEVER = Object.freeze({
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "steps": {
4
- "workflow/dist/internal/builtins.js": {
5
- "__builtin_response_array_buffer": {
6
- "stepId": "__builtin_response_array_buffer"
7
- },
8
- "__builtin_response_json": {
9
- "stepId": "__builtin_response_json"
10
- },
11
- "__builtin_response_text": {
12
- "stepId": "__builtin_response_text"
4
+ "workflow/dist/stdlib.js": {
5
+ "fetch": {
6
+ "stepId": "step//workflow@4.2.0-beta.68//fetch"
7
+ }
8
+ },
9
+ "workflows/hooks.ts": {
10
+ "writeEvent": {
11
+ "stepId": "step//./workflows/hooks//writeEvent"
13
12
  }
14
13
  },
15
14
  "workflows/addition.ts": {
@@ -22,41 +21,42 @@
22
21
  "stepId": "step//./workflows/null-byte//nullByteStep"
23
22
  }
24
23
  },
25
- "workflow/dist/stdlib.js": {
26
- "fetch": {
27
- "stepId": "step//workflow@4.2.0-beta.66//fetch"
24
+ "workflows/retriable-and-fatal.ts": {
25
+ "stepThatFails": {
26
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatFails"
27
+ },
28
+ "stepThatThrowsRetryableError": {
29
+ "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
28
30
  }
29
31
  },
30
- "workflows/hooks.ts": {
31
- "writeEvent": {
32
- "stepId": "step//./workflows/hooks//writeEvent"
32
+ "workflow/dist/internal/builtins.js": {
33
+ "__builtin_response_array_buffer": {
34
+ "stepId": "__builtin_response_array_buffer"
35
+ },
36
+ "__builtin_response_json": {
37
+ "stepId": "__builtin_response_json"
38
+ },
39
+ "__builtin_response_text": {
40
+ "stepId": "__builtin_response_text"
33
41
  }
34
42
  },
35
43
  "workflows/noop.ts": {
36
44
  "noop": {
37
45
  "stepId": "step//./workflows/noop//noop"
38
46
  }
39
- },
40
- "workflows/retriable-and-fatal.ts": {
41
- "stepThatFails": {
42
- "stepId": "step//./workflows/retriable-and-fatal//stepThatFails"
43
- },
44
- "stepThatThrowsRetryableError": {
45
- "stepId": "step//./workflows/retriable-and-fatal//stepThatThrowsRetryableError"
46
- }
47
47
  }
48
48
  },
49
49
  "workflows": {
50
- "workflows/addition.ts": {
51
- "addition": {
52
- "workflowId": "workflow//./workflows/addition//addition",
50
+ "workflows/hooks.ts": {
51
+ "collectWithHook": {
52
+ "workflowId": "workflow//./workflows/hooks//collectWithHook",
53
53
  "graph": {
54
54
  "nodes": [
55
55
  {
56
56
  "id": "start",
57
57
  "type": "workflowStart",
58
58
  "data": {
59
- "label": "Start: addition",
59
+ "label": "Start: collectWithHook",
60
60
  "nodeKind": "workflow_start"
61
61
  }
62
62
  },
@@ -80,16 +80,16 @@
80
80
  }
81
81
  }
82
82
  },
83
- "workflows/null-byte.ts": {
84
- "nullByteWorkflow": {
85
- "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
83
+ "workflows/addition.ts": {
84
+ "addition": {
85
+ "workflowId": "workflow//./workflows/addition//addition",
86
86
  "graph": {
87
87
  "nodes": [
88
88
  {
89
89
  "id": "start",
90
90
  "type": "workflowStart",
91
91
  "data": {
92
- "label": "Start: nullByteWorkflow",
92
+ "label": "Start: addition",
93
93
  "nodeKind": "workflow_start"
94
94
  }
95
95
  },
@@ -113,16 +113,16 @@
113
113
  }
114
114
  }
115
115
  },
116
- "workflows/hooks.ts": {
117
- "collectWithHook": {
118
- "workflowId": "workflow//./workflows/hooks//collectWithHook",
116
+ "workflows/null-byte.ts": {
117
+ "nullByteWorkflow": {
118
+ "workflowId": "workflow//./workflows/null-byte//nullByteWorkflow",
119
119
  "graph": {
120
120
  "nodes": [
121
121
  {
122
122
  "id": "start",
123
123
  "type": "workflowStart",
124
124
  "data": {
125
- "label": "Start: collectWithHook",
125
+ "label": "Start: nullByteWorkflow",
126
126
  "nodeKind": "workflow_start"
127
127
  }
128
128
  },
@@ -146,16 +146,16 @@
146
146
  }
147
147
  }
148
148
  },
149
- "workflows/noop.ts": {
150
- "brokenWf": {
151
- "workflowId": "workflow//./workflows/noop//brokenWf",
149
+ "workflows/retriable-and-fatal.ts": {
150
+ "retryableAndFatalErrorWorkflow": {
151
+ "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
152
152
  "graph": {
153
153
  "nodes": [
154
154
  {
155
155
  "id": "start",
156
156
  "type": "workflowStart",
157
157
  "data": {
158
- "label": "Start: brokenWf",
158
+ "label": "Start: retryableAndFatalErrorWorkflow",
159
159
  "nodeKind": "workflow_start"
160
160
  }
161
161
  },
@@ -179,16 +179,16 @@
179
179
  }
180
180
  }
181
181
  },
182
- "workflows/retriable-and-fatal.ts": {
183
- "retryableAndFatalErrorWorkflow": {
184
- "workflowId": "workflow//./workflows/retriable-and-fatal//retryableAndFatalErrorWorkflow",
182
+ "workflows/noop.ts": {
183
+ "brokenWf": {
184
+ "workflowId": "workflow//./workflows/noop//brokenWf",
185
185
  "graph": {
186
186
  "nodes": [
187
187
  {
188
188
  "id": "start",
189
189
  "type": "workflowStart",
190
190
  "data": {
191
- "label": "Start: retryableAndFatalErrorWorkflow",
191
+ "label": "Start: brokenWf",
192
192
  "nodeKind": "workflow_start"
193
193
  }
194
194
  },