@rivetkit/workflow-engine 2.3.18 → 2.3.19

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.
@@ -43,7 +43,7 @@
43
43
 
44
44
 
45
45
 
46
- var _chunk32422MOMcjs = require('./chunk-32422MOM.cjs');
46
+ var _chunkAKCJVGJ7cjs = require('./chunk-AKCJVGJ7.cjs');
47
47
 
48
48
 
49
49
 
@@ -89,5 +89,5 @@ var _chunk32422MOMcjs = require('./chunk-32422MOM.cjs');
89
89
 
90
90
 
91
91
 
92
- exports.CancelledError = _chunk32422MOMcjs.CancelledError; exports.CriticalError = _chunk32422MOMcjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunk32422MOMcjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunk32422MOMcjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunk32422MOMcjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunk32422MOMcjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunk32422MOMcjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunk32422MOMcjs.EntryInProgressError; exports.EvictedError = _chunk32422MOMcjs.EvictedError; exports.HistoryDivergedError = _chunk32422MOMcjs.HistoryDivergedError; exports.JoinError = _chunk32422MOMcjs.JoinError; exports.Loop = _chunk32422MOMcjs.Loop; exports.MessageWaitError = _chunk32422MOMcjs.MessageWaitError; exports.RaceError = _chunk32422MOMcjs.RaceError; exports.RollbackCheckpointError = _chunk32422MOMcjs.RollbackCheckpointError; exports.RollbackError = _chunk32422MOMcjs.RollbackError; exports.SleepError = _chunk32422MOMcjs.SleepError; exports.StepExhaustedError = _chunk32422MOMcjs.StepExhaustedError; exports.StepFailedError = _chunk32422MOMcjs.StepFailedError; exports.WorkflowContextImpl = _chunk32422MOMcjs.WorkflowContextImpl; exports.appendLoopIteration = _chunk32422MOMcjs.appendLoopIteration; exports.appendName = _chunk32422MOMcjs.appendName; exports.createEntry = _chunk32422MOMcjs.createEntry; exports.createHistorySnapshot = _chunk32422MOMcjs.createHistorySnapshot; exports.createStorage = _chunk32422MOMcjs.createStorage; exports.deleteEntriesWithPrefix = _chunk32422MOMcjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunk32422MOMcjs.emptyLocation; exports.extractErrorInfo = _chunk32422MOMcjs.extractErrorInfo; exports.flush = _chunk32422MOMcjs.flush; exports.generateId = _chunk32422MOMcjs.generateId; exports.getEntry = _chunk32422MOMcjs.getEntry; exports.getOrCreateMetadata = _chunk32422MOMcjs.getOrCreateMetadata; exports.isLocationPrefix = _chunk32422MOMcjs.isLocationPrefix; exports.isLoopIterationMarker = _chunk32422MOMcjs.isLoopIterationMarker; exports.loadMetadata = _chunk32422MOMcjs.loadMetadata; exports.loadStorage = _chunk32422MOMcjs.loadStorage; exports.locationToKey = _chunk32422MOMcjs.locationToKey; exports.locationsEqual = _chunk32422MOMcjs.locationsEqual; exports.parentLocation = _chunk32422MOMcjs.parentLocation; exports.registerName = _chunk32422MOMcjs.registerName; exports.replayWorkflowFromStep = _chunk32422MOMcjs.replayWorkflowFromStep; exports.resolveName = _chunk32422MOMcjs.resolveName; exports.runWorkflow = _chunk32422MOMcjs.runWorkflow; exports.setEntry = _chunk32422MOMcjs.setEntry;
92
+ exports.CancelledError = _chunkAKCJVGJ7cjs.CancelledError; exports.CriticalError = _chunkAKCJVGJ7cjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunkAKCJVGJ7cjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunkAKCJVGJ7cjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunkAKCJVGJ7cjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunkAKCJVGJ7cjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunkAKCJVGJ7cjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunkAKCJVGJ7cjs.EntryInProgressError; exports.EvictedError = _chunkAKCJVGJ7cjs.EvictedError; exports.HistoryDivergedError = _chunkAKCJVGJ7cjs.HistoryDivergedError; exports.JoinError = _chunkAKCJVGJ7cjs.JoinError; exports.Loop = _chunkAKCJVGJ7cjs.Loop; exports.MessageWaitError = _chunkAKCJVGJ7cjs.MessageWaitError; exports.RaceError = _chunkAKCJVGJ7cjs.RaceError; exports.RollbackCheckpointError = _chunkAKCJVGJ7cjs.RollbackCheckpointError; exports.RollbackError = _chunkAKCJVGJ7cjs.RollbackError; exports.SleepError = _chunkAKCJVGJ7cjs.SleepError; exports.StepExhaustedError = _chunkAKCJVGJ7cjs.StepExhaustedError; exports.StepFailedError = _chunkAKCJVGJ7cjs.StepFailedError; exports.WorkflowContextImpl = _chunkAKCJVGJ7cjs.WorkflowContextImpl; exports.appendLoopIteration = _chunkAKCJVGJ7cjs.appendLoopIteration; exports.appendName = _chunkAKCJVGJ7cjs.appendName; exports.createEntry = _chunkAKCJVGJ7cjs.createEntry; exports.createHistorySnapshot = _chunkAKCJVGJ7cjs.createHistorySnapshot; exports.createStorage = _chunkAKCJVGJ7cjs.createStorage; exports.deleteEntriesWithPrefix = _chunkAKCJVGJ7cjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunkAKCJVGJ7cjs.emptyLocation; exports.extractErrorInfo = _chunkAKCJVGJ7cjs.extractErrorInfo; exports.flush = _chunkAKCJVGJ7cjs.flush; exports.generateId = _chunkAKCJVGJ7cjs.generateId; exports.getEntry = _chunkAKCJVGJ7cjs.getEntry; exports.getOrCreateMetadata = _chunkAKCJVGJ7cjs.getOrCreateMetadata; exports.isLocationPrefix = _chunkAKCJVGJ7cjs.isLocationPrefix; exports.isLoopIterationMarker = _chunkAKCJVGJ7cjs.isLoopIterationMarker; exports.loadMetadata = _chunkAKCJVGJ7cjs.loadMetadata; exports.loadStorage = _chunkAKCJVGJ7cjs.loadStorage; exports.locationToKey = _chunkAKCJVGJ7cjs.locationToKey; exports.locationsEqual = _chunkAKCJVGJ7cjs.locationsEqual; exports.parentLocation = _chunkAKCJVGJ7cjs.parentLocation; exports.registerName = _chunkAKCJVGJ7cjs.registerName; exports.replayWorkflowFromStep = _chunkAKCJVGJ7cjs.replayWorkflowFromStep; exports.resolveName = _chunkAKCJVGJ7cjs.resolveName; exports.runWorkflow = _chunkAKCJVGJ7cjs.runWorkflow; exports.setEntry = _chunkAKCJVGJ7cjs.setEntry;
93
93
  //# sourceMappingURL=index.cjs.map
