rivetkit 2.3.0-rc.5 → 2.3.0-rc.7

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.
Files changed (142) hide show
  1. package/dist/browser/client.d.ts +35 -3
  2. package/dist/browser/client.js +795 -200
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +4 -3
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/actor/errors.cjs +4 -2
  7. package/dist/tsup/actor/errors.cjs.map +1 -1
  8. package/dist/tsup/actor/errors.d.cts +1 -74
  9. package/dist/tsup/actor/errors.d.ts +1 -74
  10. package/dist/tsup/actor/errors.js +3 -1
  11. package/dist/tsup/agent-os/index.cjs +7 -5
  12. package/dist/tsup/agent-os/index.cjs.map +1 -1
  13. package/dist/tsup/agent-os/index.d.cts +35 -3
  14. package/dist/tsup/agent-os/index.d.ts +35 -3
  15. package/dist/tsup/agent-os/index.js +7 -5
  16. package/dist/tsup/agent-os/index.js.map +1 -1
  17. package/dist/tsup/{chunk-2GANBXVP.cjs → chunk-2H4ISA4Y.cjs} +10 -10
  18. package/dist/tsup/chunk-2H4ISA4Y.cjs.map +1 -0
  19. package/dist/tsup/{chunk-UXTP4EBU.js → chunk-4DJMFOSU.js} +2 -2
  20. package/dist/tsup/{chunk-LDTT6WKJ.js → chunk-4LTY5TOO.js} +132 -4
  21. package/dist/tsup/chunk-4LTY5TOO.js.map +1 -0
  22. package/dist/tsup/{chunk-PGYEMIOE.js → chunk-52TPEKEC.js} +2 -2
  23. package/dist/tsup/{chunk-OVJX4IFY.cjs → chunk-55E7IR6D.cjs} +4 -4
  24. package/dist/tsup/{chunk-OVJX4IFY.cjs.map → chunk-55E7IR6D.cjs.map} +1 -1
  25. package/dist/tsup/{chunk-V3QNBJ7N.cjs → chunk-63WNTDRC.cjs} +31 -10
  26. package/dist/tsup/chunk-63WNTDRC.cjs.map +1 -0
  27. package/dist/tsup/{chunk-SULB574D.js → chunk-CMV6N5OX.js} +3 -3
  28. package/dist/tsup/{chunk-T6YVRM4K.js → chunk-D5G75T7J.js} +3 -1
  29. package/dist/tsup/chunk-D5G75T7J.js.map +1 -0
  30. package/dist/tsup/{chunk-NW2J4SOL.cjs → chunk-FEOG44WH.cjs} +137 -9
  31. package/dist/tsup/chunk-FEOG44WH.cjs.map +1 -0
  32. package/dist/tsup/{chunk-HR547GVH.cjs → chunk-G5HUSWP4.cjs} +8 -8
  33. package/dist/tsup/{chunk-HR547GVH.cjs.map → chunk-G5HUSWP4.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-N2DQSJIW.js → chunk-HERL2VQ2.js} +17 -48
  35. package/dist/tsup/chunk-HERL2VQ2.js.map +1 -0
  36. package/dist/tsup/{chunk-LELRJK66.cjs → chunk-SJLPZEA3.cjs} +3 -3
  37. package/dist/tsup/{chunk-LELRJK66.cjs.map → chunk-SJLPZEA3.cjs.map} +1 -1
  38. package/dist/tsup/{chunk-WQ4HNA4W.cjs → chunk-SRNOPUC6.cjs} +4 -2
  39. package/dist/tsup/chunk-SRNOPUC6.cjs.map +1 -0
  40. package/dist/tsup/{chunk-K34B3OVG.js → chunk-TMLOKTRB.js} +30 -9
  41. package/dist/tsup/chunk-TMLOKTRB.js.map +1 -0
  42. package/dist/tsup/{chunk-NATOT3ET.js → chunk-VFIY6GWO.js} +4 -4
  43. package/dist/tsup/chunk-VFIY6GWO.js.map +1 -0
  44. package/dist/tsup/{chunk-JY73X7VU.js → chunk-VJ4Y4WBT.js} +692 -114
  45. package/dist/tsup/chunk-VJ4Y4WBT.js.map +1 -0
  46. package/dist/tsup/{chunk-JRCZDHXT.cjs → chunk-X6HIFXNK.cjs} +23 -54
  47. package/dist/tsup/chunk-X6HIFXNK.cjs.map +1 -0
  48. package/dist/tsup/{chunk-FTZIZ3JG.cjs → chunk-ZGPX6KAH.cjs} +838 -260
  49. package/dist/tsup/chunk-ZGPX6KAH.cjs.map +1 -0
  50. package/dist/tsup/client/mod.cjs +7 -7
  51. package/dist/tsup/client/mod.d.cts +3 -4
  52. package/dist/tsup/client/mod.d.ts +3 -4
  53. package/dist/tsup/client/mod.js +6 -6
  54. package/dist/tsup/common/log.cjs +3 -3
  55. package/dist/tsup/common/log.js +2 -2
  56. package/dist/tsup/common/websocket.cjs +4 -4
  57. package/dist/tsup/common/websocket.js +3 -3
  58. package/dist/tsup/{config-CvQUtDp9.d.ts → config-Ak1lv4gF.d.ts} +27 -5
  59. package/dist/tsup/{config-C-a9vrke.d.cts → config-DU_xj4qZ.d.cts} +27 -5
  60. package/dist/tsup/{context-A7R0bsZL.d.ts → context-DAAp4Lpg.d.ts} +1 -1
  61. package/dist/tsup/{context-CA3r-pf2.d.cts → context-Dt_L55q8.d.cts} +1 -1
  62. package/dist/tsup/inspector/mod.cjs +6 -6
  63. package/dist/tsup/inspector/mod.js +5 -5
  64. package/dist/tsup/mod.cjs +507 -308
  65. package/dist/tsup/mod.cjs.map +1 -1
  66. package/dist/tsup/mod.d.cts +4 -5
  67. package/dist/tsup/mod.d.ts +4 -5
  68. package/dist/tsup/mod.js +432 -233
  69. package/dist/tsup/mod.js.map +1 -1
  70. package/dist/tsup/process-metrics-NW754INA.js +118 -0
  71. package/dist/tsup/process-metrics-NW754INA.js.map +1 -0
  72. package/dist/tsup/process-metrics-TYAGKCEJ.cjs +118 -0
  73. package/dist/tsup/process-metrics-TYAGKCEJ.cjs.map +1 -0
  74. package/dist/tsup/test/mod.cjs +10 -10
  75. package/dist/tsup/test/mod.d.cts +2 -3
  76. package/dist/tsup/test/mod.d.ts +2 -3
  77. package/dist/tsup/test/mod.js +6 -6
  78. package/dist/tsup/utils-DVekpm4I.d.cts +103 -0
  79. package/dist/tsup/utils-DVekpm4I.d.ts +103 -0
  80. package/dist/tsup/utils.cjs +3 -3
  81. package/dist/tsup/utils.d.cts +1 -1
  82. package/dist/tsup/utils.d.ts +1 -1
  83. package/dist/tsup/utils.js +2 -2
  84. package/dist/tsup/workflow/mod.cjs +41 -16
  85. package/dist/tsup/workflow/mod.cjs.map +1 -1
  86. package/dist/tsup/workflow/mod.d.cts +4 -5
  87. package/dist/tsup/workflow/mod.d.ts +4 -5
  88. package/dist/tsup/workflow/mod.js +35 -10
  89. package/dist/tsup/workflow/mod.js.map +1 -1
  90. package/package.json +11 -10
  91. package/src/actor/config.ts +3 -0
  92. package/src/actor/errors.ts +53 -7
  93. package/src/agent-os/actor/session.ts +2 -2
  94. package/src/client/actor-conn.ts +55 -60
  95. package/src/client/actor-handle.ts +59 -24
  96. package/src/client/errors.ts +2 -1
  97. package/src/client/queue.ts +2 -1
  98. package/src/client/raw-utils.ts +2 -4
  99. package/src/client/utils.ts +32 -4
  100. package/src/common/actor-router-consts.ts +4 -0
  101. package/src/common/bare/generated/client-protocol/v4.ts +599 -0
  102. package/src/common/client-protocol-versioned.ts +125 -18
  103. package/src/common/client-protocol-zod.ts +7 -0
  104. package/src/common/client-protocol.ts +1 -1
  105. package/src/common/database/native-database.test.ts +35 -0
  106. package/src/common/database/native-database.ts +8 -4
  107. package/src/common/encoding.ts +243 -5
  108. package/src/common/inline-websocket-adapter.ts +12 -12
  109. package/src/common/log.ts +1 -0
  110. package/src/common/router.ts +40 -10
  111. package/src/common/utils.ts +9 -200
  112. package/src/drivers/engine/actor-driver.ts +29 -28
  113. package/src/engine-client/actor-websocket-client.ts +2 -1
  114. package/src/engine-client/mod.ts +3 -2
  115. package/src/registry/config/index.ts +3 -5
  116. package/src/registry/index.ts +90 -16
  117. package/src/registry/napi-runtime.ts +15 -0
  118. package/src/registry/native.ts +197 -255
  119. package/src/registry/process-metrics.ts +183 -0
  120. package/src/registry/runtime.ts +4 -0
  121. package/src/registry/wasm-runtime.ts +9 -0
  122. package/src/registry/write-through-proxy.ts +40 -0
  123. package/src/serde.ts +2 -2
  124. package/src/workflow/context.ts +32 -5
  125. package/src/workflow/inspector.ts +2 -1
  126. package/dist/tsup/chunk-2GANBXVP.cjs.map +0 -1
  127. package/dist/tsup/chunk-FTZIZ3JG.cjs.map +0 -1
  128. package/dist/tsup/chunk-JRCZDHXT.cjs.map +0 -1
  129. package/dist/tsup/chunk-JY73X7VU.js.map +0 -1
  130. package/dist/tsup/chunk-K34B3OVG.js.map +0 -1
  131. package/dist/tsup/chunk-LDTT6WKJ.js.map +0 -1
  132. package/dist/tsup/chunk-N2DQSJIW.js.map +0 -1
  133. package/dist/tsup/chunk-NATOT3ET.js.map +0 -1
  134. package/dist/tsup/chunk-NW2J4SOL.cjs.map +0 -1
  135. package/dist/tsup/chunk-T6YVRM4K.js.map +0 -1
  136. package/dist/tsup/chunk-V3QNBJ7N.cjs.map +0 -1
  137. package/dist/tsup/chunk-WQ4HNA4W.cjs.map +0 -1
  138. package/dist/tsup/utils-fwx3o3K9.d.cts +0 -18
  139. package/dist/tsup/utils-fwx3o3K9.d.ts +0 -18
  140. /package/dist/tsup/{chunk-UXTP4EBU.js.map → chunk-4DJMFOSU.js.map} +0 -0
  141. /package/dist/tsup/{chunk-PGYEMIOE.js.map → chunk-52TPEKEC.js.map} +0 -0
  142. /package/dist/tsup/{chunk-SULB574D.js.map → chunk-CMV6N5OX.js.map} +0 -0
@@ -1,22 +1,23 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class; var _class2;
2
2
 
3
- var _chunk2GANBXVPcjs = require('../chunk-2GANBXVP.cjs');
3
+ var _chunk2H4ISA4Ycjs = require('../chunk-2H4ISA4Y.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkWQ4HNA4Wcjs = require('../chunk-WQ4HNA4W.cjs');
8
- require('../chunk-OVJX4IFY.cjs');
7
+
8
+ var _chunkSRNOPUC6cjs = require('../chunk-SRNOPUC6.cjs');
9
+ require('../chunk-55E7IR6D.cjs');
9
10
 
10
11
 
11
12
 
12
13
  var _chunkLD5YASJUcjs = require('../chunk-LD5YASJU.cjs');
13
- require('../chunk-NW2J4SOL.cjs');
14
+ require('../chunk-FEOG44WH.cjs');
14
15
 
15
16
 
16
- var _chunkJRCZDHXTcjs = require('../chunk-JRCZDHXT.cjs');
17
+ var _chunkX6HIFXNKcjs = require('../chunk-X6HIFXNK.cjs');
17
18
 
18
19
 
19
- var _chunkV3QNBJ7Ncjs = require('../chunk-V3QNBJ7N.cjs');
20
+ var _chunk63WNTDRCcjs = require('../chunk-63WNTDRC.cjs');
20
21
 
21
22
  // src/workflow/mod.ts
22
23
 
@@ -346,14 +347,14 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
346
347
  return await this.#wrapActive(
347
348
  () => this.#inner.step(
348
349
  nameOrConfig,
349
- () => this.#withActorAccess(run)
350
+ () => this.#withActorAccessAndStateRollback(run)
350
351
  )
351
352
  );
352
353
  }
353
354
  const stepConfig = nameOrConfig;
354
355
  const config = {
355
356
  ...stepConfig,
356
- run: () => this.#withActorAccess(stepConfig.run)
357
+ run: () => this.#withActorAccessAndStateRollback(stepConfig.run)
357
358
  };
358
359
  return await this.#wrapActive(() => this.#inner.step(config));
359
360
  }
@@ -365,14 +366,14 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
365
366
  return await this.#wrapActive(
366
367
  () => this.#inner.tryStep(
367
368
  nameOrConfig,
