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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +21 -0
  3. package/README.md +146 -2
  4. package/dist/cjs/ArtifactGc.d.ts +235 -0
  5. package/dist/cjs/ArtifactGc.d.ts.map +1 -0
  6. package/dist/cjs/ArtifactGc.js +183 -0
  7. package/dist/cjs/ArtifactGc.js.map +7 -0
  8. package/dist/cjs/ArtifactSync.d.ts +164 -0
  9. package/dist/cjs/ArtifactSync.d.ts.map +1 -0
  10. package/dist/cjs/ArtifactSync.js +144 -0
  11. package/dist/cjs/ArtifactSync.js.map +7 -0
  12. package/dist/cjs/CacheSync.d.ts +112 -0
  13. package/dist/cjs/CacheSync.d.ts.map +1 -0
  14. package/dist/cjs/CacheSync.js +64 -0
  15. package/dist/cjs/CacheSync.js.map +7 -0
  16. package/dist/cjs/DeferredClockFold.d.ts +354 -0
  17. package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
  18. package/dist/cjs/DeferredClockFold.js +335 -0
  19. package/dist/cjs/DeferredClockFold.js.map +7 -0
  20. package/dist/cjs/DisasterRecovery.d.ts +431 -0
  21. package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
  22. package/dist/cjs/DisasterRecovery.js +453 -0
  23. package/dist/cjs/DisasterRecovery.js.map +7 -0
  24. package/dist/cjs/DurableEngineState.d.ts +776 -0
  25. package/dist/cjs/DurableEngineState.d.ts.map +1 -0
  26. package/dist/cjs/DurableEngineState.js +1536 -0
  27. package/dist/cjs/DurableEngineState.js.map +7 -0
  28. package/dist/cjs/EngineStore.d.ts +158 -0
  29. package/dist/cjs/EngineStore.d.ts.map +1 -0
  30. package/dist/cjs/EngineStore.js +398 -0
  31. package/dist/cjs/EngineStore.js.map +7 -0
  32. package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
  33. package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
  34. package/dist/cjs/EngineStoreMetrics.js +135 -0
  35. package/dist/cjs/EngineStoreMetrics.js.map +7 -0
  36. package/dist/cjs/Errors.d.ts +22 -0
  37. package/dist/cjs/Errors.d.ts.map +1 -0
  38. package/dist/cjs/Errors.js +39 -0
  39. package/dist/cjs/Errors.js.map +7 -0
  40. package/dist/cjs/EventTypes.d.ts +27 -0
  41. package/dist/cjs/EventTypes.d.ts.map +1 -0
  42. package/dist/cjs/EventTypes.js +37 -0
  43. package/dist/cjs/EventTypes.js.map +7 -0
  44. package/dist/cjs/ExecutionFacts.d.ts +59 -0
  45. package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
  46. package/dist/cjs/ExecutionFacts.js +123 -0
  47. package/dist/cjs/ExecutionFacts.js.map +7 -0
  48. package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
  49. package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
  50. package/dist/cjs/ExecutionSnapshot.js +111 -0
  51. package/dist/cjs/ExecutionSnapshot.js.map +7 -0
  52. package/dist/cjs/Inconsistency.d.ts +154 -0
  53. package/dist/cjs/Inconsistency.d.ts.map +1 -0
  54. package/dist/cjs/Inconsistency.js +135 -0
  55. package/dist/cjs/Inconsistency.js.map +7 -0
  56. package/dist/cjs/Migrations.d.ts +56 -0
  57. package/dist/cjs/Migrations.d.ts.map +1 -0
  58. package/dist/cjs/Migrations.js +78 -0
  59. package/dist/cjs/Migrations.js.map +7 -0
  60. package/dist/cjs/OwnerIdentity.d.ts +91 -0
  61. package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
  62. package/dist/cjs/OwnerIdentity.js +65 -0
  63. package/dist/cjs/OwnerIdentity.js.map +7 -0
  64. package/dist/cjs/PlanInputStore.d.ts +110 -0
  65. package/dist/cjs/PlanInputStore.d.ts.map +1 -0
  66. package/dist/cjs/PlanInputStore.js +224 -0
  67. package/dist/cjs/PlanInputStore.js.map +7 -0
  68. package/dist/cjs/PlanMergeStore.d.ts +113 -0
  69. package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
  70. package/dist/cjs/PlanMergeStore.js +255 -0
  71. package/dist/cjs/PlanMergeStore.js.map +7 -0
  72. package/dist/cjs/PlanScheduler.d.ts +363 -0
  73. package/dist/cjs/PlanScheduler.d.ts.map +1 -0
  74. package/dist/cjs/PlanScheduler.js +1090 -0
  75. package/dist/cjs/PlanScheduler.js.map +7 -0
  76. package/dist/cjs/Reconciliation.d.ts +175 -0
  77. package/dist/cjs/Reconciliation.d.ts.map +1 -0
  78. package/dist/cjs/Reconciliation.js +119 -0
  79. package/dist/cjs/Reconciliation.js.map +7 -0
  80. package/dist/cjs/ReplayOnly.d.ts +91 -0
  81. package/dist/cjs/ReplayOnly.d.ts.map +1 -0
  82. package/dist/cjs/ReplayOnly.js +52 -0
  83. package/dist/cjs/ReplayOnly.js.map +7 -0
  84. package/dist/cjs/Retention.d.ts +113 -0
  85. package/dist/cjs/Retention.d.ts.map +1 -0
  86. package/dist/cjs/Retention.js +99 -0
  87. package/dist/cjs/Retention.js.map +7 -0
  88. package/dist/cjs/RunCatalogRead.d.ts +17 -0
  89. package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
  90. package/dist/cjs/RunCatalogRead.js +33 -0
  91. package/dist/cjs/RunCatalogRead.js.map +7 -0
  92. package/dist/cjs/RunChangeFeed.d.ts +75 -0
  93. package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
  94. package/dist/cjs/RunChangeFeed.js +96 -0
  95. package/dist/cjs/RunChangeFeed.js.map +7 -0
  96. package/dist/cjs/RunState.d.ts +116 -0
  97. package/dist/cjs/RunState.d.ts.map +1 -0
  98. package/dist/cjs/RunState.js +76 -0
  99. package/dist/cjs/RunState.js.map +7 -0
  100. package/dist/cjs/Selection.d.ts +495 -0
  101. package/dist/cjs/Selection.d.ts.map +1 -0
  102. package/dist/cjs/Selection.js +288 -0
  103. package/dist/cjs/Selection.js.map +7 -0
  104. package/dist/cjs/SelectionStore.d.ts +141 -0
  105. package/dist/cjs/SelectionStore.d.ts.map +1 -0
  106. package/dist/cjs/SelectionStore.js +229 -0
  107. package/dist/cjs/SelectionStore.js.map +7 -0
  108. package/dist/cjs/StepBoundary.d.ts +501 -0
  109. package/dist/cjs/StepBoundary.d.ts.map +1 -0
  110. package/dist/cjs/StepBoundary.js +619 -0
  111. package/dist/cjs/StepBoundary.js.map +7 -0
  112. package/dist/cjs/StepCacheFold.d.ts +148 -0
  113. package/dist/cjs/StepCacheFold.d.ts.map +1 -0
  114. package/dist/cjs/StepCacheFold.js +131 -0
  115. package/dist/cjs/StepCacheFold.js.map +7 -0
  116. package/dist/cjs/StepSandbox.d.ts +78 -0
  117. package/dist/cjs/StepSandbox.d.ts.map +1 -0
  118. package/dist/cjs/StepSandbox.js +75 -0
  119. package/dist/cjs/StepSandbox.js.map +7 -0
  120. package/dist/cjs/WakeBus.d.ts +116 -0
  121. package/dist/cjs/WakeBus.d.ts.map +1 -0
  122. package/dist/cjs/WakeBus.js +89 -0
  123. package/dist/cjs/WakeBus.js.map +7 -0
  124. package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
  125. package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
  126. package/dist/cjs/WorkspaceSandbox.js +711 -0
  127. package/dist/cjs/WorkspaceSandbox.js.map +7 -0
  128. package/dist/cjs/index.d.ts +157 -0
  129. package/dist/cjs/index.d.ts.map +1 -0
  130. package/dist/cjs/index.js +95 -0
  131. package/dist/cjs/index.js.map +7 -0
  132. package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
  133. package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
  134. package/dist/cjs/internal/ActionPersistence.js +1395 -0
  135. package/dist/cjs/internal/ActionPersistence.js.map +7 -0
  136. package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
  137. package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
  138. package/dist/cjs/internal/ArtifactRoots.js +89 -0
  139. package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
  140. package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
  141. package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
  142. package/dist/cjs/internal/AttemptAdmission.js +52 -0
  143. package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
  144. package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
  145. package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
  146. package/dist/cjs/internal/AttemptLifecycle.js +112 -0
  147. package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
  148. package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
  149. package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
  150. package/dist/cjs/internal/AttemptProbe.js +66 -0
  151. package/dist/cjs/internal/AttemptProbe.js.map +7 -0
  152. package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
  153. package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
  154. package/dist/cjs/internal/CacheAdmission.js +71 -0
  155. package/dist/cjs/internal/CacheAdmission.js.map +7 -0
  156. package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
  157. package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
  158. package/dist/cjs/internal/CacheAgeHistory.js +61 -0
  159. package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
  160. package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
  161. package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
  162. package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
  163. package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
  164. package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
  165. package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
  166. package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
  167. package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
  168. package/dist/cjs/internal/CachePublication.d.ts +97 -0
  169. package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
  170. package/dist/cjs/internal/CachePublication.js +80 -0
  171. package/dist/cjs/internal/CachePublication.js.map +7 -0
  172. package/dist/cjs/internal/CallFacts.d.ts +15 -0
  173. package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
  174. package/dist/cjs/internal/CallFacts.js +97 -0
  175. package/dist/cjs/internal/CallFacts.js.map +7 -0
  176. package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
  177. package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
  178. package/dist/cjs/internal/CopiedRecord.js +134 -0
  179. package/dist/cjs/internal/CopiedRecord.js.map +7 -0
  180. package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
  181. package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
  182. package/dist/cjs/internal/DeferredPersistence.js +270 -0
  183. package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
  184. package/dist/cjs/internal/EffectRecords.d.ts +92 -0
  185. package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
  186. package/dist/cjs/internal/EffectRecords.js +63 -0
  187. package/dist/cjs/internal/EffectRecords.js.map +7 -0
  188. package/dist/cjs/internal/EngineJj.d.ts +30 -0
  189. package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
  190. package/dist/cjs/internal/EngineJj.js +42 -0
  191. package/dist/cjs/internal/EngineJj.js.map +7 -0
  192. package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
  193. package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
  194. package/dist/cjs/internal/EngineStateSchema.js +58 -0
  195. package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
  196. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
  197. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  198. package/dist/cjs/internal/ExecutionSnapshotRead.js +199 -0
  199. package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
  200. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
  201. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  202. package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
  203. package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
  204. package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
  205. package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
  206. package/dist/cjs/internal/ExitEncoding.js +236 -0
  207. package/dist/cjs/internal/ExitEncoding.js.map +7 -0
  208. package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
  209. package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
  210. package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
  211. package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
  212. package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
  213. package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
  214. package/dist/cjs/internal/FileEnumeration.js +194 -0
  215. package/dist/cjs/internal/FileEnumeration.js.map +7 -0
  216. package/dist/cjs/internal/HostReflection.d.ts +80 -0
  217. package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
  218. package/dist/cjs/internal/HostReflection.js +43 -0
  219. package/dist/cjs/internal/HostReflection.js.map +7 -0
  220. package/dist/cjs/internal/JournalRecords.d.ts +325 -0
  221. package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
  222. package/dist/cjs/internal/JournalRecords.js +122 -0
  223. package/dist/cjs/internal/JournalRecords.js.map +7 -0
  224. package/dist/cjs/internal/NodeJournal.d.ts +157 -0
  225. package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
  226. package/dist/cjs/internal/NodeJournal.js +192 -0
  227. package/dist/cjs/internal/NodeJournal.js.map +7 -0
  228. package/dist/cjs/internal/Ordering.d.ts +14 -0
  229. package/dist/cjs/internal/Ordering.d.ts.map +1 -0
  230. package/dist/cjs/internal/Ordering.js +25 -0
  231. package/dist/cjs/internal/Ordering.js.map +7 -0
  232. package/dist/cjs/internal/PlanInputs.d.ts +14 -0
  233. package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
  234. package/dist/cjs/internal/PlanInputs.js +78 -0
  235. package/dist/cjs/internal/PlanInputs.js.map +7 -0
  236. package/dist/cjs/internal/PlanMerges.d.ts +178 -0
  237. package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
  238. package/dist/cjs/internal/PlanMerges.js +125 -0
  239. package/dist/cjs/internal/PlanMerges.js.map +7 -0
  240. package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
  241. package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
  242. package/dist/cjs/internal/ProvenanceSlot.js +53 -0
  243. package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
  244. package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
  245. package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
  246. package/dist/cjs/internal/ResultEnvelope.js +90 -0
  247. package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
  248. package/dist/cjs/internal/RetentionOps.d.ts +414 -0
  249. package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
  250. package/dist/cjs/internal/RetentionOps.js +354 -0
  251. package/dist/cjs/internal/RetentionOps.js.map +7 -0
  252. package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
  253. package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
  254. package/dist/cjs/internal/RunCatalogOps.js +85 -0
  255. package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
  256. package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
  257. package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
  258. package/dist/cjs/internal/RunCoordinator.js +123 -0
  259. package/dist/cjs/internal/RunCoordinator.js.map +7 -0
  260. package/dist/cjs/internal/RunDriver.d.ts +192 -0
  261. package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
  262. package/dist/cjs/internal/RunDriver.js +1584 -0
  263. package/dist/cjs/internal/RunDriver.js.map +7 -0
  264. package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
  265. package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
  266. package/dist/cjs/internal/RunLifecycle.js +63 -0
  267. package/dist/cjs/internal/RunLifecycle.js.map +7 -0
  268. package/dist/cjs/internal/RunListing.d.ts +78 -0
  269. package/dist/cjs/internal/RunListing.d.ts.map +1 -0
  270. package/dist/cjs/internal/RunListing.js +171 -0
  271. package/dist/cjs/internal/RunListing.js.map +7 -0
  272. package/dist/cjs/internal/RunListingError.d.ts +35 -0
  273. package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
  274. package/dist/cjs/internal/RunListingError.js +47 -0
  275. package/dist/cjs/internal/RunListingError.js.map +7 -0
  276. package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
  277. package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
  278. package/dist/cjs/internal/RuntimeGraph.js +180 -0
  279. package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
  280. package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
  281. package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
  282. package/dist/cjs/internal/SandboxedExecution.js +104 -0
  283. package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
  284. package/dist/cjs/internal/StateTransaction.d.ts +44 -0
  285. package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
  286. package/dist/cjs/internal/StateTransaction.js +52 -0
  287. package/dist/cjs/internal/StateTransaction.js.map +7 -0
  288. package/dist/cjs/internal/StepFacts.d.ts +14 -0
  289. package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
  290. package/dist/cjs/internal/StepFacts.js +58 -0
  291. package/dist/cjs/internal/StepFacts.js.map +7 -0
  292. package/dist/cjs/internal/TypedEvents.d.ts +14 -0
  293. package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
  294. package/dist/cjs/internal/TypedEvents.js +37 -0
  295. package/dist/cjs/internal/TypedEvents.js.map +7 -0
  296. package/dist/cjs/migrations/0001_initial.d.ts +17 -0
  297. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  298. package/dist/cjs/migrations/0001_initial.js +61 -0
  299. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  300. package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
  301. package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
  302. package/dist/cjs/migrations/0002_selection_store.js +56 -0
  303. package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
  304. package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
  305. package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
  306. package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
  307. package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
  308. package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
  309. package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
  310. package/dist/cjs/migrations/0004_plan_environment.js +56 -0
  311. package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
  312. package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
  313. package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
  314. package/dist/cjs/migrations/0005_plan_merges.js +82 -0
  315. package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
  316. package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
  317. package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
  318. package/dist/cjs/migrations/0006_execution_listing.js +101 -0
  319. package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
  320. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
  321. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  322. package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
  323. package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
  324. package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
  325. package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
  326. package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
  327. package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
  328. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
  329. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  330. package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
  331. package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
  332. package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
  333. package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
  334. package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
  335. package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
  336. package/dist/cjs/package.json +1 -0
  337. package/dist/cjs/test/TestStores.d.ts +89 -0
  338. package/dist/cjs/test/TestStores.d.ts.map +1 -0
  339. package/dist/cjs/test/TestStores.js +98 -0
  340. package/dist/cjs/test/TestStores.js.map +7 -0
  341. package/dist/esm/ArtifactGc.d.ts +235 -0
  342. package/dist/esm/ArtifactGc.d.ts.map +1 -0
  343. package/dist/esm/ArtifactGc.js +268 -0
  344. package/dist/esm/ArtifactGc.js.map +1 -0
  345. package/dist/esm/ArtifactSync.d.ts +164 -0
  346. package/dist/esm/ArtifactSync.d.ts.map +1 -0
  347. package/dist/esm/ArtifactSync.js +176 -0
  348. package/dist/esm/ArtifactSync.js.map +1 -0
  349. package/dist/esm/CacheSync.d.ts +112 -0
  350. package/dist/esm/CacheSync.d.ts.map +1 -0
  351. package/dist/esm/CacheSync.js +94 -0
  352. package/dist/esm/CacheSync.js.map +1 -0
  353. package/dist/esm/DeferredClockFold.d.ts +354 -0
  354. package/dist/esm/DeferredClockFold.d.ts.map +1 -0
  355. package/dist/esm/DeferredClockFold.js +472 -0
  356. package/dist/esm/DeferredClockFold.js.map +1 -0
  357. package/dist/esm/DisasterRecovery.d.ts +431 -0
  358. package/dist/esm/DisasterRecovery.d.ts.map +1 -0
  359. package/dist/esm/DisasterRecovery.js +523 -0
  360. package/dist/esm/DisasterRecovery.js.map +1 -0
  361. package/dist/esm/DurableEngineState.d.ts +776 -0
  362. package/dist/esm/DurableEngineState.d.ts.map +1 -0
  363. package/dist/esm/DurableEngineState.js +1648 -0
  364. package/dist/esm/DurableEngineState.js.map +1 -0
  365. package/dist/esm/EngineStore.d.ts +158 -0
  366. package/dist/esm/EngineStore.d.ts.map +1 -0
  367. package/dist/esm/EngineStore.js +403 -0
  368. package/dist/esm/EngineStore.js.map +1 -0
  369. package/dist/esm/EngineStoreMetrics.d.ts +276 -0
  370. package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
  371. package/dist/esm/EngineStoreMetrics.js +260 -0
  372. package/dist/esm/EngineStoreMetrics.js.map +1 -0
  373. package/dist/esm/Errors.d.ts +22 -0
  374. package/dist/esm/Errors.d.ts.map +1 -0
  375. package/dist/esm/Errors.js +22 -0
  376. package/dist/esm/Errors.js.map +1 -0
  377. package/dist/esm/EventTypes.d.ts +27 -0
  378. package/dist/esm/EventTypes.d.ts.map +1 -0
  379. package/dist/esm/EventTypes.js +27 -0
  380. package/dist/esm/EventTypes.js.map +1 -0
  381. package/dist/esm/ExecutionFacts.d.ts +59 -0
  382. package/dist/esm/ExecutionFacts.d.ts.map +1 -0
  383. package/dist/esm/ExecutionFacts.js +96 -0
  384. package/dist/esm/ExecutionFacts.js.map +1 -0
  385. package/dist/esm/ExecutionSnapshot.d.ts +117 -0
  386. package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
  387. package/dist/esm/ExecutionSnapshot.js +95 -0
  388. package/dist/esm/ExecutionSnapshot.js.map +1 -0
  389. package/dist/esm/Inconsistency.d.ts +154 -0
  390. package/dist/esm/Inconsistency.d.ts.map +1 -0
  391. package/dist/esm/Inconsistency.js +133 -0
  392. package/dist/esm/Inconsistency.js.map +1 -0
  393. package/dist/esm/Migrations.d.ts +56 -0
  394. package/dist/esm/Migrations.d.ts.map +1 -0
  395. package/dist/esm/Migrations.js +91 -0
  396. package/dist/esm/Migrations.js.map +1 -0
  397. package/dist/esm/OwnerIdentity.d.ts +91 -0
  398. package/dist/esm/OwnerIdentity.d.ts.map +1 -0
  399. package/dist/esm/OwnerIdentity.js +99 -0
  400. package/dist/esm/OwnerIdentity.js.map +1 -0
  401. package/dist/esm/PlanInputStore.d.ts +110 -0
  402. package/dist/esm/PlanInputStore.d.ts.map +1 -0
  403. package/dist/esm/PlanInputStore.js +207 -0
  404. package/dist/esm/PlanInputStore.js.map +1 -0
  405. package/dist/esm/PlanMergeStore.d.ts +113 -0
  406. package/dist/esm/PlanMergeStore.d.ts.map +1 -0
  407. package/dist/esm/PlanMergeStore.js +244 -0
  408. package/dist/esm/PlanMergeStore.js.map +1 -0
  409. package/dist/esm/PlanScheduler.d.ts +363 -0
  410. package/dist/esm/PlanScheduler.d.ts.map +1 -0
  411. package/dist/esm/PlanScheduler.js +1321 -0
  412. package/dist/esm/PlanScheduler.js.map +1 -0
  413. package/dist/esm/Reconciliation.d.ts +175 -0
  414. package/dist/esm/Reconciliation.d.ts.map +1 -0
  415. package/dist/esm/Reconciliation.js +175 -0
  416. package/dist/esm/Reconciliation.js.map +1 -0
  417. package/dist/esm/ReplayOnly.d.ts +91 -0
  418. package/dist/esm/ReplayOnly.d.ts.map +1 -0
  419. package/dist/esm/ReplayOnly.js +59 -0
  420. package/dist/esm/ReplayOnly.js.map +1 -0
  421. package/dist/esm/Retention.d.ts +113 -0
  422. package/dist/esm/Retention.d.ts.map +1 -0
  423. package/dist/esm/Retention.js +139 -0
  424. package/dist/esm/Retention.js.map +1 -0
  425. package/dist/esm/RunCatalogRead.d.ts +17 -0
  426. package/dist/esm/RunCatalogRead.d.ts.map +1 -0
  427. package/dist/esm/RunCatalogRead.js +17 -0
  428. package/dist/esm/RunCatalogRead.js.map +1 -0
  429. package/dist/esm/RunChangeFeed.d.ts +75 -0
  430. package/dist/esm/RunChangeFeed.d.ts.map +1 -0
  431. package/dist/esm/RunChangeFeed.js +81 -0
  432. package/dist/esm/RunChangeFeed.js.map +1 -0
  433. package/dist/esm/RunState.d.ts +116 -0
  434. package/dist/esm/RunState.d.ts.map +1 -0
  435. package/dist/esm/RunState.js +109 -0
  436. package/dist/esm/RunState.js.map +1 -0
  437. package/dist/esm/Selection.d.ts +495 -0
  438. package/dist/esm/Selection.d.ts.map +1 -0
  439. package/dist/esm/Selection.js +482 -0
  440. package/dist/esm/Selection.js.map +1 -0
  441. package/dist/esm/SelectionStore.d.ts +141 -0
  442. package/dist/esm/SelectionStore.d.ts.map +1 -0
  443. package/dist/esm/SelectionStore.js +215 -0
  444. package/dist/esm/SelectionStore.js.map +1 -0
  445. package/dist/esm/StepBoundary.d.ts +501 -0
  446. package/dist/esm/StepBoundary.d.ts.map +1 -0
  447. package/dist/esm/StepBoundary.js +919 -0
  448. package/dist/esm/StepBoundary.js.map +1 -0
  449. package/dist/esm/StepCacheFold.d.ts +148 -0
  450. package/dist/esm/StepCacheFold.d.ts.map +1 -0
  451. package/dist/esm/StepCacheFold.js +201 -0
  452. package/dist/esm/StepCacheFold.js.map +1 -0
  453. package/dist/esm/StepSandbox.d.ts +78 -0
  454. package/dist/esm/StepSandbox.d.ts.map +1 -0
  455. package/dist/esm/StepSandbox.js +70 -0
  456. package/dist/esm/StepSandbox.js.map +1 -0
  457. package/dist/esm/WakeBus.d.ts +116 -0
  458. package/dist/esm/WakeBus.d.ts.map +1 -0
  459. package/dist/esm/WakeBus.js +121 -0
  460. package/dist/esm/WakeBus.js.map +1 -0
  461. package/dist/esm/WorkspaceSandbox.d.ts +619 -0
  462. package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
  463. package/dist/esm/WorkspaceSandbox.js +985 -0
  464. package/dist/esm/WorkspaceSandbox.js.map +1 -0
  465. package/dist/esm/index.d.ts +157 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +157 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/internal/ActionPersistence.d.ts +276 -0
  470. package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
  471. package/dist/esm/internal/ActionPersistence.js +2306 -0
  472. package/dist/esm/internal/ActionPersistence.js.map +1 -0
  473. package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
  474. package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
  475. package/dist/esm/internal/ArtifactRoots.js +76 -0
  476. package/dist/esm/internal/ArtifactRoots.js.map +1 -0
  477. package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
  478. package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
  479. package/dist/esm/internal/AttemptAdmission.js +52 -0
  480. package/dist/esm/internal/AttemptAdmission.js.map +1 -0
  481. package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
  482. package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
  483. package/dist/esm/internal/AttemptLifecycle.js +104 -0
  484. package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
  485. package/dist/esm/internal/AttemptProbe.d.ts +53 -0
  486. package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
  487. package/dist/esm/internal/AttemptProbe.js +83 -0
  488. package/dist/esm/internal/AttemptProbe.js.map +1 -0
  489. package/dist/esm/internal/CacheAdmission.d.ts +79 -0
  490. package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
  491. package/dist/esm/internal/CacheAdmission.js +72 -0
  492. package/dist/esm/internal/CacheAdmission.js.map +1 -0
  493. package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
  494. package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
  495. package/dist/esm/internal/CacheAgeHistory.js +49 -0
  496. package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
  497. package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
  498. package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
  499. package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
  500. package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
  501. package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
  502. package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
  503. package/dist/esm/internal/CacheOutputPolicy.js +73 -0
  504. package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
  505. package/dist/esm/internal/CachePublication.d.ts +97 -0
  506. package/dist/esm/internal/CachePublication.d.ts.map +1 -0
  507. package/dist/esm/internal/CachePublication.js +116 -0
  508. package/dist/esm/internal/CachePublication.js.map +1 -0
  509. package/dist/esm/internal/CallFacts.d.ts +15 -0
  510. package/dist/esm/internal/CallFacts.d.ts.map +1 -0
  511. package/dist/esm/internal/CallFacts.js +83 -0
  512. package/dist/esm/internal/CallFacts.js.map +1 -0
  513. package/dist/esm/internal/CopiedRecord.d.ts +61 -0
  514. package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
  515. package/dist/esm/internal/CopiedRecord.js +165 -0
  516. package/dist/esm/internal/CopiedRecord.js.map +1 -0
  517. package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
  518. package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
  519. package/dist/esm/internal/DeferredPersistence.js +240 -0
  520. package/dist/esm/internal/DeferredPersistence.js.map +1 -0
  521. package/dist/esm/internal/EffectRecords.d.ts +92 -0
  522. package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
  523. package/dist/esm/internal/EffectRecords.js +94 -0
  524. package/dist/esm/internal/EffectRecords.js.map +1 -0
  525. package/dist/esm/internal/EngineJj.d.ts +30 -0
  526. package/dist/esm/internal/EngineJj.d.ts.map +1 -0
  527. package/dist/esm/internal/EngineJj.js +29 -0
  528. package/dist/esm/internal/EngineJj.js.map +1 -0
  529. package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
  530. package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
  531. package/dist/esm/internal/EngineStateSchema.js +53 -0
  532. package/dist/esm/internal/EngineStateSchema.js.map +1 -0
  533. package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
  534. package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  535. package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
  536. package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
  537. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
  538. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  539. package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
  540. package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
  541. package/dist/esm/internal/ExitEncoding.d.ts +180 -0
  542. package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
  543. package/dist/esm/internal/ExitEncoding.js +361 -0
  544. package/dist/esm/internal/ExitEncoding.js.map +1 -0
  545. package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
  546. package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
  547. package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
  548. package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
  549. package/dist/esm/internal/FileEnumeration.d.ts +127 -0
  550. package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
  551. package/dist/esm/internal/FileEnumeration.js +236 -0
  552. package/dist/esm/internal/FileEnumeration.js.map +1 -0
  553. package/dist/esm/internal/HostReflection.d.ts +80 -0
  554. package/dist/esm/internal/HostReflection.d.ts.map +1 -0
  555. package/dist/esm/internal/HostReflection.js +98 -0
  556. package/dist/esm/internal/HostReflection.js.map +1 -0
  557. package/dist/esm/internal/JournalRecords.d.ts +325 -0
  558. package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
  559. package/dist/esm/internal/JournalRecords.js +306 -0
  560. package/dist/esm/internal/JournalRecords.js.map +1 -0
  561. package/dist/esm/internal/NodeJournal.d.ts +157 -0
  562. package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
  563. package/dist/esm/internal/NodeJournal.js +298 -0
  564. package/dist/esm/internal/NodeJournal.js.map +1 -0
  565. package/dist/esm/internal/Ordering.d.ts +14 -0
  566. package/dist/esm/internal/Ordering.d.ts.map +1 -0
  567. package/dist/esm/internal/Ordering.js +14 -0
  568. package/dist/esm/internal/Ordering.js.map +1 -0
  569. package/dist/esm/internal/PlanInputs.d.ts +14 -0
  570. package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
  571. package/dist/esm/internal/PlanInputs.js +57 -0
  572. package/dist/esm/internal/PlanInputs.js.map +1 -0
  573. package/dist/esm/internal/PlanMerges.d.ts +178 -0
  574. package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
  575. package/dist/esm/internal/PlanMerges.js +113 -0
  576. package/dist/esm/internal/PlanMerges.js.map +1 -0
  577. package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
  578. package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
  579. package/dist/esm/internal/ProvenanceSlot.js +39 -0
  580. package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
  581. package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
  582. package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
  583. package/dist/esm/internal/ResultEnvelope.js +83 -0
  584. package/dist/esm/internal/ResultEnvelope.js.map +1 -0
  585. package/dist/esm/internal/RetentionOps.d.ts +414 -0
  586. package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
  587. package/dist/esm/internal/RetentionOps.js +576 -0
  588. package/dist/esm/internal/RetentionOps.js.map +1 -0
  589. package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
  590. package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
  591. package/dist/esm/internal/RunCatalogOps.js +120 -0
  592. package/dist/esm/internal/RunCatalogOps.js.map +1 -0
  593. package/dist/esm/internal/RunCoordinator.d.ts +78 -0
  594. package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
  595. package/dist/esm/internal/RunCoordinator.js +115 -0
  596. package/dist/esm/internal/RunCoordinator.js.map +1 -0
  597. package/dist/esm/internal/RunDriver.d.ts +192 -0
  598. package/dist/esm/internal/RunDriver.d.ts.map +1 -0
  599. package/dist/esm/internal/RunDriver.js +2334 -0
  600. package/dist/esm/internal/RunDriver.js.map +1 -0
  601. package/dist/esm/internal/RunLifecycle.d.ts +22 -0
  602. package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
  603. package/dist/esm/internal/RunLifecycle.js +49 -0
  604. package/dist/esm/internal/RunLifecycle.js.map +1 -0
  605. package/dist/esm/internal/RunListing.d.ts +78 -0
  606. package/dist/esm/internal/RunListing.d.ts.map +1 -0
  607. package/dist/esm/internal/RunListing.js +146 -0
  608. package/dist/esm/internal/RunListing.js.map +1 -0
  609. package/dist/esm/internal/RunListingError.d.ts +35 -0
  610. package/dist/esm/internal/RunListingError.d.ts.map +1 -0
  611. package/dist/esm/internal/RunListingError.js +27 -0
  612. package/dist/esm/internal/RunListingError.js.map +1 -0
  613. package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
  614. package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
  615. package/dist/esm/internal/RuntimeGraph.js +182 -0
  616. package/dist/esm/internal/RuntimeGraph.js.map +1 -0
  617. package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
  618. package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
  619. package/dist/esm/internal/SandboxedExecution.js +107 -0
  620. package/dist/esm/internal/SandboxedExecution.js.map +1 -0
  621. package/dist/esm/internal/StateTransaction.d.ts +44 -0
  622. package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
  623. package/dist/esm/internal/StateTransaction.js +54 -0
  624. package/dist/esm/internal/StateTransaction.js.map +1 -0
  625. package/dist/esm/internal/StepFacts.d.ts +14 -0
  626. package/dist/esm/internal/StepFacts.d.ts.map +1 -0
  627. package/dist/esm/internal/StepFacts.js +35 -0
  628. package/dist/esm/internal/StepFacts.js.map +1 -0
  629. package/dist/esm/internal/TypedEvents.d.ts +14 -0
  630. package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
  631. package/dist/esm/internal/TypedEvents.js +14 -0
  632. package/dist/esm/internal/TypedEvents.js.map +1 -0
  633. package/dist/esm/migrations/0001_initial.d.ts +17 -0
  634. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  635. package/dist/esm/migrations/0001_initial.js +41 -0
  636. package/dist/esm/migrations/0001_initial.js.map +1 -0
  637. package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
  638. package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
  639. package/dist/esm/migrations/0002_selection_store.js +34 -0
  640. package/dist/esm/migrations/0002_selection_store.js.map +1 -0
  641. package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
  642. package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
  643. package/dist/esm/migrations/0003_plan_inputs.js +70 -0
  644. package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
  645. package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
  646. package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
  647. package/dist/esm/migrations/0004_plan_environment.js +33 -0
  648. package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
  649. package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
  650. package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
  651. package/dist/esm/migrations/0005_plan_merges.js +59 -0
  652. package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
  653. package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
  654. package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
  655. package/dist/esm/migrations/0006_execution_listing.js +81 -0
  656. package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
  657. package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
  658. package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  659. package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
  660. package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
  661. package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
  662. package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
  663. package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
  664. package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
  665. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
  666. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  667. package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
  668. package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
  669. package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
  670. package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
  671. package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
  672. package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
  673. package/dist/esm/test/TestStores.d.ts +89 -0
  674. package/dist/esm/test/TestStores.d.ts.map +1 -0
  675. package/dist/esm/test/TestStores.js +103 -0
  676. package/dist/esm/test/TestStores.js.map +1 -0
  677. package/docs/README.md +113 -0
  678. package/docs/api.md +1494 -0
  679. package/docs/concepts/attempts-and-replay.md +149 -0
  680. package/docs/concepts/cache-admission.md +265 -0
  681. package/docs/concepts/call-facts.md +86 -0
  682. package/docs/concepts/durable-waits.md +175 -0
  683. package/docs/concepts/execution-facts.md +90 -0
  684. package/docs/concepts/ownership-and-fencing.md +128 -0
  685. package/docs/concepts/step-boundaries.md +148 -0
  686. package/docs/concepts/workspace-transactions.md +199 -0
  687. package/docs/event-types.md +14 -0
  688. package/docs/guides/back-up-and-restore.md +164 -0
  689. package/docs/guides/collect-unreferenced-artifacts.md +128 -0
  690. package/docs/guides/compose-a-durable-engine.md +146 -0
  691. package/docs/guides/coordinate-two-processes.md +120 -0
  692. package/docs/guides/defer-work-with-selection.md +171 -0
  693. package/docs/guides/delete-old-run-history.md +154 -0
  694. package/docs/guides/drive-a-plan.md +314 -0
  695. package/docs/guides/observe-engine-metrics.md +98 -0
  696. package/docs/guides/observe-executions.md +187 -0
  697. package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
  698. package/docs/guides/share-a-cache-across-machines.md +134 -0
  699. package/docs/guides/testing.md +123 -0
  700. package/docs/installation.md +102 -0
  701. package/docs/quickstart.md +215 -0
  702. package/docs/troubleshooting.md +347 -0
  703. package/package.json +438 -3
  704. package/src/ArtifactGc.ts +408 -0
  705. package/src/ArtifactSync.ts +278 -0
  706. package/src/CacheSync.ts +131 -0
  707. package/src/DeferredClockFold.ts +586 -0
  708. package/src/DisasterRecovery.ts +888 -0
  709. package/src/DurableEngineState.ts +2656 -0
  710. package/src/EngineStore.ts +656 -0
  711. package/src/EngineStoreMetrics.ts +331 -0
  712. package/src/Errors.ts +28 -0
  713. package/src/EventTypes.ts +27 -0
  714. package/src/ExecutionFacts.ts +125 -0
  715. package/src/ExecutionSnapshot.ts +186 -0
  716. package/src/Inconsistency.ts +253 -0
  717. package/src/Migrations.ts +95 -0
  718. package/src/OwnerIdentity.ts +125 -0
  719. package/src/PlanInputStore.ts +292 -0
  720. package/src/PlanMergeStore.ts +330 -0
  721. package/src/PlanScheduler.ts +1806 -0
  722. package/src/Reconciliation.ts +224 -0
  723. package/src/ReplayOnly.ts +95 -0
  724. package/src/Retention.ts +214 -0
  725. package/src/RunCatalogRead.ts +27 -0
  726. package/src/RunChangeFeed.ts +125 -0
  727. package/src/RunState.ts +137 -0
  728. package/src/Selection.ts +683 -0
  729. package/src/SelectionStore.ts +353 -0
  730. package/src/StepBoundary.ts +1165 -0
  731. package/src/StepCacheFold.ts +244 -0
  732. package/src/StepSandbox.ts +110 -0
  733. package/src/WakeBus.ts +167 -0
  734. package/src/WorkspaceSandbox.ts +1604 -0
  735. package/src/index.ts +185 -0
  736. package/src/internal/ActionPersistence.ts +2687 -0
  737. package/src/internal/ArtifactRoots.ts +92 -0
  738. package/src/internal/AttemptAdmission.ts +76 -0
  739. package/src/internal/AttemptLifecycle.ts +163 -0
  740. package/src/internal/AttemptProbe.ts +90 -0
  741. package/src/internal/CacheAdmission.ts +133 -0
  742. package/src/internal/CacheAgeHistory.ts +58 -0
  743. package/src/internal/CacheAgeVerdicts.ts +61 -0
  744. package/src/internal/CacheOutputPolicy.ts +82 -0
  745. package/src/internal/CachePublication.ts +153 -0
  746. package/src/internal/CallFacts.ts +87 -0
  747. package/src/internal/CopiedRecord.ts +201 -0
  748. package/src/internal/DeferredPersistence.ts +459 -0
  749. package/src/internal/EffectRecords.ts +136 -0
  750. package/src/internal/EngineJj.ts +30 -0
  751. package/src/internal/EngineStateSchema.ts +92 -0
  752. package/src/internal/ExecutionSnapshotRead.ts +298 -0
  753. package/src/internal/ExecutionSnapshotRelations.ts +121 -0
  754. package/src/internal/ExitEncoding.ts +453 -0
  755. package/src/internal/FileBoundarySnapshot.ts +39 -0
  756. package/src/internal/FileEnumeration.ts +334 -0
  757. package/src/internal/HostReflection.ts +128 -0
  758. package/src/internal/JournalRecords.ts +396 -0
  759. package/src/internal/NodeJournal.ts +340 -0
  760. package/src/internal/Ordering.ts +14 -0
  761. package/src/internal/PlanInputs.ts +62 -0
  762. package/src/internal/PlanMerges.ts +123 -0
  763. package/src/internal/ProvenanceSlot.ts +52 -0
  764. package/src/internal/ResultEnvelope.ts +118 -0
  765. package/src/internal/RetentionOps.ts +865 -0
  766. package/src/internal/RunCatalogOps.ts +174 -0
  767. package/src/internal/RunCoordinator.ts +215 -0
  768. package/src/internal/RunDriver.ts +3152 -0
  769. package/src/internal/RunLifecycle.ts +53 -0
  770. package/src/internal/RunListing.ts +210 -0
  771. package/src/internal/RunListingError.ts +37 -0
  772. package/src/internal/RuntimeGraph.ts +253 -0
  773. package/src/internal/SandboxedExecution.ts +165 -0
  774. package/src/internal/StateTransaction.ts +71 -0
  775. package/src/internal/StepFacts.ts +36 -0
  776. package/src/internal/TypedEvents.ts +29 -0
  777. package/src/migrations/0001_initial.ts +51 -0
  778. package/src/migrations/0002_selection_store.ts +38 -0
  779. package/src/migrations/0003_plan_inputs.ts +75 -0
  780. package/src/migrations/0004_plan_environment.ts +34 -0
  781. package/src/migrations/0005_plan_merges.ts +60 -0
  782. package/src/migrations/0006_execution_listing.ts +86 -0
  783. package/src/migrations/0007_run_parent_sequence.ts +19 -0
  784. package/src/migrations/0008_deferred_consumption.ts +27 -0
  785. package/src/migrations/0009_deferred_clock_facts.ts +163 -0
  786. package/src/migrations/0010_pending_cancellation.ts +20 -0
  787. package/src/test/TestStores.ts +145 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Receiver for detected engine inconsistencies.
