@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.4

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 (787) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +21 -0
  3. package/README.md +146 -2
  4. package/dist/cjs/ArtifactGc.d.ts +235 -0
  5. package/dist/cjs/ArtifactGc.d.ts.map +1 -0
  6. package/dist/cjs/ArtifactGc.js +183 -0
  7. package/dist/cjs/ArtifactGc.js.map +7 -0
  8. package/dist/cjs/ArtifactSync.d.ts +164 -0
  9. package/dist/cjs/ArtifactSync.d.ts.map +1 -0
  10. package/dist/cjs/ArtifactSync.js +144 -0
  11. package/dist/cjs/ArtifactSync.js.map +7 -0
  12. package/dist/cjs/CacheSync.d.ts +112 -0
  13. package/dist/cjs/CacheSync.d.ts.map +1 -0
  14. package/dist/cjs/CacheSync.js +64 -0
  15. package/dist/cjs/CacheSync.js.map +7 -0
  16. package/dist/cjs/DeferredClockFold.d.ts +354 -0
  17. package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
  18. package/dist/cjs/DeferredClockFold.js +335 -0
  19. package/dist/cjs/DeferredClockFold.js.map +7 -0
  20. package/dist/cjs/DisasterRecovery.d.ts +431 -0
  21. package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
  22. package/dist/cjs/DisasterRecovery.js +453 -0
  23. package/dist/cjs/DisasterRecovery.js.map +7 -0
  24. package/dist/cjs/DurableEngineState.d.ts +776 -0
  25. package/dist/cjs/DurableEngineState.d.ts.map +1 -0
  26. package/dist/cjs/DurableEngineState.js +1536 -0
  27. package/dist/cjs/DurableEngineState.js.map +7 -0
  28. package/dist/cjs/EngineStore.d.ts +158 -0
  29. package/dist/cjs/EngineStore.d.ts.map +1 -0
  30. package/dist/cjs/EngineStore.js +398 -0
  31. package/dist/cjs/EngineStore.js.map +7 -0
  32. package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
  33. package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
  34. package/dist/cjs/EngineStoreMetrics.js +135 -0
  35. package/dist/cjs/EngineStoreMetrics.js.map +7 -0
  36. package/dist/cjs/Errors.d.ts +22 -0
  37. package/dist/cjs/Errors.d.ts.map +1 -0
  38. package/dist/cjs/Errors.js +39 -0
  39. package/dist/cjs/Errors.js.map +7 -0
  40. package/dist/cjs/EventTypes.d.ts +27 -0
  41. package/dist/cjs/EventTypes.d.ts.map +1 -0
  42. package/dist/cjs/EventTypes.js +37 -0
  43. package/dist/cjs/EventTypes.js.map +7 -0
  44. package/dist/cjs/ExecutionFacts.d.ts +59 -0
  45. package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
  46. package/dist/cjs/ExecutionFacts.js +123 -0
  47. package/dist/cjs/ExecutionFacts.js.map +7 -0
  48. package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
  49. package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
  50. package/dist/cjs/ExecutionSnapshot.js +111 -0
  51. package/dist/cjs/ExecutionSnapshot.js.map +7 -0
  52. package/dist/cjs/Inconsistency.d.ts +154 -0
  53. package/dist/cjs/Inconsistency.d.ts.map +1 -0
  54. package/dist/cjs/Inconsistency.js +135 -0
  55. package/dist/cjs/Inconsistency.js.map +7 -0
  56. package/dist/cjs/Migrations.d.ts +56 -0
  57. package/dist/cjs/Migrations.d.ts.map +1 -0
  58. package/dist/cjs/Migrations.js +78 -0
  59. package/dist/cjs/Migrations.js.map +7 -0
  60. package/dist/cjs/OwnerIdentity.d.ts +91 -0
  61. package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
  62. package/dist/cjs/OwnerIdentity.js +65 -0
  63. package/dist/cjs/OwnerIdentity.js.map +7 -0
  64. package/dist/cjs/PlanInputStore.d.ts +110 -0
  65. package/dist/cjs/PlanInputStore.d.ts.map +1 -0
  66. package/dist/cjs/PlanInputStore.js +224 -0
  67. package/dist/cjs/PlanInputStore.js.map +7 -0
  68. package/dist/cjs/PlanMergeStore.d.ts +113 -0
  69. package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
  70. package/dist/cjs/PlanMergeStore.js +255 -0
  71. package/dist/cjs/PlanMergeStore.js.map +7 -0
  72. package/dist/cjs/PlanScheduler.d.ts +363 -0
  73. package/dist/cjs/PlanScheduler.d.ts.map +1 -0
  74. package/dist/cjs/PlanScheduler.js +1090 -0
  75. package/dist/cjs/PlanScheduler.js.map +7 -0
  76. package/dist/cjs/Reconciliation.d.ts +175 -0
  77. package/dist/cjs/Reconciliation.d.ts.map +1 -0
  78. package/dist/cjs/Reconciliation.js +119 -0
  79. package/dist/cjs/Reconciliation.js.map +7 -0
  80. package/dist/cjs/ReplayOnly.d.ts +91 -0
  81. package/dist/cjs/ReplayOnly.d.ts.map +1 -0
  82. package/dist/cjs/ReplayOnly.js +52 -0
  83. package/dist/cjs/ReplayOnly.js.map +7 -0
  84. package/dist/cjs/Retention.d.ts +113 -0
  85. package/dist/cjs/Retention.d.ts.map +1 -0
  86. package/dist/cjs/Retention.js +99 -0
  87. package/dist/cjs/Retention.js.map +7 -0
  88. package/dist/cjs/RunCatalogRead.d.ts +17 -0
  89. package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
  90. package/dist/cjs/RunCatalogRead.js +33 -0
  91. package/dist/cjs/RunCatalogRead.js.map +7 -0
  92. package/dist/cjs/RunChangeFeed.d.ts +75 -0
  93. package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
  94. package/dist/cjs/RunChangeFeed.js +96 -0
  95. package/dist/cjs/RunChangeFeed.js.map +7 -0
  96. package/dist/cjs/RunState.d.ts +116 -0
  97. package/dist/cjs/RunState.d.ts.map +1 -0
  98. package/dist/cjs/RunState.js +76 -0
  99. package/dist/cjs/RunState.js.map +7 -0
  100. package/dist/cjs/Selection.d.ts +495 -0
  101. package/dist/cjs/Selection.d.ts.map +1 -0
  102. package/dist/cjs/Selection.js +288 -0
  103. package/dist/cjs/Selection.js.map +7 -0
  104. package/dist/cjs/SelectionStore.d.ts +141 -0
  105. package/dist/cjs/SelectionStore.d.ts.map +1 -0
  106. package/dist/cjs/SelectionStore.js +229 -0
  107. package/dist/cjs/SelectionStore.js.map +7 -0
  108. package/dist/cjs/StepBoundary.d.ts +501 -0
  109. package/dist/cjs/StepBoundary.d.ts.map +1 -0
  110. package/dist/cjs/StepBoundary.js +619 -0
  111. package/dist/cjs/StepBoundary.js.map +7 -0
  112. package/dist/cjs/StepCacheFold.d.ts +148 -0
  113. package/dist/cjs/StepCacheFold.d.ts.map +1 -0
  114. package/dist/cjs/StepCacheFold.js +131 -0
  115. package/dist/cjs/StepCacheFold.js.map +7 -0
  116. package/dist/cjs/StepSandbox.d.ts +78 -0
  117. package/dist/cjs/StepSandbox.d.ts.map +1 -0
  118. package/dist/cjs/StepSandbox.js +75 -0
  119. package/dist/cjs/StepSandbox.js.map +7 -0
  120. package/dist/cjs/WakeBus.d.ts +116 -0
  121. package/dist/cjs/WakeBus.d.ts.map +1 -0
  122. package/dist/cjs/WakeBus.js +89 -0
  123. package/dist/cjs/WakeBus.js.map +7 -0
  124. package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
  125. package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
  126. package/dist/cjs/WorkspaceSandbox.js +711 -0
  127. package/dist/cjs/WorkspaceSandbox.js.map +7 -0
  128. package/dist/cjs/index.d.ts +157 -0
  129. package/dist/cjs/index.d.ts.map +1 -0
  130. package/dist/cjs/index.js +95 -0
  131. package/dist/cjs/index.js.map +7 -0
  132. package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
  133. package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
  134. package/dist/cjs/internal/ActionPersistence.js +1395 -0
  135. package/dist/cjs/internal/ActionPersistence.js.map +7 -0
  136. package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
  137. package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
  138. package/dist/cjs/internal/ArtifactRoots.js +89 -0
  139. package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
  140. package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
  141. package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
  142. package/dist/cjs/internal/AttemptAdmission.js +52 -0
  143. package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
  144. package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
  145. package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
  146. package/dist/cjs/internal/AttemptLifecycle.js +112 -0
  147. package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
  148. package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
  149. package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
  150. package/dist/cjs/internal/AttemptProbe.js +66 -0
  151. package/dist/cjs/internal/AttemptProbe.js.map +7 -0
  152. package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
  153. package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
  154. package/dist/cjs/internal/CacheAdmission.js +71 -0
  155. package/dist/cjs/internal/CacheAdmission.js.map +7 -0
  156. package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
  157. package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
  158. package/dist/cjs/internal/CacheAgeHistory.js +61 -0
  159. package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
  160. package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
  161. package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
  162. package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
  163. package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
  164. package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
  165. package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
  166. package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
  167. package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
  168. package/dist/cjs/internal/CachePublication.d.ts +97 -0
  169. package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
  170. package/dist/cjs/internal/CachePublication.js +80 -0
  171. package/dist/cjs/internal/CachePublication.js.map +7 -0
  172. package/dist/cjs/internal/CallFacts.d.ts +15 -0
  173. package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
  174. package/dist/cjs/internal/CallFacts.js +97 -0
  175. package/dist/cjs/internal/CallFacts.js.map +7 -0
  176. package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
  177. package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
  178. package/dist/cjs/internal/CopiedRecord.js +134 -0
  179. package/dist/cjs/internal/CopiedRecord.js.map +7 -0
  180. package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
  181. package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
  182. package/dist/cjs/internal/DeferredPersistence.js +270 -0
  183. package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
  184. package/dist/cjs/internal/EffectRecords.d.ts +92 -0
  185. package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
  186. package/dist/cjs/internal/EffectRecords.js +63 -0
  187. package/dist/cjs/internal/EffectRecords.js.map +7 -0
  188. package/dist/cjs/internal/EngineJj.d.ts +30 -0
  189. package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
  190. package/dist/cjs/internal/EngineJj.js +42 -0
  191. package/dist/cjs/internal/EngineJj.js.map +7 -0
  192. package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
  193. package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
  194. package/dist/cjs/internal/EngineStateSchema.js +58 -0
  195. package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
  196. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
  197. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  198. package/dist/cjs/internal/ExecutionSnapshotRead.js +201 -0
  199. package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
  200. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
  201. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  202. package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
  203. package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
  204. package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
  205. package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
  206. package/dist/cjs/internal/ExitEncoding.js +236 -0
  207. package/dist/cjs/internal/ExitEncoding.js.map +7 -0
  208. package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
  209. package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
  210. package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
  211. package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
  212. package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
  213. package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
  214. package/dist/cjs/internal/FileEnumeration.js +194 -0
  215. package/dist/cjs/internal/FileEnumeration.js.map +7 -0
  216. package/dist/cjs/internal/HostReflection.d.ts +80 -0
  217. package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
  218. package/dist/cjs/internal/HostReflection.js +43 -0
  219. package/dist/cjs/internal/HostReflection.js.map +7 -0
  220. package/dist/cjs/internal/JournalRecords.d.ts +325 -0
  221. package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
  222. package/dist/cjs/internal/JournalRecords.js +122 -0
  223. package/dist/cjs/internal/JournalRecords.js.map +7 -0
  224. package/dist/cjs/internal/NodeJournal.d.ts +157 -0
  225. package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
  226. package/dist/cjs/internal/NodeJournal.js +192 -0
  227. package/dist/cjs/internal/NodeJournal.js.map +7 -0
  228. package/dist/cjs/internal/Ordering.d.ts +14 -0
  229. package/dist/cjs/internal/Ordering.d.ts.map +1 -0
  230. package/dist/cjs/internal/Ordering.js +25 -0
  231. package/dist/cjs/internal/Ordering.js.map +7 -0
  232. package/dist/cjs/internal/PlanInputs.d.ts +14 -0
  233. package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
  234. package/dist/cjs/internal/PlanInputs.js +78 -0
  235. package/dist/cjs/internal/PlanInputs.js.map +7 -0
  236. package/dist/cjs/internal/PlanMerges.d.ts +178 -0
  237. package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
  238. package/dist/cjs/internal/PlanMerges.js +125 -0
  239. package/dist/cjs/internal/PlanMerges.js.map +7 -0
  240. package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
  241. package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
  242. package/dist/cjs/internal/ProvenanceSlot.js +53 -0
  243. package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
  244. package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
  245. package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
  246. package/dist/cjs/internal/ResultEnvelope.js +90 -0
  247. package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
  248. package/dist/cjs/internal/RetentionOps.d.ts +414 -0
  249. package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
  250. package/dist/cjs/internal/RetentionOps.js +354 -0
  251. package/dist/cjs/internal/RetentionOps.js.map +7 -0
  252. package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
  253. package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
  254. package/dist/cjs/internal/RunCatalogOps.js +85 -0
  255. package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
  256. package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
  257. package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
  258. package/dist/cjs/internal/RunCoordinator.js +123 -0
  259. package/dist/cjs/internal/RunCoordinator.js.map +7 -0
  260. package/dist/cjs/internal/RunDriver.d.ts +192 -0
  261. package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
  262. package/dist/cjs/internal/RunDriver.js +1586 -0
  263. package/dist/cjs/internal/RunDriver.js.map +7 -0
  264. package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
  265. package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
  266. package/dist/cjs/internal/RunLifecycle.js +63 -0
  267. package/dist/cjs/internal/RunLifecycle.js.map +7 -0
  268. package/dist/cjs/internal/RunListing.d.ts +78 -0
  269. package/dist/cjs/internal/RunListing.d.ts.map +1 -0
  270. package/dist/cjs/internal/RunListing.js +171 -0
  271. package/dist/cjs/internal/RunListing.js.map +7 -0
  272. package/dist/cjs/internal/RunListingError.d.ts +35 -0
  273. package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
  274. package/dist/cjs/internal/RunListingError.js +47 -0
  275. package/dist/cjs/internal/RunListingError.js.map +7 -0
  276. package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
  277. package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
  278. package/dist/cjs/internal/RuntimeGraph.js +180 -0
  279. package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
  280. package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
  281. package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
  282. package/dist/cjs/internal/SandboxedExecution.js +104 -0
  283. package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
  284. package/dist/cjs/internal/StateTransaction.d.ts +44 -0
  285. package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
  286. package/dist/cjs/internal/StateTransaction.js +52 -0
  287. package/dist/cjs/internal/StateTransaction.js.map +7 -0
  288. package/dist/cjs/internal/StepFacts.d.ts +14 -0
  289. package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
  290. package/dist/cjs/internal/StepFacts.js +58 -0
  291. package/dist/cjs/internal/StepFacts.js.map +7 -0
  292. package/dist/cjs/internal/TypedEvents.d.ts +14 -0
  293. package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
  294. package/dist/cjs/internal/TypedEvents.js +37 -0
  295. package/dist/cjs/internal/TypedEvents.js.map +7 -0
  296. package/dist/cjs/migrations/0001_initial.d.ts +17 -0
  297. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  298. package/dist/cjs/migrations/0001_initial.js +61 -0
  299. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  300. package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
  301. package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
  302. package/dist/cjs/migrations/0002_selection_store.js +56 -0
  303. package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
  304. package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
  305. package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
  306. package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
  307. package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
  308. package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
  309. package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
  310. package/dist/cjs/migrations/0004_plan_environment.js +56 -0
  311. package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
  312. package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
  313. package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
  314. package/dist/cjs/migrations/0005_plan_merges.js +82 -0
  315. package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
  316. package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
  317. package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
  318. package/dist/cjs/migrations/0006_execution_listing.js +101 -0
  319. package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
  320. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
  321. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  322. package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
  323. package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
  324. package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
  325. package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
  326. package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
  327. package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
  328. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
  329. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  330. package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
  331. package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
  332. package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
  333. package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
  334. package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
  335. package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
  336. package/dist/cjs/package.json +1 -0
  337. package/dist/cjs/test/TestStores.d.ts +89 -0
  338. package/dist/cjs/test/TestStores.d.ts.map +1 -0
  339. package/dist/cjs/test/TestStores.js +98 -0
  340. package/dist/cjs/test/TestStores.js.map +7 -0
  341. package/dist/esm/ArtifactGc.d.ts +235 -0
  342. package/dist/esm/ArtifactGc.d.ts.map +1 -0
  343. package/dist/esm/ArtifactGc.js +268 -0
  344. package/dist/esm/ArtifactGc.js.map +1 -0
  345. package/dist/esm/ArtifactSync.d.ts +164 -0
  346. package/dist/esm/ArtifactSync.d.ts.map +1 -0
  347. package/dist/esm/ArtifactSync.js +176 -0
  348. package/dist/esm/ArtifactSync.js.map +1 -0
  349. package/dist/esm/CacheSync.d.ts +112 -0
  350. package/dist/esm/CacheSync.d.ts.map +1 -0
  351. package/dist/esm/CacheSync.js +94 -0
  352. package/dist/esm/CacheSync.js.map +1 -0
  353. package/dist/esm/DeferredClockFold.d.ts +354 -0
  354. package/dist/esm/DeferredClockFold.d.ts.map +1 -0
  355. package/dist/esm/DeferredClockFold.js +472 -0
  356. package/dist/esm/DeferredClockFold.js.map +1 -0
  357. package/dist/esm/DisasterRecovery.d.ts +431 -0
  358. package/dist/esm/DisasterRecovery.d.ts.map +1 -0
  359. package/dist/esm/DisasterRecovery.js +523 -0
  360. package/dist/esm/DisasterRecovery.js.map +1 -0
  361. package/dist/esm/DurableEngineState.d.ts +776 -0
  362. package/dist/esm/DurableEngineState.d.ts.map +1 -0
  363. package/dist/esm/DurableEngineState.js +1648 -0
  364. package/dist/esm/DurableEngineState.js.map +1 -0
  365. package/dist/esm/EngineStore.d.ts +158 -0
  366. package/dist/esm/EngineStore.d.ts.map +1 -0
  367. package/dist/esm/EngineStore.js +403 -0
  368. package/dist/esm/EngineStore.js.map +1 -0
  369. package/dist/esm/EngineStoreMetrics.d.ts +276 -0
  370. package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
  371. package/dist/esm/EngineStoreMetrics.js +260 -0
  372. package/dist/esm/EngineStoreMetrics.js.map +1 -0
  373. package/dist/esm/Errors.d.ts +22 -0
  374. package/dist/esm/Errors.d.ts.map +1 -0
  375. package/dist/esm/Errors.js +22 -0
  376. package/dist/esm/Errors.js.map +1 -0
  377. package/dist/esm/EventTypes.d.ts +27 -0
  378. package/dist/esm/EventTypes.d.ts.map +1 -0
  379. package/dist/esm/EventTypes.js +27 -0
  380. package/dist/esm/EventTypes.js.map +1 -0
  381. package/dist/esm/ExecutionFacts.d.ts +59 -0
  382. package/dist/esm/ExecutionFacts.d.ts.map +1 -0
  383. package/dist/esm/ExecutionFacts.js +96 -0
  384. package/dist/esm/ExecutionFacts.js.map +1 -0
  385. package/dist/esm/ExecutionSnapshot.d.ts +117 -0
  386. package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
  387. package/dist/esm/ExecutionSnapshot.js +95 -0
  388. package/dist/esm/ExecutionSnapshot.js.map +1 -0
  389. package/dist/esm/Inconsistency.d.ts +154 -0
  390. package/dist/esm/Inconsistency.d.ts.map +1 -0
  391. package/dist/esm/Inconsistency.js +133 -0
  392. package/dist/esm/Inconsistency.js.map +1 -0
  393. package/dist/esm/Migrations.d.ts +56 -0
  394. package/dist/esm/Migrations.d.ts.map +1 -0
  395. package/dist/esm/Migrations.js +91 -0
  396. package/dist/esm/Migrations.js.map +1 -0
  397. package/dist/esm/OwnerIdentity.d.ts +91 -0
  398. package/dist/esm/OwnerIdentity.d.ts.map +1 -0
  399. package/dist/esm/OwnerIdentity.js +99 -0
  400. package/dist/esm/OwnerIdentity.js.map +1 -0
  401. package/dist/esm/PlanInputStore.d.ts +110 -0
  402. package/dist/esm/PlanInputStore.d.ts.map +1 -0
  403. package/dist/esm/PlanInputStore.js +207 -0
  404. package/dist/esm/PlanInputStore.js.map +1 -0
  405. package/dist/esm/PlanMergeStore.d.ts +113 -0
  406. package/dist/esm/PlanMergeStore.d.ts.map +1 -0
  407. package/dist/esm/PlanMergeStore.js +244 -0
  408. package/dist/esm/PlanMergeStore.js.map +1 -0
  409. package/dist/esm/PlanScheduler.d.ts +363 -0
  410. package/dist/esm/PlanScheduler.d.ts.map +1 -0
  411. package/dist/esm/PlanScheduler.js +1321 -0
  412. package/dist/esm/PlanScheduler.js.map +1 -0
  413. package/dist/esm/Reconciliation.d.ts +175 -0
  414. package/dist/esm/Reconciliation.d.ts.map +1 -0
  415. package/dist/esm/Reconciliation.js +175 -0
  416. package/dist/esm/Reconciliation.js.map +1 -0
  417. package/dist/esm/ReplayOnly.d.ts +91 -0
  418. package/dist/esm/ReplayOnly.d.ts.map +1 -0
  419. package/dist/esm/ReplayOnly.js +59 -0
  420. package/dist/esm/ReplayOnly.js.map +1 -0
  421. package/dist/esm/Retention.d.ts +113 -0
  422. package/dist/esm/Retention.d.ts.map +1 -0
  423. package/dist/esm/Retention.js +139 -0
  424. package/dist/esm/Retention.js.map +1 -0
  425. package/dist/esm/RunCatalogRead.d.ts +17 -0
  426. package/dist/esm/RunCatalogRead.d.ts.map +1 -0
  427. package/dist/esm/RunCatalogRead.js +17 -0
  428. package/dist/esm/RunCatalogRead.js.map +1 -0
  429. package/dist/esm/RunChangeFeed.d.ts +75 -0
  430. package/dist/esm/RunChangeFeed.d.ts.map +1 -0
  431. package/dist/esm/RunChangeFeed.js +81 -0
  432. package/dist/esm/RunChangeFeed.js.map +1 -0
  433. package/dist/esm/RunState.d.ts +116 -0
  434. package/dist/esm/RunState.d.ts.map +1 -0
  435. package/dist/esm/RunState.js +109 -0
  436. package/dist/esm/RunState.js.map +1 -0
  437. package/dist/esm/Selection.d.ts +495 -0
  438. package/dist/esm/Selection.d.ts.map +1 -0
  439. package/dist/esm/Selection.js +482 -0
  440. package/dist/esm/Selection.js.map +1 -0
  441. package/dist/esm/SelectionStore.d.ts +141 -0
  442. package/dist/esm/SelectionStore.d.ts.map +1 -0
  443. package/dist/esm/SelectionStore.js +215 -0
  444. package/dist/esm/SelectionStore.js.map +1 -0
  445. package/dist/esm/StepBoundary.d.ts +501 -0
  446. package/dist/esm/StepBoundary.d.ts.map +1 -0
  447. package/dist/esm/StepBoundary.js +919 -0
  448. package/dist/esm/StepBoundary.js.map +1 -0
  449. package/dist/esm/StepCacheFold.d.ts +148 -0
  450. package/dist/esm/StepCacheFold.d.ts.map +1 -0
  451. package/dist/esm/StepCacheFold.js +201 -0
  452. package/dist/esm/StepCacheFold.js.map +1 -0
  453. package/dist/esm/StepSandbox.d.ts +78 -0
  454. package/dist/esm/StepSandbox.d.ts.map +1 -0
  455. package/dist/esm/StepSandbox.js +70 -0
  456. package/dist/esm/StepSandbox.js.map +1 -0
  457. package/dist/esm/WakeBus.d.ts +116 -0
  458. package/dist/esm/WakeBus.d.ts.map +1 -0
  459. package/dist/esm/WakeBus.js +121 -0
  460. package/dist/esm/WakeBus.js.map +1 -0
  461. package/dist/esm/WorkspaceSandbox.d.ts +619 -0
  462. package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
  463. package/dist/esm/WorkspaceSandbox.js +985 -0
  464. package/dist/esm/WorkspaceSandbox.js.map +1 -0
  465. package/dist/esm/index.d.ts +157 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +157 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/internal/ActionPersistence.d.ts +276 -0
  470. package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
  471. package/dist/esm/internal/ActionPersistence.js +2306 -0
  472. package/dist/esm/internal/ActionPersistence.js.map +1 -0
  473. package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
  474. package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
  475. package/dist/esm/internal/ArtifactRoots.js +76 -0
  476. package/dist/esm/internal/ArtifactRoots.js.map +1 -0
  477. package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
  478. package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
  479. package/dist/esm/internal/AttemptAdmission.js +52 -0
  480. package/dist/esm/internal/AttemptAdmission.js.map +1 -0
  481. package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
  482. package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
  483. package/dist/esm/internal/AttemptLifecycle.js +104 -0
  484. package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
  485. package/dist/esm/internal/AttemptProbe.d.ts +53 -0
  486. package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
  487. package/dist/esm/internal/AttemptProbe.js +83 -0
  488. package/dist/esm/internal/AttemptProbe.js.map +1 -0
  489. package/dist/esm/internal/CacheAdmission.d.ts +79 -0
  490. package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
  491. package/dist/esm/internal/CacheAdmission.js +72 -0
  492. package/dist/esm/internal/CacheAdmission.js.map +1 -0
  493. package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
  494. package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
  495. package/dist/esm/internal/CacheAgeHistory.js +49 -0
  496. package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
  497. package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
  498. package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
  499. package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
  500. package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
  501. package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
  502. package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
  503. package/dist/esm/internal/CacheOutputPolicy.js +73 -0
  504. package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
  505. package/dist/esm/internal/CachePublication.d.ts +97 -0
  506. package/dist/esm/internal/CachePublication.d.ts.map +1 -0
  507. package/dist/esm/internal/CachePublication.js +116 -0
  508. package/dist/esm/internal/CachePublication.js.map +1 -0
  509. package/dist/esm/internal/CallFacts.d.ts +15 -0
  510. package/dist/esm/internal/CallFacts.d.ts.map +1 -0
  511. package/dist/esm/internal/CallFacts.js +83 -0
  512. package/dist/esm/internal/CallFacts.js.map +1 -0
  513. package/dist/esm/internal/CopiedRecord.d.ts +61 -0
  514. package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
  515. package/dist/esm/internal/CopiedRecord.js +165 -0
  516. package/dist/esm/internal/CopiedRecord.js.map +1 -0
  517. package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
  518. package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
  519. package/dist/esm/internal/DeferredPersistence.js +240 -0
  520. package/dist/esm/internal/DeferredPersistence.js.map +1 -0
  521. package/dist/esm/internal/EffectRecords.d.ts +92 -0
  522. package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
  523. package/dist/esm/internal/EffectRecords.js +94 -0
  524. package/dist/esm/internal/EffectRecords.js.map +1 -0
  525. package/dist/esm/internal/EngineJj.d.ts +30 -0
  526. package/dist/esm/internal/EngineJj.d.ts.map +1 -0
  527. package/dist/esm/internal/EngineJj.js +29 -0
  528. package/dist/esm/internal/EngineJj.js.map +1 -0
  529. package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
  530. package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
  531. package/dist/esm/internal/EngineStateSchema.js +53 -0
  532. package/dist/esm/internal/EngineStateSchema.js.map +1 -0
  533. package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
  534. package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  535. package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
  536. package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
  537. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
  538. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  539. package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
  540. package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
  541. package/dist/esm/internal/ExitEncoding.d.ts +180 -0
  542. package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
  543. package/dist/esm/internal/ExitEncoding.js +361 -0
  544. package/dist/esm/internal/ExitEncoding.js.map +1 -0
  545. package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
  546. package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
  547. package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
  548. package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
  549. package/dist/esm/internal/FileEnumeration.d.ts +127 -0
  550. package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
  551. package/dist/esm/internal/FileEnumeration.js +236 -0
  552. package/dist/esm/internal/FileEnumeration.js.map +1 -0
  553. package/dist/esm/internal/HostReflection.d.ts +80 -0
  554. package/dist/esm/internal/HostReflection.d.ts.map +1 -0
  555. package/dist/esm/internal/HostReflection.js +98 -0
  556. package/dist/esm/internal/HostReflection.js.map +1 -0
  557. package/dist/esm/internal/JournalRecords.d.ts +325 -0
  558. package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
  559. package/dist/esm/internal/JournalRecords.js +306 -0
  560. package/dist/esm/internal/JournalRecords.js.map +1 -0
  561. package/dist/esm/internal/NodeJournal.d.ts +157 -0
  562. package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
  563. package/dist/esm/internal/NodeJournal.js +298 -0
  564. package/dist/esm/internal/NodeJournal.js.map +1 -0
  565. package/dist/esm/internal/Ordering.d.ts +14 -0
  566. package/dist/esm/internal/Ordering.d.ts.map +1 -0
  567. package/dist/esm/internal/Ordering.js +14 -0
  568. package/dist/esm/internal/Ordering.js.map +1 -0
  569. package/dist/esm/internal/PlanInputs.d.ts +14 -0
  570. package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
  571. package/dist/esm/internal/PlanInputs.js +57 -0
  572. package/dist/esm/internal/PlanInputs.js.map +1 -0
  573. package/dist/esm/internal/PlanMerges.d.ts +178 -0
  574. package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
  575. package/dist/esm/internal/PlanMerges.js +113 -0
  576. package/dist/esm/internal/PlanMerges.js.map +1 -0
  577. package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
  578. package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
  579. package/dist/esm/internal/ProvenanceSlot.js +39 -0
  580. package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
  581. package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
  582. package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
  583. package/dist/esm/internal/ResultEnvelope.js +83 -0
  584. package/dist/esm/internal/ResultEnvelope.js.map +1 -0
  585. package/dist/esm/internal/RetentionOps.d.ts +414 -0
  586. package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
  587. package/dist/esm/internal/RetentionOps.js +576 -0
  588. package/dist/esm/internal/RetentionOps.js.map +1 -0
  589. package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
  590. package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
  591. package/dist/esm/internal/RunCatalogOps.js +120 -0
  592. package/dist/esm/internal/RunCatalogOps.js.map +1 -0
  593. package/dist/esm/internal/RunCoordinator.d.ts +78 -0
  594. package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
  595. package/dist/esm/internal/RunCoordinator.js +115 -0
  596. package/dist/esm/internal/RunCoordinator.js.map +1 -0
  597. package/dist/esm/internal/RunDriver.d.ts +192 -0
  598. package/dist/esm/internal/RunDriver.d.ts.map +1 -0
  599. package/dist/esm/internal/RunDriver.js +2334 -0
  600. package/dist/esm/internal/RunDriver.js.map +1 -0
  601. package/dist/esm/internal/RunLifecycle.d.ts +22 -0
  602. package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
  603. package/dist/esm/internal/RunLifecycle.js +49 -0
  604. package/dist/esm/internal/RunLifecycle.js.map +1 -0
  605. package/dist/esm/internal/RunListing.d.ts +78 -0
  606. package/dist/esm/internal/RunListing.d.ts.map +1 -0
  607. package/dist/esm/internal/RunListing.js +146 -0
  608. package/dist/esm/internal/RunListing.js.map +1 -0
  609. package/dist/esm/internal/RunListingError.d.ts +35 -0
  610. package/dist/esm/internal/RunListingError.d.ts.map +1 -0
  611. package/dist/esm/internal/RunListingError.js +27 -0
  612. package/dist/esm/internal/RunListingError.js.map +1 -0
  613. package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
  614. package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
  615. package/dist/esm/internal/RuntimeGraph.js +182 -0
  616. package/dist/esm/internal/RuntimeGraph.js.map +1 -0
  617. package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
  618. package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
  619. package/dist/esm/internal/SandboxedExecution.js +107 -0
  620. package/dist/esm/internal/SandboxedExecution.js.map +1 -0
  621. package/dist/esm/internal/StateTransaction.d.ts +44 -0
  622. package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
  623. package/dist/esm/internal/StateTransaction.js +54 -0
  624. package/dist/esm/internal/StateTransaction.js.map +1 -0
  625. package/dist/esm/internal/StepFacts.d.ts +14 -0
  626. package/dist/esm/internal/StepFacts.d.ts.map +1 -0
  627. package/dist/esm/internal/StepFacts.js +35 -0
  628. package/dist/esm/internal/StepFacts.js.map +1 -0
  629. package/dist/esm/internal/TypedEvents.d.ts +14 -0
  630. package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
  631. package/dist/esm/internal/TypedEvents.js +14 -0
  632. package/dist/esm/internal/TypedEvents.js.map +1 -0
  633. package/dist/esm/migrations/0001_initial.d.ts +17 -0
  634. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  635. package/dist/esm/migrations/0001_initial.js +41 -0
  636. package/dist/esm/migrations/0001_initial.js.map +1 -0
  637. package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
  638. package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
  639. package/dist/esm/migrations/0002_selection_store.js +34 -0
  640. package/dist/esm/migrations/0002_selection_store.js.map +1 -0
  641. package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
  642. package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
  643. package/dist/esm/migrations/0003_plan_inputs.js +70 -0
  644. package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
  645. package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
  646. package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
  647. package/dist/esm/migrations/0004_plan_environment.js +33 -0
  648. package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
  649. package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
  650. package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
  651. package/dist/esm/migrations/0005_plan_merges.js +59 -0
  652. package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
  653. package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
  654. package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
  655. package/dist/esm/migrations/0006_execution_listing.js +81 -0
  656. package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
  657. package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
  658. package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  659. package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
  660. package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
  661. package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
  662. package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
  663. package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
  664. package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
  665. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
  666. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  667. package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
  668. package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
  669. package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
  670. package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
  671. package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
  672. package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
  673. package/dist/esm/test/TestStores.d.ts +89 -0
  674. package/dist/esm/test/TestStores.d.ts.map +1 -0
  675. package/dist/esm/test/TestStores.js +103 -0
  676. package/dist/esm/test/TestStores.js.map +1 -0
  677. package/docs/README.md +113 -0
  678. package/docs/api.md +1494 -0
  679. package/docs/concepts/attempts-and-replay.md +149 -0
  680. package/docs/concepts/cache-admission.md +265 -0
  681. package/docs/concepts/call-facts.md +86 -0
  682. package/docs/concepts/durable-waits.md +175 -0
  683. package/docs/concepts/execution-facts.md +90 -0
  684. package/docs/concepts/ownership-and-fencing.md +128 -0
  685. package/docs/concepts/step-boundaries.md +148 -0
  686. package/docs/concepts/workspace-transactions.md +199 -0
  687. package/docs/event-types.md +14 -0
  688. package/docs/guides/back-up-and-restore.md +164 -0
  689. package/docs/guides/collect-unreferenced-artifacts.md +128 -0
  690. package/docs/guides/compose-a-durable-engine.md +146 -0
  691. package/docs/guides/coordinate-two-processes.md +120 -0
  692. package/docs/guides/defer-work-with-selection.md +171 -0
  693. package/docs/guides/delete-old-run-history.md +154 -0
  694. package/docs/guides/drive-a-plan.md +314 -0
  695. package/docs/guides/observe-engine-metrics.md +98 -0
  696. package/docs/guides/observe-executions.md +187 -0
  697. package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
  698. package/docs/guides/share-a-cache-across-machines.md +134 -0
  699. package/docs/guides/testing.md +123 -0
  700. package/docs/installation.md +102 -0
  701. package/docs/quickstart.md +215 -0
  702. package/docs/troubleshooting.md +347 -0
  703. package/package.json +438 -3
  704. package/src/ArtifactGc.ts +408 -0
  705. package/src/ArtifactSync.ts +278 -0
  706. package/src/CacheSync.ts +131 -0
  707. package/src/DeferredClockFold.ts +586 -0
  708. package/src/DisasterRecovery.ts +888 -0
  709. package/src/DurableEngineState.ts +2656 -0
  710. package/src/EngineStore.ts +656 -0
  711. package/src/EngineStoreMetrics.ts +331 -0
  712. package/src/Errors.ts +28 -0
  713. package/src/EventTypes.ts +27 -0
  714. package/src/ExecutionFacts.ts +125 -0
  715. package/src/ExecutionSnapshot.ts +186 -0
  716. package/src/Inconsistency.ts +253 -0
  717. package/src/Migrations.ts +95 -0
  718. package/src/OwnerIdentity.ts +125 -0
  719. package/src/PlanInputStore.ts +292 -0
  720. package/src/PlanMergeStore.ts +330 -0
  721. package/src/PlanScheduler.ts +1806 -0
  722. package/src/Reconciliation.ts +224 -0
  723. package/src/ReplayOnly.ts +95 -0
  724. package/src/Retention.ts +214 -0
  725. package/src/RunCatalogRead.ts +27 -0
  726. package/src/RunChangeFeed.ts +125 -0
  727. package/src/RunState.ts +137 -0
  728. package/src/Selection.ts +683 -0
  729. package/src/SelectionStore.ts +353 -0
  730. package/src/StepBoundary.ts +1165 -0
  731. package/src/StepCacheFold.ts +244 -0
  732. package/src/StepSandbox.ts +110 -0
  733. package/src/WakeBus.ts +167 -0
  734. package/src/WorkspaceSandbox.ts +1604 -0
  735. package/src/index.ts +185 -0
  736. package/src/internal/ActionPersistence.ts +2687 -0
  737. package/src/internal/ArtifactRoots.ts +92 -0
  738. package/src/internal/AttemptAdmission.ts +76 -0
  739. package/src/internal/AttemptLifecycle.ts +163 -0
  740. package/src/internal/AttemptProbe.ts +90 -0
  741. package/src/internal/CacheAdmission.ts +133 -0
  742. package/src/internal/CacheAgeHistory.ts +58 -0
  743. package/src/internal/CacheAgeVerdicts.ts +61 -0
  744. package/src/internal/CacheOutputPolicy.ts +82 -0
  745. package/src/internal/CachePublication.ts +153 -0
  746. package/src/internal/CallFacts.ts +87 -0
  747. package/src/internal/CopiedRecord.ts +201 -0
  748. package/src/internal/DeferredPersistence.ts +459 -0
  749. package/src/internal/EffectRecords.ts +136 -0
  750. package/src/internal/EngineJj.ts +30 -0
  751. package/src/internal/EngineStateSchema.ts +92 -0
  752. package/src/internal/ExecutionSnapshotRead.ts +300 -0
  753. package/src/internal/ExecutionSnapshotRelations.ts +121 -0
  754. package/src/internal/ExitEncoding.ts +453 -0
  755. package/src/internal/FileBoundarySnapshot.ts +39 -0
  756. package/src/internal/FileEnumeration.ts +334 -0
  757. package/src/internal/HostReflection.ts +128 -0
  758. package/src/internal/JournalRecords.ts +396 -0
  759. package/src/internal/NodeJournal.ts +340 -0
  760. package/src/internal/Ordering.ts +14 -0
  761. package/src/internal/PlanInputs.ts +62 -0
  762. package/src/internal/PlanMerges.ts +123 -0
  763. package/src/internal/ProvenanceSlot.ts +52 -0
  764. package/src/internal/ResultEnvelope.ts +118 -0
  765. package/src/internal/RetentionOps.ts +865 -0
  766. package/src/internal/RunCatalogOps.ts +174 -0
  767. package/src/internal/RunCoordinator.ts +215 -0
  768. package/src/internal/RunDriver.ts +3154 -0
  769. package/src/internal/RunLifecycle.ts +53 -0
  770. package/src/internal/RunListing.ts +210 -0
  771. package/src/internal/RunListingError.ts +37 -0
  772. package/src/internal/RuntimeGraph.ts +253 -0
  773. package/src/internal/SandboxedExecution.ts +165 -0
  774. package/src/internal/StateTransaction.ts +71 -0
  775. package/src/internal/StepFacts.ts +36 -0
  776. package/src/internal/TypedEvents.ts +29 -0
  777. package/src/migrations/0001_initial.ts +51 -0
  778. package/src/migrations/0002_selection_store.ts +38 -0
  779. package/src/migrations/0003_plan_inputs.ts +75 -0
  780. package/src/migrations/0004_plan_environment.ts +34 -0
  781. package/src/migrations/0005_plan_merges.ts +60 -0
  782. package/src/migrations/0006_execution_listing.ts +86 -0
  783. package/src/migrations/0007_run_parent_sequence.ts +19 -0
  784. package/src/migrations/0008_deferred_consumption.ts +27 -0
  785. package/src/migrations/0009_deferred_clock_facts.ts +163 -0
  786. package/src/migrations/0010_pending_cancellation.ts +20 -0
  787. package/src/test/TestStores.ts +145 -0
