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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +21 -0
  3. package/README.md +146 -2
  4. package/dist/cjs/ArtifactGc.d.ts +235 -0
  5. package/dist/cjs/ArtifactGc.d.ts.map +1 -0
  6. package/dist/cjs/ArtifactGc.js +183 -0
  7. package/dist/cjs/ArtifactGc.js.map +7 -0
  8. package/dist/cjs/ArtifactSync.d.ts +164 -0
  9. package/dist/cjs/ArtifactSync.d.ts.map +1 -0
  10. package/dist/cjs/ArtifactSync.js +144 -0
  11. package/dist/cjs/ArtifactSync.js.map +7 -0
  12. package/dist/cjs/CacheSync.d.ts +112 -0
  13. package/dist/cjs/CacheSync.d.ts.map +1 -0
  14. package/dist/cjs/CacheSync.js +64 -0
  15. package/dist/cjs/CacheSync.js.map +7 -0
  16. package/dist/cjs/DeferredClockFold.d.ts +354 -0
  17. package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
  18. package/dist/cjs/DeferredClockFold.js +335 -0
  19. package/dist/cjs/DeferredClockFold.js.map +7 -0
  20. package/dist/cjs/DisasterRecovery.d.ts +431 -0
  21. package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
  22. package/dist/cjs/DisasterRecovery.js +453 -0
  23. package/dist/cjs/DisasterRecovery.js.map +7 -0
  24. package/dist/cjs/DurableEngineState.d.ts +776 -0
  25. package/dist/cjs/DurableEngineState.d.ts.map +1 -0
  26. package/dist/cjs/DurableEngineState.js +1536 -0
  27. package/dist/cjs/DurableEngineState.js.map +7 -0
  28. package/dist/cjs/EngineStore.d.ts +158 -0
  29. package/dist/cjs/EngineStore.d.ts.map +1 -0
  30. package/dist/cjs/EngineStore.js +398 -0
  31. package/dist/cjs/EngineStore.js.map +7 -0
  32. package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
  33. package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
  34. package/dist/cjs/EngineStoreMetrics.js +135 -0
  35. package/dist/cjs/EngineStoreMetrics.js.map +7 -0
  36. package/dist/cjs/Errors.d.ts +22 -0
  37. package/dist/cjs/Errors.d.ts.map +1 -0
  38. package/dist/cjs/Errors.js +39 -0
  39. package/dist/cjs/Errors.js.map +7 -0
  40. package/dist/cjs/EventTypes.d.ts +27 -0
  41. package/dist/cjs/EventTypes.d.ts.map +1 -0
  42. package/dist/cjs/EventTypes.js +37 -0
  43. package/dist/cjs/EventTypes.js.map +7 -0
  44. package/dist/cjs/ExecutionFacts.d.ts +59 -0
  45. package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
  46. package/dist/cjs/ExecutionFacts.js +123 -0
  47. package/dist/cjs/ExecutionFacts.js.map +7 -0
  48. package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
  49. package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
  50. package/dist/cjs/ExecutionSnapshot.js +111 -0
  51. package/dist/cjs/ExecutionSnapshot.js.map +7 -0
  52. package/dist/cjs/Inconsistency.d.ts +154 -0
  53. package/dist/cjs/Inconsistency.d.ts.map +1 -0
  54. package/dist/cjs/Inconsistency.js +135 -0
  55. package/dist/cjs/Inconsistency.js.map +7 -0
  56. package/dist/cjs/Migrations.d.ts +56 -0
  57. package/dist/cjs/Migrations.d.ts.map +1 -0
  58. package/dist/cjs/Migrations.js +78 -0
  59. package/dist/cjs/Migrations.js.map +7 -0
  60. package/dist/cjs/OwnerIdentity.d.ts +91 -0
  61. package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
  62. package/dist/cjs/OwnerIdentity.js +65 -0
  63. package/dist/cjs/OwnerIdentity.js.map +7 -0
  64. package/dist/cjs/PlanInputStore.d.ts +110 -0
  65. package/dist/cjs/PlanInputStore.d.ts.map +1 -0
  66. package/dist/cjs/PlanInputStore.js +224 -0
  67. package/dist/cjs/PlanInputStore.js.map +7 -0
  68. package/dist/cjs/PlanMergeStore.d.ts +113 -0
  69. package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
  70. package/dist/cjs/PlanMergeStore.js +255 -0
  71. package/dist/cjs/PlanMergeStore.js.map +7 -0
  72. package/dist/cjs/PlanScheduler.d.ts +363 -0
  73. package/dist/cjs/PlanScheduler.d.ts.map +1 -0
  74. package/dist/cjs/PlanScheduler.js +1090 -0
  75. package/dist/cjs/PlanScheduler.js.map +7 -0
  76. package/dist/cjs/Reconciliation.d.ts +175 -0
  77. package/dist/cjs/Reconciliation.d.ts.map +1 -0
  78. package/dist/cjs/Reconciliation.js +119 -0
  79. package/dist/cjs/Reconciliation.js.map +7 -0
  80. package/dist/cjs/ReplayOnly.d.ts +91 -0
  81. package/dist/cjs/ReplayOnly.d.ts.map +1 -0
  82. package/dist/cjs/ReplayOnly.js +52 -0
  83. package/dist/cjs/ReplayOnly.js.map +7 -0
  84. package/dist/cjs/Retention.d.ts +113 -0
  85. package/dist/cjs/Retention.d.ts.map +1 -0
  86. package/dist/cjs/Retention.js +99 -0
  87. package/dist/cjs/Retention.js.map +7 -0
  88. package/dist/cjs/RunCatalogRead.d.ts +17 -0
  89. package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
  90. package/dist/cjs/RunCatalogRead.js +33 -0
  91. package/dist/cjs/RunCatalogRead.js.map +7 -0
  92. package/dist/cjs/RunChangeFeed.d.ts +75 -0
  93. package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
  94. package/dist/cjs/RunChangeFeed.js +96 -0
  95. package/dist/cjs/RunChangeFeed.js.map +7 -0
  96. package/dist/cjs/RunState.d.ts +116 -0
  97. package/dist/cjs/RunState.d.ts.map +1 -0
  98. package/dist/cjs/RunState.js +76 -0
  99. package/dist/cjs/RunState.js.map +7 -0
  100. package/dist/cjs/Selection.d.ts +495 -0
  101. package/dist/cjs/Selection.d.ts.map +1 -0
  102. package/dist/cjs/Selection.js +288 -0
  103. package/dist/cjs/Selection.js.map +7 -0
  104. package/dist/cjs/SelectionStore.d.ts +141 -0
  105. package/dist/cjs/SelectionStore.d.ts.map +1 -0
  106. package/dist/cjs/SelectionStore.js +229 -0
  107. package/dist/cjs/SelectionStore.js.map +7 -0
  108. package/dist/cjs/StepBoundary.d.ts +501 -0
  109. package/dist/cjs/StepBoundary.d.ts.map +1 -0
  110. package/dist/cjs/StepBoundary.js +619 -0
  111. package/dist/cjs/StepBoundary.js.map +7 -0
  112. package/dist/cjs/StepCacheFold.d.ts +148 -0
  113. package/dist/cjs/StepCacheFold.d.ts.map +1 -0
  114. package/dist/cjs/StepCacheFold.js +131 -0
  115. package/dist/cjs/StepCacheFold.js.map +7 -0
  116. package/dist/cjs/StepSandbox.d.ts +78 -0
  117. package/dist/cjs/StepSandbox.d.ts.map +1 -0
  118. package/dist/cjs/StepSandbox.js +75 -0
  119. package/dist/cjs/StepSandbox.js.map +7 -0
  120. package/dist/cjs/WakeBus.d.ts +116 -0
  121. package/dist/cjs/WakeBus.d.ts.map +1 -0
  122. package/dist/cjs/WakeBus.js +89 -0
  123. package/dist/cjs/WakeBus.js.map +7 -0
  124. package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
  125. package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
  126. package/dist/cjs/WorkspaceSandbox.js +711 -0
  127. package/dist/cjs/WorkspaceSandbox.js.map +7 -0
  128. package/dist/cjs/index.d.ts +157 -0
  129. package/dist/cjs/index.d.ts.map +1 -0
  130. package/dist/cjs/index.js +95 -0
  131. package/dist/cjs/index.js.map +7 -0
  132. package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
  133. package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
  134. package/dist/cjs/internal/ActionPersistence.js +1395 -0
  135. package/dist/cjs/internal/ActionPersistence.js.map +7 -0
  136. package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
  137. package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
  138. package/dist/cjs/internal/ArtifactRoots.js +89 -0
  139. package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
  140. package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
  141. package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
  142. package/dist/cjs/internal/AttemptAdmission.js +52 -0
  143. package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
  144. package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
  145. package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
  146. package/dist/cjs/internal/AttemptLifecycle.js +112 -0
  147. package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
  148. package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
  149. package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
  150. package/dist/cjs/internal/AttemptProbe.js +66 -0
  151. package/dist/cjs/internal/AttemptProbe.js.map +7 -0
  152. package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
  153. package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
  154. package/dist/cjs/internal/CacheAdmission.js +71 -0
  155. package/dist/cjs/internal/CacheAdmission.js.map +7 -0
  156. package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
  157. package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
  158. package/dist/cjs/internal/CacheAgeHistory.js +61 -0
  159. package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
  160. package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
  161. package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
  162. package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
  163. package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
  164. package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
  165. package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
  166. package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
  167. package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
  168. package/dist/cjs/internal/CachePublication.d.ts +97 -0
  169. package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
  170. package/dist/cjs/internal/CachePublication.js +80 -0
  171. package/dist/cjs/internal/CachePublication.js.map +7 -0
  172. package/dist/cjs/internal/CallFacts.d.ts +15 -0
  173. package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
  174. package/dist/cjs/internal/CallFacts.js +97 -0
  175. package/dist/cjs/internal/CallFacts.js.map +7 -0
  176. package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
  177. package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
  178. package/dist/cjs/internal/CopiedRecord.js +134 -0
  179. package/dist/cjs/internal/CopiedRecord.js.map +7 -0
  180. package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
  181. package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
  182. package/dist/cjs/internal/DeferredPersistence.js +270 -0
  183. package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
  184. package/dist/cjs/internal/EffectRecords.d.ts +92 -0
  185. package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
  186. package/dist/cjs/internal/EffectRecords.js +63 -0
  187. package/dist/cjs/internal/EffectRecords.js.map +7 -0
  188. package/dist/cjs/internal/EngineJj.d.ts +30 -0
  189. package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
  190. package/dist/cjs/internal/EngineJj.js +42 -0
  191. package/dist/cjs/internal/EngineJj.js.map +7 -0
  192. package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
  193. package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
  194. package/dist/cjs/internal/EngineStateSchema.js +58 -0
  195. package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
  196. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
  197. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  198. package/dist/cjs/internal/ExecutionSnapshotRead.js +201 -0
  199. package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
  200. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
  201. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  202. package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
  203. package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
  204. package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
  205. package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
  206. package/dist/cjs/internal/ExitEncoding.js +236 -0
  207. package/dist/cjs/internal/ExitEncoding.js.map +7 -0
  208. package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
  209. package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
  210. package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
  211. package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
  212. package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
  213. package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
  214. package/dist/cjs/internal/FileEnumeration.js +194 -0
  215. package/dist/cjs/internal/FileEnumeration.js.map +7 -0
  216. package/dist/cjs/internal/HostReflection.d.ts +80 -0
  217. package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
  218. package/dist/cjs/internal/HostReflection.js +43 -0
  219. package/dist/cjs/internal/HostReflection.js.map +7 -0
  220. package/dist/cjs/internal/JournalRecords.d.ts +325 -0
  221. package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
  222. package/dist/cjs/internal/JournalRecords.js +122 -0
  223. package/dist/cjs/internal/JournalRecords.js.map +7 -0
  224. package/dist/cjs/internal/NodeJournal.d.ts +157 -0
  225. package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
  226. package/dist/cjs/internal/NodeJournal.js +192 -0
  227. package/dist/cjs/internal/NodeJournal.js.map +7 -0
  228. package/dist/cjs/internal/Ordering.d.ts +14 -0
  229. package/dist/cjs/internal/Ordering.d.ts.map +1 -0
  230. package/dist/cjs/internal/Ordering.js +25 -0
  231. package/dist/cjs/internal/Ordering.js.map +7 -0
  232. package/dist/cjs/internal/PlanInputs.d.ts +14 -0
  233. package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
  234. package/dist/cjs/internal/PlanInputs.js +78 -0
  235. package/dist/cjs/internal/PlanInputs.js.map +7 -0
  236. package/dist/cjs/internal/PlanMerges.d.ts +178 -0
  237. package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
  238. package/dist/cjs/internal/PlanMerges.js +125 -0
  239. package/dist/cjs/internal/PlanMerges.js.map +7 -0
  240. package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
  241. package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
  242. package/dist/cjs/internal/ProvenanceSlot.js +53 -0
  243. package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
  244. package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
  245. package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
  246. package/dist/cjs/internal/ResultEnvelope.js +90 -0
  247. package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
  248. package/dist/cjs/internal/RetentionOps.d.ts +414 -0
  249. package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
  250. package/dist/cjs/internal/RetentionOps.js +354 -0
  251. package/dist/cjs/internal/RetentionOps.js.map +7 -0
  252. package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
  253. package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
  254. package/dist/cjs/internal/RunCatalogOps.js +85 -0
  255. package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
  256. package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
  257. package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
  258. package/dist/cjs/internal/RunCoordinator.js +123 -0
  259. package/dist/cjs/internal/RunCoordinator.js.map +7 -0
  260. package/dist/cjs/internal/RunDriver.d.ts +192 -0
  261. package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
  262. package/dist/cjs/internal/RunDriver.js +1586 -0
  263. package/dist/cjs/internal/RunDriver.js.map +7 -0
  264. package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
  265. package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
  266. package/dist/cjs/internal/RunLifecycle.js +63 -0
  267. package/dist/cjs/internal/RunLifecycle.js.map +7 -0
  268. package/dist/cjs/internal/RunListing.d.ts +78 -0
  269. package/dist/cjs/internal/RunListing.d.ts.map +1 -0
  270. package/dist/cjs/internal/RunListing.js +171 -0
  271. package/dist/cjs/internal/RunListing.js.map +7 -0
  272. package/dist/cjs/internal/RunListingError.d.ts +35 -0
  273. package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
  274. package/dist/cjs/internal/RunListingError.js +47 -0
  275. package/dist/cjs/internal/RunListingError.js.map +7 -0
  276. package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
  277. package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
  278. package/dist/cjs/internal/RuntimeGraph.js +180 -0
  279. package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
  280. package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
  281. package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
  282. package/dist/cjs/internal/SandboxedExecution.js +104 -0
  283. package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
  284. package/dist/cjs/internal/StateTransaction.d.ts +44 -0
  285. package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
  286. package/dist/cjs/internal/StateTransaction.js +52 -0
  287. package/dist/cjs/internal/StateTransaction.js.map +7 -0
  288. package/dist/cjs/internal/StepFacts.d.ts +14 -0
  289. package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
  290. package/dist/cjs/internal/StepFacts.js +58 -0
  291. package/dist/cjs/internal/StepFacts.js.map +7 -0
  292. package/dist/cjs/internal/TypedEvents.d.ts +14 -0
  293. package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
  294. package/dist/cjs/internal/TypedEvents.js +37 -0
  295. package/dist/cjs/internal/TypedEvents.js.map +7 -0
  296. package/dist/cjs/migrations/0001_initial.d.ts +17 -0
  297. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  298. package/dist/cjs/migrations/0001_initial.js +61 -0
  299. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  300. package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
  301. package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
  302. package/dist/cjs/migrations/0002_selection_store.js +56 -0
  303. package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
  304. package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
  305. package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
  306. package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
  307. package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
  308. package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
  309. package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
  310. package/dist/cjs/migrations/0004_plan_environment.js +56 -0
  311. package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
  312. package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
  313. package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
  314. package/dist/cjs/migrations/0005_plan_merges.js +82 -0
  315. package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
  316. package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
  317. package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
  318. package/dist/cjs/migrations/0006_execution_listing.js +101 -0
  319. package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
  320. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
  321. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  322. package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
  323. package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
  324. package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
  325. package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
  326. package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
  327. package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
  328. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
  329. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  330. package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
  331. package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
  332. package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
  333. package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
  334. package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
  335. package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
  336. package/dist/cjs/package.json +1 -0
  337. package/dist/cjs/test/TestStores.d.ts +89 -0
  338. package/dist/cjs/test/TestStores.d.ts.map +1 -0
  339. package/dist/cjs/test/TestStores.js +98 -0
  340. package/dist/cjs/test/TestStores.js.map +7 -0
  341. package/dist/esm/ArtifactGc.d.ts +235 -0
  342. package/dist/esm/ArtifactGc.d.ts.map +1 -0
  343. package/dist/esm/ArtifactGc.js +268 -0
  344. package/dist/esm/ArtifactGc.js.map +1 -0
  345. package/dist/esm/ArtifactSync.d.ts +164 -0
  346. package/dist/esm/ArtifactSync.d.ts.map +1 -0
  347. package/dist/esm/ArtifactSync.js +176 -0
  348. package/dist/esm/ArtifactSync.js.map +1 -0
  349. package/dist/esm/CacheSync.d.ts +112 -0
  350. package/dist/esm/CacheSync.d.ts.map +1 -0
  351. package/dist/esm/CacheSync.js +94 -0
  352. package/dist/esm/CacheSync.js.map +1 -0
  353. package/dist/esm/DeferredClockFold.d.ts +354 -0
  354. package/dist/esm/DeferredClockFold.d.ts.map +1 -0
  355. package/dist/esm/DeferredClockFold.js +472 -0
  356. package/dist/esm/DeferredClockFold.js.map +1 -0
  357. package/dist/esm/DisasterRecovery.d.ts +431 -0
  358. package/dist/esm/DisasterRecovery.d.ts.map +1 -0
  359. package/dist/esm/DisasterRecovery.js +523 -0
  360. package/dist/esm/DisasterRecovery.js.map +1 -0
  361. package/dist/esm/DurableEngineState.d.ts +776 -0
  362. package/dist/esm/DurableEngineState.d.ts.map +1 -0
  363. package/dist/esm/DurableEngineState.js +1648 -0
  364. package/dist/esm/DurableEngineState.js.map +1 -0
  365. package/dist/esm/EngineStore.d.ts +158 -0
  366. package/dist/esm/EngineStore.d.ts.map +1 -0
  367. package/dist/esm/EngineStore.js +403 -0
  368. package/dist/esm/EngineStore.js.map +1 -0
  369. package/dist/esm/EngineStoreMetrics.d.ts +276 -0
  370. package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
  371. package/dist/esm/EngineStoreMetrics.js +260 -0
  372. package/dist/esm/EngineStoreMetrics.js.map +1 -0
  373. package/dist/esm/Errors.d.ts +22 -0
  374. package/dist/esm/Errors.d.ts.map +1 -0
  375. package/dist/esm/Errors.js +22 -0
  376. package/dist/esm/Errors.js.map +1 -0
  377. package/dist/esm/EventTypes.d.ts +27 -0
  378. package/dist/esm/EventTypes.d.ts.map +1 -0
  379. package/dist/esm/EventTypes.js +27 -0
  380. package/dist/esm/EventTypes.js.map +1 -0
  381. package/dist/esm/ExecutionFacts.d.ts +59 -0
  382. package/dist/esm/ExecutionFacts.d.ts.map +1 -0
  383. package/dist/esm/ExecutionFacts.js +96 -0
  384. package/dist/esm/ExecutionFacts.js.map +1 -0
  385. package/dist/esm/ExecutionSnapshot.d.ts +117 -0
  386. package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
  387. package/dist/esm/ExecutionSnapshot.js +95 -0
  388. package/dist/esm/ExecutionSnapshot.js.map +1 -0
  389. package/dist/esm/Inconsistency.d.ts +154 -0
  390. package/dist/esm/Inconsistency.d.ts.map +1 -0
  391. package/dist/esm/Inconsistency.js +133 -0
  392. package/dist/esm/Inconsistency.js.map +1 -0
  393. package/dist/esm/Migrations.d.ts +56 -0
  394. package/dist/esm/Migrations.d.ts.map +1 -0
  395. package/dist/esm/Migrations.js +91 -0
  396. package/dist/esm/Migrations.js.map +1 -0
  397. package/dist/esm/OwnerIdentity.d.ts +91 -0
  398. package/dist/esm/OwnerIdentity.d.ts.map +1 -0
  399. package/dist/esm/OwnerIdentity.js +99 -0
  400. package/dist/esm/OwnerIdentity.js.map +1 -0
  401. package/dist/esm/PlanInputStore.d.ts +110 -0
  402. package/dist/esm/PlanInputStore.d.ts.map +1 -0
  403. package/dist/esm/PlanInputStore.js +207 -0
  404. package/dist/esm/PlanInputStore.js.map +1 -0
  405. package/dist/esm/PlanMergeStore.d.ts +113 -0
  406. package/dist/esm/PlanMergeStore.d.ts.map +1 -0
  407. package/dist/esm/PlanMergeStore.js +244 -0
  408. package/dist/esm/PlanMergeStore.js.map +1 -0
  409. package/dist/esm/PlanScheduler.d.ts +363 -0
  410. package/dist/esm/PlanScheduler.d.ts.map +1 -0
  411. package/dist/esm/PlanScheduler.js +1321 -0
  412. package/dist/esm/PlanScheduler.js.map +1 -0
  413. package/dist/esm/Reconciliation.d.ts +175 -0
  414. package/dist/esm/Reconciliation.d.ts.map +1 -0
  415. package/dist/esm/Reconciliation.js +175 -0
  416. package/dist/esm/Reconciliation.js.map +1 -0
  417. package/dist/esm/ReplayOnly.d.ts +91 -0
  418. package/dist/esm/ReplayOnly.d.ts.map +1 -0
  419. package/dist/esm/ReplayOnly.js +59 -0
  420. package/dist/esm/ReplayOnly.js.map +1 -0
  421. package/dist/esm/Retention.d.ts +113 -0
  422. package/dist/esm/Retention.d.ts.map +1 -0
  423. package/dist/esm/Retention.js +139 -0
  424. package/dist/esm/Retention.js.map +1 -0
  425. package/dist/esm/RunCatalogRead.d.ts +17 -0
  426. package/dist/esm/RunCatalogRead.d.ts.map +1 -0
  427. package/dist/esm/RunCatalogRead.js +17 -0
  428. package/dist/esm/RunCatalogRead.js.map +1 -0
  429. package/dist/esm/RunChangeFeed.d.ts +75 -0
  430. package/dist/esm/RunChangeFeed.d.ts.map +1 -0
  431. package/dist/esm/RunChangeFeed.js +81 -0
  432. package/dist/esm/RunChangeFeed.js.map +1 -0
  433. package/dist/esm/RunState.d.ts +116 -0
  434. package/dist/esm/RunState.d.ts.map +1 -0
  435. package/dist/esm/RunState.js +109 -0
  436. package/dist/esm/RunState.js.map +1 -0
  437. package/dist/esm/Selection.d.ts +495 -0
  438. package/dist/esm/Selection.d.ts.map +1 -0
  439. package/dist/esm/Selection.js +482 -0
  440. package/dist/esm/Selection.js.map +1 -0
  441. package/dist/esm/SelectionStore.d.ts +141 -0
  442. package/dist/esm/SelectionStore.d.ts.map +1 -0
  443. package/dist/esm/SelectionStore.js +215 -0
  444. package/dist/esm/SelectionStore.js.map +1 -0
  445. package/dist/esm/StepBoundary.d.ts +501 -0
  446. package/dist/esm/StepBoundary.d.ts.map +1 -0
  447. package/dist/esm/StepBoundary.js +919 -0
  448. package/dist/esm/StepBoundary.js.map +1 -0
  449. package/dist/esm/StepCacheFold.d.ts +148 -0
  450. package/dist/esm/StepCacheFold.d.ts.map +1 -0
  451. package/dist/esm/StepCacheFold.js +201 -0
  452. package/dist/esm/StepCacheFold.js.map +1 -0
  453. package/dist/esm/StepSandbox.d.ts +78 -0
  454. package/dist/esm/StepSandbox.d.ts.map +1 -0
  455. package/dist/esm/StepSandbox.js +70 -0
  456. package/dist/esm/StepSandbox.js.map +1 -0
  457. package/dist/esm/WakeBus.d.ts +116 -0
  458. package/dist/esm/WakeBus.d.ts.map +1 -0
  459. package/dist/esm/WakeBus.js +121 -0
  460. package/dist/esm/WakeBus.js.map +1 -0
  461. package/dist/esm/WorkspaceSandbox.d.ts +619 -0
  462. package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
  463. package/dist/esm/WorkspaceSandbox.js +985 -0
  464. package/dist/esm/WorkspaceSandbox.js.map +1 -0
  465. package/dist/esm/index.d.ts +157 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +157 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/internal/ActionPersistence.d.ts +276 -0
  470. package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
  471. package/dist/esm/internal/ActionPersistence.js +2306 -0
  472. package/dist/esm/internal/ActionPersistence.js.map +1 -0
  473. package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
  474. package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
  475. package/dist/esm/internal/ArtifactRoots.js +76 -0
  476. package/dist/esm/internal/ArtifactRoots.js.map +1 -0
  477. package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
  478. package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
  479. package/dist/esm/internal/AttemptAdmission.js +52 -0
  480. package/dist/esm/internal/AttemptAdmission.js.map +1 -0
  481. package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
  482. package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
  483. package/dist/esm/internal/AttemptLifecycle.js +104 -0
  484. package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
  485. package/dist/esm/internal/AttemptProbe.d.ts +53 -0
  486. package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
  487. package/dist/esm/internal/AttemptProbe.js +83 -0
  488. package/dist/esm/internal/AttemptProbe.js.map +1 -0
  489. package/dist/esm/internal/CacheAdmission.d.ts +79 -0
  490. package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
  491. package/dist/esm/internal/CacheAdmission.js +72 -0
  492. package/dist/esm/internal/CacheAdmission.js.map +1 -0
  493. package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
  494. package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
  495. package/dist/esm/internal/CacheAgeHistory.js +49 -0
  496. package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
  497. package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
  498. package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
  499. package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
  500. package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
  501. package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
  502. package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
  503. package/dist/esm/internal/CacheOutputPolicy.js +73 -0
  504. package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
  505. package/dist/esm/internal/CachePublication.d.ts +97 -0
  506. package/dist/esm/internal/CachePublication.d.ts.map +1 -0
  507. package/dist/esm/internal/CachePublication.js +116 -0
  508. package/dist/esm/internal/CachePublication.js.map +1 -0
  509. package/dist/esm/internal/CallFacts.d.ts +15 -0
  510. package/dist/esm/internal/CallFacts.d.ts.map +1 -0
  511. package/dist/esm/internal/CallFacts.js +83 -0
  512. package/dist/esm/internal/CallFacts.js.map +1 -0
  513. package/dist/esm/internal/CopiedRecord.d.ts +61 -0
  514. package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
  515. package/dist/esm/internal/CopiedRecord.js +165 -0
  516. package/dist/esm/internal/CopiedRecord.js.map +1 -0
  517. package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
  518. package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
  519. package/dist/esm/internal/DeferredPersistence.js +240 -0
  520. package/dist/esm/internal/DeferredPersistence.js.map +1 -0
  521. package/dist/esm/internal/EffectRecords.d.ts +92 -0
  522. package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
  523. package/dist/esm/internal/EffectRecords.js +94 -0
  524. package/dist/esm/internal/EffectRecords.js.map +1 -0
  525. package/dist/esm/internal/EngineJj.d.ts +30 -0
  526. package/dist/esm/internal/EngineJj.d.ts.map +1 -0
  527. package/dist/esm/internal/EngineJj.js +29 -0
  528. package/dist/esm/internal/EngineJj.js.map +1 -0
  529. package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
  530. package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
  531. package/dist/esm/internal/EngineStateSchema.js +53 -0
  532. package/dist/esm/internal/EngineStateSchema.js.map +1 -0
  533. package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
  534. package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  535. package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
  536. package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
  537. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
  538. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  539. package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
  540. package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
  541. package/dist/esm/internal/ExitEncoding.d.ts +180 -0
  542. package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
  543. package/dist/esm/internal/ExitEncoding.js +361 -0
  544. package/dist/esm/internal/ExitEncoding.js.map +1 -0
  545. package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
  546. package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
  547. package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
  548. package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
  549. package/dist/esm/internal/FileEnumeration.d.ts +127 -0
  550. package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
  551. package/dist/esm/internal/FileEnumeration.js +236 -0
  552. package/dist/esm/internal/FileEnumeration.js.map +1 -0
  553. package/dist/esm/internal/HostReflection.d.ts +80 -0
  554. package/dist/esm/internal/HostReflection.d.ts.map +1 -0
  555. package/dist/esm/internal/HostReflection.js +98 -0
  556. package/dist/esm/internal/HostReflection.js.map +1 -0
  557. package/dist/esm/internal/JournalRecords.d.ts +325 -0
  558. package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
  559. package/dist/esm/internal/JournalRecords.js +306 -0
  560. package/dist/esm/internal/JournalRecords.js.map +1 -0
  561. package/dist/esm/internal/NodeJournal.d.ts +157 -0
  562. package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
  563. package/dist/esm/internal/NodeJournal.js +298 -0
  564. package/dist/esm/internal/NodeJournal.js.map +1 -0
  565. package/dist/esm/internal/Ordering.d.ts +14 -0
  566. package/dist/esm/internal/Ordering.d.ts.map +1 -0
  567. package/dist/esm/internal/Ordering.js +14 -0
  568. package/dist/esm/internal/Ordering.js.map +1 -0
  569. package/dist/esm/internal/PlanInputs.d.ts +14 -0
  570. package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
  571. package/dist/esm/internal/PlanInputs.js +57 -0
  572. package/dist/esm/internal/PlanInputs.js.map +1 -0
  573. package/dist/esm/internal/PlanMerges.d.ts +178 -0
  574. package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
  575. package/dist/esm/internal/PlanMerges.js +113 -0
  576. package/dist/esm/internal/PlanMerges.js.map +1 -0
  577. package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
  578. package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
  579. package/dist/esm/internal/ProvenanceSlot.js +39 -0
  580. package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
  581. package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
  582. package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
  583. package/dist/esm/internal/ResultEnvelope.js +83 -0
  584. package/dist/esm/internal/ResultEnvelope.js.map +1 -0
  585. package/dist/esm/internal/RetentionOps.d.ts +414 -0
  586. package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
  587. package/dist/esm/internal/RetentionOps.js +576 -0
  588. package/dist/esm/internal/RetentionOps.js.map +1 -0
  589. package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
  590. package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
  591. package/dist/esm/internal/RunCatalogOps.js +120 -0
  592. package/dist/esm/internal/RunCatalogOps.js.map +1 -0
  593. package/dist/esm/internal/RunCoordinator.d.ts +78 -0
  594. package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
  595. package/dist/esm/internal/RunCoordinator.js +115 -0
  596. package/dist/esm/internal/RunCoordinator.js.map +1 -0
  597. package/dist/esm/internal/RunDriver.d.ts +192 -0
  598. package/dist/esm/internal/RunDriver.d.ts.map +1 -0
  599. package/dist/esm/internal/RunDriver.js +2334 -0
  600. package/dist/esm/internal/RunDriver.js.map +1 -0
  601. package/dist/esm/internal/RunLifecycle.d.ts +22 -0
  602. package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
  603. package/dist/esm/internal/RunLifecycle.js +49 -0
  604. package/dist/esm/internal/RunLifecycle.js.map +1 -0
  605. package/dist/esm/internal/RunListing.d.ts +78 -0
  606. package/dist/esm/internal/RunListing.d.ts.map +1 -0
  607. package/dist/esm/internal/RunListing.js +146 -0
  608. package/dist/esm/internal/RunListing.js.map +1 -0
  609. package/dist/esm/internal/RunListingError.d.ts +35 -0
  610. package/dist/esm/internal/RunListingError.d.ts.map +1 -0
  611. package/dist/esm/internal/RunListingError.js +27 -0
  612. package/dist/esm/internal/RunListingError.js.map +1 -0
  613. package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
  614. package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
  615. package/dist/esm/internal/RuntimeGraph.js +182 -0
  616. package/dist/esm/internal/RuntimeGraph.js.map +1 -0
  617. package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
  618. package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
  619. package/dist/esm/internal/SandboxedExecution.js +107 -0
  620. package/dist/esm/internal/SandboxedExecution.js.map +1 -0
  621. package/dist/esm/internal/StateTransaction.d.ts +44 -0
  622. package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
  623. package/dist/esm/internal/StateTransaction.js +54 -0
  624. package/dist/esm/internal/StateTransaction.js.map +1 -0
  625. package/dist/esm/internal/StepFacts.d.ts +14 -0
  626. package/dist/esm/internal/StepFacts.d.ts.map +1 -0
  627. package/dist/esm/internal/StepFacts.js +35 -0
  628. package/dist/esm/internal/StepFacts.js.map +1 -0
  629. package/dist/esm/internal/TypedEvents.d.ts +14 -0
  630. package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
  631. package/dist/esm/internal/TypedEvents.js +14 -0
  632. package/dist/esm/internal/TypedEvents.js.map +1 -0
  633. package/dist/esm/migrations/0001_initial.d.ts +17 -0
  634. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  635. package/dist/esm/migrations/0001_initial.js +41 -0
  636. package/dist/esm/migrations/0001_initial.js.map +1 -0
  637. package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
  638. package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
  639. package/dist/esm/migrations/0002_selection_store.js +34 -0
  640. package/dist/esm/migrations/0002_selection_store.js.map +1 -0
  641. package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
  642. package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
  643. package/dist/esm/migrations/0003_plan_inputs.js +70 -0
  644. package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
  645. package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
  646. package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
  647. package/dist/esm/migrations/0004_plan_environment.js +33 -0
  648. package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
  649. package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
  650. package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
  651. package/dist/esm/migrations/0005_plan_merges.js +59 -0
  652. package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
  653. package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
  654. package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
  655. package/dist/esm/migrations/0006_execution_listing.js +81 -0
  656. package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
  657. package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
  658. package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  659. package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
  660. package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
  661. package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
  662. package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
  663. package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
  664. package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
  665. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
  666. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  667. package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
  668. package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
  669. package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
  670. package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
  671. package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
  672. package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
  673. package/dist/esm/test/TestStores.d.ts +89 -0
  674. package/dist/esm/test/TestStores.d.ts.map +1 -0
  675. package/dist/esm/test/TestStores.js +103 -0
  676. package/dist/esm/test/TestStores.js.map +1 -0
  677. package/docs/README.md +113 -0
  678. package/docs/api.md +1494 -0
  679. package/docs/concepts/attempts-and-replay.md +149 -0
  680. package/docs/concepts/cache-admission.md +265 -0
  681. package/docs/concepts/call-facts.md +86 -0
  682. package/docs/concepts/durable-waits.md +175 -0
  683. package/docs/concepts/execution-facts.md +90 -0
  684. package/docs/concepts/ownership-and-fencing.md +128 -0
  685. package/docs/concepts/step-boundaries.md +148 -0
  686. package/docs/concepts/workspace-transactions.md +199 -0
  687. package/docs/event-types.md +14 -0
  688. package/docs/guides/back-up-and-restore.md +164 -0
  689. package/docs/guides/collect-unreferenced-artifacts.md +128 -0
  690. package/docs/guides/compose-a-durable-engine.md +146 -0
  691. package/docs/guides/coordinate-two-processes.md +120 -0
  692. package/docs/guides/defer-work-with-selection.md +171 -0
  693. package/docs/guides/delete-old-run-history.md +154 -0
  694. package/docs/guides/drive-a-plan.md +314 -0
  695. package/docs/guides/observe-engine-metrics.md +98 -0
  696. package/docs/guides/observe-executions.md +187 -0
  697. package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
  698. package/docs/guides/share-a-cache-across-machines.md +134 -0
  699. package/docs/guides/testing.md +123 -0
  700. package/docs/installation.md +102 -0
  701. package/docs/quickstart.md +215 -0
  702. package/docs/troubleshooting.md +347 -0
  703. package/package.json +438 -3
  704. package/src/ArtifactGc.ts +408 -0
  705. package/src/ArtifactSync.ts +278 -0
  706. package/src/CacheSync.ts +131 -0
  707. package/src/DeferredClockFold.ts +586 -0
  708. package/src/DisasterRecovery.ts +888 -0
  709. package/src/DurableEngineState.ts +2656 -0
  710. package/src/EngineStore.ts +656 -0
  711. package/src/EngineStoreMetrics.ts +331 -0
  712. package/src/Errors.ts +28 -0
  713. package/src/EventTypes.ts +27 -0
  714. package/src/ExecutionFacts.ts +125 -0
  715. package/src/ExecutionSnapshot.ts +186 -0
  716. package/src/Inconsistency.ts +253 -0
  717. package/src/Migrations.ts +95 -0
  718. package/src/OwnerIdentity.ts +125 -0
  719. package/src/PlanInputStore.ts +292 -0
  720. package/src/PlanMergeStore.ts +330 -0
  721. package/src/PlanScheduler.ts +1806 -0
  722. package/src/Reconciliation.ts +224 -0
  723. package/src/ReplayOnly.ts +95 -0
  724. package/src/Retention.ts +214 -0
  725. package/src/RunCatalogRead.ts +27 -0
  726. package/src/RunChangeFeed.ts +125 -0
  727. package/src/RunState.ts +137 -0
  728. package/src/Selection.ts +683 -0
  729. package/src/SelectionStore.ts +353 -0
  730. package/src/StepBoundary.ts +1165 -0
  731. package/src/StepCacheFold.ts +244 -0
  732. package/src/StepSandbox.ts +110 -0
  733. package/src/WakeBus.ts +167 -0
  734. package/src/WorkspaceSandbox.ts +1604 -0
  735. package/src/index.ts +185 -0
  736. package/src/internal/ActionPersistence.ts +2687 -0
  737. package/src/internal/ArtifactRoots.ts +92 -0
  738. package/src/internal/AttemptAdmission.ts +76 -0
  739. package/src/internal/AttemptLifecycle.ts +163 -0
  740. package/src/internal/AttemptProbe.ts +90 -0
  741. package/src/internal/CacheAdmission.ts +133 -0
  742. package/src/internal/CacheAgeHistory.ts +58 -0
  743. package/src/internal/CacheAgeVerdicts.ts +61 -0
  744. package/src/internal/CacheOutputPolicy.ts +82 -0
  745. package/src/internal/CachePublication.ts +153 -0
  746. package/src/internal/CallFacts.ts +87 -0
  747. package/src/internal/CopiedRecord.ts +201 -0
  748. package/src/internal/DeferredPersistence.ts +459 -0
  749. package/src/internal/EffectRecords.ts +136 -0
  750. package/src/internal/EngineJj.ts +30 -0
  751. package/src/internal/EngineStateSchema.ts +92 -0
  752. package/src/internal/ExecutionSnapshotRead.ts +300 -0
  753. package/src/internal/ExecutionSnapshotRelations.ts +121 -0
  754. package/src/internal/ExitEncoding.ts +453 -0
  755. package/src/internal/FileBoundarySnapshot.ts +39 -0
  756. package/src/internal/FileEnumeration.ts +334 -0
  757. package/src/internal/HostReflection.ts +128 -0
  758. package/src/internal/JournalRecords.ts +396 -0
  759. package/src/internal/NodeJournal.ts +340 -0
  760. package/src/internal/Ordering.ts +14 -0
  761. package/src/internal/PlanInputs.ts +62 -0
  762. package/src/internal/PlanMerges.ts +123 -0
  763. package/src/internal/ProvenanceSlot.ts +52 -0
  764. package/src/internal/ResultEnvelope.ts +118 -0
  765. package/src/internal/RetentionOps.ts +865 -0
  766. package/src/internal/RunCatalogOps.ts +174 -0
  767. package/src/internal/RunCoordinator.ts +215 -0
  768. package/src/internal/RunDriver.ts +3154 -0
  769. package/src/internal/RunLifecycle.ts +53 -0
  770. package/src/internal/RunListing.ts +210 -0
  771. package/src/internal/RunListingError.ts +37 -0
  772. package/src/internal/RuntimeGraph.ts +253 -0
  773. package/src/internal/SandboxedExecution.ts +165 -0
  774. package/src/internal/StateTransaction.ts +71 -0
  775. package/src/internal/StepFacts.ts +36 -0
  776. package/src/internal/TypedEvents.ts +29 -0
  777. package/src/migrations/0001_initial.ts +51 -0
  778. package/src/migrations/0002_selection_store.ts +38 -0
  779. package/src/migrations/0003_plan_inputs.ts +75 -0
  780. package/src/migrations/0004_plan_environment.ts +34 -0
  781. package/src/migrations/0005_plan_merges.ts +60 -0
  782. package/src/migrations/0006_execution_listing.ts +86 -0
  783. package/src/migrations/0007_run_parent_sequence.ts +19 -0
  784. package/src/migrations/0008_deferred_consumption.ts +27 -0
  785. package/src/migrations/0009_deferred_clock_facts.ts +163 -0
  786. package/src/migrations/0010_pending_cancellation.ts +20 -0
  787. package/src/test/TestStores.ts +145 -0
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Durable deferred delivery and absolute clock scheduling.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import { type DurableClock, type DurableDeferred, type Flow, FlowRuntime } from "@smthrs/flow";
7
+ import { Journal } from "@smthrs/journal";
8
+ import type { Ownership } from "@smthrs/run-store";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Exit from "effect/Exit";
11
+ import * as Option from "effect/Option";
12
+ import * as Schedule from "effect/Schedule";
13
+ import type * as Scope from "effect/Scope";
14
+ import * as DurableEngineState from "../DurableEngineState.ts";
15
+ /**
16
+ * Reasons passed to the single claim-gated resume scheduler.
17
+ *
18
+ * @since 0.1.0
19
+ * @category models
20
+ */
21
+ export type ResumeReason = "deferred" | "clock";
22
+ /**
23
+ * Dependencies for durable deferred and clock persistence.
24
+ *
25
+ * `scheduleResume` must enter the run coordinator and ownership claim path. It
26
+ * must never invoke a flow handler directly.
27
+ *
28
+ * @since 0.1.0
29
+ * @category models
30
+ */
31
+ export interface Dependencies {
32
+ readonly owner: Ownership.OwnerId;
33
+ readonly journalSource: string;
34
+ readonly scheduleResume: (flowName: string, executionId: string, reason: ResumeReason, sourceId?: string | undefined) => Effect.Effect<void>;
35
+ /**
36
+ * Redispatch policy for a durable clock whose fire failed. Defaults to
37
+ * {@link defaultFireRetryPolicy}; a composition supplies its own the way
38
+ * the engine's `suspendedRetryPolicy` option is supplied, rather than
39
+ * editing the constant.
40
+ */
41
+ readonly fireRetryPolicy?: FireRetryPolicy | undefined;
42
+ }
43
+ /**
44
+ * Encoded deferred completion with optional opaque correlation metadata.
45
+ *
46
+ * @since 0.1.0
47
+ * @category models
48
+ */
49
+ export interface DeferredDoneOptions {
50
+ readonly flowName: string;
51
+ readonly executionId: string;
52
+ readonly deferredName: string;
53
+ readonly exit: Exit.Exit<unknown, unknown>;
54
+ readonly metadata?: unknown;
55
+ }
56
+ /**
57
+ * Durable deferred and clock operations composed into the encoded engine.
58
+ *
59
+ * @since 0.1.0
60
+ * @category models
61
+ */
62
+ export interface Service {
63
+ readonly deferredResult: (deferred: DurableDeferred.Any) => Effect.Effect<Option.Option<Exit.Exit<unknown, unknown>>, never, FlowRuntime.FlowInstance>;
64
+ readonly deferredDone: (options: DeferredDoneOptions) => Effect.Effect<void>;
65
+ readonly deferredDoneIfWaiting: (options: DeferredDoneOptions & {
66
+ readonly reason: string;
67
+ readonly token: string;
68
+ }) => Effect.Effect<FlowRuntime.DeferredDoneIfWaitingOutcome>;
69
+ readonly scheduleClock: (flow: Flow.Any, options: {
70
+ readonly executionId: string;
71
+ readonly clock: DurableClock.DurableClock;
72
+ }) => Effect.Effect<void>;
73
+ readonly sweepDue: (flowName?: string) => Effect.Effect<void>;
74
+ }
75
+ /**
76
+ * A clock-fire redispatch policy. The input is the sandboxed cause of a failed
77
+ * fire, so any schedule that recurs on an arbitrary input fits.
78
+ *
79
+ * @since 0.1.0
80
+ * @category models
81
+ */
82
+ export type FireRetryPolicy = Schedule.Schedule<unknown, unknown>;
83
+ /**
84
+ * The default redispatch policy for a durable clock whose fire failed.
85
+ *
86
+ * Temporal redispatches timer-queue tasks with backoff until they are acked
87
+ * (`reference/temporal` `service/history` timer queue + `common/backoff`); we
88
+ * mirror that here so one transient journal/flush error at fire time cannot
89
+ * lose the timer until a process restart. Exponential from 100ms, capped at
90
+ * 30s, forever — the fire is idempotent (first-writer deferred completion,
91
+ * deduplicated journal admission, CAS clock completion), so retrying an
92
+ * arbitrary prefix is safe.
93
+ *
94
+ * @since 0.1.0
95
+ * @category constructors
96
+ */
97
+ export declare const defaultFireRetryPolicy: FireRetryPolicy;
98
+ /**
99
+ * Constructs durable deferred and clock persistence.
100
+ *
101
+ * Delivery ordering is `durable state -> durable journal -> claim-gated
102
+ * resume`. The delivery operation itself never invokes a flow handler.
103
+ *
104
+ * @since 0.1.0
105
+ * @category constructors
106
+ */
107
+ export declare const make: (dependencies: Dependencies) => Effect.Effect<Service, never, DurableEngineState.DurableEngineState | Journal.Journal | Scope.Scope>;
108
+ //# sourceMappingURL=DeferredPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeferredPersistence.d.ts","sourceRoot":"","sources":["../../../src/internal/DeferredPersistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,270 @@
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 DeferredPersistence_exports = {};
30
+ __export(DeferredPersistence_exports, {
31
+ defaultFireRetryPolicy: () => defaultFireRetryPolicy,
32
+ make: () => make
33
+ });
34
+ module.exports = __toCommonJS(DeferredPersistence_exports);
35
+ var import_engine = require("@smthrs/engine");
36
+ var import_flow = require("@smthrs/flow");
37
+ var import_journal = require("@smthrs/journal");
38
+ var Clock = __toESM(require("effect/Clock"), 1);
39
+ var Duration = __toESM(require("effect/Duration"), 1);
40
+ var Effect = __toESM(require("effect/Effect"), 1);
41
+ var Exit = __toESM(require("effect/Exit"), 1);
42
+ var FiberMap = __toESM(require("effect/FiberMap"), 1);
43
+ var Option = __toESM(require("effect/Option"), 1);
44
+ var Schedule = __toESM(require("effect/Schedule"), 1);
45
+ var DurableEngineState = __toESM(require("../DurableEngineState.js"), 1);
46
+ var JournalRecords = __toESM(require("./JournalRecords.js"), 1);
47
+ var StateTransaction = __toESM(require("./StateTransaction.js"), 1);
48
+ const clockKey = (row) => JSON.stringify([row.flowName, row.executionId, row.clockName]);
49
+ const defaultFireRetryPolicy = Schedule.min([
50
+ Schedule.exponential("100 millis"),
51
+ Schedule.spaced("30 seconds")
52
+ ]);
53
+ const make = (dependencies) => Effect.gen(function* () {
54
+ const state = yield* DurableEngineState.DurableEngineState;
55
+ const journal = yield* import_journal.Journal.Journal;
56
+ const transactState = StateTransaction.make(state, journal);
57
+ const timers = yield* FiberMap.make();
58
+ const fireRetryPolicy = dependencies.fireRetryPolicy ?? defaultFireRetryPolicy;
59
+ const flushLossy = journal.flush.pipe(
60
+ Effect.catchCause(
61
+ (cause) => Effect.logWarning(
62
+ "engine-store: lossy journal flush failed after a committed durable write; continuing",
63
+ cause
64
+ )
65
+ )
66
+ );
67
+ const persistDeferred = (options, reason = "deferred", expectedWaiting, alongside = Effect.void) => Effect.gen(function* () {
68
+ const completedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor));
69
+ const admission = yield* transactState(
70
+ Effect.gen(function* () {
71
+ if (expectedWaiting !== void 0) {
72
+ const waiting = yield* state.waiting(options.executionId);
73
+ if (Option.isNone(waiting) || waiting.value.reason !== expectedWaiting.reason || waiting.value.token !== expectedWaiting.token) {
74
+ return { _tag: "NotWaiting" };
75
+ }
76
+ }
77
+ const completion = yield* state.completeDeferred({
78
+ flowName: options.flowName,
79
+ executionId: options.executionId,
80
+ deferredName: options.deferredName,
81
+ exit: options.exit,
82
+ ...options.metadata === void 0 ? {} : { metadata: options.metadata },
83
+ completedAtMs
84
+ });
85
+ const row2 = completion.row;
86
+ yield* journal.emitDurableUnfenced(
87
+ JournalRecords.deferredCompleted({
88
+ runId: options.executionId,
89
+ lineageId: import_engine.FlowEngine.Lineage.root(options.executionId),
90
+ sourceId: `${dependencies.journalSource}:deferred:${JSON.stringify([options.flowName, options.executionId, options.deferredName])}`,
91
+ sourceSeq: 0
92
+ }, {
93
+ flowName: row2.flowName,
94
+ executionId: row2.executionId,
95
+ deferredName: row2.deferredName,
96
+ completedAtMs: row2.completedAtMs,
97
+ exitDigest: completion.digest.exit,
98
+ metadataDigest: completion.digest.metadata
99
+ })
100
+ ).pipe(Effect.orDie);
101
+ yield* alongside;
102
+ return { _tag: "Admitted", completion };
103
+ })
104
+ ).pipe(Effect.orDie);
105
+ if (admission._tag === "NotWaiting") return "NotWaiting";
106
+ const row = admission.completion.row;
107
+ yield* flushLossy;
108
+ yield* dependencies.scheduleResume(
109
+ row.flowName,
110
+ row.executionId,
111
+ reason
112
+ );
113
+ return admission.completion._tag;
114
+ });
115
+ const completeDeferred = (options, reason = "deferred") => persistDeferred(options, reason).pipe(Effect.asVoid);
116
+ const fireClock = (row) => Effect.gen(function* () {
117
+ const completedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor));
118
+ yield* persistDeferred(
119
+ {
120
+ flowName: row.flowName,
121
+ executionId: row.executionId,
122
+ deferredName: row.deferredName,
123
+ exit: Exit.void,
124
+ metadata: {
125
+ clockName: row.clockName,
126
+ dueAtMs: row.dueAtMs,
127
+ completedAtMs
128
+ }
129
+ },
130
+ "clock",
131
+ void 0,
132
+ Effect.flatMap(
133
+ state.completeClock(row, completedAtMs),
134
+ (completed) => completed._tag === "Completed" ? emitClockCompleted(completed.row, completedAtMs) : Effect.void
135
+ )
136
+ );
137
+ });
138
+ const armClock = (row) => (
139
+ // A replayed sleep re-schedules its clock and gets the existing row
140
+ // back. A fired clock whose completion stands is not armed again: firing
141
+ // it would re-admit that completion and wake the run, whose replay would
142
+ // re-schedule the clock again, re-driving the parked run forever. A
143
+ // rewind can drop the completion and keep the fired row; that clock
144
+ // still has to fire.
145
+ (row.completedAtMs === null ? Effect.succeed(false) : Effect.map(state.deferred(row), Option.isSome)).pipe(
146
+ Effect.flatMap((fired) => fired ? Effect.void : armTimer(row))
147
+ )
148
+ );
149
+ const armTimer = (row) => Clock.currentTimeMillis.pipe(Effect.map(Math.floor)).pipe(
150
+ Effect.flatMap(
151
+ (nowMs) => fireClock(row).pipe(
152
+ // A failed fire (journal emit/flush defect included) must not kill
153
+ // the one-shot timer fiber: expose the full cause and redispatch
154
+ // with backoff until the fire is durably acked.
155
+ Effect.sandbox,
156
+ Effect.retry(fireRetryPolicy),
157
+ Effect.orDie,
158
+ Effect.delay(Duration.millis(Math.max(0, row.dueAtMs - nowMs))),
159
+ FiberMap.run(timers, clockKey(row), { onlyIfMissing: true })
160
+ )
161
+ ),
162
+ Effect.asVoid
163
+ );
164
+ const emitClockCompleted = (row, completedAtMs) => journal.emitDurableUnfenced(
165
+ JournalRecords.clockCompletedFor(
166
+ dependencies.journalSource,
167
+ import_engine.FlowEngine.Lineage.root(row.executionId),
168
+ row,
169
+ completedAtMs
170
+ )
171
+ ).pipe(Effect.asVoid, Effect.orDie);
172
+ const emitClockScheduled = (row) => journal.emitDurableUnfenced(
173
+ JournalRecords.clockScheduled({
174
+ runId: row.executionId,
175
+ lineageId: import_engine.FlowEngine.Lineage.root(row.executionId),
176
+ sourceId: `${dependencies.journalSource}:clock:${JSON.stringify([row.flowName, row.executionId, row.clockName])}`,
177
+ sourceSeq: 0
178
+ }, {
179
+ flowName: row.flowName,
180
+ executionId: row.executionId,
181
+ clockName: row.clockName,
182
+ deferredName: row.deferredName,
183
+ dueAtMs: row.dueAtMs
184
+ })
185
+ ).pipe(Effect.asVoid, Effect.orDie);
186
+ const recordClockScheduled = (row) => emitClockScheduled(row).pipe(Effect.andThen(flushLossy));
187
+ const scheduleClock = Effect.fn("DeferredPersistence.scheduleClock")(
188
+ (flow, options) => Effect.gen(function* () {
189
+ const nowMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor));
190
+ const scheduled = yield* transactState(
191
+ Effect.gen(function* () {
192
+ const scheduled2 = yield* state.scheduleClock({
193
+ flowName: flow._tag,
194
+ executionId: options.executionId,
195
+ clockName: options.clock.name,
196
+ deferredName: options.clock.deferred.name,
197
+ dueAtMs: nowMs + Duration.toMillis(options.clock.duration),
198
+ completedAtMs: null
199
+ }, dependencies.owner);
200
+ yield* emitClockScheduled(scheduled2.row);
201
+ return scheduled2;
202
+ })
203
+ ).pipe(Effect.orDie);
204
+ yield* flushLossy;
205
+ yield* armClock(scheduled.row);
206
+ })
207
+ );
208
+ const sweepDue = Effect.fn("DeferredPersistence.sweepDue")(
209
+ (flowName) => Effect.gen(function* () {
210
+ const rows = yield* state.pendingClocks(flowName === void 0 ? {} : { flowName });
211
+ yield* Effect.forEach(
212
+ rows,
213
+ (row) => recordClockScheduled(row).pipe(Effect.andThen(armClock(row))),
214
+ { discard: true }
215
+ );
216
+ if (flowName !== void 0) {
217
+ const completions = yield* state.completedDeferreds(flowName);
218
+ yield* Effect.forEach(
219
+ completions,
220
+ (address) => dependencies.scheduleResume(
221
+ address.flowName,
222
+ address.executionId,
223
+ "deferred",
224
+ `${dependencies.journalSource}:wake:${JSON.stringify([
225
+ address.flowName,
226
+ address.executionId,
227
+ address.deferredName
228
+ ])}`
229
+ ),
230
+ { discard: true }
231
+ );
232
+ }
233
+ })
234
+ );
235
+ return {
236
+ deferredResult: Effect.fn("DeferredPersistence.deferredResult")(function* (deferred) {
237
+ const instance = yield* import_flow.FlowRuntime.FlowInstance;
238
+ const address = {
239
+ flowName: instance.flow._tag,
240
+ executionId: instance.executionId,
241
+ deferredName: deferred.name
242
+ };
243
+ const row = yield* state.deferred(address);
244
+ if (Option.isSome(row)) {
245
+ const consumedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor));
246
+ yield* transactState(
247
+ Effect.flatMap(state.consumeDeferred(address, consumedAtMs), (consumed) => consumed ? journal.emitDurableUnfenced(
248
+ JournalRecords.deferredConsumed({
249
+ runId: address.executionId,
250
+ lineageId: import_engine.FlowEngine.Lineage.root(address.executionId),
251
+ sourceId: `${dependencies.journalSource}:deferred-consumed:${JSON.stringify([address.flowName, address.executionId, address.deferredName])}`,
252
+ sourceSeq: 0
253
+ }, { ...address, consumedAtMs })
254
+ ).pipe(Effect.asVoid) : Effect.void)
255
+ ).pipe(Effect.orDie);
256
+ }
257
+ return Option.map(row, (value) => value.exit);
258
+ }),
259
+ deferredDone: Effect.fn("DeferredPersistence.deferredDone")(completeDeferred),
260
+ deferredDoneIfWaiting: Effect.fn("DeferredPersistence.deferredDoneIfWaiting")(
261
+ (options) => persistDeferred(options, "deferred", {
262
+ reason: options.reason,
263
+ token: options.token
264
+ })
265
+ ),
266
+ scheduleClock,
267
+ sweepDue
268
+ };
269
+ });
270
+ //# sourceMappingURL=DeferredPersistence.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/DeferredPersistence.ts"],
4
+ "sourcesContent": ["/**\n * Durable deferred delivery and absolute clock scheduling.\n *\n * @since 0.1.0\n */\n\nimport { FlowEngine } from \"@smthrs/engine\"\nimport { type DurableClock, type DurableDeferred, type Flow, FlowRuntime } from \"@smthrs/flow\"\nimport { Journal } from \"@smthrs/journal\"\nimport type { Ownership } from \"@smthrs/run-store\"\nimport * as Clock from \"effect/Clock\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Exit from \"effect/Exit\"\nimport * as FiberMap from \"effect/FiberMap\"\nimport * as Option from \"effect/Option\"\nimport * as Schedule from \"effect/Schedule\"\nimport type * as Scope from \"effect/Scope\"\nimport * as DurableEngineState from \"../DurableEngineState.ts\"\nimport * as JournalRecords from \"./JournalRecords.ts\"\nimport * as StateTransaction from \"./StateTransaction.ts\"\n\n/**\n * Reasons passed to the single claim-gated resume scheduler.\n *\n * @since 0.1.0\n * @category models\n */\nexport type ResumeReason = \"deferred\" | \"clock\"\n\n/**\n * Dependencies for durable deferred and clock persistence.\n *\n * `scheduleResume` must enter the run coordinator and ownership claim path. It\n * must never invoke a flow handler directly.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Dependencies {\n readonly owner: Ownership.OwnerId\n readonly journalSource: string\n readonly scheduleResume: (\n flowName: string,\n executionId: string,\n reason: ResumeReason,\n sourceId?: string | undefined\n ) => Effect.Effect<void>\n /**\n * Redispatch policy for a durable clock whose fire failed. Defaults to\n * {@link defaultFireRetryPolicy}; a composition supplies its own the way\n * the engine's `suspendedRetryPolicy` option is supplied, rather than\n * editing the constant.\n */\n readonly fireRetryPolicy?: FireRetryPolicy | undefined\n}\n\n/**\n * Encoded deferred completion with optional opaque correlation metadata.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface DeferredDoneOptions {\n readonly flowName: string\n readonly executionId: string\n readonly deferredName: string\n readonly exit: Exit.Exit<unknown, unknown>\n readonly metadata?: unknown\n}\n\n/**\n * Durable deferred and clock operations composed into the encoded engine.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Service {\n readonly deferredResult: (\n deferred: DurableDeferred.Any\n ) => Effect.Effect<\n Option.Option<Exit.Exit<unknown, unknown>>,\n never,\n FlowRuntime.FlowInstance\n >\n readonly deferredDone: (options: DeferredDoneOptions) => Effect.Effect<void>\n readonly deferredDoneIfWaiting: (\n options: DeferredDoneOptions & {\n readonly reason: string\n readonly token: string\n }\n ) => Effect.Effect<FlowRuntime.DeferredDoneIfWaitingOutcome>\n readonly scheduleClock: (\n flow: Flow.Any,\n options: {\n readonly executionId: string\n readonly clock: DurableClock.DurableClock\n }\n ) => Effect.Effect<void>\n readonly sweepDue: (flowName?: string) => Effect.Effect<void>\n}\n\nconst clockKey = (row: DurableEngineState.ClockAddress): string =>\n JSON.stringify([row.flowName, row.executionId, row.clockName])\n\n/**\n * A clock-fire redispatch policy. The input is the sandboxed cause of a failed\n * fire, so any schedule that recurs on an arbitrary input fits.\n *\n * @since 0.1.0\n * @category models\n */\nexport type FireRetryPolicy = Schedule.Schedule<unknown, unknown>\n\n/**\n * The default redispatch policy for a durable clock whose fire failed.\n *\n * Temporal redispatches timer-queue tasks with backoff until they are acked\n * (`reference/temporal` `service/history` timer queue + `common/backoff`); we\n * mirror that here so one transient journal/flush error at fire time cannot\n * lose the timer until a process restart. Exponential from 100ms, capped at\n * 30s, forever \u2014 the fire is idempotent (first-writer deferred completion,\n * deduplicated journal admission, CAS clock completion), so retrying an\n * arbitrary prefix is safe.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const defaultFireRetryPolicy: FireRetryPolicy = Schedule.min([\n Schedule.exponential(\"100 millis\"),\n Schedule.spaced(\"30 seconds\")\n])\n\n/**\n * Constructs durable deferred and clock persistence.\n *\n * Delivery ordering is `durable state -> durable journal -> claim-gated\n * resume`. The delivery operation itself never invokes a flow handler.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (\n dependencies: Dependencies\n): Effect.Effect<\n Service,\n never,\n DurableEngineState.DurableEngineState | Journal.Journal | Scope.Scope\n> =>\n Effect.gen(function*() {\n const state = yield* DurableEngineState.DurableEngineState\n const journal = yield* Journal.Journal\n /**\n * The package's ordered state-and-journal boundary: engine state first,\n * the journal's write transaction inside it. See\n * {@link StateTransaction.make} for the order and what it guarantees.\n */\n const transactState = StateTransaction.make(state, journal)\n const timers = yield* FiberMap.make<string>()\n const fireRetryPolicy = dependencies.fireRetryPolicy ?? defaultFireRetryPolicy\n\n // The durable channel commits inside `emitDurable`; the flush that\n // follows only pushes the *lossy* queue. Once the journal's lossy writer\n // latches a `sink_failed` it stays latched for the process (issue #43),\n // so treating a flush failure as a defect would turn every committed\n // durable write into a permanent stall. Log and move on: durable\n // delivery must never be coupled to lossy-channel health.\n const flushLossy = journal.flush.pipe(\n Effect.catchCause((cause) =>\n Effect.logWarning(\n \"engine-store: lossy journal flush failed after a committed durable write; continuing\",\n cause\n )\n )\n )\n\n const persistDeferred = (\n options: DeferredDoneOptions,\n reason: ResumeReason = \"deferred\",\n expectedWaiting?: { readonly reason: string; readonly token: string } | undefined,\n alongside: Effect.Effect<void> = Effect.void\n ): Effect.Effect<FlowRuntime.DeferredDoneIfWaitingOutcome> =>\n Effect.gen(function*() {\n const completedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n // The completion row and the record describing it commit as one unit:\n // a crash between them left a resumable deferred the journal never\n // announced. The lossy flush below stays outside \u2014 it waits on the\n // journal's writer fiber, which would deadlock against the write\n // transaction this holds.\n const admission = yield* transactState(\n Effect.gen(function*() {\n if (expectedWaiting !== undefined) {\n const waiting = yield* state.waiting(options.executionId)\n if (\n Option.isNone(waiting) ||\n waiting.value.reason !== expectedWaiting.reason ||\n waiting.value.token !== expectedWaiting.token\n ) {\n return { _tag: \"NotWaiting\" as const }\n }\n }\n const completion = yield* state.completeDeferred({\n flowName: options.flowName,\n executionId: options.executionId,\n deferredName: options.deferredName,\n exit: options.exit,\n ...(options.metadata === undefined ? {} : { metadata: options.metadata }),\n completedAtMs\n })\n const row = completion.row\n\n // Durable channel: a deferred completion is a lifecycle record and\n // must never take the droppable lossy queue. It is unfenced by\n // design \u2014 external-trigger admissions are first-writer-wins\n // regardless of who owns the run (issue #10), which is exactly the\n // admission `emitDurableUnfenced` exists for. The record names the\n // row and the digests of its value; the value stays in the row,\n // because the journal is redacted and replayed (issue #72).\n yield* journal.emitDurableUnfenced(\n JournalRecords.deferredCompleted({\n runId: options.executionId,\n lineageId: FlowEngine.Lineage.root(options.executionId),\n sourceId: `${dependencies.journalSource}:deferred:${\n JSON.stringify([options.flowName, options.executionId, options.deferredName])\n }`,\n sourceSeq: 0\n }, {\n flowName: row.flowName,\n executionId: row.executionId,\n deferredName: row.deferredName,\n completedAtMs: row.completedAtMs,\n exitDigest: completion.digest.exit,\n metadataDigest: completion.digest.metadata\n })\n ).pipe(Effect.orDie)\n yield* alongside\n return { _tag: \"Admitted\" as const, completion }\n })\n ).pipe(Effect.orDie)\n if (admission._tag === \"NotWaiting\") return \"NotWaiting\"\n const row = admission.completion.row\n yield* flushLossy\n yield* dependencies.scheduleResume(\n row.flowName,\n row.executionId,\n reason\n )\n return admission.completion._tag\n })\n\n const completeDeferred = (\n options: DeferredDoneOptions,\n reason: ResumeReason = \"deferred\"\n ): Effect.Effect<void> => persistDeferred(options, reason).pipe(Effect.asVoid)\n\n const fireClock = (row: DurableEngineState.ClockRow): Effect.Effect<void> =>\n Effect.gen(function*() {\n const completedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n // The clock completes in the deferred's transaction, and its record\n // with it: a completion the journal never recorded is a clock a\n // rebuilt deadline index would arm again (issue #2037).\n yield* persistDeferred(\n {\n flowName: row.flowName,\n executionId: row.executionId,\n deferredName: row.deferredName,\n exit: Exit.void,\n metadata: {\n clockName: row.clockName,\n dueAtMs: row.dueAtMs,\n completedAtMs\n }\n },\n \"clock\",\n undefined,\n Effect.flatMap(\n state.completeClock(row, completedAtMs),\n (completed) =>\n completed._tag === \"Completed\" ? emitClockCompleted(completed.row, completedAtMs) : Effect.void\n )\n )\n })\n\n const armClock = (row: DurableEngineState.ClockRow): Effect.Effect<void> =>\n // A replayed sleep re-schedules its clock and gets the existing row\n // back. A fired clock whose completion stands is not armed again: firing\n // it would re-admit that completion and wake the run, whose replay would\n // re-schedule the clock again, re-driving the parked run forever. A\n // rewind can drop the completion and keep the fired row; that clock\n // still has to fire.\n (row.completedAtMs === null\n ? Effect.succeed(false)\n : Effect.map(state.deferred(row), Option.isSome)).pipe(\n Effect.flatMap((fired) => fired ? Effect.void : armTimer(row))\n )\n\n const armTimer = (row: DurableEngineState.ClockRow): Effect.Effect<void> =>\n Clock.currentTimeMillis.pipe(Effect.map(Math.floor)).pipe(\n Effect.flatMap((nowMs) =>\n fireClock(row).pipe(\n // A failed fire (journal emit/flush defect included) must not kill\n // the one-shot timer fiber: expose the full cause and redispatch\n // with backoff until the fire is durably acked.\n Effect.sandbox,\n Effect.retry(fireRetryPolicy),\n Effect.orDie,\n Effect.delay(Duration.millis(Math.max(0, row.dueAtMs - nowMs))),\n FiberMap.run(timers, clockKey(row), { onlyIfMissing: true })\n )\n ),\n Effect.asVoid\n )\n\n /** Records that a clock stopped being pending, in the caller's transaction. */\n const emitClockCompleted = (\n row: DurableEngineState.ClockAddress,\n completedAtMs: number\n ): Effect.Effect<void> =>\n journal.emitDurableUnfenced(\n JournalRecords.clockCompletedFor(\n dependencies.journalSource,\n FlowEngine.Lineage.root(row.executionId),\n row,\n completedAtMs\n )\n ).pipe(Effect.asVoid, Effect.orDie)\n\n /**\n * Durable channel: clock schedule records are lifecycle evidence and must\n * never be droppable (issue #10). Unfenced: registration-time sweeps\n * re-record clocks the current process does not own.\n */\n const emitClockScheduled = (\n row: DurableEngineState.ClockRow\n ): Effect.Effect<void> =>\n journal.emitDurableUnfenced(\n JournalRecords.clockScheduled({\n runId: row.executionId,\n lineageId: FlowEngine.Lineage.root(row.executionId),\n sourceId: `${dependencies.journalSource}:clock:${\n JSON.stringify([row.flowName, row.executionId, row.clockName])\n }`,\n sourceSeq: 0\n }, {\n flowName: row.flowName,\n executionId: row.executionId,\n clockName: row.clockName,\n deferredName: row.deferredName,\n dueAtMs: row.dueAtMs\n })\n ).pipe(Effect.asVoid, Effect.orDie)\n\n /** Re-announces an already persisted clock row (the sweep path). */\n const recordClockScheduled = (\n row: DurableEngineState.ClockRow\n ): Effect.Effect<void> => emitClockScheduled(row).pipe(Effect.andThen(flushLossy))\n\n const scheduleClock: Service[\"scheduleClock\"] = Effect.fn(\"DeferredPersistence.scheduleClock\")((\n flow,\n options\n ) =>\n Effect.gen(function*() {\n const nowMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n // The clock row and its schedule record commit as one unit, so a\n // crash between them can no longer arm a durable timer the journal\n // never announced (or announce one that was rolled back).\n const scheduled = yield* transactState(\n Effect.gen(function*() {\n const scheduled = yield* state.scheduleClock({\n flowName: flow._tag,\n executionId: options.executionId,\n clockName: options.clock.name,\n deferredName: options.clock.deferred.name,\n dueAtMs: nowMs + Duration.toMillis(options.clock.duration),\n completedAtMs: null\n }, dependencies.owner)\n yield* emitClockScheduled(scheduled.row)\n return scheduled\n })\n ).pipe(Effect.orDie)\n yield* flushLossy\n yield* armClock(scheduled.row)\n })\n )\n\n const sweepDue: Service[\"sweepDue\"] = Effect.fn(\"DeferredPersistence.sweepDue\")((flowName) =>\n Effect.gen(function*() {\n const rows = yield* state.pendingClocks(flowName === undefined ? {} : { flowName })\n yield* Effect.forEach(\n rows,\n (row) => recordClockScheduled(row).pipe(Effect.andThen(armClock(row))),\n { discard: true }\n )\n if (flowName !== undefined) {\n const completions = yield* state.completedDeferreds(flowName)\n yield* Effect.forEach(\n completions,\n (address) =>\n dependencies.scheduleResume(\n address.flowName,\n address.executionId,\n \"deferred\",\n `${dependencies.journalSource}:wake:${\n JSON.stringify([\n address.flowName,\n address.executionId,\n address.deferredName\n ])\n }`\n ),\n { discard: true }\n )\n }\n })\n )\n\n return {\n deferredResult: Effect.fn(\"DeferredPersistence.deferredResult\")(function*(deferred) {\n const instance = yield* FlowRuntime.FlowInstance\n const address = {\n flowName: instance.flow._tag,\n executionId: instance.executionId,\n deferredName: deferred.name\n }\n const row = yield* state.deferred(address)\n if (Option.isSome(row)) {\n // Keep the result for replay, but stop registration from waking a\n // run that already observed it and may now be parked on another wait.\n // The first consumption is recorded in the same transaction.\n const consumedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n yield* transactState(\n Effect.flatMap(state.consumeDeferred(address, consumedAtMs), (consumed) =>\n consumed\n ? journal.emitDurableUnfenced(\n JournalRecords.deferredConsumed({\n runId: address.executionId,\n lineageId: FlowEngine.Lineage.root(address.executionId),\n sourceId: `${dependencies.journalSource}:deferred-consumed:${\n JSON.stringify([address.flowName, address.executionId, address.deferredName])\n }`,\n sourceSeq: 0\n }, { ...address, consumedAtMs })\n ).pipe(Effect.asVoid)\n : Effect.void)\n ).pipe(Effect.orDie)\n }\n return Option.map(row, (value) => value.exit as Exit.Exit<unknown, unknown>)\n }),\n deferredDone: Effect.fn(\"DeferredPersistence.deferredDone\")(completeDeferred),\n deferredDoneIfWaiting: Effect.fn(\"DeferredPersistence.deferredDoneIfWaiting\")((options) =>\n persistDeferred(options, \"deferred\", {\n reason: options.reason,\n token: options.token\n })\n ),\n scheduleClock,\n sweepDue\n }\n })\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA2B;AAC3B,kBAAgF;AAChF,qBAAwB;AAExB,YAAuB;AACvB,eAA0B;AAC1B,aAAwB;AACxB,WAAsB;AACtB,eAA0B;AAC1B,aAAwB;AACxB,eAA0B;AAE1B,yBAAoC;AACpC,qBAAgC;AAChC,uBAAkC;AAkFlC,MAAM,WAAW,CAAC,QAChB,KAAK,UAAU,CAAC,IAAI,UAAU,IAAI,aAAa,IAAI,SAAS,CAAC;AAyBxD,MAAM,yBAA0C,SAAS,IAAI;AAAA,EAClE,SAAS,YAAY,YAAY;AAAA,EACjC,SAAS,OAAO,YAAY;AAC9B,CAAC;AAWM,MAAM,OAAO,CAClB,iBAMA,OAAO,IAAI,aAAY;AACrB,QAAM,QAAQ,OAAO,mBAAmB;AACxC,QAAM,UAAU,OAAO,uBAAQ;AAM/B,QAAM,gBAAgB,iBAAiB,KAAK,OAAO,OAAO;AAC1D,QAAM,SAAS,OAAO,SAAS,KAAa;AAC5C,QAAM,kBAAkB,aAAa,mBAAmB;AAQxD,QAAM,aAAa,QAAQ,MAAM;AAAA,IAC/B,OAAO;AAAA,MAAW,CAAC,UACjB,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,CACtB,SACA,SAAuB,YACvB,iBACA,YAAiC,OAAO,SAExC,OAAO,IAAI,aAAY;AACrB,UAAM,gBAAgB,OAAO,MAAM,kBAAkB,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC;AAMhF,UAAM,YAAY,OAAO;AAAA,MACvB,OAAO,IAAI,aAAY;AACrB,YAAI,oBAAoB,QAAW;AACjC,gBAAM,UAAU,OAAO,MAAM,QAAQ,QAAQ,WAAW;AACxD,cACE,OAAO,OAAO,OAAO,KACrB,QAAQ,MAAM,WAAW,gBAAgB,UACzC,QAAQ,MAAM,UAAU,gBAAgB,OACxC;AACA,mBAAO,EAAE,MAAM,aAAsB;AAAA,UACvC;AAAA,QACF;AACA,cAAM,aAAa,OAAO,MAAM,iBAAiB;AAAA,UAC/C,UAAU,QAAQ;AAAA,UAClB,aAAa,QAAQ;AAAA,UACrB,cAAc,QAAQ;AAAA,UACtB,MAAM,QAAQ;AAAA,UACd,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,UACvE;AAAA,QACF,CAAC;AACD,cAAMA,OAAM,WAAW;AASvB,eAAO,QAAQ;AAAA,UACb,eAAe,kBAAkB;AAAA,YAC/B,OAAO,QAAQ;AAAA,YACf,WAAW,yBAAW,QAAQ,KAAK,QAAQ,WAAW;AAAA,YACtD,UAAU,GAAG,aAAa,aAAa,aACrC,KAAK,UAAU,CAAC,QAAQ,UAAU,QAAQ,aAAa,QAAQ,YAAY,CAAC,CAC9E;AAAA,YACA,WAAW;AAAA,UACb,GAAG;AAAA,YACD,UAAUA,KAAI;AAAA,YACd,aAAaA,KAAI;AAAA,YACjB,cAAcA,KAAI;AAAA,YAClB,eAAeA,KAAI;AAAA,YACnB,YAAY,WAAW,OAAO;AAAA,YAC9B,gBAAgB,WAAW,OAAO;AAAA,UACpC,CAAC;AAAA,QACH,EAAE,KAAK,OAAO,KAAK;AACnB,eAAO;AACP,eAAO,EAAE,MAAM,YAAqB,WAAW;AAAA,MACjD,CAAC;AAAA,IACH,EAAE,KAAK,OAAO,KAAK;AACnB,QAAI,UAAU,SAAS,aAAc,QAAO;AAC5C,UAAM,MAAM,UAAU,WAAW;AACjC,WAAO;AACP,WAAO,aAAa;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ;AAAA,IACF;AACA,WAAO,UAAU,WAAW;AAAA,EAC9B,CAAC;AAEH,QAAM,mBAAmB,CACvB,SACA,SAAuB,eACC,gBAAgB,SAAS,MAAM,EAAE,KAAK,OAAO,MAAM;AAE7E,QAAM,YAAY,CAAC,QACjB,OAAO,IAAI,aAAY;AACrB,UAAM,gBAAgB,OAAO,MAAM,kBAAkB,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC;AAIhF,WAAO;AAAA,MACL;AAAA,QACE,UAAU,IAAI;AAAA,QACd,aAAa,IAAI;AAAA,QACjB,cAAc,IAAI;AAAA,QAClB,MAAM,KAAK;AAAA,QACX,UAAU;AAAA,UACR,WAAW,IAAI;AAAA,UACf,SAAS,IAAI;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,MAAM,cAAc,KAAK,aAAa;AAAA,QACtC,CAAC,cACC,UAAU,SAAS,cAAc,mBAAmB,UAAU,KAAK,aAAa,IAAI,OAAO;AAAA,MAC/F;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOf,IAAI,kBAAkB,OACnB,OAAO,QAAQ,KAAK,IACpB,OAAO,IAAI,MAAM,SAAS,GAAG,GAAG,OAAO,MAAM,GAAG;AAAA,MAChD,OAAO,QAAQ,CAAC,UAAU,QAAQ,OAAO,OAAO,SAAS,GAAG,CAAC;AAAA,IAC/D;AAAA;AAEJ,QAAM,WAAW,CAAC,QAChB,MAAM,kBAAkB,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;AAAA,IACnD,OAAO;AAAA,MAAQ,CAAC,UACd,UAAU,GAAG,EAAE;AAAA;AAAA;AAAA;AAAA,QAIb,OAAO;AAAA,QACP,OAAO,MAAM,eAAe;AAAA,QAC5B,OAAO;AAAA,QACP,OAAO,MAAM,SAAS,OAAO,KAAK,IAAI,GAAG,IAAI,UAAU,KAAK,CAAC,CAAC;AAAA,QAC9D,SAAS,IAAI,QAAQ,SAAS,GAAG,GAAG,EAAE,eAAe,KAAK,CAAC;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAGF,QAAM,qBAAqB,CACzB,KACA,kBAEA,QAAQ;AAAA,IACN,eAAe;AAAA,MACb,aAAa;AAAA,MACb,yBAAW,QAAQ,KAAK,IAAI,WAAW;AAAA,MACvC;AAAA,MACA;AAAA,IACF;AAAA,EACF,EAAE,KAAK,OAAO,QAAQ,OAAO,KAAK;AAOpC,QAAM,qBAAqB,CACzB,QAEA,QAAQ;AAAA,IACN,eAAe,eAAe;AAAA,MAC5B,OAAO,IAAI;AAAA,MACX,WAAW,yBAAW,QAAQ,KAAK,IAAI,WAAW;AAAA,MAClD,UAAU,GAAG,aAAa,aAAa,UACrC,KAAK,UAAU,CAAC,IAAI,UAAU,IAAI,aAAa,IAAI,SAAS,CAAC,CAC/D;AAAA,MACA,WAAW;AAAA,IACb,GAAG;AAAA,MACD,UAAU,IAAI;AAAA,MACd,aAAa,IAAI;AAAA,MACjB,WAAW,IAAI;AAAA,MACf,cAAc,IAAI;AAAA,MAClB,SAAS,IAAI;AAAA,IACf,CAAC;AAAA,EACH,EAAE,KAAK,OAAO,QAAQ,OAAO,KAAK;AAGpC,QAAM,uBAAuB,CAC3B,QACwB,mBAAmB,GAAG,EAAE,KAAK,OAAO,QAAQ,UAAU,CAAC;AAEjF,QAAM,gBAA0C,OAAO,GAAG,mCAAmC;AAAA,IAAE,CAC7F,MACA,YAEA,OAAO,IAAI,aAAY;AACrB,YAAM,QAAQ,OAAO,MAAM,kBAAkB,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC;AAIxE,YAAM,YAAY,OAAO;AAAA,QACvB,OAAO,IAAI,aAAY;AACrB,gBAAMC,aAAY,OAAO,MAAM,cAAc;AAAA,YAC3C,UAAU,KAAK;AAAA,YACf,aAAa,QAAQ;AAAA,YACrB,WAAW,QAAQ,MAAM;AAAA,YACzB,cAAc,QAAQ,MAAM,SAAS;AAAA,YACrC,SAAS,QAAQ,SAAS,SAAS,QAAQ,MAAM,QAAQ;AAAA,YACzD,eAAe;AAAA,UACjB,GAAG,aAAa,KAAK;AACrB,iBAAO,mBAAmBA,WAAU,GAAG;AACvC,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH,EAAE,KAAK,OAAO,KAAK;AACnB,aAAO;AACP,aAAO,SAAS,UAAU,GAAG;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,QAAM,WAAgC,OAAO,GAAG,8BAA8B;AAAA,IAAE,CAAC,aAC/E,OAAO,IAAI,aAAY;AACrB,YAAM,OAAO,OAAO,MAAM,cAAc,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS,CAAC;AAClF,aAAO,OAAO;AAAA,QACZ;AAAA,QACA,CAAC,QAAQ,qBAAqB,GAAG,EAAE,KAAK,OAAO,QAAQ,SAAS,GAAG,CAAC,CAAC;AAAA,QACrE,EAAE,SAAS,KAAK;AAAA,MAClB;AACA,UAAI,aAAa,QAAW;AAC1B,cAAM,cAAc,OAAO,MAAM,mBAAmB,QAAQ;AAC5D,eAAO,OAAO;AAAA,UACZ;AAAA,UACA,CAAC,YACC,aAAa;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR;AAAA,YACA,GAAG,aAAa,aAAa,SAC3B,KAAK,UAAU;AAAA,cACb,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,YACV,CAAC,CACH;AAAA,UACF;AAAA,UACF,EAAE,SAAS,KAAK;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,gBAAgB,OAAO,GAAG,oCAAoC,EAAE,WAAU,UAAU;AAClF,YAAM,WAAW,OAAO,wBAAY;AACpC,YAAM,UAAU;AAAA,QACd,UAAU,SAAS,KAAK;AAAA,QACxB,aAAa,SAAS;AAAA,QACtB,cAAc,SAAS;AAAA,MACzB;AACA,YAAM,MAAM,OAAO,MAAM,SAAS,OAAO;AACzC,UAAI,OAAO,OAAO,GAAG,GAAG;AAItB,cAAM,eAAe,OAAO,MAAM,kBAAkB,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC;AAC/E,eAAO;AAAA,UACL,OAAO,QAAQ,MAAM,gBAAgB,SAAS,YAAY,GAAG,CAAC,aAC5D,WACI,QAAQ;AAAA,YACR,eAAe,iBAAiB;AAAA,cAC9B,OAAO,QAAQ;AAAA,cACf,WAAW,yBAAW,QAAQ,KAAK,QAAQ,WAAW;AAAA,cACtD,UAAU,GAAG,aAAa,aAAa,sBACrC,KAAK,UAAU,CAAC,QAAQ,UAAU,QAAQ,aAAa,QAAQ,YAAY,CAAC,CAC9E;AAAA,cACA,WAAW;AAAA,YACb,GAAG,EAAE,GAAG,SAAS,aAAa,CAAC;AAAA,UACjC,EAAE,KAAK,OAAO,MAAM,IAClB,OAAO,IAAI;AAAA,QACnB,EAAE,KAAK,OAAO,KAAK;AAAA,MACrB;AACA,aAAO,OAAO,IAAI,KAAK,CAAC,UAAU,MAAM,IAAmC;AAAA,IAC7E,CAAC;AAAA,IACD,cAAc,OAAO,GAAG,kCAAkC,EAAE,gBAAgB;AAAA,IAC5E,uBAAuB,OAAO,GAAG,2CAA2C;AAAA,MAAE,CAAC,YAC7E,gBAAgB,SAAS,YAAY;AAAA,QACnC,QAAQ,QAAQ;AAAA,QAChB,OAAO,QAAQ;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,CAAC;",
6
+ "names": ["row", "scheduled"]
7
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Effect-boundary evidence, emitted by the engine at the point an irreversible
3
+ * action crosses into the outside world.
4
+ *
5
+ * Time travel (`packages/smithers/flows/time-travel/docs/README.md`) requires one durable
6
+ * journal entry recorded **before the adapter begins**, whose status then moves
7
+ * only forward (`intended` → `succeeded` | `unknown`). Rewind reads exactly
8
+ * these records to classify the doomed suffix as blocking, revertible, or
9
+ * warning; nothing else in the journal can answer that question, because an
10
+ * attempt row says an attempt happened, not that an effect left the machine.
11
+ *
12
+ * ## Why the shape lives here and not in `@smthrs/time-travel`
13
+ *
14
+ * `@smthrs/time-travel` depends on `@smthrs/engine-store` (it decodes
15
+ * `RunState`), so the arrow cannot be reversed without a cycle. The record is
16
+ * therefore a **wire contract**, not a shared type: this module writes the
17
+ * shape `EffectBoundary.decodeEntry` reads, under the event type that module
18
+ * owns, and `packages/smithers/flows/time-travel/test/EngineIntegration.test.ts` pins the two
19
+ * together by rewinding across a boundary record this module produced.
20
+ *
21
+ * ## One producer identity, two channels that must not double-count
22
+ *
23
+ * An irreversible dispatch now writes on two channels: the attempt lifecycle
24
+ * (`attempt-started` / `attempt-finished`), which says a durable attempt row
25
+ * moved, and this boundary (`intended` / terminal), which says an external
26
+ * effect was begun and how it settled. They are deliberately NOT merged —
27
+ * an attempt is retried under new numbers while an effect keeps one identity —
28
+ * and they cannot double-count, because a rewind's suffix scan matches only
29
+ * {@link eventType}. The two are tied by construction: the effect id IS the
30
+ * attempt identity (`runId:keyDigest:attempt`), so every boundary record names
31
+ * the attempt row that produced it and the audit reads as one story.
32
+ *
33
+ * @since 0.1.0
34
+ */
35
+ import { JournalEvent } from "@smthrs/journal";
36
+ /**
37
+ * The event type `@smthrs/time-travel` decodes boundary evidence from.
38
+ *
39
+ * Duplicated deliberately rather than imported: see the module note.
40
+ *
41
+ * @since 0.1.0
42
+ * @category constants
43
+ */
44
+ export declare const eventType = "flows.time-travel.effect-boundary";
45
+ /**
46
+ * Monotonic completion evidence recorded around an effect.
47
+ *
48
+ * @since 0.1.0
49
+ * @category models
50
+ */
51
+ export type Status = "intended" | "succeeded" | "unknown";
52
+ /**
53
+ * What the engine knows about an effect before it begins.
54
+ *
55
+ * @since 0.1.0
56
+ * @category models
57
+ */
58
+ export interface Descriptor {
59
+ readonly id: string;
60
+ readonly kind: string;
61
+ readonly tier: "sealed" | "compensable" | "irreversible";
62
+ readonly runId: string;
63
+ readonly lineageId: string;
64
+ readonly sourceId: string;
65
+ readonly attempt: number;
66
+ readonly idempotencyKey?: string | undefined;
67
+ readonly cacheKey?: string | undefined;
68
+ readonly changeId?: string | undefined;
69
+ /**
70
+ * The stable compensation descriptor the adapter owns, when it declares one.
71
+ * Time travel puts it in the entry so a
72
+ * rewind's handler resolution is a lookup over recorded evidence rather than
73
+ * a guess from the effect kind alone.
74
+ */
75
+ readonly compensation?: string | undefined;
76
+ readonly residue?: string | undefined;
77
+ }
78
+ /**
79
+ * Builds one boundary record for `descriptor` at `status`.
80
+ *
81
+ * Every effect and status pair gets its own producer identity: the status is
82
+ * appended to `descriptor.sourceId`, and every boundary record carries
83
+ * sourceSeq 0. Re-emitting the same status for the same effect therefore
84
+ * reuses that `(sourceId, sourceSeq)` pair, so a replay collapses into a
85
+ * journal `Duplicate` instead of appending a second boundary row, the same
86
+ * convergence the attempt lifecycle records rely on.
87
+ *
88
+ * @since 0.1.0
89
+ * @category constructors
90
+ */
91
+ export declare const boundary: (descriptor: Descriptor, status: Status, output?: unknown) => JournalEvent.Input;
92
+ //# sourceMappingURL=EffectRecords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectRecords.d.ts","sourceRoot":"","sources":["../../../src/internal/EffectRecords.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,sCAAsC,CAAA;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,cAAc,CAAA;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,GACnB,YAAY,UAAU,EACtB,QAAQ,MAAM,EACd,SAAS,OAAO,KACf,YAAY,CAAC,KAoCZ,CAAA"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var EffectRecords_exports = {};
20
+ __export(EffectRecords_exports, {
21
+ boundary: () => boundary,
22
+ eventType: () => eventType
23
+ });
24
+ module.exports = __toCommonJS(EffectRecords_exports);
25
+ var import_journal = require("@smthrs/journal");
26
+ const eventType = "flows.time-travel.effect-boundary";
27
+ const boundary = (descriptor, status, output) => new import_journal.JournalEvent.Input({
28
+ runId: descriptor.runId,
29
+ sourceId: `${descriptor.sourceId}:effect:${descriptor.id}:${status}`,
30
+ sourceSeq: 0,
31
+ eventType,
32
+ payload: {
33
+ version: 1,
34
+ effect: {
35
+ id: descriptor.id,
36
+ kind: descriptor.kind,
37
+ tier: descriptor.tier,
38
+ status,
39
+ runId: descriptor.runId,
40
+ lineageId: descriptor.lineageId,
41
+ attempt: descriptor.attempt,
42
+ durableBoundary: true,
43
+ providerStream: false,
44
+ ...output === void 0 ? {} : { output },
45
+ ...descriptor.idempotencyKey === void 0 ? {} : { idempotencyKey: descriptor.idempotencyKey },
46
+ ...descriptor.cacheKey === void 0 ? {} : { cacheKey: descriptor.cacheKey },
47
+ ...descriptor.changeId === void 0 ? {} : { changeId: descriptor.changeId },
48
+ ...descriptor.compensation === void 0 ? {} : { compensation: descriptor.compensation },
49
+ ...descriptor.residue === void 0 ? {} : { residue: descriptor.residue }
50
+ }
51
+ },
52
+ meta: {
53
+ lineageId: descriptor.lineageId,
54
+ ...descriptor.cacheKey === void 0 ? {} : { cacheKey: descriptor.cacheKey },
55
+ timeTravel: {
56
+ effectId: descriptor.id,
57
+ kind: descriptor.kind,
58
+ tier: descriptor.tier,
59
+ status
60
+ }
61
+ }
62
+ });
63
+ //# sourceMappingURL=EffectRecords.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/EffectRecords.ts"],
4
+ "sourcesContent": ["/**\n * Effect-boundary evidence, emitted by the engine at the point an irreversible\n * action crosses into the outside world.\n *\n * Time travel (`packages/smithers/flows/time-travel/docs/README.md`) requires one durable\n * journal entry recorded **before the adapter begins**, whose status then moves\n * only forward (`intended` \u2192 `succeeded` | `unknown`). Rewind reads exactly\n * these records to classify the doomed suffix as blocking, revertible, or\n * warning; nothing else in the journal can answer that question, because an\n * attempt row says an attempt happened, not that an effect left the machine.\n *\n * ## Why the shape lives here and not in `@smthrs/time-travel`\n *\n * `@smthrs/time-travel` depends on `@smthrs/engine-store` (it decodes\n * `RunState`), so the arrow cannot be reversed without a cycle. The record is\n * therefore a **wire contract**, not a shared type: this module writes the\n * shape `EffectBoundary.decodeEntry` reads, under the event type that module\n * owns, and `packages/smithers/flows/time-travel/test/EngineIntegration.test.ts` pins the two\n * together by rewinding across a boundary record this module produced.\n *\n * ## One producer identity, two channels that must not double-count\n *\n * An irreversible dispatch now writes on two channels: the attempt lifecycle\n * (`attempt-started` / `attempt-finished`), which says a durable attempt row\n * moved, and this boundary (`intended` / terminal), which says an external\n * effect was begun and how it settled. They are deliberately NOT merged \u2014\n * an attempt is retried under new numbers while an effect keeps one identity \u2014\n * and they cannot double-count, because a rewind's suffix scan matches only\n * {@link eventType}. The two are tied by construction: the effect id IS the\n * attempt identity (`runId:keyDigest:attempt`), so every boundary record names\n * the attempt row that produced it and the audit reads as one story.\n *\n * @since 0.1.0\n */\n\nimport { JournalEvent } from \"@smthrs/journal\"\n\n/**\n * The event type `@smthrs/time-travel` decodes boundary evidence from.\n *\n * Duplicated deliberately rather than imported: see the module note.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const eventType = \"flows.time-travel.effect-boundary\"\n\n/**\n * Monotonic completion evidence recorded around an effect.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Status = \"intended\" | \"succeeded\" | \"unknown\"\n\n/**\n * What the engine knows about an effect before it begins.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Descriptor {\n readonly id: string\n readonly kind: string\n readonly tier: \"sealed\" | \"compensable\" | \"irreversible\"\n readonly runId: string\n readonly lineageId: string\n readonly sourceId: string\n readonly attempt: number\n readonly idempotencyKey?: string | undefined\n readonly cacheKey?: string | undefined\n readonly changeId?: string | undefined\n /**\n * The stable compensation descriptor the adapter owns, when it declares one.\n * Time travel puts it in the entry so a\n * rewind's handler resolution is a lookup over recorded evidence rather than\n * a guess from the effect kind alone.\n */\n readonly compensation?: string | undefined\n readonly residue?: string | undefined\n}\n\n/**\n * Builds one boundary record for `descriptor` at `status`.\n *\n * Every effect and status pair gets its own producer identity: the status is\n * appended to `descriptor.sourceId`, and every boundary record carries\n * sourceSeq 0. Re-emitting the same status for the same effect therefore\n * reuses that `(sourceId, sourceSeq)` pair, so a replay collapses into a\n * journal `Duplicate` instead of appending a second boundary row, the same\n * convergence the attempt lifecycle records rely on.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const boundary = (\n descriptor: Descriptor,\n status: Status,\n output?: unknown\n): JournalEvent.Input =>\n new JournalEvent.Input({\n runId: descriptor.runId as JournalEvent.RunId,\n sourceId: `${descriptor.sourceId}:effect:${descriptor.id}:${status}` as JournalEvent.SourceId,\n sourceSeq: 0 as JournalEvent.SourceSeq,\n eventType,\n payload: {\n version: 1,\n effect: {\n id: descriptor.id,\n kind: descriptor.kind,\n tier: descriptor.tier,\n status,\n runId: descriptor.runId,\n lineageId: descriptor.lineageId,\n attempt: descriptor.attempt,\n durableBoundary: true,\n providerStream: false,\n ...(output === undefined ? {} : { output }),\n ...(descriptor.idempotencyKey === undefined ? {} : { idempotencyKey: descriptor.idempotencyKey }),\n ...(descriptor.cacheKey === undefined ? {} : { cacheKey: descriptor.cacheKey }),\n ...(descriptor.changeId === undefined ? {} : { changeId: descriptor.changeId }),\n ...(descriptor.compensation === undefined ? {} : { compensation: descriptor.compensation }),\n ...(descriptor.residue === undefined ? {} : { residue: descriptor.residue })\n }\n },\n meta: {\n lineageId: descriptor.lineageId,\n ...(descriptor.cacheKey === undefined ? {} : { cacheKey: descriptor.cacheKey }),\n timeTravel: {\n effectId: descriptor.id,\n kind: descriptor.kind,\n tier: descriptor.tier,\n status\n }\n }\n })\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCA,qBAA6B;AAUtB,MAAM,YAAY;AAkDlB,MAAM,WAAW,CACtB,YACA,QACA,WAEA,IAAI,4BAAa,MAAM;AAAA,EACrB,OAAO,WAAW;AAAA,EAClB,UAAU,GAAG,WAAW,QAAQ,WAAW,WAAW,EAAE,IAAI,MAAM;AAAA,EAClE,WAAW;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,IAAI,WAAW;AAAA,MACf,MAAM,WAAW;AAAA,MACjB,MAAM,WAAW;AAAA,MACjB;AAAA,MACA,OAAO,WAAW;AAAA,MAClB,WAAW,WAAW;AAAA,MACtB,SAAS,WAAW;AAAA,MACpB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,MACzC,GAAI,WAAW,mBAAmB,SAAY,CAAC,IAAI,EAAE,gBAAgB,WAAW,eAAe;AAAA,MAC/F,GAAI,WAAW,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,WAAW,SAAS;AAAA,MAC7E,GAAI,WAAW,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,WAAW,SAAS;AAAA,MAC7E,GAAI,WAAW,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,WAAW,aAAa;AAAA,MACzF,GAAI,WAAW,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,WAAW,QAAQ;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,WAAW,WAAW;AAAA,IACtB,GAAI,WAAW,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,WAAW,SAAS;AAAA,IAC7E,YAAY;AAAA,MACV,UAAU,WAAW;AAAA,MACrB,MAAM,WAAW;AAAA,MACjB,MAAM,WAAW;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Engine-private Jujutsu authority.
3
+ *
4
+ * Action bodies resolve the public `Jj` tag from their guarded host context.
5
+ * Snapshot, restore, and diff bookkeeping resolve this distinct tag instead,
6
+ * so an engine operation never grants the same authority to user code.
7
+ *
8
+ * @since 1.0.0
9
+ */
10
+ import { Jj } from "@smthrs/kernel";
11
+ import * as Context from "effect/Context";
12
+ import * as Layer from "effect/Layer";
13
+ declare const EngineJj_base: Context.ServiceClass<EngineJj, "@smthrs/engine-store/internal/EngineJj", Jj.Jj>;
14
+ /**
15
+ * Engine-owned repository operations, absent from public action context.
16
+ *
17
+ * @since 1.0.0
18
+ * @category services
19
+ */
20
+ export declare class EngineJj extends EngineJj_base {
21
+ }
22
+ /**
23
+ * Captures the current public Jj implementation under the private engine tag.
24
+ *
25
+ * @since 1.0.0
26
+ * @category layers
27
+ */
28
+ export declare const layerFromJj: Layer.Layer<EngineJj, never, Jj.Jj>;
29
+ export {};
30
+ //# sourceMappingURL=EngineJj.d.ts.map