@@ -557,6 +557,32 @@ interface KVWrite {
557
557
  key: Uint8Array;
558
558
  value: Uint8Array;
559
559
  }
560
+ /** How one run of the workflow function ended. */
561
+ type WorkflowOutcome = "completed" | "sleeping" | "evicted" | "failed" | "cancelled";
562
+ /** How one step attempt ended. `retry` will be tried again, `failed` will not. */
563
+ type WorkflowStepOutcome = "ok" | "retry" | "failed";
564
+ /** One open run of the workflow function. */
565
+ interface WorkflowSpan {
566
+ /** Runs `body` attributed to this run. */
567
+ run<T>(body: () => Promise<T>): Promise<T>;
568
+ /** Returns nothing when the attempt is not being traced. */
569
+ startStep(name: string, attempt: number): WorkflowStepSpan | undefined;
570
+ finish(outcome: WorkflowOutcome): Promise<void>;
571
+ }
572
+ /** One open attempt at one step. */
573
+ interface WorkflowStepSpan {
574
+ /** Runs `body` attributed to this attempt. */
575
+ run<T>(body: () => Promise<T>): Promise<T>;
576
+ /** `error` is what the step callback threw. */
577
+ finish(outcome: WorkflowStepOutcome, error?: unknown): void;
578
+ }
579
+ /**
580
+ * Receives the start and end of each workflow run and step attempt. A
581
+ * completed step replayed from history is not an attempt and is not reported.
582
+ */
583
+ interface WorkflowTelemetryDriver {
584
+ startSpan(): Promise<WorkflowSpan>;
585
+ }
560
586
  /**
561
587
  * The engine driver provides the KV and scheduling interface.
562
588
  * Implementations must provide these methods to integrate with different backends.
@@ -638,6 +664,8 @@ interface EngineDriver {
638
664
  * Implementations should resolve when any of the specified message names are available.
639
665
  */
640
666
  waitForMessages(messageNames: string[], abortSignal: AbortSignal): Promise<void>;
667
+ /** Present when the host traces workflows. */
668
+ readonly telemetry?: WorkflowTelemetryDriver;
641
669
  }
642
670
 
