@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,57 @@
1
+ /**
2
+ * Cross-check stored or newly measured observations against a verified plan.
3
+ * @since 1.0.0
4
+ */
5
+ import { FileSet } from "@smthrs/plan";
6
+ import { Effect, Schema } from "effect";
7
+ import * as PlanInputStore from "../PlanInputStore.js";
8
+ /**
9
+ * Validates without publishing or mutating either the old pins or observations.
10
+ * @since 1.0.0
11
+ * @category validation
12
+ */
13
+ export const validate = (snapshot, nodes, pinned, writerScopesBefore) => Effect.gen(function* () {
14
+ const corrupt = (message) => Effect.fail(new PlanInputStore.PlanInputError({ code: "corrupt_state", message }));
15
+ if (snapshot.nodes.length !== nodes.length)
16
+ return yield* corrupt("source observation node count changed");
17
+ const nextPins = new Map(pinned);
18
+ const newPins = new Set();
19
+ for (const pin of snapshot.pins) {
20
+ if (nextPins.has(pin.path))
21
+ return yield* corrupt("a later generation replaced an existing source pin");
22
+ nextPins.set(pin.path, pin.digest);
23
+ newPins.add(pin.path);
24
+ }
25
+ for (let index = 0; index < nodes.length; index++) {
26
+ const node = nodes[index];
27
+ const recorded = snapshot.nodes[index];
28
+ const reads = FileSet.expandReads(node.effects.reads);
29
+ const writerScopes = reads.length === 0 ? [] : writerScopesBefore(node);
30
+ if (recorded.id !== node.id || recorded.key !== node.key || recorded.reads.length !== reads.length) {
31
+ return yield* corrupt("source observation does not match its plan node");
32
+ }
33
+ for (let readIndex = 0; readIndex < reads.length; readIndex++) {
34
+ const expected = Schema.decodeUnknownSync(FileSet.ReadEntry)(reads[readIndex]);
35
+ const read = recorded.reads[readIndex];
36
+ if (JSON.stringify(read.entry) !== JSON.stringify(expected)) {
37
+ return yield* corrupt("source observation declaration changed");
38
+ }
39
+ if (typeof expected === "string") {
40
+ const source = !writerScopes.some((scope) => FileSet.overlaps(scope, expected));
41
+ if (read.sourcePaths.length !== (source ? 1 : 0)) {
42
+ return yield* corrupt("source observation selects the wrong file version");
43
+ }
44
+ }
45
+ for (const path of read.sourcePaths) {
46
+ if (!nextPins.has(path) || writerScopes.some((scope) => FileSet.overlaps(scope, path))) {
47
+ return yield* corrupt("source observation has a missing pin or preceding writer");
48
+ }
49
+ newPins.delete(path);
50
+ }
51
+ }
52
+ }
53
+ if (newPins.size > 0)
54
+ return yield* corrupt("source observation contains unreferenced pins");
55
+ return nextPins;
56
+ });
57
+ //# sourceMappingURL=PlanInputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanInputs.js","sourceRoot":"","sources":["../../../src/internal/PlanInputs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cross-check stored or newly measured observations against a verified plan.\n * @since 1.0.0\n */\n\nimport { FileSet, type Plan } from \"@smthrs/plan\"\nimport { Effect, Schema } from \"effect\"\nimport * as PlanInputStore from \"../PlanInputStore.ts\"\n\n/**\n * Validates without publishing or mutating either the old pins or observations.\n * @since 1.0.0\n * @category validation\n */\nexport const validate = (\n snapshot: PlanInputStore.Snapshot,\n nodes: ReadonlyArray<Plan.PlanNode>,\n pinned: ReadonlyMap<string, string>,\n writerScopesBefore: (node: Plan.PlanNode) => ReadonlyArray<FileSet.Entry>\n): Effect.Effect<Map<string, string>, PlanInputStore.PlanInputError> =>\n Effect.gen(function*() {\n const corrupt = (message: string) =>\n Effect.fail(new PlanInputStore.PlanInputError({ code: \"corrupt_state\", message }))\n if (snapshot.nodes.length !== nodes.length) return yield* corrupt(\"source observation node count changed\")\n const nextPins = new Map(pinned)\n const newPins = new Set<string>()\n for (const pin of snapshot.pins) {\n if (nextPins.has(pin.path)) return yield* corrupt(\"a later generation replaced an existing source pin\")\n nextPins.set(pin.path, pin.digest)\n newPins.add(pin.path)\n }\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index]!\n const recorded = snapshot.nodes[index]!\n const reads = FileSet.expandReads(node.effects.reads)\n const writerScopes = reads.length === 0 ? [] : writerScopesBefore(node)\n if (recorded.id !== node.id || recorded.key !== node.key || recorded.reads.length !== reads.length) {\n return yield* corrupt(\"source observation does not match its plan node\")\n }\n for (let readIndex = 0; readIndex < reads.length; readIndex++) {\n const expected = Schema.decodeUnknownSync(FileSet.ReadEntry)(reads[readIndex]!)\n const read = recorded.reads[readIndex]!\n if (JSON.stringify(read.entry) !== JSON.stringify(expected)) {\n return yield* corrupt(\"source observation declaration changed\")\n }\n if (typeof expected === \"string\") {\n const source = !writerScopes.some((scope) => FileSet.overlaps(scope, expected))\n if (read.sourcePaths.length !== (source ? 1 : 0)) {\n return yield* corrupt(\"source observation selects the wrong file version\")\n }\n }\n for (const path of read.sourcePaths) {\n if (!nextPins.has(path) || writerScopes.some((scope) => FileSet.overlaps(scope, path))) {\n return yield* corrupt(\"source observation has a missing pin or preceding writer\")\n }\n newPins.delete(path)\n }\n }\n }\n if (newPins.size > 0) return yield* corrupt(\"source observation contains unreferenced pins\")\n return nextPins\n })\n"]}
@@ -0,0 +1,178 @@
1
+ /** Durable merge recovery and generated identity, independent of dispatch.
2
+ * @since 1.0.0
3
+ */
4
+ import { Plan } from "@smthrs/plan";
5
+ import { Effect } from "effect";
6
+ import * as PlanMergeStore from "../PlanMergeStore.ts";
7
+ /** Chooses a free display ID; ownership comes from the durable decision, not this spelling.
8
+ * @since 1.0.0
9
+ * @category identity
10
+ */
11
+ export declare const allocateId: (plan: Plan.Plan, nodeId: string) => string;
12
+ /** The single declaration used both when appending and when recovering an extension.
13
+ * @since 1.0.0
14
+ * @category constructors
15
+ */
16
+ export declare const draft: (node: Plan.PlanNode, mergeId: string, winners: ReadonlyArray<string>) => Plan.NodeDraft;
17
+ /** Checks that an intent names a permissible stopped node and its actual conflict peers.
18
+ * @since 1.0.0
19
+ * @category validation
20
+ */
21
+ export declare const validateIntent: (plan: Plan.Plan, intent: PlanMergeStore.Intent) => Effect.Effect<{
22
+ readonly id: string;
23
+ readonly kind: "step" | "agent" | "merge";
24
+ readonly key: string & import("effect/Brand").Brand<"@smthrs/keys/Key">;
25
+ readonly material: {
26
+ readonly kind: "sealed" | "compensable" | "irreversible";
27
+ readonly body: unknown;
28
+ readonly version: "flows/key-material/v2";
29
+ readonly layers: readonly string[];
30
+ readonly capabilities: readonly string[];
31
+ readonly inputs: readonly ({
32
+ readonly _tag: "Literal";
33
+ readonly value: unknown;
34
+ } | {
35
+ readonly _tag: "Ref";
36
+ readonly from: string;
37
+ readonly path: readonly string[];
38
+ } | {
39
+ readonly _tag: "Pending";
40
+ readonly from: string;
41
+ })[];
42
+ readonly effects?: unknown;
43
+ readonly nondeterministic?: true | undefined;
44
+ readonly placement?: unknown;
45
+ };
46
+ readonly effects: {
47
+ readonly boundaryMode: "expected" | "hard";
48
+ readonly reads: readonly (string | {
49
+ readonly _tag: "Glob";
50
+ readonly include: readonly [string, ...string[]];
51
+ readonly exclude?: readonly string[] | undefined;
52
+ } | {
53
+ readonly _tag: "Filegroup";
54
+ readonly name: string;
55
+ readonly entries: readonly (string | {
56
+ readonly _tag: "Glob";
57
+ readonly include: readonly [string, ...string[]];
58
+ readonly exclude?: readonly string[] | undefined;
59
+ })[];
60
+ })[];
61
+ readonly writes: readonly (string | {
62
+ readonly _tag: "Glob";
63
+ readonly include: readonly [string, ...string[]];
64
+ readonly exclude?: readonly string[] | undefined;
65
+ } | {
66
+ readonly _tag: "TreeArtifact";
67
+ readonly path: string;
68
+ } | {
69
+ readonly _tag: "Filegroup";
70
+ readonly name: string;
71
+ readonly entries: readonly (string | {
72
+ readonly _tag: "Glob";
73
+ readonly include: readonly [string, ...string[]];
74
+ readonly exclude?: readonly string[] | undefined;
75
+ } | {
76
+ readonly _tag: "TreeArtifact";
77
+ readonly path: string;
78
+ })[];
79
+ })[];
80
+ readonly removes?: readonly string[] | undefined;
81
+ };
82
+ readonly dependsOn: readonly string[];
83
+ readonly conflicts: readonly {
84
+ readonly with: string;
85
+ readonly paths: readonly string[];
86
+ readonly strategy: "serialize" | "lane" | "fail";
87
+ readonly runtime: "delay-rebase" | "stop-merge";
88
+ }[];
89
+ readonly strategy: "serialize" | "lane" | "fail";
90
+ readonly runtime: "delay-rebase" | "stop-merge";
91
+ readonly priority: number;
92
+ readonly generation: number;
93
+ }, PlanMergeStore.PlanMergeError, never>;
94
+ /** Recovers only recorded merge extensions, never unrelated/unapproved appended work.
95
+ * @since 1.0.0
96
+ * @category recovery
97
+ */
98
+ export declare const recover: (candidate: Plan.Plan, decisions: ReadonlyArray<PlanMergeStore.Decision>) => Effect.Effect<{
99
+ readonly planId: string;
100
+ readonly flow: string;
101
+ readonly generation: number;
102
+ readonly baseDigest: string & import("effect/Brand").Brand<"@smthrs/keys/Key">;
103
+ readonly digest: string & import("effect/Brand").Brand<"@smthrs/keys/Key">;
104
+ readonly nodes: readonly {
105
+ readonly id: string;
106
+ readonly kind: "step" | "agent" | "merge";
107
+ readonly key: string & import("effect/Brand").Brand<"@smthrs/keys/Key">;
108
+ readonly material: {
109
+ readonly kind: "sealed" | "compensable" | "irreversible";
110
+ readonly body: unknown;
111
+ readonly version: "flows/key-material/v2";
112
+ readonly layers: readonly string[];
113
+ readonly capabilities: readonly string[];
114
+ readonly inputs: readonly ({
115
+ readonly _tag: "Literal";
116
+ readonly value: unknown;
117
+ } | {
118
+ readonly _tag: "Ref";
119
+ readonly from: string;
120
+ readonly path: readonly string[];
121
+ } | {
122
+ readonly _tag: "Pending";
123
+ readonly from: string;
124
+ })[];
125
+ readonly effects?: unknown;
126
+ readonly nondeterministic?: true | undefined;
127
+ readonly placement?: unknown;
128
+ };
129
+ readonly effects: {
130
+ readonly boundaryMode: "expected" | "hard";
131
+ readonly reads: readonly (string | {
132
+ readonly _tag: "Glob";
133
+ readonly include: readonly [string, ...string[]];
134
+ readonly exclude?: readonly string[] | undefined;
135
+ } | {
136
+ readonly _tag: "Filegroup";
137
+ readonly name: string;
138
+ readonly entries: readonly (string | {
139
+ readonly _tag: "Glob";
140
+ readonly include: readonly [string, ...string[]];
141
+ readonly exclude?: readonly string[] | undefined;
142
+ })[];
143
+ })[];
144
+ readonly writes: readonly (string | {
145
+ readonly _tag: "Glob";
146
+ readonly include: readonly [string, ...string[]];
147
+ readonly exclude?: readonly string[] | undefined;
148
+ } | {
149
+ readonly _tag: "TreeArtifact";
150
+ readonly path: string;
151
+ } | {
152
+ readonly _tag: "Filegroup";
153
+ readonly name: string;
154
+ readonly entries: readonly (string | {
155
+ readonly _tag: "Glob";
156
+ readonly include: readonly [string, ...string[]];
157
+ readonly exclude?: readonly string[] | undefined;
158
+ } | {
159
+ readonly _tag: "TreeArtifact";
160
+ readonly path: string;
161
+ })[];
162
+ })[];
163
+ readonly removes?: readonly string[] | undefined;
164
+ };
165
+ readonly dependsOn: readonly string[];
166
+ readonly conflicts: readonly {
167
+ readonly with: string;
168
+ readonly paths: readonly string[];
169
+ readonly strategy: "serialize" | "lane" | "fail";
170
+ readonly runtime: "delay-rebase" | "stop-merge";
171
+ }[];
172
+ readonly strategy: "serialize" | "lane" | "fail";
173
+ readonly runtime: "delay-rebase" | "stop-merge";
174
+ readonly priority: number;
175
+ readonly generation: number;
176
+ }[];
177
+ }, PlanMergeStore.PlanMergeError, import("effect/Crypto").Crypto>;
178
+ //# sourceMappingURL=PlanMerges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanMerges.d.ts","sourceRoot":"","sources":["../../../src/internal/PlanMerges.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,IAAI,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAA;AAQtD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,MAAM,KAAG,MAM5D,CAAA;AACD;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,IAAI,CAAC,SAYhG,CAAA;AACF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,cAAc,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAWzE,CAAA;AACJ;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,WAAW,IAAI,CAAC,IAAI,EAAE,WAAW,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEA4D3F,CAAA"}
@@ -0,0 +1,113 @@
1
+ /** Durable merge recovery and generated identity, independent of dispatch.
2
+ * @since 1.0.0
3
+ */
4
+ import { KeyMaterial, Plan } from "@smthrs/plan";
5
+ import { Effect } from "effect";
6
+ import * as PlanMergeStore from "../PlanMergeStore.js";
7
+ const invalid = (message, cause) => new PlanMergeStore.PlanMergeError({
8
+ code: "corrupt_state",
9
+ message,
10
+ ...(cause === undefined ? {} : { cause })
11
+ });
12
+ /** Chooses a free display ID; ownership comes from the durable decision, not this spelling.
13
+ * @since 1.0.0
14
+ * @category identity
15
+ */
16
+ export const allocateId = (plan, nodeId) => {
17
+ const occupied = new Set(plan.nodes.map((node) => node.id));
18
+ const base = `${nodeId}+merge`;
19
+ let candidate = base;
20
+ for (let suffix = 1; occupied.has(candidate); suffix++)
21
+ candidate = `${base}#${suffix}`;
22
+ return candidate;
23
+ };
24
+ /** The single declaration used both when appending and when recovering an extension.
25
+ * @since 1.0.0
26
+ * @category constructors
27
+ */
28
+ export const draft = (node, mergeId, winners) => ({
29
+ id: mergeId,
30
+ kind: "merge",
31
+ material: {
32
+ version: KeyMaterial.version,
33
+ kind: node.material.kind,
34
+ body: { merge: { stopped: node.id, winners } },
35
+ inputs: winners.map((id) => ({ _tag: "Pending", from: id })),
36
+ layers: [],
37
+ capabilities: []
38
+ },
39
+ effects: node.effects
40
+ });
41
+ /** Checks that an intent names a permissible stopped node and its actual conflict peers.
42
+ * @since 1.0.0
43
+ * @category validation
44
+ */
45
+ export const validateIntent = (plan, intent) => Effect.gen(function* () {
46
+ const node = plan.nodes.find((candidate) => candidate.id === intent.nodeId);
47
+ if (node === undefined || node.key !== intent.nodeKey || node.material.kind === "irreversible" ||
48
+ (node.runtime !== "stop-merge" && !node.conflicts.some((conflict) => conflict.runtime === "stop-merge")) ||
49
+ intent.peers.some((id) => !node.conflicts.some((conflict) => conflict.with === id))) {
50
+ return yield* Effect.fail(invalid("merge intent does not match its approved stopped node"));
51
+ }
52
+ return node;
53
+ });
54
+ /** Recovers only recorded merge extensions, never unrelated/unapproved appended work.
55
+ * @since 1.0.0
56
+ * @category recovery
57
+ */
58
+ export const recover = (candidate, decisions) => Effect.gen(function* () {
59
+ const byGeneration = new Map(decisions.flatMap((decision) => decision.completion === undefined ? [] : [[decision.completion.generation, decision]]));
60
+ let plan = candidate;
61
+ if (byGeneration.size > 0) {
62
+ // Rebuild each prefix once. Re-verifying every complete prefix separately
63
+ // would multiply the compiler's overlap work across a long merge history.
64
+ plan = yield* Plan.verify({
65
+ ...candidate,
66
+ generation: 0,
67
+ digest: candidate.baseDigest,
68
+ nodes: candidate.nodes.filter((node) => node.generation === 0)
69
+ })
70
+ .pipe(Effect.mapError((cause) => invalid("merge recovery has an invalid approved base", cause)));
71
+ const last = Math.max(candidate.generation, ...byGeneration.keys());
72
+ if (last > Plan.maximumPlanNodes)
73
+ return yield* Effect.fail(invalid("merge generation exceeds the plan limit"));
74
+ for (let generation = 1; generation <= last; generation++) {
75
+ const decision = byGeneration.get(generation);
76
+ let drafts;
77
+ if (decision?.completion !== undefined) {
78
+ const stopped = yield* validateIntent(plan, decision.intent);
79
+ if (decision.completion.parentDigest !== plan.digest) {
80
+ return yield* Effect.fail(invalid("merge parent digest changed"));
81
+ }
82
+ drafts = [draft(stopped, decision.completion.mergeId, decision.completion.winners)];
83
+ }
84
+ else {
85
+ drafts = candidate.nodes.filter((node) => node.generation === generation).map((node) => ({
86
+ id: node.id,
87
+ kind: node.kind,
88
+ material: node.material,
89
+ effects: node.effects,
90
+ priority: node.priority,
91
+ conflictStrategy: node.strategy,
92
+ runtimeStrategy: node.runtime
93
+ }));
94
+ if (drafts.length === 0) {
95
+ return yield* Effect.fail(invalid("merge recovery requires the approved intervening plan generations"));
96
+ }
97
+ }
98
+ plan = yield* Plan.append(plan, drafts).pipe(Effect.mapError((cause) => invalid("stored merge extension cannot be reconstructed", cause)));
99
+ if (decision?.completion !== undefined &&
100
+ (plan.digest !== decision.completion.planDigest ||
101
+ Plan.generationNodes(plan)[0].key !== decision.completion.mergeKey)) {
102
+ return yield* Effect.fail(invalid("merge decision does not identify its generated node"));
103
+ }
104
+ if (generation === candidate.generation && plan.digest !== candidate.digest) {
105
+ return yield* Effect.fail(invalid("merge decisions disagree with the supplied plan"));
106
+ }
107
+ }
108
+ }
109
+ for (const decision of decisions)
110
+ yield* validateIntent(plan, decision.intent);
111
+ return plan;
112
+ });
113
+ //# sourceMappingURL=PlanMerges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanMerges.js","sourceRoot":"","sources":["../../../src/internal/PlanMerges.ts"],"names":[],"mappings":"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","sourcesContent":["/** Durable merge recovery and generated identity, independent of dispatch.\n * @since 1.0.0\n */\n\nimport { KeyMaterial, Plan } from \"@smthrs/plan\"\nimport { Effect } from \"effect\"\nimport * as PlanMergeStore from \"../PlanMergeStore.ts\"\n\nconst invalid = (message: string, cause?: unknown) =>\n new PlanMergeStore.PlanMergeError({\n code: \"corrupt_state\",\n message,\n ...(cause === undefined ? {} : { cause })\n })\n/** Chooses a free display ID; ownership comes from the durable decision, not this spelling.\n * @since 1.0.0\n * @category identity\n */\nexport const allocateId = (plan: Plan.Plan, nodeId: string): string => {\n const occupied = new Set(plan.nodes.map((node) => node.id))\n const base = `${nodeId}+merge`\n let candidate = base\n for (let suffix = 1; occupied.has(candidate); suffix++) candidate = `${base}#${suffix}`\n return candidate\n}\n/** The single declaration used both when appending and when recovering an extension.\n * @since 1.0.0\n * @category constructors\n */\nexport const draft = (node: Plan.PlanNode, mergeId: string, winners: ReadonlyArray<string>): Plan.NodeDraft => ({\n id: mergeId,\n kind: \"merge\",\n material: {\n version: KeyMaterial.version,\n kind: node.material.kind,\n body: { merge: { stopped: node.id, winners } },\n inputs: winners.map((id) => ({ _tag: \"Pending\", from: id })),\n layers: [],\n capabilities: []\n },\n effects: node.effects\n})\n/** Checks that an intent names a permissible stopped node and its actual conflict peers.\n * @since 1.0.0\n * @category validation\n */\nexport const validateIntent = (plan: Plan.Plan, intent: PlanMergeStore.Intent) =>\n Effect.gen(function*() {\n const node = plan.nodes.find((candidate) => candidate.id === intent.nodeId)\n if (\n node === undefined || node.key !== intent.nodeKey || node.material.kind === \"irreversible\" ||\n (node.runtime !== \"stop-merge\" && !node.conflicts.some((conflict) => conflict.runtime === \"stop-merge\")) ||\n intent.peers.some((id) => !node.conflicts.some((conflict) => conflict.with === id))\n ) {\n return yield* Effect.fail(invalid(\"merge intent does not match its approved stopped node\"))\n }\n return node\n })\n/** Recovers only recorded merge extensions, never unrelated/unapproved appended work.\n * @since 1.0.0\n * @category recovery\n */\nexport const recover = (candidate: Plan.Plan, decisions: ReadonlyArray<PlanMergeStore.Decision>) =>\n Effect.gen(function*() {\n const byGeneration = new Map(\n decisions.flatMap((decision) =>\n decision.completion === undefined ? [] : [[decision.completion.generation, decision] as const]\n )\n )\n let plan = candidate\n if (byGeneration.size > 0) {\n // Rebuild each prefix once. Re-verifying every complete prefix separately\n // would multiply the compiler's overlap work across a long merge history.\n plan = yield* Plan.verify({\n ...candidate,\n generation: 0,\n digest: candidate.baseDigest,\n nodes: candidate.nodes.filter((node) => node.generation === 0)\n })\n .pipe(Effect.mapError((cause) => invalid(\"merge recovery has an invalid approved base\", cause)))\n const last = Math.max(candidate.generation, ...byGeneration.keys())\n if (last > Plan.maximumPlanNodes) return yield* Effect.fail(invalid(\"merge generation exceeds the plan limit\"))\n for (let generation = 1; generation <= last; generation++) {\n const decision = byGeneration.get(generation)\n let drafts: ReadonlyArray<Plan.NodeDraft>\n if (decision?.completion !== undefined) {\n const stopped = yield* validateIntent(plan, decision.intent)\n if (decision.completion.parentDigest !== plan.digest) {\n return yield* Effect.fail(invalid(\"merge parent digest changed\"))\n }\n drafts = [draft(stopped, decision.completion.mergeId, decision.completion.winners)]\n } else {\n drafts = candidate.nodes.filter((node) => node.generation === generation).map((node) => ({\n id: node.id,\n kind: node.kind,\n material: node.material,\n effects: node.effects,\n priority: node.priority,\n conflictStrategy: node.strategy,\n runtimeStrategy: node.runtime\n }))\n if (drafts.length === 0) {\n return yield* Effect.fail(invalid(\"merge recovery requires the approved intervening plan generations\"))\n }\n }\n plan = yield* Plan.append(plan, drafts).pipe(\n Effect.mapError((cause) => invalid(\"stored merge extension cannot be reconstructed\", cause))\n )\n if (\n decision?.completion !== undefined &&\n (plan.digest !== decision.completion.planDigest ||\n Plan.generationNodes(plan)[0]!.key !== decision.completion.mergeKey)\n ) {\n return yield* Effect.fail(invalid(\"merge decision does not identify its generated node\"))\n }\n if (generation === candidate.generation && plan.digest !== candidate.digest) {\n return yield* Effect.fail(invalid(\"merge decisions disagree with the supplied plan\"))\n }\n }\n }\n for (const decision of decisions) yield* validateIntent(plan, decision.intent)\n return plan\n })\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Read-only validation of the cache-provenance record occupying a producer
3
+ * slot this run re-emits into.
4
+ *
5
+ * A provenance producer identity (`cache:<digest>:<action>[:<run>:<seq>]`,
6
+ * `sourceSeq` 0) names ONE fact about one cache row — this key expired, this
7
+ * row was served, this replay failed — so a re-emission after a resume or in
8
+ * a fork child records the same fact with fresh measurements (`ageMs`, the
9
+ * clock, a later `reason`) and collapses onto the row already there. That
10
+ * collapse is legitimate only while the occupying record IS that fact: the
11
+ * same event type, the same key, the same action, and the same recorded row
12
+ * when the record names one. Anything else in the slot is the conflict the
13
+ * journal reported.
14
+ * @since 1.0.0-rc.0
15
+ */
16
+ import type { Journal, JournalEvent } from "@smthrs/journal";
17
+ import * as Effect from "effect/Effect";
18
+ /**
19
+ * Accepts the occupying record only when it states the same provenance fact
20
+ * as `record`; otherwise fails with `conflict`.
21
+ * @category accessors
22
+ * @since 1.0.0-rc.0
23
+ */
24
+ export declare const accept: (options: {
25
+ readonly journal: Journal.Service;
26
+ readonly runId: string;
27
+ readonly record: JournalEvent.Input;
28
+ readonly conflict: Journal.JournalError;
29
+ }) => Effect.Effect<void, Journal.JournalError>;
30
+ //# sourceMappingURL=ProvenanceSlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvenanceSlot.d.ts","sourceRoot":"","sources":["../../../src/internal/ProvenanceSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAQvC;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAA;CACxC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAexC,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Read-only validation of the cache-provenance record occupying a producer
3
+ * slot this run re-emits into.
4
+ *
5
+ * A provenance producer identity (`cache:<digest>:<action>[:<run>:<seq>]`,
6
+ * `sourceSeq` 0) names ONE fact about one cache row — this key expired, this
7
+ * row was served, this replay failed — so a re-emission after a resume or in
8
+ * a fork child records the same fact with fresh measurements (`ageMs`, the
9
+ * clock, a later `reason`) and collapses onto the row already there. That
10
+ * collapse is legitimate only while the occupying record IS that fact: the
11
+ * same event type, the same key, the same action, and the same recorded row
12
+ * when the record names one. Anything else in the slot is the conflict the
13
+ * journal reported.
14
+ * @since 1.0.0-rc.0
15
+ */
16
+ import * as Effect from "effect/Effect";
17
+ import * as CacheAgeHistory from "./CacheAgeHistory.js";
18
+ const identity = ["keyDigest", "action", "recordedRunId", "recordedEventSeq"];
19
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20
+ /**
21
+ * Accepts the occupying record only when it states the same provenance fact
22
+ * as `record`; otherwise fails with `conflict`.
23
+ * @category accessors
24
+ * @since 1.0.0-rc.0
25
+ */
26
+ export const accept = (options) => Effect.gen(function* () {
27
+ const { conflict, journal, record } = options;
28
+ const sourceSeq = record.sourceSeq ?? 0;
29
+ const entry = yield* CacheAgeHistory.find(journal, options.runId, (candidate) => candidate.sourceId === record.sourceId && Number(candidate.sourceSeq) === Number(sourceSeq));
30
+ if (entry === undefined || entry.eventType !== record.eventType)
31
+ return yield* Effect.fail(conflict);
32
+ const attempted = record.payload;
33
+ const occupying = entry.payload;
34
+ if (!isRecord(attempted) || !isRecord(occupying))
35
+ return yield* Effect.fail(conflict);
36
+ const same = identity.every((field) => !(field in attempted) || attempted[field] === occupying[field]);
37
+ return same ? undefined : yield* Effect.fail(conflict);
38
+ });
39
+ //# sourceMappingURL=ProvenanceSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvenanceSlot.js","sourceRoot":"","sources":["../../../src/internal/ProvenanceSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAA;AAEtF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAA8C,EAAE,CAC9E,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAKtB,EAA6C,EAAE,CAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CACvC,OAAO,EACP,OAAO,CAAC,KAAK,EACb,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,CAC3G,CAAA;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAA;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACtG,OAAO,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACxD,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Read-only validation of the cache-provenance record occupying a producer\n * slot this run re-emits into.\n *\n * A provenance producer identity (`cache:<digest>:<action>[:<run>:<seq>]`,\n * `sourceSeq` 0) names ONE fact about one cache row — this key expired, this\n * row was served, this replay failed — so a re-emission after a resume or in\n * a fork child records the same fact with fresh measurements (`ageMs`, the\n * clock, a later `reason`) and collapses onto the row already there. That\n * collapse is legitimate only while the occupying record IS that fact: the\n * same event type, the same key, the same action, and the same recorded row\n * when the record names one. Anything else in the slot is the conflict the\n * journal reported.\n * @since 1.0.0-rc.0\n */\n\nimport type { Journal, JournalEvent } from \"@smthrs/journal\"\nimport * as Effect from \"effect/Effect\"\nimport * as CacheAgeHistory from \"./CacheAgeHistory.ts\"\n\nconst identity = [\"keyDigest\", \"action\", \"recordedRunId\", \"recordedEventSeq\"] as const\n\nconst isRecord = (value: unknown): value is Readonly<Record<string, unknown>> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value)\n\n/**\n * Accepts the occupying record only when it states the same provenance fact\n * as `record`; otherwise fails with `conflict`.\n * @category accessors\n * @since 1.0.0-rc.0\n */\nexport const accept = (options: {\n readonly journal: Journal.Service\n readonly runId: string\n readonly record: JournalEvent.Input\n readonly conflict: Journal.JournalError\n}): Effect.Effect<void, Journal.JournalError> =>\n Effect.gen(function*() {\n const { conflict, journal, record } = options\n const sourceSeq = record.sourceSeq ?? 0\n const entry = yield* CacheAgeHistory.find(\n journal,\n options.runId,\n (candidate) => candidate.sourceId === record.sourceId && Number(candidate.sourceSeq) === Number(sourceSeq)\n )\n if (entry === undefined || entry.eventType !== record.eventType) return yield* Effect.fail(conflict)\n const attempted = record.payload\n const occupying = entry.payload\n if (!isRecord(attempted) || !isRecord(occupying)) return yield* Effect.fail(conflict)\n const same = identity.every((field) => !(field in attempted) || attempted[field] === occupying[field])\n return same ? undefined : yield* Effect.fail(conflict)\n })\n"]}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * A typed JSON settlement at the engine persistence boundary. The existing
3
+ * terminal fallback remains the encoder, so a rejected class cannot leave a
4
+ * run live. This module does not change existing result bytes or writers.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import type { Flow } from "@smthrs/flow";
9
+ import * as EngineEvent from "@smthrs/journal/EngineEvent";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schema from "effect/Schema";
12
+ /**
13
+ * Encoded success or a classified failure.
14
+ *
15
+ * @category schemas
16
+ * @since 1.0.0
17
+ */
18
+ export declare const ResultEnvelope: Schema.Union<readonly [Schema.TaggedStruct<"Success", {
19
+ readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
20
+ }>, Schema.TaggedStruct<"Failure", {
21
+ readonly reason: Schema.Literals<readonly ["error", "defect", "interrupted", "encoding"]>;
22
+ readonly detail: Schema.Codec<Schema.Json, Schema.Json, never, never>;
23
+ }>]>;
24
+ /**
25
+ * Encoded success or a classified failure.
26
+ *
27
+ * @category models
28
+ * @since 1.0.0
29
+ */
30
+ export type ResultEnvelope = EngineEvent.ResultEnvelope;
31
+ /**
32
+ * Validate untrusted encoded state without dropping contradictory fields.
33
+ *
34
+ * @category decoders
35
+ * @since 1.0.0
36
+ */
37
+ export declare const decode: (input: unknown) => Effect.Effect<{
38
+ readonly _tag: "Success";
39
+ readonly value: Schema.Json;
40
+ } | {
41
+ readonly _tag: "Failure";
42
+ readonly reason: "error" | "encoding" | "defect" | "interrupted";
43
+ readonly detail: Schema.Json;
44
+ }, EngineEvent.EventError, never>;
45
+ /**
46
+ * The encoded settlement and whether the existing encoder required terminal
47
+ * fallback. Encoded domain failure is still an Encoded settlement; callers
48
+ * read its exit, never infer domain success from this discriminant.
49
+ *
50
+ * @category schemas
51
+ * @since 1.0.0
52
+ */
53
+ export declare const Settlement: Schema.Union<readonly [Schema.TaggedStruct<"Encoded", {
54
+ readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
55
+ }>, Schema.TaggedStruct<"EncodingFailure", {
56
+ readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
57
+ readonly note: Schema.String;
58
+ }>]>;
59
+ /**
60
+ * Encoded terminal settlement and its encoding-failure status.
61
+ *
62
+ * @category models
63
+ * @since 1.0.0
64
+ */
65
+ export type Settlement = typeof Settlement.Type;
66
+ /**
67
+ * Admit an encoded settlement without introducing an error channel on the
68
+ * terminal write path. A corrupt codec output becomes a terminal failure.
69
+ *
70
+ * @category decoders
71
+ * @since 1.0.0
72
+ */
73
+ export declare const fromEncoded: (encoded: unknown, note?: string) => Effect.Effect<Settlement>;
74
+ /**
75
+ * Wrap the established no-fail terminal encoder without changing its bytes.
76
+ *
77
+ * @category conversions
78
+ * @since 1.0.0
79
+ */
80
+ export declare const encode: (flow: Flow.Any, result: Flow.Result<unknown, unknown>) => Effect.Effect<{
81
+ readonly _tag: "Encoded";
82
+ readonly value: Schema.Json;
83
+ } | {
84
+ readonly _tag: "EncodingFailure";
85
+ readonly value: Schema.Json;
86
+ readonly note: string;
87
+ }, never, never>;
88
+ //# sourceMappingURL=ResultEnvelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultEnvelope.d.ts","sourceRoot":"","sources":["../../../src/internal/ResultEnvelope.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAA;AAE1D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;IAA6B,CAAA;AACxD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;AACvD;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO;;;;;;;iCAWlC,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;;;;;IAGrB,CAAA;AACF;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,EAAE,OAAO,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CA+BnF,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;;;;;;;gBAGzE,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * A typed JSON settlement at the engine persistence boundary. The existing
3
+ * terminal fallback remains the encoder, so a rejected class cannot leave a
4
+ * run live. This module does not change existing result bytes or writers.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import * as EngineEvent from "@smthrs/journal/EngineEvent";
9
+ import * as Cause from "effect/Cause";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schema from "effect/Schema";
12
+ import * as ExitEncoding from "./ExitEncoding.js";
13
+ /**
14
+ * Encoded success or a classified failure.
15
+ *
16
+ * @category schemas
17
+ * @since 1.0.0
18
+ */
19
+ export const ResultEnvelope = EngineEvent.ResultEnvelope;
20
+ /**
21
+ * Validate untrusted encoded state without dropping contradictory fields.
22
+ *
23
+ * @category decoders
24
+ * @since 1.0.0
25
+ */
26
+ export const decode = (input) => Effect.suspend(() => Schema.decodeUnknownEffect(ResultEnvelope, { onExcessProperty: "error" })(input)).pipe(Effect.catchCause((cause) => Effect.fail(new EngineEvent.EventError({
27
+ code: "malformed",
28
+ message: "invalid result envelope",
29
+ cause: Cause.squash(cause)
30
+ }))));
31
+ /**
32
+ * The encoded settlement and whether the existing encoder required terminal
33
+ * fallback. Encoded domain failure is still an Encoded settlement; callers
34
+ * read its exit, never infer domain success from this discriminant.
35
+ *
36
+ * @category schemas
37
+ * @since 1.0.0
38
+ */
39
+ export const Settlement = Schema.Union([
40
+ Schema.TaggedStruct("Encoded", { value: Schema.Json }),
41
+ Schema.TaggedStruct("EncodingFailure", { value: Schema.Json, note: Schema.String })
42
+ ]);
43
+ /**
44
+ * Admit an encoded settlement without introducing an error channel on the
45
+ * terminal write path. A corrupt codec output becomes a terminal failure.
46
+ *
47
+ * @category decoders
48
+ * @since 1.0.0
49
+ */
50
+ export const fromEncoded = (encoded, note) => Effect.suspend(() => Schema.decodeUnknownEffect(Schema.Json)(encoded)).pipe(Effect.map((value) => note === undefined ? { _tag: "Encoded", value } : { _tag: "EncodingFailure", value, note }), Effect.catchCause((_cause) => {
51
+ const note = "the encoded settlement was not JSON";
52
+ // This is the same terminal-only policy as ExitEncoding.encode: record
53
+ // a failed settlement even when pure codec validation defects. No I/O
54
+ // or authority decision is retried by recovering this validation cause.
55
+ return Effect.as(Effect.logWarning(`${note}; preserving a terminal failure`), {
56
+ _tag: "EncodingFailure",
57
+ note,
58
+ value: {
59
+ _tag: "Complete",
60
+ exit: {
61
+ _tag: "Failure",
62
+ cause: [{
63
+ _tag: "Die",
64
+ defect: {
65
+ _tag: ExitEncoding.projectionTag,
66
+ result: "Complete",
67
+ note,
68
+ reasons: [],
69
+ value: null
70
+ }
71
+ }]
72
+ }
73
+ }
74
+ });
75
+ }));
76
+ /**
77
+ * Wrap the established no-fail terminal encoder without changing its bytes.
78
+ *
79
+ * @category conversions
80
+ * @since 1.0.0
81
+ */
82
+ export const encode = (flow, result) => ExitEncoding.encode(flow, result).pipe(Effect.flatMap(({ encoded, note }) => fromEncoded(encoded, note)));
83
+ //# sourceMappingURL=ResultEnvelope.js.map