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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +21 -0
  3. package/README.md +146 -2
  4. package/dist/cjs/ArtifactGc.d.ts +235 -0
  5. package/dist/cjs/ArtifactGc.d.ts.map +1 -0
  6. package/dist/cjs/ArtifactGc.js +183 -0
  7. package/dist/cjs/ArtifactGc.js.map +7 -0
  8. package/dist/cjs/ArtifactSync.d.ts +164 -0
  9. package/dist/cjs/ArtifactSync.d.ts.map +1 -0
  10. package/dist/cjs/ArtifactSync.js +144 -0
  11. package/dist/cjs/ArtifactSync.js.map +7 -0
  12. package/dist/cjs/CacheSync.d.ts +112 -0
  13. package/dist/cjs/CacheSync.d.ts.map +1 -0
  14. package/dist/cjs/CacheSync.js +64 -0
  15. package/dist/cjs/CacheSync.js.map +7 -0
  16. package/dist/cjs/DeferredClockFold.d.ts +354 -0
  17. package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
  18. package/dist/cjs/DeferredClockFold.js +335 -0
  19. package/dist/cjs/DeferredClockFold.js.map +7 -0
  20. package/dist/cjs/DisasterRecovery.d.ts +431 -0
  21. package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
  22. package/dist/cjs/DisasterRecovery.js +453 -0
  23. package/dist/cjs/DisasterRecovery.js.map +7 -0
  24. package/dist/cjs/DurableEngineState.d.ts +776 -0
  25. package/dist/cjs/DurableEngineState.d.ts.map +1 -0
  26. package/dist/cjs/DurableEngineState.js +1536 -0
  27. package/dist/cjs/DurableEngineState.js.map +7 -0
  28. package/dist/cjs/EngineStore.d.ts +158 -0
  29. package/dist/cjs/EngineStore.d.ts.map +1 -0
  30. package/dist/cjs/EngineStore.js +398 -0
  31. package/dist/cjs/EngineStore.js.map +7 -0
  32. package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
  33. package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
  34. package/dist/cjs/EngineStoreMetrics.js +135 -0
  35. package/dist/cjs/EngineStoreMetrics.js.map +7 -0
  36. package/dist/cjs/Errors.d.ts +22 -0
  37. package/dist/cjs/Errors.d.ts.map +1 -0
  38. package/dist/cjs/Errors.js +39 -0
  39. package/dist/cjs/Errors.js.map +7 -0
  40. package/dist/cjs/EventTypes.d.ts +27 -0
  41. package/dist/cjs/EventTypes.d.ts.map +1 -0
  42. package/dist/cjs/EventTypes.js +37 -0
  43. package/dist/cjs/EventTypes.js.map +7 -0
  44. package/dist/cjs/ExecutionFacts.d.ts +59 -0
  45. package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
  46. package/dist/cjs/ExecutionFacts.js +123 -0
  47. package/dist/cjs/ExecutionFacts.js.map +7 -0
  48. package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
  49. package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
  50. package/dist/cjs/ExecutionSnapshot.js +111 -0
  51. package/dist/cjs/ExecutionSnapshot.js.map +7 -0
  52. package/dist/cjs/Inconsistency.d.ts +154 -0
  53. package/dist/cjs/Inconsistency.d.ts.map +1 -0
  54. package/dist/cjs/Inconsistency.js +135 -0
  55. package/dist/cjs/Inconsistency.js.map +7 -0
  56. package/dist/cjs/Migrations.d.ts +56 -0
  57. package/dist/cjs/Migrations.d.ts.map +1 -0
  58. package/dist/cjs/Migrations.js +78 -0
  59. package/dist/cjs/Migrations.js.map +7 -0
  60. package/dist/cjs/OwnerIdentity.d.ts +91 -0
  61. package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
  62. package/dist/cjs/OwnerIdentity.js +65 -0
  63. package/dist/cjs/OwnerIdentity.js.map +7 -0
  64. package/dist/cjs/PlanInputStore.d.ts +110 -0
  65. package/dist/cjs/PlanInputStore.d.ts.map +1 -0
  66. package/dist/cjs/PlanInputStore.js +224 -0
  67. package/dist/cjs/PlanInputStore.js.map +7 -0
  68. package/dist/cjs/PlanMergeStore.d.ts +113 -0
  69. package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
  70. package/dist/cjs/PlanMergeStore.js +255 -0
  71. package/dist/cjs/PlanMergeStore.js.map +7 -0
  72. package/dist/cjs/PlanScheduler.d.ts +363 -0
  73. package/dist/cjs/PlanScheduler.d.ts.map +1 -0
  74. package/dist/cjs/PlanScheduler.js +1090 -0
  75. package/dist/cjs/PlanScheduler.js.map +7 -0
  76. package/dist/cjs/Reconciliation.d.ts +175 -0
  77. package/dist/cjs/Reconciliation.d.ts.map +1 -0
  78. package/dist/cjs/Reconciliation.js +119 -0
  79. package/dist/cjs/Reconciliation.js.map +7 -0
  80. package/dist/cjs/ReplayOnly.d.ts +91 -0
  81. package/dist/cjs/ReplayOnly.d.ts.map +1 -0
  82. package/dist/cjs/ReplayOnly.js +52 -0
  83. package/dist/cjs/ReplayOnly.js.map +7 -0
  84. package/dist/cjs/Retention.d.ts +113 -0
  85. package/dist/cjs/Retention.d.ts.map +1 -0
  86. package/dist/cjs/Retention.js +99 -0
  87. package/dist/cjs/Retention.js.map +7 -0
  88. package/dist/cjs/RunCatalogRead.d.ts +17 -0
  89. package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
  90. package/dist/cjs/RunCatalogRead.js +33 -0
  91. package/dist/cjs/RunCatalogRead.js.map +7 -0
  92. package/dist/cjs/RunChangeFeed.d.ts +75 -0
  93. package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
  94. package/dist/cjs/RunChangeFeed.js +96 -0
  95. package/dist/cjs/RunChangeFeed.js.map +7 -0
  96. package/dist/cjs/RunState.d.ts +116 -0
  97. package/dist/cjs/RunState.d.ts.map +1 -0
  98. package/dist/cjs/RunState.js +76 -0
  99. package/dist/cjs/RunState.js.map +7 -0
  100. package/dist/cjs/Selection.d.ts +495 -0
  101. package/dist/cjs/Selection.d.ts.map +1 -0
  102. package/dist/cjs/Selection.js +288 -0
  103. package/dist/cjs/Selection.js.map +7 -0
  104. package/dist/cjs/SelectionStore.d.ts +141 -0
  105. package/dist/cjs/SelectionStore.d.ts.map +1 -0
  106. package/dist/cjs/SelectionStore.js +229 -0
  107. package/dist/cjs/SelectionStore.js.map +7 -0
  108. package/dist/cjs/StepBoundary.d.ts +501 -0
  109. package/dist/cjs/StepBoundary.d.ts.map +1 -0
  110. package/dist/cjs/StepBoundary.js +619 -0
  111. package/dist/cjs/StepBoundary.js.map +7 -0
  112. package/dist/cjs/StepCacheFold.d.ts +148 -0
  113. package/dist/cjs/StepCacheFold.d.ts.map +1 -0
  114. package/dist/cjs/StepCacheFold.js +131 -0
  115. package/dist/cjs/StepCacheFold.js.map +7 -0
  116. package/dist/cjs/StepSandbox.d.ts +78 -0
  117. package/dist/cjs/StepSandbox.d.ts.map +1 -0
  118. package/dist/cjs/StepSandbox.js +75 -0
  119. package/dist/cjs/StepSandbox.js.map +7 -0
  120. package/dist/cjs/WakeBus.d.ts +116 -0
  121. package/dist/cjs/WakeBus.d.ts.map +1 -0
  122. package/dist/cjs/WakeBus.js +89 -0
  123. package/dist/cjs/WakeBus.js.map +7 -0
  124. package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
  125. package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
  126. package/dist/cjs/WorkspaceSandbox.js +711 -0
  127. package/dist/cjs/WorkspaceSandbox.js.map +7 -0
  128. package/dist/cjs/index.d.ts +157 -0
  129. package/dist/cjs/index.d.ts.map +1 -0
  130. package/dist/cjs/index.js +95 -0
  131. package/dist/cjs/index.js.map +7 -0
  132. package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
  133. package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
  134. package/dist/cjs/internal/ActionPersistence.js +1395 -0
  135. package/dist/cjs/internal/ActionPersistence.js.map +7 -0
  136. package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
  137. package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
  138. package/dist/cjs/internal/ArtifactRoots.js +89 -0
  139. package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
  140. package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
  141. package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
  142. package/dist/cjs/internal/AttemptAdmission.js +52 -0
  143. package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
  144. package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
  145. package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
  146. package/dist/cjs/internal/AttemptLifecycle.js +112 -0
  147. package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
  148. package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
  149. package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
  150. package/dist/cjs/internal/AttemptProbe.js +66 -0
  151. package/dist/cjs/internal/AttemptProbe.js.map +7 -0
  152. package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
  153. package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
  154. package/dist/cjs/internal/CacheAdmission.js +71 -0
  155. package/dist/cjs/internal/CacheAdmission.js.map +7 -0
  156. package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
  157. package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
  158. package/dist/cjs/internal/CacheAgeHistory.js +61 -0
  159. package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
  160. package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
  161. package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
  162. package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
  163. package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
  164. package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
  165. package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
  166. package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
  167. package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
  168. package/dist/cjs/internal/CachePublication.d.ts +97 -0
  169. package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
  170. package/dist/cjs/internal/CachePublication.js +80 -0
  171. package/dist/cjs/internal/CachePublication.js.map +7 -0
  172. package/dist/cjs/internal/CallFacts.d.ts +15 -0
  173. package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
  174. package/dist/cjs/internal/CallFacts.js +97 -0
  175. package/dist/cjs/internal/CallFacts.js.map +7 -0
  176. package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
  177. package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
  178. package/dist/cjs/internal/CopiedRecord.js +134 -0
  179. package/dist/cjs/internal/CopiedRecord.js.map +7 -0
  180. package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
  181. package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
  182. package/dist/cjs/internal/DeferredPersistence.js +270 -0
  183. package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
  184. package/dist/cjs/internal/EffectRecords.d.ts +92 -0
  185. package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
  186. package/dist/cjs/internal/EffectRecords.js +63 -0
  187. package/dist/cjs/internal/EffectRecords.js.map +7 -0
  188. package/dist/cjs/internal/EngineJj.d.ts +30 -0
  189. package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
  190. package/dist/cjs/internal/EngineJj.js +42 -0
  191. package/dist/cjs/internal/EngineJj.js.map +7 -0
  192. package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
  193. package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
  194. package/dist/cjs/internal/EngineStateSchema.js +58 -0
  195. package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
  196. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
  197. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  198. package/dist/cjs/internal/ExecutionSnapshotRead.js +199 -0
  199. package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
  200. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
  201. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  202. package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
  203. package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
  204. package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
  205. package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
  206. package/dist/cjs/internal/ExitEncoding.js +236 -0
  207. package/dist/cjs/internal/ExitEncoding.js.map +7 -0
  208. package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
  209. package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
  210. package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
  211. package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
  212. package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
  213. package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
  214. package/dist/cjs/internal/FileEnumeration.js +194 -0
  215. package/dist/cjs/internal/FileEnumeration.js.map +7 -0
  216. package/dist/cjs/internal/HostReflection.d.ts +80 -0
  217. package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
  218. package/dist/cjs/internal/HostReflection.js +43 -0
  219. package/dist/cjs/internal/HostReflection.js.map +7 -0
  220. package/dist/cjs/internal/JournalRecords.d.ts +325 -0
  221. package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
  222. package/dist/cjs/internal/JournalRecords.js +122 -0
  223. package/dist/cjs/internal/JournalRecords.js.map +7 -0
  224. package/dist/cjs/internal/NodeJournal.d.ts +157 -0
  225. package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
  226. package/dist/cjs/internal/NodeJournal.js +192 -0
  227. package/dist/cjs/internal/NodeJournal.js.map +7 -0
  228. package/dist/cjs/internal/Ordering.d.ts +14 -0
  229. package/dist/cjs/internal/Ordering.d.ts.map +1 -0
  230. package/dist/cjs/internal/Ordering.js +25 -0
  231. package/dist/cjs/internal/Ordering.js.map +7 -0
  232. package/dist/cjs/internal/PlanInputs.d.ts +14 -0
  233. package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
  234. package/dist/cjs/internal/PlanInputs.js +78 -0
  235. package/dist/cjs/internal/PlanInputs.js.map +7 -0
  236. package/dist/cjs/internal/PlanMerges.d.ts +178 -0
  237. package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
  238. package/dist/cjs/internal/PlanMerges.js +125 -0
  239. package/dist/cjs/internal/PlanMerges.js.map +7 -0
  240. package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
  241. package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
  242. package/dist/cjs/internal/ProvenanceSlot.js +53 -0
  243. package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
  244. package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
  245. package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
  246. package/dist/cjs/internal/ResultEnvelope.js +90 -0
  247. package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
  248. package/dist/cjs/internal/RetentionOps.d.ts +414 -0
  249. package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
  250. package/dist/cjs/internal/RetentionOps.js +354 -0
  251. package/dist/cjs/internal/RetentionOps.js.map +7 -0
  252. package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
  253. package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
  254. package/dist/cjs/internal/RunCatalogOps.js +85 -0
  255. package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
  256. package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
  257. package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
  258. package/dist/cjs/internal/RunCoordinator.js +123 -0
  259. package/dist/cjs/internal/RunCoordinator.js.map +7 -0
  260. package/dist/cjs/internal/RunDriver.d.ts +192 -0
  261. package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
  262. package/dist/cjs/internal/RunDriver.js +1584 -0
  263. package/dist/cjs/internal/RunDriver.js.map +7 -0
  264. package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
  265. package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
  266. package/dist/cjs/internal/RunLifecycle.js +63 -0
  267. package/dist/cjs/internal/RunLifecycle.js.map +7 -0
  268. package/dist/cjs/internal/RunListing.d.ts +78 -0
  269. package/dist/cjs/internal/RunListing.d.ts.map +1 -0
  270. package/dist/cjs/internal/RunListing.js +171 -0
  271. package/dist/cjs/internal/RunListing.js.map +7 -0
  272. package/dist/cjs/internal/RunListingError.d.ts +35 -0
  273. package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
  274. package/dist/cjs/internal/RunListingError.js +47 -0
  275. package/dist/cjs/internal/RunListingError.js.map +7 -0
  276. package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
  277. package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
  278. package/dist/cjs/internal/RuntimeGraph.js +180 -0
  279. package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
  280. package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
  281. package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
  282. package/dist/cjs/internal/SandboxedExecution.js +104 -0
  283. package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
  284. package/dist/cjs/internal/StateTransaction.d.ts +44 -0
  285. package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
  286. package/dist/cjs/internal/StateTransaction.js +52 -0
  287. package/dist/cjs/internal/StateTransaction.js.map +7 -0
  288. package/dist/cjs/internal/StepFacts.d.ts +14 -0
  289. package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
  290. package/dist/cjs/internal/StepFacts.js +58 -0
  291. package/dist/cjs/internal/StepFacts.js.map +7 -0
  292. package/dist/cjs/internal/TypedEvents.d.ts +14 -0
  293. package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
  294. package/dist/cjs/internal/TypedEvents.js +37 -0
  295. package/dist/cjs/internal/TypedEvents.js.map +7 -0
  296. package/dist/cjs/migrations/0001_initial.d.ts +17 -0
  297. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  298. package/dist/cjs/migrations/0001_initial.js +61 -0
  299. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  300. package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
  301. package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
  302. package/dist/cjs/migrations/0002_selection_store.js +56 -0
  303. package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
  304. package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
  305. package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
  306. package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
  307. package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
  308. package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
  309. package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
  310. package/dist/cjs/migrations/0004_plan_environment.js +56 -0
  311. package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
  312. package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
  313. package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
  314. package/dist/cjs/migrations/0005_plan_merges.js +82 -0
  315. package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
  316. package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
  317. package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
  318. package/dist/cjs/migrations/0006_execution_listing.js +101 -0
  319. package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
  320. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
  321. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  322. package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
  323. package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
  324. package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
  325. package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
  326. package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
  327. package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
  328. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
  329. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  330. package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
  331. package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
  332. package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
  333. package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
  334. package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
  335. package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
  336. package/dist/cjs/package.json +1 -0
  337. package/dist/cjs/test/TestStores.d.ts +89 -0
  338. package/dist/cjs/test/TestStores.d.ts.map +1 -0
  339. package/dist/cjs/test/TestStores.js +98 -0
  340. package/dist/cjs/test/TestStores.js.map +7 -0
  341. package/dist/esm/ArtifactGc.d.ts +235 -0
  342. package/dist/esm/ArtifactGc.d.ts.map +1 -0
  343. package/dist/esm/ArtifactGc.js +268 -0
  344. package/dist/esm/ArtifactGc.js.map +1 -0
  345. package/dist/esm/ArtifactSync.d.ts +164 -0
  346. package/dist/esm/ArtifactSync.d.ts.map +1 -0
  347. package/dist/esm/ArtifactSync.js +176 -0
  348. package/dist/esm/ArtifactSync.js.map +1 -0
  349. package/dist/esm/CacheSync.d.ts +112 -0
  350. package/dist/esm/CacheSync.d.ts.map +1 -0
  351. package/dist/esm/CacheSync.js +94 -0
  352. package/dist/esm/CacheSync.js.map +1 -0
  353. package/dist/esm/DeferredClockFold.d.ts +354 -0
  354. package/dist/esm/DeferredClockFold.d.ts.map +1 -0
  355. package/dist/esm/DeferredClockFold.js +472 -0
  356. package/dist/esm/DeferredClockFold.js.map +1 -0
  357. package/dist/esm/DisasterRecovery.d.ts +431 -0
  358. package/dist/esm/DisasterRecovery.d.ts.map +1 -0
  359. package/dist/esm/DisasterRecovery.js +523 -0
  360. package/dist/esm/DisasterRecovery.js.map +1 -0
  361. package/dist/esm/DurableEngineState.d.ts +776 -0
  362. package/dist/esm/DurableEngineState.d.ts.map +1 -0
  363. package/dist/esm/DurableEngineState.js +1648 -0
  364. package/dist/esm/DurableEngineState.js.map +1 -0
  365. package/dist/esm/EngineStore.d.ts +158 -0
  366. package/dist/esm/EngineStore.d.ts.map +1 -0
  367. package/dist/esm/EngineStore.js +403 -0
  368. package/dist/esm/EngineStore.js.map +1 -0
  369. package/dist/esm/EngineStoreMetrics.d.ts +276 -0
  370. package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
  371. package/dist/esm/EngineStoreMetrics.js +260 -0
  372. package/dist/esm/EngineStoreMetrics.js.map +1 -0
  373. package/dist/esm/Errors.d.ts +22 -0
  374. package/dist/esm/Errors.d.ts.map +1 -0
  375. package/dist/esm/Errors.js +22 -0
  376. package/dist/esm/Errors.js.map +1 -0
  377. package/dist/esm/EventTypes.d.ts +27 -0
  378. package/dist/esm/EventTypes.d.ts.map +1 -0
  379. package/dist/esm/EventTypes.js +27 -0
  380. package/dist/esm/EventTypes.js.map +1 -0
  381. package/dist/esm/ExecutionFacts.d.ts +59 -0
  382. package/dist/esm/ExecutionFacts.d.ts.map +1 -0
  383. package/dist/esm/ExecutionFacts.js +96 -0
  384. package/dist/esm/ExecutionFacts.js.map +1 -0
  385. package/dist/esm/ExecutionSnapshot.d.ts +117 -0
  386. package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
  387. package/dist/esm/ExecutionSnapshot.js +95 -0
  388. package/dist/esm/ExecutionSnapshot.js.map +1 -0
  389. package/dist/esm/Inconsistency.d.ts +154 -0
  390. package/dist/esm/Inconsistency.d.ts.map +1 -0
  391. package/dist/esm/Inconsistency.js +133 -0
  392. package/dist/esm/Inconsistency.js.map +1 -0
  393. package/dist/esm/Migrations.d.ts +56 -0
  394. package/dist/esm/Migrations.d.ts.map +1 -0
  395. package/dist/esm/Migrations.js +91 -0
  396. package/dist/esm/Migrations.js.map +1 -0
  397. package/dist/esm/OwnerIdentity.d.ts +91 -0
  398. package/dist/esm/OwnerIdentity.d.ts.map +1 -0
  399. package/dist/esm/OwnerIdentity.js +99 -0
  400. package/dist/esm/OwnerIdentity.js.map +1 -0
  401. package/dist/esm/PlanInputStore.d.ts +110 -0
  402. package/dist/esm/PlanInputStore.d.ts.map +1 -0
  403. package/dist/esm/PlanInputStore.js +207 -0
  404. package/dist/esm/PlanInputStore.js.map +1 -0
  405. package/dist/esm/PlanMergeStore.d.ts +113 -0
  406. package/dist/esm/PlanMergeStore.d.ts.map +1 -0
  407. package/dist/esm/PlanMergeStore.js +244 -0
  408. package/dist/esm/PlanMergeStore.js.map +1 -0
  409. package/dist/esm/PlanScheduler.d.ts +363 -0
  410. package/dist/esm/PlanScheduler.d.ts.map +1 -0
  411. package/dist/esm/PlanScheduler.js +1321 -0
  412. package/dist/esm/PlanScheduler.js.map +1 -0
  413. package/dist/esm/Reconciliation.d.ts +175 -0
  414. package/dist/esm/Reconciliation.d.ts.map +1 -0
  415. package/dist/esm/Reconciliation.js +175 -0
  416. package/dist/esm/Reconciliation.js.map +1 -0
  417. package/dist/esm/ReplayOnly.d.ts +91 -0
  418. package/dist/esm/ReplayOnly.d.ts.map +1 -0
  419. package/dist/esm/ReplayOnly.js +59 -0
  420. package/dist/esm/ReplayOnly.js.map +1 -0
  421. package/dist/esm/Retention.d.ts +113 -0
  422. package/dist/esm/Retention.d.ts.map +1 -0
  423. package/dist/esm/Retention.js +139 -0
  424. package/dist/esm/Retention.js.map +1 -0
  425. package/dist/esm/RunCatalogRead.d.ts +17 -0
  426. package/dist/esm/RunCatalogRead.d.ts.map +1 -0
  427. package/dist/esm/RunCatalogRead.js +17 -0
  428. package/dist/esm/RunCatalogRead.js.map +1 -0
  429. package/dist/esm/RunChangeFeed.d.ts +75 -0
  430. package/dist/esm/RunChangeFeed.d.ts.map +1 -0
  431. package/dist/esm/RunChangeFeed.js +81 -0
  432. package/dist/esm/RunChangeFeed.js.map +1 -0
  433. package/dist/esm/RunState.d.ts +116 -0
  434. package/dist/esm/RunState.d.ts.map +1 -0
  435. package/dist/esm/RunState.js +109 -0
  436. package/dist/esm/RunState.js.map +1 -0
  437. package/dist/esm/Selection.d.ts +495 -0
  438. package/dist/esm/Selection.d.ts.map +1 -0
  439. package/dist/esm/Selection.js +482 -0
  440. package/dist/esm/Selection.js.map +1 -0
  441. package/dist/esm/SelectionStore.d.ts +141 -0
  442. package/dist/esm/SelectionStore.d.ts.map +1 -0
  443. package/dist/esm/SelectionStore.js +215 -0
  444. package/dist/esm/SelectionStore.js.map +1 -0
  445. package/dist/esm/StepBoundary.d.ts +501 -0
  446. package/dist/esm/StepBoundary.d.ts.map +1 -0
  447. package/dist/esm/StepBoundary.js +919 -0
  448. package/dist/esm/StepBoundary.js.map +1 -0
  449. package/dist/esm/StepCacheFold.d.ts +148 -0
  450. package/dist/esm/StepCacheFold.d.ts.map +1 -0
  451. package/dist/esm/StepCacheFold.js +201 -0
  452. package/dist/esm/StepCacheFold.js.map +1 -0
  453. package/dist/esm/StepSandbox.d.ts +78 -0
  454. package/dist/esm/StepSandbox.d.ts.map +1 -0
  455. package/dist/esm/StepSandbox.js +70 -0
  456. package/dist/esm/StepSandbox.js.map +1 -0
  457. package/dist/esm/WakeBus.d.ts +116 -0
  458. package/dist/esm/WakeBus.d.ts.map +1 -0
  459. package/dist/esm/WakeBus.js +121 -0
  460. package/dist/esm/WakeBus.js.map +1 -0
  461. package/dist/esm/WorkspaceSandbox.d.ts +619 -0
  462. package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
  463. package/dist/esm/WorkspaceSandbox.js +985 -0
  464. package/dist/esm/WorkspaceSandbox.js.map +1 -0
  465. package/dist/esm/index.d.ts +157 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +157 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/internal/ActionPersistence.d.ts +276 -0
  470. package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
  471. package/dist/esm/internal/ActionPersistence.js +2306 -0
  472. package/dist/esm/internal/ActionPersistence.js.map +1 -0
  473. package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
  474. package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
  475. package/dist/esm/internal/ArtifactRoots.js +76 -0
  476. package/dist/esm/internal/ArtifactRoots.js.map +1 -0
  477. package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
  478. package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
  479. package/dist/esm/internal/AttemptAdmission.js +52 -0
  480. package/dist/esm/internal/AttemptAdmission.js.map +1 -0
  481. package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
  482. package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
  483. package/dist/esm/internal/AttemptLifecycle.js +104 -0
  484. package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
  485. package/dist/esm/internal/AttemptProbe.d.ts +53 -0
  486. package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
  487. package/dist/esm/internal/AttemptProbe.js +83 -0
  488. package/dist/esm/internal/AttemptProbe.js.map +1 -0
  489. package/dist/esm/internal/CacheAdmission.d.ts +79 -0
  490. package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
  491. package/dist/esm/internal/CacheAdmission.js +72 -0
  492. package/dist/esm/internal/CacheAdmission.js.map +1 -0
  493. package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
  494. package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
  495. package/dist/esm/internal/CacheAgeHistory.js +49 -0
  496. package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
  497. package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
  498. package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
  499. package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
  500. package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
  501. package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
  502. package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
  503. package/dist/esm/internal/CacheOutputPolicy.js +73 -0
  504. package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
  505. package/dist/esm/internal/CachePublication.d.ts +97 -0
  506. package/dist/esm/internal/CachePublication.d.ts.map +1 -0
  507. package/dist/esm/internal/CachePublication.js +116 -0
  508. package/dist/esm/internal/CachePublication.js.map +1 -0
  509. package/dist/esm/internal/CallFacts.d.ts +15 -0
  510. package/dist/esm/internal/CallFacts.d.ts.map +1 -0
  511. package/dist/esm/internal/CallFacts.js +83 -0
  512. package/dist/esm/internal/CallFacts.js.map +1 -0
  513. package/dist/esm/internal/CopiedRecord.d.ts +61 -0
  514. package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
  515. package/dist/esm/internal/CopiedRecord.js +165 -0
  516. package/dist/esm/internal/CopiedRecord.js.map +1 -0
  517. package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
  518. package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
  519. package/dist/esm/internal/DeferredPersistence.js +240 -0
  520. package/dist/esm/internal/DeferredPersistence.js.map +1 -0
  521. package/dist/esm/internal/EffectRecords.d.ts +92 -0
  522. package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
  523. package/dist/esm/internal/EffectRecords.js +94 -0
  524. package/dist/esm/internal/EffectRecords.js.map +1 -0
  525. package/dist/esm/internal/EngineJj.d.ts +30 -0
  526. package/dist/esm/internal/EngineJj.d.ts.map +1 -0
  527. package/dist/esm/internal/EngineJj.js +29 -0
  528. package/dist/esm/internal/EngineJj.js.map +1 -0
  529. package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
  530. package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
  531. package/dist/esm/internal/EngineStateSchema.js +53 -0
  532. package/dist/esm/internal/EngineStateSchema.js.map +1 -0
  533. package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
  534. package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  535. package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
  536. package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
  537. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
  538. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  539. package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
  540. package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
  541. package/dist/esm/internal/ExitEncoding.d.ts +180 -0
  542. package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
  543. package/dist/esm/internal/ExitEncoding.js +361 -0
  544. package/dist/esm/internal/ExitEncoding.js.map +1 -0
  545. package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
  546. package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
  547. package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
  548. package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
  549. package/dist/esm/internal/FileEnumeration.d.ts +127 -0
  550. package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
  551. package/dist/esm/internal/FileEnumeration.js +236 -0
  552. package/dist/esm/internal/FileEnumeration.js.map +1 -0
  553. package/dist/esm/internal/HostReflection.d.ts +80 -0
  554. package/dist/esm/internal/HostReflection.d.ts.map +1 -0
  555. package/dist/esm/internal/HostReflection.js +98 -0
  556. package/dist/esm/internal/HostReflection.js.map +1 -0
  557. package/dist/esm/internal/JournalRecords.d.ts +325 -0
  558. package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
  559. package/dist/esm/internal/JournalRecords.js +306 -0
  560. package/dist/esm/internal/JournalRecords.js.map +1 -0
  561. package/dist/esm/internal/NodeJournal.d.ts +157 -0
  562. package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
  563. package/dist/esm/internal/NodeJournal.js +298 -0
  564. package/dist/esm/internal/NodeJournal.js.map +1 -0
  565. package/dist/esm/internal/Ordering.d.ts +14 -0
  566. package/dist/esm/internal/Ordering.d.ts.map +1 -0
  567. package/dist/esm/internal/Ordering.js +14 -0
  568. package/dist/esm/internal/Ordering.js.map +1 -0
  569. package/dist/esm/internal/PlanInputs.d.ts +14 -0
  570. package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
  571. package/dist/esm/internal/PlanInputs.js +57 -0
  572. package/dist/esm/internal/PlanInputs.js.map +1 -0
  573. package/dist/esm/internal/PlanMerges.d.ts +178 -0
  574. package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
  575. package/dist/esm/internal/PlanMerges.js +113 -0
  576. package/dist/esm/internal/PlanMerges.js.map +1 -0
  577. package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
  578. package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
  579. package/dist/esm/internal/ProvenanceSlot.js +39 -0
  580. package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
  581. package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
  582. package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
  583. package/dist/esm/internal/ResultEnvelope.js +83 -0
  584. package/dist/esm/internal/ResultEnvelope.js.map +1 -0
  585. package/dist/esm/internal/RetentionOps.d.ts +414 -0
  586. package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
  587. package/dist/esm/internal/RetentionOps.js +576 -0
  588. package/dist/esm/internal/RetentionOps.js.map +1 -0
  589. package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
  590. package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
  591. package/dist/esm/internal/RunCatalogOps.js +120 -0
  592. package/dist/esm/internal/RunCatalogOps.js.map +1 -0
  593. package/dist/esm/internal/RunCoordinator.d.ts +78 -0
  594. package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
  595. package/dist/esm/internal/RunCoordinator.js +115 -0
  596. package/dist/esm/internal/RunCoordinator.js.map +1 -0
  597. package/dist/esm/internal/RunDriver.d.ts +192 -0
  598. package/dist/esm/internal/RunDriver.d.ts.map +1 -0
  599. package/dist/esm/internal/RunDriver.js +2334 -0
  600. package/dist/esm/internal/RunDriver.js.map +1 -0
  601. package/dist/esm/internal/RunLifecycle.d.ts +22 -0
  602. package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
  603. package/dist/esm/internal/RunLifecycle.js +49 -0
  604. package/dist/esm/internal/RunLifecycle.js.map +1 -0
  605. package/dist/esm/internal/RunListing.d.ts +78 -0
  606. package/dist/esm/internal/RunListing.d.ts.map +1 -0
  607. package/dist/esm/internal/RunListing.js +146 -0
  608. package/dist/esm/internal/RunListing.js.map +1 -0
  609. package/dist/esm/internal/RunListingError.d.ts +35 -0
  610. package/dist/esm/internal/RunListingError.d.ts.map +1 -0
  611. package/dist/esm/internal/RunListingError.js +27 -0
  612. package/dist/esm/internal/RunListingError.js.map +1 -0
  613. package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
  614. package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
  615. package/dist/esm/internal/RuntimeGraph.js +182 -0
  616. package/dist/esm/internal/RuntimeGraph.js.map +1 -0
  617. package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
  618. package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
  619. package/dist/esm/internal/SandboxedExecution.js +107 -0
  620. package/dist/esm/internal/SandboxedExecution.js.map +1 -0
  621. package/dist/esm/internal/StateTransaction.d.ts +44 -0
  622. package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
  623. package/dist/esm/internal/StateTransaction.js +54 -0
  624. package/dist/esm/internal/StateTransaction.js.map +1 -0
  625. package/dist/esm/internal/StepFacts.d.ts +14 -0
  626. package/dist/esm/internal/StepFacts.d.ts.map +1 -0
  627. package/dist/esm/internal/StepFacts.js +35 -0
  628. package/dist/esm/internal/StepFacts.js.map +1 -0
  629. package/dist/esm/internal/TypedEvents.d.ts +14 -0
  630. package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
  631. package/dist/esm/internal/TypedEvents.js +14 -0
  632. package/dist/esm/internal/TypedEvents.js.map +1 -0
  633. package/dist/esm/migrations/0001_initial.d.ts +17 -0
  634. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  635. package/dist/esm/migrations/0001_initial.js +41 -0
  636. package/dist/esm/migrations/0001_initial.js.map +1 -0
  637. package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
  638. package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
  639. package/dist/esm/migrations/0002_selection_store.js +34 -0
  640. package/dist/esm/migrations/0002_selection_store.js.map +1 -0
  641. package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
  642. package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
  643. package/dist/esm/migrations/0003_plan_inputs.js +70 -0
  644. package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
  645. package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
  646. package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
  647. package/dist/esm/migrations/0004_plan_environment.js +33 -0
  648. package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
  649. package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
  650. package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
  651. package/dist/esm/migrations/0005_plan_merges.js +59 -0
  652. package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
  653. package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
  654. package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
  655. package/dist/esm/migrations/0006_execution_listing.js +81 -0
  656. package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
  657. package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
  658. package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  659. package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
  660. package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
  661. package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
  662. package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
  663. package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
  664. package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
  665. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
  666. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  667. package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
  668. package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
  669. package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
  670. package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
  671. package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
  672. package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
  673. package/dist/esm/test/TestStores.d.ts +89 -0
  674. package/dist/esm/test/TestStores.d.ts.map +1 -0
  675. package/dist/esm/test/TestStores.js +103 -0
  676. package/dist/esm/test/TestStores.js.map +1 -0
  677. package/docs/README.md +113 -0
  678. package/docs/api.md +1494 -0
  679. package/docs/concepts/attempts-and-replay.md +149 -0
  680. package/docs/concepts/cache-admission.md +265 -0
  681. package/docs/concepts/call-facts.md +86 -0
  682. package/docs/concepts/durable-waits.md +175 -0
  683. package/docs/concepts/execution-facts.md +90 -0
  684. package/docs/concepts/ownership-and-fencing.md +128 -0
  685. package/docs/concepts/step-boundaries.md +148 -0
  686. package/docs/concepts/workspace-transactions.md +199 -0
  687. package/docs/event-types.md +14 -0
  688. package/docs/guides/back-up-and-restore.md +164 -0
  689. package/docs/guides/collect-unreferenced-artifacts.md +128 -0
  690. package/docs/guides/compose-a-durable-engine.md +146 -0
  691. package/docs/guides/coordinate-two-processes.md +120 -0
  692. package/docs/guides/defer-work-with-selection.md +171 -0
  693. package/docs/guides/delete-old-run-history.md +154 -0
  694. package/docs/guides/drive-a-plan.md +314 -0
  695. package/docs/guides/observe-engine-metrics.md +98 -0
  696. package/docs/guides/observe-executions.md +187 -0
  697. package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
  698. package/docs/guides/share-a-cache-across-machines.md +134 -0
  699. package/docs/guides/testing.md +123 -0
  700. package/docs/installation.md +102 -0
  701. package/docs/quickstart.md +215 -0
  702. package/docs/troubleshooting.md +347 -0
  703. package/package.json +438 -3
  704. package/src/ArtifactGc.ts +408 -0
  705. package/src/ArtifactSync.ts +278 -0
  706. package/src/CacheSync.ts +131 -0
  707. package/src/DeferredClockFold.ts +586 -0
  708. package/src/DisasterRecovery.ts +888 -0
  709. package/src/DurableEngineState.ts +2656 -0
  710. package/src/EngineStore.ts +656 -0
  711. package/src/EngineStoreMetrics.ts +331 -0
  712. package/src/Errors.ts +28 -0
  713. package/src/EventTypes.ts +27 -0
  714. package/src/ExecutionFacts.ts +125 -0
  715. package/src/ExecutionSnapshot.ts +186 -0
  716. package/src/Inconsistency.ts +253 -0
  717. package/src/Migrations.ts +95 -0
  718. package/src/OwnerIdentity.ts +125 -0
  719. package/src/PlanInputStore.ts +292 -0
  720. package/src/PlanMergeStore.ts +330 -0
  721. package/src/PlanScheduler.ts +1806 -0
  722. package/src/Reconciliation.ts +224 -0
  723. package/src/ReplayOnly.ts +95 -0
  724. package/src/Retention.ts +214 -0
  725. package/src/RunCatalogRead.ts +27 -0
  726. package/src/RunChangeFeed.ts +125 -0
  727. package/src/RunState.ts +137 -0
  728. package/src/Selection.ts +683 -0
  729. package/src/SelectionStore.ts +353 -0
  730. package/src/StepBoundary.ts +1165 -0
  731. package/src/StepCacheFold.ts +244 -0
  732. package/src/StepSandbox.ts +110 -0
  733. package/src/WakeBus.ts +167 -0
  734. package/src/WorkspaceSandbox.ts +1604 -0
  735. package/src/index.ts +185 -0
  736. package/src/internal/ActionPersistence.ts +2687 -0
  737. package/src/internal/ArtifactRoots.ts +92 -0
  738. package/src/internal/AttemptAdmission.ts +76 -0
  739. package/src/internal/AttemptLifecycle.ts +163 -0
  740. package/src/internal/AttemptProbe.ts +90 -0
  741. package/src/internal/CacheAdmission.ts +133 -0
  742. package/src/internal/CacheAgeHistory.ts +58 -0
  743. package/src/internal/CacheAgeVerdicts.ts +61 -0
  744. package/src/internal/CacheOutputPolicy.ts +82 -0
  745. package/src/internal/CachePublication.ts +153 -0
  746. package/src/internal/CallFacts.ts +87 -0
  747. package/src/internal/CopiedRecord.ts +201 -0
  748. package/src/internal/DeferredPersistence.ts +459 -0
  749. package/src/internal/EffectRecords.ts +136 -0
  750. package/src/internal/EngineJj.ts +30 -0
  751. package/src/internal/EngineStateSchema.ts +92 -0
  752. package/src/internal/ExecutionSnapshotRead.ts +298 -0
  753. package/src/internal/ExecutionSnapshotRelations.ts +121 -0
  754. package/src/internal/ExitEncoding.ts +453 -0
  755. package/src/internal/FileBoundarySnapshot.ts +39 -0
  756. package/src/internal/FileEnumeration.ts +334 -0
  757. package/src/internal/HostReflection.ts +128 -0
  758. package/src/internal/JournalRecords.ts +396 -0
  759. package/src/internal/NodeJournal.ts +340 -0
  760. package/src/internal/Ordering.ts +14 -0
  761. package/src/internal/PlanInputs.ts +62 -0
  762. package/src/internal/PlanMerges.ts +123 -0
  763. package/src/internal/ProvenanceSlot.ts +52 -0
  764. package/src/internal/ResultEnvelope.ts +118 -0
  765. package/src/internal/RetentionOps.ts +865 -0
  766. package/src/internal/RunCatalogOps.ts +174 -0
  767. package/src/internal/RunCoordinator.ts +215 -0
  768. package/src/internal/RunDriver.ts +3152 -0
  769. package/src/internal/RunLifecycle.ts +53 -0
  770. package/src/internal/RunListing.ts +210 -0
  771. package/src/internal/RunListingError.ts +37 -0
  772. package/src/internal/RuntimeGraph.ts +253 -0
  773. package/src/internal/SandboxedExecution.ts +165 -0
  774. package/src/internal/StateTransaction.ts +71 -0
  775. package/src/internal/StepFacts.ts +36 -0
  776. package/src/internal/TypedEvents.ts +29 -0
  777. package/src/migrations/0001_initial.ts +51 -0
  778. package/src/migrations/0002_selection_store.ts +38 -0
  779. package/src/migrations/0003_plan_inputs.ts +75 -0
  780. package/src/migrations/0004_plan_environment.ts +34 -0
  781. package/src/migrations/0005_plan_merges.ts +60 -0
  782. package/src/migrations/0006_execution_listing.ts +86 -0
  783. package/src/migrations/0007_run_parent_sequence.ts +19 -0
  784. package/src/migrations/0008_deferred_consumption.ts +27 -0
  785. package/src/migrations/0009_deferred_clock_facts.ts +163 -0
  786. package/src/migrations/0010_pending_cancellation.ts +20 -0
  787. package/src/test/TestStores.ts +145 -0
