@smthrs/journal 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 (257) hide show
  1. package/CHANGELOG.md +149 -0
  2. package/LICENSE +21 -0
  3. package/README.md +206 -2
  4. package/dist/cjs/CallFact.d.ts +129 -0
  5. package/dist/cjs/CallFact.d.ts.map +1 -0
  6. package/dist/cjs/CallFact.js +106 -0
  7. package/dist/cjs/CallFact.js.map +7 -0
  8. package/dist/cjs/Consensus.d.ts +440 -0
  9. package/dist/cjs/Consensus.d.ts.map +1 -0
  10. package/dist/cjs/Consensus.js +251 -0
  11. package/dist/cjs/Consensus.js.map +7 -0
  12. package/dist/cjs/EngineEvent.d.ts +890 -0
  13. package/dist/cjs/EngineEvent.d.ts.map +1 -0
  14. package/dist/cjs/EngineEvent.js +383 -0
  15. package/dist/cjs/EngineEvent.js.map +7 -0
  16. package/dist/cjs/ExecutionFact.d.ts +216 -0
  17. package/dist/cjs/ExecutionFact.d.ts.map +1 -0
  18. package/dist/cjs/ExecutionFact.js +303 -0
  19. package/dist/cjs/ExecutionFact.js.map +7 -0
  20. package/dist/cjs/Journal.d.ts +617 -0
  21. package/dist/cjs/Journal.d.ts.map +1 -0
  22. package/dist/cjs/Journal.js +190 -0
  23. package/dist/cjs/Journal.js.map +7 -0
  24. package/dist/cjs/JournalEvent.d.ts +421 -0
  25. package/dist/cjs/JournalEvent.d.ts.map +1 -0
  26. package/dist/cjs/JournalEvent.js +281 -0
  27. package/dist/cjs/JournalEvent.js.map +7 -0
  28. package/dist/cjs/JournalGeneration.d.ts +34 -0
  29. package/dist/cjs/JournalGeneration.d.ts.map +1 -0
  30. package/dist/cjs/JournalGeneration.js +72 -0
  31. package/dist/cjs/JournalGeneration.js.map +7 -0
  32. package/dist/cjs/JournalMetrics.d.ts +72 -0
  33. package/dist/cjs/JournalMetrics.d.ts.map +1 -0
  34. package/dist/cjs/JournalMetrics.js +55 -0
  35. package/dist/cjs/JournalMetrics.js.map +7 -0
  36. package/dist/cjs/Migrations.d.ts +42 -0
  37. package/dist/cjs/Migrations.d.ts.map +1 -0
  38. package/dist/cjs/Migrations.js +58 -0
  39. package/dist/cjs/Migrations.js.map +7 -0
  40. package/dist/cjs/OwnerId.d.ts +40 -0
  41. package/dist/cjs/OwnerId.d.ts.map +1 -0
  42. package/dist/cjs/OwnerId.js +40 -0
  43. package/dist/cjs/OwnerId.js.map +7 -0
  44. package/dist/cjs/Projection.d.ts +29 -0
  45. package/dist/cjs/Projection.d.ts.map +1 -0
  46. package/dist/cjs/Projection.js +25 -0
  47. package/dist/cjs/Projection.js.map +7 -0
  48. package/dist/cjs/RedactedLogger.d.ts +121 -0
  49. package/dist/cjs/RedactedLogger.d.ts.map +1 -0
  50. package/dist/cjs/RedactedLogger.js +235 -0
  51. package/dist/cjs/RedactedLogger.js.map +7 -0
  52. package/dist/cjs/Redaction.d.ts +350 -0
  53. package/dist/cjs/Redaction.d.ts.map +1 -0
  54. package/dist/cjs/Redaction.js +928 -0
  55. package/dist/cjs/Redaction.js.map +7 -0
  56. package/dist/cjs/SqlConsensus.d.ts +44 -0
  57. package/dist/cjs/SqlConsensus.d.ts.map +1 -0
  58. package/dist/cjs/SqlConsensus.js +243 -0
  59. package/dist/cjs/SqlConsensus.js.map +7 -0
  60. package/dist/cjs/SqlJournal.d.ts +173 -0
  61. package/dist/cjs/SqlJournal.d.ts.map +1 -0
  62. package/dist/cjs/SqlJournal.js +1568 -0
  63. package/dist/cjs/SqlJournal.js.map +7 -0
  64. package/dist/cjs/StepFact.d.ts +66 -0
  65. package/dist/cjs/StepFact.d.ts.map +1 -0
  66. package/dist/cjs/StepFact.js +68 -0
  67. package/dist/cjs/StepFact.js.map +7 -0
  68. package/dist/cjs/index.d.ts +95 -0
  69. package/dist/cjs/index.d.ts.map +1 -0
  70. package/dist/cjs/index.js +63 -0
  71. package/dist/cjs/index.js.map +7 -0
  72. package/dist/cjs/internal/JournalInternalFault.d.ts +37 -0
  73. package/dist/cjs/internal/JournalInternalFault.d.ts.map +1 -0
  74. package/dist/cjs/internal/JournalInternalFault.js +43 -0
  75. package/dist/cjs/internal/JournalInternalFault.js.map +7 -0
  76. package/dist/cjs/migrations/0001_initial.d.ts +15 -0
  77. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  78. package/dist/cjs/migrations/0001_initial.js +54 -0
  79. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  80. package/dist/cjs/migrations/0002_checkpoints.d.ts +27 -0
  81. package/dist/cjs/migrations/0002_checkpoints.d.ts.map +1 -0
  82. package/dist/cjs/migrations/0002_checkpoints.js +48 -0
  83. package/dist/cjs/migrations/0002_checkpoints.js.map +7 -0
  84. package/dist/cjs/migrations/0003_startup_index.d.ts +15 -0
  85. package/dist/cjs/migrations/0003_startup_index.d.ts.map +1 -0
  86. package/dist/cjs/migrations/0003_startup_index.js +40 -0
  87. package/dist/cjs/migrations/0003_startup_index.js.map +7 -0
  88. package/dist/cjs/migrations/0004_dedup.d.ts +15 -0
  89. package/dist/cjs/migrations/0004_dedup.d.ts.map +1 -0
  90. package/dist/cjs/migrations/0004_dedup.js +57 -0
  91. package/dist/cjs/migrations/0004_dedup.js.map +7 -0
  92. package/dist/cjs/migrations/0005_run_event_type.d.ts +15 -0
  93. package/dist/cjs/migrations/0005_run_event_type.d.ts.map +1 -0
  94. package/dist/cjs/migrations/0005_run_event_type.js +40 -0
  95. package/dist/cjs/migrations/0005_run_event_type.js.map +7 -0
  96. package/dist/cjs/migrations/0006_consensus.d.ts +22 -0
  97. package/dist/cjs/migrations/0006_consensus.d.ts.map +1 -0
  98. package/dist/cjs/migrations/0006_consensus.js +84 -0
  99. package/dist/cjs/migrations/0006_consensus.js.map +7 -0
  100. package/dist/cjs/package.json +1 -0
  101. package/dist/cjs/test/Notifying.d.ts +65 -0
  102. package/dist/cjs/test/Notifying.d.ts.map +1 -0
  103. package/dist/cjs/test/Notifying.js +62 -0
  104. package/dist/cjs/test/Notifying.js.map +7 -0
  105. package/dist/cjs/test/TestJournal.d.ts +43 -0
  106. package/dist/cjs/test/TestJournal.d.ts.map +1 -0
  107. package/dist/cjs/test/TestJournal.js +43 -0
  108. package/dist/cjs/test/TestJournal.js.map +7 -0
  109. package/dist/esm/CallFact.d.ts +129 -0
  110. package/dist/esm/CallFact.d.ts.map +1 -0
  111. package/dist/esm/CallFact.js +96 -0
  112. package/dist/esm/CallFact.js.map +1 -0
  113. package/dist/esm/Consensus.d.ts +440 -0
  114. package/dist/esm/Consensus.d.ts.map +1 -0
  115. package/dist/esm/Consensus.js +454 -0
  116. package/dist/esm/Consensus.js.map +1 -0
  117. package/dist/esm/EngineEvent.d.ts +890 -0
  118. package/dist/esm/EngineEvent.d.ts.map +1 -0
  119. package/dist/esm/EngineEvent.js +614 -0
  120. package/dist/esm/EngineEvent.js.map +1 -0
  121. package/dist/esm/ExecutionFact.d.ts +216 -0
  122. package/dist/esm/ExecutionFact.d.ts.map +1 -0
  123. package/dist/esm/ExecutionFact.js +374 -0
  124. package/dist/esm/ExecutionFact.js.map +1 -0
  125. package/dist/esm/Journal.d.ts +617 -0
  126. package/dist/esm/Journal.d.ts.map +1 -0
  127. package/dist/esm/Journal.js +323 -0
  128. package/dist/esm/Journal.js.map +1 -0
  129. package/dist/esm/JournalEvent.d.ts +421 -0
  130. package/dist/esm/JournalEvent.d.ts.map +1 -0
  131. package/dist/esm/JournalEvent.js +517 -0
  132. package/dist/esm/JournalEvent.js.map +1 -0
  133. package/dist/esm/JournalGeneration.d.ts +34 -0
  134. package/dist/esm/JournalGeneration.d.ts.map +1 -0
  135. package/dist/esm/JournalGeneration.js +65 -0
  136. package/dist/esm/JournalGeneration.js.map +1 -0
  137. package/dist/esm/JournalMetrics.d.ts +72 -0
  138. package/dist/esm/JournalMetrics.d.ts.map +1 -0
  139. package/dist/esm/JournalMetrics.js +79 -0
  140. package/dist/esm/JournalMetrics.js.map +1 -0
  141. package/dist/esm/Migrations.d.ts +42 -0
  142. package/dist/esm/Migrations.d.ts.map +1 -0
  143. package/dist/esm/Migrations.js +59 -0
  144. package/dist/esm/Migrations.js.map +1 -0
  145. package/dist/esm/OwnerId.d.ts +40 -0
  146. package/dist/esm/OwnerId.d.ts.map +1 -0
  147. package/dist/esm/OwnerId.js +33 -0
  148. package/dist/esm/OwnerId.js.map +1 -0
  149. package/dist/esm/Projection.d.ts +29 -0
  150. package/dist/esm/Projection.d.ts.map +1 -0
  151. package/dist/esm/Projection.js +13 -0
  152. package/dist/esm/Projection.js.map +1 -0
  153. package/dist/esm/RedactedLogger.d.ts +121 -0
  154. package/dist/esm/RedactedLogger.d.ts.map +1 -0
  155. package/dist/esm/RedactedLogger.js +445 -0
  156. package/dist/esm/RedactedLogger.js.map +1 -0
  157. package/dist/esm/Redaction.d.ts +350 -0
  158. package/dist/esm/Redaction.d.ts.map +1 -0
  159. package/dist/esm/Redaction.js +1584 -0
  160. package/dist/esm/Redaction.js.map +1 -0
  161. package/dist/esm/SqlConsensus.d.ts +44 -0
  162. package/dist/esm/SqlConsensus.d.ts.map +1 -0
  163. package/dist/esm/SqlConsensus.js +252 -0
  164. package/dist/esm/SqlConsensus.js.map +1 -0
  165. package/dist/esm/SqlJournal.d.ts +173 -0
  166. package/dist/esm/SqlJournal.d.ts.map +1 -0
  167. package/dist/esm/SqlJournal.js +1858 -0
  168. package/dist/esm/SqlJournal.js.map +1 -0
  169. package/dist/esm/StepFact.d.ts +66 -0
  170. package/dist/esm/StepFact.d.ts.map +1 -0
  171. package/dist/esm/StepFact.js +50 -0
  172. package/dist/esm/StepFact.js.map +1 -0
  173. package/dist/esm/index.d.ts +95 -0
  174. package/dist/esm/index.d.ts.map +1 -0
  175. package/dist/esm/index.js +95 -0
  176. package/dist/esm/index.js.map +1 -0
  177. package/dist/esm/internal/JournalInternalFault.d.ts +37 -0
  178. package/dist/esm/internal/JournalInternalFault.d.ts.map +1 -0
  179. package/dist/esm/internal/JournalInternalFault.js +28 -0
  180. package/dist/esm/internal/JournalInternalFault.js.map +1 -0
  181. package/dist/esm/migrations/0001_initial.d.ts +15 -0
  182. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  183. package/dist/esm/migrations/0001_initial.js +32 -0
  184. package/dist/esm/migrations/0001_initial.js.map +1 -0
  185. package/dist/esm/migrations/0002_checkpoints.d.ts +27 -0
  186. package/dist/esm/migrations/0002_checkpoints.d.ts.map +1 -0
  187. package/dist/esm/migrations/0002_checkpoints.js +38 -0
  188. package/dist/esm/migrations/0002_checkpoints.js.map +1 -0
  189. package/dist/esm/migrations/0003_startup_index.d.ts +15 -0
  190. package/dist/esm/migrations/0003_startup_index.d.ts.map +1 -0
  191. package/dist/esm/migrations/0003_startup_index.js +18 -0
  192. package/dist/esm/migrations/0003_startup_index.js.map +1 -0
  193. package/dist/esm/migrations/0004_dedup.d.ts +15 -0
  194. package/dist/esm/migrations/0004_dedup.d.ts.map +1 -0
  195. package/dist/esm/migrations/0004_dedup.js +38 -0
  196. package/dist/esm/migrations/0004_dedup.js.map +1 -0
  197. package/dist/esm/migrations/0005_run_event_type.d.ts +15 -0
  198. package/dist/esm/migrations/0005_run_event_type.d.ts.map +1 -0
  199. package/dist/esm/migrations/0005_run_event_type.js +18 -0
  200. package/dist/esm/migrations/0005_run_event_type.js.map +1 -0
  201. package/dist/esm/migrations/0006_consensus.d.ts +22 -0
  202. package/dist/esm/migrations/0006_consensus.d.ts.map +1 -0
  203. package/dist/esm/migrations/0006_consensus.js +69 -0
  204. package/dist/esm/migrations/0006_consensus.js.map +1 -0
  205. package/dist/esm/test/Notifying.d.ts +65 -0
  206. package/dist/esm/test/Notifying.d.ts.map +1 -0
  207. package/dist/esm/test/Notifying.js +62 -0
  208. package/dist/esm/test/Notifying.js.map +1 -0
  209. package/dist/esm/test/TestJournal.d.ts +43 -0
  210. package/dist/esm/test/TestJournal.d.ts.map +1 -0
  211. package/dist/esm/test/TestJournal.js +27 -0
  212. package/dist/esm/test/TestJournal.js.map +1 -0
  213. package/docs/README.md +164 -0
  214. package/docs/api.md +639 -0
  215. package/docs/concepts/compaction.md +157 -0
  216. package/docs/concepts/idempotency.md +127 -0
  217. package/docs/concepts/owner-fence.md +124 -0
  218. package/docs/concepts/redaction.md +218 -0
  219. package/docs/concepts/state-event-authority.md +159 -0
  220. package/docs/concepts/two-channels.md +167 -0
  221. package/docs/guides/commit-state-and-entry.md +114 -0
  222. package/docs/guides/compact-a-run.md +134 -0
  223. package/docs/guides/fold-a-projection.md +106 -0
  224. package/docs/guides/read-a-run.md +139 -0
  225. package/docs/guides/redact-log-output.md +94 -0
  226. package/docs/guides/testing.md +124 -0
  227. package/docs/guides/write-lifecycle-events.md +110 -0
  228. package/docs/installation.md +133 -0
  229. package/docs/quickstart.md +143 -0
  230. package/docs/troubleshooting.md +214 -0
  231. package/package.json +263 -3
  232. package/src/CallFact.ts +117 -0
  233. package/src/Consensus.ts +683 -0
  234. package/src/EngineEvent.ts +823 -0
  235. package/src/ExecutionFact.ts +433 -0
  236. package/src/Journal.ts +688 -0
  237. package/src/JournalEvent.ts +654 -0
  238. package/src/JournalGeneration.ts +77 -0
  239. package/src/JournalMetrics.ts +89 -0
  240. package/src/Migrations.ts +62 -0
  241. package/src/OwnerId.ts +42 -0
  242. package/src/Projection.ts +31 -0
  243. package/src/RedactedLogger.ts +483 -0
  244. package/src/Redaction.ts +1784 -0
  245. package/src/SqlConsensus.ts +344 -0
  246. package/src/SqlJournal.ts +2732 -0
  247. package/src/StepFact.ts +69 -0
  248. package/src/index.ts +109 -0
  249. package/src/internal/JournalInternalFault.ts +40 -0
  250. package/src/migrations/0001_initial.ts +41 -0
  251. package/src/migrations/0002_checkpoints.ts +46 -0
  252. package/src/migrations/0003_startup_index.ts +19 -0
  253. package/src/migrations/0004_dedup.ts +43 -0
  254. package/src/migrations/0005_run_event_type.ts +19 -0
  255. package/src/migrations/0006_consensus.ts +83 -0
  256. package/src/test/Notifying.ts +101 -0
  257. package/src/test/TestJournal.ts +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EngineEvent.js","sourceRoot":"","sources":["../../src/EngineEvent.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Versioned engine history contracts over the open journal. These schemas do\n * not change journal admission or make history the engine's recovery store.\n *\n * @since 1.0.0\n */\n\nimport * as Cause from \"effect/Cause\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as Event from \"./JournalEvent.ts\"\n\n/**\n * Required lineage coordinates for a root or derived run.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Lineage = Schema.Union([\n Schema.Struct({\n kind: Schema.Literal(\"root\"),\n runId: Event.RunId,\n lineageId: Event.LineageId,\n rootRunId: Event.RunId,\n round: Schema.Literal(0),\n parentRunId: Schema.Null\n }).check(Schema.makeFilter((value) => value.runId === value.rootRunId)),\n Schema.Struct({\n kind: Schema.Literals([\"child\", \"fork\", \"continuation\"]),\n runId: Event.RunId,\n lineageId: Event.LineageId,\n rootRunId: Event.RunId,\n round: Event.NonNegativeQuantity,\n parentRunId: Event.RunId\n }).check(Schema.makeFilter((value) =>\n value.runId !== value.parentRunId && value.runId !== value.rootRunId &&\n (value.kind !== \"continuation\" || value.round > 0)\n ))\n])\n\n/**\n * Required lineage coordinates for a root or derived run.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Lineage = typeof Lineage.Type\n\n/**\n * Encoded values only: class instances must first pass their own codec.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Success = Schema.TaggedStruct(\"Success\", { value: Schema.Json })\n\n/**\n * Failure channels stay distinct, including interruption and encoding failure.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Failure = Schema.TaggedStruct(\"Failure\", {\n reason: Schema.Literals([\"error\", \"defect\", \"interrupted\", \"encoding\"]),\n detail: Schema.Json\n})\n\n/**\n * Encoded success or a classified failure.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const ResultEnvelope = Schema.Union([Success, Failure])\n/**\n * Encoded success or a classified failure.\n *\n * @category models\n * @since 1.0.0\n */\nexport type ResultEnvelope = typeof ResultEnvelope.Type\n\nconst timing = { startedAtMs: Event.TimestampMs }\nconst live = {\n ...timing,\n heartbeatAtMs: Schema.optionalKey(Event.TimestampMs),\n checkpoint: Schema.optionalKey(Schema.Json),\n finishedAtMs: Schema.optionalKey(Schema.Never),\n result: Schema.optionalKey(Schema.Never)\n}\n\n/**\n * Completion and its outcome are inseparable; live states cannot carry either.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const AttemptLifecycle = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"running\"), ...live }),\n Schema.Struct({ state: Schema.Literal(\"suspended\"), ...live }),\n Schema.Struct({\n state: Schema.Literal(\"succeeded\"),\n ...timing,\n finishedAtMs: Event.TimestampMs,\n result: Success\n }),\n Schema.Struct({\n state: Schema.Literal(\"failed\"),\n ...timing,\n finishedAtMs: Event.TimestampMs,\n result: Failure\n })\n])\n\n/**\n * Wall clocks can move backwards; completion need not be after start.\n *\n * @category models\n * @since 1.0.0\n */\nexport type AttemptLifecycle = typeof AttemptLifecycle.Type\n\n/**\n * Complete identity and state of one versioned attempt event.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const AttemptPayload = Schema.Struct({\n version: Schema.Literal(2),\n lineage: Lineage,\n executionId: Event.RunId,\n stepKeyDigest: Event.DispatchId,\n attempt: Event.NonNegativeQuantity,\n lifecycle: AttemptLifecycle\n}).check(Schema.makeFilter((value) => value.executionId === value.lineage.runId))\n\n/**\n * Complete identity and state of one versioned attempt event.\n *\n * @category models\n * @since 1.0.0\n */\nexport type AttemptPayload = typeof AttemptPayload.Type\n\n/**\n * Durable wait identities; ownership and cancellation remain independent facts.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Wait = Schema.Union([\n Schema.TaggedStruct(\"Deferred\", { waitId: Event.WaitId }),\n Schema.TaggedStruct(\"Clock\", { waitId: Event.WaitId, dueAtMs: Event.TimestampMs })\n])\n\n/**\n * A complete execution observation, without operational ownership leases.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const ExecutionLifecycle = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"running\"), waits: Schema.Array(Wait) }),\n Schema.Struct({ state: Schema.Literal(\"suspended\"), waits: Schema.NonEmptyArray(Wait) }),\n Schema.Struct({ state: Schema.Literal(\"completed\"), result: ResultEnvelope })\n])\n\n/**\n * Versioned execution, deferred and clock observations. Every variant records\n * its semantic identity and encoded value independently of diagnostics.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const StatePayload = Schema.Struct({\n version: Schema.Literal(2),\n lineage: Lineage,\n executionId: Event.RunId,\n event: Schema.Union([\n Schema.TaggedStruct(\"Execution\", { lifecycle: ExecutionLifecycle }),\n Schema.TaggedStruct(\"DeferredCompleted\", { waitId: Event.WaitId, result: ResultEnvelope }),\n Schema.TaggedStruct(\"ClockScheduled\", {\n clockId: Event.CommandId,\n waitId: Event.WaitId,\n dueAtMs: Event.TimestampMs\n })\n ])\n}).check(Schema.makeFilter((value) => value.executionId === value.lineage.runId))\n\n/**\n * Versioned execution, deferred and clock observations.\n *\n * @category models\n * @since 1.0.0\n */\nexport type StatePayload = typeof StatePayload.Type\n\n/**\n * Event family for complete execution, deferred and clock observations.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const stateEventType = \"flows.engine.v2.state-event\"\n\n/**\n * New identity prevents old readers mistaking complete state for historical markers.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const attemptEventType = \"flows.engine.v2.attempt-lifecycle\"\n\n/**\n * Malformed, foreign, unsupported or inconsistent event evidence.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class EventError extends Schema.TaggedError<EventError>()(\"@smthrs/journal/EngineEventError\", {\n code: Schema.Literals([\"malformed\", \"unsupported\", \"foreign\", \"transition\"]),\n message: Schema.String,\n cause: Schema.Unknown\n}) {}\n\n/**\n * Every consumer chooses its source allowlist and unknown-namespace policy.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Consumer {\n readonly runId: Event.RunId\n readonly lineageId: Event.LineageId\n readonly rootRunId: Event.RunId\n readonly round: number\n readonly parentRunId: Event.RunId | null\n readonly sources: ReadonlyArray<Event.SourceId>\n readonly unknown: \"ignore\" | \"surface\"\n}\n\n/**\n * A known event or the explicitly selected extension outcome.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Decoded =\n | { readonly _tag: \"Attempt\"; readonly entry: Event.Entry; readonly payload: AttemptPayload }\n | { readonly _tag: \"State\"; readonly entry: Event.Entry; readonly payload: StatePayload }\n | { readonly _tag: \"Ignored\" }\n | { readonly _tag: \"Unknown\"; readonly entry: Event.Entry }\n\nconst strict = { onExcessProperty: \"error\" } as const\nconst decodeRow = (input: unknown) =>\n Effect.gen(function*() {\n const raw = yield* Schema.decodeUnknownEffect(Schema.toEncoded(Event.Entry))(input)\n return yield* Schema.decodeUnknownEffect(Event.Entry)(raw)\n })\nconst decodePayload = Schema.decodeUnknownSync(AttemptPayload, strict)\nconst decodeJson = Schema.decodeUnknownSync(Schema.Json)\n\n/**\n * Decode untrusted committed input. Unknown events in the known engine namespace\n * are unsupported errors, never ignored. Original schema/accessor errors stay\n * in cause; foreign identity includes the conflicting evidence in cause.\n *\n * @category decoders\n * @since 1.0.0\n */\nexport const decodeEntry = (input: unknown, consumer: Consumer): Effect.Effect<Decoded, EventError> =>\n Effect.gen(function*(): Effect.fn.Return<Decoded, unknown> {\n const entry = yield* decodeRow(input)\n if (entry.runId !== consumer.runId || !consumer.sources.includes(entry.sourceId)) {\n throw new EventError({\n code: \"foreign\",\n message: \"event run or source is outside the consumer scope\",\n cause: entry\n })\n }\n if (entry.eventType !== attemptEventType && entry.eventType !== stateEventType) {\n if (entry.eventType.startsWith(\"flows.engine.\")) {\n throw new EventError({\n code: \"unsupported\",\n message: \"unsupported engine event family or version\",\n cause: entry\n })\n }\n return consumer.unknown === \"ignore\" ? { _tag: \"Ignored\" } : { _tag: \"Unknown\", entry }\n }\n const decoded = entry.eventType === attemptEventType\n ? { _tag: \"Attempt\" as const, payload: yield* Schema.decodeUnknownEffect(AttemptPayload, strict)(entry.payload) }\n : { _tag: \"State\" as const, payload: yield* Schema.decodeUnknownEffect(StatePayload, strict)(entry.payload) }\n const { payload } = decoded\n if (\n payload.lineage.runId !== entry.runId || payload.lineage.lineageId !== consumer.lineageId ||\n payload.lineage.rootRunId !== consumer.rootRunId || payload.lineage.round !== consumer.round ||\n payload.lineage.parentRunId !== consumer.parentRunId\n ) {\n throw new EventError({\n code: \"foreign\",\n message: \"event lineage disagrees with its journal or consumer\",\n cause: payload.lineage\n })\n }\n // The optional journal side channel is disclosure only. Semantic lineage\n // lives in payload and cannot be replaced by diagnostic metadata.\n yield* Schema.decodeUnknownEffect(Schema.Json)(entry.meta)\n return { ...decoded, entry }\n }).pipe(Effect.catchCause((failure) => {\n const cause = Cause.squash(failure)\n return Effect.fail(\n cause instanceof EventError\n ? cause\n : new EventError({ code: \"malformed\", message: \"invalid engine event\", cause })\n )\n }))\n\n/**\n * Construct a versioned submission, validating before journal redaction.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const attempt = (\n payload: AttemptPayload,\n sourceId: Event.SourceId,\n sourceSeq: Event.SourceSeq,\n diagnostics: Schema.Json = null\n): Event.Input => {\n const validated = decodePayload(payload)\n return new Event.Input({\n runId: validated.lineage.runId,\n sourceId,\n sourceSeq,\n eventType: attemptEventType,\n payload: validated,\n meta: decodeJson(diagnostics)\n })\n}\n\n/**\n * Construct a versioned execution, deferred or clock submission. Existing\n * unversioned writers are unchanged and cannot manufacture missing lineage.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const stateEvent = (\n payload: StatePayload,\n sourceId: Event.SourceId,\n sourceSeq: Event.SourceSeq,\n diagnostics: Schema.Json = null\n): Event.Input => {\n const validated = Schema.decodeUnknownSync(StatePayload, strict)(payload)\n return new Event.Input({\n runId: validated.lineage.runId,\n sourceId,\n sourceSeq,\n eventType: stateEventType,\n payload: validated,\n meta: decodeJson(diagnostics)\n })\n}\n\n/**\n * Historical attempt markers deliberately remain incomplete evidence. No\n * result, timestamp, round or lineage root is invented for old rows.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const CurrentAttempt = Schema.Union([\n Schema.Struct({\n eventType: Schema.Literal(\"flows.engine.attempt-started\"),\n payload: Schema.Struct({\n version: Schema.optionalKey(Schema.Never),\n runId: Event.RunId,\n stepKeyDigest: Event.DispatchId,\n attempt: Event.NonNegativeQuantity,\n tier: Schema.Literals([\"sealed\", \"compensable\", \"irreversible\"])\n })\n }),\n Schema.Struct({\n eventType: Schema.Literal(\"flows.engine.attempt-finished\"),\n payload: Schema.Struct({\n version: Schema.optionalKey(Schema.Never),\n runId: Event.RunId,\n stepKeyDigest: Event.DispatchId,\n attempt: Event.NonNegativeQuantity,\n state: Schema.Literals([\"succeeded\", \"failed\"])\n })\n })\n])\n\n/**\n * Decode current markers using their recorded lineage, without upgrading bytes.\n *\n * @category decoders\n * @since 1.0.0\n */\nexport const decodeCurrentAttempt = (input: unknown, consumer: Consumer) =>\n Effect.gen(function*() {\n const entry = yield* decodeRow(input)\n const marker = yield* Schema.decodeUnknownEffect(CurrentAttempt)(entry)\n const meta = yield* Schema.decodeUnknownEffect(Schema.Struct({ lineageId: Event.LineageId }))(entry.meta)\n if (\n entry.runId !== consumer.runId || marker.payload.runId !== entry.runId ||\n meta.lineageId !== consumer.lineageId || !consumer.sources.includes(entry.sourceId)\n ) {\n throw new EventError({\n code: \"foreign\",\n message: \"current attempt marker is outside the consumer scope\",\n cause: entry\n })\n }\n return { entry, marker, lineageId: meta.lineageId }\n }).pipe(Effect.catchCause((failure) => {\n const cause = Cause.squash(failure)\n return Effect.fail(\n cause instanceof EventError\n ? cause\n : new EventError({ code: \"malformed\", message: \"invalid current attempt marker\", cause })\n )\n }))\n\n/**\n * Where a declaration was written, as a durable record may carry it.\n *\n * Repo-relative by contract: a journal is read on machines that are not the\n * one that wrote it, so an absolute path is at best noise and at worst an\n * operator's home directory published into a run's history. A writer that\n * cannot make a path relative omits the field.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const DeclaredAt = Schema.Struct({\n path: Schema.NonEmptyString.check(Schema.makeFilter((value) => !value.startsWith(\"/\"))),\n line: Event.NonNegativeQuantity\n})\n\n/**\n * A root that names the whole filesystem, which is no root at all.\n *\n * `process.cwd()` is `\"/\"` for a host a launcher started outside any\n * directory, and relativizing against it would make every absolute path\n * \"relative\": an operator's home directory, minus one leading slash, written\n * into a run's permanent history. The empty string is the same statement, and\n * a Windows drive root (`C:` or `C:\\`) is the same statement again. @private\n */\nconst isFilesystemRoot = (root: string): boolean => root === \"\" || root === \"/\" || /^[A-Za-z]:[\\\\/]?$/.test(root)\n\n/**\n * A declaration path as {@link DeclaredAt} may carry it: relative to the\n * root, or nothing.\n *\n * It lives beside the schema that refuses an absolute path, because obeying\n * that refusal is the writer's one job and every writer obeys it the same\n * way. A path outside the root is omitted rather than recorded with `..`\n * segments, because a reader resolving those would have to know the root,\n * which is exactly the machine-specific fact this strips. A root that is the\n * filesystem itself strips nothing, so it is read as no root.\n *\n * @category accessors\n * @since 1.0.0\n */\nexport const relativePath = (root: string | undefined, path: string): string | undefined => {\n if (root === undefined || isFilesystemRoot(root) || path === \"\") return undefined\n const base = root.endsWith(\"/\") ? root : `${root}/`\n if (!path.startsWith(base)) return undefined\n const relative = path.slice(base.length)\n return relative === \"\" ? undefined : relative\n}\n\n/**\n * One node of the graph a run was driven from.\n *\n * `kind` is open text because the two executors name kinds differently and\n * both are true: the plan scheduler's node is a `step`, an `agent` or a\n * `merge`, while the interpreter's is the authoring variant it was observed\n * at. A closed union here would force one of them to lie.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeSummary = Schema.Struct({\n id: Schema.NonEmptyString,\n kind: Schema.String,\n dependsOn: Schema.Array(Schema.NonEmptyString),\n tier: Schema.Literals([\"sealed\", \"compensable\", \"irreversible\"]),\n key: Schema.optionalKey(Schema.String),\n generation: Schema.optionalKey(Event.NonNegativeQuantity),\n action: Schema.optionalKey(Schema.String),\n effects: Schema.optionalKey(Schema.Json),\n declaredAt: Schema.optionalKey(DeclaredAt)\n})\n\n/**\n * One edge of that graph, with the reason the builder drew it.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const EdgeSummary = Schema.Struct({\n from: Schema.NonEmptyString,\n to: Schema.NonEmptyString,\n reason: Schema.Literals([\"value\", \"continuation\", \"failure\"])\n})\n\n/**\n * The immutable name of a tree a host read declaration sites out of.\n *\n * Exactly the forty lowercase hex digits the only producer emits: a jj\n * working-copy commit id, or a git commit for a tree that still matches one\n * (`SourceRevision.objectId`). It is narrowed here rather than left as text\n * because a reader puts it straight into a contents route's `?ref=`, and\n * `DeclaredAt` beside it refuses an absolute path for the same class of\n * reason: a field that only ever holds one shape should refuse the others at\n * the boundary rather than at whatever spawns a process downstream.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const SourceRevision = Schema.NonEmptyString.check(Schema.makeFilter((value) => /^[0-9a-f]{40}$/.test(value)))\n\n/**\n * The graph, or one page of it, carried beside a plan record.\n *\n * `edges` is optional because only one writer can answer it honestly. A plan\n * names its edges through each node's `dependsOn` and knows no reason for\n * them; an interpreter knows the reason it drew each one. A writer without\n * reasons omits the field rather than labelling every edge `value`.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeGraph = Schema.Struct({\n nodes: Schema.Array(NodeSummary),\n edges: Schema.optionalKey(Schema.Array(EdgeSummary)),\n /**\n * The revision of the tree the nodes on this page were read out of.\n *\n * A `declaredAt` is a path and a line, and neither says which bytes were\n * at that line: a working tree moves, so the same path after an edit or a\n * branch switch is a different file. Only the writer can answer this —\n * like the root a path is made relative to — so it travels with the page\n * the sites travel on, and a reader can ask for the file AT this revision\n * instead of whatever is on disk when they look.\n *\n * Optional because only a writer served out of a version-controlled tree\n * can name one. A writer that cannot says nothing, and a reader that has\n * nothing shows no code rather than code it cannot bind (D-068).\n */\n sourceRevision: Schema.optionalKey(SourceRevision)\n})\n\n/**\n * A plan was recorded and a run is about to be driven under it.\n *\n * `nodes` is the node COUNT the record has always carried. The node list\n * arrives beside it as `graph`, optional and paged, because a journal entry\n * has a byte bound: what does not fit follows as {@link SubgraphAppended}\n * pages rather than being clipped.\n *\n * Everything an executor cannot honestly answer is optional rather than\n * invented. The interpreter drives a graph with no plan id, no plan digest\n * and no store to record an outcome with, and saying so is the point of this\n * schema.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const PlanRecordedPayload = Schema.Struct({\n planId: Schema.optionalKey(Schema.NonEmptyString),\n flow: Schema.NonEmptyString,\n digest: Schema.optionalKey(Schema.String),\n baseDigest: Schema.optionalKey(Schema.String),\n generation: Event.NonNegativeQuantity,\n nodes: Event.NonNegativeQuantity,\n outcome: Schema.optionalKey(Schema.String),\n page: Schema.optionalKey(Event.NonNegativeQuantity),\n pages: Schema.optionalKey(Event.NonNegativeQuantity),\n graph: Schema.optionalKey(NodeGraph)\n})\n\n/**\n * An elaboration appended a pre-keyed subgraph to the same plan, or the next\n * page of a graph too large for one record.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const SubgraphAppendedPayload = Schema.Struct({\n planId: Schema.optionalKey(Schema.NonEmptyString),\n flow: Schema.optionalKey(Schema.NonEmptyString),\n digest: Schema.optionalKey(Schema.String),\n baseDigest: Schema.optionalKey(Schema.String),\n generation: Event.NonNegativeQuantity,\n nodeIds: Schema.Array(Schema.NonEmptyString),\n page: Schema.optionalKey(Event.NonNegativeQuantity),\n pages: Schema.optionalKey(Event.NonNegativeQuantity),\n graph: Schema.optionalKey(NodeGraph)\n})\n\n/**\n * A plan node was admitted and its work is about to start.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeScheduledPayload = Schema.Struct({\n planId: Schema.optionalKey(Schema.NonEmptyString),\n nodeId: Schema.NonEmptyString,\n kind: Schema.String,\n planKey: Schema.optionalKey(Schema.String),\n dispatchKey: Schema.optionalKey(Schema.String),\n attempt: Event.PositiveQuantity,\n priority: Schema.optionalKey(Schema.Int),\n waited: Schema.optionalKey(Event.NonNegativeQuantity),\n action: Schema.optionalKey(Schema.String)\n})\n\n/**\n * A bounded look at what a node settled with.\n *\n * `preview` is JSON text, redacted before it was encoded and cut to a fixed\n * ceiling afterwards, so a long value costs a durable row a known number of\n * bytes rather than however many it happens to hold. `truncated` says the cut\n * happened, which is also the warning that the text is a PREFIX of JSON and\n * no longer parses. `bytes` is the size of the encoding the preview was cut\n * from, so a reader can say how much was left out without being shown it; a\n * value too large for a writer to redact at all is named by the size of its\n * own encoding, with an empty preview and the flag set.\n *\n * Redaction comes first and truncation second on purpose: cutting the text\n * first can split a credential across the boundary, and a textual redactor\n * scanning the remains would no longer recognise it.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeResultSummary = Schema.Struct({\n preview: Schema.String,\n bytes: Event.NonNegativeQuantity,\n truncated: Schema.Boolean\n})\n\n/**\n * A plan node reached an outcome.\n *\n * The outcomes are Skyframe's evaluation states: `built` ran,\n * `clean` was served from records, `failed` raised, `skipped` was never\n * reached, and `deferred` is a scheduling debt the plan scheduler alone\n * records.\n *\n * `attempts` is the executor's own count. For the plan scheduler it is the\n * node's; for the interpreter it is the highest durable attempt any of this\n * node's dispatches ran as, because the interpreter settles each node once\n * and a retry happens underneath it inside one dispatch.\n *\n * `stepKeyDigests` names the dispatches the node drove, and it is the join\n * `flows.engine.attempt-started` could not make on its own: an attempt record\n * carries a step key digest and no node id, so an attempt belongs to the node\n * whose settlement claims its digest. A retried dispatch keeps ONE digest —\n * the attempt is folded into no key — so the list is distinct dispatches, not\n * attempts. A writer that derives no digests omits the field; a node that\n * dispatched nothing records an empty list, which is a different statement.\n *\n * `result` is what the node settled with: the success value for `built` and\n * `clean`, the typed failure for `failed`, bounded and redacted by the writer.\n * Absent when the writer kept none.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeSettledPayload = Schema.Struct({\n planId: Schema.optionalKey(Schema.NonEmptyString),\n nodeId: Schema.NonEmptyString,\n planKey: Schema.optionalKey(Schema.String),\n dispatchKey: Schema.optionalKey(Schema.String),\n stepKeyDigests: Schema.optionalKey(Schema.Array(Schema.NonEmptyString)),\n outcome: Schema.Literals([\"built\", \"clean\", \"failed\", \"skipped\", \"deferred\"]),\n attempts: Event.NonNegativeQuantity,\n rebases: Schema.optionalKey(Event.NonNegativeQuantity),\n action: Schema.optionalKey(Schema.String),\n result: Schema.optionalKey(NodeResultSummary)\n})\n\n/**\n * A scheduled node's dispatch identity was invalidated and re-keyed.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeInvalidatedPayload = Schema.Struct({\n planId: Schema.NonEmptyString,\n nodeId: Schema.NonEmptyString,\n planKey: Schema.String,\n from: Schema.String,\n to: Schema.String,\n reason: Schema.Literal(\"measured-inputs-changed\")\n})\n\n/**\n * The reconciliation seam returned a verdict for a deviation.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const NodeReconciledPayload = Schema.Struct({\n planId: Schema.NonEmptyString,\n nodeId: Schema.NonEmptyString,\n trigger: Schema.String,\n verdict: Schema.Json\n})\n\n/**\n * Where a declaration was written, as a durable record carries it.\n *\n * @category models\n * @since 1.0.0\n */\nexport type DeclaredAt = typeof DeclaredAt.Type\n\n/**\n * One node of the graph a run was driven from.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeSummary = typeof NodeSummary.Type\n\n/**\n * One edge of the graph a run was driven from.\n *\n * @category models\n * @since 1.0.0\n */\nexport type EdgeSummary = typeof EdgeSummary.Type\n\n/**\n * The graph, or one page of it, carried beside a plan record.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeGraph = typeof NodeGraph.Type\n\n/**\n * A plan was recorded and a run is about to be driven under it.\n *\n * @category models\n * @since 1.0.0\n */\nexport type PlanRecordedPayload = typeof PlanRecordedPayload.Type\n\n/**\n * An elaboration appended a subgraph, or the next page of a large graph.\n *\n * @category models\n * @since 1.0.0\n */\nexport type SubgraphAppendedPayload = typeof SubgraphAppendedPayload.Type\n\n/**\n * A plan node was admitted and its work is about to start.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeScheduledPayload = typeof NodeScheduledPayload.Type\n\n/**\n * A bounded look at what a node settled with.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeResultSummary = typeof NodeResultSummary.Type\n\n/**\n * A plan node reached an outcome.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeSettledPayload = typeof NodeSettledPayload.Type\n\n/**\n * A scheduled node's dispatch identity was invalidated and re-keyed.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeInvalidatedPayload = typeof NodeInvalidatedPayload.Type\n\n/**\n * The reconciliation seam's verdict for one deviation.\n *\n * @category models\n * @since 1.0.0\n */\nexport type NodeReconciledPayload = typeof NodeReconciledPayload.Type\n\n/**\n * The event type each node and plan payload is recorded under.\n *\n * Readers and writers share these identities, so a value here is stored\n * history and changing one requires migrating it.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const nodeEventTypes = {\n planRecorded: \"flows.engine.plan-recorded\",\n subgraphAppended: \"flows.engine.subgraph-appended\",\n nodeScheduled: \"flows.engine.node-scheduled\",\n nodeSettled: \"flows.engine.node-settled\",\n nodeInvalidated: \"flows.engine.node-invalidated\",\n nodeReconciled: \"flows.engine.node-reconciled\"\n} as const\n"]}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Native execution observations, independent of operational ownership leases.
