@workflow/world-testing 5.0.0-beta.34 → 5.0.0-beta.35

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.
@@ -16451,12 +16451,14 @@ function validateAttributeChanges(changes, context = {}) {
16451
16451
  throw new AttributeValidationError(`Run attribute count would exceed limit ${ATTRIBUTE_MAX_PER_RUN} (post-merge ${postMerge})`);
16452
16452
  }
16453
16453
  }
16454
- var RESERVED_ATTRIBUTE_KEY_PREFIX, ATTRIBUTE_KEY_MAX_LENGTH, ATTRIBUTE_VALUE_MAX_BYTES, ATTRIBUTE_MAX_PER_RUN, AttributeChangeSchema, AttributeChangesSchema, AttributeValidationError, valueByteLength;
16454
+ var RESERVED_ATTRIBUTE_KEY_PREFIX, ROOT_RUN_ID_ATTRIBUTE, PARENT_RUN_ID_ATTRIBUTE, ATTRIBUTE_KEY_MAX_LENGTH, ATTRIBUTE_VALUE_MAX_BYTES, ATTRIBUTE_MAX_PER_RUN, AttributeChangeSchema, AttributeChangesSchema, AttributeValidationError, valueByteLength;
16455
16455
  var init_attributes = __esm({
16456
16456
  "../world/dist/attributes.js"() {
16457
16457
  "use strict";
16458
16458
  init_zod();
16459
16459
  RESERVED_ATTRIBUTE_KEY_PREFIX = "$";
16460
+ ROOT_RUN_ID_ATTRIBUTE = `${RESERVED_ATTRIBUTE_KEY_PREFIX}rootRunId`;
16461
+ PARENT_RUN_ID_ATTRIBUTE = `${RESERVED_ATTRIBUTE_KEY_PREFIX}parentRunId`;
16460
16462
  ATTRIBUTE_KEY_MAX_LENGTH = 256;
16461
16463
  ATTRIBUTE_VALUE_MAX_BYTES = 256;
16462
16464
  ATTRIBUTE_MAX_PER_RUN = 64;
@@ -16619,6 +16621,17 @@ var init_events = __esm({
16619
16621
  // stso.
16620
16622
  stepCount: external_exports.number().int().positive().optional(),
16621
16623
  eventCount: external_exports.number().int().positive().optional(),
16624
+ // Run-started-to-first-step: milliseconds from the `run_started` response
16625
+ // landing (or, under turbo, the local run synthesis instant) until this
16626
+ // step's start POST was issued. A sub-window of ttfs. Only reported
16627
+ // alongside the same eligibility as ttfs.
16628
+ rsfs: external_exports.number().optional(),
16629
+ // Synchronous workflow-function replay duration of only the FINAL replay
16630
+ // pass within the rsfs window (the pass that scheduled the first step),
16631
+ // excluding awaited network I/O — not accumulated across earlier
16632
+ // pre-first-step passes, so it is not "the replay portion of rsfs". Only
16633
+ // present alongside rsfs, and only for the run's first step.
16634
+ finalSchedulingReplay: external_exports.number().optional(),
16622
16635
  // Names of the runtime's optional startup-latency optimizations that were
16623
16636
  // active for this measurement (e.g. 'turbo', 'lazyStepStart',
16624
16637
  // 'optimisticStart'), so latency metrics can be segmented by them.
@@ -19808,7 +19821,7 @@ function SemanticConvention(...names) {
19808
19821
  value
19809
19822
  ]));
19810
19823
  }
19811
- var WorkflowName, WorkflowOperation, WorkflowRunId, WorkflowRunStatus, WorkflowStartedAt, WorkflowEventsCount, WorkflowArgumentsCount, WorkflowResultType, WorkflowTracePropagated, WorkflowTraceMode, WorkflowTurbo, WorkflowErrorName, WorkflowErrorMessage, WorkflowErrorCode, WorkflowStepsCreated, WorkflowHooksCreated, WorkflowWaitsCreated, WorkflowOwnedRecoverySteps, WorkflowBackstopWakesArmed, WorkflowRouteType, WorkflowRouteHandlerCached, WorkflowRouteInvocationCount, WorkflowRouteEntrypointAgeMs, WorkflowRouteModuleBodyInitMs, StepName, StepId, StepAttempt, StepStatus, StepMaxRetries, StepTracePropagated, StepTtfsMs, StepStsoMs, StepLatencyOptimizations, StepSkipped, StepSkipReason, StepArgumentsCount, StepResultType, StepErrorName, StepErrorMessage, StepFatalError, StepRetryExhausted, StepRetryTimeoutSeconds, StepRetryWillRetry, MessagingSystem, MessagingDestinationName, MessagingMessageId, MessagingOperationType, QueueOverheadMs, DeploymentId, HookToken, HookId, HookFound, WebhookHandlersTriggered, WorkflowSuspensionState, WorkflowSuspensionHookCount, WorkflowSuspensionStepCount, WorkflowSuspensionWaitCount, HttpRequestMethod, HttpRoute, UrlFull, ServerAddress, ServerPort, HttpResponseStatusCode, ErrorType, WorldParseFormat, WorkflowEventsPagesLoaded, QueueDeserializeTimeMs, QueueExecutionTimeMs, QueueSerializeTimeMs, SerializationOperation, SerializationCompressed, SerializationCodec, SerializationUncompressedBytes, SerializationStoredBytes, SerializationCompressionRatio, PeerService, RpcSystem, RpcService, RpcMethod, ErrorRetryable, ErrorCategory;
19824
+ var WorkflowName, WorkflowOperation, WorkflowRunId, WorkflowRunStatus, WorkflowStartedAt, WorkflowEventsCount, WorkflowArgumentsCount, WorkflowResultType, WorkflowTracePropagated, WorkflowTraceMode, WorkflowTurbo, WorkflowErrorName, WorkflowErrorMessage, WorkflowErrorCode, WorkflowStepsCreated, WorkflowHooksCreated, WorkflowWaitsCreated, WorkflowOwnedRecoverySteps, WorkflowBackstopWakesArmed, WorkflowRouteType, WorkflowRouteHandlerCached, WorkflowRouteInvocationCount, WorkflowRouteEntrypointAgeMs, WorkflowRouteModuleBodyInitMs, StepName, StepId, StepAttempt, StepStatus, StepMaxRetries, StepTracePropagated, StepTtfsMs, StepStsoMs, StepRsfsMs, StepFinalSchedulingReplayMs, StepLatencyOptimizations, StepSkipped, StepSkipReason, StepArgumentsCount, StepResultType, StepErrorName, StepErrorMessage, StepFatalError, StepRetryExhausted, StepRetryTimeoutSeconds, StepRetryWillRetry, MessagingSystem, MessagingDestinationName, MessagingMessageId, MessagingOperationType, QueueOverheadMs, DeploymentId, HookToken, HookId, HookFound, WebhookHandlersTriggered, WorkflowSuspensionState, WorkflowSuspensionHookCount, WorkflowSuspensionStepCount, WorkflowSuspensionWaitCount, HttpRequestMethod, HttpRoute, UrlFull, ServerAddress, ServerPort, HttpResponseStatusCode, ErrorType, WorldParseFormat, WorkflowEventsPagesLoaded, QueueDeserializeTimeMs, QueueExecutionTimeMs, QueueSerializeTimeMs, SerializationOperation, SerializationCompressed, SerializationCodec, SerializationUncompressedBytes, SerializationStoredBytes, SerializationCompressionRatio, PeerService, RpcSystem, RpcService, RpcMethod, ErrorRetryable, ErrorCategory;
19812
19825
  var init_semantic_conventions = __esm({
19813
19826
  "../core/dist/telemetry/semantic-conventions.js"() {
19814
19827
  "use strict";
@@ -19845,6 +19858,8 @@ var init_semantic_conventions = __esm({
19845
19858
  StepTracePropagated = SemanticConvention("step.trace.propagated");
19846
19859
  StepTtfsMs = SemanticConvention("step.ttfs_ms");
19847
19860
  StepStsoMs = SemanticConvention("step.stso_ms");
19861
+ StepRsfsMs = SemanticConvention("step.rsfs_ms");
19862
+ StepFinalSchedulingReplayMs = SemanticConvention("step.final_scheduling_replay_ms");
19848
19863
  StepLatencyOptimizations = SemanticConvention("step.latency_optimizations");
19849
19864
  StepSkipped = SemanticConvention("step.skipped");
19850
19865
  StepSkipReason = SemanticConvention("step.skip_reason");
@@ -24477,7 +24492,7 @@ var version2;
24477
24492
  var init_version = __esm({
24478
24493
  "../core/dist/version.js"() {
24479
24494
  "use strict";
24480
- version2 = "5.0.0-beta.34";
24495
+ version2 = "5.0.0-beta.35";
24481
24496
  }
24482
24497
  });
24483
24498
 
@@ -27681,6 +27696,7 @@ __name(isRetryableWorldError, "isRetryableWorldError");
27681
27696
  init_encryption();
27682
27697
  init_logger();
27683
27698
  init_serialization2();
27699
+ init_context_storage();
27684
27700
  init_semantic_conventions();
27685
27701
  init_telemetry();
27686
27702
  init_version();
@@ -27690,6 +27706,16 @@ init_wait_until();
27690
27706
  init_world_compatibility();
27691
27707
  var CROSS_DEPLOYMENT_CAPABILITY_PROBE_TIMEOUT_MS = 2e3;
27692
27708
  var ulid3 = monotonicFactory();
27709
+ function resolveLineageAttributes() {
27710
+ const store = contextStorage.getStore();
27711
+ const parentRunId = store?.workflowMetadata?.workflowRunId;
27712
+ if (!parentRunId) return void 0;
27713
+ return {
27714
+ [ROOT_RUN_ID_ATTRIBUTE]: store.rootRunId ?? parentRunId,
27715
+ [PARENT_RUN_ID_ATTRIBUTE]: parentRunId
27716
+ };
27717
+ }
27718
+ __name(resolveLineageAttributes, "resolveLineageAttributes");
27693
27719
  var hasWarnedLatestNoOp = false;
27694
27720
  async function start(workflow, argsOrOptions, options) {
27695
27721
  return await waitedUntil(() => {
@@ -27774,9 +27800,14 @@ async function start(workflow, argsOrOptions, options) {
27774
27800
  value
27775
27801
  ]));
27776
27802
  }
27777
- const attributeSeed = attributes ? {
27778
- attributes,
27779
- ...allowReservedAttributes ? {
27803
+ const lineage = specVersion >= SPEC_VERSION_SUPPORTS_ATTRIBUTES ? resolveLineageAttributes() : void 0;
27804
+ const runAttributes = lineage ? {
27805
+ ...lineage,
27806
+ ...attributes
27807
+ } : attributes;
27808
+ const attributeSeed = runAttributes ? {
27809
+ attributes: runAttributes,
27810
+ ...allowReservedAttributes || lineage != null ? {
27780
27811
  allowReservedAttributes: true
27781
27812
  } : {}
27782
27813
  } : {};
@@ -27890,7 +27921,7 @@ __name(start, "start");
27890
27921
  value: "start",
27891
27922
  configurable: true
27892
27923
  });
27893
- })(start, "step//@workflow/core/runtime/start@5.0.0-beta.34//start");
27924
+ })(start, "step//@workflow/core/runtime/start@5.0.0-beta.35//start");
27894
27925
 
27895
27926
  // ../core/dist/runtime/runs.js
27896
27927
  async function wakeUpRun(world, runId, options) {
@@ -28226,7 +28257,7 @@ var Run = class _Run {
28226
28257
  value: "wakeUp",
28227
28258
  configurable: true
28228
28259
  });
28229
- })(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#wakeUp");
28260
+ })(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#wakeUp");
28230
28261
  (function(__wf_fn, __wf_id) {
28231
28262
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28232
28263
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28235,7 +28266,7 @@ var Run = class _Run {
28235
28266
  value: "cancel",
28236
28267
  configurable: true
28237
28268
  });
28238
- })(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#cancel");
28269
+ })(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#cancel");
28239
28270
  (function(__wf_fn, __wf_id) {
28240
28271
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28241
28272
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28244,7 +28275,7 @@ var Run = class _Run {
28244
28275
  value: "getReadable",
28245
28276
  configurable: true
28246
28277
  });
28247
- })(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#getReadable");
28278
+ })(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#getReadable");
28248
28279
  (function(__wf_fn, __wf_id) {
28249
28280
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28250
28281
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28253,7 +28284,7 @@ var Run = class _Run {
28253
28284
  value: "exists",
28254
28285
  configurable: true
28255
28286
  });
28256
- })(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#exists");
28287
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#exists");
28257
28288
  (function(__wf_fn, __wf_id) {
28258
28289
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28259
28290
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28262,7 +28293,7 @@ var Run = class _Run {
28262
28293
  value: "status",
28263
28294
  configurable: true
28264
28295
  });
28265
- })(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#status");
28296
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#status");
28266
28297
  (function(__wf_fn, __wf_id) {
28267
28298
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28268
28299
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28271,7 +28302,7 @@ var Run = class _Run {
28271
28302
  value: "returnValue",
28272
28303
  configurable: true
28273
28304
  });
28274
- })(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#returnValue");
28305
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#returnValue");
28275
28306
  (function(__wf_fn, __wf_id) {
28276
28307
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28277
28308
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28280,7 +28311,7 @@ var Run = class _Run {
28280
28311
  value: "workflowName",
28281
28312
  configurable: true
28282
28313
  });
28283
- })(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#workflowName");
28314
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#workflowName");
28284
28315
  (function(__wf_fn, __wf_id) {
28285
28316
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28286
28317
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28289,7 +28320,7 @@ var Run = class _Run {
28289
28320
  value: "createdAt",
28290
28321
  configurable: true
28291
28322
  });
28292
- })(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#createdAt");
28323
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#createdAt");
28293
28324
  (function(__wf_fn, __wf_id) {
28294
28325
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28295
28326
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28298,7 +28329,7 @@ var Run = class _Run {
28298
28329
  value: "startedAt",
28299
28330
  configurable: true
28300
28331
  });
28301
- })(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#startedAt");
28332
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#startedAt");
28302
28333
  (function(__wf_fn, __wf_id) {
28303
28334
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28304
28335
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28307,7 +28338,7 @@ var Run = class _Run {
28307
28338
  value: "completedAt",
28308
28339
  configurable: true
28309
28340
  });
28310
- })(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.34//Run#completedAt");
28341
+ })(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.35//Run#completedAt");
28311
28342
  (function(__wf_cls, __wf_id) {
28312
28343
  var __wf_sym = /* @__PURE__ */ Symbol.for("workflow-class-registry"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28313
28344
  __wf_reg.set(__wf_id, __wf_cls);
@@ -28317,7 +28348,7 @@ var Run = class _Run {
28317
28348
  enumerable: false,
28318
28349
  configurable: false
28319
28350
  });
28320
- })(Run, "class//@workflow/core/runtime/run@5.0.0-beta.34//Run");
28351
+ })(Run, "class//@workflow/core/runtime/run@5.0.0-beta.35//Run");
28321
28352
 