368
- () => this.#withActorAccess(run)
369
+ () => this.#withActorAccessAndStateRollback(run)
369
370
  )
370
371
  );
371
372
  }
372
373
  const stepConfig = nameOrConfig;
373
374
  const config = {
374
375
  ...stepConfig,
375
- run: () => this.#withActorAccess(stepConfig.run)
376
+ run: () => this.#withActorAccessAndStateRollback(stepConfig.run)
376
377
  };
377
378
  return await this.#wrapActive(() => this.#inner.tryStep(config));
378
379
  }
@@ -543,6 +544,30 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
543
544
  }
544
545
  }
545
546
  }
547
+ async #withActorAccessAndStateRollback(run) {
548
+ let stateSnapshot = null;
549
+ try {
550
+ stateSnapshot = { state: this.#runCtx[_chunkSRNOPUC6cjs.RAW_STATE_SYMBOL]() };
551
+ } catch (error) {
552
+ this.#runCtx.log.debug({
553
+ msg: "failed to get state, likely due to being stateless workflow",
554
+ error
555
+ });
556
+ }
557
+ if (stateSnapshot) {
558
+ stateSnapshot.state = structuredClone(stateSnapshot.state);
559
+ }
560
+ const varsSnapshot = structuredClone(this.#runCtx.vars);
561
+ try {
562
+ return await this.#withActorAccess(run);
563
+ } catch (error) {
564
+ if (stateSnapshot) {
565
+ this.#runCtx.state = stateSnapshot.state;
566
+ }
567
+ this.#runCtx.vars = varsSnapshot;
568
+ throw error;
569
+ }
570
+ }
546
571
  #ensureActorAccess(feature) {
