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

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 +199 -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 +1584 -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 +298 -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 +3152 -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,53 @@
1
+ /**
2
+ * The in-process attempt admission mutex.
3
+ *
4
+ * One instance lives per store incarnation (per `EngineStore.make`, alongside
5
+ * the owner nonce). Every durable action dispatch holds the key's permit
6
+ * for its whole admission-execute-finish span, so at most one fiber of this
7
+ * process can be driving a given `(runId, stepKeyDigest, attempt)` at a time.
8
+ *
9
+ * That exclusion is the liveness evidence adoption needs (issues #86, #102,
10
+ * #103): a persisted `running` row observed *while holding the key's permit*
11
+ * cannot belong to a live fiber of this process — a live same-key dispatch
12
+ * would be holding the permit — so it is crash or interruption evidence and
13
+ * safe to adopt, whether the admitting incarnation was another process
14
+ * (superseded by the run fence) or this very one (a dead fiber after an
15
+ * in-process re-drive). The recorded incarnation nonce alone could not make
16
+ * that distinction, which both let a TOCTOU window double-execute an
17
+ * irreversible body (issue #102) and permanently failed a same-incarnation
18
+ * re-drive with `AttemptAdmissionRejected` (issue #103).
19
+ *
20
+ * @since 0.1.0
21
+ */
22
+ import * as Effect from "effect/Effect";
23
+ /**
24
+ * The single operation the admission mutex exposes: run something while
25
+ * holding a key's exclusive permit.
26
+ *
27
+ * It is deliberately not a lock/unlock pair. Handing out a permit a caller
28
+ * must remember to return would make an interrupted dispatch leak exclusion
29
+ * for the rest of the process's life; a bracketing combinator cannot.
30
+ *
31
+ * @since 0.1.0
32
+ * @category services
33
+ */
34
+ export interface Service {
35
+ /**
36
+ * Runs `effect` while holding this process's exclusive permit for `key`.
37
+ * Concurrent same-key callers wait; the permit is released on any exit,
38
+ * including interruption.
39
+ */
40
+ readonly withPermit: (key: string) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
41
+ }
42
+ /**
43
+ * Constructs the keyed admission mutex synchronously.
44
+ *
45
+ * Gates are reference-counted and removed once no fiber holds or awaits
46
+ * them, so the map does not grow with the number of distinct keys a
47
+ * long-lived process dispatches.
48
+ *
49
+ * @since 0.1.0
50
+ * @category constructors
51
+ */
52
+ export declare const makeUnsafe: () => Service;
53
+ //# sourceMappingURL=AttemptAdmission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttemptAdmission.d.ts","sourceRoot":"","sources":["../../../src/internal/AttemptAdmission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAMvC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,GAAG,EAAE,MAAM,KACR,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CACzE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,QAAO,OAc7B,CAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AttemptAdmission_exports = {};
30
+ __export(AttemptAdmission_exports, {
31
+ makeUnsafe: () => makeUnsafe
32
+ });
33
+ module.exports = __toCommonJS(AttemptAdmission_exports);
34
+ var Context = __toESM(require("effect/Context"), 1);
35
+ var Effect = __toESM(require("effect/Effect"), 1);
36
+ var Layer = __toESM(require("effect/Layer"), 1);
37
+ var RcMap = __toESM(require("effect/RcMap"), 1);
38
+ var Scope = __toESM(require("effect/Scope"), 1);
39
+ var Semaphore = __toESM(require("effect/Semaphore"), 1);
40
+ const makeUnsafe = () => {
41
+ const Locks = Context.Service("AttemptAdmission/Locks");
42
+ const layer = Layer.effect(Locks, RcMap.make({ lookup: (_key) => Semaphore.make(1) }));
43
+ const owners = Layer.makeMemoMapUnsafe();
44
+ return {
45
+ withPermit: (key) => (effect) => Effect.scoped(Effect.gen(function* () {
46
+ const services = yield* Layer.buildWithMemoMap(layer, owners, yield* Scope.Scope);
47
+ const lock = yield* RcMap.get(Context.get(services, Locks), key);
48
+ return yield* lock.withPermit(effect);
49
+ }))
50
+ };
51
+ };
52
+ //# sourceMappingURL=AttemptAdmission.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/AttemptAdmission.ts"],
4
+ "sourcesContent": ["/**\n * The in-process attempt admission mutex.\n *\n * One instance lives per store incarnation (per `EngineStore.make`, alongside\n * the owner nonce). Every durable action dispatch holds the key's permit\n * for its whole admission-execute-finish span, so at most one fiber of this\n * process can be driving a given `(runId, stepKeyDigest, attempt)` at a time.\n *\n * That exclusion is the liveness evidence adoption needs (issues #86, #102,\n * #103): a persisted `running` row observed *while holding the key's permit*\n * cannot belong to a live fiber of this process \u2014 a live same-key dispatch\n * would be holding the permit \u2014 so it is crash or interruption evidence and\n * safe to adopt, whether the admitting incarnation was another process\n * (superseded by the run fence) or this very one (a dead fiber after an\n * in-process re-drive). The recorded incarnation nonce alone could not make\n * that distinction, which both let a TOCTOU window double-execute an\n * irreversible body (issue #102) and permanently failed a same-incarnation\n * re-drive with `AttemptAdmissionRejected` (issue #103).\n *\n * @since 0.1.0\n */\n\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as RcMap from \"effect/RcMap\"\nimport * as Scope from \"effect/Scope\"\nimport * as Semaphore from \"effect/Semaphore\"\n\n/**\n * The single operation the admission mutex exposes: run something while\n * holding a key's exclusive permit.\n *\n * It is deliberately not a lock/unlock pair. Handing out a permit a caller\n * must remember to return would make an interrupted dispatch leak exclusion\n * for the rest of the process's life; a bracketing combinator cannot.\n *\n * @since 0.1.0\n * @category services\n */\nexport interface Service {\n /**\n * Runs `effect` while holding this process's exclusive permit for `key`.\n * Concurrent same-key callers wait; the permit is released on any exit,\n * including interruption.\n */\n readonly withPermit: (\n key: string\n ) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>\n}\n\n/**\n * Constructs the keyed admission mutex synchronously.\n *\n * Gates are reference-counted and removed once no fiber holds or awaits\n * them, so the map does not grow with the number of distinct keys a\n * long-lived process dispatches.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const makeUnsafe = (): Service => {\n // One layer identity per incarnation; each operation borrows its owner\n // through a shared memo map, so the last operation releases the RcMap.\n const Locks = Context.Service<RcMap.RcMap<string, Semaphore.Semaphore>>(\"AttemptAdmission/Locks\")\n const layer = Layer.effect(Locks, RcMap.make({ lookup: (_key: string) => Semaphore.make(1) }))\n const owners = Layer.makeMemoMapUnsafe()\n return {\n withPermit: (key) => (effect) =>\n Effect.scoped(Effect.gen(function*() {\n const services = yield* Layer.buildWithMemoMap(layer, owners, yield* Scope.Scope)\n const lock = yield* RcMap.get(Context.get(services, Locks), key)\n return yield* lock.withPermit(effect)\n }))\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA,cAAyB;AACzB,aAAwB;AACxB,YAAuB;AACvB,YAAuB;AACvB,YAAuB;AACvB,gBAA2B;AAkCpB,MAAM,aAAa,MAAe;AAGvC,QAAM,QAAQ,QAAQ,QAAkD,wBAAwB;AAChG,QAAM,QAAQ,MAAM,OAAO,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,SAAiB,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7F,QAAM,SAAS,MAAM,kBAAkB;AACvC,SAAO;AAAA,IACL,YAAY,CAAC,QAAQ,CAAC,WACpB,OAAO,OAAO,OAAO,IAAI,aAAY;AACnC,YAAM,WAAW,OAAO,MAAM,iBAAiB,OAAO,QAAQ,OAAO,MAAM,KAAK;AAChF,YAAM,OAAO,OAAO,MAAM,IAAI,QAAQ,IAAI,UAAU,KAAK,GAAG,GAAG;AAC/D,aAAO,OAAO,KAAK,WAAW,MAAM;AAAA,IACtC,CAAC,CAAC;AAAA,EACN;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Complete attempt-history projection. The attempt store remains authoritative;
3
+ * only v2 histories contain enough evidence to rebuild this projection.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+ import * as EngineEvent from "@smthrs/journal/EngineEvent";
8
+ import type * as Projection from "@smthrs/journal/Projection";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Schema from "effect/Schema";
11
+ /**
12
+ * An attempt state with completion data required only at completion.
13
+ *
14
+ * @category schemas
15
+ * @since 1.0.0
16
+ */
17
+ export declare const AttemptLifecycle: Schema.Union<readonly [Schema.Struct<{
18
+ readonly heartbeatAtMs: Schema.optionalKey<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
19
+ readonly checkpoint: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
20
+ readonly finishedAtMs: Schema.optionalKey<Schema.Never>;
21
+ readonly result: Schema.optionalKey<Schema.Never>;
22
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
23
+ readonly state: Schema.Literal<"running">;
24
+ }>, Schema.Struct<{
25
+ readonly heartbeatAtMs: Schema.optionalKey<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
26
+ readonly checkpoint: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
27
+ readonly finishedAtMs: Schema.optionalKey<Schema.Never>;
28
+ readonly result: Schema.optionalKey<Schema.Never>;
29
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
30
+ readonly state: Schema.Literal<"suspended">;
31
+ }>, Schema.Struct<{
32
+ readonly finishedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
33
+ readonly result: Schema.TaggedStruct<"Success", {
34
+ readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
35
+ }>;
36
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
37
+ readonly state: Schema.Literal<"succeeded">;
38
+ }>, Schema.Struct<{
39
+ readonly finishedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
40
+ readonly result: Schema.TaggedStruct<"Failure", {
41
+ readonly reason: Schema.Literals<readonly ["error", "defect", "interrupted", "encoding"]>;
42
+ readonly detail: Schema.Codec<Schema.Json, Schema.Json, never, never>;
43
+ }>;
44
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
45
+ readonly state: Schema.Literal<"failed">;
46
+ }>]>;
47
+ /**
48
+ * An attempt state with completion data required only at completion.
49
+ *
50
+ * @category models
51
+ * @since 1.0.0
52
+ */
53
+ export type AttemptLifecycle = EngineEvent.AttemptLifecycle;
54
+ /**
55
+ * Validate untrusted encoded state without dropping contradictory fields.
56
+ *
57
+ * @category decoders
58
+ * @since 1.0.0
59
+ */
60
+ export declare const decode: (input: unknown) => Effect.Effect<{
61
+ readonly state: "running";
62
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
63
+ readonly result?: never;
64
+ readonly heartbeatAtMs?: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
65
+ readonly checkpoint?: Schema.Json;
66
+ readonly finishedAtMs?: never;
67
+ } | {
68
+ readonly state: "suspended";
69
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
70
+ readonly result?: never;
71
+ readonly heartbeatAtMs?: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
72
+ readonly checkpoint?: Schema.Json;
73
+ readonly finishedAtMs?: never;
74
+ } | {
75
+ readonly finishedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
76
+ readonly result: {
77
+ readonly _tag: "Success";
78
+ readonly value: Schema.Json;
79
+ };
80
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
81
+ readonly state: "succeeded";
82
+ } | {
83
+ readonly finishedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
84
+ readonly result: {
85
+ readonly _tag: "Failure";
86
+ readonly reason: "error" | "encoding" | "defect" | "interrupted";
87
+ readonly detail: Schema.Json;
88
+ };
89
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
90
+ readonly state: "failed";
91
+ }, EngineEvent.EventError, never>;
92
+ /**
93
+ * The latest complete journal state for one attempt.
94
+ *
95
+ * @category models
96
+ * @since 1.0.0
97
+ */
98
+ export interface Row {
99
+ readonly executionId: string;
100
+ readonly stepKeyDigest: string;
101
+ readonly attempt: number;
102
+ readonly seq: number;
103
+ readonly lifecycle: AttemptLifecycle;
104
+ }
105
+ /**
106
+ * Attempt projection rows, independent of executable engine storage.
107
+ *
108
+ * @category models
109
+ * @since 1.0.0
110
+ */
111
+ export type State = ReadonlyArray<Row>;
112
+ /**
113
+ * A versioned retained projection. Its sequence covers every included row.
114
+ *
115
+ * @category schemas
116
+ * @since 1.0.0
117
+ */
118
+ export declare const Snapshot: Schema.Struct<{
119
+ readonly version: Schema.Literal<2>;
120
+ readonly lineage: Schema.Union<readonly [Schema.Struct<{
121
+ readonly kind: Schema.Literal<"root">;
122
+ readonly runId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
123
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/LineageId">;
124
+ readonly rootRunId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
125
+ readonly round: Schema.Literal<0>;
126
+ readonly parentRunId: Schema.Null;
127
+ }>, Schema.Struct<{
128
+ readonly kind: Schema.Literals<readonly ["child", "fork", "continuation"]>;
129
+ readonly runId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
130
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/LineageId">;
131
+ readonly rootRunId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
132
+ readonly round: Schema.Int;
133
+ readonly parentRunId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
134
+ }>]>;
135
+ readonly seq: Schema.brand<Schema.Int, "@smthrs/journal/JournalEvent/Seq">;
136
+ readonly rows: Schema.$Array<Schema.Struct<{
137
+ readonly executionId: Schema.String;
138
+ readonly stepKeyDigest: Schema.String;
139
+ readonly attempt: Schema.Int;
140
+ readonly seq: Schema.brand<Schema.Int, "@smthrs/journal/JournalEvent/Seq">;
141
+ readonly lifecycle: Schema.Union<readonly [Schema.Struct<{
142
+ readonly heartbeatAtMs: Schema.optionalKey<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
143
+ readonly checkpoint: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
144
+ readonly finishedAtMs: Schema.optionalKey<Schema.Never>;
145
+ readonly result: Schema.optionalKey<Schema.Never>;
146
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
147
+ readonly state: Schema.Literal<"running">;
148
+ }>, Schema.Struct<{
149
+ readonly heartbeatAtMs: Schema.optionalKey<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
150
+ readonly checkpoint: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
151
+ readonly finishedAtMs: Schema.optionalKey<Schema.Never>;
152
+ readonly result: Schema.optionalKey<Schema.Never>;
153
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
154
+ readonly state: Schema.Literal<"suspended">;
155
+ }>, Schema.Struct<{
156
+ readonly finishedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
157
+ readonly result: Schema.TaggedStruct<"Success", {
158
+ readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
159
+ }>;
160
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
161
+ readonly state: Schema.Literal<"succeeded">;
162
+ }>, Schema.Struct<{
163
+ readonly finishedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
164
+ readonly result: Schema.TaggedStruct<"Failure", {
165
+ readonly reason: Schema.Literals<readonly ["error", "defect", "interrupted", "encoding"]>;
166
+ readonly detail: Schema.Codec<Schema.Json, Schema.Json, never, never>;
167
+ }>;
168
+ readonly startedAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
169
+ readonly state: Schema.Literal<"failed">;
170
+ }>]>;
171
+ }>>;
172
+ }>;
173
+ /**
174
+ * Decode retained state and check all lineage coordinates before suffix replay.
175
+ * Source admission still applies independently to every suffix event.
176
+ *
177
+ * @category decoders
178
+ * @since 1.0.0
179
+ */
180
+ export declare const restore: (input: unknown, consumer: EngineEvent.Consumer) => Effect.Effect<{
181
+ readonly version: 2;
182
+ readonly lineage: {
183
+ readonly kind: "root";
184
+ readonly runId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
185
+ readonly lineageId: string & import("effect/Brand").Brand<"@smthrs/journal/LineageId">;
186
+ readonly rootRunId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
187
+ readonly round: 0;
188
+ readonly parentRunId: null;
189
+ } | {
190
+ readonly kind: "child" | "fork" | "continuation";
191
+ readonly runId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
192
+ readonly lineageId: string & import("effect/Brand").Brand<"@smthrs/journal/LineageId">;
193
+ readonly rootRunId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
194
+ readonly round: number;
195
+ readonly parentRunId: string & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/RunId">;
196
+ };
197
+ readonly seq: number & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/Seq">;
198
+ readonly rows: readonly {
199
+ readonly executionId: string;
200
+ readonly stepKeyDigest: string;
201
+ readonly attempt: number;
202
+ readonly seq: number & import("effect/Brand").Brand<"@smthrs/journal/JournalEvent/Seq">;
203
+ readonly lifecycle: {
204
+ readonly state: "running";
205
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
206
+ readonly result?: never;
207
+ readonly heartbeatAtMs?: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
208
+ readonly checkpoint?: Schema.Json;
209
+ readonly finishedAtMs?: never;
210
+ } | {
211
+ readonly state: "suspended";
212
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
213
+ readonly result?: never;
214
+ readonly heartbeatAtMs?: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
215
+ readonly checkpoint?: Schema.Json;
216
+ readonly finishedAtMs?: never;
217
+ } | {
218
+ readonly finishedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
219
+ readonly result: {
220
+ readonly _tag: "Success";
221
+ readonly value: Schema.Json;
222
+ };
223
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
224
+ readonly state: "succeeded";
225
+ } | {
226
+ readonly finishedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
227
+ readonly result: {
228
+ readonly _tag: "Failure";
229
+ readonly reason: "error" | "encoding" | "defect" | "interrupted";
230
+ readonly detail: Schema.Json;
231
+ };
232
+ readonly startedAtMs: number & import("effect/Brand").Brand<"@smthrs/journal/TimestampMs">;
233
+ readonly state: "failed";
234
+ };
235
+ }[];
236
+ }, EngineEvent.EventError, never>;
237
+ /**
238
+ * Reduces full lifecycle records with monotonic sequence and legal state
239
+ * transitions. A missing start is incomplete history, never terminal success.
240
+ *
241
+ * @category projections
242
+ * @since 1.0.0
243
+ */
244
+ export declare const projection: (consumer: EngineEvent.Consumer) => Projection.Projection<State, EngineEvent.EventError>;
245
+ //# sourceMappingURL=AttemptLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttemptLifecycle.d.ts","sourceRoot":"","sources":["../../../src/internal/AttemptLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAA;AAE1D,OAAO,KAAK,KAAK,UAAU,MAAM,4BAA4B,CAAA;AAE7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA+B,CAAA;AAC5D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAA;AAC3D;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAWlC,CAAA;AAEH;;;;;GAKG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;CACrC;AAED;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBpB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,EAAE,UAAU,WAAW,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAwBnE,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,UAAU,WAAW,CAAC,QAAQ,KAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CA4B7G,CAAA"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AttemptLifecycle_exports = {};
30
+ __export(AttemptLifecycle_exports, {
31
+ AttemptLifecycle: () => AttemptLifecycle,
32
+ Snapshot: () => Snapshot,
33
+ decode: () => decode,
34
+ projection: () => projection,
35
+ restore: () => restore
36
+ });
37
+ module.exports = __toCommonJS(AttemptLifecycle_exports);
38
+ var EngineEvent = __toESM(require("@smthrs/journal/EngineEvent"), 1);
39
+ var JournalEvent = __toESM(require("@smthrs/journal/JournalEvent"), 1);
40
+ var Cause = __toESM(require("effect/Cause"), 1);
41
+ var Effect = __toESM(require("effect/Effect"), 1);
42
+ var Schema = __toESM(require("effect/Schema"), 1);
43
+ const AttemptLifecycle = EngineEvent.AttemptLifecycle;
44
+ const decode = (input) => Effect.suspend(() => Schema.decodeUnknownEffect(AttemptLifecycle, { onExcessProperty: "error" })(input)).pipe(
45
+ Effect.catchCause(
46
+ (cause) => Effect.fail(
47
+ new EngineEvent.EventError({
48
+ code: "malformed",
49
+ message: "invalid attempt lifecycle",
50
+ cause: Cause.squash(cause)
51
+ })
52
+ )
53
+ )
54
+ );
55
+ const Snapshot = Schema.Struct({
56
+ version: Schema.Literal(2),
57
+ lineage: EngineEvent.Lineage,
58
+ seq: JournalEvent.Seq,
59
+ rows: Schema.Array(Schema.Struct({
60
+ executionId: JournalEvent.Identifier,
61
+ stepKeyDigest: JournalEvent.Identifier,
62
+ attempt: JournalEvent.NonNegativeQuantity,
63
+ seq: JournalEvent.Seq,
64
+ lifecycle: AttemptLifecycle
65
+ }))
66
+ }).check(
67
+ Schema.makeFilter(
68
+ (snapshot) => snapshot.rows.every((row) => row.seq <= snapshot.seq && row.executionId === snapshot.lineage.runId) && new Set(snapshot.rows.map((row) => JSON.stringify([row.executionId, row.stepKeyDigest, row.attempt]))).size === snapshot.rows.length
69
+ )
70
+ );
71
+ const restore = (input, consumer) => Effect.suspend(() => Schema.decodeUnknownEffect(Snapshot, { onExcessProperty: "error" })(input)).pipe(
72
+ Effect.flatMap((snapshot) => {
73
+ const lineage = snapshot.lineage;
74
+ return lineage.runId !== consumer.runId || lineage.lineageId !== consumer.lineageId || lineage.rootRunId !== consumer.rootRunId || lineage.round !== consumer.round || lineage.parentRunId !== consumer.parentRunId ? Effect.fail(
75
+ new EngineEvent.EventError({
76
+ code: "foreign",
77
+ message: "attempt snapshot is outside the consumer lineage",
78
+ cause: lineage
79
+ })
80
+ ) : Effect.succeed(snapshot);
81
+ }),
82
+ Effect.catchCause((failure) => {
83
+ const cause = Cause.squash(failure);
84
+ return Effect.fail(
85
+ cause instanceof EngineEvent.EventError ? cause : new EngineEvent.EventError({ code: "malformed", message: "invalid attempt snapshot", cause })
86
+ );
87
+ })
88
+ );
89
+ const projection = (consumer) => ({
90
+ name: "flows/engine/attempts/v2",
91
+ initial: [],
92
+ reduce: (state, entry) => Effect.gen(function* () {
93
+ const decoded = yield* EngineEvent.decodeEntry(entry, consumer);
94
+ if (decoded._tag !== "Attempt") return state;
95
+ const { attempt, executionId, lifecycle, stepKeyDigest } = decoded.payload;
96
+ const previous = state.find(
97
+ (row2) => row2.executionId === executionId && row2.stepKeyDigest === stepKeyDigest && row2.attempt === attempt
98
+ );
99
+ if (previous === void 0 ? lifecycle.state !== "running" : entry.seq <= previous.seq || previous.lifecycle.state === "succeeded" || previous.lifecycle.state === "failed" || lifecycle.startedAtMs !== previous.lifecycle.startedAtMs) {
100
+ return yield* Effect.fail(
101
+ new EngineEvent.EventError({
102
+ code: "transition",
103
+ message: "attempt history has a missing start, reordered record or transition after completion",
104
+ cause: { previous, entry }
105
+ })
106
+ );
107
+ }
108
+ const row = { executionId, stepKeyDigest, attempt, seq: entry.seq, lifecycle };
109
+ return [...state.filter((candidate) => candidate !== previous), row];
110
+ })
111
+ });
112
+ //# sourceMappingURL=AttemptLifecycle.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/AttemptLifecycle.ts"],
4
+ "sourcesContent": ["/**\n * Complete attempt-history projection. The attempt store remains authoritative;\n * only v2 histories contain enough evidence to rebuild this projection.\n *\n * @since 1.0.0\n */\n\nimport * as EngineEvent from \"@smthrs/journal/EngineEvent\"\nimport * as JournalEvent from \"@smthrs/journal/JournalEvent\"\nimport type * as Projection from \"@smthrs/journal/Projection\"\nimport * as Cause from \"effect/Cause\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * An attempt state with completion data required only at completion.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const AttemptLifecycle = EngineEvent.AttemptLifecycle\n/**\n * An attempt state with completion data required only at completion.\n *\n * @category models\n * @since 1.0.0\n */\nexport type AttemptLifecycle = EngineEvent.AttemptLifecycle\n/**\n * Validate untrusted encoded state without dropping contradictory fields.\n *\n * @category decoders\n * @since 1.0.0\n */\nexport const decode = (input: unknown) =>\n Effect.suspend(() => Schema.decodeUnknownEffect(AttemptLifecycle, { onExcessProperty: \"error\" })(input)).pipe(\n Effect.catchCause((cause) =>\n Effect.fail(\n new EngineEvent.EventError({\n code: \"malformed\",\n message: \"invalid attempt lifecycle\",\n cause: Cause.squash(cause)\n })\n )\n )\n )\n\n/**\n * The latest complete journal state for one attempt.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Row {\n readonly executionId: string\n readonly stepKeyDigest: string\n readonly attempt: number\n readonly seq: number\n readonly lifecycle: AttemptLifecycle\n}\n\n/**\n * Attempt projection rows, independent of executable engine storage.\n *\n * @category models\n * @since 1.0.0\n */\nexport type State = ReadonlyArray<Row>\n\n/**\n * A versioned retained projection. Its sequence covers every included row.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Snapshot = Schema.Struct({\n version: Schema.Literal(2),\n lineage: EngineEvent.Lineage,\n seq: JournalEvent.Seq,\n rows: Schema.Array(Schema.Struct({\n executionId: JournalEvent.Identifier,\n stepKeyDigest: JournalEvent.Identifier,\n attempt: JournalEvent.NonNegativeQuantity,\n seq: JournalEvent.Seq,\n lifecycle: AttemptLifecycle\n }))\n}).check(\n Schema.makeFilter((snapshot) =>\n snapshot.rows.every((row) => row.seq <= snapshot.seq && row.executionId === snapshot.lineage.runId) &&\n new Set(snapshot.rows.map((row) => JSON.stringify([row.executionId, row.stepKeyDigest, row.attempt]))).size ===\n snapshot.rows.length\n )\n)\n\n/**\n * Decode retained state and check all lineage coordinates before suffix replay.\n * Source admission still applies independently to every suffix event.\n *\n * @category decoders\n * @since 1.0.0\n */\nexport const restore = (input: unknown, consumer: EngineEvent.Consumer) =>\n Effect.suspend(() => Schema.decodeUnknownEffect(Snapshot, { onExcessProperty: \"error\" })(input)).pipe(\n Effect.flatMap((snapshot) => {\n const lineage = snapshot.lineage\n return lineage.runId !== consumer.runId || lineage.lineageId !== consumer.lineageId ||\n lineage.rootRunId !== consumer.rootRunId || lineage.round !== consumer.round ||\n lineage.parentRunId !== consumer.parentRunId\n ? Effect.fail(\n new EngineEvent.EventError({\n code: \"foreign\",\n message: \"attempt snapshot is outside the consumer lineage\",\n cause: lineage\n })\n )\n : Effect.succeed(snapshot)\n }),\n Effect.catchCause((failure) => {\n const cause = Cause.squash(failure)\n return Effect.fail(\n cause instanceof EngineEvent.EventError ?\n cause\n : new EngineEvent.EventError({ code: \"malformed\", message: \"invalid attempt snapshot\", cause })\n )\n })\n )\n\n/**\n * Reduces full lifecycle records with monotonic sequence and legal state\n * transitions. A missing start is incomplete history, never terminal success.\n *\n * @category projections\n * @since 1.0.0\n */\nexport const projection = (consumer: EngineEvent.Consumer): Projection.Projection<State, EngineEvent.EventError> => ({\n name: \"flows/engine/attempts/v2\",\n initial: [],\n reduce: (state, entry) =>\n Effect.gen(function*() {\n const decoded = yield* EngineEvent.decodeEntry(entry, consumer)\n if (decoded._tag !== \"Attempt\") return state\n const { attempt, executionId, lifecycle, stepKeyDigest } = decoded.payload\n const previous = state.find((row) =>\n row.executionId === executionId && row.stepKeyDigest === stepKeyDigest && row.attempt === attempt\n )\n if (\n previous === undefined\n ? lifecycle.state !== \"running\"\n : entry.seq <= previous.seq || previous.lifecycle.state === \"succeeded\" ||\n previous.lifecycle.state === \"failed\" || lifecycle.startedAtMs !== previous.lifecycle.startedAtMs\n ) {\n return yield* Effect.fail(\n new EngineEvent.EventError({\n code: \"transition\",\n message: \"attempt history has a missing start, reordered record or transition after completion\",\n cause: { previous, entry }\n })\n )\n }\n const row: Row = { executionId, stepKeyDigest, attempt, seq: entry.seq, lifecycle }\n return [...state.filter((candidate) => candidate !== previous), row]\n })\n})\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,kBAA6B;AAC7B,mBAA8B;AAE9B,YAAuB;AACvB,aAAwB;AACxB,aAAwB;AAQjB,MAAM,mBAAmB,YAAY;AAcrC,MAAM,SAAS,CAAC,UACrB,OAAO,QAAQ,MAAM,OAAO,oBAAoB,kBAAkB,EAAE,kBAAkB,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE;AAAA,EACvG,OAAO;AAAA,IAAW,CAAC,UACjB,OAAO;AAAA,MACL,IAAI,YAAY,WAAW;AAAA,QACzB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO,MAAM,OAAO,KAAK;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,EACF;AACF;AA8BK,MAAM,WAAW,OAAO,OAAO;AAAA,EACpC,SAAS,OAAO,QAAQ,CAAC;AAAA,EACzB,SAAS,YAAY;AAAA,EACrB,KAAK,aAAa;AAAA,EAClB,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,IAC/B,aAAa,aAAa;AAAA,IAC1B,eAAe,aAAa;AAAA,IAC5B,SAAS,aAAa;AAAA,IACtB,KAAK,aAAa;AAAA,IAClB,WAAW;AAAA,EACb,CAAC,CAAC;AACJ,CAAC,EAAE;AAAA,EACD,OAAO;AAAA,IAAW,CAAC,aACjB,SAAS,KAAK,MAAM,CAAC,QAAQ,IAAI,OAAO,SAAS,OAAO,IAAI,gBAAgB,SAAS,QAAQ,KAAK,KAClG,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,aAAa,IAAI,eAAe,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,SACrG,SAAS,KAAK;AAAA,EAClB;AACF;AASO,MAAM,UAAU,CAAC,OAAgB,aACtC,OAAO,QAAQ,MAAM,OAAO,oBAAoB,UAAU,EAAE,kBAAkB,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE;AAAA,EAC/F,OAAO,QAAQ,CAAC,aAAa;AAC3B,UAAM,UAAU,SAAS;AACzB,WAAO,QAAQ,UAAU,SAAS,SAAS,QAAQ,cAAc,SAAS,aACtE,QAAQ,cAAc,SAAS,aAAa,QAAQ,UAAU,SAAS,SACvE,QAAQ,gBAAgB,SAAS,cACjC,OAAO;AAAA,MACP,IAAI,YAAY,WAAW;AAAA,QACzB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,MACT,CAAC;AAAA,IACH,IACE,OAAO,QAAQ,QAAQ;AAAA,EAC7B,CAAC;AAAA,EACD,OAAO,WAAW,CAAC,YAAY;AAC7B,UAAM,QAAQ,MAAM,OAAO,OAAO;AAClC,WAAO,OAAO;AAAA,MACZ,iBAAiB,YAAY,aAC3B,QACE,IAAI,YAAY,WAAW,EAAE,MAAM,aAAa,SAAS,4BAA4B,MAAM,CAAC;AAAA,IAClG;AAAA,EACF,CAAC;AACH;AASK,MAAM,aAAa,CAAC,cAA0F;AAAA,EACnH,MAAM;AAAA,EACN,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC,OAAO,UACd,OAAO,IAAI,aAAY;AACrB,UAAM,UAAU,OAAO,YAAY,YAAY,OAAO,QAAQ;AAC9D,QAAI,QAAQ,SAAS,UAAW,QAAO;AACvC,UAAM,EAAE,SAAS,aAAa,WAAW,cAAc,IAAI,QAAQ;AACnE,UAAM,WAAW,MAAM;AAAA,MAAK,CAACA,SAC3BA,KAAI,gBAAgB,eAAeA,KAAI,kBAAkB,iBAAiBA,KAAI,YAAY;AAAA,IAC5F;AACA,QACE,aAAa,SACT,UAAU,UAAU,YACpB,MAAM,OAAO,SAAS,OAAO,SAAS,UAAU,UAAU,eAC1D,SAAS,UAAU,UAAU,YAAY,UAAU,gBAAgB,SAAS,UAAU,aAC1F;AACA,aAAO,OAAO,OAAO;AAAA,QACnB,IAAI,YAAY,WAAW;AAAA,UACzB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO,EAAE,UAAU,MAAM;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,MAAW,EAAE,aAAa,eAAe,SAAS,KAAK,MAAM,KAAK,UAAU;AAClF,WAAO,CAAC,GAAG,MAAM,OAAO,CAAC,cAAc,cAAc,QAAQ,GAAG,GAAG;AAAA,EACrE,CAAC;AACL;",
6
+ "names": ["row"]
7
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Survivor discovery for an action key's attempt rows.
3
+ *
4
+ * Two implementations answer the same question — the durable state's single
5
+ * ordered range read (issue #77) and the point-probe walk against
6
+ * `AttemptStore` for storage that cannot range-scan. They are kept here
7
+ * together, behind one entry point, because their answers must agree: a run
8
+ * that resumes under SQL state and under the fallback must restore the same
9
+ * retry origin and the same attempt counter (issue #96).
10
+ *
11
+ * @since 0.1.0
12
+ */
13
+ import type { AttemptStore } from "@smthrs/run-store";
14
+ import * as Effect from "effect/Effect";
15
+ import * as Option from "effect/Option";
16
+ import type * as DurableEngineState from "../DurableEngineState.ts";
17
+ /**
18
+ * How long a pruned leading run of attempt numbers the survivor scan
19
+ * tolerates before it reports "no attempt row survives".
20
+ *
21
+ * A retention/prune job removes attempts oldest-first, so a surviving
22
+ * sequence is contiguous once its first row is found; the bound caps the
23
+ * pruned prefix walk (issue #69). It is a *semantic* bound, not merely a
24
+ * cost bound: the point-probe fallback cannot distinguish "nothing ever ran"
25
+ * from "the first 33 attempts were pruned" without a range read, so both
26
+ * paths apply the same tolerance and a key whose earliest survivor sits past
27
+ * it restarts its expiration budget and attempt numbering on either backend
28
+ * (issue #96). Restarting is safe — the pruned numbers are gone, so the
29
+ * fresh counter cannot collide — and, unlike the previous split, it is the
30
+ * same behaviour on every backend.
31
+ *
32
+ * @since 0.1.0
33
+ * @category constants
34
+ */
35
+ export declare const prunedPrefixScanLimit = 32;
36
+ /**
37
+ * Finds the surviving attempt rows for an action key: the earliest row's
38
+ * start time — the durable retry origin when attempt 1 itself was pruned
39
+ * (issue #69) — and the highest attempt number contiguous from it, from
40
+ * which the engine resumes the attempt counter (issue #59). `Option.none()`
41
+ * means no attempt row survives within `prunedPrefixScanLimit`.
42
+ *
43
+ * When the durable state can range-scan attempts, one ordered SELECT answers
44
+ * both questions (issue #77); otherwise the point-read scan against
45
+ * `AttemptStore` answers them, paying up to `prunedPrefixScanLimit`
46
+ * sequential gets for a key that never ran. Both answers pass through the
47
+ * same tolerance check, so the two paths cannot diverge (issue #96).
48
+ *
49
+ * @since 0.1.0
50
+ * @category combinators
51
+ */
52
+ export declare const probeAttempts: (attemptStore: AttemptStore.Service, survivors: DurableEngineState.Service["attemptSurvivors"], runId: string, stepKeyDigest: string) => Effect.Effect<Option.Option<DurableEngineState.AttemptSurvivors>>;
53
+ //# sourceMappingURL=AttemptProbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttemptProbe.d.ts","sourceRoot":"","sources":["../../../src/internal/AttemptProbe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,kBAAkB,MAAM,0BAA0B,CAAA;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,GACxB,cAAc,YAAY,CAAC,OAAO,EAClC,WAAW,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EACzD,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CA8B/D,CAAA"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AttemptProbe_exports = {};
30
+ __export(AttemptProbe_exports, {
31
+ probeAttempts: () => probeAttempts,
32
+ prunedPrefixScanLimit: () => prunedPrefixScanLimit
33
+ });
34
+ module.exports = __toCommonJS(AttemptProbe_exports);
35
+ var Effect = __toESM(require("effect/Effect"), 1);
36
+ var Option = __toESM(require("effect/Option"), 1);
37
+ const prunedPrefixScanLimit = 32;
38
+ const probeAttempts = (attemptStore, survivors, runId, stepKeyDigest) => Effect.gen(function* () {
39
+ if (survivors !== void 0) {
40
+ const found = yield* survivors(runId, stepKeyDigest);
41
+ if (Option.isNone(found)) return Option.none();
42
+ return found.value.earliestAttempt > prunedPrefixScanLimit ? Option.none() : found;
43
+ }
44
+ let earliest = Option.none();
45
+ let attempt = 1;
46
+ for (; attempt <= prunedPrefixScanLimit; attempt++) {
47
+ const row = yield* attemptStore.get({ runId, stepKeyDigest, attempt }).pipe(Effect.orDie);
48
+ if (Option.isSome(row)) {
49
+ earliest = row;
50
+ break;
51
+ }
52
+ }
53
+ if (Option.isNone(earliest)) return Option.none();
54
+ let latest = attempt;
55
+ for (let next = attempt + 1; ; next++) {
56
+ const row = yield* attemptStore.get({ runId, stepKeyDigest, attempt: next }).pipe(Effect.orDie);
57
+ if (Option.isNone(row)) break;
58
+ latest = next;
59
+ }
60
+ return Option.some({
61
+ earliestAttempt: attempt,
62
+ earliestStartedAtMs: earliest.value.startedAtMs,
63
+ latest
64
+ });
65
+ });
66
+ //# sourceMappingURL=AttemptProbe.js.map