28322
28353
  // ../workflow/dist/stdlib.js
28323
28354
  async function fetch2(...args) {
@@ -28676,13 +28707,52 @@ async function hookWorkflow(token) {
28676
28707
  __name(hookWorkflow, "hookWorkflow");
28677
28708
  hookWorkflow.workflowId = "workflow//./workflows/inline-execution//hookWorkflow";
28678
28709
 
28710
+ // workflows/lineage.ts
28711
+ async function noop() {
28712
+ }
28713
+ __name(noop, "noop");
28714
+ (function(__wf_fn, __wf_id) {
28715
+ var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28716
+ __wf_reg.set(__wf_id, __wf_fn);
28717
+ __wf_fn.stepId = __wf_id;
28718
+ Object.defineProperty(__wf_fn, "name", {
28719
+ value: "noop",
28720
+ configurable: true
28721
+ });
28722
+ })(noop, "step//./workflows/lineage//noop");
28723
+ async function bodyStartsChild() {
28724
+ throw new Error("You attempted to execute workflow bodyStartsChild function directly. To start a workflow, use start(bodyStartsChild) from workflow/api");
28725
+ }
28726
+ __name(bodyStartsChild, "bodyStartsChild");
28727
+ bodyStartsChild.workflowId = "workflow//./workflows/lineage//bodyStartsChild";
28728
+ async function spawnedChild() {
28729
+ throw new Error("You attempted to execute workflow spawnedChild function directly. To start a workflow, use start(spawnedChild) from workflow/api");
28730
+ }
28731
+ __name(spawnedChild, "spawnedChild");
28732
+ spawnedChild.workflowId = "workflow//./workflows/lineage//spawnedChild";
28733
+ async function chainRoot() {
28734
+ throw new Error("You attempted to execute workflow chainRoot function directly. To start a workflow, use start(chainRoot) from workflow/api");
28735
+ }
28736
+ __name(chainRoot, "chainRoot");
28737
+ chainRoot.workflowId = "workflow//./workflows/lineage//chainRoot";
28738
+ async function chainMiddle() {
28739
+ throw new Error("You attempted to execute workflow chainMiddle function directly. To start a workflow, use start(chainMiddle) from workflow/api");
28740
+ }
28741
+ __name(chainMiddle, "chainMiddle");
28742
+ chainMiddle.workflowId = "workflow//./workflows/lineage//chainMiddle";
28743
+ async function chainLeaf() {
28744
+ throw new Error("You attempted to execute workflow chainLeaf function directly. To start a workflow, use start(chainLeaf) from workflow/api");
28745
+ }
28746
+ __name(chainLeaf, "chainLeaf");
28747
+ chainLeaf.workflowId = "workflow//./workflows/lineage//chainLeaf";
28748
+
28679
28749
  // workflows/noop.ts
28680
28750
  var count = 0;
28681
- async function noop(_i) {
28751
+ async function noop2(_i) {
28682
28752
  count++;
28683
28753
  return count;
28684
28754
  }
28685
- __name(noop, "noop");
28755
+ __name(noop2, "noop");
28686
28756
  (function(__wf_fn, __wf_id) {
28687
28757
  var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
28688
28758
  __wf_reg.set(__wf_id, __wf_fn);
@@ -28691,7 +28761,7 @@ __name(noop, "noop");
28691
28761
  value: "noop",
28692
28762
  configurable: true
28693
28763
  });
28694
- })(noop, "step//./workflows/noop//noop");
28764
+ })(noop2, "step//./workflows/noop//noop");
28695
28765
  async function brokenWf() {
28696
28766
  throw new Error("You attempted to execute workflow brokenWf function directly. To start a workflow, use start(brokenWf) from workflow/api");
28697
28767
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,QAO9C"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,QAQ9C"}
@@ -3,6 +3,7 @@ import { errors } from './errors.mjs';
3
3
  import { hooks } from './hooks.mjs';
