@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,165 @@
1
+ /**
2
+ * The isolated half of an attempt: run the body in a workspace transaction,
3
+ * copy its diff bundle back, and rebase a bounded number of times when the
4
+ * host moved underneath it.
5
+ *
6
+ * Copy-back has no human review gate.
7
+ *
8
+ * @since 0.1.0
9
+ */
10
+
11
+ import type { FileBoundary } from "@smthrs/flow/FileBoundary"
12
+ import { DerivedKey } from "@smthrs/keys"
13
+ import * as Cause from "effect/Cause"
14
+ import type * as Crypto from "effect/Crypto"
15
+ import * as Effect from "effect/Effect"
16
+ import * as Exit from "effect/Exit"
17
+ import type * as FileSystem from "effect/FileSystem"
18
+ import * as Schema from "effect/Schema"
19
+ import * as StepBoundary from "../StepBoundary.ts"
20
+ import * as StepSandbox from "../StepSandbox.ts"
21
+ import * as WorkspaceSandbox from "../WorkspaceSandbox.ts"
22
+
23
+ /**
24
+ * An isolated execution whose diff bundle is now on the host.
25
+ *
26
+ * @since 0.1.0
27
+ * @category models
28
+ */
29
+ export interface Settlement {
30
+ readonly result: unknown
31
+ /**
32
+ * The content address of the applied bundle: a digest over every
33
+ * `(path, beforeDigest, afterDigest)` triple. It is the journal's handle on
34
+ * the copy-back, and the `diffIdentity` a deviation carries.
35
+ */
36
+ readonly bundleIdentity: string
37
+ readonly files: ReadonlyArray<WorkspaceSandbox.FileChange>
38
+ readonly effects: ReadonlyArray<WorkspaceSandbox.QueuedEffect>
39
+ /**
40
+ * Paths the body wrote outside its declared write set. Non-empty only in
41
+ * expected mode — hard mode fails instead — and the whole tree is in view,
42
+ * not just the declared read set `StepBoundary` can re-measure.
43
+ */
44
+ readonly deviations: ReadonlyArray<string>
45
+ /** How many times copy-back lost a race and the attempt re-ran from a fresh base. */
46
+ readonly rebases: number
47
+ }
48
+
49
+ /**
50
+ * How many times a losing copy-back re-runs the body from a fresh base.
51
+ *
52
+ * Bounded on purpose: an unbounded rebase against a workspace under sustained
53
+ * concurrent modification never converges. This retry budget does not
54
+ * recreate the removed worktree-lane surface.
55
+ *
56
+ * @since 0.1.0
57
+ * @category models
58
+ */
59
+ export const defaultMaxRebases = 3
60
+
61
+ const bundleIdentity = (
62
+ entries: ReadonlyArray<readonly [string, string | undefined, string | undefined]>
63
+ ): Effect.Effect<string, never, Crypto.Crypto> =>
64
+ Schema.decodeUnknownEffect(DerivedKey)({
65
+ kind: "bundle-identity",
66
+ // Canonicalization substitutes undefined array slots with null. Name and
67
+ // normalize each member first so absence is explicit in this durable key.
68
+ entries: entries.map(([path, before, after]) => ({
69
+ path,
70
+ before: before ?? null,
71
+ after: after ?? null
72
+ }))
73
+ }).pipe(Effect.orDie)
74
+
75
+ const conflicted = (cause: Cause.Cause<unknown>): boolean =>
76
+ cause.reasons.some((reason) =>
77
+ Cause.isFailReason(reason) && reason.error instanceof WorkspaceSandbox.MaterializationConflict
78
+ )
79
+
80
+ /**
81
+ * Runs one action body inside a workspace transaction and copies its result
82
+ * back.
83
+ *
84
+ * The host is untouched until copy-back, so every refusal below leaves the
85
+ * tree exactly as it found it:
86
+ *
87
+ * - a body failure propagates unchanged, because it is the action's own
88
+ * declared error and the retry policy must still match on it;
89
+ * - an execution the declaration did not predict fails with the boundary's own
90
+ * {@link StepBoundary.UndeclaredWrite}, which routes it through the caller's
91
+ * existing hard-violation classification instead of inventing a second one;
92
+ * - a lost copy-back race re-runs the body from a fresh base up to
93
+ * `maxRebases` times before surfacing the conflict.
94
+ *
95
+ * @since 0.1.0
96
+ * @category constructors
97
+ */
98
+ export const execute = (options: {
99
+ readonly sandbox: WorkspaceSandbox.Service
100
+ readonly descriptor: FileBoundary
101
+ /**
102
+ * The action body. The engine's encoded effect erases its requirements, so
103
+ * the sandbox's own surfaces are named here: they are what `execute` seeds,
104
+ * and naming them keeps a caller from having to launder the type.
105
+ */
106
+ readonly workflow: Effect.Effect<unknown, unknown, WorkspaceSandbox.Workspace | FileSystem.FileSystem>
107
+ readonly maxRebases?: number | undefined
108
+ }): Effect.Effect<Settlement, unknown, Crypto.Crypto> => {
109
+ const maxRebases = options.maxRebases ?? defaultMaxRebases
110
+ const attempt = (rebases: number): Effect.Effect<Settlement, unknown, Crypto.Crypto> =>
111
+ Effect.gen(function*() {
112
+ const executed = yield* options.sandbox.execute({
113
+ descriptor: options.descriptor,
114
+ workflow: options.workflow
115
+ })
116
+ if (executed._tag === "Invalidated") {
117
+ // NOTHING IS RETURNED FROM AN INVALIDATED EXECUTION. The candidate
118
+ // output, its files, and its queued effects are not on the shape at
119
+ // all; only the violations and the provenance identifying them are.
120
+ const paths = executed.violations.map((violation) => violation.resource.id)
121
+ const identity = yield* bundleIdentity(
122
+ executed.provenance.outputs.map((output) => [output.resource.id, undefined, output.digest])
123
+ )
124
+ if (executed.violations.some((violation) => violation.kind === "undeclared-read")) {
125
+ return yield* Effect.fail(
126
+ new StepSandbox.UndeclaredRead({
127
+ code: "undeclared_read",
128
+ paths: executed.violations
129
+ .filter((violation) => violation.kind === "undeclared-read")
130
+ .map((violation) => violation.resource.id),
131
+ diffIdentity: identity
132
+ })
133
+ )
134
+ }
135
+ return yield* Effect.fail(
136
+ new StepBoundary.UndeclaredWrite({
137
+ code: "undeclared_write",
138
+ paths,
139
+ diffIdentity: identity
140
+ })
141
+ )
142
+ }
143
+ const identity = yield* bundleIdentity(
144
+ executed.result.files.map((change) => [change.path, change.beforeDigest, change.afterDigest])
145
+ )
146
+ const applied = yield* options.sandbox.materialize(executed).pipe(Effect.exit)
147
+ if (Exit.isFailure(applied)) {
148
+ // Only a conflict is rebaseable: it says the base moved, which a fresh
149
+ // execution answers. A host or artifact refusal says the copy-back
150
+ // itself cannot be performed, and re-running the body would not help.
151
+ return conflicted(applied.cause) && rebases < maxRebases
152
+ ? yield* attempt(rebases + 1)
153
+ : yield* Effect.failCause(applied.cause)
154
+ }
155
+ return {
156
+ result: executed.result.output,
157
+ bundleIdentity: identity,
158
+ files: executed.result.files,
159
+ effects: executed.result.effects,
160
+ deviations: executed.violations.map((violation) => violation.resource.id),
161
+ rebases
162
+ }
163
+ })
164
+ return attempt(0)
165
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The engine store's one lock order for engine state and the journal.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+
7
+ import type { DatabaseError } from "@smthrs/database/DurableWriter"
8
+ import type { Journal } from "@smthrs/journal"
9
+ import * as Effect from "effect/Effect"
10
+ import type * as DurableEngineState from "../DurableEngineState.ts"
11
+
12
+ /**
13
+ * Binds one ordered transaction boundary to a pair of stores.
14
+ *
15
+ * **The order is part of the package's contract.** Every fiber that needs
16
+ * both boundaries takes `DurableEngineState.transaction` FIRST and opens the
17
+ * journal's write transaction inside it. Never the other way around. The SQL
18
+ * engine state cannot tell the difference, because its transaction and the
19
+ * journal's are the same `DurableWriter` transaction and one of them nests as
20
+ * a savepoint of the other either way. The memory engine state has a gate of
21
+ * its own, and the contract requires the two implementations to be
22
+ * semantically equal. Taking the journal transaction first leaves a fiber
23
+ * holding the writer while it waits for that gate, which deadlocks against
24
+ * any fiber holding the gate while it waits for the writer. Both waits keep the
25
+ * caller's interruptibility: the state gate is taken first, then DurableWriter
26
+ * queues for its own permit before entering Effect SQL's masked connection
27
+ * acquisition. A journal-only writer never takes the state gate, so the
28
+ * writer's permit is what keeps a caller waiting behind it cancellable.
29
+ *
30
+ * Within that order the boundary is atomic in both directions: a failure
31
+ * before COMMIT rolls the SQL transaction back AND restores the memory
32
+ * snapshot, and the memory snapshot is accepted exactly at SQL COMMIT,
33
+ * through the `onCommit` callback registered before the body can queue any
34
+ * publication. The gate is therefore already released when the journal runs
35
+ * its post-commit work: compaction capture runs in a CHILD fiber and must see
36
+ * a released gate, just as it sees a committed SQL transaction. Publication
37
+ * failures happen after both commits and cannot undo either.
38
+ *
39
+ * `transact` defaults to the journal's own transaction. A caller passes its
40
+ * own only to change how the writer's Exit is read, never to change the order.
41
+ *
42
+ * @category constructors
43
+ * @since 0.1.0
44
+ */
45
+ export const make = (
46
+ state: Pick<DurableEngineState.Service, "transaction">,
47
+ journal: Journal.Service
48
+ ) =>
49
+ <A, E, R>(
50
+ effect: Effect.Effect<A, E, R>,
51
+ transact: <B, F, S>(
52
+ write: Effect.Effect<B, F, S>
53
+ ) => Effect.Effect<B, F | Journal.JournalError | DatabaseError, S> = journal.transact
54
+ ): Effect.Effect<A, E | Journal.JournalError | DatabaseError, R> =>
55
+ Effect.suspend(() => {
56
+ let commit = Effect.void
57
+ let bodyCompleted = false
58
+ return state.transaction(
59
+ transact(Effect.gen(function*() {
60
+ yield* journal.whenCommitted(Effect.suspend(() => bodyCompleted ? commit : Effect.void))
61
+ const value = yield* effect
62
+ bodyCompleted = true
63
+ return value
64
+ })),
65
+ {
66
+ onCommit: (accept) => {
67
+ commit = accept
68
+ }
69
+ }
70
+ )
71
+ })
@@ -0,0 +1,36 @@
1
+ /** Projects only the saved outcome of an annotated trace checkpoint.
2
+ * @since 1.0.0
3
+ */
4
+
5
+ import { JournalEvent, StepFact } from "@smthrs/journal"
6
+ import * as Context from "effect/Context"
7
+ import * as Effect from "effect/Effect"
8
+ import * as Option from "effect/Option"
9
+ import * as Schema from "effect/Schema"
10
+
11
+ /** Builds the storage-only projector for one action.
12
+ * @category constructors
13
+ * @since 1.0.0
14
+ */
15
+ export const make = (action: unknown, runId: string) => {
16
+ const annotations = typeof action === "object" && action !== null && "annotations" in action
17
+ ? action.annotations as Context.Context<never>
18
+ : undefined
19
+ const annotated = annotations !== undefined && Option.isSome(Context.getOption(annotations, StepFact.Annotation))
20
+ return {
21
+ annotated,
22
+ settled: (outcome: unknown) =>
23
+ Effect.gen(function*() {
24
+ if (!annotated) return undefined
25
+ const fact = yield* Schema.decodeUnknownEffect(StepFact.Fact)(outcome).pipe(Effect.orDie)
26
+ const step = fact.step
27
+ return new JournalEvent.Input({
28
+ runId: JournalEvent.RunId.make(runId),
29
+ sourceId: JournalEvent.SourceId.make(`step-fact-v1:${step.stepId}:${step.attempt}:${step.ask}:${step.retry}`),
30
+ sourceSeq: JournalEvent.SourceSeq.make(fact.sourceSequence),
31
+ eventType: StepFact.eventType,
32
+ payload: fact
33
+ })
34
+ })
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Additive v2 constructors. Existing JournalRecords writers retain their bytes
3
+ * until a versioned writer cutover can supply complete lifecycle evidence.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+
8
+ /**
9
+ * Additive typed engine event constructors and decoders.
10
+ *
11
+ * @category events
12
+ * @since 1.0.0
13
+ */
14
+ export {
15
+ attempt,
16
+ attemptEventType,
17
+ AttemptPayload,
18
+ type Consumer,
19
+ CurrentAttempt,
20
+ decodeCurrentAttempt,
21
+ decodeEntry,
22
+ EventError,
23
+ ExecutionLifecycle,
24
+ Lineage,
25
+ stateEvent,
26
+ stateEventType,
27
+ StatePayload,
28
+ Wait
29
+ } from "@smthrs/journal/EngineEvent"
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Initial durable deferred-completion and clock-deadline schema.
3
+ *
4
+ * Schema boundary: `packages/smithers/flows/engine-store/docs/concepts/durable-waits.md`.
5
+ *
6
+ * @since 0.1.0
7
+ */
8
+
9
+ import * as Dialect from "@smthrs/database/Dialect"
10
+ import * as Effect from "effect/Effect"
11
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
12
+
13
+ /**
14
+ * Creates the `flows_deferred_completions` and `flows_clock_deadlines` tables.
15
+ *
16
+ * @category migrations
17
+ * @since 0.1.0
18
+ */
19
+ export const initial: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
20
+ const sql = yield* SqlClient.SqlClient
21
+
22
+ yield* sql`CREATE TABLE flows_deferred_completions (
23
+ flow_name TEXT NOT NULL CHECK (length(flow_name) > 0),
24
+ execution_id TEXT NOT NULL CHECK (length(execution_id) > 0),
25
+ deferred_name TEXT NOT NULL CHECK (length(deferred_name) > 0),
26
+ exit_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`exit_json`)}),
27
+ metadata_json TEXT CHECK (metadata_json IS NULL OR ${Dialect.jsonValid(sql, sql`metadata_json`)}),
28
+ completed_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${
29
+ Dialect.isInteger(sql, sql`completed_at_ms`)
30
+ } AND completed_at_ms >= 0 AND completed_at_ms <= 9007199254740991),
31
+ PRIMARY KEY (flow_name, execution_id, deferred_name),
32
+ FOREIGN KEY (execution_id) REFERENCES flows_runs (run_id)
33
+ )`
34
+
35
+ yield* sql`CREATE TABLE flows_clock_deadlines (
36
+ flow_name TEXT NOT NULL CHECK (length(flow_name) > 0),
37
+ execution_id TEXT NOT NULL CHECK (length(execution_id) > 0),
38
+ clock_name TEXT NOT NULL CHECK (length(clock_name) > 0),
39
+ deferred_name TEXT NOT NULL CHECK (length(deferred_name) > 0),
40
+ due_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${
41
+ Dialect.isInteger(sql, sql`due_at_ms`)
42
+ } AND due_at_ms >= 0 AND due_at_ms <= 9007199254740991),
43
+ completed_at_ms ${Dialect.integer(sql)} CHECK (completed_at_ms IS NULL OR (${
44
+ Dialect.isInteger(sql, sql`completed_at_ms`)
45
+ } AND completed_at_ms >= 0 AND completed_at_ms <= 9007199254740991)),
46
+ PRIMARY KEY (flow_name, execution_id, clock_name),
47
+ FOREIGN KEY (execution_id) REFERENCES flows_runs (run_id)
48
+ )`
49
+
50
+ yield* sql`CREATE INDEX flows_clock_deadlines_pending_idx ON flows_clock_deadlines (completed_at_ms, due_at_ms)`
51
+ })
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Durable suspected-edge storage for probabilistic selection.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+
7
+ import * as Dialect from "@smthrs/database/Dialect"
8
+ import * as Effect from "effect/Effect"
9
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
10
+
11
+ /**
12
+ * Creates the `flows_selection_suspected_edges` table.
13
+ *
14
+ * @category migrations
15
+ * @since 0.1.0
16
+ */
17
+ export const selectionStore: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
18
+ const sql = yield* SqlClient.SqlClient
19
+
20
+ yield* sql`CREATE TABLE flows_selection_suspected_edges (
21
+ scope TEXT NOT NULL CHECK (length(scope) > 0),
22
+ affects TEXT NOT NULL CHECK (length(affects) > 0),
23
+ confidence DOUBLE PRECISION NOT NULL CHECK (
24
+ ${
25
+ sql.literal(Dialect.isPostgres(sql) ? "TRUE" : "(typeof(confidence) = 'real' OR typeof(confidence) = 'integer')")
26
+ } AND
27
+ confidence >= 0 AND
28
+ confidence <= 1
29
+ ),
30
+ valid_from_ms ${Dialect.integer(sql)} NOT NULL CHECK (
31
+ ${Dialect.isInteger(sql, sql`valid_from_ms`)} AND
32
+ valid_from_ms >= 0 AND
33
+ valid_from_ms <= 9007199254740991
34
+ ),
35
+ evidence_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`evidence_json`)}),
36
+ PRIMARY KEY (scope, affects)
37
+ )`
38
+ })
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Durable, append-only source observations for compiled plan execution.
3
+ * @since 1.0.0
4
+ */
5
+
6
+ import * as Dialect from "@smthrs/database/Dialect"
7
+ import * as Effect from "effect/Effect"
8
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
9
+
10
+ /**
11
+ * Creates input generations and marks pre-observation executions as non-recoverable.
12
+ * @since 1.0.0
13
+ * @category migrations
14
+ */
15
+ export const planInputs: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
16
+ const sql = yield* SqlClient.SqlClient
17
+ yield* sql`CREATE TABLE flows_plan_input_legacy_runs (
18
+ run_id TEXT PRIMARY KEY NOT NULL REFERENCES flows_runs(run_id) ON DELETE CASCADE
19
+ )`
20
+ // A past source snapshot cannot be reconstructed from the files a completed
21
+ // action may already have changed. Preserve that uncertainty on upgrade.
22
+ yield* sql`INSERT INTO flows_plan_input_legacy_runs (run_id)
23
+ SELECT DISTINCT run_id FROM flows_attempts`
24
+ yield* Dialect.trigger(sql, {
25
+ name: `flows_plan_input_legacy_runs_no_update`,
26
+ table: `flows_plan_input_legacy_runs`,
27
+ event: "BEFORE UPDATE",
28
+ reject: "legacy plan input uncertainty is immutable"
29
+ })
30
+ yield* sql`CREATE TABLE flows_plan_input_heads (
31
+ run_id TEXT NOT NULL REFERENCES flows_runs(run_id) ON DELETE CASCADE,
32
+ plan_id TEXT NOT NULL CHECK (length(plan_id) > 0),
33
+ base_digest TEXT NOT NULL CHECK (length(base_digest) > 0),
34
+ generation ${Dialect.integer(sql)} NOT NULL CHECK (${
35
+ Dialect.isInteger(sql, sql`generation`)
36
+ } AND generation >= 0 AND generation <= 9007199254740991),
37
+ PRIMARY KEY (run_id, plan_id)
38
+ )`
39
+ yield* sql`CREATE UNIQUE INDEX flows_plan_input_heads_run_idx ON flows_plan_input_heads (run_id)`
40
+ yield* sql`CREATE TABLE flows_plan_input_generations (
41
+ run_id TEXT NOT NULL REFERENCES flows_runs(run_id) ON DELETE CASCADE,
42
+ plan_id TEXT NOT NULL CHECK (length(plan_id) > 0),
43
+ generation ${Dialect.integer(sql)} NOT NULL CHECK (${
44
+ Dialect.isInteger(sql, sql`generation`)
45
+ } AND generation >= 0 AND generation <= 9007199254740991),
46
+ snapshot_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`snapshot_json`)}),
47
+ checksum TEXT NOT NULL CHECK (length(checksum) = 64),
48
+ PRIMARY KEY (run_id, plan_id, generation)
49
+ )`
50
+ yield* Dialect.trigger(sql, {
51
+ name: `flows_plan_input_generations_no_update`,
52
+ table: `flows_plan_input_generations`,
53
+ event: "BEFORE UPDATE",
54
+ reject: "plan input generations are immutable"
55
+ })
56
+ yield* Dialect.trigger(sql, {
57
+ name: `flows_plan_input_heads_forward_only`,
58
+ table: `flows_plan_input_heads`,
59
+ event: "BEFORE UPDATE",
60
+ when: `NEW.run_id <> OLD.run_id OR NEW.plan_id <> OLD.plan_id OR
61
+ NEW.base_digest <> OLD.base_digest OR NEW.generation <> OLD.generation + 1`,
62
+ reject: "plan input heads only advance one generation"
63
+ })
64
+ for (const table of ["flows_plan_input_legacy_runs", "flows_plan_input_heads", "flows_plan_input_generations"]) {
65
+ // Cascade on run collection is allowed; direct deletion of replay state
66
+ // while its owning run exists is not.
67
+ yield* Dialect.trigger(sql, {
68
+ name: `${table}_no_delete`,
69
+ table: `${table}`,
70
+ event: "BEFORE DELETE",
71
+ when: `EXISTS (SELECT 1 FROM flows_runs WHERE run_id = OLD.run_id)`,
72
+ reject: "plan inputs belong to their run"
73
+ })
74
+ }
75
+ })
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Bind source observations to the runtime identity that admitted them.
3
+ * @since 1.0.0
4
+ */
5
+
6
+ import * as Dialect from "@smthrs/database/Dialect"
7
+ import * as Effect from "effect/Effect"
8
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
9
+
10
+ /**
11
+ * Older heads retain NULL: their original runtime environment is unknowable.
12
+ * New heads require an environment fingerprint, immutable for their lifetime.
13
+ * @since 1.0.0
14
+ * @category migrations
15
+ */
16
+ export const planEnvironment: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
17
+ const sql = yield* SqlClient.SqlClient
18
+ yield* sql`ALTER TABLE flows_plan_input_heads ADD COLUMN environment_digest TEXT
19
+ CHECK (environment_digest IS NULL OR length(environment_digest) > 0)`
20
+ yield* Dialect.trigger(sql, {
21
+ name: `flows_plan_input_heads_environment_required`,
22
+ table: `flows_plan_input_heads`,
23
+ event: "BEFORE INSERT",
24
+ when: `NEW.environment_digest IS NULL`,
25
+ reject: "new plan input heads require an environment identity"
26
+ })
27
+ yield* Dialect.trigger(sql, {
28
+ name: `flows_plan_input_heads_environment_immutable`,
29
+ table: `flows_plan_input_heads`,
30
+ event: "BEFORE UPDATE",
31
+ when: `NEW.environment_digest IS DISTINCT FROM OLD.environment_digest`,
32
+ reject: "plan input environment identity is immutable"
33
+ })
34
+ })
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Durable scheduler merge intentions and their committed plan extensions.
3
+ * @since 1.0.0
4
+ */
5
+
6
+ import * as Dialect from "@smthrs/database/Dialect"
7
+ import * as Effect from "effect/Effect"
8
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
9
+
10
+ /**
11
+ * Existing heads retain an unknown merge-state version; a later runtime must
12
+ * not infer its missing control decisions from arbitrary plan-node bodies.
13
+ * @since 1.0.0
14
+ * @category migrations
15
+ */
16
+ export const planMerges: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
17
+ const sql = yield* SqlClient.SqlClient
18
+ yield* sql`ALTER TABLE flows_plan_input_heads ADD COLUMN merge_state_version ${Dialect.integer(sql)}
19
+ CHECK (merge_state_version IS NULL OR merge_state_version = 1)`
20
+ yield* Dialect.trigger(sql, {
21
+ name: `flows_plan_input_heads_merge_version_immutable`,
22
+ table: `flows_plan_input_heads`,
23
+ event: "BEFORE UPDATE",
24
+ when: `NEW.merge_state_version IS DISTINCT FROM OLD.merge_state_version`,
25
+ reject: "plan merge state version is immutable"
26
+ })
27
+ yield* sql`CREATE TABLE flows_plan_merge_intents (
28
+ run_id TEXT NOT NULL REFERENCES flows_runs(run_id) ON DELETE CASCADE,
29
+ stopped_node_id TEXT NOT NULL CHECK (length(stopped_node_id) > 0),
30
+ intent_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`intent_json`)}),
31
+ checksum TEXT NOT NULL CHECK (length(checksum) = 64),
32
+ PRIMARY KEY (run_id, stopped_node_id)
33
+ )`
34
+ yield* sql`CREATE TABLE flows_plan_merge_completions (
35
+ run_id TEXT NOT NULL REFERENCES flows_runs(run_id) ON DELETE CASCADE,
36
+ stopped_node_id TEXT NOT NULL CHECK (length(stopped_node_id) > 0),
37
+ generation ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql`generation`)} AND generation > 0),
38
+ merge_node_id TEXT NOT NULL CHECK (length(merge_node_id) > 0),
39
+ completion_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`completion_json`)}),
40
+ checksum TEXT NOT NULL CHECK (length(checksum) = 64),
41
+ PRIMARY KEY (run_id, stopped_node_id),
42
+ UNIQUE (run_id, generation), UNIQUE (run_id, merge_node_id),
43
+ FOREIGN KEY (run_id, stopped_node_id) REFERENCES flows_plan_merge_intents(run_id, stopped_node_id) ON DELETE CASCADE
44
+ )`
45
+ for (const table of ["flows_plan_merge_intents", "flows_plan_merge_completions"]) {
46
+ yield* Dialect.trigger(sql, {
47
+ name: `${table}_no_update`,
48
+ table: `${table}`,
49
+ event: "BEFORE UPDATE",
50
+ reject: "plan merge decisions are immutable"
51
+ })
52
+ yield* Dialect.trigger(sql, {
53
+ name: `${table}_no_delete`,
54
+ table: `${table}`,
55
+ event: "BEFORE DELETE",
56
+ when: `EXISTS (SELECT 1 FROM flows_runs WHERE run_id = OLD.run_id)`,
57
+ reject: "plan merge decisions belong to their run"
58
+ })
59
+ }
60
+ })
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Indexed engine execution observation and ordering.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+
7
+ import * as Dialect from "@smthrs/database/Dialect"
8
+ import * as Effect from "effect/Effect"
9
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
10
+
11
+ /**
12
+ * Brings existing spawn edges into the migration ladder and binds changes to
13
+ * their child's run revision. Run-store owns the shared revision triggers.
14
+ * @category migrations
15
+ * @since 1.0.0
16
+ */
17
+ export const executionListing: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
18
+ const sql = yield* SqlClient.SqlClient
19
+ yield* sql`CREATE TABLE IF NOT EXISTS flows_run_parents (
20
+ child_id TEXT NOT NULL CHECK (length(child_id) > 0),
21
+ parent_id TEXT NOT NULL CHECK (length(parent_id) > 0),
22
+ seq ${Dialect.integer(sql)} NOT NULL CHECK (${
23
+ Dialect.isInteger(sql, sql`seq`)
24
+ } AND seq >= 0 AND seq <= 9007199254740991),
25
+ PRIMARY KEY (child_id, parent_id)
26
+ )`
27
+ yield* sql`CREATE INDEX IF NOT EXISTS flows_run_parents_parent_idx ON flows_run_parents (parent_id)`
28
+ yield* sql`CREATE INDEX flows_run_parents_first_idx ON flows_run_parents (child_id, seq, parent_id)`
29
+ yield* sql`CREATE INDEX flows_run_parents_children_idx ON flows_run_parents (parent_id, seq, child_id)`
30
+ yield* Dialect.trigger(sql, {
31
+ name: "flows_run_parents_gc",
32
+ table: "flows_runs",
33
+ event: "AFTER DELETE",
34
+ body: "DELETE FROM flows_run_parents WHERE child_id = OLD.run_id OR parent_id = OLD.run_id;"
35
+ })
36
+ yield* sql`ALTER TABLE flows_runs ADD COLUMN execution_parent_id TEXT`
37
+ yield* sql`ALTER TABLE flows_runs ADD COLUMN execution_flow TEXT
38
+ GENERATED ALWAYS AS (${Dialect.jsonText(sql, sql`state_json`, "$.flowName")}) ${
39
+ sql.literal(Dialect.isPostgres(sql) ? "STORED" : "VIRTUAL")
40
+ }`
41
+ yield* sql`ALTER TABLE flows_runs ADD COLUMN execution_lineage TEXT
42
+ GENERATED ALWAYS AS (COALESCE(lineage_id, run_id)) ${sql.literal(Dialect.isPostgres(sql) ? "STORED" : "VIRTUAL")}`
43
+ yield* sql`CREATE INDEX flows_runs_round_page_idx ON flows_runs (execution_lineage, COALESCE(round_ordinal, 0), run_id)`
44
+ yield* Dialect.trigger(sql, {
45
+ name: `flows_runs_creation_immutable`,
46
+ table: `flows_runs`,
47
+ event: "BEFORE UPDATE OF created_at_ms",
48
+ when: `NEW.created_at_ms <> OLD.created_at_ms`,
49
+ reject: "execution creation key is immutable"
50
+ })
51
+ yield* sql`UPDATE flows_runs SET execution_parent_id = COALESCE(parent_run_id,
52
+ (SELECT parent_id FROM flows_run_parents WHERE child_id = run_id ORDER BY seq, parent_id LIMIT 1))`
53
+ for (const operation of ["INSERT", "UPDATE OF parent_run_id"] as const) {
54
+ yield* Dialect.trigger(sql, {
55
+ name: `flows_runs_effective_parent_${operation === "INSERT" ? "insert" : "update"}`,
56
+ table: "flows_runs",
57
+ event: `AFTER ${operation}`,
58
+ body: `
59
+ UPDATE flows_runs SET execution_parent_id = COALESCE(NEW.parent_run_id,
60
+ (SELECT parent_id FROM flows_run_parents WHERE child_id = NEW.run_id ORDER BY seq, parent_id LIMIT 1))
61
+ WHERE run_id = NEW.run_id;
62
+ `
63
+ })
64
+ }
65
+ for (const operation of ["INSERT", "UPDATE", "DELETE"] as const) {
66
+ const row = operation === "DELETE" ? "OLD" : "NEW"
67
+ yield* Dialect.trigger(sql, {
68
+ name: `flows_run_parents_revision_${operation.toLowerCase()}`,
69
+ table: "flows_run_parents",
70
+ event: `AFTER ${operation}`,
71
+ body: `
72
+ UPDATE flows_runs SET execution_parent_id = COALESCE(parent_run_id,
73
+ (SELECT parent_id FROM flows_run_parents WHERE child_id = run_id ORDER BY seq, parent_id LIMIT 1))
74
+ WHERE run_id = ${row}.child_id ${operation === "UPDATE" ? "OR run_id = OLD.child_id" : ""};
75
+ `
76
+ })
77
+ }
78
+ // Every subset of the five equality filters has its creation-order suffix.
79
+ // This avoids rare combined predicates degrading to whole-history scans.
80
+ const fields = ["status", "execution_flow", "execution_parent_id", "execution_lineage", "waiting_reason"]
81
+ for (let mask = 0; mask < 32; mask++) {
82
+ const columns = fields.filter((_, index) => (mask & (1 << index)) !== 0)
83
+ yield* sql.unsafe(`CREATE INDEX flows_runs_listing_${mask} ON flows_runs
84
+ (${[...columns, "created_at_ms", "run_id"].join(", ")})`)
85
+ }
86
+ })
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Indexed allocation of the global run-parent sequence.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+
7
+ import * as Effect from "effect/Effect"
8
+ import * as SqlClient from "effect/unstable/sql/SqlClient"
9
+
10
+ /**
11
+ * Supports MAX(seq) without scanning retained edges from unrelated runs.
12
+ *
13
+ * @category migrations
14
+ * @since 1.0.0
15
+ */
16
+ export const runParentSequence: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {
17
+ const sql = yield* SqlClient.SqlClient
18
+ yield* sql`CREATE INDEX flows_run_parents_seq_idx ON flows_run_parents (seq)`
19
+ })