3
+ * @since 1.0.0
4
+ */
5
+ import * as Schema from "effect/Schema";
6
+ /** Native semantic lifecycle fields recorded by the owning writer.
7
+ * @category schemas
8
+ * @since 1.0.0
9
+ */
10
+ export declare const Observation: Schema.Struct<{
11
+ readonly executionId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
12
+ readonly flowName: Schema.NonEmptyString;
13
+ readonly status: Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled"]>;
14
+ readonly createdAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
15
+ readonly startedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
16
+ readonly finishedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
17
+ readonly parentRunId: Schema.NullOr<Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">>;
18
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
19
+ readonly roundOrdinal: Schema.Int;
20
+ readonly cancelRequestedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
21
+ readonly treeVersion: Schema.optional<Schema.Literal<1>>;
22
+ readonly parentPolicy: Schema.optional<Schema.Literals<readonly ["cancel", "detach"]>>;
23
+ readonly waiting: Schema.NullOr<Schema.Struct<{
24
+ readonly reason: Schema.NonEmptyString;
25
+ readonly wakeAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
26
+ readonly tokenDigest: Schema.NullOr<Schema.NonEmptyString>;
27
+ readonly point: Schema.optional<Schema.NullOr<Schema.String>>;
28
+ readonly request: Schema.optional<Schema.NullOr<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
29
+ }>>;
30
+ }>;
31
+ /** The value form of a native execution observation.
32
+ * @category models
33
+ * @since 1.0.0
34
+ */
35
+ export type Observation = typeof Observation.Type;
36
+ /** A new observation baseline never invents the preceding history.
37
+ * @category schemas
38
+ * @since 1.0.0
39
+ */
40
+ export declare const Fact: Schema.Struct<{
41
+ readonly version: Schema.Literal<1>;
42
+ readonly baseline: Schema.Literals<readonly ["created", "legacy"]>;
43
+ readonly observation: Schema.Struct<{
44
+ readonly executionId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
45
+ readonly flowName: Schema.NonEmptyString;
46
+ readonly status: Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled"]>;
47
+ readonly createdAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
48
+ readonly startedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
49
+ readonly finishedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
50
+ readonly parentRunId: Schema.NullOr<Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">>;
51
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
52
+ readonly roundOrdinal: Schema.Int;
53
+ readonly cancelRequestedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
54
+ readonly treeVersion: Schema.optional<Schema.Literal<1>>;
55
+ readonly parentPolicy: Schema.optional<Schema.Literals<readonly ["cancel", "detach"]>>;
56
+ readonly waiting: Schema.NullOr<Schema.Struct<{
57
+ readonly reason: Schema.NonEmptyString;
58
+ readonly wakeAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
59
+ readonly tokenDigest: Schema.NullOr<Schema.NonEmptyString>;
60
+ readonly point: Schema.optional<Schema.NullOr<Schema.String>>;
61
+ readonly request: Schema.optional<Schema.NullOr<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
62
+ }>>;
63
+ }>;
64
+ }>;
65
+ /** A corrupt/legacy row can still settle, but cannot establish a replay baseline.
66
+ * @category schemas
67
+ * @since 1.0.0
68
+ */
69
+ export declare const UnavailableFact: Schema.Struct<{
70
+ readonly version: Schema.Literal<1>;
71
+ readonly unavailable: Schema.Literal<"invalid-observation">;
72
+ }>;
73
+ /** Root identity stays fixed while lifecycle follows its latest trampoline round.
74
+ * @category schemas
75
+ * @since 1.0.0
76
+ */
77
+ export declare const View: Schema.Struct<{
78
+ readonly root: Schema.Struct<{
79
+ readonly executionId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
80
+ readonly flowName: Schema.NonEmptyString;
81
+ readonly status: Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled"]>;
82
+ readonly createdAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
83
+ readonly startedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
84
+ readonly finishedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
85
+ readonly parentRunId: Schema.NullOr<Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">>;
86
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
87
+ readonly roundOrdinal: Schema.Int;
88
+ readonly cancelRequestedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
89
+ readonly treeVersion: Schema.optional<Schema.Literal<1>>;
90
+ readonly parentPolicy: Schema.optional<Schema.Literals<readonly ["cancel", "detach"]>>;
91
+ readonly waiting: Schema.NullOr<Schema.Struct<{
92
+ readonly reason: Schema.NonEmptyString;
93
+ readonly wakeAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
94
+ readonly tokenDigest: Schema.NullOr<Schema.NonEmptyString>;
95
+ readonly point: Schema.optional<Schema.NullOr<Schema.String>>;
96
+ readonly request: Schema.optional<Schema.NullOr<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
97
+ }>>;
98
+ }>;
99
+ readonly current: Schema.Struct<{
100
+ readonly executionId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
101
+ readonly flowName: Schema.NonEmptyString;
102
+ readonly status: Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled"]>;
103
+ readonly createdAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
104
+ readonly startedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
105
+ readonly finishedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
106
+ readonly parentRunId: Schema.NullOr<Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">>;
107
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
108
+ readonly roundOrdinal: Schema.Int;
109
+ readonly cancelRequestedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
110
+ readonly treeVersion: Schema.optional<Schema.Literal<1>>;
111
+ readonly parentPolicy: Schema.optional<Schema.Literals<readonly ["cancel", "detach"]>>;
112
+ readonly waiting: Schema.NullOr<Schema.Struct<{
113
+ readonly reason: Schema.NonEmptyString;
114
+ readonly wakeAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
115
+ readonly tokenDigest: Schema.NullOr<Schema.NonEmptyString>;
116
+ readonly point: Schema.optional<Schema.NullOr<Schema.String>>;
117
+ readonly request: Schema.optional<Schema.NullOr<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
118
+ }>>;
119
+ }>;
120
+ /** Redacted display observations; opaque wake tokens are never journal authority. */
121
+ readonly humanWaits: Schema.optional<Schema.$Array<Schema.Struct<{
122
+ readonly executionId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
123
+ readonly flowName: Schema.NonEmptyString;
124
+ readonly status: Schema.Literals<readonly ["pending", "running", "suspended", "completed", "failed", "cancelled"]>;
125
+ readonly createdAtMs: Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">;
126
+ readonly startedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
127
+ readonly finishedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
128
+ readonly parentRunId: Schema.NullOr<Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">>;
129
+ readonly lineageId: Schema.brand<Schema.String, "@smthrs/journal/JournalEvent/RunId">;
130
+ readonly roundOrdinal: Schema.Int;
131
+ readonly cancelRequestedAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
132
+ readonly treeVersion: Schema.optional<Schema.Literal<1>>;
133
+ readonly parentPolicy: Schema.optional<Schema.Literals<readonly ["cancel", "detach"]>>;
134
+ readonly waiting: Schema.NullOr<Schema.Struct<{
135
+ readonly reason: Schema.NonEmptyString;
136
+ readonly wakeAtMs: Schema.NullOr<Schema.brand<Schema.Int, "@smthrs/journal/TimestampMs">>;
137
+ readonly tokenDigest: Schema.NullOr<Schema.NonEmptyString>;
138
+ readonly point: Schema.optional<Schema.NullOr<Schema.String>>;
139
+ readonly request: Schema.optional<Schema.NullOr<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
140
+ }>>;
141
+ }>>>;
142
+ }>;
143
+ /** The value form of a logical execution view.
144
+ * @category models
145
+ * @since 1.0.0
146
+ */
147
+ export type View = typeof View.Type;
148
+ /** Source positions are native run-local sequence plus native journal generation.
149
+ * @category models
150
+ * @since 1.0.0
151
+ */
152
+ export interface Input {
153
+ readonly executionId: string;
154
+ readonly generation: number | null;
155
+ readonly sequence: number;
156
+ readonly eventType: string;
157
+ readonly payload: unknown;
158
+ readonly gap?: boolean;
159
+ }
160
+ /** Honest replay coverage of the selected native root and current round.
161
+ * @category schemas
162
+ * @since 1.0.0
163
+ */
164
+ export declare const Provenance: Schema.Struct<{
165
+ readonly source: Schema.Literals<readonly ["events", "legacy-observation", "unverified-observation"]>;
166
+ readonly rootExecutionId: Schema.String;
167
+ readonly humanWaits: Schema.optional<Schema.Literals<readonly ["events", "legacy-observation", "unverified-observation"]>>;
168
+ /** Tree coverage starts independently in every native run-local stream. */
169
+ readonly humanWaitSources: Schema.optional<Schema.$Array<Schema.Struct<{
170
+ readonly executionId: Schema.String;
171
+ readonly generation: Schema.Number;
172
+ readonly baseline: Schema.Literals<readonly ["created", "legacy"]>;
173
+ readonly fromSequence: Schema.Number;
174
+ readonly throughSequence: Schema.Number;
175
+ }>>>;
176
+ readonly currentExecutionId: Schema.optional<Schema.String>;
177
+ readonly generation: Schema.optional<Schema.Number>;
178
+ readonly baseline: Schema.optional<Schema.Literals<readonly ["created", "legacy"]>>;
179
+ readonly fromSequence: Schema.optional<Schema.Number>;
180
+ readonly throughSequence: Schema.optional<Schema.Number>;
181
+ }>;
182
+ /** Compare semantic state only; heartbeat and owner incarnation are operational.
183
+ * @category projections
184
+ * @since 1.0.0
185
+ */
186
+ export declare const equal: (left: Observation, right: Observation) => boolean;
187
+ /**
188
+ * Fold native facts after a separately authenticated root binding. Sequence gaps
189
+ * alone are not loss: SQL journal rollbacks leave unused sequence reservations.
190
+ * A real omission/generation boundary invalidates coverage until a new complete
191
+ * baseline is recorded. Unknown producer versions never become successful replay.
192
+ * @category projections
193
+ * @since 1.0.0
194
+ */
195
+ export declare const fold: (inputs: ReadonlyArray<Input>, rootExecutionId: string, observed?: View) => {
196
+ readonly view: View | undefined;
197
+ readonly provenance: typeof Provenance.Type;
198
+ };
199
+ /** Control bridge inputs retain their native run-local positions and generation.
200
+ * @category models
201
+ * @since 1.0.0
202
+ */
203
+ export interface BridgeEvent {
204
+ readonly runId?: string | undefined;
205
+ readonly kind: string;
206
+ readonly payload: unknown;
207
+ }
208
+ /** Interpret only the host's explicit root binding, never an ID naming convention.
209
+ * @category projections
210
+ * @since 1.0.0
211
+ */
212
+ export declare const foldControl: (events: ReadonlyArray<BridgeEvent>, controlRunId: string, observed?: View) => {
213
+ readonly view: View | undefined;
214
+ readonly provenance: typeof Provenance.Type;
215
+ } | undefined;
216
+ //# sourceMappingURL=ExecutionFact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionFact.d.ts","sourceRoot":"","sources":["../../src/ExecutionFact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;EAqBtB,CAAA;AACF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;EAIf,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe;;;EAG1B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGf,qFAAqF;;;;;;;;;;;;;;;;;;;;;;EAErF,CAAA;AACF;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAA;AAEnC;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CACvB;AACD;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;IAIrB,2EAA2E;;;;;;;;;;;;;EAa3E,CAAA;AAsBF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,WAAW,EAAE,OAAO,WAAW,KAAG,OAWH,CAAA;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,aAAa,CAAC,KAAK,CAAC,EAAE,iBAAiB,MAAM,EAAE,WAAW,IAAI,KAAG;IAC5F,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,UAAU,CAAC,IAAI,CAAA;CA8L5C,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,aAAa,CAAC,WAAW,CAAC,EAAE,cAAc,MAAM,EAAE,WAAW,IAAI;mBA/MpF,IAAI,GAAG,SAAS;yBACV,OAAO,UAAU,CAAC,IAAI;aAmR5C,CAAA"}