547
572
  if (!this.#allowActorAccess) {
548
573
  this.#guardViolation = true;
@@ -595,7 +620,7 @@ function shouldRethrowWorkflowError(error) {
595
620
  return true;
596
621
  }
597
622
  function workflowReplayInFlightError() {
598
- return new (0, _chunkV3QNBJ7Ncjs.RivetError)(
623
+ return new (0, _chunk63WNTDRCcjs.RivetError)(
599
624
  "actor",
600
625
  "workflow_in_flight",
601
626
  "Workflow replay is unavailable while the workflow is currently in flight.",
@@ -614,13 +639,13 @@ function workflow(fn, options = {}) {
614
639
  function getWorkflowInspector(actorId) {
615
640
  let workflowInspector = workflowInspectors.get(actorId);
616
641
  if (!workflowInspector) {
617
- workflowInspector = _chunk2GANBXVPcjs.createWorkflowInspectorAdapter.call(void 0, );
642
+ workflowInspector = _chunk2H4ISA4Ycjs.createWorkflowInspectorAdapter.call(void 0, );
618
643
  workflowInspectors.set(actorId, workflowInspector);
619
644
  }
620
645
  return workflowInspector;
621
646
  }
622
647
  async function run(runCtx) {
623
- const actor = runCtx[_chunkWQ4HNA4Wcjs.ACTOR_CONTEXT_INTERNAL_SYMBOL];
648
+ const actor = runCtx[_chunkSRNOPUC6cjs.ACTOR_CONTEXT_INTERNAL_SYMBOL];
624
649
  _invariant2.default.call(void 0, actor, "workflow() requires an actor instance");
625
650
  const workflowInspector = getWorkflowInspector(actor.id);
626
651
  const driver = new ActorWorkflowDriver(actor, runCtx);
@@ -680,20 +705,20 @@ function workflow(fn, options = {}) {
680
705
  if (shouldRethrowWorkflowError(error)) {
681
706
  runCtx.log.error({
682
707
  msg: "workflow run failed",
683
- error: _chunkJRCZDHXTcjs.stringifyError.call(void 0, error)
708
+ error: _chunkX6HIFXNKcjs.stringifyError.call(void 0, error)
684
709
  });
685
710
  throw error;
686
711
  }
687
712
  runCtx.log.warn({
688
713
  msg: "workflow failed and will sleep until woken",
689
- error: _chunkJRCZDHXTcjs.stringifyError.call(void 0, error)
714
+ error: _chunkX6HIFXNKcjs.stringifyError.call(void 0, error)
690
715
  });
691
716
  } finally {
692
717
  runCtx.abortSignal.removeEventListener("abort", onAbort);
693
718
  }
694
719
  }
695
720
  const runWithConfig = run;
696
- runWithConfig[_chunkWQ4HNA4Wcjs.RUN_FUNCTION_CONFIG_SYMBOL] = {
721
+ runWithConfig[_chunkSRNOPUC6cjs.RUN_FUNCTION_CONFIG_SYMBOL] = {
697
722
  icon: "diagram-project",
698
723
  inspectorFactory: (actor) => {
699
724
  const actorId = resolveWorkflowInspectorActorId(actor);
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/workflow/mod.cjs","../../../src/workflow/mod.ts","../../../src/workflow/driver.ts","../../../src/workflow/constants.ts","../../../src/workflow/context.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/workflow/mod.cjs","sourcesContent":[null,"// @ts-nocheck\nimport {\n\tACTOR_CONTEXT_INTERNAL_SYMBOL,\n\tRUN_FUNCTION_CONFIG_SYMBOL,\n} from \"@/actor/config\";\nimport type { RunContext } from \"@/actor/config\";\nimport type { AnyDatabaseProvider } from \"@/common/database/config\";\nimport type { AnyStaticActorInstance } from \"@/actor/definition\";\nimport { RivetError } from \"@/actor/errors\";\nimport type { EventSchemaConfig, QueueSchemaConfig } from \"@/actor/schema\";\nimport { stringifyError } from \"@/utils\";\nimport {\n\tCriticalError,\n\tEntryInProgressError,\n\tHistoryDivergedError,\n\tJoinError,\n\tRaceError,\n\treplayWorkflowFromStep,\n\tRollbackCheckpointError,\n\tRollbackError,\n\trunWorkflow,\n\tStepExhaustedError,\n\ttype WorkflowErrorEvent,\n} from \"@rivetkit/workflow-engine\";\nimport invariant from \"invariant\";\nimport { ActorWorkflowControlDriver, ActorWorkflowDriver } from \"./driver\";\nimport { ActorWorkflowContext } from \"./context\";\nimport { createWorkflowInspectorAdapter } from \"./inspector\";\n\nexport { Loop } from \"@rivetkit/workflow-engine\";\nexport type {\n\tTryBlockCatchKind,\n\tTryBlockConfig,\n\tTryBlockFailure,\n\tTryBlockResult,\n\tTryStepCatchKind,\n\tTryStepConfig,\n\tTryStepFailure,\n\tTryStepResult,\n\tWorkflowError,\n\tWorkflowErrorEvent,\n} from \"@rivetkit/workflow-engine\";\nexport {\n\tActorWorkflowContext,\n\ttype WorkflowBranchContextOf,\n\ttype WorkflowContextOf,\n\ttype WorkflowLoopContextOf,\n\ttype WorkflowStepContextOf,\n} from \"./context\";\n\nfunction shouldRethrowWorkflowError(error: unknown): boolean {\n\tif (\n\t\terror instanceof CriticalError ||\n\t\terror instanceof JoinError ||\n\t\terror instanceof RaceError ||\n\t\terror instanceof RollbackError ||\n\t\terror instanceof StepExhaustedError\n\t) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\terror instanceof EntryInProgressError ||\n\t\terror instanceof HistoryDivergedError ||\n\t\terror instanceof RollbackCheckpointError\n\t) {\n\t\treturn true;\n\t}\n\n\treturn true;\n}\n\nfunction workflowReplayInFlightError(): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"workflow_in_flight\",\n\t\t\"Workflow replay is unavailable while the workflow is currently in flight.\",\n\t\t{\n\t\t\tpublic: true,\n\t\t\tstatusCode: 409,\n\t\t},\n\t);\n}\n\nfunction isWorkflowReplayBlockedByRunningEntry(error: unknown): boolean {\n\treturn (\n\t\terror instanceof Error &&\n\t\terror.message ===\n\t\t\t\"Cannot replay a workflow while a step is currently running\"\n\t);\n}\n\nexport interface WorkflowOptions<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\tonError?: (\n\t\tctx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tevent: WorkflowErrorEvent,\n\t) => void | Promise<void>;\n}\n\nexport function workflow<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n>(\n\tfn: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => Promise<unknown>,\n\toptions: WorkflowOptions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> = {},\n): (\n\tc: RunContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>,\n) => Promise<void> {\n\tconst onError = options.onError;\n\tconst workflowInspectors = new Map<\n\t\tstring,\n\t\tReturnType<typeof createWorkflowInspectorAdapter>\n\t>();\n\n\tfunction getWorkflowInspector(actorId: string) {\n\t\tlet workflowInspector = workflowInspectors.get(actorId);\n\t\tif (!workflowInspector) {\n\t\t\tworkflowInspector = createWorkflowInspectorAdapter();\n\t\t\tworkflowInspectors.set(actorId, workflowInspector);\n\t\t}\n\t\treturn workflowInspector;\n\t}\n\n\tasync function run(\n\t\trunCtx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t): Promise<void> {\n\t\tconst actor = (\n\t\t\trunCtx as unknown as {\n\t\t\t\t[ACTOR_CONTEXT_INTERNAL_SYMBOL]?: AnyStaticActorInstance;\n\t\t\t}\n\t\t)[ACTOR_CONTEXT_INTERNAL_SYMBOL];\n\t\tinvariant(actor, \"workflow() requires an actor instance\");\n\t\tconst workflowInspector = getWorkflowInspector(actor.id);\n\n\t\tconst driver = new ActorWorkflowDriver(actor, runCtx);\n\t\tconst controlDriver = new ActorWorkflowControlDriver(actor);\n\t\tworkflowInspector.setReplayFromStep(async (entryId) => {\n\t\t\tconst workflowState = await workflowInspector.adapter.getState();\n\t\t\tif (\n\t\t\t\tactor.isRunHandlerActive() ||\n\t\t\t\tworkflowState === \"pending\" ||\n\t\t\t\tworkflowState === \"running\"\n\t\t\t) {\n\t\t\t\tthrow workflowReplayInFlightError();\n\t\t\t}\n\n\t\t\tlet snapshot;\n\t\t\ttry {\n\t\t\t\tsnapshot = await replayWorkflowFromStep(\n\t\t\t\t\tactor.id,\n\t\t\t\t\tcontrolDriver,\n\t\t\t\t\tentryId,\n\t\t\t\t\t{ scheduleAlarm: false },\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tif (isWorkflowReplayBlockedByRunningEntry(error)) {\n\t\t\t\t\tthrow workflowReplayInFlightError();\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tworkflowInspector.update(snapshot);\n\t\t\tawait actor.restartRunHandler();\n\t\t\treturn workflowInspector.adapter.getHistory();\n\t\t});\n\n\t\tconst handle = runWorkflow(\n\t\t\tactor.id,\n\t\t\tasync (ctx) => await fn(new ActorWorkflowContext(ctx, runCtx)),\n\t\t\tundefined,\n\t\t\tdriver,\n\t\t\t{\n\t\t\t\tmode: \"live\",\n\t\t\t\tlogger: runCtx.log,\n\t\t\t\tonHistoryUpdated: workflowInspector.update,\n\t\t\t\tonError: onError\n\t\t\t\t\t? async (event) => await onError(runCtx, event)\n\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t);\n\t\tworkflowInspector.setGetState(async () => await handle.getState());\n\n\t\tconst onAbort = () => {\n\t\t\thandle.evict();\n\t\t};\n\t\tif (runCtx.abortSignal.aborted) {\n\t\t\tonAbort();\n\t\t} else {\n\t\t\trunCtx.abortSignal.addEventListener(\"abort\", onAbort, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tawait handle.result;\n\t\t} catch (error) {\n\t\t\tif (runCtx.abortSignal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (shouldRethrowWorkflowError(error)) {\n\t\t\t\trunCtx.log.error({\n\t\t\t\t\tmsg: \"workflow run failed\",\n\t\t\t\t\terror: stringifyError(error),\n\t\t\t\t});\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\trunCtx.log.warn({\n\t\t\t\tmsg: \"workflow failed and will sleep until woken\",\n\t\t\t\terror: stringifyError(error),\n\t\t\t});\n\t\t} finally {\n\t\t\trunCtx.abortSignal.removeEventListener(\"abort\", onAbort);\n\t\t}\n\t}\n\n\tconst runWithConfig = run as typeof run & {\n\t\t[RUN_FUNCTION_CONFIG_SYMBOL]?: {\n\t\t\ticon?: string;\n\t\t\tinspectorFactory?: (actor: unknown) => unknown;\n\t\t};\n\t};\n\trunWithConfig[RUN_FUNCTION_CONFIG_SYMBOL] = {\n\t\ticon: \"diagram-project\",\n\t\tinspectorFactory: (actor) => {\n\t\t\tconst actorId = resolveWorkflowInspectorActorId(actor);\n\t\t\treturn {\n\t\t\t\tworkflow: actorId\n\t\t\t\t\t? getWorkflowInspector(actorId).adapter\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tgetHistory: () => null,\n\t\t\t\t\t\t\tonHistoryUpdated: () => () => {},\n\t\t\t\t\t\t\treplayFromStep: async () => null,\n\t\t\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n\n\treturn runWithConfig;\n}\n\nfunction resolveWorkflowInspectorActorId(actor: unknown): string | undefined {\n\tif (typeof actor === \"string\" && actor.length > 0) {\n\t\treturn actor;\n\t}\n\n\tif (!actor || typeof actor !== \"object\") {\n\t\treturn undefined;\n\t}\n\n\tconst candidate = actor as {\n\t\tid?: unknown;\n\t\tactorId?: unknown;\n\t};\n\tif (typeof candidate.id === \"string\" && candidate.id.length > 0) {\n\t\treturn candidate.id;\n\t}\n\tif (\n\t\ttypeof candidate.actorId === \"string\" &&\n\t\tcandidate.actorId.length > 0\n\t) {\n\t\treturn candidate.actorId;\n\t}\n\n\treturn undefined;\n}\n","// @ts-nocheck\nimport type { RunContext } from \"@/actor/config\";\nimport type {\n\tAnyActorInstance,\n\tAnyStaticActorInstance,\n} from \"@/actor/definition\";\nimport { makeWorkflowKey, workflowStoragePrefix } from \"@/actor/keys\";\nimport type {\n\tEngineDriver,\n\tKVEntry,\n\tKVWrite,\n\tMessage,\n\tWorkflowMessageDriver,\n} from \"@rivetkit/workflow-engine\";\n\nconst WORKFLOW_STORAGE_PREFIX = workflowStoragePrefix();\n\nfunction stripWorkflowKey(prefixed: Uint8Array): Uint8Array {\n\treturn prefixed.slice(WORKFLOW_STORAGE_PREFIX.length);\n}\n\nfunction computeUpperBound(prefix: Uint8Array): Uint8Array | null {\n\tconst upperBound = prefix.slice();\n\tfor (let i = upperBound.length - 1; i >= 0; i--) {\n\t\tif (upperBound[i] !== 0xff) {\n\t\t\tupperBound[i]++;\n\t\t\treturn upperBound.slice(0, i + 1);\n\t\t}\n\t}\n\treturn null;\n}\n\nclass ActorWorkflowMessageDriver implements WorkflowMessageDriver {\n\t#actor: AnyStaticActorInstance;\n\t#runCtx: RunContext<any, any, any, any, any, any, any, any>;\n\n\tconstructor(\n\t\tactor: AnyStaticActorInstance,\n\t\trunCtx: RunContext<any, any, any, any, any, any, any, any>,\n\t) {\n\t\tthis.#actor = actor;\n\t\tthis.#runCtx = runCtx;\n\t}\n\n\tasync addMessage(message: Message): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.enqueue(message.name, message.data),\n\t\t);\n\t}\n\n\tasync receiveMessages(opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tconst messages = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.receive(\n\t\t\t\topts.names && opts.names.length > 0\n\t\t\t\t\t? [...opts.names]\n\t\t\t\t\t: undefined,\n\t\t\t\topts.count,\n\t\t\t\t0,\n\t\t\t\tundefined,\n\t\t\t\topts.completable,\n\t\t\t),\n\t\t);\n\t\treturn messages.map((message) => ({\n\t\t\tid: message.id.toString(),\n\t\t\tname: message.name,\n\t\t\tdata: message.body,\n\t\t\tsentAt: message.createdAt,\n\t\t\t...(opts.completable\n\t\t\t\t? {\n\t\t\t\t\t\tcomplete: async (response?: unknown) => {\n\t\t\t\t\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\t\t\t\t\tthis.#actor.queueManager.completeMessage(\n\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t}));\n\t}\n\n\tasync completeMessage(\n\t\tmessageId: string,\n\t\tresponse?: unknown,\n\t): Promise<void> {\n\t\tlet parsedId: bigint;\n\t\ttry {\n\t\t\tparsedId = BigInt(messageId);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.completeMessageById(parsedId, response),\n\t\t);\n\t}\n}\n\nexport class ActorWorkflowDriver implements EngineDriver {\n\treadonly workerPollInterval = 100;\n\treadonly messageDriver: WorkflowMessageDriver;\n\t#actor: AnyStaticActorInstance;\n\t#runCtx: RunContext<any, any, any, any, any, any, any, any>;\n\n\tconstructor(\n\t\tactor: AnyStaticActorInstance,\n\t\trunCtx: RunContext<any, any, any, any, any, any, any, any>,\n\t) {\n\t\tthis.#actor = actor;\n\t\tthis.#runCtx = runCtx;\n\t\tthis.messageDriver = new ActorWorkflowMessageDriver(actor, runCtx);\n\t}\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tconst [value] = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchGet(this.#actor.id, [\n\t\t\t\tmakeWorkflowKey(key),\n\t\t\t]),\n\t\t);\n\t\treturn value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchPut(this.#actor.id, [\n\t\t\t\t[makeWorkflowKey(key), value],\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchDelete(this.#actor.id, [\n\t\t\t\tmakeWorkflowKey(key),\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tconst start = makeWorkflowKey(prefix);\n\t\tconst end = computeUpperBound(start);\n\t\tif (end) {\n\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvDeleteRange(this.#actor.id, start, end),\n\t\t\t);\n\t\t} else {\n\t\t\tconst entries = await this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvListPrefix(this.#actor.id, start),\n\t\t\t);\n\t\t\tif (entries.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvBatchDelete(\n\t\t\t\t\tthis.#actor.id,\n\t\t\t\t\tentries.map(([key]) => key),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvDeleteRange(\n\t\t\t\tthis.#actor.id,\n\t\t\t\tmakeWorkflowKey(start),\n\t\t\t\tmakeWorkflowKey(end),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tconst entries = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvListPrefix(\n\t\t\t\tthis.#actor.id,\n\t\t\t\tmakeWorkflowKey(prefix),\n\t\t\t),\n\t\t);\n\t\treturn entries.map(([key, value]) => ({\n\t\t\tkey: stripWorkflowKey(key),\n\t\t\tvalue,\n\t\t}));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tif (writes.length === 0) return;\n\n\t\t// Flush actor state together with workflow state to ensure atomicity.\n\t\t// If the server crashes after workflow flush, actor state must also be persisted.\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tPromise.all([\n\t\t\t\tthis.#actor.driver.kvBatchPut(\n\t\t\t\t\tthis.#actor.id,\n\t\t\t\t\twrites.map(({ key, value }) => [\n\t\t\t\t\t\tmakeWorkflowKey(key),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tthis.#actor.stateManager.saveState({\n\t\t\t\t\timmediate: true,\n\t\t\t\t}),\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync setAlarm(_workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.setAlarm(this.#actor, wakeAt),\n\t\t);\n\t}\n\n\tasync clearAlarm(_workflowId: string): Promise<void> {\n\t\t// No dedicated clear alarm support in actor drivers.\n\t\treturn;\n\t}\n\n\twaitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\treturn this.#actor.queueManager.waitForNames(\n\t\t\tmessageNames.length > 0 ? messageNames : undefined,\n\t\t\tabortSignal,\n\t\t);\n\t}\n}\n\nclass NoopWorkflowMessageDriver implements WorkflowMessageDriver {\n\tasync addMessage(_message: Message): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n\n\tasync receiveMessages(_opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n\n\tasync completeMessage(\n\t\t_messageId: string,\n\t\t_response?: unknown,\n\t): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n}\n\nexport class ActorWorkflowControlDriver implements EngineDriver {\n\treadonly workerPollInterval = 100;\n\treadonly messageDriver: WorkflowMessageDriver =\n\t\tnew NoopWorkflowMessageDriver();\n\t#actor: AnyStaticActorInstance;\n\n\tconstructor(actor: AnyStaticActorInstance) {\n\t\tthis.#actor = actor;\n\t}\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tconst [value] = await this.#actor.driver.kvBatchGet(this.#actor.id, [\n\t\t\tmakeWorkflowKey(key),\n\t\t]);\n\t\treturn value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvBatchPut(this.#actor.id, [\n\t\t\t[makeWorkflowKey(key), value],\n\t\t]);\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvBatchDelete(this.#actor.id, [\n\t\t\tmakeWorkflowKey(key),\n\t\t]);\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tconst start = makeWorkflowKey(prefix);\n\t\tconst end = computeUpperBound(start);\n\t\tif (end) {\n\t\t\tawait this.#actor.driver.kvDeleteRange(this.#actor.id, start, end);\n\t\t\treturn;\n\t\t}\n\n\t\tconst entries = await this.#actor.driver.kvListPrefix(\n\t\t\tthis.#actor.id,\n\t\t\tstart,\n\t\t);\n\t\tif (entries.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tawait this.#actor.driver.kvBatchDelete(\n\t\t\tthis.#actor.id,\n\t\t\tentries.map(([key]) => key),\n\t\t);\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvDeleteRange(\n\t\t\tthis.#actor.id,\n\t\t\tmakeWorkflowKey(start),\n\t\t\tmakeWorkflowKey(end),\n\t\t);\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tconst entries = await this.#actor.driver.kvListPrefix(\n\t\t\tthis.#actor.id,\n\t\t\tmakeWorkflowKey(prefix),\n\t\t);\n\t\treturn entries.map(([key, value]) => ({\n\t\t\tkey: stripWorkflowKey(key),\n\t\t\tvalue,\n\t\t}));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tif (writes.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.#actor.driver.kvBatchPut(\n\t\t\tthis.#actor.id,\n\t\t\twrites.map(({ key, value }) => [makeWorkflowKey(key), value]),\n\t\t);\n\t}\n\n\tasync setAlarm(_workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait this.#actor.driver.setAlarm(this.#actor, wakeAt);\n\t}\n\n\tasync clearAlarm(_workflowId: string): Promise<void> {\n\t\treturn;\n\t}\n\n\twaitForMessages(\n\t\t_messageNames: string[],\n\t\t_abortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n}\n","export const WORKFLOW_GUARD_KV_KEY = \"__rivet_actor_workflow_guard_triggered\";\n","// @ts-nocheck\nimport type { RunContext } from \"@/actor/config\";\nimport type {\n\tQueueFilterName,\n\tQueueNextBatchOptions,\n\tQueueNextOptions,\n\tQueueResultMessageForName,\n} from \"@/actor/config\";\nimport type { Client } from \"@/client/client\";\nimport type { Registry } from \"@/registry\";\nimport type {\n\tBaseActorDefinition,\n\tAnyActorDefinition,\n} from \"@/actor/definition\";\nimport type {\n\tAnyDatabaseProvider,\n\tInferDatabaseClient,\n} from \"@/common/database/config\";\nimport type {\n\tEventSchemaConfig,\n\tInferEventArgs,\n\tInferSchemaMap,\n\tQueueSchemaConfig,\n} from \"@/actor/schema\";\nimport type { WorkflowContextInterface } from \"@rivetkit/workflow-engine\";\nimport type {\n\tBranchConfig,\n\tBranchOutput,\n\tEntryKindType,\n\tLoopConfig,\n\tLoopResult,\n\tStepConfig,\n\tTryBlockConfig,\n\tTryBlockResult,\n\tTryStepConfig,\n\tTryStepResult,\n\tWorkflowQueueMessage,\n} from \"@rivetkit/workflow-engine\";\nimport { WORKFLOW_GUARD_KV_KEY } from \"./constants\";\n\ntype WorkflowActorQueueNextOptions<\n\tTName extends string,\n\tTCompletable extends boolean,\n> = Omit<QueueNextOptions<TName, TCompletable>, \"signal\">;\n\ntype WorkflowActorQueueNextOptionsFallback<TCompletable extends boolean> = Omit<\n\tQueueNextOptions<string, TCompletable>,\n\t\"signal\"\n>;\n\ntype WorkflowActorQueueNextBatchOptions<\n\tTName extends string,\n\tTCompletable extends boolean,\n> = Omit<QueueNextBatchOptions<TName, TCompletable>, \"signal\">;\n\ntype WorkflowActorQueueNextBatchOptionsFallback<TCompletable extends boolean> =\n\tOmit<QueueNextBatchOptions<string, TCompletable>, \"signal\">;\n\ntype ActorWorkflowLoopConfig<\n\tS,\n\tT,\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> = Omit<LoopConfig<S, T>, \"run\"> & {\n\trun: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tstate: S,\n\t) => Promise<LoopResult<S, T> | (S extends undefined ? void : never)>;\n};\n\ntype ActorWorkflowBranchConfig<\n\tTOutput,\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> = {\n\trun: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => Promise<TOutput>;\n};\n\nexport class ActorWorkflowContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> implements WorkflowContextInterface\n{\n\t#inner: WorkflowContextInterface;\n\t#runCtx: RunContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>;\n\t#actorAccessDepth = 0;\n\t#allowActorAccess = false;\n\t#guardViolation = false;\n\n\tconstructor(\n\t\tinner: WorkflowContextInterface,\n\t\trunCtx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) {\n\t\tthis.#inner = inner;\n\t\tthis.#runCtx = runCtx;\n\t}\n\n\tget workflowId(): string {\n\t\treturn this.#inner.workflowId;\n\t}\n\n\tget abortSignal(): AbortSignal {\n\t\treturn this.#inner.abortSignal;\n\t}\n\n\tget queue() {\n\t\tconst self = this;\n\t\tfunction next<\n\t\t\tconst TName extends QueueFilterName<TQueues>,\n\t\t\tconst TCompletable extends boolean = false,\n\t\t>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptions<TName, TCompletable>,\n\t\t): Promise<QueueResultMessageForName<TQueues, TName, TCompletable>>;\n\t\tfunction next<const TCompletable extends boolean = false>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptionsFallback<TCompletable>,\n\t\t): Promise<\n\t\t\tQueueResultMessageForName<\n\t\t\t\tTQueues,\n\t\t\t\tQueueFilterName<TQueues>,\n\t\t\t\tTCompletable\n\t\t\t>\n\t\t>;\n\t\tasync function next(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptions<string, boolean>,\n\t\t): Promise<WorkflowQueueMessage<unknown>> {\n\t\t\tconst message = await self.#inner.queue.next(name, opts);\n\t\t\treturn self.#toActorQueueMessage(message);\n\t\t}\n\n\t\tfunction nextBatch<\n\t\t\tconst TName extends QueueFilterName<TQueues>,\n\t\t\tconst TCompletable extends boolean = false,\n\t\t>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptions<TName, TCompletable>,\n\t\t): Promise<\n\t\t\tArray<QueueResultMessageForName<TQueues, TName, TCompletable>>\n\t\t>;\n\t\tfunction nextBatch<const TCompletable extends boolean = false>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptionsFallback<TCompletable>,\n\t\t): Promise<\n\t\t\tArray<\n\t\t\t\tQueueResultMessageForName<\n\t\t\t\t\tTQueues,\n\t\t\t\t\tQueueFilterName<TQueues>,\n\t\t\t\t\tTCompletable\n\t\t\t\t>\n\t\t\t>\n\t\t>;\n\t\tasync function nextBatch(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptions<string, boolean>,\n\t\t): Promise<Array<WorkflowQueueMessage<unknown>>> {\n\t\t\tconst messages = await self.#inner.queue.nextBatch(name, opts);\n\t\t\treturn messages.map((message) =>\n\t\t\t\tself.#toActorQueueMessage(message),\n\t\t\t);\n\t\t}\n\n\t\tfunction send<K extends keyof TQueues & string>(\n\t\t\tname: K,\n\t\t\tbody: InferSchemaMap<TQueues>[K],\n\t\t): Promise<void>;\n\t\tfunction send(\n\t\t\tname: keyof TQueues extends never ? string : never,\n\t\t\tbody: unknown,\n\t\t): Promise<void>;\n\t\tasync function send(name: string, body: unknown): Promise<void> {\n\t\t\tself.#ensureActorAccess(\"queue.send\");\n\t\t\tawait self.#runCtx.queue.send(name as never, body as never);\n\t\t}\n\n\t\treturn {\n\t\t\tnext,\n\t\t\tnextBatch,\n\t\t\tsend,\n\t\t};\n\t}\n\n\tasync step<T>(\n\t\tnameOrConfig: string | Parameters<WorkflowContextInterface[\"step\"]>[0],\n\t\trun?: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Step run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.step(nameOrConfig, () =>\n\t\t\t\t\tthis.#withActorAccess(run),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst stepConfig = nameOrConfig as StepConfig<T>;\n\t\tconst config: StepConfig<T> = {\n\t\t\t...stepConfig,\n\t\t\trun: () => this.#withActorAccess(stepConfig.run),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.step(config));\n\t}\n\n\tasync tryStep<T>(\n\t\tnameOrConfig:\n\t\t\t| string\n\t\t\t| Parameters<WorkflowContextInterface[\"tryStep\"]>[0],\n\t\trun?: () => Promise<T>,\n\t): Promise<TryStepResult<T>> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Step run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.tryStep(nameOrConfig, () =>\n\t\t\t\t\tthis.#withActorAccess(run),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst stepConfig = nameOrConfig as TryStepConfig<T>;\n\t\tconst config: TryStepConfig<T> = {\n\t\t\t...stepConfig,\n\t\t\trun: () => this.#withActorAccess(stepConfig.run),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.tryStep(config));\n\t}\n\n\tasync try<T>(\n\t\tnameOrConfig: string | Parameters<WorkflowContextInterface[\"try\"]>[0],\n\t\trun?: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<T>,\n\t): Promise<TryBlockResult<T>> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Try run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.try(nameOrConfig, async (ctx) =>\n\t\t\t\t\trun(this.#createChildContext(ctx)),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst tryConfig = nameOrConfig as TryBlockConfig<T>;\n\t\tconst config: TryBlockConfig<T> = {\n\t\t\t...tryConfig,\n\t\t\trun: async (ctx) => tryConfig.run(this.#createChildContext(ctx)),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.try(config));\n\t}\n\n\tasync loop<T>(\n\t\tname: string,\n\t\trun: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<LoopResult<undefined, T> | void>,\n\t): Promise<T>;\n\tasync loop<T>(\n\t\tname: string,\n\t\trun: (\n\t\t\tctx: WorkflowContextInterface,\n\t\t) => Promise<LoopResult<undefined, T> | void>,\n\t): Promise<T>;\n\tasync loop<S, T>(\n\t\tconfig: ActorWorkflowLoopConfig<\n\t\t\tS,\n\t\t\tT,\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t): Promise<T>;\n\tasync loop<S, T>(config: LoopConfig<S, T>): Promise<T>;\n\tasync loop(\n\t\tnameOrConfig:\n\t\t\t| string\n\t\t\t| LoopConfig<any, any>\n\t\t\t| ActorWorkflowLoopConfig<\n\t\t\t\t\tany,\n\t\t\t\t\tany,\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t >,\n\t\trun?: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<LoopResult<undefined, any> | void>,\n\t): Promise<any> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Loop run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.loop(nameOrConfig, async (ctx) =>\n\t\t\t\t\trun(this.#createChildContext(ctx)),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst wrapped: LoopConfig<any, any> = {\n\t\t\t...nameOrConfig,\n\t\t\trun: async (ctx, state) =>\n\t\t\t\tnameOrConfig.run(this.#createChildContext(ctx), state),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.loop(wrapped));\n\t}\n\n\tsleep(name: string, durationMs: number): Promise<void> {\n\t\treturn this.#inner.sleep(name, durationMs);\n\t}\n\n\tsleepUntil(name: string, timestampMs: number): Promise<void> {\n\t\treturn this.#inner.sleepUntil(name, timestampMs);\n\t}\n\n\tdestroy(): void {\n\t\tthis.#ensureActorAccess(\"destroy\");\n\t\tthis.#runCtx.destroy();\n\t}\n\n\tasync rollbackCheckpoint(name: string): Promise<void> {\n\t\tawait this.#wrapActive(() => this.#inner.rollbackCheckpoint(name));\n\t}\n\n\tasync join<\n\t\tT extends Record<\n\t\t\tstring,\n\t\t\tActorWorkflowBranchConfig<\n\t\t\t\tunknown,\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>\n\t\t>,\n\t>(\n\t\tname: string,\n\t\tbranches: T,\n\t): Promise<{ [K in keyof T]: Awaited<ReturnType<T[K][\"run\"]>> }>;\n\tasync join<T extends Record<string, BranchConfig<unknown>>>(\n\t\tname: string,\n\t\tbranches: T,\n\t): Promise<{ [K in keyof T]: BranchOutput<T[K]> }>;\n\tasync join(name: string, branches: Record<string, BranchConfig<unknown>>) {\n\t\tconst wrappedBranches = Object.fromEntries(\n\t\t\tObject.entries(branches).map(([key, branch]) => [\n\t\t\t\tkey,\n\t\t\t\t{\n\t\t\t\t\trun: async (ctx: WorkflowContextInterface) =>\n\t\t\t\t\t\tbranch.run(this.#createChildContext(ctx)),\n\t\t\t\t},\n\t\t\t]),\n\t\t) as Record<string, BranchConfig<unknown>>;\n\t\treturn await this.#wrapActive(() =>\n\t\t\tthis.#inner.join(name, wrappedBranches),\n\t\t);\n\t}\n\n\tasync race<T>(\n\t\tname: string,\n\t\tbranches: Array<{\n\t\t\tname: string;\n\t\t\trun: (\n\t\t\t\tctx: ActorWorkflowContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t\t) => Promise<T>;\n\t\t}>,\n\t): Promise<{ winner: string; value: T }>;\n\tasync race<T>(\n\t\tname: string,\n\t\tbranches: Array<{\n\t\t\tname: string;\n\t\t\trun: (ctx: WorkflowContextInterface) => Promise<T>;\n\t\t}>,\n\t): Promise<{ winner: string; value: T }> {\n\t\tconst wrappedBranches = branches.map((branch) => ({\n\t\t\tname: branch.name,\n\t\t\trun: (ctx: WorkflowContextInterface) =>\n\t\t\t\tbranch.run(this.#createChildContext(ctx)),\n\t\t}));\n\t\treturn (await this.#wrapActive(() =>\n\t\t\tthis.#inner.race(name, wrappedBranches),\n\t\t)) as { winner: string; value: T };\n\t}\n\n\tasync removed(name: string, originalType: EntryKindType): Promise<void> {\n\t\tawait this.#wrapActive(() => this.#inner.removed(name, originalType));\n\t}\n\n\tisEvicted(): boolean {\n\t\treturn this.#inner.isEvicted();\n\t}\n\n\tget state(): TState extends never ? never : TState {\n\t\tthis.#ensureActorAccess(\"state\");\n\t\treturn this.#runCtx.state as TState extends never ? never : TState;\n\t}\n\n\tget vars(): TVars extends never ? never : TVars {\n\t\tthis.#ensureActorAccess(\"vars\");\n\t\treturn this.#runCtx.vars as TVars extends never ? never : TVars;\n\t}\n\n\tclient<R extends Registry<any> = Registry<any>>(): Client<R> {\n\t\tthis.#ensureActorAccess(\"client\");\n\t\treturn this.#runCtx.client<R>();\n\t}\n\n\tget db(): TDatabase extends never ? never : InferDatabaseClient<TDatabase> {\n\t\tthis.#ensureActorAccess(\"db\");\n\t\treturn this.#runCtx.db as TDatabase extends never\n\t\t\t? never\n\t\t\t: InferDatabaseClient<TDatabase>;\n\t}\n\n\tget log() {\n\t\treturn this.#runCtx.log;\n\t}\n\n\t/** @deprecated No-op. Use `keepAwake(promise)` or `waitUntil(promise)` instead. */\n\tsetPreventSleep(_prevent: boolean): void {\n\t\tthis.#ensureActorAccess(\"setPreventSleep\");\n\t}\n\n\t/** @deprecated No-op. Always returns `false`. */\n\tget preventSleep(): boolean {\n\t\tthis.#ensureActorAccess(\"preventSleep\");\n\t\treturn false;\n\t}\n\n\t/**\n\t * Holds the actor awake for the duration of the provided promise. The\n\t * actor cannot idle-sleep or finalize the sleep grace period until the\n\t * promise settles.\n\t */\n\tkeepAwake<T>(promise: Promise<T>): Promise<T> {\n\t\tthis.#ensureActorAccess(\"keepAwake\");\n\t\treturn this.#runCtx.keepAwake(promise);\n\t}\n\n\t/**\n\t * Registers a promise that the sleep grace period will wait on. Use this\n\t * for best-effort flush/cleanup work that may complete inside the grace\n\t * window. For work the actor must stay running through, prefer\n\t * `c.keepAwake(promise)` which also blocks idle sleep.\n\t */\n\twaitUntil(promise: Promise<void>): void {\n\t\tthis.#ensureActorAccess(\"waitUntil\");\n\t\tthis.#runCtx.waitUntil(promise);\n\t}\n\n\tget actorId(): string {\n\t\treturn this.#runCtx.actorId;\n\t}\n\n\tbroadcast<K extends keyof TEvents & string>(\n\t\tname: K,\n\t\t...args: InferEventArgs<InferSchemaMap<TEvents>[K]>\n\t): void;\n\tbroadcast(\n\t\tname: keyof TEvents extends never ? string : never,\n\t\t...args: Array<unknown>\n\t): void;\n\tbroadcast(name: string, ...args: Array<unknown>): void {\n\t\tthis.#ensureActorAccess(\"broadcast\");\n\t\tthis.#runCtx.broadcast(\n\t\t\tname as never,\n\t\t\t...(args as unknown[] as never[]),\n\t\t);\n\t}\n\n\t#toActorQueueMessage<T>(\n\t\tmessage: WorkflowQueueMessage<T>,\n\t): WorkflowQueueMessage<T> & { id: bigint } {\n\t\tlet id: bigint;\n\t\ttry {\n\t\t\tid = BigInt(message.id);\n\t\t} catch {\n\t\t\tthrow new Error(`Invalid queue message id \"${message.id}\"`);\n\t\t}\n\t\treturn {\n\t\t\tid,\n\t\t\tname: message.name,\n\t\t\tbody: message.body,\n\t\t\tcreatedAt: message.createdAt,\n\t\t\t...(message.complete ? { complete: message.complete } : {}),\n\t\t};\n\t}\n\n\tasync #wrapActive<T>(run: () => Promise<T>): Promise<T> {\n\t\treturn await this.#runCtx.internalKeepAwake(run);\n\t}\n\n\tasync #withActorAccess<T>(run: () => Promise<T>): Promise<T> {\n\t\tthis.#actorAccessDepth++;\n\t\tif (this.#actorAccessDepth === 1) {\n\t\t\tthis.#allowActorAccess = true;\n\t\t}\n\t\ttry {\n\t\t\treturn await run();\n\t\t} finally {\n\t\t\tthis.#actorAccessDepth--;\n\t\t\tif (this.#actorAccessDepth === 0) {\n\t\t\t\tthis.#allowActorAccess = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t#ensureActorAccess(feature: string): void {\n\t\tif (!this.#allowActorAccess) {\n\t\t\tthis.#guardViolation = true;\n\t\t\tthis.#markGuardTriggered();\n\t\t\tthrow new Error(\n\t\t\t\t`${feature} is only available inside workflow steps`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconsumeGuardViolation(): boolean {\n\t\tconst violated = this.#guardViolation;\n\t\tthis.#guardViolation = false;\n\t\treturn violated;\n\t}\n\n\t#markGuardTriggered(): void {\n\t\ttry {\n\t\t\tconst state = this.#runCtx.state as Record<string, unknown>;\n\t\t\tif (\n\t\t\t\tstate &&\n\t\t\t\ttypeof state === \"object\" &&\n\t\t\t\t\"guardTriggered\" in state\n\t\t\t) {\n\t\t\t\t(state as Record<string, unknown>).guardTriggered = true;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore if state is unavailable\n\t\t}\n\n\t\tthis.#runCtx.waitUntil(\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.#runCtx.kv.put(WORKFLOW_GUARD_KV_KEY, \"true\");\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.#runCtx.log.error({\n\t\t\t\t\t\tmsg: \"failed to persist workflow guard flag\",\n\t\t\t\t\t\terror,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\n\t#createChildContext(\n\t\tctx: WorkflowContextInterface,\n\t): ActorWorkflowContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> {\n\t\treturn new ActorWorkflowContext(ctx, this.#runCtx);\n\t}\n}\n\nexport type WorkflowContextOf<AD extends AnyActorDefinition> =\n\tAD extends BaseActorDefinition<\n\t\tinfer S,\n\t\tinfer CP,\n\t\tinfer CS,\n\t\tinfer V,\n\t\tinfer I,\n\t\tinfer DB extends AnyDatabaseProvider,\n\t\tinfer E extends EventSchemaConfig,\n\t\tinfer Q extends QueueSchemaConfig,\n\t\tany\n\t>\n\t\t? ActorWorkflowContext<S, CP, CS, V, I, DB, E, Q>\n\t\t: never;\n\nexport type WorkflowLoopContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n\nexport type WorkflowBranchContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n\nexport type WorkflowStepContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/workflow/mod.cjs","../../../src/workflow/mod.ts","../../../src/workflow/driver.ts","../../../src/workflow/constants.ts","../../../src/workflow/context.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/workflow/mod.cjs","sourcesContent":[null,"// @ts-nocheck\nimport {\n\tACTOR_CONTEXT_INTERNAL_SYMBOL,\n\tRUN_FUNCTION_CONFIG_SYMBOL,\n} from \"@/actor/config\";\nimport type { RunContext } from \"@/actor/config\";\nimport type { AnyDatabaseProvider } from \"@/common/database/config\";\nimport type { AnyStaticActorInstance } from \"@/actor/definition\";\nimport { RivetError } from \"@/actor/errors\";\nimport type { EventSchemaConfig, QueueSchemaConfig } from \"@/actor/schema\";\nimport { stringifyError } from \"@/utils\";\nimport {\n\tCriticalError,\n\tEntryInProgressError,\n\tHistoryDivergedError,\n\tJoinError,\n\tRaceError,\n\treplayWorkflowFromStep,\n\tRollbackCheckpointError,\n\tRollbackError,\n\trunWorkflow,\n\tStepExhaustedError,\n\ttype WorkflowErrorEvent,\n} from \"@rivetkit/workflow-engine\";\nimport invariant from \"invariant\";\nimport { ActorWorkflowControlDriver, ActorWorkflowDriver } from \"./driver\";\nimport { ActorWorkflowContext } from \"./context\";\nimport { createWorkflowInspectorAdapter } from \"./inspector\";\n\nexport { Loop } from \"@rivetkit/workflow-engine\";\nexport type {\n\tTryBlockCatchKind,\n\tTryBlockConfig,\n\tTryBlockFailure,\n\tTryBlockResult,\n\tTryStepCatchKind,\n\tTryStepConfig,\n\tTryStepFailure,\n\tTryStepResult,\n\tWorkflowError,\n\tWorkflowErrorEvent,\n} from \"@rivetkit/workflow-engine\";\nexport {\n\tActorWorkflowContext,\n\ttype WorkflowBranchContextOf,\n\ttype WorkflowContextOf,\n\ttype WorkflowLoopContextOf,\n\ttype WorkflowStepContextOf,\n} from \"./context\";\n\nfunction shouldRethrowWorkflowError(error: unknown): boolean {\n\tif (\n\t\terror instanceof CriticalError ||\n\t\terror instanceof JoinError ||\n\t\terror instanceof RaceError ||\n\t\terror instanceof RollbackError ||\n\t\terror instanceof StepExhaustedError\n\t) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\terror instanceof EntryInProgressError ||\n\t\terror instanceof HistoryDivergedError ||\n\t\terror instanceof RollbackCheckpointError\n\t) {\n\t\treturn true;\n\t}\n\n\treturn true;\n}\n\nfunction workflowReplayInFlightError(): RivetError {\n\treturn new RivetError(\n\t\t\"actor\",\n\t\t\"workflow_in_flight\",\n\t\t\"Workflow replay is unavailable while the workflow is currently in flight.\",\n\t\t{\n\t\t\tpublic: true,\n\t\t\tstatusCode: 409,\n\t\t},\n\t);\n}\n\nfunction isWorkflowReplayBlockedByRunningEntry(error: unknown): boolean {\n\treturn (\n\t\terror instanceof Error &&\n\t\terror.message ===\n\t\t\t\"Cannot replay a workflow while a step is currently running\"\n\t);\n}\n\nexport interface WorkflowOptions<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> {\n\tonError?: (\n\t\tctx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tevent: WorkflowErrorEvent,\n\t) => void | Promise<void>;\n}\n\nexport function workflow<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n>(\n\tfn: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => Promise<unknown>,\n\toptions: WorkflowOptions<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> = {},\n): (\n\tc: RunContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>,\n) => Promise<void> {\n\tconst onError = options.onError;\n\tconst workflowInspectors = new Map<\n\t\tstring,\n\t\tReturnType<typeof createWorkflowInspectorAdapter>\n\t>();\n\n\tfunction getWorkflowInspector(actorId: string) {\n\t\tlet workflowInspector = workflowInspectors.get(actorId);\n\t\tif (!workflowInspector) {\n\t\t\tworkflowInspector = createWorkflowInspectorAdapter();\n\t\t\tworkflowInspectors.set(actorId, workflowInspector);\n\t\t}\n\t\treturn workflowInspector;\n\t}\n\n\tasync function run(\n\t\trunCtx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t): Promise<void> {\n\t\tconst actor = (\n\t\t\trunCtx as unknown as {\n\t\t\t\t[ACTOR_CONTEXT_INTERNAL_SYMBOL]?: AnyStaticActorInstance;\n\t\t\t}\n\t\t)[ACTOR_CONTEXT_INTERNAL_SYMBOL];\n\t\tinvariant(actor, \"workflow() requires an actor instance\");\n\t\tconst workflowInspector = getWorkflowInspector(actor.id);\n\n\t\tconst driver = new ActorWorkflowDriver(actor, runCtx);\n\t\tconst controlDriver = new ActorWorkflowControlDriver(actor);\n\t\tworkflowInspector.setReplayFromStep(async (entryId) => {\n\t\t\tconst workflowState = await workflowInspector.adapter.getState();\n\t\t\tif (\n\t\t\t\tactor.isRunHandlerActive() ||\n\t\t\t\tworkflowState === \"pending\" ||\n\t\t\t\tworkflowState === \"running\"\n\t\t\t) {\n\t\t\t\tthrow workflowReplayInFlightError();\n\t\t\t}\n\n\t\t\tlet snapshot;\n\t\t\ttry {\n\t\t\t\tsnapshot = await replayWorkflowFromStep(\n\t\t\t\t\tactor.id,\n\t\t\t\t\tcontrolDriver,\n\t\t\t\t\tentryId,\n\t\t\t\t\t{ scheduleAlarm: false },\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tif (isWorkflowReplayBlockedByRunningEntry(error)) {\n\t\t\t\t\tthrow workflowReplayInFlightError();\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tworkflowInspector.update(snapshot);\n\t\t\tawait actor.restartRunHandler();\n\t\t\treturn workflowInspector.adapter.getHistory();\n\t\t});\n\n\t\tconst handle = runWorkflow(\n\t\t\tactor.id,\n\t\t\tasync (ctx) => await fn(new ActorWorkflowContext(ctx, runCtx)),\n\t\t\tundefined,\n\t\t\tdriver,\n\t\t\t{\n\t\t\t\tmode: \"live\",\n\t\t\t\tlogger: runCtx.log,\n\t\t\t\tonHistoryUpdated: workflowInspector.update,\n\t\t\t\tonError: onError\n\t\t\t\t\t? async (event) => await onError(runCtx, event)\n\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t);\n\t\tworkflowInspector.setGetState(async () => await handle.getState());\n\n\t\tconst onAbort = () => {\n\t\t\thandle.evict();\n\t\t};\n\t\tif (runCtx.abortSignal.aborted) {\n\t\t\tonAbort();\n\t\t} else {\n\t\t\trunCtx.abortSignal.addEventListener(\"abort\", onAbort, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tawait handle.result;\n\t\t} catch (error) {\n\t\t\tif (runCtx.abortSignal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (shouldRethrowWorkflowError(error)) {\n\t\t\t\trunCtx.log.error({\n\t\t\t\t\tmsg: \"workflow run failed\",\n\t\t\t\t\terror: stringifyError(error),\n\t\t\t\t});\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\trunCtx.log.warn({\n\t\t\t\tmsg: \"workflow failed and will sleep until woken\",\n\t\t\t\terror: stringifyError(error),\n\t\t\t});\n\t\t} finally {\n\t\t\trunCtx.abortSignal.removeEventListener(\"abort\", onAbort);\n\t\t}\n\t}\n\n\tconst runWithConfig = run as typeof run & {\n\t\t[RUN_FUNCTION_CONFIG_SYMBOL]?: {\n\t\t\ticon?: string;\n\t\t\tinspectorFactory?: (actor: unknown) => unknown;\n\t\t};\n\t};\n\trunWithConfig[RUN_FUNCTION_CONFIG_SYMBOL] = {\n\t\ticon: \"diagram-project\",\n\t\tinspectorFactory: (actor) => {\n\t\t\tconst actorId = resolveWorkflowInspectorActorId(actor);\n\t\t\treturn {\n\t\t\t\tworkflow: actorId\n\t\t\t\t\t? getWorkflowInspector(actorId).adapter\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tgetHistory: () => null,\n\t\t\t\t\t\t\tonHistoryUpdated: () => () => {},\n\t\t\t\t\t\t\treplayFromStep: async () => null,\n\t\t\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n\n\treturn runWithConfig;\n}\n\nfunction resolveWorkflowInspectorActorId(actor: unknown): string | undefined {\n\tif (typeof actor === \"string\" && actor.length > 0) {\n\t\treturn actor;\n\t}\n\n\tif (!actor || typeof actor !== \"object\") {\n\t\treturn undefined;\n\t}\n\n\tconst candidate = actor as {\n\t\tid?: unknown;\n\t\tactorId?: unknown;\n\t};\n\tif (typeof candidate.id === \"string\" && candidate.id.length > 0) {\n\t\treturn candidate.id;\n\t}\n\tif (\n\t\ttypeof candidate.actorId === \"string\" &&\n\t\tcandidate.actorId.length > 0\n\t) {\n\t\treturn candidate.actorId;\n\t}\n\n\treturn undefined;\n}\n","// @ts-nocheck\nimport type { RunContext } from \"@/actor/config\";\nimport type {\n\tAnyActorInstance,\n\tAnyStaticActorInstance,\n} from \"@/actor/definition\";\nimport { makeWorkflowKey, workflowStoragePrefix } from \"@/actor/keys\";\nimport type {\n\tEngineDriver,\n\tKVEntry,\n\tKVWrite,\n\tMessage,\n\tWorkflowMessageDriver,\n} from \"@rivetkit/workflow-engine\";\n\nconst WORKFLOW_STORAGE_PREFIX = workflowStoragePrefix();\n\nfunction stripWorkflowKey(prefixed: Uint8Array): Uint8Array {\n\treturn prefixed.slice(WORKFLOW_STORAGE_PREFIX.length);\n}\n\nfunction computeUpperBound(prefix: Uint8Array): Uint8Array | null {\n\tconst upperBound = prefix.slice();\n\tfor (let i = upperBound.length - 1; i >= 0; i--) {\n\t\tif (upperBound[i] !== 0xff) {\n\t\t\tupperBound[i]++;\n\t\t\treturn upperBound.slice(0, i + 1);\n\t\t}\n\t}\n\treturn null;\n}\n\nclass ActorWorkflowMessageDriver implements WorkflowMessageDriver {\n\t#actor: AnyStaticActorInstance;\n\t#runCtx: RunContext<any, any, any, any, any, any, any, any>;\n\n\tconstructor(\n\t\tactor: AnyStaticActorInstance,\n\t\trunCtx: RunContext<any, any, any, any, any, any, any, any>,\n\t) {\n\t\tthis.#actor = actor;\n\t\tthis.#runCtx = runCtx;\n\t}\n\n\tasync addMessage(message: Message): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.enqueue(message.name, message.data),\n\t\t);\n\t}\n\n\tasync receiveMessages(opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tconst messages = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.receive(\n\t\t\t\topts.names && opts.names.length > 0\n\t\t\t\t\t? [...opts.names]\n\t\t\t\t\t: undefined,\n\t\t\t\topts.count,\n\t\t\t\t0,\n\t\t\t\tundefined,\n\t\t\t\topts.completable,\n\t\t\t),\n\t\t);\n\t\treturn messages.map((message) => ({\n\t\t\tid: message.id.toString(),\n\t\t\tname: message.name,\n\t\t\tdata: message.body,\n\t\t\tsentAt: message.createdAt,\n\t\t\t...(opts.completable\n\t\t\t\t? {\n\t\t\t\t\t\tcomplete: async (response?: unknown) => {\n\t\t\t\t\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\t\t\t\t\tthis.#actor.queueManager.completeMessage(\n\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t}));\n\t}\n\n\tasync completeMessage(\n\t\tmessageId: string,\n\t\tresponse?: unknown,\n\t): Promise<void> {\n\t\tlet parsedId: bigint;\n\t\ttry {\n\t\t\tparsedId = BigInt(messageId);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.queueManager.completeMessageById(parsedId, response),\n\t\t);\n\t}\n}\n\nexport class ActorWorkflowDriver implements EngineDriver {\n\treadonly workerPollInterval = 100;\n\treadonly messageDriver: WorkflowMessageDriver;\n\t#actor: AnyStaticActorInstance;\n\t#runCtx: RunContext<any, any, any, any, any, any, any, any>;\n\n\tconstructor(\n\t\tactor: AnyStaticActorInstance,\n\t\trunCtx: RunContext<any, any, any, any, any, any, any, any>,\n\t) {\n\t\tthis.#actor = actor;\n\t\tthis.#runCtx = runCtx;\n\t\tthis.messageDriver = new ActorWorkflowMessageDriver(actor, runCtx);\n\t}\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tconst [value] = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchGet(this.#actor.id, [\n\t\t\t\tmakeWorkflowKey(key),\n\t\t\t]),\n\t\t);\n\t\treturn value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchPut(this.#actor.id, [\n\t\t\t\t[makeWorkflowKey(key), value],\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvBatchDelete(this.#actor.id, [\n\t\t\t\tmakeWorkflowKey(key),\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tconst start = makeWorkflowKey(prefix);\n\t\tconst end = computeUpperBound(start);\n\t\tif (end) {\n\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvDeleteRange(this.#actor.id, start, end),\n\t\t\t);\n\t\t} else {\n\t\t\tconst entries = await this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvListPrefix(this.#actor.id, start),\n\t\t\t);\n\t\t\tif (entries.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\t\tthis.#actor.driver.kvBatchDelete(\n\t\t\t\t\tthis.#actor.id,\n\t\t\t\t\tentries.map(([key]) => key),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvDeleteRange(\n\t\t\t\tthis.#actor.id,\n\t\t\t\tmakeWorkflowKey(start),\n\t\t\t\tmakeWorkflowKey(end),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tconst entries = await this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.kvListPrefix(\n\t\t\t\tthis.#actor.id,\n\t\t\t\tmakeWorkflowKey(prefix),\n\t\t\t),\n\t\t);\n\t\treturn entries.map(([key, value]) => ({\n\t\t\tkey: stripWorkflowKey(key),\n\t\t\tvalue,\n\t\t}));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tif (writes.length === 0) return;\n\n\t\t// Flush actor state together with workflow state to ensure atomicity.\n\t\t// If the server crashes after workflow flush, actor state must also be persisted.\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tPromise.all([\n\t\t\t\tthis.#actor.driver.kvBatchPut(\n\t\t\t\t\tthis.#actor.id,\n\t\t\t\t\twrites.map(({ key, value }) => [\n\t\t\t\t\t\tmakeWorkflowKey(key),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tthis.#actor.stateManager.saveState({\n\t\t\t\t\timmediate: true,\n\t\t\t\t}),\n\t\t\t]),\n\t\t);\n\t}\n\n\tasync setAlarm(_workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait this.#runCtx.internalKeepAwake(\n\t\t\tthis.#actor.driver.setAlarm(this.#actor, wakeAt),\n\t\t);\n\t}\n\n\tasync clearAlarm(_workflowId: string): Promise<void> {\n\t\t// No dedicated clear alarm support in actor drivers.\n\t\treturn;\n\t}\n\n\twaitForMessages(\n\t\tmessageNames: string[],\n\t\tabortSignal: AbortSignal,\n\t): Promise<void> {\n\t\treturn this.#actor.queueManager.waitForNames(\n\t\t\tmessageNames.length > 0 ? messageNames : undefined,\n\t\t\tabortSignal,\n\t\t);\n\t}\n}\n\nclass NoopWorkflowMessageDriver implements WorkflowMessageDriver {\n\tasync addMessage(_message: Message): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n\n\tasync receiveMessages(_opts: {\n\t\tnames?: readonly string[];\n\t\tcount: number;\n\t\tcompletable: boolean;\n\t}): Promise<Message[]> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n\n\tasync completeMessage(\n\t\t_messageId: string,\n\t\t_response?: unknown,\n\t): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n}\n\nexport class ActorWorkflowControlDriver implements EngineDriver {\n\treadonly workerPollInterval = 100;\n\treadonly messageDriver: WorkflowMessageDriver =\n\t\tnew NoopWorkflowMessageDriver();\n\t#actor: AnyStaticActorInstance;\n\n\tconstructor(actor: AnyStaticActorInstance) {\n\t\tthis.#actor = actor;\n\t}\n\n\tasync get(key: Uint8Array): Promise<Uint8Array | null> {\n\t\tconst [value] = await this.#actor.driver.kvBatchGet(this.#actor.id, [\n\t\t\tmakeWorkflowKey(key),\n\t\t]);\n\t\treturn value ?? null;\n\t}\n\n\tasync set(key: Uint8Array, value: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvBatchPut(this.#actor.id, [\n\t\t\t[makeWorkflowKey(key), value],\n\t\t]);\n\t}\n\n\tasync delete(key: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvBatchDelete(this.#actor.id, [\n\t\t\tmakeWorkflowKey(key),\n\t\t]);\n\t}\n\n\tasync deletePrefix(prefix: Uint8Array): Promise<void> {\n\t\tconst start = makeWorkflowKey(prefix);\n\t\tconst end = computeUpperBound(start);\n\t\tif (end) {\n\t\t\tawait this.#actor.driver.kvDeleteRange(this.#actor.id, start, end);\n\t\t\treturn;\n\t\t}\n\n\t\tconst entries = await this.#actor.driver.kvListPrefix(\n\t\t\tthis.#actor.id,\n\t\t\tstart,\n\t\t);\n\t\tif (entries.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tawait this.#actor.driver.kvBatchDelete(\n\t\t\tthis.#actor.id,\n\t\t\tentries.map(([key]) => key),\n\t\t);\n\t}\n\n\tasync deleteRange(start: Uint8Array, end: Uint8Array): Promise<void> {\n\t\tawait this.#actor.driver.kvDeleteRange(\n\t\t\tthis.#actor.id,\n\t\t\tmakeWorkflowKey(start),\n\t\t\tmakeWorkflowKey(end),\n\t\t);\n\t}\n\n\tasync list(prefix: Uint8Array): Promise<KVEntry[]> {\n\t\tconst entries = await this.#actor.driver.kvListPrefix(\n\t\t\tthis.#actor.id,\n\t\t\tmakeWorkflowKey(prefix),\n\t\t);\n\t\treturn entries.map(([key, value]) => ({\n\t\t\tkey: stripWorkflowKey(key),\n\t\t\tvalue,\n\t\t}));\n\t}\n\n\tasync batch(writes: KVWrite[]): Promise<void> {\n\t\tif (writes.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.#actor.driver.kvBatchPut(\n\t\t\tthis.#actor.id,\n\t\t\twrites.map(({ key, value }) => [makeWorkflowKey(key), value]),\n\t\t);\n\t}\n\n\tasync setAlarm(_workflowId: string, wakeAt: number): Promise<void> {\n\t\tawait this.#actor.driver.setAlarm(this.#actor, wakeAt);\n\t}\n\n\tasync clearAlarm(_workflowId: string): Promise<void> {\n\t\treturn;\n\t}\n\n\twaitForMessages(\n\t\t_messageNames: string[],\n\t\t_abortSignal: AbortSignal,\n\t): Promise<void> {\n\t\tthrow new Error(\"Workflow control driver does not support messages\");\n\t}\n}\n","export const WORKFLOW_GUARD_KV_KEY = \"__rivet_actor_workflow_guard_triggered\";\n","// @ts-nocheck\nimport { RAW_STATE_SYMBOL, type RunContext } from \"@/actor/config\";\nimport type {\n\tQueueFilterName,\n\tQueueNextBatchOptions,\n\tQueueNextOptions,\n\tQueueResultMessageForName,\n} from \"@/actor/config\";\nimport type { Client } from \"@/client/client\";\nimport type { Registry } from \"@/registry\";\nimport type {\n\tBaseActorDefinition,\n\tAnyActorDefinition,\n} from \"@/actor/definition\";\nimport type {\n\tAnyDatabaseProvider,\n\tInferDatabaseClient,\n} from \"@/common/database/config\";\nimport type {\n\tEventSchemaConfig,\n\tInferEventArgs,\n\tInferSchemaMap,\n\tQueueSchemaConfig,\n} from \"@/actor/schema\";\nimport type { WorkflowContextInterface } from \"@rivetkit/workflow-engine\";\nimport type {\n\tBranchConfig,\n\tBranchOutput,\n\tEntryKindType,\n\tLoopConfig,\n\tLoopResult,\n\tStepConfig,\n\tTryBlockConfig,\n\tTryBlockResult,\n\tTryStepConfig,\n\tTryStepResult,\n\tWorkflowQueueMessage,\n} from \"@rivetkit/workflow-engine\";\nimport { WORKFLOW_GUARD_KV_KEY } from \"./constants\";\n\ntype WorkflowActorQueueNextOptions<\n\tTName extends string,\n\tTCompletable extends boolean,\n> = Omit<QueueNextOptions<TName, TCompletable>, \"signal\">;\n\ntype WorkflowActorQueueNextOptionsFallback<TCompletable extends boolean> = Omit<\n\tQueueNextOptions<string, TCompletable>,\n\t\"signal\"\n>;\n\ntype WorkflowActorQueueNextBatchOptions<\n\tTName extends string,\n\tTCompletable extends boolean,\n> = Omit<QueueNextBatchOptions<TName, TCompletable>, \"signal\">;\n\ntype WorkflowActorQueueNextBatchOptionsFallback<TCompletable extends boolean> =\n\tOmit<QueueNextBatchOptions<string, TCompletable>, \"signal\">;\n\ntype ActorWorkflowLoopConfig<\n\tS,\n\tT,\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> = Omit<LoopConfig<S, T>, \"run\"> & {\n\trun: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t\tstate: S,\n\t) => Promise<LoopResult<S, T> | (S extends undefined ? void : never)>;\n};\n\ntype ActorWorkflowBranchConfig<\n\tTOutput,\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig,\n\tTQueues extends QueueSchemaConfig,\n> = {\n\trun: (\n\t\tctx: ActorWorkflowContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) => Promise<TOutput>;\n};\n\nexport class ActorWorkflowContext<\n\tTState,\n\tTConnParams,\n\tTConnState,\n\tTVars,\n\tTInput,\n\tTDatabase extends AnyDatabaseProvider,\n\tTEvents extends EventSchemaConfig = Record<never, never>,\n\tTQueues extends QueueSchemaConfig = Record<never, never>,\n> implements WorkflowContextInterface\n{\n\t#inner: WorkflowContextInterface;\n\t#runCtx: RunContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t>;\n\t#actorAccessDepth = 0;\n\t#allowActorAccess = false;\n\t#guardViolation = false;\n\n\tconstructor(\n\t\tinner: WorkflowContextInterface,\n\t\trunCtx: RunContext<\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t) {\n\t\tthis.#inner = inner;\n\t\tthis.#runCtx = runCtx;\n\t}\n\n\tget workflowId(): string {\n\t\treturn this.#inner.workflowId;\n\t}\n\n\tget abortSignal(): AbortSignal {\n\t\treturn this.#inner.abortSignal;\n\t}\n\n\tget queue() {\n\t\tconst self = this;\n\t\tfunction next<\n\t\t\tconst TName extends QueueFilterName<TQueues>,\n\t\t\tconst TCompletable extends boolean = false,\n\t\t>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptions<TName, TCompletable>,\n\t\t): Promise<QueueResultMessageForName<TQueues, TName, TCompletable>>;\n\t\tfunction next<const TCompletable extends boolean = false>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptionsFallback<TCompletable>,\n\t\t): Promise<\n\t\t\tQueueResultMessageForName<\n\t\t\t\tTQueues,\n\t\t\t\tQueueFilterName<TQueues>,\n\t\t\t\tTCompletable\n\t\t\t>\n\t\t>;\n\t\tasync function next(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextOptions<string, boolean>,\n\t\t): Promise<WorkflowQueueMessage<unknown>> {\n\t\t\tconst message = await self.#inner.queue.next(name, opts);\n\t\t\treturn self.#toActorQueueMessage(message);\n\t\t}\n\n\t\tfunction nextBatch<\n\t\t\tconst TName extends QueueFilterName<TQueues>,\n\t\t\tconst TCompletable extends boolean = false,\n\t\t>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptions<TName, TCompletable>,\n\t\t): Promise<\n\t\t\tArray<QueueResultMessageForName<TQueues, TName, TCompletable>>\n\t\t>;\n\t\tfunction nextBatch<const TCompletable extends boolean = false>(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptionsFallback<TCompletable>,\n\t\t): Promise<\n\t\t\tArray<\n\t\t\t\tQueueResultMessageForName<\n\t\t\t\t\tTQueues,\n\t\t\t\t\tQueueFilterName<TQueues>,\n\t\t\t\t\tTCompletable\n\t\t\t\t>\n\t\t\t>\n\t\t>;\n\t\tasync function nextBatch(\n\t\t\tname: string,\n\t\t\topts?: WorkflowActorQueueNextBatchOptions<string, boolean>,\n\t\t): Promise<Array<WorkflowQueueMessage<unknown>>> {\n\t\t\tconst messages = await self.#inner.queue.nextBatch(name, opts);\n\t\t\treturn messages.map((message) =>\n\t\t\t\tself.#toActorQueueMessage(message),\n\t\t\t);\n\t\t}\n\n\t\tfunction send<K extends keyof TQueues & string>(\n\t\t\tname: K,\n\t\t\tbody: InferSchemaMap<TQueues>[K],\n\t\t): Promise<void>;\n\t\tfunction send(\n\t\t\tname: keyof TQueues extends never ? string : never,\n\t\t\tbody: unknown,\n\t\t): Promise<void>;\n\t\tasync function send(name: string, body: unknown): Promise<void> {\n\t\t\tself.#ensureActorAccess(\"queue.send\");\n\t\t\tawait self.#runCtx.queue.send(name as never, body as never);\n\t\t}\n\n\t\treturn {\n\t\t\tnext,\n\t\t\tnextBatch,\n\t\t\tsend,\n\t\t};\n\t}\n\n\tasync step<T>(\n\t\tnameOrConfig: string | Parameters<WorkflowContextInterface[\"step\"]>[0],\n\t\trun?: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Step run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.step(nameOrConfig, () =>\n\t\t\t\t\tthis.#withActorAccessAndStateRollback(run),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst stepConfig = nameOrConfig as StepConfig<T>;\n\t\tconst config: StepConfig<T> = {\n\t\t\t...stepConfig,\n\t\t\trun: () => this.#withActorAccessAndStateRollback(stepConfig.run),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.step(config));\n\t}\n\n\tasync tryStep<T>(\n\t\tnameOrConfig:\n\t\t\t| string\n\t\t\t| Parameters<WorkflowContextInterface[\"tryStep\"]>[0],\n\t\trun?: () => Promise<T>,\n\t): Promise<TryStepResult<T>> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Step run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.tryStep(nameOrConfig, () =>\n\t\t\t\t\tthis.#withActorAccessAndStateRollback(run),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst stepConfig = nameOrConfig as TryStepConfig<T>;\n\t\tconst config: TryStepConfig<T> = {\n\t\t\t...stepConfig,\n\t\t\trun: () => this.#withActorAccessAndStateRollback(stepConfig.run),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.tryStep(config));\n\t}\n\n\tasync try<T>(\n\t\tnameOrConfig: string | Parameters<WorkflowContextInterface[\"try\"]>[0],\n\t\trun?: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<T>,\n\t): Promise<TryBlockResult<T>> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Try run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.try(nameOrConfig, async (ctx) =>\n\t\t\t\t\trun(this.#createChildContext(ctx)),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst tryConfig = nameOrConfig as TryBlockConfig<T>;\n\t\tconst config: TryBlockConfig<T> = {\n\t\t\t...tryConfig,\n\t\t\trun: async (ctx) => tryConfig.run(this.#createChildContext(ctx)),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.try(config));\n\t}\n\n\tasync loop<T>(\n\t\tname: string,\n\t\trun: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<LoopResult<undefined, T> | void>,\n\t): Promise<T>;\n\tasync loop<T>(\n\t\tname: string,\n\t\trun: (\n\t\t\tctx: WorkflowContextInterface,\n\t\t) => Promise<LoopResult<undefined, T> | void>,\n\t): Promise<T>;\n\tasync loop<S, T>(\n\t\tconfig: ActorWorkflowLoopConfig<\n\t\t\tS,\n\t\t\tT,\n\t\t\tTState,\n\t\t\tTConnParams,\n\t\t\tTConnState,\n\t\t\tTVars,\n\t\t\tTInput,\n\t\t\tTDatabase,\n\t\t\tTEvents,\n\t\t\tTQueues\n\t\t>,\n\t): Promise<T>;\n\tasync loop<S, T>(config: LoopConfig<S, T>): Promise<T>;\n\tasync loop(\n\t\tnameOrConfig:\n\t\t\t| string\n\t\t\t| LoopConfig<any, any>\n\t\t\t| ActorWorkflowLoopConfig<\n\t\t\t\t\tany,\n\t\t\t\t\tany,\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t >,\n\t\trun?: (\n\t\t\tctx: ActorWorkflowContext<\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>,\n\t\t) => Promise<LoopResult<undefined, any> | void>,\n\t): Promise<any> {\n\t\tif (typeof nameOrConfig === \"string\") {\n\t\t\tif (!run) {\n\t\t\t\tthrow new Error(\"Loop run function missing\");\n\t\t\t}\n\t\t\treturn await this.#wrapActive(() =>\n\t\t\t\tthis.#inner.loop(nameOrConfig, async (ctx) =>\n\t\t\t\t\trun(this.#createChildContext(ctx)),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst wrapped: LoopConfig<any, any> = {\n\t\t\t...nameOrConfig,\n\t\t\trun: async (ctx, state) =>\n\t\t\t\tnameOrConfig.run(this.#createChildContext(ctx), state),\n\t\t};\n\t\treturn await this.#wrapActive(() => this.#inner.loop(wrapped));\n\t}\n\n\tsleep(name: string, durationMs: number): Promise<void> {\n\t\treturn this.#inner.sleep(name, durationMs);\n\t}\n\n\tsleepUntil(name: string, timestampMs: number): Promise<void> {\n\t\treturn this.#inner.sleepUntil(name, timestampMs);\n\t}\n\n\tdestroy(): void {\n\t\tthis.#ensureActorAccess(\"destroy\");\n\t\tthis.#runCtx.destroy();\n\t}\n\n\tasync rollbackCheckpoint(name: string): Promise<void> {\n\t\tawait this.#wrapActive(() => this.#inner.rollbackCheckpoint(name));\n\t}\n\n\tasync join<\n\t\tT extends Record<\n\t\t\tstring,\n\t\t\tActorWorkflowBranchConfig<\n\t\t\t\tunknown,\n\t\t\t\tTState,\n\t\t\t\tTConnParams,\n\t\t\t\tTConnState,\n\t\t\t\tTVars,\n\t\t\t\tTInput,\n\t\t\t\tTDatabase,\n\t\t\t\tTEvents,\n\t\t\t\tTQueues\n\t\t\t>\n\t\t>,\n\t>(\n\t\tname: string,\n\t\tbranches: T,\n\t): Promise<{ [K in keyof T]: Awaited<ReturnType<T[K][\"run\"]>> }>;\n\tasync join<T extends Record<string, BranchConfig<unknown>>>(\n\t\tname: string,\n\t\tbranches: T,\n\t): Promise<{ [K in keyof T]: BranchOutput<T[K]> }>;\n\tasync join(name: string, branches: Record<string, BranchConfig<unknown>>) {\n\t\tconst wrappedBranches = Object.fromEntries(\n\t\t\tObject.entries(branches).map(([key, branch]) => [\n\t\t\t\tkey,\n\t\t\t\t{\n\t\t\t\t\trun: async (ctx: WorkflowContextInterface) =>\n\t\t\t\t\t\tbranch.run(this.#createChildContext(ctx)),\n\t\t\t\t},\n\t\t\t]),\n\t\t) as Record<string, BranchConfig<unknown>>;\n\t\treturn await this.#wrapActive(() =>\n\t\t\tthis.#inner.join(name, wrappedBranches),\n\t\t);\n\t}\n\n\tasync race<T>(\n\t\tname: string,\n\t\tbranches: Array<{\n\t\t\tname: string;\n\t\t\trun: (\n\t\t\t\tctx: ActorWorkflowContext<\n\t\t\t\t\tTState,\n\t\t\t\t\tTConnParams,\n\t\t\t\t\tTConnState,\n\t\t\t\t\tTVars,\n\t\t\t\t\tTInput,\n\t\t\t\t\tTDatabase,\n\t\t\t\t\tTEvents,\n\t\t\t\t\tTQueues\n\t\t\t\t>,\n\t\t\t) => Promise<T>;\n\t\t}>,\n\t): Promise<{ winner: string; value: T }>;\n\tasync race<T>(\n\t\tname: string,\n\t\tbranches: Array<{\n\t\t\tname: string;\n\t\t\trun: (ctx: WorkflowContextInterface) => Promise<T>;\n\t\t}>,\n\t): Promise<{ winner: string; value: T }> {\n\t\tconst wrappedBranches = branches.map((branch) => ({\n\t\t\tname: branch.name,\n\t\t\trun: (ctx: WorkflowContextInterface) =>\n\t\t\t\tbranch.run(this.#createChildContext(ctx)),\n\t\t}));\n\t\treturn (await this.#wrapActive(() =>\n\t\t\tthis.#inner.race(name, wrappedBranches),\n\t\t)) as { winner: string; value: T };\n\t}\n\n\tasync removed(name: string, originalType: EntryKindType): Promise<void> {\n\t\tawait this.#wrapActive(() => this.#inner.removed(name, originalType));\n\t}\n\n\tisEvicted(): boolean {\n\t\treturn this.#inner.isEvicted();\n\t}\n\n\tget state(): TState extends never ? never : TState {\n\t\tthis.#ensureActorAccess(\"state\");\n\t\treturn this.#runCtx.state as TState extends never ? never : TState;\n\t}\n\n\tget vars(): TVars extends never ? never : TVars {\n\t\tthis.#ensureActorAccess(\"vars\");\n\t\treturn this.#runCtx.vars as TVars extends never ? never : TVars;\n\t}\n\n\tclient<R extends Registry<any> = Registry<any>>(): Client<R> {\n\t\tthis.#ensureActorAccess(\"client\");\n\t\treturn this.#runCtx.client<R>();\n\t}\n\n\tget db(): TDatabase extends never ? never : InferDatabaseClient<TDatabase> {\n\t\tthis.#ensureActorAccess(\"db\");\n\t\treturn this.#runCtx.db as TDatabase extends never\n\t\t\t? never\n\t\t\t: InferDatabaseClient<TDatabase>;\n\t}\n\n\tget log() {\n\t\treturn this.#runCtx.log;\n\t}\n\n\t/** @deprecated No-op. Use `keepAwake(promise)` or `waitUntil(promise)` instead. */\n\tsetPreventSleep(_prevent: boolean): void {\n\t\tthis.#ensureActorAccess(\"setPreventSleep\");\n\t}\n\n\t/** @deprecated No-op. Always returns `false`. */\n\tget preventSleep(): boolean {\n\t\tthis.#ensureActorAccess(\"preventSleep\");\n\t\treturn false;\n\t}\n\n\t/**\n\t * Holds the actor awake for the duration of the provided promise. The\n\t * actor cannot idle-sleep or finalize the sleep grace period until the\n\t * promise settles.\n\t */\n\tkeepAwake<T>(promise: Promise<T>): Promise<T> {\n\t\tthis.#ensureActorAccess(\"keepAwake\");\n\t\treturn this.#runCtx.keepAwake(promise);\n\t}\n\n\t/**\n\t * Registers a promise that the sleep grace period will wait on. Use this\n\t * for best-effort flush/cleanup work that may complete inside the grace\n\t * window. For work the actor must stay running through, prefer\n\t * `c.keepAwake(promise)` which also blocks idle sleep.\n\t */\n\twaitUntil(promise: Promise<void>): void {\n\t\tthis.#ensureActorAccess(\"waitUntil\");\n\t\tthis.#runCtx.waitUntil(promise);\n\t}\n\n\tget actorId(): string {\n\t\treturn this.#runCtx.actorId;\n\t}\n\n\tbroadcast<K extends keyof TEvents & string>(\n\t\tname: K,\n\t\t...args: InferEventArgs<InferSchemaMap<TEvents>[K]>\n\t): void;\n\tbroadcast(\n\t\tname: keyof TEvents extends never ? string : never,\n\t\t...args: Array<unknown>\n\t): void;\n\tbroadcast(name: string, ...args: Array<unknown>): void {\n\t\tthis.#ensureActorAccess(\"broadcast\");\n\t\tthis.#runCtx.broadcast(\n\t\t\tname as never,\n\t\t\t...(args as unknown[] as never[]),\n\t\t);\n\t}\n\n\t#toActorQueueMessage<T>(\n\t\tmessage: WorkflowQueueMessage<T>,\n\t): WorkflowQueueMessage<T> & { id: bigint } {\n\t\tlet id: bigint;\n\t\ttry {\n\t\t\tid = BigInt(message.id);\n\t\t} catch {\n\t\t\tthrow new Error(`Invalid queue message id \"${message.id}\"`);\n\t\t}\n\t\treturn {\n\t\t\tid,\n\t\t\tname: message.name,\n\t\t\tbody: message.body,\n\t\t\tcreatedAt: message.createdAt,\n\t\t\t...(message.complete ? { complete: message.complete } : {}),\n\t\t};\n\t}\n\n\tasync #wrapActive<T>(run: () => Promise<T>): Promise<T> {\n\t\treturn await this.#runCtx.internalKeepAwake(run);\n\t}\n\n\tasync #withActorAccess<T>(run: () => Promise<T>): Promise<T> {\n\t\tthis.#actorAccessDepth++;\n\t\tif (this.#actorAccessDepth === 1) {\n\t\t\tthis.#allowActorAccess = true;\n\t\t}\n\t\ttry {\n\t\t\treturn await run();\n\t\t} finally {\n\t\t\tthis.#actorAccessDepth--;\n\t\t\tif (this.#actorAccessDepth === 0) {\n\t\t\t\tthis.#allowActorAccess = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync #withActorAccessAndStateRollback<T>(\n\t\trun: () => Promise<T>,\n\t): Promise<T> {\n\t\tlet stateSnapshot: { state: TState } | null = null;\n\t\ttry {\n\t\t\tstateSnapshot = { state: this.#runCtx[RAW_STATE_SYMBOL]() };\n\t\t} catch (error) {\n\t\t\tthis.#runCtx.log.debug({\n\t\t\t\tmsg: \"failed to get state, likely due to being stateless workflow\",\n\t\t\t\terror,\n\t\t\t});\n\t\t}\n\t\tif (stateSnapshot) {\n\t\t\tstateSnapshot.state = structuredClone(stateSnapshot.state);\n\t\t}\n\t\tconst varsSnapshot = structuredClone(this.#runCtx.vars);\n\t\ttry {\n\t\t\treturn await this.#withActorAccess(run);\n\t\t} catch (error) {\n\t\t\tif (stateSnapshot) {\n\t\t\t\tthis.#runCtx.state = stateSnapshot.state;\n\t\t\t}\n\t\t\tthis.#runCtx.vars = varsSnapshot;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t#ensureActorAccess(feature: string): void {\n\t\tif (!this.#allowActorAccess) {\n\t\t\tthis.#guardViolation = true;\n\t\t\tthis.#markGuardTriggered();\n\t\t\tthrow new Error(\n\t\t\t\t`${feature} is only available inside workflow steps`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconsumeGuardViolation(): boolean {\n\t\tconst violated = this.#guardViolation;\n\t\tthis.#guardViolation = false;\n\t\treturn violated;\n\t}\n\n\t#markGuardTriggered(): void {\n\t\ttry {\n\t\t\tconst state = this.#runCtx.state as Record<string, unknown>;\n\t\t\tif (\n\t\t\t\tstate &&\n\t\t\t\ttypeof state === \"object\" &&\n\t\t\t\t\"guardTriggered\" in state\n\t\t\t) {\n\t\t\t\t(state as Record<string, unknown>).guardTriggered = true;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore if state is unavailable\n\t\t}\n\n\t\tthis.#runCtx.waitUntil(\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.#runCtx.kv.put(WORKFLOW_GUARD_KV_KEY, \"true\");\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.#runCtx.log.error({\n\t\t\t\t\t\tmsg: \"failed to persist workflow guard flag\",\n\t\t\t\t\t\terror,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\n\t#createChildContext(\n\t\tctx: WorkflowContextInterface,\n\t): ActorWorkflowContext<\n\t\tTState,\n\t\tTConnParams,\n\t\tTConnState,\n\t\tTVars,\n\t\tTInput,\n\t\tTDatabase,\n\t\tTEvents,\n\t\tTQueues\n\t> {\n\t\treturn new ActorWorkflowContext(ctx, this.#runCtx);\n\t}\n}\n\nexport type WorkflowContextOf<AD extends AnyActorDefinition> =\n\tAD extends BaseActorDefinition<\n\t\tinfer S,\n\t\tinfer CP,\n\t\tinfer CS,\n\t\tinfer V,\n\t\tinfer I,\n\t\tinfer DB extends AnyDatabaseProvider,\n\t\tinfer E extends EventSchemaConfig,\n\t\tinfer Q extends QueueSchemaConfig,\n\t\tany\n\t>\n\t\t? ActorWorkflowContext<S, CP, CS, V, I, DB, E, Q>\n\t\t: never;\n\nexport type WorkflowLoopContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n\nexport type WorkflowBranchContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n\nexport type WorkflowStepContextOf<AD extends AnyActorDefinition> =\n\tWorkflowContextOf<AD>;\n"]}
@@ -1,9 +1,9 @@
1
- import { E as EventSchemaConfig, Q as QueueSchemaConfig, h as RunContext } from '../config-C-a9vrke.cjs';
1
+ import { E as EventSchemaConfig, Q as QueueSchemaConfig, h as RunContext } from '../config-DU_xj4qZ.cjs';
2
2
  import { A as AnyDatabaseProvider } from '../config-CxjGYf4K.cjs';
3
3
  import { WorkflowErrorEvent } from '@rivetkit/workflow-engine';
4
4
  export { Loop, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowError, WorkflowErrorEvent } from '@rivetkit/workflow-engine';
5
- import { A as ActorWorkflowContext } from '../context-CA3r-pf2.cjs';
6
- export { W as WorkflowBranchContextOf, a as WorkflowContextOf, b as WorkflowLoopContextOf, c as WorkflowStepContextOf } from '../context-CA3r-pf2.cjs';
5
+ import { A as ActorWorkflowContext } from '../context-Dt_L55q8.cjs';
6
+ export { W as WorkflowBranchContextOf, a as WorkflowContextOf, b as WorkflowLoopContextOf, c as WorkflowStepContextOf } from '../context-Dt_L55q8.cjs';
7
7
  import 'zod/v4';
8
8
  import '@rivetkit/virtual-websocket';
9
9
  import '@rivetkit/rivetkit-wasm';
@@ -12,9 +12,8 @@ import 'pino';
12
12
  import '@standard-schema/spec';
13
13
  import 'hono';
14
14
  import '../utils.cjs';
15
- import '../utils-fwx3o3K9.cjs';
15
+ import '../utils-DVekpm4I.cjs';
16
16
  import 'hono/utils/http-status';
17
- import '../actor/errors.cjs';
18
17
 
19
18
  interface WorkflowOptions<TState, TConnParams, TConnState, TVars, TInput, TDatabase extends AnyDatabaseProvider, TEvents extends EventSchemaConfig = Record<never, never>, TQueues extends QueueSchemaConfig = Record<never, never>> {
20
19
  onError?: (ctx: RunContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase, TEvents, TQueues>, event: WorkflowErrorEvent) => void | Promise<void>;
@@ -1,9 +1,9 @@
1
- import { E as EventSchemaConfig, Q as QueueSchemaConfig, h as RunContext } from '../config-CvQUtDp9.js';
1
+ import { E as EventSchemaConfig, Q as QueueSchemaConfig, h as RunContext } from '../config-Ak1lv4gF.js';
2
2
  import { A as AnyDatabaseProvider } from '../config-CxjGYf4K.js';
3
3
  import { WorkflowErrorEvent } from '@rivetkit/workflow-engine';
4
4
  export { Loop, TryBlockCatchKind, TryBlockConfig, TryBlockFailure, TryBlockResult, TryStepCatchKind, TryStepConfig, TryStepFailure, TryStepResult, WorkflowError, WorkflowErrorEvent } from '@rivetkit/workflow-engine';
5
- import { A as ActorWorkflowContext } from '../context-A7R0bsZL.js';
6
- export { W as WorkflowBranchContextOf, a as WorkflowContextOf, b as WorkflowLoopContextOf, c as WorkflowStepContextOf } from '../context-A7R0bsZL.js';
5
+ import { A as ActorWorkflowContext } from '../context-DAAp4Lpg.js';
6
+ export { W as WorkflowBranchContextOf, a as WorkflowContextOf, b as WorkflowLoopContextOf, c as WorkflowStepContextOf } from '../context-DAAp4Lpg.js';
7
7
  import 'zod/v4';
8
8
  import '@rivetkit/virtual-websocket';
9
9
  import '@rivetkit/rivetkit-wasm';
@@ -12,9 +12,8 @@ import 'pino';
12
12
  import '@standard-schema/spec';
13
13
  import 'hono';
14
14
  import '../utils.js';
15
- import '../utils-fwx3o3K9.js';
15
+ import '../utils-DVekpm4I.js';
16
16
  import 'hono/utils/http-status';
17
- import '../actor/errors.js';
18
17
 
19
18
  interface WorkflowOptions<TState, TConnParams, TConnState, TVars, TInput, TDatabase extends AnyDatabaseProvider, TEvents extends EventSchemaConfig = Record<never, never>, TQueues extends QueueSchemaConfig = Record<never, never>> {
20
19
  onError?: (ctx: RunContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase, TEvents, TQueues>, event: WorkflowErrorEvent) => void | Promise<void>;
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  createWorkflowInspectorAdapter
3
- } from "../chunk-NATOT3ET.js";
3
+ } from "../chunk-VFIY6GWO.js";
4
4
  import {
5
5
  ACTOR_CONTEXT_INTERNAL_SYMBOL,
6
+ RAW_STATE_SYMBOL,
6
7
  RUN_FUNCTION_CONFIG_SYMBOL
7
- } from "../chunk-T6YVRM4K.js";
8
- import "../chunk-PGYEMIOE.js";
8
+ } from "../chunk-D5G75T7J.js";
9
+ import "../chunk-52TPEKEC.js";
9
10
  import {
10
11
  makeWorkflowKey,
11
12
  workflowStoragePrefix
12
13
  } from "../chunk-3YY5S6TV.js";
13
- import "../chunk-LDTT6WKJ.js";
14
+ import "../chunk-4LTY5TOO.js";
14
15
  import {
15
16
  stringifyError
16
- } from "../chunk-N2DQSJIW.js";
17
+ } from "../chunk-HERL2VQ2.js";
17
18
  import {
18
19
  RivetError
19
- } from "../chunk-K34B3OVG.js";
20
+ } from "../chunk-TMLOKTRB.js";
20
21
 
21
22
  // src/workflow/mod.ts
22
23
  import {
@@ -346,14 +347,14 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
346
347
  return await this.#wrapActive(
347
348
  () => this.#inner.step(
348
349
  nameOrConfig,
349
- () => this.#withActorAccess(run)
350
+ () => this.#withActorAccessAndStateRollback(run)
350
351
  )
351
352
  );
352
353
  }
353
354
  const stepConfig = nameOrConfig;
354
355
  const config = {
355
356
  ...stepConfig,
356
- run: () => this.#withActorAccess(stepConfig.run)
357
+ run: () => this.#withActorAccessAndStateRollback(stepConfig.run)
357
358
  };
358
359
  return await this.#wrapActive(() => this.#inner.step(config));
359
360
  }
@@ -365,14 +366,14 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
365
366
  return await this.#wrapActive(
366
367
  () => this.#inner.tryStep(
367
368
  nameOrConfig,
368
- () => this.#withActorAccess(run)
369
+ () => this.#withActorAccessAndStateRollback(run)
369
370
  )
370
371
  );