@@ -0,0 +1,656 @@
1
+ /**
2
+ * Durable `FlowEngine.Encoded` composition over `@smthrs/journal`.
3
+ *
4
+ * Governing designs: `docs/concepts/ownership-and-fencing.md`,
5
+ * `docs/concepts/attempts-and-replay.md`, and
6
+ * `packages/smithers/flows/flow/docs/concepts/flows-and-actions.md`.
7
+ *
8
+ * @since 0.1.0
9
+ */
10
+
11
+ import * as CapabilitySet from "@smthrs/capability/CapabilitySet"
12
+ import { Sha256 } from "@smthrs/crypto"
13
+ import type { DurableWriter } from "@smthrs/database/DurableWriter"
14
+ import { FlowEngine } from "@smthrs/engine"
15
+ import { Action, Flow, FlowRuntime } from "@smthrs/flow"
16
+ import { FileBoundary } from "@smthrs/flow/FileBoundary"
17
+ import { Journal } from "@smthrs/journal"
18
+ import { Jj } from "@smthrs/kernel"
19
+ import { AttemptStore, RunStore } from "@smthrs/run-store"
20
+ import type { Ownership } from "@smthrs/run-store"
21
+ import { CacheStore } from "@smthrs/step-cache"
22
+ import type * as Crypto from "effect/Crypto"
23
+ import * as Deferred from "effect/Deferred"
24
+ import * as Effect from "effect/Effect"
25
+ import * as Layer from "effect/Layer"
26
+ import * as Option from "effect/Option"
27
+ import type * as Schedule from "effect/Schedule"
28
+ import * as Schema from "effect/Schema"
29
+ import type * as Scope from "effect/Scope"
30
+ import * as DurableEngineState from "./DurableEngineState.ts"
31
+ import * as ActionPersistence from "./internal/ActionPersistence.ts"
32
+ import * as AttemptAdmission from "./internal/AttemptAdmission.ts"
33
+ import * as AttemptProbe from "./internal/AttemptProbe.ts"
34
+ import * as CacheAgeVerdicts from "./internal/CacheAgeVerdicts.ts"
35
+ import * as DeferredPersistence from "./internal/DeferredPersistence.ts"
36
+ import * as EngineJj from "./internal/EngineJj.ts"
37
+ import * as NodeJournal from "./internal/NodeJournal.ts"
38
+ import * as RunDriver from "./internal/RunDriver.ts"
39
+ import * as OwnerIdentity from "./OwnerIdentity.ts"
40
+ import * as ReplayOnly from "./ReplayOnly.ts"
41
+ import { RunState } from "./RunState.ts"
42
+ import * as StepBoundary from "./StepBoundary.ts"
43
+ import * as StepSandbox from "./StepSandbox.ts"
44
+ import * as WakeBus from "./WakeBus.ts"
45
+ import * as WorkspaceSandbox from "./WorkspaceSandbox.ts"
46
+
47
+ /**
48
+ * Why the engine itself asked a parked execution to resume, as reported to
49
+ * {@link Options.requestResume}.
50
+ *
51
+ * @since 1.0.0-rc.0
52
+ * @category models
53
+ */
54
+ export type RequestedResumeReason = RunDriver.RequestedResumeReason
55
+
56
+ /**
57
+ * Engine-store construction options.
58
+ *
59
+ * @since 0.1.0
60
+ * @category models
61
+ */
62
+ export interface Options {
63
+ readonly owner: {
64
+ readonly hostId: string
65
+ }
66
+ readonly journalSource: string
67
+ /**
68
+ * The directory a declaration path is recorded relative to.
69
+ *
70
+ * A node record can carry where its action was declared, and the path the
71
+ * runtime reports is absolute. A journal is read on machines that did not
72
+ * write it, so the absolute form is at best noise and at worst an
73
+ * operator's home directory published into a run's history: the writer
74
+ * strips this prefix, and omits the path entirely when it cannot.
75
+ *
76
+ * Defaults to the process working directory where there is one. A host
77
+ * without a filesystem identity — a worker, a browser — passes nothing and
78
+ * records no declaration paths at all, which is the honest answer.
79
+ */
80
+ readonly declarationRoot?: string | undefined
81
+ /**
82
+ * The revision of the tree this host read its flows out of.
83
+ *
84
+ * A node record can carry where its action was declared, and a path with a
85
+ * line does not say which bytes were at that line: the tree moves, and the
86
+ * same path after an edit is a different file. A host that can name the
87
+ * revision it loaded from declares it here, and every recorded graph page
88
+ * carries it, so a reader can open that file AT that revision.
89
+ *
90
+ * Absent by default, which is the honest answer for a host served out of
91
+ * no version control or one that cannot name a revision holding what it
92
+ * loaded. A reader with nothing shows no code rather than code it cannot
93
+ * bind (D-068).
94
+ *
95
+ * A host that only learns the answer AFTER this store is built declares a
96
+ * reader instead of a string, and it is asked once per recorded page. The
97
+ * native host is one: the modules whose sites these records carry are read
98
+ * during registration, which runs after this layer, so the revision that
99
+ * describes them is not known when the store is composed. An answer that
100
+ * is not a non-empty string records nothing, exactly as `undefined` does.
101
+ */
102
+ readonly sourceRevision?: string | (() => string | undefined) | undefined
103
+ /**
104
+ * Liveness arbitration consulted before this store steals a run whose lease
105
+ * has expired. Answering `true` refuses the takeover.
106
+ *
107
+ * Optional. The default is `Ownership.leaseLiveness(heartbeatStaleAfter)`:
108
+ * the owner is alive while its persisted heartbeat is younger than the
109
+ * staleness cutoff, and gone once it is not. That is the weakest honest
110
+ * answer and the one every host can give, so a composition that supplies
111
+ * nothing still reclaims the runs of an owner killed with SIGKILL — the
112
+ * steal it admits carries `lease-expired` evidence, which the run store
113
+ * verifies against the row in the same write.
114
+ *
115
+ * A deployment that can say more supplies its own check and refuses the
116
+ * takeover for longer: `Ownership.sameHostIncarnation` is the guard a local
117
+ * `process.kill(pid, 0)` probe applies before reading `owner.pid`.
118
+ */
119
+ readonly isAlive?: Ownership.LivenessCheck | undefined
120
+ /** Host routing, checked before claiming a run (including automatic wakes). */
121
+ readonly canExecute?: ((row: RunStore.RunRow) => Effect.Effect<boolean>) | undefined
122
+ /**
123
+ * Read-only host admission fence, rechecked in the native activation transaction.
124
+ * Use captured native reads and synchronous local probes only; external I/O
125
+ * and module loading belong in `canExecute`.
126
+ */
127
+ readonly canActivate?: ((row: RunStore.RunRow) => Effect.Effect<boolean>) | undefined
128
+ /**
129
+ * Records, for a host that keeps one, that this engine has asked a parked
130
+ * execution to resume: a durable clock fired, a durable deferred completed,
131
+ * or a child settled under a parent that parked on it.
132
+ *
133
+ * A host that refuses to re-enter a parked run nobody asked for — the
134
+ * control plane's executor does — reads the record to tell those wakes from
135
+ * its own heartbeat sweep. Without it a run that slept never settled.
136
+ *
137
+ * Optional; a composition with no such host leaves it undefined.
138
+ *
139
+ * @since 1.0.0-rc.0
140
+ */
141
+ readonly requestResume?:
142
+ | ((executionId: string, reason: RequestedResumeReason) => Effect.Effect<void>)
143
+ | undefined
144
+ /**
145
+ * Redispatch policy for a durable clock whose fire failed. Defaults to
146
+ * {@link DeferredPersistence.defaultFireRetryPolicy} — exponential from
147
+ * 100ms, capped at 30s, forever. Same shape as the engine's
148
+ * `suspendedRetryPolicy` option: the built-in behavior is the default, and
149
+ * a deployment that wants a different backoff supplies one here rather than
150
+ * patching the store.
151
+ */
152
+ readonly clockFireRetryPolicy?: Schedule.Schedule<unknown, unknown> | undefined
153
+ }
154
+
155
+ type PublicRequirements =
156
+ | AttemptStore.AttemptStore
157
+ | CacheStore.CacheStore
158
+ // DECIDED (2026-08-11, pending review): hashing is a construction-time
159
+ // requirement of this composition rather than a per-call one.
160
+ // The run driver derives each trampoline round's execution id from
161
+ // (lineage, ordinal) with the injected SHA-256, on the coordinator's own
162
+ // fiber rather than a caller's, so hashing is a construction-time
163
+ // requirement of the composition (`packages/smithers/flows/engine/docs/api.md`).
164
+ | Crypto.Crypto
165
+ | DurableEngineState.DurableEngineState
166
+ | DurableWriter
167
+ | Journal.Journal
168
+ | Jj.Jj
169
+ | OwnerIdentity.OwnerIdentity
170
+ | RunStore.RunStore
171
+ | Scope.Scope
172
+ | StepBoundary.Service
173
+
174
+ type Requirements = PublicRequirements | EngineJj.EngineJj
175
+
176
+ const isBoundaryMetadata = Schema.is(FileBoundary)
177
+
178
+ /**
179
+ * Constructs the production encoded composition.
180
+ *
181
+ * Registrations and active fibers are scoped in memory. Run identity, encoded
182
+ * payload, results, deferred completions, clocks, actions, and ownership
183
+ * are persisted by the supplied layers. Supply the same DurableWriter used
184
+ * by the journal and run store so cancellation can retain complete failures.
185
+ * The capability ceiling current at construction is the engine's host
186
+ * ceiling: every run it admits records it, and every join, poll, and resume
187
+ * is compared under it, whichever context later calls the service.
188
+ *
189
+ * @since 0.1.0
190
+ * @category constructors
191
+ */
192
+ const makeWithEngineJj = (
193
+ options: Options
194
+ ): Effect.Effect<FlowRuntime.FlowRuntime["Service"], never, Requirements> =>
195
+ Effect.gen(function*() {
196
+ const host = yield* CapabilitySet.current
197
+ const ownerIdentity = yield* OwnerIdentity.OwnerIdentity
198
+ const owner = yield* ownerIdentity.ownerId(options.owner.hostId)
199
+ // One admission mutex per incarnation, shared by every dispatch this
200
+ // store drives: `ActionPersistence.make` runs per dispatch below, so a
201
+ // per-make default would never contend and the same-key exclusion the
202
+ // adoption evidence rests on (issues #102, #103) would silently vanish.
203
+ const admission = AttemptAdmission.makeUnsafe()
204
+ // Run instances own the projection's lifetime, including nested actions.
205
+ // A resumed instance rebuilds it without retaining completed runs here.
206
+ const ageVerdicts = new WeakMap<FlowRuntime.FlowInstance["Service"], ReturnType<typeof CacheAgeVerdicts.make>>()
207
+ const attemptStore = yield* AttemptStore.AttemptStore
208
+ const cacheStore = yield* CacheStore.CacheStore
209
+ const journal = yield* Journal.Journal
210
+ const declarationRoot = NodeJournal.hostRoot(options.declarationRoot)
211
+ /*
212
+ * Stated by the host or not at all; nothing here derives a revision. A
213
+ * reader is asked where the record is written rather than here, because a
214
+ * host that learns its revision after this layer builds would otherwise
215
+ * be captured before it knows the answer.
216
+ */
217
+ const declaredRevision = options.sourceRevision
218
+ const sourceRevision = (): string | undefined => {
219
+ const answer = typeof declaredRevision === "function" ? declaredRevision() : declaredRevision
220
+ return typeof answer === "string" && answer.length > 0 ? answer : undefined
221
+ }
222
+ const actionJj = yield* Jj.Jj
223
+ const engineJj = yield* EngineJj.EngineJj
224
+ const runStore = yield* RunStore.RunStore
225
+ const forkOrigins = new WeakMap<FlowRuntime.FlowInstance["Service"], ReadonlyArray<string>>()
226
+ const keyOrigins = Effect.fnUntraced(function*(instance: FlowRuntime.FlowInstance["Service"]) {
227
+ const cached = forkOrigins.get(instance)
228
+ if (cached !== undefined) return cached
229
+ const row = yield* runStore.get(instance.executionId).pipe(Effect.orDie)
230
+ const state = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(RunState))(row.stateJson).pipe(Effect.orDie)
231
+ const origins = state.forkKeyRunIds ?? []
232
+ forkOrigins.set(instance, origins)
233
+ return origins
234
+ })
235
+ const stepBoundary = yield* StepBoundary.StepBoundary
236
+ /**
237
+ * Both halves of the isolated-execution lane are OPTIONAL and resolved
238
+ * here, at composition time, for the same reason every service above is:
239
+ * `actionExecute` runs on the engine's fiber, which does not carry the
240
+ * store's layer context, so anything the dispatch needs has to be captured
241
+ * now and re-provided below. A composition without a sandbox keeps the
242
+ * pre-existing behaviour — the body runs against the host directly — and
243
+ * one without a dispatcher journals what a transaction queued without
244
+ * sending it.
245
+ */
246
+ const workspaceSandbox = yield* Effect.serviceOption(WorkspaceSandbox.WorkspaceSandbox)
247
+ const stepSandbox = yield* Effect.serviceOption(StepSandbox.StepSandbox)
248
+ const effectDispatcher = yield* Effect.serviceOption(WorkspaceSandbox.EffectDispatcher)
249
+ // Resolved at composition like the sandboxes: a verifier composes an
250
+ // engine that replays and executes nothing (`ReplayOnly`).
251
+ const replayOnly = Option.getOrUndefined(yield* Effect.serviceOption(ReplayOnly.ReplayOnly))
252
+ const engineState = yield* DurableEngineState.DurableEngineState
253
+ const attemptSurvivors = engineState.attemptSurvivors
254
+ /**
255
+ * Resolved like the sandbox lane above: OPTIONAL, at composition time. A
256
+ * host that provides `WakeBus.layer` shares one bus between this engine
257
+ * and its own wake sources; a composition given none builds a private
258
+ * bus, which is complete for the in-process seam because every wake
259
+ * source below (driver, deferred persistence) publishes through it.
260
+ */
261
+ const providedWakeBus = yield* Effect.serviceOption(WakeBus.WakeBus)
262
+ const wakeBus = Option.getOrElse(providedWakeBus, WakeBus.makeUnsafe)
263
+
264
+ const engine = yield* Deferred.make<FlowRuntime.FlowRuntime["Service"]>()
265
+ const driver = yield* RunDriver.make({
266
+ owner,
267
+ journalSource: options.journalSource,
268
+ isAlive: options.isAlive,
269
+ canExecute: options.canExecute,
270
+ canActivate: options.canActivate,
271
+ requestResume: options.requestResume,
272
+ engine: Deferred.await(engine),
273
+ wakeBus
274
+ })
275
+ const deferred = yield* DeferredPersistence.make({
276
+ owner,
277
+ journalSource: options.journalSource,
278
+ scheduleResume: (flowName, executionId, reason, sourceId) =>
279
+ driver.scheduleResume(flowName, executionId, reason, sourceId),
280
+ fireRetryPolicy: options.clockFireRetryPolicy
281
+ })
282
+
283
+ const actionExecute = Effect.fn("FlowEngine.actionExecute")(function*(input: FlowEngine.ActionExecuteOptions) {
284
+ const parent = yield* FlowRuntime.FlowInstance
285
+ let cacheAgeVerdict = ageVerdicts.get(parent)
286
+ if (cacheAgeVerdict === undefined) {
287
+ cacheAgeVerdict = CacheAgeVerdicts.make(parent.executionId)
288
+ ageVerdicts.set(parent, cacheAgeVerdict)
289
+ }
290
+ yield* Effect.annotateCurrentSpan({
291
+ runId: parent.executionId,
292
+ action: input.action.name,
293
+ // `stepKey`, never `key`. `@smthrs/journal`'s redaction replaces the
294
+ // value of any field whose name is a standalone trailing `key` word,
295
+ // and `RedactedLogger` applies that rule to every log line this
296
+ // package emits under a real host. A field named `key` reached the
297
+ // operator as `[REDACTED]`, destroying the one field that says which
298
+ // dispatch the line describes. The span carries the same name so the
299
+ // trace and the log agree.
300
+ stepKey: input.key,
301
+ attempt: input.attempt,
302
+ tier: input.tier
303
+ })
304
+ const instance = FlowEngine.makeInstance(
305
+ parent.flow,
306
+ parent.executionId
307
+ )
308
+ ageVerdicts.set(instance, cacheAgeVerdict)
309
+ const flowEngine = yield* Deferred.await(engine)
310
+ instance.interrupted = parent.interrupted
311
+ // DECIDED (2026-08-11, pending review): the waiting classification is
312
+ // threaded through the dispatch's instance and back, because the dispatch
313
+ // runs under an instance of its own while `annotateWaiting` is documented
314
+ // to reach the parked row. An implementation that declares one — `Sleep`
315
+ // under `timer`, `WaitFor` under `event` with its wake token — writes it
316
+ // here, so without the thread-back `RunDriver` would park on the derived
317
+ // default and an action's declaration would be inert. It is seeded as
318
+ // well as copied back so a body that annotated before dispatching keeps
319
+ // its own declaration, and so the consumption `deferredResult` performs
320
+ // on a settled wait travels out the same way (issue #42).
321
+ const waitingBefore = parent.waiting
322
+ instance.waiting = waitingBefore
323
+ const logContext = {
324
+ runId: parent.executionId,
325
+ action: input.action.name,
326
+ stepKey: input.key,
327
+ attempt: input.attempt,
328
+ tier: input.tier
329
+ }
330
+ yield* Effect.logTrace("action dispatch started", logContext)
331
+ // The boundary preparation runs under the dispatching parent, not the
332
+ // action's own instance, exactly as the engine would run it itself.
333
+ const snapshot = input.snapshot === undefined
334
+ ? undefined
335
+ : Effect.provideContext(input.snapshot, yield* Effect.context<FlowRuntime.FlowInstance | Crypto.Crypto>())
336
+ const result = yield* ActionPersistence.make({
337
+ runId: parent.executionId,
338
+ owner,
339
+ sourceId: options.journalSource,
340
+ engineJj,
341
+ execute: (actionInput) => (actionInput.action as Action.Any).executeEncoded as Effect.Effect<unknown, unknown>,
342
+ idempotencyKey: input.action.idempotencyKey === undefined
343
+ ? undefined
344
+ : input.key,
345
+ admission,
346
+ cacheAgeVerdict,
347
+ replayOnly
348
+ })({
349
+ action: input.action,
350
+ attempt: input.attempt,
351
+ key: input.key,
352
+ tier: input.tier,
353
+ ...(input.nondeterministic === undefined ? {} : { nondeterministic: input.nondeterministic }),
354
+ ...(isBoundaryMetadata(input.metadata)
355
+ ? { metadata: input.metadata }
356
+ : {}),
357
+ ...(snapshot === undefined ? {} : { snapshot })
358
+ }).pipe(
359
+ // This is an engine safety refusal, not a failure declared by the
360
+ // action. Keep it on the defect channel like the numbered-retry
361
+ // guard in FlowEngine, before the action's error codec can mask it.
362
+ Effect.catchIf(
363
+ (cause): cause is Action.IrreversibleRetryRequiresIdempotencyKey =>
364
+ cause instanceof Action.IrreversibleRetryRequiresIdempotencyKey,
365
+ // Encode the tagged fields before the generic defect codec reduces
366
+ // an Error instance to just its name and message.
367
+ (cause) => Effect.die(Schema.encodeSync(Action.IrreversibleRetryRequiresIdempotencyKey)(cause))
368
+ ),
369
+ Flow.intoResult,
370
+ Effect.provideService(FlowRuntime.FlowInstance, instance),
371
+ Effect.provideService(
372
+ FlowRuntime.FlowRuntime,
373
+ flowEngine
374
+ ),
375
+ Effect.provideService(AttemptStore.AttemptStore, attemptStore),
376
+ Effect.provideService(CacheStore.CacheStore, cacheStore),
377
+ Effect.provideService(Journal.Journal, journal),
378
+ Effect.provideService(Jj.Jj, actionJj),
379
+ Effect.provideService(RunStore.RunStore, runStore),
380
+ Effect.provideService(StepBoundary.StepBoundary, stepBoundary),
381
+ (dispatch) =>
382
+ Option.isNone(stepSandbox)
383
+ ? dispatch
384
+ : Effect.provideService(dispatch, StepSandbox.StepSandbox, stepSandbox.value),
385
+ (dispatch) =>
386
+ Option.isNone(workspaceSandbox)
387
+ ? dispatch
388
+ : Effect.provideService(dispatch, WorkspaceSandbox.WorkspaceSandbox, workspaceSandbox.value),
389
+ (dispatch) =>
390
+ Option.isNone(effectDispatcher)
391
+ ? dispatch
392
+ : Effect.provideService(dispatch, WorkspaceSandbox.EffectDispatcher, effectDispatcher.value),
393
+ Effect.ensuring(Effect.sync(() => {
394
+ if (parent.waiting === waitingBefore) parent.waiting = instance.waiting
395
+ }))
396
+ )
397
+ const outcome = result._tag === "Complete"
398
+ ? result.exit._tag === "Success" ? "success" : "failure"
399
+ : result._tag.toLowerCase()
400
+ yield* Effect.annotateCurrentSpan({ outcome })
401
+ yield* Effect.logTrace("action dispatch settled", { ...logContext, outcome })
402
+ return result
403
+ })
404
+
405
+ const encoded: FlowEngine.Encoded = {
406
+ // Unspanned here: `driver.register` already opens the
407
+ // `FlowEngine.register` span, and a second identical wrapper would nest
408
+ // two same-name spans around one operation.
409
+ register: (flow, execute) =>
410
+ driver.register(flow, execute).pipe(
411
+ Effect.tap(() => deferred.sweepDue(flow._tag))
412
+ ),
413
+ execute: driver.execute,
414
+ poll: driver.poll,
415
+ interrupt: driver.interrupt,
416
+ // The driver's refusal, forwarded rather than re-implemented: the
417
+ // durable engine has one cancellation path, so `interruptUnsafe` fails
418
+ // with `unsafe_interrupt_unsupported` here too (the release policy).
419
+ interruptUnsafe: driver.interruptUnsafe,
420
+ resume: driver.resume,
421
+ actionExecute,
422
+ /**
423
+ * The graph a walk drove, and how each of its nodes settled.
424
+ *
425
+ * Addressed by the record's own `sourceId` rather than a minted one, so
426
+ * a resumed walk writes the identities the first walk used and the
427
+ * journal's `(run, source, sequence)` uniqueness holds one row per node
428
+ * instead of one per observation. A `Duplicate` receipt is that
429
+ * collapse happening, and it is the expected answer on a resume.
430
+ *
431
+ * On the durable, owner-fenced channel, like every other engine record:
432
+ * a writer that lost the run self-interrupts rather than narrating a
433
+ * walk it no longer owns.
434
+ */
435
+ nodeRecordBytes: (record) =>
436
+ Effect.map(FlowRuntime.FlowInstance, (parent) =>
437
+ NodeJournal.encodedBytes({
438
+ runId: parent.executionId,
439
+ sourceId: options.journalSource,
440
+ lineageId: FlowEngine.Lineage.root(parent.executionId),
441
+ root: declarationRoot,
442
+ sourceRevision: sourceRevision()
443
+ }, record)),
444
+ recordNode: (record) =>
445
+ Effect.flatMap(FlowRuntime.FlowInstance, (parent) =>
446
+ journal.emitDurable(
447
+ NodeJournal.entry({
448
+ runId: parent.executionId,
449
+ sourceId: options.journalSource,
450
+ lineageId: FlowEngine.Lineage.root(parent.executionId),
451
+ root: declarationRoot,
452
+ sourceRevision: sourceRevision()
453
+ }, record),
454
+ owner
455
+ ).pipe(
456
+ Effect.catch((error) => error.code === "fence_lost" ? Effect.interrupt : Effect.die(error)),
457
+ Effect.asVoid
458
+ )),
459
+ actionReplayKey: Effect.fnUntraced(function*(derive) {
460
+ const instance = yield* FlowRuntime.FlowInstance
461
+ const origins = yield* keyOrigins(instance)
462
+ if (origins.length === 0) return yield* derive(instance.executionId, false)
463
+ // Prefer this child's own work on resume, then only ancestor keys
464
+ // backed by attempts copied into this child. Never read parent rows.
465
+ const probed = new Set<string>()
466
+ for (const runId of [instance.executionId, ...origins]) {
467
+ for (const runScoped of [true, false]) {
468
+ const key = yield* derive(runId, runScoped)
469
+ if (probed.has(key)) continue
470
+ probed.add(key)
471
+ const digest = yield* Schema.decodeUnknownEffect(Sha256)(key).pipe(Effect.orDie)
472
+ const found = yield* AttemptProbe.probeAttempts(
473
+ attemptStore,
474
+ attemptSurvivors,
475
+ instance.executionId,
476
+ digest
477
+ )
478
+ if (Option.isSome(found)) return key
479
+ }
480
+ }
481
+ return yield* derive(instance.executionId, true)
482
+ }),
483
+ // The durable schedule-to-close origin (issue #45): the first
484
+ // attempt's persisted `startedAtMs` for the action key. It lives in
485
+ // the same `flows_attempts` rows that already restore the attempt
486
+ // sequence across park/resume and process death, so the engine's
487
+ // `expirationMs` budget is measured from the true first attempt
488
+ // instead of restarting on every process.
489
+ actionRetryOrigin: Effect.fnUntraced(function*(input: {
490
+ readonly key: string
491
+ }) {
492
+ const parent = yield* FlowRuntime.FlowInstance
493
+ const survivors = yield* AttemptProbe.probeAttempts(
494
+ attemptStore,
495
+ attemptSurvivors,
496
+ parent.executionId,
497
+ yield* Schema.decodeUnknownEffect(Sha256)(input.key).pipe(Effect.orDie)
498
+ )
499
+ return Option.map(survivors, ({ earliestStartedAtMs }) => earliestStartedAtMs)
500
+ }),
501
+ // The durable attempt counter (issue #59): the highest contiguous
502
+ // persisted attempt for the key, so a resumed run replays failed
503
+ // attempts under their original numbers instead of restarting at 1 —
504
+ // the persisted failure is rethrown by `ActionPersistence`, the
505
+ // retry decision sees the true attempt count, and the backoff ladder
506
+ // is not re-slept.
507
+ actionLatestAttempt: Effect.fnUntraced(function*(input: {
508
+ readonly key: string
509
+ }) {
510
+ const parent = yield* FlowRuntime.FlowInstance
511
+ const survivors = yield* AttemptProbe.probeAttempts(
512
+ attemptStore,
513
+ attemptSurvivors,
514
+ parent.executionId,
515
+ yield* Schema.decodeUnknownEffect(Sha256)(input.key).pipe(Effect.orDie)
516
+ )
517
+ return Option.map(survivors, ({ latest }) => latest)
518
+ }),
519
+ // The durable restore-before-retry handle (issue #1805): the earliest
520
+ // boundary snapshot persisted in the key's surviving attempt rows, so a
521
+ // restarted process restores the original pre-image before a retry.
522
+ actionSnapshot: Effect.fnUntraced(function*(input: {
523
+ readonly key: string
524
+ }) {
525
+ const parent = yield* FlowRuntime.FlowInstance
526
+ const stepKeyDigest = yield* Schema.decodeUnknownEffect(Sha256)(input.key).pipe(Effect.orDie)
527
+ const survivors = yield* AttemptProbe.probeAttempts(
528
+ attemptStore,
529
+ attemptSurvivors,
530
+ parent.executionId,
531
+ stepKeyDigest
532
+ )
533
+ if (Option.isNone(survivors)) return Option.none()
534
+ return yield* ActionPersistence.earliestBoundarySnapshot(attemptStore, parent.executionId, stepKeyDigest, {
535
+ earliest: survivors.value.earliestAttempt,
536
+ latest: survivors.value.latest
537
+ })
538
+ }),
539
+ deferredResult: deferred.deferredResult,
540
+ deferredDone: deferred.deferredDone,
541
+ deferredDoneIfWaiting: deferred.deferredDoneIfWaiting,
542
+ scheduleClock: deferred.scheduleClock,
543
+ // The engine races this against its suspension backoff sleep, so an
544
+ // IN-PROCESS wake — deferred completed, clock fired, operator resume,
545
+ // run settled — resumes the waiting caller immediately, with the
546
+ // polling schedule as the bounded fallback. The bus is edge-triggered
547
+ // and miss-tolerant (`WakeBus.ts`); a wake published before the caller
548
+ // re-subscribes only costs one poll interval. Cross-process wakes ride
549
+ // the polling schedule and the heartbeat sweeps: the bus is in-process,
550
+ // and the journal offers no committed cross-process subscription.
551
+ resumeSignal: (_flow, executionId) => wakeBus.awaitWake(executionId)
552
+ }
553
+ const service = {
554
+ ...FlowEngine.bindHostCeiling(host, FlowEngine.makeUnsafe(encoded)),
555
+ durability: "durable" as const
556
+ }
557
+ yield* Deferred.succeed(engine, service)
558
+ return service
559
+ })
560
+
561
+ /**
562
+ * Constructs the production encoded composition using the ambient `Jj` for
563
+ * both public action access and private engine bookkeeping.
564
+ *
565
+ * @since 0.1.0
566
+ * @category constructors
567
+ */
568
+ export const make = (
569
+ options: Options
570
+ ): Effect.Effect<FlowRuntime.FlowRuntime["Service"], never, PublicRequirements> =>
571
+ Effect.gen(function*() {
572
+ const jj = yield* Jj.Jj
573
+ return yield* makeWithEngineJj(options).pipe(
574
+ Effect.provideService(EngineJj.EngineJj, jj)
575
+ )
576
+ })
577
+
578
+ /**
579
+ * Provides the durable flow engine.
580
+ *
581
+ * @since 0.1.0
582
+ * @category layers
583
+ */
584
+ const layerBase = (
585
+ options: Options
586
+ ): Layer.Layer<
587
+ FlowEngine.SnapshotBoundary | FlowRuntime.FlowRuntime,
588
+ never,
589
+ Requirements
590
+ > => {
591
+ const snapshotBoundary = Layer.effect(
592
+ FlowEngine.SnapshotBoundary,
593
+ Effect.map(EngineJj.EngineJj, (jj) =>
594
+ FlowEngine.SnapshotBoundary.of({
595
+ snapshot: Effect.fn("SnapshotBoundary.snapshot")(({ key, attempt }) =>
596
+ Effect.annotateCurrentSpan({ stepKey: key, attempt }).pipe(
597
+ Effect.andThen(jj.snapshot(`smithers action ${key} attempt ${attempt}`)),
598
+ Effect.orDie,
599
+ // The commit id, never the change id: an agent's `jj squash` in the
600
+ // step rewrites the change, and a change id would then name the
601
+ // step's edits instead of the pre-image.
602
+ Effect.map((snapshot) => snapshot.commitId)
603
+ )
604
+ ),
605
+ restore: Effect.fn("SnapshotBoundary.restore")((snapshot) =>
606
+ Effect.annotateCurrentSpan({ snapshot: String(snapshot) }).pipe(
607
+ Effect.andThen(jj.restore(snapshot as never)),
608
+ Effect.orDie
609
+ )
610
+ ),
611
+ diff: Effect.fn("SnapshotBoundary.diff")((snapshot, { key, attempt }) =>
612
+ Effect.annotateCurrentSpan({ stepKey: key, attempt }).pipe(
613
+ Effect.andThen(jj.snapshot(`smithers action ${key} attempt ${attempt} settled`)),
614
+ Effect.orDie,
615
+ Effect.flatMap((current) => jj.diff(snapshot as never, current.commitId).pipe(Effect.orDie))
616
+ )
617
+ )
618
+ }))
619
+ )
620
+ return Layer.merge(
621
+ Layer.effect(FlowRuntime.FlowRuntime, makeWithEngineJj(options)),
622
+ snapshotBoundary
623
+ )
624
+ }
625
+
626
+ /**
627
+ * Provides the durable engine using the ambient `Jj` for both action and
628
+ * engine contexts. Host compositions that guard action access should use
629
+ * {@link layerWithPrivilegedJj} instead.
630
+ *
631
+ * @since 0.1.0
632
+ * @category layers
633
+ */
634
+ export const layer = (
635
+ options: Options
636
+ ): Layer.Layer<FlowEngine.SnapshotBoundary | FlowRuntime.FlowRuntime, never, PublicRequirements> =>
637
+ layerBase(options).pipe(Layer.provide(EngineJj.layerFromJj))
638
+
639
+ /**
640
+ * Provides the durable engine with a private repository implementation for
641
+ * engine bookkeeping while retaining ambient `Jj` for action bodies.
642
+ *
643
+ * @since 1.0.0
644
+ * @category layers
645
+ */
646
+ export const layerWithPrivilegedJj = <E, R>(
647
+ options: Options,
648
+ privilegedJj: Layer.Layer<Jj.Jj, E, R>
649
+ ): Layer.Layer<
650
+ FlowEngine.SnapshotBoundary | FlowRuntime.FlowRuntime,
651
+ E,
652
+ PublicRequirements | R
653
+ > =>
654
+ layerBase(options).pipe(
655
+ Layer.provide(EngineJj.layerFromJj.pipe(Layer.provide(privilegedJj)))
656
+ )