@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,224 @@
1
+ /**
2
+ * The reconciliation seam: what happens when the world disagrees with the
3
+ * declaration.
4
+ *
5
+ * `docs/guides/drive-a-plan.md` ("Install a reconciler") describes expected sets as the soft
6
+ * mode: going outside them is allowed, journaled, and "triggers a
7
+ * **reconciliation flow** — pluggable, a flow like everything else". The
8
+ * deviation events have been emitted since the isolated-execution lane landed
9
+ * (`internal/ActionPersistence.ts`, both `expectedSetDeviation` sites) and
10
+ * had **no consumer at all**. This is the consumer, and
11
+ * `PlanScheduler` is what feeds it.
12
+ *
13
+ * Pluggability is dependency injection at the owning seam, per the repository's
14
+ * extension doctrine — there is no hook kernel. {@link layerDefault} installs a
15
+ * deterministic verdict function; a model-backed reconciler is a different
16
+ * `Layer` and lives in the agent packages. This package has no model
17
+ * dependency and must not grow one.
18
+ *
19
+ * The three verdicts are exactly the vault's: **fail** the step where the
20
+ * deviation is genuinely wrong, **reorder** — re-plan with the discovered
21
+ * dependency made explicit — and **factor out** a shared step, where content
22
+ * addressing does the heavy lifting because identical extracted steps collapse
23
+ * to one key automatically.
24
+ *
25
+ * @since 0.1.0
26
+ */
27
+
28
+ import * as Context from "effect/Context"
29
+ import * as Effect from "effect/Effect"
30
+ import * as Layer from "effect/Layer"
31
+ import * as Schema from "effect/Schema"
32
+
33
+ /**
34
+ * A journaled `flows.engine.expected-set-deviation`, resolved against the plan
35
+ * the scheduler is driving.
36
+ *
37
+ * @since 0.1.0
38
+ * @category schemas
39
+ */
40
+ export const Deviation = Schema.Struct({
41
+ nodeId: Schema.NonEmptyString,
42
+ keyDigest: Schema.NonEmptyString,
43
+ attempt: Schema.Int,
44
+ /** Paths the execution touched that its declaration did not predict. */
45
+ paths: Schema.Array(Schema.String),
46
+ diffIdentity: Schema.String,
47
+ /**
48
+ * For each undeclared path, the OTHER plan node that declares it as a write
49
+ * — the discovered dependency, resolved by the scheduler because only it
50
+ * holds the plan.
51
+ */
52
+ declaredBy: Schema.Record(Schema.String, Schema.NonEmptyString),
53
+ /** Other nodes in this run whose deviation named exactly the same paths. */
54
+ alsoDeviatedBy: Schema.Array(Schema.NonEmptyString)
55
+ })
56
+
57
+ /**
58
+ * The value form of {@link Deviation}.
59
+ *
60
+ * @since 0.1.0
61
+ * @category models
62
+ */
63
+ export type Deviation = typeof Deviation.Type
64
+
65
+ /**
66
+ * A `WorkspaceSandbox.MaterializationConflict` the runtime strategy could not
67
+ * absorb: the delay/rebase budget is spent, or the merge itself conflicted.
68
+ *
69
+ * @since 0.1.0
70
+ * @category schemas
71
+ */
72
+ export const Conflict = Schema.Struct({
73
+ nodeId: Schema.NonEmptyString,
74
+ keyDigest: Schema.NonEmptyString,
75
+ attempt: Schema.Int,
76
+ /** How many times the scheduler rebased before giving up. */
77
+ rebases: Schema.Int,
78
+ strategy: Schema.Literals(["delay-rebase", "stop-merge"]),
79
+ /** The plan nodes this one was annotated as conflicting with. */
80
+ conflictsWith: Schema.Array(Schema.NonEmptyString)
81
+ })
82
+
83
+ /**
84
+ * The value form of {@link Conflict}.
85
+ *
86
+ * @since 0.1.0
87
+ * @category models
88
+ */
89
+ export type Conflict = typeof Conflict.Type
90
+
91
+ /**
92
+ * What reconciliation decided.
93
+ *
94
+ * @since 0.1.0
95
+ * @category schemas
96
+ */
97
+ export const Verdict = Schema.Union([
98
+ Schema.TaggedStruct("Fail", { reason: Schema.String }),
99
+ Schema.TaggedStruct("Reorder", { dependsOn: Schema.Array(Schema.NonEmptyString), reason: Schema.String }),
100
+ Schema.TaggedStruct("FactorOut", { paths: Schema.Array(Schema.String), reason: Schema.String })
101
+ ])
102
+
103
+ /**
104
+ * The value form of {@link Verdict}.
105
+ *
106
+ * @since 0.1.0
107
+ * @category models
108
+ */
109
+ export type Verdict = typeof Verdict.Type
110
+
111
+ /**
112
+ * The pluggable reconciler.
113
+ *
114
+ * @since 0.1.0
115
+ * @category models
116
+ */
117
+ export interface Service {
118
+ readonly onDeviation: (deviation: Deviation) => Effect.Effect<Verdict>
119
+ readonly onConflict: (conflict: Conflict) => Effect.Effect<Verdict>
120
+ }
121
+
122
+ /**
123
+ * Service tag for the reconciliation seam.
124
+ *
125
+ * @since 0.1.0
126
+ * @category services
127
+ */
128
+ export class Reconciliation extends Context.Service<Reconciliation, Service>()("@smthrs/engine-store/Reconciliation") {}
129
+
130
+ /**
131
+ * Names a {@link Service} implementation as a reconciler.
132
+ *
133
+ * It is the identity function: the value is checked against the interface at
134
+ * its definition site, which is where a wrong-shaped reconciler should be
135
+ * reported rather than at whichever layer eventually provides it.
136
+ *
137
+ * @since 0.1.0
138
+ * @category constructors
139
+ */
140
+ export const make = (service: Service): Service => service
141
+
142
+ /**
143
+ * Provides a {@link Service} as the {@link Reconciliation} seam, replacing the
144
+ * deterministic default.
145
+ *
146
+ * @since 0.1.0
147
+ * @category layers
148
+ */
149
+ export const layer = (service: Service): Layer.Layer<Reconciliation> => Layer.succeed(Reconciliation, service)
150
+
151
+ /**
152
+ * The deterministic default, in the vault's order of preference.
153
+ *
154
+ * 1. **Reorder** when every undeclared path is a path some *other* plan node
155
+ * declares it writes. That is a real dependency the declaration missed, and
156
+ * making it explicit is strictly better than failing.
157
+ * 2. **Factor out** when another node in the same run deviated on exactly the
158
+ * same paths — two parallel steps that both ran `npm install`. No graph
159
+ * surgery follows: content addressing collapses two identical extracted
160
+ * steps to one key by itself, so the verdict is a record and a hint.
161
+ * 3. **Fail** otherwise. The default is deliberately conservative — a
162
+ * deviation nobody can explain is the case the vault says is "genuinely
163
+ * wrong", and guessing is what the model-backed reconciler is for.
164
+ *
165
+ * A conflict the runtime strategy could not absorb always fails here: choosing
166
+ * a winner between two landings is a semantic judgement this default does not
167
+ * have the material to make.
168
+ *
169
+ * @since 0.1.0
170
+ * @category constructors
171
+ */
172
+ export const makeDefault = (): Service => ({
173
+ onDeviation: Effect.fn("Reconciliation.onDeviation")((deviation) => {
174
+ const paths = [...new Set(deviation.paths)]
175
+ // Own keys only: a path named `toString` must not resolve to Object.prototype.
176
+ const ownerOf = (path: string): string | undefined =>
177
+ Object.hasOwn(deviation.declaredBy, path) ? deviation.declaredBy[path] : undefined
178
+ const discovered = [
179
+ ...new Set(
180
+ paths
181
+ .map(ownerOf)
182
+ .filter((owner): owner is string => owner !== undefined && owner !== deviation.nodeId)
183
+ )
184
+ ]
185
+ if (
186
+ discovered.length > 0 &&
187
+ paths.every((path) => {
188
+ const owner = ownerOf(path)
189
+ return owner !== undefined && owner !== deviation.nodeId
190
+ })
191
+ ) {
192
+ return Effect.succeed<Verdict>({
193
+ _tag: "Reorder",
194
+ dependsOn: discovered,
195
+ reason: `${deviation.nodeId} wrote paths declared by ${discovered.join(", ")}`
196
+ })
197
+ }
198
+ if (deviation.alsoDeviatedBy.length > 0) {
199
+ return Effect.succeed<Verdict>({
200
+ _tag: "FactorOut",
201
+ paths: deviation.paths,
202
+ reason: `${deviation.nodeId} and ${deviation.alsoDeviatedBy.join(", ")} produced the same undeclared paths`
203
+ })
204
+ }
205
+ return Effect.succeed<Verdict>({
206
+ _tag: "Fail",
207
+ reason: `${deviation.nodeId} wrote ${deviation.paths.join(", ")}, which no declaration explains`
208
+ })
209
+ }),
210
+ onConflict: Effect.fn("Reconciliation.onConflict")((conflict) =>
211
+ Effect.succeed<Verdict>({
212
+ _tag: "Fail",
213
+ reason: `${conflict.nodeId} could not land after ${conflict.rebases} rebases under ${conflict.strategy}`
214
+ })
215
+ )
216
+ })
217
+
218
+ /**
219
+ * Installs the deterministic default reconciler.
220
+ *
221
+ * @since 0.1.0
222
+ * @category layers
223
+ */
224
+ export const layerDefault: Layer.Layer<Reconciliation> = Layer.sync(Reconciliation, makeDefault)
@@ -0,0 +1,95 @@
1
+ /**
2
+ * An engine that replays recorded work and executes none.
3
+ *
4
+ * `smthrs runs verify` asks what a resume under the current code would do
5
+ * before anything runs: which recorded steps it would serve from their
6
+ * durable records, and which step it would execute again because its key no
7
+ * longer matches one. The engine is the only thing that can answer, because a
8
+ * step key is derived at dispatch from the running flow's own declaration,
9
+ * ordinal and scope. This service turns a durable engine into that question:
10
+ * a dispatch served from a durable record reports `replayed`, and the first
11
+ * dispatch that would run an action body dies with {@link WouldExecute} before
12
+ * any attempt row, snapshot, boundary or body. It reports `resumes` when it
13
+ * would re-enter a recorded attempt that never finished (a step parked inside
14
+ * its body), and `would-execute` when no record matches its key at all.
15
+ *
16
+ * The death is a defect on purpose. A typed failure would enter the action's
17
+ * retry policy, and the default policy never gives up; a defect is never
18
+ * retried, so the run settles with the verdict instead of spinning on it.
19
+ *
20
+ * Run it against a copy of the store. A replay still converges the journal
21
+ * rows a resume would write, and the run settles `failed` on the copy.
22
+ *
23
+ * @since 1.0.0
24
+ */
25
+
26
+ import * as Context from "effect/Context"
27
+ import type * as Effect from "effect/Effect"
28
+ import * as Layer from "effect/Layer"
29
+ import * as Schema from "effect/Schema"
30
+
31
+ /**
32
+ * One dispatch a replay-only engine saw.
33
+ *
34
+ * `stepKeyDigest` is the identity `flows_attempts` rows are keyed on, so a
35
+ * reader joins it to the recorded attempts directly. `action` is the declared
36
+ * action name. `outcome` is `replayed` for a dispatch served from a durable
37
+ * record (a recorded failure included), `resumes` for one that would re-enter
38
+ * a recorded attempt that never finished, and `would-execute` for one no
39
+ * record matches.
40
+ *
41
+ * @since 1.0.0
42
+ * @category models
43
+ */
44
+ export interface Dispatch {
45
+ readonly runId: string
46
+ readonly stepKeyDigest: string
47
+ readonly attempt: number
48
+ readonly action: string
49
+ readonly tier: "sealed" | "compensable" | "irreversible"
50
+ readonly outcome: "replayed" | "resumes" | "would-execute"
51
+ }
52
+
53
+ /**
54
+ * Receives every dispatch a replay-only engine settles, in settlement order.
55
+ *
56
+ * @since 1.0.0
57
+ * @category models
58
+ */
59
+ export interface Service {
60
+ readonly observe: (dispatch: Dispatch) => Effect.Effect<void>
61
+ }
62
+
63
+ /**
64
+ * Service tag. An engine composed with it in context executes no action body.
65
+ *
66
+ * @since 1.0.0
67
+ * @category services
68
+ */
69
+ export class ReplayOnly extends Context.Service<ReplayOnly, Service>()("@smthrs/engine-store/ReplayOnly") {}
70
+
71
+ /**
72
+ * The defect a replay-only dispatch dies with instead of executing.
73
+ *
74
+ * @since 1.0.0
75
+ * @category errors
76
+ */
77
+ export class WouldExecute extends Schema.TaggedError<WouldExecute>()("@smthrs/engine-store/WouldExecute", {
78
+ runId: Schema.String,
79
+ stepKeyDigest: Schema.String,
80
+ attempt: Schema.Number,
81
+ action: Schema.String
82
+ }) {
83
+ override get message(): string {
84
+ return `Action ${this.action} (step ${this.stepKeyDigest}, attempt ${this.attempt}) would execute`
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Provides a replay-only engine context that reports to `observe`.
90
+ *
91
+ * @since 1.0.0
92
+ * @category layers
93
+ */
94
+ export const layer = (observe: Service["observe"]): Layer.Layer<ReplayOnly> =>
95
+ Layer.succeed(ReplayOnly, ReplayOnly.of({ observe }))
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Deleting run history that has outlived its usefulness.
3
+ *
4
+ * Nothing in the durable stores forgets on its own: a finished run keeps its
5
+ * row, every attempt, every journal event, and every archived frame forever.
6
+ * That is the right default — a run's history is the only account of what an
7
+ * agent did to a repository — and it is why `smithers gc` exists rather than a
8
+ * background sweeper. Retention is an operator decision, taken explicitly,
9
+ * with a dry run available before anything is deleted.
10
+ *
11
+ * This module is the public surface. The operation lives in
12
+ * `internal/RetentionOps.ts` beside the other modules that read this package's
13
+ * own tables, so `internal/` is never imported by a consumer — the same split
14
+ * `Errors.ts` uses. {@link retain} and {@link layer} are that operation: one
15
+ * bounded pass over the engine ladder, inside one `journal.transact`.
16
+ *
17
+ * {@link collect} is the host-facing pass `smithers gc` runs, and it is a
18
+ * facade over the same guard. A project keeps its history in two files — the
19
+ * control plane's database and the engine's — and a sweep of one without the
20
+ * other leaves half of a deleted run behind, so the pass takes the database as
21
+ * a service and runs once per file. Which runs it may delete is
22
+ * {@link RetentionOps.lineagePrelude}'s answer, not a second guard written
23
+ * here: a run stays whenever a live run stands above or below it, over BOTH
24
+ * relations that make one run the parent of another — the `flows_run_parents`
25
+ * edge a spawned child records, and the `parent_run_id` column a trampoline
26
+ * lineage is chained through.
27
+ *
28
+ * Only terminal runs are ever considered. A `pending`, `running`, or
29
+ * `suspended` row belongs to work that can still resume.
30
+ *
31
+ * @since 1.0.0
32
+ */
33
+
34
+ import * as Dialect from "@smthrs/database/Dialect"
35
+ import * as DurableWriter from "@smthrs/database/DurableWriter"
36
+ import * as Effect from "effect/Effect"
37
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
38
+ import type { SqlError } from "effect/unstable/sql/SqlError"
39
+ import * as RetentionOps from "./internal/RetentionOps.ts"
40
+
41
+ export {
42
+ defaultLimit,
43
+ layer,
44
+ make,
45
+ type RetainOptions,
46
+ type RetainReport,
47
+ Retention,
48
+ RetentionError,
49
+ RetentionErrorCode,
50
+ type RunScopedTable,
51
+ /**
52
+ * Every table a deleted run leaves rows in. One inventory serves this pass
53
+ * and {@link Service.retain}, so neither can leak what the other deletes.
54
+ *
55
+ * @category constants
56
+ * @since 1.0.0
57
+ */
58
+ runScopedTables,
59
+ type Service,
60
+ terminalStatuses
61
+ } from "./internal/RetentionOps.ts"
62
+
63
+ /**
64
+ * What one retention pass would delete, or did.
65
+ *
66
+ * @category models
67
+ * @since 1.0.0
68
+ */
69
+ export interface Report {
70
+ readonly database: string
71
+ /** The threshold, as an epoch millisecond value. */
72
+ readonly olderThanMs: number
73
+ readonly runs: ReadonlyArray<string>
74
+ /** Rows deleted per table; empty under a dry run. */
75
+ readonly deleted: Readonly<Record<string, number>>
76
+ readonly dryRun: boolean
77
+ }
78
+
79
+ /**
80
+ * Arguments accepted by {@link collect}.
81
+ *
82
+ * @category models
83
+ * @since 1.0.0
84
+ */
85
+ export interface Options {
86
+ /** Delete terminal runs that finished strictly before this epoch millisecond. */
87
+ readonly olderThanMs: number
88
+ readonly dryRun?: boolean | undefined
89
+ /** A label for the report; the host's database path. */
90
+ readonly database?: string | undefined
91
+ /** Largest number of runs considered by this pass. Defaults to 1,000. */
92
+ readonly limit?: number | undefined
93
+ /** Runs retained by a host's cross-store ancestry, in addition to local live roots. */
94
+ readonly pins?: ReadonlyArray<string> | undefined
95
+ }
96
+
97
+ /** Whether a table exists in the connected database. */
98
+ const hasTable = (table: string): Effect.Effect<boolean, SqlError, SqlClient.SqlClient> =>
99
+ Effect.gen(function*() {
100
+ const sql = yield* SqlClient.SqlClient
101
+ const rows = yield* Dialect.tables(sql).pipe(Effect.map((rows) => rows.filter((row) => row.name === table)))
102
+ return rows.length > 0
103
+ })
104
+
105
+ /**
106
+ * The runs one pass would delete, oldest first, each with the run it names as
107
+ * its parent.
108
+ *
109
+ * The same candidate query `retain` runs: children before parents, so a
110
+ * trampoline lineage longer than the bound still loses a run every pass, and
111
+ * a run is excluded whenever a live run stands above or below it. Downward,
112
+ * deleting a parent whose child is still running would break the
113
+ * `parent_run_id` foreign key and drop the live child's edges with the
114
+ * `flows_run_parents_gc` trigger. Upward, a parked parent still reads a
115
+ * settled child's result out of its run row through `agent/await`, and it can
116
+ * be parked for longer than the threshold before it ever asks.
117
+ */
118
+ const eligibleCandidates = (
119
+ olderThanMs: number,
120
+ limit: number | undefined,
121
+ pins?: ReadonlyArray<string>
122
+ ): Effect.Effect<ReadonlyArray<RetentionOps.Candidate>, SqlError, SqlClient.SqlClient> =>
123
+ Effect.gen(function*() {
124
+ const sql = yield* SqlClient.SqlClient
125
+ if (!(yield* hasTable("flows_runs"))) return []
126
+ // The engine's edge table is absent from the control-plane database, which
127
+ // migrates the run store and the journal and nothing else. The prelude
128
+ // drops that half of the walk there and keeps the `parent_run_id` half, so
129
+ // one guard covers both files.
130
+ return yield* RetentionOps.candidatesOf(sql, {
131
+ cutoffMs: olderThanMs,
132
+ inclusive: false,
133
+ parentEdges: yield* hasTable("flows_run_parents"),
134
+ pins,
135
+ limit: RetentionOps.normalizeLimit(limit)
136
+ })
137
+ })
138
+
139
+ /**
140
+ * The terminal runs one pass would delete, oldest first.
141
+ *
142
+ * @category getters
143
+ * @since 1.0.0
144
+ */
145
+ export const eligible = (
146
+ olderThanMs: number,
147
+ limit = RetentionOps.defaultLimit
148
+ ): Effect.Effect<ReadonlyArray<string>, SqlError, SqlClient.SqlClient> =>
149
+ Effect.map(
150
+ eligibleCandidates(olderThanMs, limit),
151
+ (candidates) => candidates.map((candidate) => candidate.runId)
152
+ )
153
+
154
+ /**
155
+ * Runs one retention pass.
156
+ *
157
+ * The deletion itself is {@link RetentionOps.deleteRuns}, the same one
158
+ * {@link Service.retain} runs, so this pass cannot hold a shorter table list
159
+ * than that one and cannot delete run rows in an order the self-referential
160
+ * `parent_run_id` foreign key refuses. A handoff parent always sorts before
161
+ * its successor, so deleting in age order broke as soon as one lineage
162
+ * straddled a chunk boundary, and it broke AFTER the dependent rows of every
163
+ * eligible run were already gone. `assumeLadder: false` because this pass also
164
+ * runs against the control plane's database, which composed fewer stores.
165
+ *
166
+ * Eligibility and deletion share one retryable transaction: another writer
167
+ * cannot attach a live parent between the lineage scan and deletion. A busy
168
+ * retry recomputes eligibility rather than replaying an old candidate list.
169
+ * One transaction, for the reason `retain` opens one: a pass that removed a
170
+ * run's history and then refused on its row would have destroyed what it could
171
+ * not put back, and a workspace whose next pass refuses the same way can never
172
+ * be collected again.
173
+ *
174
+ * Under `dryRun` nothing is written and `deleted` is empty: the report names
175
+ * exactly the runs a real pass would remove, which is what makes
176
+ * `smithers gc --dry-run` worth trusting.
177
+ *
178
+ * @category constructors
179
+ * @since 1.0.0
180
+ */
181
+ export const collect = (
182
+ options: Options
183
+ ): Effect.Effect<Report, SqlError | RetentionOps.RetentionError, SqlClient.SqlClient> =>
184
+ Effect.gen(function*() {
185
+ const sql = yield* SqlClient.SqlClient
186
+ const dryRun = options.dryRun === true
187
+ const pass = Effect.gen(function*() {
188
+ const candidates = yield* eligibleCandidates(options.olderThanMs, options.limit, options.pins)
189
+ return yield* RetentionOps.deleteRuns(sql, candidates, {
190
+ dryRun,
191
+ assumeLadder: false
192
+ })
193
+ })
194
+ const removed = yield* (dryRun ? sql.withTransaction(pass) : DurableWriter.make(sql).write(pass).pipe(
195
+ Effect.catchIf(
196
+ (cause): cause is DurableWriter.DatabaseError => cause instanceof DurableWriter.DatabaseError,
197
+ (cause) =>
198
+ Effect.fail(
199
+ new RetentionOps.RetentionError({
200
+ code: "delete_failed",
201
+ message: "retention transaction failed; no history was deleted",
202
+ cause
203
+ })
204
+ )
205
+ )
206
+ ))
207
+ return {
208
+ database: options.database ?? "",
209
+ olderThanMs: options.olderThanMs,
210
+ runs: removed.runIds,
211
+ deleted: dryRun ? {} : removed.deleted,
212
+ dryRun
213
+ }
214
+ })
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The workspace run catalog read.
3
+ *
4
+ * `@smthrs/sync` serves a workspace subscription over a `RunCatalog`, and its
5
+ * own implementations are static or in-process. This is the durable source a
6
+ * `RunCatalog.makePolling` catalog reads, so a follower learns of a run
7
+ * another engine created.
8
+ *
9
+ * The operation lives in `internal/RunCatalogOps.ts`, beside the other
10
+ * modules that read this package's own tables; this module is the public
11
+ * surface, so `internal/` is never imported by a consumer.
12
+ *
13
+ * @since 0.1.0
14
+ */
15
+
16
+ export {
17
+ defaultLimit,
18
+ layer,
19
+ type ListOptions,
20
+ make,
21
+ RunCatalogError,
22
+ RunCatalogErrorCode,
23
+ RunCatalogRead,
24
+ type Service
25
+ } from "./internal/RunCatalogOps.ts"
26
+
27
+ export { Filters, type ListRunsOptions, maximumPageSize, type RunPage } from "./internal/RunListing.ts"
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Coalesced execution catch-up with permanent deletion evidence.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+
7
+ import { RunStoreError } from "@smthrs/run-store/RunStore"
8
+ import { Context, Effect, Layer, Schema } from "effect"
9
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
10
+ import type { Position } from "./ExecutionSnapshot.ts"
11
+ import * as Read from "./internal/ExecutionSnapshotRead.ts"
12
+
13
+ /**
14
+ * A live-row change or retained tombstone.
15
+ *
16
+ * @category models
17
+ * @since 1.0.0
18
+ */
19
+ export interface Change extends Position {
20
+ readonly runId: string
21
+ readonly deleted: boolean
22
+ }
23
+ /**
24
+ * One catch-up page at an engine watermark.
25
+ *
26
+ * @category models
27
+ * @since 1.0.0
28
+ */
29
+ export interface Page extends Position {
30
+ readonly changes: ReadonlyArray<Change>
31
+ /** Resume here, including across gaps from coalesced changes. */
32
+ readonly nextRevision: number
33
+ readonly hasMore: boolean
34
+ }
35
+ /**
36
+ * Bounded state-feed operations.
37
+ *
38
+ * @category models
39
+ * @since 1.0.0
40
+ */
41
+ export interface Service {
42
+ readonly current: Effect.Effect<Position, RunStoreError>
43
+ readonly changesSince: (options: Position & { readonly limit: number }) => Effect.Effect<Page, RunStoreError>
44
+ }
45
+ /**
46
+ * Durable change-feed service.
47
+ *
48
+ * @category services
49
+ * @since 1.0.0
50
+ */
51
+ export class RunChangeFeed extends Context.Service<RunChangeFeed, Service>()("@smthrs/engine-store/RunChangeFeed") {}
52
+ /**
53
+ * Maximum change-feed page size.
54
+ *
55
+ * @category constants
56
+ * @since 1.0.0
57
+ */
58
+ export const maximumPageSize = 1000
59
+ const Options = Schema.Struct({
60
+ source: Read.Source,
61
+ revision: Read.Natural,
62
+ limit: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: maximumPageSize }))
63
+ })
64
+ const ChangeRow = Schema.Struct({ run_id: Read.Identifier, revision: Read.Natural, deleted: Schema.Literals([0, 1]) })
65
+
66
+ /**
67
+ * Constructs the feed without polling or retention timers.
68
+ *
69
+ * @category constructors
70
+ * @since 1.0.0
71
+ */
72
+ export const make = (): Effect.Effect<Service, never, SqlClient.SqlClient> =>
73
+ Effect.gen(function*() {
74
+ const sql = yield* SqlClient.SqlClient
75
+ return {
76
+ current: Read.boundary("RunChangeFeed.current", Read.position(sql)),
77
+ changesSince: (options) =>
78
+ Read.boundary(
79
+ "RunChangeFeed.changesSince",
80
+ Effect.gen(function*() {
81
+ const input = yield* Read.decode(Options, options)
82
+ return yield* Read.transaction(
83
+ sql,
84
+ Effect.gen(function*() {
85
+ const at = yield* Read.position(sql)
86
+ if (input.source !== at.source || input.revision > at.revision) {
87
+ return yield* Effect.fail(
88
+ new RunStoreError({
89
+ method: "RunChangeFeed.changesSince",
90
+ code: "invalid_run",
91
+ message: "change cursor requires an explicit source rebuild",
92
+ cause: { requested: input, observed: at }
93
+ })
94
+ )
95
+ }
96
+ const rows = yield* sql`SELECT run_id, revision, deleted FROM flows_run_changes
97
+ WHERE revision > ${input.revision} AND revision <= ${at.revision}
98
+ ORDER BY revision LIMIT ${input.limit + 1}`
99
+ const decoded = yield* Effect.forEach(rows, (row) => Read.decode(ChangeRow, row))
100
+ const changes = decoded.slice(0, input.limit).map((row) => ({
101
+ runId: row.run_id,
102
+ source: at.source,
103
+ revision: row.revision,
104
+ deleted: row.deleted === 1
105
+ }))
106
+ const hasMore = decoded.length > input.limit
107
+ return {
108
+ ...at,
109
+ changes,
110
+ hasMore,
111
+ nextRevision: hasMore ? changes[changes.length - 1]!.revision : at.revision
112
+ }
113
+ })
114
+ )
115
+ })
116
+ )
117
+ }
118
+ })
119
+ /**
120
+ * Provides the SQL feed.
121
+ *
122
+ * @category layers
123
+ * @since 1.0.0
124
+ */
125
+ export const layer: Layer.Layer<RunChangeFeed, never, SqlClient.SqlClient> = Layer.effect(RunChangeFeed)(make())