371
372
  }
372
373
  const stepConfig = nameOrConfig;
373
374
  const config = {
374
375
  ...stepConfig,
375
- run: () => this.#withActorAccess(stepConfig.run)
376
+ run: () => this.#withActorAccessAndStateRollback(stepConfig.run)
376
377
  };
377
378
  return await this.#wrapActive(() => this.#inner.tryStep(config));
378
379
  }
@@ -543,6 +544,30 @@ var ActorWorkflowContext = class _ActorWorkflowContext {
543
544
  }
544
545
  }
545
546
  }
547
+ async #withActorAccessAndStateRollback(run) {
548
+ let stateSnapshot = null;
549
+ try {
550
+ stateSnapshot = { state: this.#runCtx[RAW_STATE_SYMBOL]() };
551
+ } catch (error) {
552
+ this.#runCtx.log.debug({
553
+ msg: "failed to get state, likely due to being stateless workflow",
554
+ error
555
+ });
556
+ }
557
+ if (stateSnapshot) {
558
+ stateSnapshot.state = structuredClone(stateSnapshot.state);
559
+ }
560
+ const varsSnapshot = structuredClone(this.#runCtx.vars);
561
+ try {
562
+ return await this.#withActorAccess(run);
563
+ } catch (error) {
564
+ if (stateSnapshot) {
565
+ this.#runCtx.state = stateSnapshot.state;
566
+ }
567
+ this.#runCtx.vars = varsSnapshot;
568
+ throw error;
569
+ }
570
+ }
546
571
  #ensureActorAccess(feature) {
547
572
  if (!this.#allowActorAccess) {
548
573
  this.#guardViolation = true;