@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,288 @@
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 Selection_exports = {};
30
+ __export(Selection_exports, {
31
+ BeliefSnapshot: () => BeliefSnapshot,
32
+ DebtEntry: () => DebtEntry,
33
+ NonNegativeSafeInt: () => NonNegativeSafeInt,
34
+ Selection: () => Selection,
35
+ SuspectedEdge: () => SuspectedEdge,
36
+ Verdict: () => Verdict,
37
+ card: () => card,
38
+ debt: () => debt,
39
+ layer: () => layer,
40
+ layerHeuristic: () => layerHeuristic,
41
+ layerNoop: () => layerNoop,
42
+ make: () => make,
43
+ makeHeuristic: () => makeHeuristic,
44
+ makeNoop: () => makeNoop,
45
+ maxScopeWildcards: () => maxScopeWildcards,
46
+ proposeReadSet: () => proposeReadSet,
47
+ risk: () => risk
48
+ });
49
+ module.exports = __toCommonJS(Selection_exports);
50
+ var import_journal = require("@smthrs/journal");
51
+ var Context = __toESM(require("effect/Context"), 1);
52
+ var Effect = __toESM(require("effect/Effect"), 1);
53
+ var Layer = __toESM(require("effect/Layer"), 1);
54
+ var Option = __toESM(require("effect/Option"), 1);
55
+ var Schema = __toESM(require("effect/Schema"), 1);
56
+ const Confidence = Schema.Number.check(
57
+ Schema.isGreaterThanOrEqualTo(0),
58
+ Schema.isLessThanOrEqualTo(1)
59
+ );
60
+ const NonNegativeSafeInt = Schema.Int.check(
61
+ Schema.isGreaterThanOrEqualTo(0),
62
+ Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)
63
+ );
64
+ const maxScopeWildcards = 8;
65
+ const scopeWildcards = (scope) => scope.match(/\*\*|\*/g)?.length ?? 0;
66
+ const SuspectedEdge = Schema.Struct({
67
+ /** The path glob changed files are matched against, with at most `maxScopeWildcards` `*` or `**` tokens. */
68
+ scope: Schema.NonEmptyString.check(
69
+ Schema.makeFilter(
70
+ (scope) => scopeWildcards(scope) <= maxScopeWildcards ? void 0 : `scope carries more than ${maxScopeWildcards} * or ** wildcards`
71
+ )
72
+ ),
73
+ /** The flow or step name the guess says the change affects. */
74
+ affects: Schema.NonEmptyString,
75
+ /** In `[0, 1]`; moved by outcomes, never by hand. */
76
+ confidence: Confidence,
77
+ /** The edge is inert until the snapshot's `pinnedAtMs` reaches this. */
78
+ validFromMs: NonNegativeSafeInt,
79
+ /** References to the journal facts the guess was learned from. */
80
+ evidence: Schema.Array(Schema.String)
81
+ });
82
+ const BeliefSnapshot = Schema.Struct({
83
+ pinnedAtMs: NonNegativeSafeInt,
84
+ edges: Schema.Array(SuspectedEdge)
85
+ });
86
+ const Verdict = Schema.Union([
87
+ Schema.TaggedStruct("Admit", {}),
88
+ Schema.TaggedStruct("Defer", { edge: SuspectedEdge, likelihood: Confidence }),
89
+ Schema.TaggedStruct("Propose", { flow: Schema.NonEmptyString, edge: SuspectedEdge, confidence: Confidence })
90
+ ]);
91
+ class Selection extends Context.Service()("@smthrs/engine-store/Selection") {
92
+ }
93
+ const make = (service) => service;
94
+ const layer = (service) => Layer.succeed(Selection, service);
95
+ const makeNoop = () => ({
96
+ select: Effect.fn("Selection.select")(
97
+ (input) => Effect.succeed(
98
+ input.sinks.map((candidate) => ({ nodeId: candidate.nodeId, verdict: { _tag: "Admit" } }))
99
+ )
100
+ )
101
+ });
102
+ const layerNoop = Layer.sync(Selection, makeNoop);
103
+ const compileScope = (scope) => {
104
+ const tokens = scope.split("**").flatMap((segment, index) => [
105
+ ...index === 0 ? [] : ["**"],
106
+ ...segment
107
+ ]);
108
+ const close = (states) => {
109
+ for (let index = 0; index < tokens.length; index++) {
110
+ if (states[index] === 1 && (tokens[index] === "*" || tokens[index] === "**")) states[index + 1] = 1;
111
+ }
112
+ return states;
113
+ };
114
+ return (path) => {
115
+ let states = close(new Uint8Array(tokens.length + 1).fill(1, 0, 1));
116
+ for (const char of path) {
117
+ const next = new Uint8Array(tokens.length + 1);
118
+ let live = false;
119
+ for (let index = 0; index < tokens.length; index++) {
120
+ if (states[index] !== 1) continue;
121
+ const token = tokens[index];
122
+ const target = token === "**" || token === "*" && char !== "/" ? index : token === "?" && char !== "/" || token === char ? index + 1 : -1;
123
+ if (target >= 0) {
124
+ next[target] = 1;
125
+ live = true;
126
+ }
127
+ }
128
+ if (!live) return false;
129
+ states = close(next);
130
+ }
131
+ return states[tokens.length] === 1;
132
+ };
133
+ };
134
+ const makeScopeMatcher = () => {
135
+ const matchers = /* @__PURE__ */ new Map();
136
+ return (scope, path) => {
137
+ let matcher = matchers.get(scope);
138
+ if (matcher === void 0) {
139
+ matcher = compileScope(scope);
140
+ matchers.set(scope, matcher);
141
+ }
142
+ return matcher(path);
143
+ };
144
+ };
145
+ const liveEdges = (beliefs, paths) => {
146
+ const matchesScope = makeScopeMatcher();
147
+ return beliefs.edges.filter(
148
+ (edge) => edge.validFromMs <= beliefs.pinnedAtMs && paths.some((path) => matchesScope(edge.scope, path))
149
+ );
150
+ };
151
+ const makeHeuristic = () => ({
152
+ select: Effect.fn("Selection.select")(
153
+ (input) => Effect.sync(() => {
154
+ const live = liveEdges(input.beliefs, input.changed);
155
+ const verdicts = [];
156
+ for (const candidate of input.sinks) {
157
+ let best = void 0;
158
+ for (const edge of live) {
159
+ if (edge.affects !== candidate.nodeId) continue;
160
+ if (best === void 0 || edge.confidence > best.confidence) best = edge;
161
+ }
162
+ const failureLikelihood = candidate.stats === void 0 ? 0 : candidate.stats.failures / Math.max(candidate.stats.runs, 1);
163
+ const likelihood = Math.max(best?.confidence ?? 0, failureLikelihood);
164
+ verdicts.push(
165
+ best !== void 0 && likelihood < input.policy.deferBelow ? { nodeId: candidate.nodeId, verdict: { _tag: "Defer", edge: best, likelihood } } : { nodeId: candidate.nodeId, verdict: { _tag: "Admit" } }
166
+ );
167
+ }
168
+ const present = new Set(input.present);
169
+ const proposals = /* @__PURE__ */ new Map();
170
+ for (const edge of live) {
171
+ if (present.has(edge.affects)) continue;
172
+ const existing = proposals.get(edge.affects);
173
+ if (existing === void 0 || edge.confidence > existing.confidence) proposals.set(edge.affects, edge);
174
+ }
175
+ for (const [flow, edge] of proposals) {
176
+ verdicts.push({ nodeId: flow, verdict: { _tag: "Propose", flow, edge, confidence: edge.confidence } });
177
+ }
178
+ return verdicts;
179
+ })
180
+ )
181
+ });
182
+ const layerHeuristic = Layer.sync(Selection, makeHeuristic);
183
+ const DebtEntry = Schema.Struct({
184
+ planId: Schema.NonEmptyString,
185
+ nodeId: Schema.NonEmptyString,
186
+ /** The plan-time key: the content-addressed handle repayment settles against. */
187
+ planKey: Schema.NonEmptyString,
188
+ edge: SuspectedEdge,
189
+ likelihood: Schema.Number,
190
+ /** Journal provenance: the durable sequence the deferral was recorded at. */
191
+ seq: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))
192
+ });
193
+ const DeferredPayload = Schema.Struct({
194
+ planId: Schema.NonEmptyString,
195
+ nodeId: Schema.NonEmptyString,
196
+ planKey: Schema.NonEmptyString,
197
+ edge: SuspectedEdge,
198
+ likelihood: Schema.Number
199
+ });
200
+ const decodeDeferred = Schema.decodeUnknownOption(DeferredPayload);
201
+ const SettledPayload = Schema.Struct({
202
+ planKey: Schema.NonEmptyString,
203
+ outcome: Schema.String
204
+ });
205
+ const decodeSettled = Schema.decodeUnknownOption(SettledPayload);
206
+ const debt = Effect.fn("Selection.debt")(
207
+ (runId, options) => Effect.gen(function* () {
208
+ const journal = yield* import_journal.Journal.Journal;
209
+ const owed = /* @__PURE__ */ new Map();
210
+ const fold = (run, closesOnly) => Effect.gen(function* () {
211
+ let cursor = void 0;
212
+ while (true) {
213
+ const page = yield* journal.entries({
214
+ runId: run,
215
+ ...cursor === void 0 ? {} : { after: cursor },
216
+ limit: 512
217
+ });
218
+ for (const entry of page.entries) {
219
+ cursor = entry.seq;
220
+ if (!closesOnly && entry.eventType === "flows.engine.selection-deferred") {
221
+ const payload2 = decodeDeferred(entry.payload);
222
+ if (Option.isNone(payload2)) continue;
223
+ owed.set(payload2.value.planKey, { ...payload2.value, seq: entry.seq });
224
+ continue;
225
+ }
226
+ if (entry.eventType !== "flows.engine.node-settled") continue;
227
+ const payload = decodeSettled(entry.payload);
228
+ if (Option.isNone(payload)) continue;
229
+ const outcome = payload.value.outcome;
230
+ if (outcome === "built" || outcome === "clean" || outcome === "failed") {
231
+ owed.delete(payload.value.planKey);
232
+ }
233
+ }
234
+ if (!page.hasMore) break;
235
+ }
236
+ });
237
+ yield* fold(runId, false);
238
+ for (const repayer of options?.repaidBy ?? []) {
239
+ yield* fold(repayer, true);
240
+ }
241
+ return [...owed.values()];
242
+ })
243
+ );
244
+ const risk = (input) => {
245
+ const live = liveEdges(input.beliefs, input.changed);
246
+ const level = live.some((edge) => edge.confidence >= 0.7) ? "high" : live.some((edge) => edge.confidence >= 0.4) ? "medium" : "low";
247
+ return {
248
+ level,
249
+ reasons: live.map((edge) => `${edge.scope} -> ${edge.affects} (${edge.confidence})`)
250
+ };
251
+ };
252
+ const card = (input) => {
253
+ const likelihoods = new Map(input.deferrals.map((deferral) => [deferral.nodeId, deferral.likelihood]));
254
+ const row = (label, rest) => ` ${label.padEnd(8)} ${rest}`;
255
+ const lines = [];
256
+ for (const settlement of input.settlements) {
257
+ if (settlement.outcome === "clean") lines.push(row("cached", settlement.nodeId));
258
+ else if (settlement.outcome === "built") lines.push(row("run", settlement.nodeId));
259
+ else if (settlement.outcome === "deferred") {
260
+ const likelihood = likelihoods.get(settlement.nodeId) ?? 0;
261
+ lines.push(row("deferred", `${settlement.nodeId} fail likelihood ${likelihood} - recert ${input.cadence}`));
262
+ } else lines.push(row(settlement.outcome, settlement.nodeId));
263
+ }
264
+ for (const proposal of input.proposals) {
265
+ lines.push(row("proposed", `${proposal.flow} suspected edge ${proposal.confidence} - ${proposal.scope} touched`));
266
+ }
267
+ if (input.risk !== void 0) {
268
+ lines.push(row("risk", `${input.risk.level} - ${input.risk.reasons.join("; ")}`));
269
+ }
270
+ return lines;
271
+ };
272
+ const proposeReadSet = (input) => {
273
+ const edges = input.beliefs.edges.filter(
274
+ (edge) => edge.validFromMs <= input.beliefs.pinnedAtMs && edge.affects === input.flow
275
+ );
276
+ const matchesScope = makeScopeMatcher();
277
+ const seen = /* @__PURE__ */ new Set();
278
+ const selected = [];
279
+ for (const path of input.paths) {
280
+ if (seen.has(path)) continue;
281
+ if (edges.some((edge) => matchesScope(edge.scope, path))) {
282
+ seen.add(path);
283
+ selected.push(path);
284
+ }
285
+ }
286
+ return selected;
287
+ };
288
+ //# sourceMappingURL=Selection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Selection.ts"],
4
+ "sourcesContent": ["/**\n * The probabilistic-selection seam: guesses may schedule work; only real\n * dependencies decide truth.\n *\n * `docs/guides/defer-work-with-selection.md` describes learning, from run\n * history, which changes *tend to* affect which flows, and letting those\n * guesses do exactly three things: suggest extra work, postpone work that\n * almost never fails, and order the queue. This module is the engine-store\n * half of the proposal: the belief and verdict types, the pluggable\n * `Selection` service, and the deterministic default layers. `PlanScheduler`\n * is the one consumer, and it offers only **sinks** \u2014 nodes nothing in the\n * plan depends on \u2014 because deferring a node something consumes would block\n * or corrupt its consumers. Meta's Predictive Test Selection (ICSE-SEIP 2019)\n * skips tests under exactly this restriction: tests are sinks.\n *\n * Seven v1 laws bound what a verdict may do, and the scheduler's tests assert\n * each:\n *\n * 1. A verdict never enters key material and never changes a cache row: an\n * admitted node's step key and cached result are computed exactly as if\n * selection did not exist.\n * 2. `deferred` is never passed. The node does not execute, writes no cache\n * row, and is journaled as a debt (`flows.engine.selection-deferred`)\n * that a later guess-free pass repays.\n * 3. Only sinks are deferrable. A Defer or Propose verdict naming anything\n * else is ignored and journaled as an inconsistency observation \u2014\n * Skyframe's `GraphInconsistencyReceiver` shape: note it, decide, never\n * wire the detector to /dev/null.\n * 4. Guesses add or postpone, never remove. A node the plan requires runs\n * exactly as today, and the run-level `full` override restores full\n * execution the way `--fresh` ignores the cache.\n * 5. Training only moves confidence: it never creates edges or touches the\n * journal, and misses reduce confidence faster than hits accrue it.\n * 6. Repayment is a pure widening: `debt(runId)` keeps the v1 same-run fold,\n * while `debt(runId, { repaidBy })` additionally accepts settlements from\n * listed recertification runs.\n * 7. The plan card, risk annotation, and read-set proposal helpers are pure\n * functions of plain data and require no services.\n *\n * Pluggability is dependency injection at the owning seam, exactly as\n * `Reconciliation` beside it: {@link layerNoop} admits everything and is the\n * behavioral default when no layer is provided; {@link layerHeuristic} is a\n * pure, deterministic function of the pinned belief snapshot; a model-backed\n * selector is a different `Layer`, lives outside this package, and this\n * package must not grow a model dependency.\n *\n * Deliberately still out of scope, recorded here so the absences read as\n * decisions rather than oversights: the model-backed selection layer (this\n * package must not grow a model dependency), selection CLI verbs (`@smthrs/cli`\n * owns CLI verbs and `smithers gc` drives `Retention.collect`, but no selection\n * verbs are exposed yet), approval routing from risk (approval machinery lives\n * elsewhere), auto-appending proposed nodes (pending human review), and\n * scheduled recertification cadence (a product/system-flow concern; this\n * module ships only the primitive).\n *\n * @since 0.1.0\n */\n\nimport { Journal, type JournalEvent } from \"@smthrs/journal\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\n\nconst Confidence = Schema.Number.check(\n Schema.isGreaterThanOrEqualTo(0),\n Schema.isLessThanOrEqualTo(1)\n)\n\n/**\n * Epoch/counter values accepted by both public schemas and SQLite.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NonNegativeSafeInt = Schema.Int.check(\n Schema.isGreaterThanOrEqualTo(0),\n Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)\n)\n\n/**\n * The most `*` or `**` tokens a `SuspectedEdge.scope` may carry. Matching is\n * linear in the path either way; the bound keeps each match cheap and refuses\n * degenerate scopes at the write.\n *\n * @since 1.0.0\n * @category constants\n */\nexport const maxScopeWildcards = 8\n\nconst scopeWildcards = (scope: string): number => scope.match(/\\*\\*|\\*/g)?.length ?? 0\n\n/**\n * A recorded guess with a fixed shape: \"changes matching this path pattern\n * tend to affect this flow\". It is a belief, not a dependency \u2014 it carries\n * confidence and evidence, and training moves the confidence; nothing here\n * ever enters a step key.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const SuspectedEdge = Schema.Struct({\n /** The path glob changed files are matched against, with at most `maxScopeWildcards` `*` or `**` tokens. */\n scope: Schema.NonEmptyString.check(\n Schema.makeFilter((scope) =>\n scopeWildcards(scope) <= maxScopeWildcards\n ? undefined\n : `scope carries more than ${maxScopeWildcards} * or ** wildcards`\n )\n ),\n /** The flow or step name the guess says the change affects. */\n affects: Schema.NonEmptyString,\n /** In `[0, 1]`; moved by outcomes, never by hand. */\n confidence: Confidence,\n /** The edge is inert until the snapshot's `pinnedAtMs` reaches this. */\n validFromMs: NonNegativeSafeInt,\n /** References to the journal facts the guess was learned from. */\n evidence: Schema.Array(Schema.String)\n})\n\n/**\n * The value form of {@link SuspectedEdge}.\n *\n * @since 0.1.0\n * @category models\n */\nexport type SuspectedEdge = typeof SuspectedEdge.Type\n\n/**\n * The suspected edges in force for one run, pinned before planning. Pinning\n * is what keeps selection a pure function of data in hand: a belief updated\n * mid-run cannot change what this run defers.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const BeliefSnapshot = Schema.Struct({\n pinnedAtMs: NonNegativeSafeInt,\n edges: Schema.Array(SuspectedEdge)\n})\n\n/**\n * The value form of {@link BeliefSnapshot}.\n *\n * @since 0.1.0\n * @category models\n */\nexport type BeliefSnapshot = typeof BeliefSnapshot.Type\n\n/**\n * What selection decided: admit the work (the default), postpone it to a\n * guess-free pass, or propose a flow no real dependency reaches.\n *\n * The design draft names this union `SelectionVerdict`; here the `Selection`\n * namespace carries that prefix, so the export is `Verdict`, the same shape\n * `Reconciliation.Verdict` takes beside it.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const Verdict = Schema.Union([\n Schema.TaggedStruct(\"Admit\", {}),\n Schema.TaggedStruct(\"Defer\", { edge: SuspectedEdge, likelihood: Confidence }),\n Schema.TaggedStruct(\"Propose\", { flow: Schema.NonEmptyString, edge: SuspectedEdge, confidence: Confidence })\n])\n\n/**\n * The value form of {@link Verdict}.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Verdict = typeof Verdict.Type\n\n/**\n * Deferral policy, inherited per directory like cache freshness windows.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Policy {\n /**\n * A sink whose best matched likelihood is strictly below this threshold is\n * deferred. Zero defers nothing; a likelihood exactly at the threshold is\n * admitted.\n */\n readonly deferBelow: number\n}\n\n/**\n * One deferrable candidate the scheduler offers: a plan node nothing in the\n * plan depends on.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Candidate {\n readonly nodeId: string\n /** The plan-time key: the identity the scheduler already holds. */\n readonly planKey: string\n /** Historical failure rate for the sink, used only when a live edge already names it. */\n readonly stats?: {\n readonly failures: number\n readonly runs: number\n } | undefined\n}\n\n/**\n * Everything one selection consult sees. The scheduler builds it once per\n * run, so a verdict is a pure function of the changed set, the plan's shape,\n * and the pinned beliefs.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Input {\n /** Paths this change touched, matched against edge scopes. */\n readonly changed: ReadonlyArray<string>\n /** The only deferrable candidates: plan nodes with no dependents. */\n readonly sinks: ReadonlyArray<Candidate>\n /**\n * Every name the plan accounts for: its flow and its node ids. An edge\n * whose `affects` names none of these reaches work the plan cannot see,\n * which is what a `Propose` verdict records.\n */\n readonly present: ReadonlyArray<string>\n /** The belief snapshot pinned before planning. */\n readonly beliefs: BeliefSnapshot\n readonly policy: Policy\n}\n\n/**\n * One returned verdict. `nodeId` names the offered candidate for `Admit` and\n * `Defer`; a `Propose` names work outside the plan, so there it carries the\n * proposed flow's name instead of a plan node id.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Selected {\n readonly nodeId: string\n readonly verdict: Verdict\n}\n\n/**\n * The pluggable selector.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Service {\n readonly select: (input: Input) => Effect.Effect<ReadonlyArray<Selected>>\n}\n\n/**\n * Service tag for the probabilistic-selection seam.\n *\n * @since 0.1.0\n * @category services\n */\nexport class Selection extends Context.Service<Selection, Service>()(\"@smthrs/engine-store/Selection\") {}\n\n/**\n * Names a {@link Service} implementation as a selector.\n *\n * It is the identity function: the value is checked against the interface at\n * its definition site, which is where a wrong-shaped selector should be\n * reported rather than at whichever layer eventually provides it.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (service: Service): Service => service\n\n/**\n * Provides a {@link Service} as the {@link Selection} seam.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layer = (service: Service): Layer.Layer<Selection> => Layer.succeed(Selection, service)\n\n/**\n * Admits everything. This is the behavioral default: with no `Selection`\n * layer provided the scheduler falls back to it, and a run under it is\n * byte-identical to a run before this seam existed \u2014 same keys, same cache\n * rows, same journal.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const makeNoop = (): Service => ({\n select: Effect.fn(\"Selection.select\")((input) =>\n Effect.succeed(\n input.sinks.map((candidate): Selected => ({ nodeId: candidate.nodeId, verdict: { _tag: \"Admit\" } }))\n )\n )\n})\n\n/**\n * Provides the selector that admits everything.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layerNoop: Layer.Layer<Selection> = Layer.sync(Selection, makeNoop)\n\n/**\n * Compiles a path glob: `**` crosses path\n * separators, `*` and `?` stay within a segment, everything else is literal.\n * The whole path must match, so `packages/smithers/flows/engine/src/**` selects everything\n * under that directory and nothing beside it.\n *\n * The result runs the glob as a set of token positions advanced one path\n * character at a time, so a match costs at most path length times token\n * count and never backtracks, even for a scope stored before the wildcard cap.\n */\nconst compileScope = (scope: string): (path: string) => boolean => {\n const tokens = scope.split(\"**\").flatMap((segment, index) => [\n ...(index === 0 ? [] : [\"**\"]),\n ...segment\n ])\n const close = (states: Uint8Array): Uint8Array => {\n for (let index = 0; index < tokens.length; index++) {\n if (states[index] === 1 && (tokens[index] === \"*\" || tokens[index] === \"**\")) states[index + 1] = 1\n }\n return states\n }\n return (path) => {\n let states = close(new Uint8Array(tokens.length + 1).fill(1, 0, 1))\n for (const char of path) {\n const next = new Uint8Array(tokens.length + 1)\n let live = false\n for (let index = 0; index < tokens.length; index++) {\n if (states[index] !== 1) continue\n const token = tokens[index]\n const target = token === \"**\" || (token === \"*\" && char !== \"/\")\n ? index\n : (token === \"?\" && char !== \"/\") || token === char\n ? index + 1\n : -1\n if (target >= 0) {\n next[target] = 1\n live = true\n }\n }\n if (!live) return false\n states = close(next)\n }\n return states[tokens.length] === 1\n }\n}\n\nconst makeScopeMatcher = () => {\n const matchers = new Map<string, (path: string) => boolean>()\n return (scope: string, path: string): boolean => {\n let matcher = matchers.get(scope)\n if (matcher === undefined) {\n matcher = compileScope(scope)\n matchers.set(scope, matcher)\n }\n return matcher(path)\n }\n}\n\nconst liveEdges = (beliefs: BeliefSnapshot, paths: ReadonlyArray<string>): ReadonlyArray<SuspectedEdge> => {\n const matchesScope = makeScopeMatcher()\n return beliefs.edges.filter((edge) =>\n edge.validFromMs <= beliefs.pinnedAtMs\n && paths.some((path) => matchesScope(edge.scope, path))\n )\n}\n\n/**\n * The deterministic default heuristics: pure, no IO, no model calls, a\n * function of nothing but its input.\n *\n * An edge is *live* when its `validFromMs` has been reached at the\n * snapshot's `pinnedAtMs` and some changed path matches its scope glob. A\n * live edge yields likelihood equal to the maximum of its confidence and the\n * candidate's historical `failures / max(runs, 1)` rate. A sink whose best\n * likelihood is strictly below `policy.deferBelow` is deferred under its\n * best edge; a sink no live edge names \u2014 or one at or above the threshold \u2014\n * is admitted. Stats alone never defer: they only keep a live edge from\n * postponing a flaky sink. A live edge whose `affects` names nothing the plan\n * contains proposes that flow, once per flow under its highest-confidence\n * edge.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const makeHeuristic = (): Service => ({\n select: Effect.fn(\"Selection.select\")((input) =>\n Effect.sync(() => {\n const live = liveEdges(input.beliefs, input.changed)\n const verdicts: Array<Selected> = []\n for (const candidate of input.sinks) {\n let best: SuspectedEdge | undefined = undefined\n for (const edge of live) {\n if (edge.affects !== candidate.nodeId) continue\n if (best === undefined || edge.confidence > best.confidence) best = edge\n }\n const failureLikelihood = candidate.stats === undefined\n ? 0\n : candidate.stats.failures / Math.max(candidate.stats.runs, 1)\n const likelihood = Math.max(best?.confidence ?? 0, failureLikelihood)\n verdicts.push(\n best !== undefined && likelihood < input.policy.deferBelow\n ? { nodeId: candidate.nodeId, verdict: { _tag: \"Defer\", edge: best, likelihood } }\n : { nodeId: candidate.nodeId, verdict: { _tag: \"Admit\" } }\n )\n }\n const present = new Set(input.present)\n const proposals = new Map<string, SuspectedEdge>()\n for (const edge of live) {\n if (present.has(edge.affects)) continue\n const existing = proposals.get(edge.affects)\n if (existing === undefined || edge.confidence > existing.confidence) proposals.set(edge.affects, edge)\n }\n for (const [flow, edge] of proposals) {\n verdicts.push({ nodeId: flow, verdict: { _tag: \"Propose\", flow, edge, confidence: edge.confidence } })\n }\n return verdicts\n })\n )\n})\n\n/**\n * Provides the deterministic default heuristics.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layerHeuristic: Layer.Layer<Selection> = Layer.sync(Selection, makeHeuristic)\n\n/**\n * One unpaid deferral: the work a guess postponed, with everything a\n * guess-free follow-up needs to execute exactly it \u2014 the node, its\n * content-addressed plan key, the edge that caused the postponement, and the\n * journal position the debt was recorded at.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const DebtEntry = Schema.Struct({\n planId: Schema.NonEmptyString,\n nodeId: Schema.NonEmptyString,\n /** The plan-time key: the content-addressed handle repayment settles against. */\n planKey: Schema.NonEmptyString,\n edge: SuspectedEdge,\n likelihood: Schema.Number,\n /** Journal provenance: the durable sequence the deferral was recorded at. */\n seq: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n})\n\n/**\n * The value form of {@link DebtEntry}.\n *\n * @since 0.1.0\n * @category models\n */\nexport type DebtEntry = typeof DebtEntry.Type\n\n/**\n * The `flows.engine.selection-deferred` payload the scheduler writes. Read\n * tolerantly: `likelihood` stays an unrefined number here \u2014 unlike the\n * `Verdict` union's `[0, 1]` refinement \u2014 so a historically journaled\n * out-of-range value cannot silently drop a real debt.\n */\nconst DeferredPayload = Schema.Struct({\n planId: Schema.NonEmptyString,\n nodeId: Schema.NonEmptyString,\n planKey: Schema.NonEmptyString,\n edge: SuspectedEdge,\n likelihood: Schema.Number\n})\n\nconst decodeDeferred = Schema.decodeUnknownOption(DeferredPayload)\n\n/** The slice of a `flows.engine.node-settled` payload repayment reads. */\nconst SettledPayload = Schema.Struct({\n planKey: Schema.NonEmptyString,\n outcome: Schema.String\n})\n\nconst decodeSettled = Schema.decodeUnknownOption(SettledPayload)\n\n/**\n * Options for {@link debt}: which recertification runs may repay this run's\n * deferrals. The caller names the repaying runs explicitly \u2014 the fold never\n * guesses which other runs were guess-free passes.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface DebtOptions {\n readonly repaidBy?: ReadonlyArray<string> | undefined\n}\n\n/**\n * Lists the run's unpaid deferrals by folding the journal: every\n * `flows.engine.selection-deferred` record opens a debt under its plan key,\n * and a later `node-settled` under the same key with a real outcome \u2014\n * `built`, `clean`, or `failed` \u2014 closes it. A `skipped` settlement does not:\n * that work never ran, so it is still owed. A `failed` one does: the\n * guess-free pass executed the work and surfaced the miss, which is the\n * training signal the spec asks for.\n *\n * `debt(runId)` keeps the v1 same-run fold: only a settlement journaled\n * under the same `runId` closes a debt. `debt(runId, { repaidBy })` is the\n * pure widening of law 6 \u2014 settlements journaled under a listed\n * recertification run also close, matched by plan key, and nothing else\n * changes. `PlanScheduler.recertify` is the driver that produces such a run.\n *\n * The journal is read directly rather than projected into a table, for the\n * same reason the scheduler consumes deviations from it: a deferral is a\n * durable, replayable fact, and a second store would be a cache of one.\n *\n * @since 0.1.0\n * @category queries\n */\nexport const debt = Effect.fn(\"Selection.debt\")((runId: string, options?: DebtOptions) =>\n Effect.gen(function*() {\n const journal = yield* Journal.Journal\n const owed = new Map<string, DebtEntry>()\n\n const fold = (run: string, closesOnly: boolean) =>\n Effect.gen(function*() {\n let cursor: number | undefined = undefined\n while (true) {\n const page: Journal.EntriesPage = yield* journal.entries({\n runId: run as JournalEvent.RunId,\n ...(cursor === undefined ? {} : { after: cursor as JournalEvent.Seq }),\n limit: 512\n })\n for (const entry of page.entries) {\n cursor = entry.seq\n if (!closesOnly && entry.eventType === \"flows.engine.selection-deferred\") {\n const payload = decodeDeferred(entry.payload)\n if (Option.isNone(payload)) continue\n owed.set(payload.value.planKey, { ...payload.value, seq: entry.seq })\n continue\n }\n if (entry.eventType !== \"flows.engine.node-settled\") continue\n const payload = decodeSettled(entry.payload)\n if (Option.isNone(payload)) continue\n const outcome = payload.value.outcome\n if (outcome === \"built\" || outcome === \"clean\" || outcome === \"failed\") {\n owed.delete(payload.value.planKey)\n }\n }\n if (!page.hasMore) break\n }\n })\n\n yield* fold(runId, false)\n for (const repayer of options?.repaidBy ?? []) {\n yield* fold(repayer, true)\n }\n return [...owed.values()] as ReadonlyArray<DebtEntry>\n })\n)\n\n/**\n * A pure risk annotation for a change, never a gate. The level comes from\n * the live matching edges alone: `\"high\"` if any has confidence at or above\n * `0.7`, `\"medium\"` at or above `0.4`, else `\"low\"`. Each contributing edge\n * is named in `reasons` as `<scope> -> <affects> (<confidence>)`.\n *\n * The design draft passed the plan in this input; the pinned rule never\n * reads it, so the shipped signature drops it \u2014 recorded here so the\n * narrowing reads as a decision.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Risk {\n readonly level: \"low\" | \"medium\" | \"high\"\n readonly reasons: ReadonlyArray<string>\n}\n\n/**\n * Computes the {@link Risk} annotation for a change against the pinned\n * belief snapshot. Pure: same input, same output, no services.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const risk = (input: {\n readonly changed: ReadonlyArray<string>\n readonly beliefs: BeliefSnapshot\n}): Risk => {\n const live = liveEdges(input.beliefs, input.changed)\n const level = live.some((edge) => edge.confidence >= 0.7)\n ? \"high\"\n : live.some((edge) => edge.confidence >= 0.4)\n ? \"medium\"\n : \"low\"\n return {\n level,\n reasons: live.map((edge) => `${edge.scope} -> ${edge.affects} (${edge.confidence})`)\n }\n}\n\n/**\n * What {@link card} renders from: settlements and deferral/proposal details\n * as plain data, plus the recertification cadence label and an optional\n * {@link Risk} annotation.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface CardInput {\n readonly settlements: ReadonlyArray<{ readonly nodeId: string; readonly outcome: string }>\n readonly deferrals: ReadonlyArray<{ readonly nodeId: string; readonly likelihood: number }>\n readonly proposals: ReadonlyArray<{ readonly flow: string; readonly confidence: number; readonly scope: string }>\n readonly cadence: string\n readonly risk?: Risk | undefined\n}\n\n/**\n * Renders the plan card, one string per line, in the spec's row grammar:\n * `clean` renders as `cached`, `built` as `run`, `deferred` carries its fail\n * likelihood and the recertification cadence, each proposal names the edge\n * that suggested it, and any other outcome renders under its own name. Pure:\n * no IO, no services.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const card = (input: CardInput): ReadonlyArray<string> => {\n const likelihoods = new Map(input.deferrals.map((deferral) => [deferral.nodeId, deferral.likelihood]))\n const row = (label: string, rest: string) => ` ${label.padEnd(8)} ${rest}`\n const lines: Array<string> = []\n for (const settlement of input.settlements) {\n if (settlement.outcome === \"clean\") lines.push(row(\"cached\", settlement.nodeId))\n else if (settlement.outcome === \"built\") lines.push(row(\"run\", settlement.nodeId))\n else if (settlement.outcome === \"deferred\") {\n const likelihood = likelihoods.get(settlement.nodeId) ?? 0\n lines.push(row(\"deferred\", `${settlement.nodeId} fail likelihood ${likelihood} - recert ${input.cadence}`))\n } else lines.push(row(settlement.outcome, settlement.nodeId))\n }\n for (const proposal of input.proposals) {\n lines.push(row(\"proposed\", `${proposal.flow} suspected edge ${proposal.confidence} - ${proposal.scope} touched`))\n }\n if (input.risk !== undefined) {\n lines.push(row(\"risk\", `${input.risk.level} - ${input.risk.reasons.join(\"; \")}`))\n }\n return lines\n}\n\n/**\n * The workspace paths a flow's live suspected edges select: the\n * `boundaryMode: \"expected\"` feeder. A path is included when any edge valid\n * at the snapshot's pin names the flow in `affects` and matches the path\n * with its scope glob; the result is deduplicated and keeps input order.\n * Pure: no IO, no services. Wiring this into an agent step is future work \u2014\n * no agent steps exist in this repo.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const proposeReadSet = (input: {\n readonly beliefs: BeliefSnapshot\n readonly flow: string\n readonly paths: ReadonlyArray<string>\n}): ReadonlyArray<string> => {\n const edges = input.beliefs.edges.filter((edge) =>\n edge.validFromMs <= input.beliefs.pinnedAtMs && edge.affects === input.flow\n )\n const matchesScope = makeScopeMatcher()\n const seen = new Set<string>()\n const selected: Array<string> = []\n for (const path of input.paths) {\n if (seen.has(path)) continue\n if (edges.some((edge) => matchesScope(edge.scope, path))) {\n seen.add(path)\n selected.push(path)\n }\n }\n return selected\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["payload"]
7
+ }
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Durable suspected-edge storage for probabilistic selection.
3
+ *
4
+ * The store persists advisory beliefs only: training moves edge confidence and
5
+ * appends evidence, but it never writes scheduler journal records, step keys,
6
+ * or cache rows (law 5). The edge and snapshot schemas are `Selection`'s own —
7
+ * one source of truth, so a stored edge is by construction what
8
+ * `Selection.select` consumes. Evidence entries stay strings: training appends
9
+ * the observation JSON-encoded, so audits can replay the asymmetric rule
10
+ * without the schema forking from `Selection.SuspectedEdge`.
11
+ *
12
+ * Model-backed selection, CLI verbs, approval routing, auto-appending
13
+ * proposals, and scheduled recertification cadence are deliberately out of
14
+ * scope here: `engine-store` must not grow a model dependency, no selection
15
+ * CLI verbs are exposed yet, approval routing belongs to
16
+ * `@smthrs/control`, proposal admission still needs human product review, and
17
+ * cadence belongs to a system-flow/product layer rather than the primitive
18
+ * store.
19
+ *
20
+ * @since 0.1.0
21
+ */
22
+ import { DurableWriter } from "@smthrs/database/DurableWriter";
23
+ import * as Context from "effect/Context";
24
+ import * as Effect from "effect/Effect";
25
+ import * as Layer from "effect/Layer";
26
+ import * as Schema from "effect/Schema";
27
+ import * as SqlClient from "effect/unstable/sql/SqlClient";
28
+ import * as Selection from "./Selection.ts";
29
+ /**
30
+ * Training outcomes for a suspected edge: a `hit` is a recertified deferral
31
+ * that passed, a `miss` is one that failed — the guess was confidently wrong.
32
+ *
33
+ * @category schemas
34
+ * @since 0.1.0
35
+ */
36
+ export declare const TrainingOutcome: Schema.Literals<readonly ["hit", "miss"]>;
37
+ /**
38
+ * Training outcomes for a suspected edge.
39
+ *
40
+ * @category models
41
+ * @since 0.1.0
42
+ */
43
+ export type TrainingOutcome = typeof TrainingOutcome.Type;
44
+ /**
45
+ * One observed result for a stored suspected edge.
46
+ *
47
+ * @category schemas
48
+ * @since 0.1.0
49
+ */
50
+ export declare const TrainingObservation: Schema.Struct<{
51
+ readonly scope: Schema.NonEmptyString;
52
+ readonly affects: Schema.NonEmptyString;
53
+ readonly outcome: Schema.Literals<readonly ["hit", "miss"]>;
54
+ }>;
55
+ /**
56
+ * One observed result for a stored suspected edge.
57
+ *
58
+ * @category models
59
+ * @since 0.1.0
60
+ */
61
+ export type TrainingObservation = typeof TrainingObservation.Type;
62
+ /**
63
+ * Stable selection-store failure codes.
64
+ *
65
+ * @category schemas
66
+ * @since 1.0.0
67
+ */
68
+ export declare const SelectionStoreErrorCode: Schema.Literals<readonly ["invalid_input", "decode_failed", "persistence_failed"]>;
69
+ /**
70
+ * Stable selection-store failure codes.
71
+ *
72
+ * @category models
73
+ * @since 1.0.0
74
+ */
75
+ export type SelectionStoreErrorCode = typeof SelectionStoreErrorCode.Type;
76
+ declare const SelectionStoreError_base: Schema.Class<SelectionStoreError, Schema.TaggedStruct<"@smthrs/engine-store/SelectionStoreError", {
77
+ readonly code: Schema.Literals<readonly ["invalid_input", "decode_failed", "persistence_failed"]>;
78
+ readonly message: Schema.String;
79
+ readonly scope: Schema.optional<Schema.String>;
80
+ readonly affects: Schema.optional<Schema.String>;
81
+ readonly cause: Schema.optional<Schema.Unknown>;
82
+ }>, import("effect/Cause").YieldableError>;
83
+ /**
84
+ * A rejected public value, corrupt stored row, or unavailable database.
85
+ *
86
+ * @category errors
87
+ * @since 1.0.0
88
+ */
89
+ export declare class SelectionStoreError extends SelectionStoreError_base {
90
+ }
91
+ /**
92
+ * Durable suspected-edge persistence operations. `snapshot` pins the injected
93
+ * clock's now, never `Date.now()`; `train` applies the asymmetric rule — a
94
+ * hit gains five percent of the remaining headroom, a miss halves — to
95
+ * matching stored edges only, ignoring unknown pairs rather than creating
96
+ * them. Training retains at most {@link maxEvidenceEntries} newest evidence
97
+ * entries per edge.
98
+ *
99
+ * @category models
100
+ * @since 0.1.0
101
+ */
102
+ export interface Service {
103
+ readonly upsert: (edges: ReadonlyArray<Selection.SuspectedEdge>) => Effect.Effect<void, SelectionStoreError>;
104
+ readonly list: () => Effect.Effect<ReadonlyArray<Selection.SuspectedEdge>, SelectionStoreError>;
105
+ readonly snapshot: () => Effect.Effect<Selection.BeliefSnapshot, SelectionStoreError>;
106
+ readonly train: (observations: ReadonlyArray<TrainingObservation>) => Effect.Effect<void, SelectionStoreError>;
107
+ }
108
+ declare const SelectionStore_base: Context.ServiceClass<SelectionStore, "@smthrs/engine-store/SelectionStore", Service>;
109
+ /**
110
+ * Service tag for the durable suspected-edge store.
111
+ *
112
+ * @category services
113
+ * @since 0.1.0
114
+ */
115
+ export declare class SelectionStore extends SelectionStore_base {
116
+ }
117
+ /**
118
+ * Maximum evidence entries retained for one suspected edge. Training drops
119
+ * the oldest entries after this bound and preserves the newest entries in
120
+ * observation order.
121
+ *
122
+ * @category constants
123
+ * @since 1.0.0
124
+ */
125
+ export declare const maxEvidenceEntries = 128;
126
+ /**
127
+ * Builds the SQL-backed suspected-edge store.
128
+ *
129
+ * @category constructors
130
+ * @since 0.1.0
131
+ */
132
+ export declare const make: Effect.Effect<Service, never, DurableWriter | SqlClient.SqlClient>;
133
+ /**
134
+ * Provides the SQL-backed suspected-edge store.
135
+ *
136
+ * @category layers
137
+ * @since 0.1.0
138
+ */
139
+ export declare const layer: Layer.Layer<SelectionStore, never, DurableWriter | SqlClient.SqlClient>;
140
+ export {};
141
+ //# sourceMappingURL=SelectionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionStore.d.ts","sourceRoot":"","sources":["../../src/SelectionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAE9D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,2CAAmC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,oFAIlC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;;;;;;;;AAEzE;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,wBASxC;CAAG;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,CACf,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,KAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC/F,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAA;IACrF,QAAQ,CAAC,KAAK,EAAE,CACd,YAAY,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;CAC9C;;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,mBAEnC;CAAG;AA2FJ;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC,SAAS,CAoGlF,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC,SAAS,CAEnF,CAAA"}