@@ -0,0 +1,91 @@
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
+ import * as Context from "effect/Context";
26
+ import type * as Effect from "effect/Effect";
27
+ import * as Layer from "effect/Layer";
28
+ import * as Schema from "effect/Schema";
29
+ /**
30
+ * One dispatch a replay-only engine saw.
31
+ *
32
+ * `stepKeyDigest` is the identity `flows_attempts` rows are keyed on, so a
33
+ * reader joins it to the recorded attempts directly. `action` is the declared
34
+ * action name. `outcome` is `replayed` for a dispatch served from a durable
35
+ * record (a recorded failure included), `resumes` for one that would re-enter
36
+ * a recorded attempt that never finished, and `would-execute` for one no
37
+ * record matches.
38
+ *
39
+ * @since 1.0.0
40
+ * @category models
41
+ */
42
+ export interface Dispatch {
43
+ readonly runId: string;
44
+ readonly stepKeyDigest: string;
45
+ readonly attempt: number;
46
+ readonly action: string;
47
+ readonly tier: "sealed" | "compensable" | "irreversible";
48
+ readonly outcome: "replayed" | "resumes" | "would-execute";
49
+ }
50
+ /**
51
+ * Receives every dispatch a replay-only engine settles, in settlement order.
52
+ *
53
+ * @since 1.0.0
54
+ * @category models
55
+ */
56
+ export interface Service {
57
+ readonly observe: (dispatch: Dispatch) => Effect.Effect<void>;
58
+ }
59
+ declare const ReplayOnly_base: Context.ServiceClass<ReplayOnly, "@smthrs/engine-store/ReplayOnly", Service>;
60
+ /**
61
+ * Service tag. An engine composed with it in context executes no action body.
62
+ *
63
+ * @since 1.0.0
64
+ * @category services
65
+ */
66
+ export declare class ReplayOnly extends ReplayOnly_base {
67
+ }
68
+ declare const WouldExecute_base: Schema.Class<WouldExecute, Schema.TaggedStruct<"@smthrs/engine-store/WouldExecute", {
69
+ readonly runId: Schema.String;
70
+ readonly stepKeyDigest: Schema.String;
71
+ readonly attempt: Schema.Number;
72
+ readonly action: Schema.String;
73
+ }>, import("effect/Cause").YieldableError>;
74
+ /**
75
+ * The defect a replay-only dispatch dies with instead of executing.
76
+ *
77
+ * @since 1.0.0
78
+ * @category errors
79
+ */
80
+ export declare class WouldExecute extends WouldExecute_base {
81
+ get message(): string;
82
+ }
83
+ /**
84
+ * Provides a replay-only engine context that reports to `observe`.
85
+ *
86
+ * @since 1.0.0
87
+ * @category layers
88
+ */
89
+ export declare const layer: (observe: Service["observe"]) => Layer.Layer<ReplayOnly>;
90
+ export {};
91
+ //# sourceMappingURL=ReplayOnly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplayOnly.d.ts","sourceRoot":"","sources":["../../src/ReplayOnly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,cAAc,CAAA;IACxD,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAAA;CAC3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC9D;;AAED;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,eAAyE;CAAG;;;;;;;AAE5G;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,iBAKhC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,CAAC,SAAS,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CACnB,CAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ReplayOnly_exports = {};
30
+ __export(ReplayOnly_exports, {
31
+ ReplayOnly: () => ReplayOnly,
32
+ WouldExecute: () => WouldExecute,
33
+ layer: () => layer
34
+ });
35
+ module.exports = __toCommonJS(ReplayOnly_exports);
36
+ var Context = __toESM(require("effect/Context"), 1);
37
+ var Layer = __toESM(require("effect/Layer"), 1);
38
+ var Schema = __toESM(require("effect/Schema"), 1);
39
+ class ReplayOnly extends Context.Service()("@smthrs/engine-store/ReplayOnly") {
40
+ }
41
+ class WouldExecute extends Schema.TaggedError()("@smthrs/engine-store/WouldExecute", {
42
+ runId: Schema.String,
43
+ stepKeyDigest: Schema.String,
44
+ attempt: Schema.Number,
45
+ action: Schema.String
46
+ }) {
47
+ get message() {
48
+ return `Action ${this.action} (step ${this.stepKeyDigest}, attempt ${this.attempt}) would execute`;
49
+ }
50
+ }
51
+ const layer = (observe) => Layer.succeed(ReplayOnly, ReplayOnly.of({ observe }));
52
+ //# sourceMappingURL=ReplayOnly.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ReplayOnly.ts"],
4
+ "sourcesContent": ["/**\n * An engine that replays recorded work and executes none.\n *\n * `smthrs runs verify` asks what a resume under the current code would do\n * before anything runs: which recorded steps it would serve from their\n * durable records, and which step it would execute again because its key no\n * longer matches one. The engine is the only thing that can answer, because a\n * step key is derived at dispatch from the running flow's own declaration,\n * ordinal and scope. This service turns a durable engine into that question:\n * a dispatch served from a durable record reports `replayed`, and the first\n * dispatch that would run an action body dies with {@link WouldExecute} before\n * any attempt row, snapshot, boundary or body. It reports `resumes` when it\n * would re-enter a recorded attempt that never finished (a step parked inside\n * its body), and `would-execute` when no record matches its key at all.\n *\n * The death is a defect on purpose. A typed failure would enter the action's\n * retry policy, and the default policy never gives up; a defect is never\n * retried, so the run settles with the verdict instead of spinning on it.\n *\n * Run it against a copy of the store. A replay still converges the journal\n * rows a resume would write, and the run settles `failed` on the copy.\n *\n * @since 1.0.0\n */\n\nimport * as Context from \"effect/Context\"\nimport type * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Schema from \"effect/Schema\"\n\n/**\n * One dispatch a replay-only engine saw.\n *\n * `stepKeyDigest` is the identity `flows_attempts` rows are keyed on, so a\n * reader joins it to the recorded attempts directly. `action` is the declared\n * action name. `outcome` is `replayed` for a dispatch served from a durable\n * record (a recorded failure included), `resumes` for one that would re-enter\n * a recorded attempt that never finished, and `would-execute` for one no\n * record matches.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface Dispatch {\n readonly runId: string\n readonly stepKeyDigest: string\n readonly attempt: number\n readonly action: string\n readonly tier: \"sealed\" | \"compensable\" | \"irreversible\"\n readonly outcome: \"replayed\" | \"resumes\" | \"would-execute\"\n}\n\n/**\n * Receives every dispatch a replay-only engine settles, in settlement order.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface Service {\n readonly observe: (dispatch: Dispatch) => Effect.Effect<void>\n}\n\n/**\n * Service tag. An engine composed with it in context executes no action body.\n *\n * @since 1.0.0\n * @category services\n */\nexport class ReplayOnly extends Context.Service<ReplayOnly, Service>()(\"@smthrs/engine-store/ReplayOnly\") {}\n\n/**\n * The defect a replay-only dispatch dies with instead of executing.\n *\n * @since 1.0.0\n * @category errors\n */\nexport class WouldExecute extends Schema.TaggedError<WouldExecute>()(\"@smthrs/engine-store/WouldExecute\", {\n runId: Schema.String,\n stepKeyDigest: Schema.String,\n attempt: Schema.Number,\n action: Schema.String\n}) {\n override get message(): string {\n return `Action ${this.action} (step ${this.stepKeyDigest}, attempt ${this.attempt}) would execute`\n }\n}\n\n/**\n * Provides a replay-only engine context that reports to `observe`.\n *\n * @since 1.0.0\n * @category layers\n */\nexport const layer = (observe: Service[\"observe\"]): Layer.Layer<ReplayOnly> =>\n Layer.succeed(ReplayOnly, ReplayOnly.of({ observe }))\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA,cAAyB;AAEzB,YAAuB;AACvB,aAAwB;AAwCjB,MAAM,mBAAmB,QAAQ,QAA6B,EAAE,iCAAiC,EAAE;AAAC;AAQpG,MAAM,qBAAqB,OAAO,YAA0B,EAAE,qCAAqC;AAAA,EACxG,OAAO,OAAO;AAAA,EACd,eAAe,OAAO;AAAA,EACtB,SAAS,OAAO;AAAA,EAChB,QAAQ,OAAO;AACjB,CAAC,EAAE;AAAA,EACD,IAAa,UAAkB;AAC7B,WAAO,UAAU,KAAK,MAAM,UAAU,KAAK,aAAa,aAAa,KAAK,OAAO;AAAA,EACnF;AACF;AAQO,MAAM,QAAQ,CAAC,YACpB,MAAM,QAAQ,YAAY,WAAW,GAAG,EAAE,QAAQ,CAAC,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,113 @@
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
+ import * as Effect from "effect/Effect";
34
+ import * as SqlClient from "effect/unstable/sql/SqlClient";
35
+ import type { SqlError } from "effect/unstable/sql/SqlError";
36
+ import * as RetentionOps from "./internal/RetentionOps.ts";
37
+ export { defaultLimit, layer, make, type RetainOptions, type RetainReport, Retention, RetentionError, RetentionErrorCode, type RunScopedTable,
38
+ /**
39
+ * Every table a deleted run leaves rows in. One inventory serves this pass
40
+ * and {@link Service.retain}, so neither can leak what the other deletes.
41
+ *
42
+ * @category constants
43
+ * @since 1.0.0
44
+ */
45
+ runScopedTables, type Service, terminalStatuses } from "./internal/RetentionOps.ts";
46
+ /**
47
+ * What one retention pass would delete, or did.
48
+ *
49
+ * @category models
50
+ * @since 1.0.0
51
+ */
52
+ export interface Report {
53
+ readonly database: string;
54
+ /** The threshold, as an epoch millisecond value. */
55
+ readonly olderThanMs: number;
56
+ readonly runs: ReadonlyArray<string>;
57
+ /** Rows deleted per table; empty under a dry run. */
58
+ readonly deleted: Readonly<Record<string, number>>;
59
+ readonly dryRun: boolean;
60
+ }
61
+ /**
62
+ * Arguments accepted by {@link collect}.
63
+ *
64
+ * @category models
65
+ * @since 1.0.0
66
+ */
67
+ export interface Options {
68
+ /** Delete terminal runs that finished strictly before this epoch millisecond. */
69
+ readonly olderThanMs: number;
70
+ readonly dryRun?: boolean | undefined;
71
+ /** A label for the report; the host's database path. */
72
+ readonly database?: string | undefined;
73
+ /** Largest number of runs considered by this pass. Defaults to 1,000. */
74
+ readonly limit?: number | undefined;
75
+ /** Runs retained by a host's cross-store ancestry, in addition to local live roots. */
76
+ readonly pins?: ReadonlyArray<string> | undefined;
77
+ }
78
+ /**
79
+ * The terminal runs one pass would delete, oldest first.
80
+ *
81
+ * @category getters
82
+ * @since 1.0.0
83
+ */
84
+ export declare const eligible: (olderThanMs: number, limit?: number) => Effect.Effect<ReadonlyArray<string>, SqlError, SqlClient.SqlClient>;
85
+ /**
86
+ * Runs one retention pass.
87
+ *
88
+ * The deletion itself is {@link RetentionOps.deleteRuns}, the same one
89
+ * {@link Service.retain} runs, so this pass cannot hold a shorter table list
90
+ * than that one and cannot delete run rows in an order the self-referential
91
+ * `parent_run_id` foreign key refuses. A handoff parent always sorts before
92
+ * its successor, so deleting in age order broke as soon as one lineage
93
+ * straddled a chunk boundary, and it broke AFTER the dependent rows of every
94
+ * eligible run were already gone. `assumeLadder: false` because this pass also
95
+ * runs against the control plane's database, which composed fewer stores.
96
+ *
97
+ * Eligibility and deletion share one retryable transaction: another writer
98
+ * cannot attach a live parent between the lineage scan and deletion. A busy
99
+ * retry recomputes eligibility rather than replaying an old candidate list.
100
+ * One transaction, for the reason `retain` opens one: a pass that removed a
101
+ * run's history and then refused on its row would have destroyed what it could
102
+ * not put back, and a workspace whose next pass refuses the same way can never
103
+ * be collected again.
104
+ *
105
+ * Under `dryRun` nothing is written and `deleted` is empty: the report names
106
+ * exactly the runs a real pass would remove, which is what makes
107
+ * `smithers gc --dry-run` worth trusting.
108
+ *
109
+ * @category constructors
110
+ * @since 1.0.0
111
+ */
112
+ export declare const collect: (options: Options) => Effect.Effect<Report, SqlError | RetentionOps.RetentionError, SqlClient.SqlClient>;
113
+ //# sourceMappingURL=Retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Retention.d.ts","sourceRoot":"","sources":["../../src/Retention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EACL,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,KAAK,cAAc;AACnB;;;;;;GAMG;AACH,eAAe,EACf,KAAK,OAAO,EACZ,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,oDAAoD;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAClD;AA4CD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GACnB,aAAa,MAAM,EACnB,cAAiC,KAChC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAIlE,CAAA;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,CA+BhF,CAAA"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var Retention_exports = {};
30
+ __export(Retention_exports, {
31
+ Retention: () => import_RetentionOps.Retention,
32
+ RetentionError: () => import_RetentionOps.RetentionError,
33
+ RetentionErrorCode: () => import_RetentionOps.RetentionErrorCode,
34
+ collect: () => collect,
35
+ defaultLimit: () => import_RetentionOps.defaultLimit,
36
+ eligible: () => eligible,
37
+ layer: () => import_RetentionOps.layer,
38
+ make: () => import_RetentionOps.make,
39
+ runScopedTables: () => import_RetentionOps.runScopedTables,
40
+ terminalStatuses: () => import_RetentionOps.terminalStatuses
41
+ });
42
+ module.exports = __toCommonJS(Retention_exports);
43
+ var Dialect = __toESM(require("@smthrs/database/Dialect"), 1);
44
+ var DurableWriter = __toESM(require("@smthrs/database/DurableWriter"), 1);
45
+ var Effect = __toESM(require("effect/Effect"), 1);
46
+ var SqlClient = __toESM(require("effect/unstable/sql/SqlClient"), 1);
47
+ var RetentionOps = __toESM(require("./internal/RetentionOps.js"), 1);
48
+ var import_RetentionOps = require("./internal/RetentionOps.js");
49
+ const hasTable = (table) => Effect.gen(function* () {
50
+ const sql = yield* SqlClient.SqlClient;
51
+ const rows = yield* Dialect.tables(sql).pipe(Effect.map((rows2) => rows2.filter((row) => row.name === table)));
52
+ return rows.length > 0;
53
+ });
54
+ const eligibleCandidates = (olderThanMs, limit, pins) => Effect.gen(function* () {
55
+ const sql = yield* SqlClient.SqlClient;
56
+ if (!(yield* hasTable("flows_runs"))) return [];
57
+ return yield* RetentionOps.candidatesOf(sql, {
58
+ cutoffMs: olderThanMs,
59
+ inclusive: false,
60
+ parentEdges: yield* hasTable("flows_run_parents"),
61
+ pins,
62
+ limit: RetentionOps.normalizeLimit(limit)
63
+ });
64
+ });
65
+ const eligible = (olderThanMs, limit = RetentionOps.defaultLimit) => Effect.map(
66
+ eligibleCandidates(olderThanMs, limit),
67
+ (candidates) => candidates.map((candidate) => candidate.runId)
68
+ );
69
+ const collect = (options) => Effect.gen(function* () {
70
+ const sql = yield* SqlClient.SqlClient;
71
+ const dryRun = options.dryRun === true;
72
+ const pass = Effect.gen(function* () {
73
+ const candidates = yield* eligibleCandidates(options.olderThanMs, options.limit, options.pins);
74
+ return yield* RetentionOps.deleteRuns(sql, candidates, {
75
+ dryRun,
76
+ assumeLadder: false
77
+ });
78
+ });
79
+ const removed = yield* dryRun ? sql.withTransaction(pass) : DurableWriter.make(sql).write(pass).pipe(
80
+ Effect.catchIf(
81
+ (cause) => cause instanceof DurableWriter.DatabaseError,
82
+ (cause) => Effect.fail(
83
+ new RetentionOps.RetentionError({
84
+ code: "delete_failed",
85
+ message: "retention transaction failed; no history was deleted",
86
+ cause
87
+ })
88
+ )
89
+ )
90
+ );
91
+ return {
92
+ database: options.database ?? "",
93
+ olderThanMs: options.olderThanMs,
94
+ runs: removed.runIds,
95
+ deleted: dryRun ? {} : removed.deleted,
96
+ dryRun
97
+ };
98
+ });
99
+ //# sourceMappingURL=Retention.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Retention.ts"],
4
+ "sourcesContent": ["/**\n * Deleting run history that has outlived its usefulness.\n *\n * Nothing in the durable stores forgets on its own: a finished run keeps its\n * row, every attempt, every journal event, and every archived frame forever.\n * That is the right default \u2014 a run's history is the only account of what an\n * agent did to a repository \u2014 and it is why `smithers gc` exists rather than a\n * background sweeper. Retention is an operator decision, taken explicitly,\n * with a dry run available before anything is deleted.\n *\n * This module is the public surface. The operation lives in\n * `internal/RetentionOps.ts` beside the other modules that read this package's\n * own tables, so `internal/` is never imported by a consumer \u2014 the same split\n * `Errors.ts` uses. {@link retain} and {@link layer} are that operation: one\n * bounded pass over the engine ladder, inside one `journal.transact`.\n *\n * {@link collect} is the host-facing pass `smithers gc` runs, and it is a\n * facade over the same guard. A project keeps its history in two files \u2014 the\n * control plane's database and the engine's \u2014 and a sweep of one without the\n * other leaves half of a deleted run behind, so the pass takes the database as\n * a service and runs once per file. Which runs it may delete is\n * {@link RetentionOps.lineagePrelude}'s answer, not a second guard written\n * here: a run stays whenever a live run stands above or below it, over BOTH\n * relations that make one run the parent of another \u2014 the `flows_run_parents`\n * edge a spawned child records, and the `parent_run_id` column a trampoline\n * lineage is chained through.\n *\n * Only terminal runs are ever considered. A `pending`, `running`, or\n * `suspended` row belongs to work that can still resume.\n *\n * @since 1.0.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport * as DurableWriter from \"@smthrs/database/DurableWriter\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\nimport type { SqlError } from \"effect/unstable/sql/SqlError\"\nimport * as RetentionOps from \"./internal/RetentionOps.ts\"\n\nexport {\n defaultLimit,\n layer,\n make,\n type RetainOptions,\n type RetainReport,\n Retention,\n RetentionError,\n RetentionErrorCode,\n type RunScopedTable,\n /**\n * Every table a deleted run leaves rows in. One inventory serves this pass\n * and {@link Service.retain}, so neither can leak what the other deletes.\n *\n * @category constants\n * @since 1.0.0\n */\n runScopedTables,\n type Service,\n terminalStatuses\n} from \"./internal/RetentionOps.ts\"\n\n/**\n * What one retention pass would delete, or did.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Report {\n readonly database: string\n /** The threshold, as an epoch millisecond value. */\n readonly olderThanMs: number\n readonly runs: ReadonlyArray<string>\n /** Rows deleted per table; empty under a dry run. */\n readonly deleted: Readonly<Record<string, number>>\n readonly dryRun: boolean\n}\n\n/**\n * Arguments accepted by {@link collect}.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Options {\n /** Delete terminal runs that finished strictly before this epoch millisecond. */\n readonly olderThanMs: number\n readonly dryRun?: boolean | undefined\n /** A label for the report; the host's database path. */\n readonly database?: string | undefined\n /** Largest number of runs considered by this pass. Defaults to 1,000. */\n readonly limit?: number | undefined\n /** Runs retained by a host's cross-store ancestry, in addition to local live roots. */\n readonly pins?: ReadonlyArray<string> | undefined\n}\n\n/** Whether a table exists in the connected database. */\nconst hasTable = (table: string): Effect.Effect<boolean, SqlError, SqlClient.SqlClient> =>\n Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n const rows = yield* Dialect.tables(sql).pipe(Effect.map((rows) => rows.filter((row) => row.name === table)))\n return rows.length > 0\n })\n\n/**\n * The runs one pass would delete, oldest first, each with the run it names as\n * its parent.\n *\n * The same candidate query `retain` runs: children before parents, so a\n * trampoline lineage longer than the bound still loses a run every pass, and\n * a run is excluded whenever a live run stands above or below it. Downward,\n * deleting a parent whose child is still running would break the\n * `parent_run_id` foreign key and drop the live child's edges with the\n * `flows_run_parents_gc` trigger. Upward, a parked parent still reads a\n * settled child's result out of its run row through `agent/await`, and it can\n * be parked for longer than the threshold before it ever asks.\n */\nconst eligibleCandidates = (\n olderThanMs: number,\n limit: number | undefined,\n pins?: ReadonlyArray<string>\n): Effect.Effect<ReadonlyArray<RetentionOps.Candidate>, SqlError, SqlClient.SqlClient> =>\n Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n if (!(yield* hasTable(\"flows_runs\"))) return []\n // The engine's edge table is absent from the control-plane database, which\n // migrates the run store and the journal and nothing else. The prelude\n // drops that half of the walk there and keeps the `parent_run_id` half, so\n // one guard covers both files.\n return yield* RetentionOps.candidatesOf(sql, {\n cutoffMs: olderThanMs,\n inclusive: false,\n parentEdges: yield* hasTable(\"flows_run_parents\"),\n pins,\n limit: RetentionOps.normalizeLimit(limit)\n })\n })\n\n/**\n * The terminal runs one pass would delete, oldest first.\n *\n * @category getters\n * @since 1.0.0\n */\nexport const eligible = (\n olderThanMs: number,\n limit = RetentionOps.defaultLimit\n): Effect.Effect<ReadonlyArray<string>, SqlError, SqlClient.SqlClient> =>\n Effect.map(\n eligibleCandidates(olderThanMs, limit),\n (candidates) => candidates.map((candidate) => candidate.runId)\n )\n\n/**\n * Runs one retention pass.\n *\n * The deletion itself is {@link RetentionOps.deleteRuns}, the same one\n * {@link Service.retain} runs, so this pass cannot hold a shorter table list\n * than that one and cannot delete run rows in an order the self-referential\n * `parent_run_id` foreign key refuses. A handoff parent always sorts before\n * its successor, so deleting in age order broke as soon as one lineage\n * straddled a chunk boundary, and it broke AFTER the dependent rows of every\n * eligible run were already gone. `assumeLadder: false` because this pass also\n * runs against the control plane's database, which composed fewer stores.\n *\n * Eligibility and deletion share one retryable transaction: another writer\n * cannot attach a live parent between the lineage scan and deletion. A busy\n * retry recomputes eligibility rather than replaying an old candidate list.\n * One transaction, for the reason `retain` opens one: a pass that removed a\n * run's history and then refused on its row would have destroyed what it could\n * not put back, and a workspace whose next pass refuses the same way can never\n * be collected again.\n *\n * Under `dryRun` nothing is written and `deleted` is empty: the report names\n * exactly the runs a real pass would remove, which is what makes\n * `smithers gc --dry-run` worth trusting.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const collect = (\n options: Options\n): Effect.Effect<Report, SqlError | RetentionOps.RetentionError, SqlClient.SqlClient> =>\n Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n const dryRun = options.dryRun === true\n const pass = Effect.gen(function*() {\n const candidates = yield* eligibleCandidates(options.olderThanMs, options.limit, options.pins)\n return yield* RetentionOps.deleteRuns(sql, candidates, {\n dryRun,\n assumeLadder: false\n })\n })\n const removed = yield* (dryRun ? sql.withTransaction(pass) : DurableWriter.make(sql).write(pass).pipe(\n Effect.catchIf(\n (cause): cause is DurableWriter.DatabaseError => cause instanceof DurableWriter.DatabaseError,\n (cause) =>\n Effect.fail(\n new RetentionOps.RetentionError({\n code: \"delete_failed\",\n message: \"retention transaction failed; no history was deleted\",\n cause\n })\n )\n )\n ))\n return {\n database: options.database ?? \"\",\n olderThanMs: options.olderThanMs,\n runs: removed.runIds,\n deleted: dryRun ? {} : removed.deleted,\n dryRun\n }\n })\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCA,cAAyB;AACzB,oBAA+B;AAC/B,aAAwB;AACxB,gBAA2B;AAE3B,mBAA8B;AAE9B,0BAoBO;AAqCP,MAAM,WAAW,CAAC,UAChB,OAAO,IAAI,aAAY;AACrB,QAAM,MAAM,OAAO,UAAU;AAC7B,QAAM,OAAO,OAAO,QAAQ,OAAO,GAAG,EAAE,KAAK,OAAO,IAAI,CAACA,UAASA,MAAK,OAAO,CAAC,QAAQ,IAAI,SAAS,KAAK,CAAC,CAAC;AAC3G,SAAO,KAAK,SAAS;AACvB,CAAC;AAeH,MAAM,qBAAqB,CACzB,aACA,OACA,SAEA,OAAO,IAAI,aAAY;AACrB,QAAM,MAAM,OAAO,UAAU;AAC7B,MAAI,EAAE,OAAO,SAAS,YAAY,GAAI,QAAO,CAAC;AAK9C,SAAO,OAAO,aAAa,aAAa,KAAK;AAAA,IAC3C,UAAU;AAAA,IACV,WAAW;AAAA,IACX,aAAa,OAAO,SAAS,mBAAmB;AAAA,IAChD;AAAA,IACA,OAAO,aAAa,eAAe,KAAK;AAAA,EAC1C,CAAC;AACH,CAAC;AAQI,MAAM,WAAW,CACtB,aACA,QAAQ,aAAa,iBAErB,OAAO;AAAA,EACL,mBAAmB,aAAa,KAAK;AAAA,EACrC,CAAC,eAAe,WAAW,IAAI,CAAC,cAAc,UAAU,KAAK;AAC/D;AA6BK,MAAM,UAAU,CACrB,YAEA,OAAO,IAAI,aAAY;AACrB,QAAM,MAAM,OAAO,UAAU;AAC7B,QAAM,SAAS,QAAQ,WAAW;AAClC,QAAM,OAAO,OAAO,IAAI,aAAY;AAClC,UAAM,aAAa,OAAO,mBAAmB,QAAQ,aAAa,QAAQ,OAAO,QAAQ,IAAI;AAC7F,WAAO,OAAO,aAAa,WAAW,KAAK,YAAY;AAAA,MACrD;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AACD,QAAM,UAAU,OAAQ,SAAS,IAAI,gBAAgB,IAAI,IAAI,cAAc,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE;AAAA,IAC/F,OAAO;AAAA,MACL,CAAC,UAAgD,iBAAiB,cAAc;AAAA,MAChF,CAAC,UACC,OAAO;AAAA,QACL,IAAI,aAAa,eAAe;AAAA,UAC9B,MAAM;AAAA,UACN,SAAS;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACJ;AAAA,EACF;AACA,SAAO;AAAA,IACL,UAAU,QAAQ,YAAY;AAAA,IAC9B,aAAa,QAAQ;AAAA,IACrB,MAAM,QAAQ;AAAA,IACd,SAAS,SAAS,CAAC,IAAI,QAAQ;AAAA,IAC/B;AAAA,EACF;AACF,CAAC;",
6
+ "names": ["rows"]
7
+ }
@@ -0,0 +1,17 @@
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
+ export { defaultLimit, layer, type ListOptions, make, RunCatalogError, RunCatalogErrorCode, RunCatalogRead, type Service } from "./internal/RunCatalogOps.ts";
16
+ export { Filters, type ListRunsOptions, maximumPageSize, type RunPage } from "./internal/RunListing.ts";
17
+ //# sourceMappingURL=RunCatalogRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunCatalogRead.d.ts","sourceRoot":"","sources":["../../src/RunCatalogRead.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,EACL,KAAK,WAAW,EAChB,IAAI,EACJ,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,KAAK,OAAO,EACb,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,KAAK,eAAe,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var RunCatalogRead_exports = {};
20
+ __export(RunCatalogRead_exports, {
21
+ Filters: () => import_RunListing.Filters,
22
+ RunCatalogError: () => import_RunCatalogOps.RunCatalogError,
23
+ RunCatalogErrorCode: () => import_RunCatalogOps.RunCatalogErrorCode,
24
+ RunCatalogRead: () => import_RunCatalogOps.RunCatalogRead,
25
+ defaultLimit: () => import_RunCatalogOps.defaultLimit,
26
+ layer: () => import_RunCatalogOps.layer,
27
+ make: () => import_RunCatalogOps.make,
28
+ maximumPageSize: () => import_RunListing.maximumPageSize
29
+ });
30
+ module.exports = __toCommonJS(RunCatalogRead_exports);
31
+ var import_RunCatalogOps = require("./internal/RunCatalogOps.js");
32
+ var import_RunListing = require("./internal/RunListing.js");
33
+ //# sourceMappingURL=RunCatalogRead.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/RunCatalogRead.ts"],
4
+ "sourcesContent": ["/**\n * The workspace run catalog read.\n *\n * `@smthrs/sync` serves a workspace subscription over a `RunCatalog`, and its\n * own implementations are static or in-process. This is the durable source a\n * `RunCatalog.makePolling` catalog reads, so a follower learns of a run\n * another engine created.\n *\n * The operation lives in `internal/RunCatalogOps.ts`, beside the other\n * modules that read this package's own tables; this module is the public\n * surface, so `internal/` is never imported by a consumer.\n *\n * @since 0.1.0\n */\n\nexport {\n defaultLimit,\n layer,\n type ListOptions,\n make,\n RunCatalogError,\n RunCatalogErrorCode,\n RunCatalogRead,\n type Service\n} from \"./internal/RunCatalogOps.ts\"\n\nexport { Filters, type ListRunsOptions, maximumPageSize, type RunPage } from \"./internal/RunListing.ts\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,2BASO;AAEP,wBAA6E;",
6
+ "names": []
7
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Coalesced execution catch-up with permanent deletion evidence.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import { RunStoreError } from "@smthrs/run-store/RunStore";
7
+ import { Context, Effect, Layer } from "effect";
8
+ import * as SqlClient from "effect/unstable/sql/SqlClient";
9
+ import type { Position } from "./ExecutionSnapshot.ts";
10
+ /**
11
+ * A live-row change or retained tombstone.
12
+ *
13
+ * @category models
14
+ * @since 1.0.0
15
+ */
16
+ export interface Change extends Position {
17
+ readonly runId: string;
18
+ readonly deleted: boolean;
19
+ }
20
+ /**
21
+ * One catch-up page at an engine watermark.
22
+ *
23
+ * @category models
24
+ * @since 1.0.0
25
+ */
26
+ export interface Page extends Position {
27
+ readonly changes: ReadonlyArray<Change>;
28
+ /** Resume here, including across gaps from coalesced changes. */
29
+ readonly nextRevision: number;
30
+ readonly hasMore: boolean;
31
+ }
32
+ /**
33
+ * Bounded state-feed operations.
34
+ *
35
+ * @category models
36
+ * @since 1.0.0
37
+ */
38
+ export interface Service {
39
+ readonly current: Effect.Effect<Position, RunStoreError>;
40
+ readonly changesSince: (options: Position & {
41
+ readonly limit: number;
42
+ }) => Effect.Effect<Page, RunStoreError>;
43
+ }
44
+ declare const RunChangeFeed_base: Context.ServiceClass<RunChangeFeed, "@smthrs/engine-store/RunChangeFeed", Service>;
45
+ /**
46
+ * Durable change-feed service.
47
+ *
48
+ * @category services
49
+ * @since 1.0.0
50
+ */
51
+ export declare class RunChangeFeed extends RunChangeFeed_base {
52
+ }
53
+ /**
54
+ * Maximum change-feed page size.
55
+ *
56
+ * @category constants
57
+ * @since 1.0.0
58
+ */
59
+ export declare const maximumPageSize = 1000;
60
+ /**
61
+ * Constructs the feed without polling or retention timers.
62
+ *
63
+ * @category constructors
64
+ * @since 1.0.0
65
+ */
66
+ export declare const make: () => Effect.Effect<Service, never, SqlClient.SqlClient>;
67
+ /**
68
+ * Provides the SQL feed.
69
+ *
70
+ * @category layers
71
+ * @since 1.0.0
72
+ */
73
+ export declare const layer: Layer.Layer<RunChangeFeed, never, SqlClient.SqlClient>;
74
+ export {};
75
+ //# sourceMappingURL=RunChangeFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunChangeFeed.d.ts","sourceRoot":"","sources":["../../src/RunChangeFeed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGtD;;;;;GAKG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AACD;;;;;GAKG;AACH,MAAM,WAAW,IAAK,SAAQ,QAAQ;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACvC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AACD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IACxD,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;CAC9G;;AACD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAA+E;CAAG;AACrH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,OAAO,CAAA;AAQnC;;;;;GAKG;AACH,eAAO,MAAM,IAAI,QAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,CA8CrE,CAAA;AACJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,CAAuC,CAAA"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var RunChangeFeed_exports = {};
30
+ __export(RunChangeFeed_exports, {
31
+ RunChangeFeed: () => RunChangeFeed,
32
+ layer: () => layer,
33
+ make: () => make,
34
+ maximumPageSize: () => maximumPageSize
35
+ });
36
+ module.exports = __toCommonJS(RunChangeFeed_exports);
37
+ var import_RunStore = require("@smthrs/run-store/RunStore");
38
+ var import_effect = require("effect");
39
+ var SqlClient = __toESM(require("effect/unstable/sql/SqlClient"), 1);
40
+ var Read = __toESM(require("./internal/ExecutionSnapshotRead.js"), 1);
41
+ class RunChangeFeed extends import_effect.Context.Service()("@smthrs/engine-store/RunChangeFeed") {
42
+ }
43
+ const maximumPageSize = 1e3;
44
+ const Options = import_effect.Schema.Struct({
45
+ source: Read.Source,
46
+ revision: Read.Natural,
47
+ limit: import_effect.Schema.Int.check(import_effect.Schema.isBetween({ minimum: 1, maximum: maximumPageSize }))
48
+ });
49
+ const ChangeRow = import_effect.Schema.Struct({ run_id: Read.Identifier, revision: Read.Natural, deleted: import_effect.Schema.Literals([0, 1]) });
50
+ const make = () => import_effect.Effect.gen(function* () {
51
+ const sql = yield* SqlClient.SqlClient;
52
+ return {
53
+ current: Read.boundary("RunChangeFeed.current", Read.position(sql)),
54
+ changesSince: (options) => Read.boundary(
55
+ "RunChangeFeed.changesSince",
56
+ import_effect.Effect.gen(function* () {
57
+ const input = yield* Read.decode(Options, options);
58
+ return yield* Read.transaction(
59
+ sql,
60
+ import_effect.Effect.gen(function* () {
61
+ const at = yield* Read.position(sql);
62
+ if (input.source !== at.source || input.revision > at.revision) {
63
+ return yield* import_effect.Effect.fail(
64
+ new import_RunStore.RunStoreError({
65
+ method: "RunChangeFeed.changesSince",
66
+ code: "invalid_run",
67
+ message: "change cursor requires an explicit source rebuild",
68
+ cause: { requested: input, observed: at }
69
+ })
70
+ );
71
+ }
72
+ const rows = yield* sql`SELECT run_id, revision, deleted FROM flows_run_changes
73
+ WHERE revision > ${input.revision} AND revision <= ${at.revision}
74
+ ORDER BY revision LIMIT ${input.limit + 1}`;
75
+ const decoded = yield* import_effect.Effect.forEach(rows, (row) => Read.decode(ChangeRow, row));
76
+ const changes = decoded.slice(0, input.limit).map((row) => ({
77
+ runId: row.run_id,
78
+ source: at.source,
79
+ revision: row.revision,
80
+ deleted: row.deleted === 1
81
+ }));
82
+ const hasMore = decoded.length > input.limit;
83
+ return {
84
+ ...at,
85
+ changes,
86
+ hasMore,
87
+ nextRevision: hasMore ? changes[changes.length - 1].revision : at.revision
88
+ };
89
+ })
90
+ );
91
+ })
92
+ )
93
+ };
94
+ });
95
+ const layer = import_effect.Layer.effect(RunChangeFeed)(make());
96
+ //# sourceMappingURL=RunChangeFeed.js.map