3
+ *
4
+ * Modeled on Skyframe's `GraphInconsistencyReceiver`: the store layer detects
5
+ * an invariant violation — today, a content-addressed cache key that produced
6
+ * a different result than the recorded row — and this service decides whether
7
+ * the run fails or tolerates it. Either way the conflict is journaled, so the
8
+ * detector is never wired to /dev/null.
9
+ *
10
+ * The `note` signature deliberately matches the plugin spec's
11
+ * `cacheInconsistency` hook (`(event) => Effect<InconsistencyVerdict>`); the
12
+ * strict layer is the future default plugin.
13
+ *
14
+ * The core default is strict so an invariant violation cannot pass silently.
15
+ *
16
+ * Governing designs: `docs/concepts/attempts-and-replay.md` and
17
+ * `apps/site/src/content/docs/docs/concepts/flows-actions-plans.mdx`.
18
+ *
19
+ * @since 0.1.0
20
+ */
21
+ import { FlowEngine } from "@smthrs/engine";
22
+ import { Journal } from "@smthrs/journal";
23
+ import * as Context from "effect/Context";
24
+ import * as Effect from "effect/Effect";
25
+ import * as Layer from "effect/Layer";
26
+ import * as JournalRecords from "./internal/JournalRecords.js";
27
+ /**
28
+ * Service tag for the engine inconsistency receiver.
29
+ *
30
+ * @category services
31
+ * @since 0.1.0
32
+ */
33
+ export class Inconsistency extends Context.Service()("@smthrs/engine-store/Inconsistency") {
34
+ }
35
+ /**
36
+ * Builds a receiver that journals every conflict under the run that attempted
37
+ * the write and returns a fixed verdict.
38
+ *
39
+ * The record goes through the journal's durable channel: a cache conflict is
40
+ * hermeticity evidence, and a `tolerate` verdict that silently dropped its
41
+ * only record would wire the detector to /dev/null (issue #10).
42
+ *
43
+ * @category constructors
44
+ * @since 0.1.0
45
+ */
46
+ export const make = (options) => ({
47
+ note: Effect.fn("Inconsistency.note")((event) => Effect.as(options.journal.emitDurable(JournalRecords.cacheConflict({
48
+ runId: event.attempted.recordedRunId,
49
+ sourceId: "flows/engine-store/inconsistency",
50
+ lineageId: FlowEngine.Lineage.root(event.attempted.recordedRunId)
51
+ }, {
52
+ // `@smthrs/journal` redacts the credential word `key`. A durable
53
+ // content identity must use the specific, non-credential name.
54
+ cacheKey: event.key,
55
+ verdict: options.verdict,
56
+ existing: event.existing === undefined ? null : {
57
+ recordedRunId: event.existing.recordedRunId,
58
+ recordedEventSeq: event.existing.recordedEventSeq,
59
+ createdAtMs: event.existing.createdAtMs
60
+ },
61
+ attempted: {
62
+ recordedRunId: event.attempted.recordedRunId,
63
+ recordedEventSeq: event.attempted.recordedEventSeq,
64
+ createdAtMs: event.attempted.createdAtMs
65
+ }
66
+ }), options.owner), options.verdict)),
67
+ noteCorruption: Effect.fn("Inconsistency.noteCorruption")((event) => Effect.as(options.journal.emitDurable(JournalRecords.cacheCorruption({
68
+ runId: event.runId,
69
+ lineageId: FlowEngine.Lineage.root(event.runId),
70
+ // The producer identity is the corruption evidence plus the
71
+ // recorded row generation (issues #156, #172): a caller
72
+ // re-observing the same corrupt row re-emits an exact producer
73
+ // duplicate the journal collapses, while an identically corrupt
74
+ // row recorded after eviction and healing has new provenance and
75
+ // lands as a distinct incident. Attempt-row evidence has no cache
76
+ // provenance, so its explicit local markers retain same-row
77
+ // convergence. A record already landed by another lineage under
78
+ // this identity surfaces as an idempotency conflict; either way
79
+ // evidence for that row generation exists exactly once.
80
+ sourceId: `flows/engine-store/inconsistency:corruption:${event.keyDigest}:${event.path}:${event.recordedDigest}:${event.measuredDigest}:${event.recordedRunId ?? "local"}:${event.recordedEventSeq ?? "local"}`,
81
+ sourceSeq: 0
82
+ }, {
83
+ keyDigest: event.keyDigest,
84
+ verdict: options.verdict,
85
+ path: event.path,
86
+ recordedDigest: event.recordedDigest,
87
+ measuredDigest: event.measuredDigest,
88
+ recordedRunId: event.recordedRunId ?? null,
89
+ recordedEventSeq: event.recordedEventSeq ?? null
90
+ }), options.owner).pipe(Effect.catch((error) => error.code === "idempotency_conflict" ? Effect.succeed(undefined) : Effect.fail(error))), options.verdict))
91
+ });
92
+ /**
93
+ * Builds a receiver from overrides. The default notes nothing and tolerates.
94
+ *
95
+ * @category constructors
96
+ * @since 0.1.0
97
+ */
98
+ export const makeNoop = (overrides = {}) => ({
99
+ note: Effect.fn("Inconsistency.note")(() => Effect.succeed("tolerate")),
100
+ noteCorruption: Effect.fn("Inconsistency.noteCorruption")(() => Effect.succeed("tolerate")),
101
+ ...overrides
102
+ });
103
+ /**
104
+ * Provides a receiver that never journals and always tolerates.
105
+ *
106
+ * @category layers
107
+ * @since 0.1.0
108
+ */
109
+ export const layerNoop = (overrides = {}) => Layer.succeed(Inconsistency)(makeNoop(overrides));
110
+ /**
111
+ * Journals every cache conflict and fails the run. This is the default
112
+ * receiver for engine wiring: a non-hermetic sealed hard-boundary action is
113
+ * a defect, not a condition to paper over.
114
+ *
115
+ * @category layers
116
+ * @since 0.1.0
117
+ */
118
+ export const layerStrict = (owner) => Layer.effect(Inconsistency)(Effect.gen(function* () {
119
+ const journal = yield* Journal.Journal;
120
+ return make({ journal, verdict: "fail", owner });
121
+ }));
122
+ /**
123
+ * Journals every cache conflict and continues, preserving the first-recorded
124
+ * row (Skyframe's tolerant production configuration).
125
+ *
126
+ * @category layers
127
+ * @since 0.1.0
128
+ */
129
+ export const layerTolerant = (owner) => Layer.effect(Inconsistency)(Effect.gen(function* () {
130
+ const journal = yield* Journal.Journal;
131
+ return make({ journal, verdict: "tolerate", owner });
132
+ }));
133
+ //# sourceMappingURL=Inconsistency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inconsistency.js","sourceRoot":"","sources":["../../src/Inconsistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAgE9D;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAA0B,CAAC,oCAAoC,CAAC;CAAG;AAmBrH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAoB,EAAW,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,OAAO,CAAC,WAAW,CACzB,cAAc,CAAC,aAAa,CAC1B;QACE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;QACpC,QAAQ,EAAE,kCAAkC;QAC5C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;KAClE,EACD;QACE,iEAAiE;QACjE,+DAA+D;QAC/D,QAAQ,EAAE,KAAK,CAAC,GAAG;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;YAC3C,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB;YACjD,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;SACxC;QACD,SAAS,EAAE;YACT,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;YAC5C,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB;YAClD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;SACzC;KACF,CACF,EACD,OAAO,CAAC,KAAK,CACd,EACD,OAAO,CAAC,OAAO,CAChB,CACF;IACD,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAClE,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,OAAO,CAAC,WAAW,CACzB,cAAc,CAAC,eAAe,CAC5B;QACE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/C,4DAA4D;QAC5D,wDAAwD;QACxD,+DAA+D;QAC/D,gEAAgE;QAChE,iEAAiE;QACjE,kEAAkE;QAClE,4DAA4D;QAC5D,gEAAgE;QAChE,gEAAgE;QAChE,wDAAwD;QACxD,QAAQ,EACN,+CAA+C,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,IAC1H,KAAK,CAAC,aAAa,IAAI,OACzB,IAAI,KAAK,CAAC,gBAAgB,IAAI,OAAO,EAAE;QACzC,SAAS,EAAE,CAAC;KACb,EACD;QACE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;QAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;KACjD,CACF,EACD,OAAO,CAAC,KAAK,CACd,CAAC,IAAI,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAChH,EACD,OAAO,CAAC,OAAO,CAChB,CACF;CACF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,YAA8B,EAAE,EAAW,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAmB,CAAC,CAAC;IAChF,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAmB,CAAC,CAAC;IACpG,GAAG,SAAS;CACb,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,YAA8B,EAAE,EAA8B,EAAE,CACxF,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAsD,EAAE,CAC1G,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACtC,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CACH,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAwB,EAAsD,EAAE,CAC5G,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACtC,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;AACtD,CAAC,CAAC,CACH,CAAA","sourcesContent":["/**\n * Receiver for detected engine inconsistencies.\n *\n * Modeled on Skyframe's `GraphInconsistencyReceiver`: the store layer detects\n * an invariant violation — today, a content-addressed cache key that produced\n * a different result than the recorded row — and this service decides whether\n * the run fails or tolerates it. Either way the conflict is journaled, so the\n * detector is never wired to /dev/null.\n *\n * The `note` signature deliberately matches the plugin spec's\n * `cacheInconsistency` hook (`(event) => Effect<InconsistencyVerdict>`); the\n * strict layer is the future default plugin.\n *\n * The core default is strict so an invariant violation cannot pass silently.\n *\n * Governing designs: `docs/concepts/attempts-and-replay.md` and\n * `apps/site/src/content/docs/docs/concepts/flows-actions-plans.mdx`.\n *\n * @since 0.1.0\n */\n\nimport { FlowEngine } from \"@smthrs/engine\"\nimport { Journal } from \"@smthrs/journal\"\nimport type { Ownership } from \"@smthrs/run-store\"\nimport type { CacheStore } from \"@smthrs/step-cache\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as JournalRecords from \"./internal/JournalRecords.ts\"\n\n/**\n * Decision returned by an inconsistency receiver.\n *\n * @category models\n * @since 0.1.0\n */\nexport type InconsistencyVerdict = \"fail\" | \"tolerate\"\n\n/**\n * A content-addressed cache key that produced a result different from the\n * recorded row — a hermeticity/determinism violation.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface CacheConflict {\n readonly key: string\n readonly existing: CacheStore.CacheEntry | undefined\n readonly attempted: CacheStore.CacheEntry\n}\n\n/**\n * Recorded boundary evidence whose blob no longer hashes to its recorded\n * digest — on-disk corruption of the content-addressed store, detected while\n * replaying a verified cache hit or a succeeded attempt (issue #150).\n * Distinct from a transient host failure, which merely refuses the replay\n * and stays retryable.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface BlobCorruption {\n /** The run that observed the corruption; the journaling target. */\n readonly runId: string\n readonly keyDigest: string\n readonly path: string\n readonly recordedDigest: string\n readonly measuredDigest: string\n /**\n * Provenance of the corrupt evidence when it came from a shared cache row;\n * absent when it came from this run's own succeeded attempt row.\n */\n readonly recordedRunId?: string | undefined\n readonly recordedEventSeq?: number | undefined\n}\n\n/**\n * Inconsistency receiver operations.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n readonly note: (event: CacheConflict) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>\n /**\n * Observes on-disk corruption of recorded boundary evidence (issue #150).\n * `\"fail\"` fails the dispatch; `\"tolerate\"` lets it fall back to a real\n * execution (which re-captures and heals the corrupt address).\n */\n readonly noteCorruption: (event: BlobCorruption) => Effect.Effect<InconsistencyVerdict, Journal.JournalError>\n}\n\n/**\n * Service tag for the engine inconsistency receiver.\n *\n * @category services\n * @since 0.1.0\n */\nexport class Inconsistency extends Context.Service<Inconsistency, Service>()(\"@smthrs/engine-store/Inconsistency\") {}\n\n/**\n * Options for constructing a journaling inconsistency receiver.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface MakeOptions {\n readonly journal: Journal.Service\n readonly verdict: InconsistencyVerdict\n /**\n * The owner the conflict record is fenced to: a reclaimed run cannot append\n * hermeticity evidence it no longer owns. Required — every composer of this\n * receiver is a run's owner.\n */\n readonly owner: Ownership.OwnerId\n}\n\n/**\n * Builds a receiver that journals every conflict under the run that attempted\n * the write and returns a fixed verdict.\n *\n * The record goes through the journal's durable channel: a cache conflict is\n * hermeticity evidence, and a `tolerate` verdict that silently dropped its\n * only record would wire the detector to /dev/null (issue #10).\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make = (options: MakeOptions): Service => ({\n note: Effect.fn(\"Inconsistency.note\")((event) =>\n Effect.as(\n options.journal.emitDurable(\n JournalRecords.cacheConflict(\n {\n runId: event.attempted.recordedRunId,\n sourceId: \"flows/engine-store/inconsistency\",\n lineageId: FlowEngine.Lineage.root(event.attempted.recordedRunId)\n },\n {\n // `@smthrs/journal` redacts the credential word `key`. A durable\n // content identity must use the specific, non-credential name.\n cacheKey: event.key,\n verdict: options.verdict,\n existing: event.existing === undefined ? null : {\n recordedRunId: event.existing.recordedRunId,\n recordedEventSeq: event.existing.recordedEventSeq,\n createdAtMs: event.existing.createdAtMs\n },\n attempted: {\n recordedRunId: event.attempted.recordedRunId,\n recordedEventSeq: event.attempted.recordedEventSeq,\n createdAtMs: event.attempted.createdAtMs\n }\n }\n ),\n options.owner\n ),\n options.verdict\n )\n ),\n noteCorruption: Effect.fn(\"Inconsistency.noteCorruption\")((event) =>\n Effect.as(\n options.journal.emitDurable(\n JournalRecords.cacheCorruption(\n {\n runId: event.runId,\n lineageId: FlowEngine.Lineage.root(event.runId),\n // The producer identity is the corruption evidence plus the\n // recorded row generation (issues #156, #172): a caller\n // re-observing the same corrupt row re-emits an exact producer\n // duplicate the journal collapses, while an identically corrupt\n // row recorded after eviction and healing has new provenance and\n // lands as a distinct incident. Attempt-row evidence has no cache\n // provenance, so its explicit local markers retain same-row\n // convergence. A record already landed by another lineage under\n // this identity surfaces as an idempotency conflict; either way\n // evidence for that row generation exists exactly once.\n sourceId:\n `flows/engine-store/inconsistency:corruption:${event.keyDigest}:${event.path}:${event.recordedDigest}:${event.measuredDigest}:${\n event.recordedRunId ?? \"local\"\n }:${event.recordedEventSeq ?? \"local\"}`,\n sourceSeq: 0\n },\n {\n keyDigest: event.keyDigest,\n verdict: options.verdict,\n path: event.path,\n recordedDigest: event.recordedDigest,\n measuredDigest: event.measuredDigest,\n recordedRunId: event.recordedRunId ?? null,\n recordedEventSeq: event.recordedEventSeq ?? null\n }\n ),\n options.owner\n ).pipe(\n Effect.catch((error) => error.code === \"idempotency_conflict\" ? Effect.succeed(undefined) : Effect.fail(error))\n ),\n options.verdict\n )\n )\n})\n\n/**\n * Builds a receiver from overrides. The default notes nothing and tolerates.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeNoop = (overrides: Partial<Service> = {}): Service => ({\n note: Effect.fn(\"Inconsistency.note\")(() => Effect.succeed(\"tolerate\" as const)),\n noteCorruption: Effect.fn(\"Inconsistency.noteCorruption\")(() => Effect.succeed(\"tolerate\" as const)),\n ...overrides\n})\n\n/**\n * Provides a receiver that never journals and always tolerates.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerNoop = (overrides: Partial<Service> = {}): Layer.Layer<Inconsistency> =>\n Layer.succeed(Inconsistency)(makeNoop(overrides))\n\n/**\n * Journals every cache conflict and fails the run. This is the default\n * receiver for engine wiring: a non-hermetic sealed hard-boundary action is\n * a defect, not a condition to paper over.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerStrict = (owner: Ownership.OwnerId): Layer.Layer<Inconsistency, never, Journal.Journal> =>\n Layer.effect(Inconsistency)(\n Effect.gen(function*() {\n const journal = yield* Journal.Journal\n return make({ journal, verdict: \"fail\", owner })\n })\n )\n\n/**\n * Journals every cache conflict and continues, preserving the first-recorded\n * row (Skyframe's tolerant production configuration).\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerTolerant = (owner: Ownership.OwnerId): Layer.Layer<Inconsistency, never, Journal.Journal> =>\n Layer.effect(Inconsistency)(\n Effect.gen(function*() {\n const journal = yield* Journal.Journal\n return make({ journal, verdict: \"tolerate\", owner })\n })\n )\n"]}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Durable engine schema migrations.
3
+ *
4
+ * Engine-store owns persisted deferred/clock state, execution selections,
5
+ * and append-only plan-input observations. These are authoritative execution
6
+ * records, distinct from journal projections and evictable step-cache rows.
7
+ * It reserves migration id block `3000`.
8
+ *
9
+ * Because engine-store composes the journal, the run store, and the step
10
+ * cache, {@link sets} is also the full durable schema an engine needs, and
11
+ * {@link layer} installs it in dependency order.
12
+ *
13
+ * Derived contracts: `docs/api.md` ("Migrations") and
14
+ * `packages/smithers/flows/journal/docs/api.md`.
15
+ *
16
+ * @since 0.1.0
17
+ */
18
+ import * as DatabaseMigrations from "@smthrs/database/Migrations";
19
+ import * as Layer from "effect/Layer";
20
+ /**
21
+ * Engine-store's own namespaced migration set.
22
+ *
23
+ * @category migrations
24
+ * @since 0.1.0
25
+ */
26
+ export declare const set: DatabaseMigrations.MigrationSet;
27
+ /**
28
+ * Every migration set a durable engine needs, in dependency order: journal
29
+ * events, run and attempt state, the step cache, the engine's own deferred and
30
+ * clock, selection, and input tables, then the persisted plan.
31
+ *
32
+ * The plan set has the highest id block (`4000`). The database loader applies
33
+ * forward additions within already installed blocks transactionally before
34
+ * the ordinary migration pass (for example, engine-store `3003` after plan
35
+ * `4003`). Earlier holes and entirely new lower blocks remain refusals.
36
+ *
37
+ * @category migrations
38
+ * @since 0.1.0
39
+ */
40
+ export declare const sets: ReadonlyArray<DatabaseMigrations.MigrationSet>;
41
+ /**
42
+ * Creates the complete durable engine schema.
43
+ *
44
+ * @category migrations
45
+ * @since 0.1.0
46
+ */
47
+ export declare const run: import("effect/Effect").Effect<readonly (readonly [id: number, name: string])[], import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, import("effect/unstable/sql/SqlClient").SqlClient>;
48
+ /**
49
+ * Layer that installs the complete durable engine schema before exposing the
50
+ * database to any durable service.
51
+ *
52
+ * @category layers
53
+ * @since 0.1.0
54
+ */
55
+ export declare const layer: Layer.Layer<never, import("effect/unstable/sql/SqlError").SqlError | import("effect/unstable/sql/Migrator").MigrationError, import("effect/unstable/sql/SqlClient").SqlClient>;
56
+ //# sourceMappingURL=Migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migrations.d.ts","sourceRoot":"","sources":["../../src/Migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AAKjE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAYrC;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,kBAAkB,CAAC,YAepC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAM/D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,GAAG,8OAA+B,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,gLAA2B,CAAA"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Durable engine schema migrations.
3
+ *
4
+ * Engine-store owns persisted deferred/clock state, execution selections,
5
+ * and append-only plan-input observations. These are authoritative execution
6
+ * records, distinct from journal projections and evictable step-cache rows.
7
+ * It reserves migration id block `3000`.
8
+ *
9
+ * Because engine-store composes the journal, the run store, and the step
10
+ * cache, {@link sets} is also the full durable schema an engine needs, and
11
+ * {@link layer} installs it in dependency order.
12
+ *
13
+ * Derived contracts: `docs/api.md` ("Migrations") and
14
+ * `packages/smithers/flows/journal/docs/api.md`.
15
+ *
16
+ * @since 0.1.0
17
+ */
18
+ import * as DatabaseMigrations from "@smthrs/database/Migrations";
19
+ import * as JournalMigrations from "@smthrs/journal/Migrations";
20
+ import * as PlanMigrations from "@smthrs/plan-store/Migrations";
21
+ import * as RunStoreMigrations from "@smthrs/run-store/Migrations";
22
+ import * as StepCacheMigrations from "@smthrs/step-cache/Migrations";
23
+ import * as Layer from "effect/Layer";
24
+ import { initial } from "./migrations/0001_initial.js";
25
+ import { selectionStore } from "./migrations/0002_selection_store.js";
26
+ import { planInputs } from "./migrations/0003_plan_inputs.js";
27
+ import { planEnvironment } from "./migrations/0004_plan_environment.js";
28
+ import { planMerges } from "./migrations/0005_plan_merges.js";
29
+ import { executionListing } from "./migrations/0006_execution_listing.js";
30
+ import { runParentSequence } from "./migrations/0007_run_parent_sequence.js";
31
+ import { deferredConsumption } from "./migrations/0008_deferred_consumption.js";
32
+ import { deferredClockFacts } from "./migrations/0009_deferred_clock_facts.js";
33
+ import { pendingCancellation } from "./migrations/0010_pending_cancellation.js";
34
+ /**
35
+ * Engine-store's own namespaced migration set.
36
+ *
37
+ * @category migrations
38
+ * @since 0.1.0
39
+ */
40
+ export const set = {
41
+ namespace: "engine-store",
42
+ idOffset: DatabaseMigrations.idBlock * 3,
43
+ migrations: {
44
+ "0001_initial": initial,
45
+ "0002_selection_store": selectionStore,
46
+ "0003_plan_inputs": planInputs,
47
+ "0004_plan_environment": planEnvironment,
48
+ "0005_plan_merges": planMerges,
49
+ "0006_execution_listing": executionListing,
50
+ "0007_run_parent_sequence": runParentSequence,
51
+ "0008_deferred_consumption": deferredConsumption,
52
+ "0009_deferred_clock_facts": deferredClockFacts,
53
+ "0010_pending_cancellation": pendingCancellation
54
+ }
55
+ };
56
+ /**
57
+ * Every migration set a durable engine needs, in dependency order: journal
58
+ * events, run and attempt state, the step cache, the engine's own deferred and
59
+ * clock, selection, and input tables, then the persisted plan.
60
+ *
61
+ * The plan set has the highest id block (`4000`). The database loader applies
62
+ * forward additions within already installed blocks transactionally before
63
+ * the ordinary migration pass (for example, engine-store `3003` after plan
64
+ * `4003`). Earlier holes and entirely new lower blocks remain refusals.
65
+ *
66
+ * @category migrations
67
+ * @since 0.1.0
68
+ */
69
+ export const sets = [
70
+ JournalMigrations.set,
71
+ RunStoreMigrations.set,
72
+ StepCacheMigrations.set,
73
+ set,
74
+ PlanMigrations.set
75
+ ];
76
+ /**
77
+ * Creates the complete durable engine schema.
78
+ *
79
+ * @category migrations
80
+ * @since 0.1.0
81
+ */
82
+ export const run = DatabaseMigrations.run(sets);
83
+ /**
84
+ * Layer that installs the complete durable engine schema before exposing the
85
+ * database to any durable service.
86
+ *
87
+ * @category layers
88
+ * @since 0.1.0
89
+ */
90
+ export const layer = Layer.effectDiscard(run);
91
+ //# sourceMappingURL=Migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migrations.js","sourceRoot":"","sources":["../../src/Migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,cAAc,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,kBAAkB,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAoC;IAClD,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,kBAAkB,CAAC,OAAO,GAAG,CAAC;IACxC,UAAU,EAAE;QACV,cAAc,EAAE,OAAO;QACvB,sBAAsB,EAAE,cAAc;QACtC,kBAAkB,EAAE,UAAU;QAC9B,uBAAuB,EAAE,eAAe;QACxC,kBAAkB,EAAE,UAAU;QAC9B,wBAAwB,EAAE,gBAAgB;QAC1C,0BAA0B,EAAE,iBAAiB;QAC7C,2BAA2B,EAAE,mBAAmB;QAChD,2BAA2B,EAAE,kBAAkB;QAC/C,2BAA2B,EAAE,mBAAmB;KACjD;CACF,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,IAAI,GAAmD;IAClE,iBAAiB,CAAC,GAAG;IACrB,kBAAkB,CAAC,GAAG;IACtB,mBAAmB,CAAC,GAAG;IACvB,GAAG;IACH,cAAc,CAAC,GAAG;CACnB,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA","sourcesContent":["/**\n * Durable engine schema migrations.\n *\n * Engine-store owns persisted deferred/clock state, execution selections,\n * and append-only plan-input observations. These are authoritative execution\n * records, distinct from journal projections and evictable step-cache rows.\n * It reserves migration id block `3000`.\n *\n * Because engine-store composes the journal, the run store, and the step\n * cache, {@link sets} is also the full durable schema an engine needs, and\n * {@link layer} installs it in dependency order.\n *\n * Derived contracts: `docs/api.md` (\"Migrations\") and\n * `packages/smithers/flows/journal/docs/api.md`.\n *\n * @since 0.1.0\n */\n\nimport * as DatabaseMigrations from \"@smthrs/database/Migrations\"\nimport * as JournalMigrations from \"@smthrs/journal/Migrations\"\nimport * as PlanMigrations from \"@smthrs/plan-store/Migrations\"\nimport * as RunStoreMigrations from \"@smthrs/run-store/Migrations\"\nimport * as StepCacheMigrations from \"@smthrs/step-cache/Migrations\"\nimport * as Layer from \"effect/Layer\"\nimport { initial } from \"./migrations/0001_initial.ts\"\nimport { selectionStore } from \"./migrations/0002_selection_store.ts\"\nimport { planInputs } from \"./migrations/0003_plan_inputs.ts\"\nimport { planEnvironment } from \"./migrations/0004_plan_environment.ts\"\nimport { planMerges } from \"./migrations/0005_plan_merges.ts\"\nimport { executionListing } from \"./migrations/0006_execution_listing.ts\"\nimport { runParentSequence } from \"./migrations/0007_run_parent_sequence.ts\"\nimport { deferredConsumption } from \"./migrations/0008_deferred_consumption.ts\"\nimport { deferredClockFacts } from \"./migrations/0009_deferred_clock_facts.ts\"\nimport { pendingCancellation } from \"./migrations/0010_pending_cancellation.ts\"\n\n/**\n * Engine-store's own namespaced migration set.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const set: DatabaseMigrations.MigrationSet = {\n namespace: \"engine-store\",\n idOffset: DatabaseMigrations.idBlock * 3,\n migrations: {\n \"0001_initial\": initial,\n \"0002_selection_store\": selectionStore,\n \"0003_plan_inputs\": planInputs,\n \"0004_plan_environment\": planEnvironment,\n \"0005_plan_merges\": planMerges,\n \"0006_execution_listing\": executionListing,\n \"0007_run_parent_sequence\": runParentSequence,\n \"0008_deferred_consumption\": deferredConsumption,\n \"0009_deferred_clock_facts\": deferredClockFacts,\n \"0010_pending_cancellation\": pendingCancellation\n }\n}\n\n/**\n * Every migration set a durable engine needs, in dependency order: journal\n * events, run and attempt state, the step cache, the engine's own deferred and\n * clock, selection, and input tables, then the persisted plan.\n *\n * The plan set has the highest id block (`4000`). The database loader applies\n * forward additions within already installed blocks transactionally before\n * the ordinary migration pass (for example, engine-store `3003` after plan\n * `4003`). Earlier holes and entirely new lower blocks remain refusals.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const sets: ReadonlyArray<DatabaseMigrations.MigrationSet> = [\n JournalMigrations.set,\n RunStoreMigrations.set,\n StepCacheMigrations.set,\n set,\n PlanMigrations.set\n]\n\n/**\n * Creates the complete durable engine schema.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const run = DatabaseMigrations.run(sets)\n\n/**\n * Layer that installs the complete durable engine schema before exposing the\n * database to any durable service.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer = Layer.effectDiscard(run)\n"]}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The source of the fencing identity a store incarnation runs under.
3
+ *
4
+ * Minting an {@link OwnerId} is an act of nondeterminism against the host: it
5
+ * reads a process identifier and draws a fresh nonce. Both belong behind a
6
+ * port rather than in the composition itself — the closed-host doctrine in
7
+ * `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static
8
+ * `node:crypto` import, and browser support is a hard requirement, so a store
9
+ * that reached for either directly could not be composed in a tab at all.
10
+ *
11
+ * Governing design: `docs/concepts/ownership-and-fencing.md`.
12
+ *
13
+ * @since 0.1.0
14
+ */
15
+ import type { OwnerId } from "@smthrs/journal/OwnerId";
16
+ import * as Context from "effect/Context";
17
+ import * as Crypto from "effect/Crypto";
18
+ import * as Effect from "effect/Effect";
19
+ import * as Layer from "effect/Layer";
20
+ /**
21
+ * Owner identity operations.
22
+ *
23
+ * @category models
24
+ * @since 0.1.0
25
+ */
26
+ export interface Service {
27
+ /**
28
+ * Mints the identity this incarnation fences its durable writes with. The
29
+ * host supplies the incarnation; the caller supplies the host id, because
30
+ * which host a store speaks for is a composition decision, not a host fact.
31
+ */
32
+ readonly ownerId: (hostId: string) => Effect.Effect<OwnerId>;
33
+ }
34
+ declare const OwnerIdentity_base: Context.ServiceClass<OwnerIdentity, "@smthrs/engine-store/OwnerIdentity", Service>;
35
+ /**
36
+ * Service tag for the owner identity source.
37
+ *
38
+ * @category services
39
+ * @since 0.1.0
40
+ */
41
+ export declare class OwnerIdentity extends OwnerIdentity_base {
42
+ }
43
+ /**
44
+ * Constructs an owner identity source from an implementation.
45
+ *
46
+ * @category constructors
47
+ * @since 0.1.0
48
+ */
49
+ export declare const make: (service: Service) => Service;
50
+ /**
51
+ * Builds the standard identity source over an explicitly supplied process id
52
+ * and the injected `Crypto` service.
53
+ *
54
+ * On node and bun `pid` is the real process id, so the minted token is exactly
55
+ * what the store produced before this service existed. A browser tab has no
56
+ * process, and no stable per-tab integer that means the same thing, so
57
+ * `undefined` draws an incarnation number instead: the component's only job is
58
+ * to distinguish concurrent incarnations on one host, and `Random` is the
59
+ * sanctioned port for drawing one. Effect's own cluster storage does the same
60
+ * where a backend exposes no connection pid (`reference/effect`
61
+ * `unstable/cluster/SqlRunnerStorage.ts`).
62
+ *
63
+ * The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the
64
+ * closed-host seam every composition already provides for digesting — so no
65
+ * ambient `crypto` global is reached from a hot path. A host whose crypto
66
+ * cannot mint a UUID cannot fence anything, so that refusal is a defect.
67
+ *
68
+ * @category constructors
69
+ * @since 0.1.0
70
+ */
71
+ export declare const makeIncarnation: (pid: number | undefined, crypto: Crypto.Crypto) => Service;
72
+ /**
73
+ * Provides {@link makeIncarnation} over whatever process id the running
74
+ * platform reports and the composition's `Crypto` service. This is what
75
+ * engine composition supplies unless a host has a better answer.
76
+ *
77
+ * @category layers
78
+ * @since 0.1.0
79
+ */
80
+ export declare const layer: Layer.Layer<OwnerIdentity, never, Crypto.Crypto>;
81
+ /**
82
+ * Provides a fixed identity. A test — or a host that derives ownership from
83
+ * something outside this process, such as a lease it already holds — pins the
84
+ * whole token instead of letting the default draw one.
85
+ *
86
+ * @category layers
87
+ * @since 0.1.0
88
+ */
89
+ export declare const layerConstant: (owner: OwnerId) => Layer.Layer<OwnerIdentity>;
90
+ export {};
91
+ //# sourceMappingURL=OwnerIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OwnerIdentity.d.ts","sourceRoot":"","sources":["../../src/OwnerIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CAC7D;;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAA+E;CAAG;AAErH;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,OAAO,KAAG,OAAoC,CAAA;AAc5E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,GAAG,SAAS,EAAE,QAAQ,MAAM,CAAC,MAAM,KAAG,OAchF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAGlE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CACM,CAAA"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The source of the fencing identity a store incarnation runs under.
3
+ *
4
+ * Minting an {@link OwnerId} is an act of nondeterminism against the host: it
5
+ * reads a process identifier and draws a fresh nonce. Both belong behind a
6
+ * port rather than in the composition itself — the closed-host doctrine in
7
+ * `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static
8
+ * `node:crypto` import, and browser support is a hard requirement, so a store
9
+ * that reached for either directly could not be composed in a tab at all.
10
+ *
11
+ * Governing design: `docs/concepts/ownership-and-fencing.md`.
12
+ *
13
+ * @since 0.1.0
14
+ */
15
+ import * as Context from "effect/Context";
16
+ import * as Crypto from "effect/Crypto";
17
+ import * as Effect from "effect/Effect";
18
+ import * as Layer from "effect/Layer";
19
+ import * as Random from "effect/Random";
20
+ /**
21
+ * Service tag for the owner identity source.
22
+ *
23
+ * @category services
24
+ * @since 0.1.0
25
+ */
26
+ export class OwnerIdentity extends Context.Service()("@smthrs/engine-store/OwnerIdentity") {
27
+ }
28
+ /**
29
+ * Constructs an owner identity source from an implementation.
30
+ *
31
+ * @category constructors
32
+ * @since 0.1.0
33
+ */
34
+ export const make = (service) => OwnerIdentity.of(service);
35
+ /**
36
+ * The host's process identifier, when the platform has one.
37
+ *
38
+ * Read off `globalThis` rather than through a bare `process` reference so the
39
+ * module carries no Node binding at all: a browser bundle sees `undefined`
40
+ * here and falls through to a drawn incarnation number instead. The read
41
+ * happens at layer construction — {@link layer} — so importing the module
42
+ * touches nothing.
43
+ */
44
+ const hostProcessId = () => globalThis.process?.pid;
45
+ /**
46
+ * Builds the standard identity source over an explicitly supplied process id
47
+ * and the injected `Crypto` service.
48
+ *
49
+ * On node and bun `pid` is the real process id, so the minted token is exactly
50
+ * what the store produced before this service existed. A browser tab has no
51
+ * process, and no stable per-tab integer that means the same thing, so
52
+ * `undefined` draws an incarnation number instead: the component's only job is
53
+ * to distinguish concurrent incarnations on one host, and `Random` is the
54
+ * sanctioned port for drawing one. Effect's own cluster storage does the same
55
+ * where a backend exposes no connection pid (`reference/effect`
56
+ * `unstable/cluster/SqlRunnerStorage.ts`).
57
+ *
58
+ * The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the
59
+ * closed-host seam every composition already provides for digesting — so no
60
+ * ambient `crypto` global is reached from a hot path. A host whose crypto
61
+ * cannot mint a UUID cannot fence anything, so that refusal is a defect.
62
+ *
63
+ * @category constructors
64
+ * @since 0.1.0
65
+ */
66
+ export const makeIncarnation = (pid, crypto) => {
67
+ const incarnationId = pid === undefined
68
+ ? Random.nextIntBetween(0, Number.MAX_SAFE_INTEGER, { halfOpen: true })
69
+ : Effect.succeed(pid);
70
+ return make({
71
+ ownerId: Effect.fn("OwnerIdentity.ownerId")(function* (hostId) {
72
+ yield* Effect.annotateCurrentSpan({ hostId });
73
+ return {
74
+ hostId,
75
+ pid: yield* incarnationId,
76
+ nonce: yield* crypto.randomUUIDv4.pipe(Effect.orDie)
77
+ };
78
+ })
79
+ });
80
+ };
81
+ /**
82
+ * Provides {@link makeIncarnation} over whatever process id the running
83
+ * platform reports and the composition's `Crypto` service. This is what
84
+ * engine composition supplies unless a host has a better answer.
85
+ *
86
+ * @category layers
87
+ * @since 0.1.0
88
+ */
89
+ export const layer = Layer.effect(OwnerIdentity, Effect.map(Crypto.Crypto, (crypto) => makeIncarnation(hostProcessId(), crypto)));
90
+ /**
91
+ * Provides a fixed identity. A test — or a host that derives ownership from
92
+ * something outside this process, such as a lease it already holds — pins the
93
+ * whole token instead of letting the default draw one.
94
+ *
95
+ * @category layers
96
+ * @since 0.1.0
97
+ */
98
+ export const layerConstant = (owner) => Layer.succeed(OwnerIdentity)(make({ ownerId: () => Effect.succeed(owner) }));
99
+ //# sourceMappingURL=OwnerIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OwnerIdentity.js","sourceRoot":"","sources":["../../src/OwnerIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAiBvC;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAA0B,CAAC,oCAAoC,CAAC;CAAG;AAErH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AAE5E;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAG,GAAuB,EAAE,CAC5C,UAA+D,CAAC,OAAO,EAAE,GAAG,CAAA;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAuB,EAAE,MAAqB,EAAW,EAAE;IACzF,MAAM,aAAa,GAA0B,GAAG,KAAK,SAAS;QAC5D,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvB,OAAO,IAAI,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAC,MAAM;YAC1D,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAC7C,OAAO;gBACL,MAAM;gBACN,GAAG,EAAE,KAAK,CAAC,CAAC,aAAa;gBACzB,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACnC,CAAA;QACrB,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAqD,KAAK,CAAC,MAAM,CACjF,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC,CAChF,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAA8B,EAAE,CAC1E,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA","sourcesContent":["/**\n * The source of the fencing identity a store incarnation runs under.\n *\n * Minting an {@link OwnerId} is an act of nondeterminism against the host: it\n * reads a process identifier and draws a fresh nonce. Both belong behind a\n * port rather than in the composition itself — the closed-host doctrine in\n * `@smthrs/kernel`'s `HostServices` admits no ambient `process` and no static\n * `node:crypto` import, and browser support is a hard requirement, so a store\n * that reached for either directly could not be composed in a tab at all.\n *\n * Governing design: `docs/concepts/ownership-and-fencing.md`.\n *\n * @since 0.1.0\n */\n\nimport type { OwnerId } from \"@smthrs/journal/OwnerId\"\nimport * as Context from \"effect/Context\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Random from \"effect/Random\"\n\n/**\n * Owner identity operations.\n *\n * @category models\n * @since 0.1.0\n */\nexport interface Service {\n /**\n * Mints the identity this incarnation fences its durable writes with. The\n * host supplies the incarnation; the caller supplies the host id, because\n * which host a store speaks for is a composition decision, not a host fact.\n */\n readonly ownerId: (hostId: string) => Effect.Effect<OwnerId>\n}\n\n/**\n * Service tag for the owner identity source.\n *\n * @category services\n * @since 0.1.0\n */\nexport class OwnerIdentity extends Context.Service<OwnerIdentity, Service>()(\"@smthrs/engine-store/OwnerIdentity\") {}\n\n/**\n * Constructs an owner identity source from an implementation.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const make = (service: Service): Service => OwnerIdentity.of(service)\n\n/**\n * The host's process identifier, when the platform has one.\n *\n * Read off `globalThis` rather than through a bare `process` reference so the\n * module carries no Node binding at all: a browser bundle sees `undefined`\n * here and falls through to a drawn incarnation number instead. The read\n * happens at layer construction — {@link layer} — so importing the module\n * touches nothing.\n */\nconst hostProcessId = (): number | undefined =>\n (globalThis as { readonly process?: { readonly pid?: number } }).process?.pid\n\n/**\n * Builds the standard identity source over an explicitly supplied process id\n * and the injected `Crypto` service.\n *\n * On node and bun `pid` is the real process id, so the minted token is exactly\n * what the store produced before this service existed. A browser tab has no\n * process, and no stable per-tab integer that means the same thing, so\n * `undefined` draws an incarnation number instead: the component's only job is\n * to distinguish concurrent incarnations on one host, and `Random` is the\n * sanctioned port for drawing one. Effect's own cluster storage does the same\n * where a backend exposes no connection pid (`reference/effect`\n * `unstable/cluster/SqlRunnerStorage.ts`).\n *\n * The nonce is a UUIDv4 drawn from the injected `effect/Crypto` service — the\n * closed-host seam every composition already provides for digesting — so no\n * ambient `crypto` global is reached from a hot path. A host whose crypto\n * cannot mint a UUID cannot fence anything, so that refusal is a defect.\n *\n * @category constructors\n * @since 0.1.0\n */\nexport const makeIncarnation = (pid: number | undefined, crypto: Crypto.Crypto): Service => {\n const incarnationId: Effect.Effect<number> = pid === undefined\n ? Random.nextIntBetween(0, Number.MAX_SAFE_INTEGER, { halfOpen: true })\n : Effect.succeed(pid)\n return make({\n ownerId: Effect.fn(\"OwnerIdentity.ownerId\")(function*(hostId) {\n yield* Effect.annotateCurrentSpan({ hostId })\n return {\n hostId,\n pid: yield* incarnationId,\n nonce: yield* crypto.randomUUIDv4.pipe(Effect.orDie)\n } satisfies OwnerId\n })\n })\n}\n\n/**\n * Provides {@link makeIncarnation} over whatever process id the running\n * platform reports and the composition's `Crypto` service. This is what\n * engine composition supplies unless a host has a better answer.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layer: Layer.Layer<OwnerIdentity, never, Crypto.Crypto> = Layer.effect(\n OwnerIdentity,\n Effect.map(Crypto.Crypto, (crypto) => makeIncarnation(hostProcessId(), crypto))\n)\n\n/**\n * Provides a fixed identity. A test — or a host that derives ownership from\n * something outside this process, such as a lease it already holds — pins the\n * whole token instead of letting the default draw one.\n *\n * @category layers\n * @since 0.1.0\n */\nexport const layerConstant = (owner: OwnerId): Layer.Layer<OwnerIdentity> =>\n Layer.succeed(OwnerIdentity)(make({ ownerId: () => Effect.succeed(owner) }))\n"]}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Authoritative source observations for one durable plan execution. These are
3
+ * replay state, not approval data, journal projections, or evictable cache rows.
4
+ * @since 1.0.0
5
+ */
6
+ import { DurableWriter } from "@smthrs/database/DurableWriter";
7
+ import { OwnerId } from "@smthrs/run-store/Ownership";
8
+ import { Context, Effect, Layer, Option, Schema } from "effect";
9
+ import type * as Crypto from "effect/Crypto";
10
+ import * as SqlClient from "effect/unstable/sql/SqlClient";
11
+ /**
12
+ * Address of an append-only observation generation. `environmentDigest` comes
13
+ * from `StepKey.environmentIdentity` and binds every generation of the run.
14
+ * @since 1.0.0
15
+ * @category schemas
16
+ */
17
+ export declare const Address: Schema.Struct<{
18
+ readonly runId: Schema.NonEmptyString;
19
+ readonly planId: Schema.NonEmptyString;
20
+ readonly baseDigest: Schema.NonEmptyString;
21
+ readonly environmentDigest: Schema.NonEmptyString;
22
+ readonly generation: Schema.Int;
23
+ }>;
24
+ /**
25
+ * Address of an append-only observation generation.
26
+ * @since 1.0.0
27
+ * @category models
28
+ */
29
+ export type Address = typeof Address.Type;
30
+ /**
31
+ * Maximum encoded snapshot size, in JavaScript string code units.
32
+ * @since 1.0.0
33
+ * @category constants
34
+ */
35
+ export declare const maximumSnapshotCharacters: number;
36
+ /**
37
+ * Frozen membership and newly pinned source digests for one generation.
38
+ * @since 1.0.0
39
+ * @category schemas
40
+ */
41
+ export declare const Snapshot: Schema.Struct<{
42
+ readonly version: Schema.Literal<1>;
43
+ readonly generation: Schema.Int;
44
+ readonly nodes: Schema.$Array<Schema.Struct<{
45
+ readonly id: Schema.NonEmptyString;
46
+ readonly key: Schema.NonEmptyString;
47
+ readonly reads: Schema.$Array<Schema.Struct<{
48
+ readonly entry: Schema.Union<readonly [Schema.NonEmptyString, Schema.TaggedStruct<"Glob", {
49
+ readonly include: Schema.NonEmptyArray<Schema.NonEmptyString>;
50
+ readonly exclude: Schema.optional<Schema.$Array<Schema.NonEmptyString>>;
51
+ }>]>;
52
+ readonly sourcePaths: Schema.$Array<Schema.NonEmptyString>;
53
+ }>>;
54
+ }>>;
55
+ readonly pins: Schema.$Array<Schema.Struct<{
56
+ readonly path: Schema.NonEmptyString;
57
+ readonly digest: Schema.NonEmptyString;
58
+ }>>;
59
+ }>;
60
+ /**
61
+ * Frozen membership and newly pinned source digests for one generation.
62
+ * @since 1.0.0
63
+ * @category models
64
+ */
65
+ export type Snapshot = typeof Snapshot.Type;
66
+ declare const PlanInputError_base: Schema.Class<PlanInputError, Schema.TaggedStruct<"@smthrs/engine-store/PlanInputError", {
67
+ readonly code: Schema.Literals<readonly ["invalid_input", "corrupt_state", "incompatible_state", "fence_lost", "transaction_open", "persistence_failed"]>;
68
+ readonly message: Schema.String;
69
+ readonly cause: Schema.optional<Schema.Unknown>;
70
+ }>, import("effect/Cause").YieldableError>;
71
+ /**
72
+ * A durable observation cannot be read or safely admitted.
73
+ * @since 1.0.0
74
+ * @category errors
75
+ */
76
+ export declare class PlanInputError extends PlanInputError_base {
77
+ }
78
+ /**
79
+ * `get` is a committed-state admission gate and refuses an enclosing SQL
80
+ * transaction. `record` is first-writer-wins and may join a write transaction;
81
+ * callers must wait for its outer commit before executing affected actions.
82
+ * @since 1.0.0
83
+ * @category models
84
+ */
85
+ export interface Service {
86
+ readonly get: (address: Address, owner: OwnerId) => Effect.Effect<Option.Option<Snapshot>, PlanInputError>;
87
+ readonly record: (address: Address, snapshot: Snapshot, owner: OwnerId) => Effect.Effect<Snapshot, PlanInputError>;
88
+ }
89
+ declare const PlanInputStore_base: Context.ServiceClass<PlanInputStore, "@smthrs/engine-store/PlanInputStore", Service>;
90
+ /**
91
+ * Durable plan-input service.
92
+ * @since 1.0.0
93
+ * @category services
94
+ */
95
+ export declare class PlanInputStore extends PlanInputStore_base {
96
+ }
97
+ /**
98
+ * Builds the SQL-backed, owner-fenced store.
99
+ * @since 1.0.0
100
+ * @category constructors
101
+ */
102
+ export declare const make: Effect.Effect<Service, never, SqlClient.SqlClient | DurableWriter | Crypto.Crypto>;
103
+ /**
104
+ * Provides the SQL-backed input store over the same database as the run/attempt stores.
105
+ * @since 1.0.0
106
+ * @category layers
107
+ */
108
+ export declare const layer: Layer.Layer<PlanInputStore, never, SqlClient.SqlClient | DurableWriter | Crypto.Crypto>;
109
+ export {};
110
+ //# sourceMappingURL=PlanInputStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanInputStore.d.ts","sourceRoot":"","sources":["../../src/PlanInputStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAI1D;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;EAMlB,CAAA;AACF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAmB,CAAA;AAEzD;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;EAYnB,CAAA;AACF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;;;;;;AAE3C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAWlC;CAAG;AAEL;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAA;IAC1G,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;CACnH;;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAAiF;CAAG;AAsCxH;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAuInG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAGjG,CAAA"}