643
671
  /**
@@ -670,6 +698,7 @@ declare class WorkflowContextImpl implements WorkflowContextInterface {
670
698
  private abortController;
671
699
  private currentLocation;
672
700
  private visitedKeys;
701
+ private runSpan?;
673
702
  private mode;
674
703
  private rollbackActions?;
675
704
  private rollbackCheckpointSet;
@@ -679,7 +708,7 @@ declare class WorkflowContextImpl implements WorkflowContextInterface {
679
708
  private historyNotifier?;
680
709
  private onError?;
681
710
  private logger?;
682
- constructor(workflowId: string, storage: Storage, driver: EngineDriver, messageDriver: WorkflowMessageDriver, location?: Location, abortController?: AbortController, mode?: "forward" | "rollback", rollbackActions?: RollbackAction[], rollbackCheckpointSet?: boolean, historyNotifier?: () => void, onError?: WorkflowErrorHandler, logger?: Logger, visitedKeys?: Set<string>);
711
+ constructor(workflowId: string, storage: Storage, driver: EngineDriver, messageDriver: WorkflowMessageDriver, location?: Location, abortController?: AbortController, mode?: "forward" | "rollback", rollbackActions?: RollbackAction[], rollbackCheckpointSet?: boolean, historyNotifier?: () => void, onError?: WorkflowErrorHandler, logger?: Logger, visitedKeys?: Set<string>, runSpan?: WorkflowSpan);
683
712
  get abortSignal(): AbortSignal;
684
713
  get queue(): WorkflowQueue;
685
714
  isEvicted(): boolean;
@@ -1049,4 +1078,4 @@ declare function replayWorkflowFromStep(workflowId: string, driver: EngineDriver
1049
1078
  scheduleAlarm?: boolean;
1050
1079
  }): Promise<WorkflowHistorySnapshot>;
1051
1080
 
1052
- export { type BranchConfig, type BranchOutput, type BranchStatus, type BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, type EngineDriver, type Entry, EntryInProgressError, type EntryKind, type EntryKindType, type EntryMetadata, type EntryStatus, EvictedError, type History, HistoryDivergedError, type JoinEntry, JoinError, type KVEntry, type KVWrite, type Location, Loop, type LoopConfig, type LoopEntry, type LoopIterationMarker, type LoopResult, type Message, type MessageEntry, MessageWaitError, type NameIndex, type PathSegment, type RaceEntry, RaceError, type RemovedEntry, type RollbackCheckpointEntry, RollbackCheckpointError, type RollbackContextInterface, RollbackError, type RunWorkflowOptions, type SleepEntry, SleepError, type SleepState, type StepConfig, type StepEntry, StepExhaustedError, StepFailedError, type Storage, type TryBlockCatchKind, type TryBlockConfig, type TryBlockFailure, type TryBlockResult, type TryStepCatchKind, type TryStepConfig, type TryStepFailure, type TryStepResult, WorkflowContextImpl, type WorkflowContextInterface, type WorkflowEntryMetadataSnapshot, type WorkflowError, type WorkflowErrorEvent, type WorkflowErrorHandler, type WorkflowFunction, type WorkflowHandle, type WorkflowHistoryEntry, type WorkflowHistorySnapshot, type WorkflowMessageDriver, type WorkflowQueue, type WorkflowQueueMessage, type WorkflowQueueNextBatchOptions, type WorkflowQueueNextOptions, type WorkflowResult, type WorkflowRollbackErrorEvent, type WorkflowRunErrorEvent, type WorkflowRunMode, type WorkflowState, type WorkflowStepErrorEvent, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry };
1081
+ export { type BranchConfig, type BranchOutput, type BranchStatus, type BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, type EngineDriver, type Entry, EntryInProgressError, type EntryKind, type EntryKindType, type EntryMetadata, type EntryStatus, EvictedError, type History, HistoryDivergedError, type JoinEntry, JoinError, type KVEntry, type KVWrite, type Location, Loop, type LoopConfig, type LoopEntry, type LoopIterationMarker, type LoopResult, type Message, type MessageEntry, MessageWaitError, type NameIndex, type PathSegment, type RaceEntry, RaceError, type RemovedEntry, type RollbackCheckpointEntry, RollbackCheckpointError, type RollbackContextInterface, RollbackError, type RunWorkflowOptions, type SleepEntry, SleepError, type SleepState, type StepConfig, type StepEntry, StepExhaustedError, StepFailedError, type Storage, type TryBlockCatchKind, type TryBlockConfig, type TryBlockFailure, type TryBlockResult, type TryStepCatchKind, type TryStepConfig, type TryStepFailure, type TryStepResult, WorkflowContextImpl, type WorkflowContextInterface, type WorkflowEntryMetadataSnapshot, type WorkflowError, type WorkflowErrorEvent, type WorkflowErrorHandler, type WorkflowFunction, type WorkflowHandle, type WorkflowHistoryEntry, type WorkflowHistorySnapshot, type WorkflowMessageDriver, type WorkflowOutcome, type WorkflowQueue, type WorkflowQueueMessage, type WorkflowQueueNextBatchOptions, type WorkflowQueueNextOptions, type WorkflowResult, type WorkflowRollbackErrorEvent, type WorkflowRunErrorEvent, type WorkflowRunMode, type WorkflowSpan, type WorkflowState, type WorkflowStepErrorEvent, type WorkflowStepOutcome, type WorkflowStepSpan, type WorkflowTelemetryDriver, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry };
@@ -557,6 +557,32 @@ interface KVWrite {
557
557
  key: Uint8Array;
558
558
  value: Uint8Array;
559
559
  }
560
+ /** How one run of the workflow function ended. */
561
+ type WorkflowOutcome = "completed" | "sleeping" | "evicted" | "failed" | "cancelled";
562
+ /** How one step attempt ended. `retry` will be tried again, `failed` will not. */
563
+ type WorkflowStepOutcome = "ok" | "retry" | "failed";
564
+ /** One open run of the workflow function. */
565
+ interface WorkflowSpan {
566
+ /** Runs `body` attributed to this run. */
567
+ run<T>(body: () => Promise<T>): Promise<T>;
568
+ /** Returns nothing when the attempt is not being traced. */
569
+ startStep(name: string, attempt: number): WorkflowStepSpan | undefined;
570
+ finish(outcome: WorkflowOutcome): Promise<void>;
571
+ }
572
+ /** One open attempt at one step. */
573
+ interface WorkflowStepSpan {
574
+ /** Runs `body` attributed to this attempt. */
575
+ run<T>(body: () => Promise<T>): Promise<T>;
576
+ /** `error` is what the step callback threw. */
577
+ finish(outcome: WorkflowStepOutcome, error?: unknown): void;
578
+ }
579
+ /**
580
+ * Receives the start and end of each workflow run and step attempt. A
581
+ * completed step replayed from history is not an attempt and is not reported.
582
+ */
583
+ interface WorkflowTelemetryDriver {
584
+ startSpan(): Promise<WorkflowSpan>;
585
+ }
560
586
  /**
561
587
  * The engine driver provides the KV and scheduling interface.
562
588
  * Implementations must provide these methods to integrate with different backends.
@@ -638,6 +664,8 @@ interface EngineDriver {
638
664
  * Implementations should resolve when any of the specified message names are available.
639
665
  */
640
666
  waitForMessages(messageNames: string[], abortSignal: AbortSignal): Promise<void>;
667
+ /** Present when the host traces workflows. */
668
+ readonly telemetry?: WorkflowTelemetryDriver;
641
669
  }
642
670
 