4
4
  import { idempotency } from './idempotency.mjs';
5
5
  import { inlineExecution } from './inline-execution.mjs';
6
+ import { lineage } from './lineage.mjs';
6
7
  import { nullByte } from './null-byte.mjs';
7
8
  export function createTestSuite(pkgName) {
8
9
  addition(pkgName);
@@ -11,5 +12,6 @@ export function createTestSuite(pkgName) {
11
12
  nullByte(pkgName);
12
13
  errors(pkgName);
13
14
  inlineExecution(pkgName);
15
+ lineage(pkgName);
14
16
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4Lm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBZTtJQUM3QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRpdGlvbiB9IGZyb20gJy4vYWRkaXRpb24ubWpzJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4vZXJyb3JzLm1qcyc7XG5pbXBvcnQgeyBob29rcyB9IGZyb20gJy4vaG9va3MubWpzJztcbmltcG9ydCB7IGlkZW1wb3RlbmN5IH0gZnJvbSAnLi9pZGVtcG90ZW5jeS5tanMnO1xuaW1wb3J0IHsgaW5saW5lRXhlY3V0aW9uIH0gZnJvbSAnLi9pbmxpbmUtZXhlY3V0aW9uLm1qcyc7XG5pbXBvcnQgeyBudWxsQnl0ZSB9IGZyb20gJy4vbnVsbC1ieXRlLm1qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXN0U3VpdGUocGtnTmFtZTogc3RyaW5nKSB7XG4gIGFkZGl0aW9uKHBrZ05hbWUpO1xuICBpZGVtcG90ZW5jeShwa2dOYW1lKTtcbiAgaG9va3MocGtnTmFtZSk7XG4gIG51bGxCeXRlKHBrZ05hbWUpO1xuICBlcnJvcnMocGtnTmFtZSk7XG4gIGlubGluZUV4ZWN1dGlvbihwa2dOYW1lKTtcbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4Lm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFlO0lBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRpdGlvbiB9IGZyb20gJy4vYWRkaXRpb24ubWpzJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4vZXJyb3JzLm1qcyc7XG5pbXBvcnQgeyBob29rcyB9IGZyb20gJy4vaG9va3MubWpzJztcbmltcG9ydCB7IGlkZW1wb3RlbmN5IH0gZnJvbSAnLi9pZGVtcG90ZW5jeS5tanMnO1xuaW1wb3J0IHsgaW5saW5lRXhlY3V0aW9uIH0gZnJvbSAnLi9pbmxpbmUtZXhlY3V0aW9uLm1qcyc7XG5pbXBvcnQgeyBsaW5lYWdlIH0gZnJvbSAnLi9saW5lYWdlLm1qcyc7XG5pbXBvcnQgeyBudWxsQnl0ZSB9IGZyb20gJy4vbnVsbC1ieXRlLm1qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXN0U3VpdGUocGtnTmFtZTogc3RyaW5nKSB7XG4gIGFkZGl0aW9uKHBrZ05hbWUpO1xuICBpZGVtcG90ZW5jeShwa2dOYW1lKTtcbiAgaG9va3MocGtnTmFtZSk7XG4gIG51bGxCeXRlKHBrZ05hbWUpO1xuICBlcnJvcnMocGtnTmFtZSk7XG4gIGlubGluZUV4ZWN1dGlvbihwa2dOYW1lKTtcbiAgbGluZWFnZShwa2dOYW1lKTtcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Proves end-to-end that `start()` called from a workflow *body* (the canonical
3
+ * child-workflow spawn, not from inside a step) records cross-run lineage. The
4
+ * spawned child must carry `$parentRunId`/`$rootRunId` pointing at the parent,
5
+ * while the top-level parent itself carries none.
6
+ */
7
+ export declare function lineage(world: string): void;
8
+ //# sourceMappingURL=lineage.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineage.d.mts","sourceRoot":"","sources":["../../src/lineage.mts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,QAuDpC"}
@@ -0,0 +1,48 @@
1
+ import { hydrateWorkflowReturnValue } from '@workflow/core/serialization';
2
+ import { expect, test, vi } from 'vitest';
3
+ import { createFetcher, startServer } from './util.mjs';
4
+ const awaitCompleted = (server, runId) => vi.waitFor(async () => {
5
+ const run = await server.getRun(runId);
6
+ expect(run.status).toBe('completed');
7
+ return run;
8
+ }, { interval: 200, timeout: 10_000 });
9
+ // The runId a run spawned, read from its return value.
10
+ const spawnedRunId = (run) => hydrateWorkflowReturnValue(run.output, run.runId, undefined);
11
+ /**
12
+ * Proves end-to-end that `start()` called from a workflow *body* (the canonical
13
+ * child-workflow spawn, not from inside a step) records cross-run lineage. The
14
+ * spawned child must carry `$parentRunId`/`$rootRunId` pointing at the parent,
15
+ * while the top-level parent itself carries none.
16
+ */
17
+ export function lineage(world) {
18
+ test('body-level start() records lineage on the child', { timeout: 30_000 }, async () => {
19
+ const server = await startServer({ world }).then(createFetcher);
20
+ const { runId: parentRunId } = await server.invoke('workflows/lineage.ts', 'bodyStartsChild', []);
21
+ const parent = await awaitCompleted(server, parentRunId);
22
+ const child = await awaitCompleted(server, await spawnedRunId(parent));
23
+ // The child started from the parent's body inherits the lineage; the
24
+ // parent is top-level, so it anchors the root to itself.
25
+ expect(child.attributes?.$parentRunId).toBe(parentRunId);
26
+ expect(child.attributes?.$rootRunId).toBe(parentRunId);
27
+ expect(parent.attributes?.$parentRunId).toBeUndefined();
28
+ });
29
+ test('a three-level chain groups every run under the same root', { timeout: 30_000 }, async () => {
30
+ const server = await startServer({ world }).then(createFetcher);
31
+ // Each run returns the id of the one it spawned.
32
+ const { runId: rootRunId } = await server.invoke('workflows/lineage.ts', 'chainRoot', []);
33
+ const root = await awaitCompleted(server, rootRunId);
34
+ const middleRunId = await spawnedRunId(root);
35
+ const middle = await awaitCompleted(server, middleRunId);
36
+ const leaf = await awaitCompleted(server, await spawnedRunId(middle));
37
+ // Root is top-level.
38
+ expect(root.attributes?.$parentRunId).toBeUndefined();
39
+ expect(root.attributes?.$rootRunId).toBeUndefined();
40
+ // Middle: root and parent coincide at depth two.
41
+ expect(middle.attributes?.$parentRunId).toBe(rootRunId);
42
+ expect(middle.attributes?.$rootRunId).toBe(rootRunId);
43
+ // Leaf: parent is the middle, but root is still the chain root.
44
+ expect(leaf.attributes?.$parentRunId).toBe(middleRunId);
45
+ expect(leaf.attributes?.$rootRunId).toBe(rootRunId);
46
+ });
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFnZS5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGluZWFnZS5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSXhELE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBZSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ3hELEVBQUUsQ0FBQyxPQUFPLENBQ1IsS0FBSyxJQUFJLEVBQUU7SUFDVCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FDbkMsQ0FBQztBQUVKLHVEQUF1RDtBQUN2RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQXdDLEVBQUUsRUFBRSxDQUNoRSwwQkFBMEIsQ0FDeEIsR0FBRyxDQUFDLE1BQU8sRUFDWCxHQUFHLENBQUMsS0FBSyxFQUNULFNBQVMsQ0FDUyxDQUFDO0FBRXZCOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLElBQUksQ0FDRixpREFBaUQsRUFDakQsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ25CLEtBQUssSUFBSSxFQUFFO1FBQ1QsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVoRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FDaEQsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixFQUFFLENBQ0gsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV2RSxxRUFBcUU7UUFDckUseURBQXlEO1FBQ3pELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUQsQ0FBQyxDQUNGLENBQUM7SUFFRixJQUFJLENBQ0YsMERBQTBELEVBQzFELEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUNuQixLQUFLLElBQUksRUFBRTtRQUNULE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFaEUsaURBQWlEO1FBQ2pELE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUM5QyxzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLEVBQUUsQ0FDSCxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV0RSxxQkFBcUI7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEQsaURBQWlEO1FBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEQsZ0VBQWdFO1FBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHlkcmF0ZVdvcmtmbG93UmV0dXJuVmFsdWUgfSBmcm9tICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uJztcbmltcG9ydCB7IGV4cGVjdCwgdGVzdCwgdmkgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgY3JlYXRlRmV0Y2hlciwgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL3V0aWwubWpzJztcblxudHlwZSBGZXRjaGVyID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlRmV0Y2hlcj47XG5cbmNvbnN0IGF3YWl0Q29tcGxldGVkID0gKHNlcnZlcjogRmV0Y2hlciwgcnVuSWQ6IHN0cmluZykgPT5cbiAgdmkud2FpdEZvcihcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBydW4gPSBhd2FpdCBzZXJ2ZXIuZ2V0UnVuKHJ1bklkKTtcbiAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybiBydW47XG4gICAgfSxcbiAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDEwXzAwMCB9XG4gICk7XG5cbi8vIFRoZSBydW5JZCBhIHJ1biBzcGF3bmVkLCByZWFkIGZyb20gaXRzIHJldHVybiB2YWx1ZS5cbmNvbnN0IHNwYXduZWRSdW5JZCA9IChydW46IHsgb3V0cHV0PzogdW5rbm93bjsgcnVuSWQ6IHN0cmluZyB9KSA9PlxuICBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICBydW4ub3V0cHV0ISxcbiAgICBydW4ucnVuSWQsXG4gICAgdW5kZWZpbmVkXG4gICkgYXMgUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIFByb3ZlcyBlbmQtdG8tZW5kIHRoYXQgYHN0YXJ0KClgIGNhbGxlZCBmcm9tIGEgd29ya2Zsb3cgKmJvZHkqICh0aGUgY2Fub25pY2FsXG4gKiBjaGlsZC13b3JrZmxvdyBzcGF3biwgbm90IGZyb20gaW5zaWRlIGEgc3RlcCkgcmVjb3JkcyBjcm9zcy1ydW4gbGluZWFnZS4gVGhlXG4gKiBzcGF3bmVkIGNoaWxkIG11c3QgY2FycnkgYCRwYXJlbnRSdW5JZGAvYCRyb290UnVuSWRgIHBvaW50aW5nIGF0IHRoZSBwYXJlbnQsXG4gKiB3aGlsZSB0aGUgdG9wLWxldmVsIHBhcmVudCBpdHNlbGYgY2FycmllcyBub25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGluZWFnZSh3b3JsZDogc3RyaW5nKSB7XG4gIHRlc3QoXG4gICAgJ2JvZHktbGV2ZWwgc3RhcnQoKSByZWNvcmRzIGxpbmVhZ2Ugb24gdGhlIGNoaWxkJyxcbiAgICB7IHRpbWVvdXQ6IDMwXzAwMCB9LFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0U2VydmVyKHsgd29ybGQgfSkudGhlbihjcmVhdGVGZXRjaGVyKTtcblxuICAgICAgY29uc3QgeyBydW5JZDogcGFyZW50UnVuSWQgfSA9IGF3YWl0IHNlcnZlci5pbnZva2UoXG4gICAgICAgICd3b3JrZmxvd3MvbGluZWFnZS50cycsXG4gICAgICAgICdib2R5U3RhcnRzQ2hpbGQnLFxuICAgICAgICBbXVxuICAgICAgKTtcblxuICAgICAgY29uc3QgcGFyZW50ID0gYXdhaXQgYXdhaXRDb21wbGV0ZWQoc2VydmVyLCBwYXJlbnRSdW5JZCk7XG4gICAgICBjb25zdCBjaGlsZCA9IGF3YWl0IGF3YWl0Q29tcGxldGVkKHNlcnZlciwgYXdhaXQgc3Bhd25lZFJ1bklkKHBhcmVudCkpO1xuXG4gICAgICAvLyBUaGUgY2hpbGQgc3RhcnRlZCBmcm9tIHRoZSBwYXJlbnQncyBib2R5IGluaGVyaXRzIHRoZSBsaW5lYWdlOyB0aGVcbiAgICAgIC8vIHBhcmVudCBpcyB0b3AtbGV2ZWwsIHNvIGl0IGFuY2hvcnMgdGhlIHJvb3QgdG8gaXRzZWxmLlxuICAgICAgZXhwZWN0KGNoaWxkLmF0dHJpYnV0ZXM/LiRwYXJlbnRSdW5JZCkudG9CZShwYXJlbnRSdW5JZCk7XG4gICAgICBleHBlY3QoY2hpbGQuYXR0cmlidXRlcz8uJHJvb3RSdW5JZCkudG9CZShwYXJlbnRSdW5JZCk7XG4gICAgICBleHBlY3QocGFyZW50LmF0dHJpYnV0ZXM/LiRwYXJlbnRSdW5JZCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH1cbiAgKTtcblxuICB0ZXN0KFxuICAgICdhIHRocmVlLWxldmVsIGNoYWluIGdyb3VwcyBldmVyeSBydW4gdW5kZXIgdGhlIHNhbWUgcm9vdCcsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7IHdvcmxkIH0pLnRoZW4oY3JlYXRlRmV0Y2hlcik7XG5cbiAgICAgIC8vIEVhY2ggcnVuIHJldHVybnMgdGhlIGlkIG9mIHRoZSBvbmUgaXQgc3Bhd25lZC5cbiAgICAgIGNvbnN0IHsgcnVuSWQ6IHJvb3RSdW5JZCB9ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9saW5lYWdlLnRzJyxcbiAgICAgICAgJ2NoYWluUm9vdCcsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCByb290ID0gYXdhaXQgYXdhaXRDb21wbGV0ZWQoc2VydmVyLCByb290UnVuSWQpO1xuICAgICAgY29uc3QgbWlkZGxlUnVuSWQgPSBhd2FpdCBzcGF3bmVkUnVuSWQocm9vdCk7XG4gICAgICBjb25zdCBtaWRkbGUgPSBhd2FpdCBhd2FpdENvbXBsZXRlZChzZXJ2ZXIsIG1pZGRsZVJ1bklkKTtcbiAgICAgIGNvbnN0IGxlYWYgPSBhd2FpdCBhd2FpdENvbXBsZXRlZChzZXJ2ZXIsIGF3YWl0IHNwYXduZWRSdW5JZChtaWRkbGUpKTtcblxuICAgICAgLy8gUm9vdCBpcyB0b3AtbGV2ZWwuXG4gICAgICBleHBlY3Qocm9vdC5hdHRyaWJ1dGVzPy4kcGFyZW50UnVuSWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb290LmF0dHJpYnV0ZXM/LiRyb290UnVuSWQpLnRvQmVVbmRlZmluZWQoKTtcblxuICAgICAgLy8gTWlkZGxlOiByb290IGFuZCBwYXJlbnQgY29pbmNpZGUgYXQgZGVwdGggdHdvLlxuICAgICAgZXhwZWN0KG1pZGRsZS5hdHRyaWJ1dGVzPy4kcGFyZW50UnVuSWQpLnRvQmUocm9vdFJ1bklkKTtcbiAgICAgIGV4cGVjdChtaWRkbGUuYXR0cmlidXRlcz8uJHJvb3RSdW5JZCkudG9CZShyb290UnVuSWQpO1xuXG4gICAgICAvLyBMZWFmOiBwYXJlbnQgaXMgdGhlIG1pZGRsZSwgYnV0IHJvb3QgaXMgc3RpbGwgdGhlIGNoYWluIHJvb3QuXG4gICAgICBleHBlY3QobGVhZi5hdHRyaWJ1dGVzPy4kcGFyZW50UnVuSWQpLnRvQmUobWlkZGxlUnVuSWQpO1xuICAgICAgZXhwZWN0KGxlYWYuYXR0cmlidXRlcz8uJHJvb3RSdW5JZCkudG9CZShyb290UnVuSWQpO1xuICAgIH1cbiAgKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/world-testing",
3
- "version": "5.0.0-beta.34",
3
+ "version": "5.0.0-beta.35",
4
4
  "description": "Testing utilities and World implementation for Workflow SDK",
5
5
  "main": "dist/src/index.mjs",
6
6
  "files": [
@@ -21,22 +21,22 @@
21
21
  "hono": "4.12.25",
22
22
  "jsonlines": "0.1.1",
23
23
  "zod": "~4.3.6",
24
- "@workflow/cli": "5.0.0-beta.34",
25
- "@workflow/core": "5.0.0-beta.34",
24
+ "@workflow/cli": "5.0.0-beta.35",
25
+ "@workflow/core": "5.0.0-beta.35",
26
26
  "@workflow/utils": "5.0.0-beta.6",
27
- "@workflow/world": "5.0.0-beta.20",
28
- "@workflow/world-local": "5.0.0-beta.28",
29
- "workflow": "5.0.0-beta.34"
27
+ "@workflow/world": "5.0.0-beta.21",
28
+ "@workflow/world-local": "5.0.0-beta.29",
29
+ "workflow": "5.0.0-beta.35"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/jsonlines": "0.1.5",
33
33
  "@types/node": "22.19.0",
34
34
  "typescript": "^6.0.3",
35
- "vitest": "^4.0.18",
35
+ "vitest": "^4.1.10",
36
36
  "@workflow/tsconfig": "5.0.0-beta.0"
37
37
  },
38
38
  "peerDependencies": {
39
- "vitest": "^4.0.18"
39
+ "vitest": "^4.1.10"
40
40
  },
41
41
  "keywords": [],
42
42
  "author": "",