643
671
  /**
@@ -670,6 +698,7 @@ declare class WorkflowContextImpl implements WorkflowContextInterface {
670
698
  private abortController;
671
699
  private currentLocation;
672
700
  private visitedKeys;
701
+ private runSpan?;
673
702
  private mode;
674
703
  private rollbackActions?;
675
704
  private rollbackCheckpointSet;
@@ -679,7 +708,7 @@ declare class WorkflowContextImpl implements WorkflowContextInterface {
679
708
  private historyNotifier?;
680
709
  private onError?;
681
710
  private logger?;
682
- constructor(workflowId: string, storage: Storage, driver: EngineDriver, messageDriver: WorkflowMessageDriver, location?: Location, abortController?: AbortController, mode?: "forward" | "rollback", rollbackActions?: RollbackAction[], rollbackCheckpointSet?: boolean, historyNotifier?: () => void, onError?: WorkflowErrorHandler, logger?: Logger, visitedKeys?: Set<string>);
711
+ constructor(workflowId: string, storage: Storage, driver: EngineDriver, messageDriver: WorkflowMessageDriver, location?: Location, abortController?: AbortController, mode?: "forward" | "rollback", rollbackActions?: RollbackAction[], rollbackCheckpointSet?: boolean, historyNotifier?: () => void, onError?: WorkflowErrorHandler, logger?: Logger, visitedKeys?: Set<string>, runSpan?: WorkflowSpan);
683
712
  get abortSignal(): AbortSignal;
684
713
  get queue(): WorkflowQueue;
685
714
  isEvicted(): boolean;
@@ -1049,4 +1078,4 @@ declare function replayWorkflowFromStep(workflowId: string, driver: EngineDriver
1049
1078
  scheduleAlarm?: boolean;
1050
1079
  }): Promise<WorkflowHistorySnapshot>;
1051
1080
 
1052
- export { type BranchConfig, type BranchOutput, type BranchStatus, type BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, type EngineDriver, type Entry, EntryInProgressError, type EntryKind, type EntryKindType, type EntryMetadata, type EntryStatus, EvictedError, type History, HistoryDivergedError, type JoinEntry, JoinError, type KVEntry, type KVWrite, type Location, Loop, type LoopConfig, type LoopEntry, type LoopIterationMarker, type LoopResult, type Message, type MessageEntry, MessageWaitError, type NameIndex, type PathSegment, type RaceEntry, RaceError, type RemovedEntry, type RollbackCheckpointEntry, RollbackCheckpointError, type RollbackContextInterface, RollbackError, type RunWorkflowOptions, type SleepEntry, SleepError, type SleepState, type StepConfig, type StepEntry, StepExhaustedError, StepFailedError, type Storage, type TryBlockCatchKind, type TryBlockConfig, type TryBlockFailure, type TryBlockResult, type TryStepCatchKind, type TryStepConfig, type TryStepFailure, type TryStepResult, WorkflowContextImpl, type WorkflowContextInterface, type WorkflowEntryMetadataSnapshot, type WorkflowError, type WorkflowErrorEvent, type WorkflowErrorHandler, type WorkflowFunction, type WorkflowHandle, type WorkflowHistoryEntry, type WorkflowHistorySnapshot, type WorkflowMessageDriver, type WorkflowQueue, type WorkflowQueueMessage, type WorkflowQueueNextBatchOptions, type WorkflowQueueNextOptions, type WorkflowResult, type WorkflowRollbackErrorEvent, type WorkflowRunErrorEvent, type WorkflowRunMode, type WorkflowState, type WorkflowStepErrorEvent, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry };
1081
+ export { type BranchConfig, type BranchOutput, type BranchStatus, type BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, type EngineDriver, type Entry, EntryInProgressError, type EntryKind, type EntryKindType, type EntryMetadata, type EntryStatus, EvictedError, type History, HistoryDivergedError, type JoinEntry, JoinError, type KVEntry, type KVWrite, type Location, Loop, type LoopConfig, type LoopEntry, type LoopIterationMarker, type LoopResult, type Message, type MessageEntry, MessageWaitError, type NameIndex, type PathSegment, type RaceEntry, RaceError, type RemovedEntry, type RollbackCheckpointEntry, RollbackCheckpointError, type RollbackContextInterface, RollbackError, type RunWorkflowOptions, type SleepEntry, SleepError, type SleepState, type StepConfig, type StepEntry, StepExhaustedError, StepFailedError, type Storage, type TryBlockCatchKind, type TryBlockConfig, type TryBlockFailure, type TryBlockResult, type TryStepCatchKind, type TryStepConfig, type TryStepFailure, type TryStepResult, WorkflowContextImpl, type WorkflowContextInterface, type WorkflowEntryMetadataSnapshot, type WorkflowError, type WorkflowErrorEvent, type WorkflowErrorHandler, type WorkflowFunction, type WorkflowHandle, type WorkflowHistoryEntry, type WorkflowHistorySnapshot, type WorkflowMessageDriver, type WorkflowOutcome, type WorkflowQueue, type WorkflowQueueMessage, type WorkflowQueueNextBatchOptions, type WorkflowQueueNextOptions, type WorkflowResult, type WorkflowRollbackErrorEvent, type WorkflowRunErrorEvent, type WorkflowRunMode, type WorkflowSpan, type WorkflowState, type WorkflowStepErrorEvent, type WorkflowStepOutcome, type WorkflowStepSpan, type WorkflowTelemetryDriver, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry };
@@ -43,7 +43,7 @@ import {
43
43
  resolveName,
44
44
  runWorkflow,
45
45
  setEntry
46
- } from "./chunk-TVRZA5O5.js";
46
+ } from "./chunk-EGOPMLG2.js";
47
47
  export {
48
48
  CancelledError,
49
49
  CriticalError,
@@ -47,7 +47,7 @@
47
47
 
48
48
 
49
49
 
50
- var _chunk32422MOMcjs = require('./chunk-32422MOM.cjs');
50
+ var _chunkAKCJVGJ7cjs = require('./chunk-AKCJVGJ7.cjs');
51
51
 
52
52
  // src/testing.ts
53
53
  var InMemoryWorkflowMessageDriver = class {
@@ -97,7 +97,7 @@ var InMemoryWorkflowMessageDriver = class {
97
97
  }
98
98
  async waitForMessages(messageNames, abortSignal) {
99
99
  if (abortSignal.aborted) {
100
- throw new (0, _chunk32422MOMcjs.EvictedError)();
100
+ throw new (0, _chunkAKCJVGJ7cjs.EvictedError)();
101
101
  }
102
102
  const nameSet = messageNames.length > 0 ? new Set(messageNames) : void 0;
103
103
  if (this.#messages.some(
@@ -118,7 +118,7 @@ var InMemoryWorkflowMessageDriver = class {
118
118
  },
119
119
  abortSignal,
120
120
  onAbort: () => {
121
- waiter.reject(new (0, _chunk32422MOMcjs.EvictedError)());
121
+ waiter.reject(new (0, _chunkAKCJVGJ7cjs.EvictedError)());
122
122
  }
123
123
  };
124
124
  abortSignal.addEventListener("abort", waiter.onAbort, {
@@ -158,62 +158,62 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
158
158
  __init4() {this.workerPollInterval = 100}
159
159
  __init5() {this.messageDriver = this.#inMemoryMessageDriver}
160
160
  async get(key) {
161
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
162
- const entry = this.kv.get(_chunk32422MOMcjs.keyToHex.call(void 0, key));
161
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
162
+ const entry = this.kv.get(_chunkAKCJVGJ7cjs.keyToHex.call(void 0, key));
163
163
  return _nullishCoalesce((entry == null ? void 0 : entry.value), () => ( null));
164
164
  }
165
165
  async set(key, value) {
166
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
167
- this.kv.set(_chunk32422MOMcjs.keyToHex.call(void 0, key), { key, value });
166
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
167
+ this.kv.set(_chunkAKCJVGJ7cjs.keyToHex.call(void 0, key), { key, value });
168
168
  }
169
169
  async delete(key) {
170
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
171
- this.kv.delete(_chunk32422MOMcjs.keyToHex.call(void 0, key));
170
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
171
+ this.kv.delete(_chunkAKCJVGJ7cjs.keyToHex.call(void 0, key));
172
172
  }
173
173
  async batchDelete(keys) {
174
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
174
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
175
175
  for (const key of keys) {
176
- this.kv.delete(_chunk32422MOMcjs.keyToHex.call(void 0, key));
176
+ this.kv.delete(_chunkAKCJVGJ7cjs.keyToHex.call(void 0, key));
177
177
  }
178
178
  }
179
179
  async deletePrefix(prefix) {
180
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
180
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
181
181
  for (const [hexKey, entry] of this.kv) {
182
- if (_chunk32422MOMcjs.keyStartsWith.call(void 0, entry.key, prefix)) {
182
+ if (_chunkAKCJVGJ7cjs.keyStartsWith.call(void 0, entry.key, prefix)) {
183
183
  this.kv.delete(hexKey);
184
184
  }
185
185
  }
186
186
  }
187
187
  async deleteRange(start, end) {
188
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
188
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
189
189
  for (const [hexKey, entry] of this.kv) {
190
- if (_chunk32422MOMcjs.compareKeys.call(void 0, entry.key, start) >= 0 && _chunk32422MOMcjs.compareKeys.call(void 0, entry.key, end) < 0) {
190
+ if (_chunkAKCJVGJ7cjs.compareKeys.call(void 0, entry.key, start) >= 0 && _chunkAKCJVGJ7cjs.compareKeys.call(void 0, entry.key, end) < 0) {
191
191
  this.kv.delete(hexKey);
192
192
  }
193
193
  }
194
194
  }
195
195
  async list(prefix) {
196
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
196
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
197
197
  const results = [];
198
198
  for (const entry of this.kv.values()) {
199
- if (_chunk32422MOMcjs.keyStartsWith.call(void 0, entry.key, prefix)) {
199
+ if (_chunkAKCJVGJ7cjs.keyStartsWith.call(void 0, entry.key, prefix)) {
200
200
  results.push({ key: entry.key, value: entry.value });
201
201
  }
202
202
  }
203
- return results.sort((a, b) => _chunk32422MOMcjs.compareKeys.call(void 0, a.key, b.key));
203
+ return results.sort((a, b) => _chunkAKCJVGJ7cjs.compareKeys.call(void 0, a.key, b.key));
204
204
  }
205
205
  async batch(writes) {
206
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
206
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
207
207
  for (const { key, value } of writes) {
208
- this.kv.set(_chunk32422MOMcjs.keyToHex.call(void 0, key), { key, value });
208
+ this.kv.set(_chunkAKCJVGJ7cjs.keyToHex.call(void 0, key), { key, value });
209
209
  }
210
210
  }
211
211
  async setAlarm(workflowId, wakeAt) {
212
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
212
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
213
213
  this.alarms.set(workflowId, wakeAt);
214
214
  }
215
215
  async clearAlarm(workflowId) {
216
- await _chunk32422MOMcjs.sleep.call(void 0, this.latency);
216
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, this.latency);
217
217
  this.alarms.delete(workflowId);
218
218
  }
219
219
  async waitForMessages(messageNames, abortSignal) {
@@ -224,7 +224,7 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
224
224
  }
225
225
  while (true) {
226
226
  if (abortSignal.aborted) {
227
- throw new (0, _chunk32422MOMcjs.EvictedError)();
227
+ throw new (0, _chunkAKCJVGJ7cjs.EvictedError)();
228
228
  }
229
229
  const messages = await this.messageDriver.receiveMessages({
230
230
  names: messageNames.length > 0 ? messageNames : void 0,
@@ -234,7 +234,7 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
234
234
  if (messages.length > 0) {
235
235
  return;
236
236
  }
237
- await _chunk32422MOMcjs.sleep.call(void 0, Math.max(1, this.latency));
237
+ await _chunkAKCJVGJ7cjs.sleep.call(void 0, Math.max(1, this.latency));
238
238
  }
239
239
  }
240
240
  /**
@@ -330,5 +330,5 @@ var InMemoryDriver = (_class = class {constructor() { _class.prototype.__init.ca
330
330
 
331
331
 
332
332
 
333
- exports.CancelledError = _chunk32422MOMcjs.CancelledError; exports.CriticalError = _chunk32422MOMcjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunk32422MOMcjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunk32422MOMcjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunk32422MOMcjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunk32422MOMcjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunk32422MOMcjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunk32422MOMcjs.EntryInProgressError; exports.EvictedError = _chunk32422MOMcjs.EvictedError; exports.HistoryDivergedError = _chunk32422MOMcjs.HistoryDivergedError; exports.InMemoryDriver = InMemoryDriver; exports.JoinError = _chunk32422MOMcjs.JoinError; exports.Loop = _chunk32422MOMcjs.Loop; exports.MessageWaitError = _chunk32422MOMcjs.MessageWaitError; exports.RaceError = _chunk32422MOMcjs.RaceError; exports.RollbackCheckpointError = _chunk32422MOMcjs.RollbackCheckpointError; exports.RollbackError = _chunk32422MOMcjs.RollbackError; exports.SleepError = _chunk32422MOMcjs.SleepError; exports.StepExhaustedError = _chunk32422MOMcjs.StepExhaustedError; exports.StepFailedError = _chunk32422MOMcjs.StepFailedError; exports.WorkflowContextImpl = _chunk32422MOMcjs.WorkflowContextImpl; exports.appendLoopIteration = _chunk32422MOMcjs.appendLoopIteration; exports.appendName = _chunk32422MOMcjs.appendName; exports.createEntry = _chunk32422MOMcjs.createEntry; exports.createHistorySnapshot = _chunk32422MOMcjs.createHistorySnapshot; exports.createStorage = _chunk32422MOMcjs.createStorage; exports.deleteEntriesWithPrefix = _chunk32422MOMcjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunk32422MOMcjs.emptyLocation; exports.extractErrorInfo = _chunk32422MOMcjs.extractErrorInfo; exports.flush = _chunk32422MOMcjs.flush; exports.generateId = _chunk32422MOMcjs.generateId; exports.getEntry = _chunk32422MOMcjs.getEntry; exports.getOrCreateMetadata = _chunk32422MOMcjs.getOrCreateMetadata; exports.isLocationPrefix = _chunk32422MOMcjs.isLocationPrefix; exports.isLoopIterationMarker = _chunk32422MOMcjs.isLoopIterationMarker; exports.loadMetadata = _chunk32422MOMcjs.loadMetadata; exports.loadStorage = _chunk32422MOMcjs.loadStorage; exports.locationToKey = _chunk32422MOMcjs.locationToKey; exports.locationsEqual = _chunk32422MOMcjs.locationsEqual; exports.parentLocation = _chunk32422MOMcjs.parentLocation; exports.registerName = _chunk32422MOMcjs.registerName; exports.replayWorkflowFromStep = _chunk32422MOMcjs.replayWorkflowFromStep; exports.resolveName = _chunk32422MOMcjs.resolveName; exports.runWorkflow = _chunk32422MOMcjs.runWorkflow; exports.setEntry = _chunk32422MOMcjs.setEntry;
333
+ exports.CancelledError = _chunkAKCJVGJ7cjs.CancelledError; exports.CriticalError = _chunkAKCJVGJ7cjs.CriticalError; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = _chunkAKCJVGJ7cjs.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_MAX_RETRIES = _chunkAKCJVGJ7cjs.DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = _chunkAKCJVGJ7cjs.DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = _chunkAKCJVGJ7cjs.DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_STEP_TIMEOUT = _chunkAKCJVGJ7cjs.DEFAULT_STEP_TIMEOUT; exports.EntryInProgressError = _chunkAKCJVGJ7cjs.EntryInProgressError; exports.EvictedError = _chunkAKCJVGJ7cjs.EvictedError; exports.HistoryDivergedError = _chunkAKCJVGJ7cjs.HistoryDivergedError; exports.InMemoryDriver = InMemoryDriver; exports.JoinError = _chunkAKCJVGJ7cjs.JoinError; exports.Loop = _chunkAKCJVGJ7cjs.Loop; exports.MessageWaitError = _chunkAKCJVGJ7cjs.MessageWaitError; exports.RaceError = _chunkAKCJVGJ7cjs.RaceError; exports.RollbackCheckpointError = _chunkAKCJVGJ7cjs.RollbackCheckpointError; exports.RollbackError = _chunkAKCJVGJ7cjs.RollbackError; exports.SleepError = _chunkAKCJVGJ7cjs.SleepError; exports.StepExhaustedError = _chunkAKCJVGJ7cjs.StepExhaustedError; exports.StepFailedError = _chunkAKCJVGJ7cjs.StepFailedError; exports.WorkflowContextImpl = _chunkAKCJVGJ7cjs.WorkflowContextImpl; exports.appendLoopIteration = _chunkAKCJVGJ7cjs.appendLoopIteration; exports.appendName = _chunkAKCJVGJ7cjs.appendName; exports.createEntry = _chunkAKCJVGJ7cjs.createEntry; exports.createHistorySnapshot = _chunkAKCJVGJ7cjs.createHistorySnapshot; exports.createStorage = _chunkAKCJVGJ7cjs.createStorage; exports.deleteEntriesWithPrefix = _chunkAKCJVGJ7cjs.deleteEntriesWithPrefix; exports.emptyLocation = _chunkAKCJVGJ7cjs.emptyLocation; exports.extractErrorInfo = _chunkAKCJVGJ7cjs.extractErrorInfo; exports.flush = _chunkAKCJVGJ7cjs.flush; exports.generateId = _chunkAKCJVGJ7cjs.generateId; exports.getEntry = _chunkAKCJVGJ7cjs.getEntry; exports.getOrCreateMetadata = _chunkAKCJVGJ7cjs.getOrCreateMetadata; exports.isLocationPrefix = _chunkAKCJVGJ7cjs.isLocationPrefix; exports.isLoopIterationMarker = _chunkAKCJVGJ7cjs.isLoopIterationMarker; exports.loadMetadata = _chunkAKCJVGJ7cjs.loadMetadata; exports.loadStorage = _chunkAKCJVGJ7cjs.loadStorage; exports.locationToKey = _chunkAKCJVGJ7cjs.locationToKey; exports.locationsEqual = _chunkAKCJVGJ7cjs.locationsEqual; exports.parentLocation = _chunkAKCJVGJ7cjs.parentLocation; exports.registerName = _chunkAKCJVGJ7cjs.registerName; exports.replayWorkflowFromStep = _chunkAKCJVGJ7cjs.replayWorkflowFromStep; exports.resolveName = _chunkAKCJVGJ7cjs.resolveName; exports.runWorkflow = _chunkAKCJVGJ7cjs.runWorkflow; exports.setEntry = _chunkAKCJVGJ7cjs.setEntry;
334
334
  //# sourceMappingURL=testing.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { EngineDriver, WorkflowMessageDriver, KVEntry, KVWrite } from './index.cjs';
2
- export { BranchConfig, BranchOutput, BranchStatus, BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, Entry, EntryInProgressError, EntryKind, EntryKindType, EntryMetadata, EntryStatus, EvictedError, History, HistoryDivergedError, JoinEntry, JoinError, Location, Loop, LoopConfig, LoopEntry, LoopIterationMarker, LoopResult, Message, MessageEntry, MessageWaitError, NameIndex, PathSegment, RaceEntry, RaceError, RemovedEntry, RollbackCheckpointEntry, RollbackCheckpointError, RollbackContextInterface, RollbackError, RunWorkflowOptions, SleepEntry, SleepError, SleepState, StepConfig, StepEntry, StepExhaustedError, StepFailedError, Storage, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowContextImpl, WorkflowContextInterface, WorkflowEntryMetadataSnapshot, WorkflowError, WorkflowErrorEvent, WorkflowErrorHandler, WorkflowFunction, WorkflowHandle, WorkflowHistoryEntry, WorkflowHistorySnapshot, WorkflowQueue, WorkflowQueueMessage, WorkflowQueueNextBatchOptions, WorkflowQueueNextOptions, WorkflowResult, WorkflowRollbackErrorEvent, WorkflowRunErrorEvent, WorkflowRunMode, WorkflowState, WorkflowStepErrorEvent, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry } from './index.cjs';
2
+ export { BranchConfig, BranchOutput, BranchStatus, BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, Entry, EntryInProgressError, EntryKind, EntryKindType, EntryMetadata, EntryStatus, EvictedError, History, HistoryDivergedError, JoinEntry, JoinError, Location, Loop, LoopConfig, LoopEntry, LoopIterationMarker, LoopResult, Message, MessageEntry, MessageWaitError, NameIndex, PathSegment, RaceEntry, RaceError, RemovedEntry, RollbackCheckpointEntry, RollbackCheckpointError, RollbackContextInterface, RollbackError, RunWorkflowOptions, SleepEntry, SleepError, SleepState, StepConfig, StepEntry, StepExhaustedError, StepFailedError, Storage, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowContextImpl, WorkflowContextInterface, WorkflowEntryMetadataSnapshot, WorkflowError, WorkflowErrorEvent, WorkflowErrorHandler, WorkflowFunction, WorkflowHandle, WorkflowHistoryEntry, WorkflowHistorySnapshot, WorkflowOutcome, WorkflowQueue, WorkflowQueueMessage, WorkflowQueueNextBatchOptions, WorkflowQueueNextOptions, WorkflowResult, WorkflowRollbackErrorEvent, WorkflowRunErrorEvent, WorkflowRunMode, WorkflowSpan, WorkflowState, WorkflowStepErrorEvent, WorkflowStepOutcome, WorkflowStepSpan, WorkflowTelemetryDriver, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry } from './index.cjs';
3
3
  import 'pino';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { EngineDriver, WorkflowMessageDriver, KVEntry, KVWrite } from './index.js';
2
- export { BranchConfig, BranchOutput, BranchStatus, BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, Entry, EntryInProgressError, EntryKind, EntryKindType, EntryMetadata, EntryStatus, EvictedError, History, HistoryDivergedError, JoinEntry, JoinError, Location, Loop, LoopConfig, LoopEntry, LoopIterationMarker, LoopResult, Message, MessageEntry, MessageWaitError, NameIndex, PathSegment, RaceEntry, RaceError, RemovedEntry, RollbackCheckpointEntry, RollbackCheckpointError, RollbackContextInterface, RollbackError, RunWorkflowOptions, SleepEntry, SleepError, SleepState, StepConfig, StepEntry, StepExhaustedError, StepFailedError, Storage, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowContextImpl, WorkflowContextInterface, WorkflowEntryMetadataSnapshot, WorkflowError, WorkflowErrorEvent, WorkflowErrorHandler, WorkflowFunction, WorkflowHandle, WorkflowHistoryEntry, WorkflowHistorySnapshot, WorkflowQueue, WorkflowQueueMessage, WorkflowQueueNextBatchOptions, WorkflowQueueNextOptions, WorkflowResult, WorkflowRollbackErrorEvent, WorkflowRunErrorEvent, WorkflowRunMode, WorkflowState, WorkflowStepErrorEvent, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry } from './index.js';
2
+ export { BranchConfig, BranchOutput, BranchStatus, BranchStatusType, CancelledError, CriticalError, DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL, DEFAULT_MAX_RETRIES, DEFAULT_RETRY_BACKOFF_BASE, DEFAULT_RETRY_BACKOFF_MAX, DEFAULT_STEP_TIMEOUT, Entry, EntryInProgressError, EntryKind, EntryKindType, EntryMetadata, EntryStatus, EvictedError, History, HistoryDivergedError, JoinEntry, JoinError, Location, Loop, LoopConfig, LoopEntry, LoopIterationMarker, LoopResult, Message, MessageEntry, MessageWaitError, NameIndex, PathSegment, RaceEntry, RaceError, RemovedEntry, RollbackCheckpointEntry, RollbackCheckpointError, RollbackContextInterface, RollbackError, RunWorkflowOptions, SleepEntry, SleepError, SleepState, StepConfig, StepEntry, StepExhaustedError, StepFailedError, Storage, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowContextImpl, WorkflowContextInterface, WorkflowEntryMetadataSnapshot, WorkflowError, WorkflowErrorEvent, WorkflowErrorHandler, WorkflowFunction, WorkflowHandle, WorkflowHistoryEntry, WorkflowHistorySnapshot, WorkflowOutcome, WorkflowQueue, WorkflowQueueMessage, WorkflowQueueNextBatchOptions, WorkflowQueueNextOptions, WorkflowResult, WorkflowRollbackErrorEvent, WorkflowRunErrorEvent, WorkflowRunMode, WorkflowSpan, WorkflowState, WorkflowStepErrorEvent, WorkflowStepOutcome, WorkflowStepSpan, WorkflowTelemetryDriver, appendLoopIteration, appendName, createEntry, createHistorySnapshot, createStorage, deleteEntriesWithPrefix, emptyLocation, extractErrorInfo, flush, generateId, getEntry, getOrCreateMetadata, isLocationPrefix, isLoopIterationMarker, loadMetadata, loadStorage, locationToKey, locationsEqual, parentLocation, registerName, replayWorkflowFromStep, resolveName, runWorkflow, setEntry } from './index.js';
3
3
  import 'pino';
4
4
 
5
5
  /**
@@ -47,7 +47,7 @@ import {
47
47
  runWorkflow,
48
48
  setEntry,
49
49
  sleep
50
- } from "./chunk-TVRZA5O5.js";
50
+ } from "./chunk-EGOPMLG2.js";
51
51
 
52
52
  // src/testing.ts
53
53
  var InMemoryWorkflowMessageDriver = class {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivetkit/workflow-engine",
3
- "version": "2.3.18",
3
+ "version": "2.3.19",
4
4
  "description": "Durable workflow engine with reentrant execution",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
package/src/context.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from "pino";
2
- import type { EngineDriver } from "./driver.js";
2
+ import type { EngineDriver, WorkflowSpan } from "./driver.js";
3
3
  import {
4
4
  extractErrorInfo,
5
5
  getErrorEventTag,
@@ -345,6 +345,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
345
345
  private abortController: AbortController;
346
346
  private currentLocation: Location;
347
347
  private visitedKeys: Set<string>;
348
+ private runSpan?: WorkflowSpan;
348
349
  private mode: "forward" | "rollback";
349
350
  private rollbackActions?: RollbackAction[];
350
351
  private rollbackCheckpointSet: boolean;
@@ -369,6 +370,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
369
370
  onError?: WorkflowErrorHandler,
370
371
  logger?: Logger,
371
372
  visitedKeys?: Set<string>,
373
+ runSpan?: WorkflowSpan,
372
374
  ) {
373
375
  this.currentLocation = location;
374
376
  this.abortController = abortController ?? new AbortController();
@@ -379,6 +381,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
379
381
  this.onError = onError;
380
382
  this.logger = logger;
381
383
  this.visitedKeys = visitedKeys ?? new Set();
384
+ this.runSpan = runSpan;
382
385
  }
383
386
 
384
387
  get abortSignal(): AbortSignal {
@@ -435,6 +438,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
435
438
  this.onError,
436
439
  this.logger,
437
440
  this.visitedKeys,
441
+ this.runSpan,
438
442
  );
439
443
  }
440
444
 
@@ -906,10 +910,15 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
906
910
  // Get timeout configuration
907
911
  const timeout = config.timeout ?? DEFAULT_STEP_TIMEOUT;
908
912
 
913
+ const stepSpan = this.runSpan?.startStep(
914
+ config.name,
915
+ metadata.attempts,
916
+ );
917
+
909
918
  try {
910
919
  // Execute with timeout
911
920
  const output = await this.executeWithTimeout(
912
- config.run(),
921
+ stepSpan ? stepSpan.run(() => config.run()) : config.run(),
913
922
  timeout,
914
923
  config.name,
915
924
  );
@@ -936,6 +945,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
936
945
  await this.flushStorage();
937
946
  }
938
947
 
948
+ stepSpan?.finish("ok");
939
949
  this.log("debug", {
940
950
  msg: "step completed",
941
951
  step: config.name,
@@ -951,6 +961,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
951
961
  // Timeout errors are treated as critical by default. Steps opt
952
962
  // into retrying on timeout with retryOnTimeout: true.
953
963
  if (error instanceof StepTimeoutError && !config.retryOnTimeout) {
964
+ stepSpan?.finish("failed", error);
954
965
  metadata.status = "exhausted";
955
966
  metadata.error = String(error);
956
967
  await this.notifyStepError(config, metadata.attempts, error, {
@@ -970,6 +981,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
970
981
  error instanceof CriticalError ||
971
982
  error instanceof RollbackError
972
983
  ) {
984
+ stepSpan?.finish("failed", error);
973
985
  metadata.status = "exhausted";
974
986
  metadata.error = String(error);
975
987
  await this.notifyStepError(config, metadata.attempts, error, {
@@ -989,6 +1001,7 @@ export class WorkflowContextImpl implements WorkflowContextInterface {
989
1001
  }
990
1002
 
991
1003
  const willRetry = metadata.attempts <= maxRetries;
1004
+ stepSpan?.finish(willRetry ? "retry" : "failed", error);
992
1005
  metadata.status = willRetry ? "failed" : "exhausted";
993
1006
  metadata.error = String(error);
994
1007
 
package/src/driver.ts CHANGED
@@ -16,6 +16,42 @@ export interface KVWrite {
16
16
  value: Uint8Array;
17
17
  }
18
18
 
19
+ /** How one run of the workflow function ended. */
20
+ export type WorkflowOutcome =
21
+ | "completed"
22
+ | "sleeping"
23
+ | "evicted"
24
+ | "failed"
25
+ | "cancelled";
26
+
27
+ /** How one step attempt ended. `retry` will be tried again, `failed` will not. */
28
+ export type WorkflowStepOutcome = "ok" | "retry" | "failed";
29
+
30
+ /** One open run of the workflow function. */
31
+ export interface WorkflowSpan {
32
+ /** Runs `body` attributed to this run. */
33
+ run<T>(body: () => Promise<T>): Promise<T>;
34
+ /** Returns nothing when the attempt is not being traced. */
35
+ startStep(name: string, attempt: number): WorkflowStepSpan | undefined;
36
+ finish(outcome: WorkflowOutcome): Promise<void>;
37
+ }
38
+
39
+ /** One open attempt at one step. */
40
+ export interface WorkflowStepSpan {
41
+ /** Runs `body` attributed to this attempt. */
42
+ run<T>(body: () => Promise<T>): Promise<T>;
43
+ /** `error` is what the step callback threw. */
44
+ finish(outcome: WorkflowStepOutcome, error?: unknown): void;
45
+ }
46
+
47
+ /**
48
+ * Receives the start and end of each workflow run and step attempt. A
49
+ * completed step replayed from history is not an attempt and is not reported.
50
+ */
51
+ export interface WorkflowTelemetryDriver {
52
+ startSpan(): Promise<WorkflowSpan>;
53
+ }
54
+
19
55
  /**
20
56
  * The engine driver provides the KV and scheduling interface.
21
57
  * Implementations must provide these methods to integrate with different backends.
@@ -117,4 +153,7 @@ export interface EngineDriver {
117
153
  messageNames: string[],
118
154
  abortSignal: AbortSignal,
119
155
  ): Promise<void>;
156
+
157
+ /** Present when the host traces workflows. */
158
+ readonly telemetry?: WorkflowTelemetryDriver;
120
159
  }