@yielded/agent 0.1.0-beta.173 → 0.1.0-beta.175

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 (266) hide show
  1. package/dist/{Admin-BX9ns28E.d.mts → Admin-Qa3I1oA5.d.mts} +61 -21
  2. package/dist/{Agent-9aBoIi74.d.mts → Agent-B39jRnFv.d.mts} +2 -2
  3. package/dist/{Agent-0WvBWWbM.mjs → Agent-BiRbr73L.mjs} +7 -6
  4. package/dist/Agent-BiRbr73L.mjs.map +1 -0
  5. package/dist/{AgentRuntime-BfP14534.d.mts → AgentRuntime-CHDyRbSf.d.mts} +12 -12
  6. package/dist/{AgentRuntime-CQ-qcETl.mjs → AgentRuntime-DaDKMasp.mjs} +290 -273
  7. package/dist/AgentRuntime-DaDKMasp.mjs.map +1 -0
  8. package/dist/{Digest-DCuPlhNk.mjs → Digest-C3EODOee.mjs} +42 -15
  9. package/dist/Digest-C3EODOee.mjs.map +1 -0
  10. package/dist/{DurableAgentRuntime-BAmSkWYr.mjs → DurableAgentRuntime-CPlw5_7e.mjs} +1557 -1458
  11. package/dist/DurableAgentRuntime-CPlw5_7e.mjs.map +1 -0
  12. package/dist/{EventSource-BwliwQz9.d.mts → EventSource-BTu68yDW.d.mts} +2 -2
  13. package/dist/InMemory.d.mts +2 -2
  14. package/dist/{MessageDelivery-B943ebI_.d.mts → MessageDelivery-DjAZJ4Fd.d.mts} +42 -42
  15. package/dist/{Messaging-C_6OOg_s.d.mts → Messaging-SVu6rWV8.d.mts} +12 -6
  16. package/dist/{MessagingHost-B8oKM7AC.d.mts → MessagingHost-C6SOAcoG.d.mts} +2 -2
  17. package/dist/{MessagingHost-CRUK4JBi.mjs → MessagingHost-CZCyrnvJ.mjs} +27 -26
  18. package/dist/MessagingHost-CZCyrnvJ.mjs.map +1 -0
  19. package/dist/{Output-Dsx6k52t.d.mts → Output-CRamN1Fy.d.mts} +2 -2
  20. package/dist/{PreparedInputAdmission-CxSJSiTl.d.mts → PreparedInputAdmission-wgY4JMZY.d.mts} +3 -3
  21. package/dist/{Records-BiuJDWNe.mjs → Records-DzL4Kbtw.mjs} +2 -2
  22. package/dist/{Records-BiuJDWNe.mjs.map → Records-DzL4Kbtw.mjs.map} +1 -1
  23. package/dist/{RunContinuation-FHM7XPjq.d.mts → RunContinuation-3jB5pULC.d.mts} +13 -7
  24. package/dist/{RunContinuation-DHYNAQFi.mjs → RunContinuation-BiyKJK32.mjs} +173 -82
  25. package/dist/RunContinuation-BiyKJK32.mjs.map +1 -0
  26. package/dist/{RunJournal-kfKVxJj7.mjs → RunJournal-CPMKcfd0.mjs} +106 -73
  27. package/dist/RunJournal-CPMKcfd0.mjs.map +1 -0
  28. package/dist/{RunOptions-D8zxFIrZ.d.mts → RunOptions-Be77lKVZ.d.mts} +2 -2
  29. package/dist/{RunStorage-uqPxps09.mjs → RunStorage-CzutHJBE.mjs} +10 -6
  30. package/dist/RunStorage-CzutHJBE.mjs.map +1 -0
  31. package/dist/{Scheduling-CVyfXlBR.mjs → Scheduling-07_dsGED.mjs} +12 -12
  32. package/dist/Scheduling-07_dsGED.mjs.map +1 -0
  33. package/dist/{Subagent-vpffemql.mjs → Subagent-CexndZSp.mjs} +53 -40
  34. package/dist/Subagent-CexndZSp.mjs.map +1 -0
  35. package/dist/{Subagent-E6tvd7-k.d.mts → Subagent-xhN_aD1r.d.mts} +20 -9
  36. package/dist/{SubagentHost-B6w2m-SI.d.mts → SubagentHost-D1xBgn9g.d.mts} +2 -2
  37. package/dist/{Subscription-DONig54Q.d.mts → Subscription-DmIHlOJK.d.mts} +2 -2
  38. package/dist/{SubscriptionInput-mJIRxWJM.d.mts → SubscriptionInput-DgcQhvbe.d.mts} +2 -2
  39. package/dist/{Thread-dk-QiNml.d.mts → Thread-DzdJAY4J.d.mts} +4 -3
  40. package/dist/{ThreadHistory-ByxS8HU1.d.mts → ThreadHistory-KPPBJLJb.d.mts} +12 -2
  41. package/dist/{ThreadImport-DckUMEqJ.mjs → ThreadImport-CjlG57vH.mjs} +9 -9
  42. package/dist/ThreadImport-CjlG57vH.mjs.map +1 -0
  43. package/dist/{ThreadImport-DpHxjBrA.d.mts → ThreadImport-DP-vOk2F.d.mts} +5 -5
  44. package/dist/{ThreadStore-CEekRa80.mjs → ThreadStore-EuUilthA.mjs} +162 -85
  45. package/dist/ThreadStore-EuUilthA.mjs.map +1 -0
  46. package/dist/{ThreadTransfer-B4gTQLIl.mjs → ThreadTransfer-DB_zsrtJ.mjs} +4 -4
  47. package/dist/{ThreadTransfer-B4gTQLIl.mjs.map → ThreadTransfer-DB_zsrtJ.mjs.map} +1 -1
  48. package/dist/{WorkerAdmission-DFVbbVh2.mjs → WorkerAdmission-eBeXt_mu.mjs} +5 -5
  49. package/dist/{WorkerAdmission-DFVbbVh2.mjs.map → WorkerAdmission-eBeXt_mu.mjs.map} +1 -1
  50. package/dist/{agent-registration-ByMZ_cK5.mjs → agent-registration-a6QYaG3h.mjs} +70 -57
  51. package/dist/agent-registration-a6QYaG3h.mjs.map +1 -0
  52. package/dist/capabilities/Approval.mjs +2 -2
  53. package/dist/capabilities/Approval.mjs.map +1 -1
  54. package/dist/capabilities/BrowserUse.d.mts +102 -1867
  55. package/dist/capabilities/BrowserUse.mjs +74 -798
  56. package/dist/capabilities/BrowserUse.mjs.map +1 -1
  57. package/dist/capabilities/Budget.mjs +3 -1
  58. package/dist/capabilities/Budget.mjs.map +1 -1
  59. package/dist/capabilities/CodeMode.d.mts +1 -1
  60. package/dist/capabilities/CodeMode.mjs +16 -9
  61. package/dist/capabilities/CodeMode.mjs.map +1 -1
  62. package/dist/capabilities/Commands.d.mts +1 -1
  63. package/dist/capabilities/McpClient.mjs +1 -1
  64. package/dist/capabilities/McpClient.mjs.map +1 -1
  65. package/dist/capabilities/Messaging.d.mts +1 -1
  66. package/dist/capabilities/Messaging.mjs +5 -5
  67. package/dist/capabilities/Messaging.mjs.map +1 -1
  68. package/dist/capabilities/ModelContext.d.mts +1 -1
  69. package/dist/capabilities/ModelContext.mjs +7 -5
  70. package/dist/capabilities/ModelContext.mjs.map +1 -1
  71. package/dist/capabilities/Redaction.mjs +49 -19
  72. package/dist/capabilities/Redaction.mjs.map +1 -1
  73. package/dist/capabilities/RunHooks.d.mts +2 -2
  74. package/dist/capabilities/RunHooks.mjs +1 -1
  75. package/dist/capabilities/RunHooks.mjs.map +1 -1
  76. package/dist/capabilities/Subagent.d.mts +1 -1
  77. package/dist/capabilities/Subagent.mjs +1 -1
  78. package/dist/capabilities/SubagentReservations.mjs +3 -1
  79. package/dist/capabilities/SubagentReservations.mjs.map +1 -1
  80. package/dist/capabilities/WebCapture.mjs.map +1 -1
  81. package/dist/capabilities/WebSearch.mjs +7 -7
  82. package/dist/capabilities/WebSearch.mjs.map +1 -1
  83. package/dist/core/Agent.d.mts +1 -1
  84. package/dist/core/Agent.mjs +1 -1
  85. package/dist/core/AgentUpdates.mjs +8 -8
  86. package/dist/core/AgentUpdates.mjs.map +1 -1
  87. package/dist/core/Thread.d.mts +2 -2
  88. package/dist/core/Thread.mjs +6 -4
  89. package/dist/core/Thread.mjs.map +1 -1
  90. package/dist/core/Usage.mjs +2 -2
  91. package/dist/core/Usage.mjs.map +1 -1
  92. package/dist/durable/ActivityStore.mjs +1 -1
  93. package/dist/durable/Admin.d.mts +1 -1
  94. package/dist/durable/Admin.mjs +1 -1
  95. package/dist/durable/AgentRegistration.d.mts +1 -1
  96. package/dist/durable/AgentRegistration.mjs +1 -1
  97. package/dist/durable/Certification.d.mts +1 -1
  98. package/dist/durable/CommittedActivity.d.mts +1 -1
  99. package/dist/durable/CommittedActivity.mjs +3 -3
  100. package/dist/durable/Digest.mjs +1 -1
  101. package/dist/durable/DurableAgentRuntime.d.mts +1 -1
  102. package/dist/durable/DurableAgentRuntime.mjs +2 -2
  103. package/dist/durable/EventSource.d.mts +1 -1
  104. package/dist/durable/EventSource.mjs +7 -7
  105. package/dist/durable/EventSource.mjs.map +1 -1
  106. package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
  107. package/dist/durable/LifecyclePublication.d.mts +1 -1
  108. package/dist/durable/LifecyclePublication.mjs +2 -2
  109. package/dist/durable/MessageDelivery.d.mts +1 -1
  110. package/dist/durable/MessageDelivery.mjs +2 -2
  111. package/dist/durable/MessageDeliveryStoreConformance.d.mts +40 -40
  112. package/dist/durable/MessageDeliveryStoreConformance.mjs +2 -2
  113. package/dist/durable/PersistentHistory.d.mts +2 -2
  114. package/dist/durable/PersistentHistory.mjs +4 -4
  115. package/dist/durable/PreparedInputAdmission.d.mts +1 -1
  116. package/dist/durable/RecordFormat.mjs +3 -3
  117. package/dist/durable/RecordFormat.mjs.map +1 -1
  118. package/dist/durable/Records.mjs +1 -1
  119. package/dist/durable/Recovery.d.mts +1 -1
  120. package/dist/durable/Recovery.mjs +1 -1
  121. package/dist/durable/RunContinuation.d.mts +2 -2
  122. package/dist/durable/RunContinuation.mjs +3 -3
  123. package/dist/durable/RunJournal.d.mts +2 -2
  124. package/dist/durable/RunJournal.mjs +2 -2
  125. package/dist/durable/RunStorage.d.mts +1 -1
  126. package/dist/durable/RunStorage.mjs +1 -1
  127. package/dist/durable/Schedule.mjs +1 -1
  128. package/dist/durable/ScheduleStoreConformance.mjs +1 -1
  129. package/dist/durable/ScheduleTransition.mjs +1 -1
  130. package/dist/durable/Scheduling.d.mts +1 -1
  131. package/dist/durable/Scheduling.mjs +1 -1
  132. package/dist/durable/SettlementPublisher.d.mts +1 -1
  133. package/dist/durable/SettlementPublisher.mjs +3 -3
  134. package/dist/durable/SqlMemoryStore.mjs +5 -3
  135. package/dist/durable/SqlMemoryStore.mjs.map +1 -1
  136. package/dist/durable/SubmissionLedger.d.mts +1 -1
  137. package/dist/durable/SubmissionLedger.mjs +11 -3
  138. package/dist/durable/SubmissionLedger.mjs.map +1 -1
  139. package/dist/durable/SubmissionLedgerConformance.d.mts +1 -1
  140. package/dist/durable/SubmissionLedgerConformance.mjs +6 -6
  141. package/dist/durable/SubmissionStatus.d.mts +1 -1
  142. package/dist/durable/Subscription.d.mts +1 -1
  143. package/dist/durable/Subscription.mjs +2 -2
  144. package/dist/durable/SubscriptionInput.d.mts +1 -1
  145. package/dist/durable/SubscriptionInput.mjs +4 -4
  146. package/dist/durable/SubscriptionInput.mjs.map +1 -1
  147. package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
  148. package/dist/durable/SubscriptionStoreConformance.mjs +3 -3
  149. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -1
  150. package/dist/durable/SubscriptionTools.d.mts +2 -2
  151. package/dist/durable/SubscriptionTransition.d.mts +1 -1
  152. package/dist/durable/SubscriptionTransition.mjs +1 -1
  153. package/dist/durable/Subscriptions.d.mts +5 -5
  154. package/dist/durable/Subscriptions.mjs +3 -3
  155. package/dist/durable/Subscriptions.mjs.map +1 -1
  156. package/dist/durable/ThreadArchiveRange.d.mts +1 -1
  157. package/dist/durable/ThreadArchiveRange.mjs +1 -1
  158. package/dist/durable/ThreadContextHistory.d.mts +1 -1
  159. package/dist/durable/ThreadContextHistory.mjs +2 -2
  160. package/dist/durable/ThreadContextHistoryProjection.mjs +1 -1
  161. package/dist/durable/ThreadImport.d.mts +1 -1
  162. package/dist/durable/ThreadImport.mjs +1 -1
  163. package/dist/durable/ThreadInvariants.d.mts +3 -3
  164. package/dist/durable/ThreadInvariants.mjs +5 -5
  165. package/dist/durable/ThreadInvariants.mjs.map +1 -1
  166. package/dist/durable/ThreadProjection.mjs +1 -1
  167. package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
  168. package/dist/durable/ThreadReader.d.mts +1 -1
  169. package/dist/durable/ThreadReader.mjs +1 -1
  170. package/dist/durable/ThreadStore.d.mts +1 -1
  171. package/dist/durable/ThreadStore.mjs +2 -2
  172. package/dist/durable/ThreadStoreConformance.d.mts +1 -1
  173. package/dist/durable/ThreadStoreConformance.mjs +4 -4
  174. package/dist/durable/ThreadTransfer.d.mts +1 -1
  175. package/dist/durable/ThreadTransfer.mjs +1 -1
  176. package/dist/durable/ThreadWork.d.mts +2 -2
  177. package/dist/durable/ThreadWork.mjs +12 -6
  178. package/dist/durable/ThreadWork.mjs.map +1 -1
  179. package/dist/durable/ToolReconciler.mjs +1 -1
  180. package/dist/durable/WakeScheduler.mjs +23 -39
  181. package/dist/durable/WakeScheduler.mjs.map +1 -1
  182. package/dist/durable/WorkerAdmission.d.mts +1 -1
  183. package/dist/durable/WorkerAdmission.mjs +1 -1
  184. package/dist/durable/WorkerHost.d.mts +2 -2
  185. package/dist/engine/AgentRuntime.d.mts +1 -1
  186. package/dist/engine/AgentRuntime.mjs +1 -1
  187. package/dist/engine/MessagingHost.d.mts +1 -1
  188. package/dist/engine/MessagingHost.mjs +1 -1
  189. package/dist/engine/Output.d.mts +1 -1
  190. package/dist/engine/Output.mjs +1 -1
  191. package/dist/engine/RunOptions.d.mts +1 -1
  192. package/dist/engine/SubagentHost.d.mts +1 -1
  193. package/dist/engine/ThreadHistory.d.mts +1 -1
  194. package/dist/engine/ThreadHistory.mjs +3 -2
  195. package/dist/engine/ThreadHistory.mjs.map +1 -1
  196. package/dist/index.d.mts +21 -21
  197. package/dist/index.mjs +16 -16
  198. package/dist/{output-contract-CMIhu4Cw.mjs → output-contract-DCnLYCdp.mjs} +12 -15
  199. package/dist/{output-contract-CMIhu4Cw.mjs.map → output-contract-DCnLYCdp.mjs.map} +1 -1
  200. package/dist/{run-context-reader-OcsZr4bk.d.mts → run-context-reader-DVhJZ1Qe.d.mts} +2 -2
  201. package/package.json +1 -1
  202. package/src/capabilities/Approval.ts +58 -60
  203. package/src/capabilities/BrowserUse.ts +89 -944
  204. package/src/capabilities/Budget.ts +8 -1
  205. package/src/capabilities/CodeMode.ts +57 -33
  206. package/src/capabilities/McpClient.ts +2 -2
  207. package/src/capabilities/Messaging.ts +51 -55
  208. package/src/capabilities/ModelContext.ts +5 -2
  209. package/src/capabilities/Redaction.ts +64 -34
  210. package/src/capabilities/RunHooks.ts +52 -55
  211. package/src/capabilities/Subagent.ts +33 -33
  212. package/src/capabilities/SubagentReservations.ts +9 -1
  213. package/src/capabilities/WebCapture.ts +6 -0
  214. package/src/capabilities/WebSearch.ts +10 -7
  215. package/src/capabilities/internal/subagent-background.ts +202 -158
  216. package/src/core/Agent.ts +11 -6
  217. package/src/core/AgentUpdates.ts +8 -8
  218. package/src/core/Thread.ts +142 -146
  219. package/src/core/Usage.ts +7 -8
  220. package/src/core/internal/agent-updates.ts +1 -0
  221. package/src/durable/DurableAgentRuntime.ts +1024 -829
  222. package/src/durable/EventSource.ts +15 -9
  223. package/src/durable/RecordFormat.ts +5 -3
  224. package/src/durable/RunContinuation.ts +316 -113
  225. package/src/durable/RunJournal.ts +106 -114
  226. package/src/durable/RunStorage.ts +129 -124
  227. package/src/durable/Scheduling.ts +639 -651
  228. package/src/durable/SqlMemoryStore.ts +8 -6
  229. package/src/durable/SubmissionLedger.ts +11 -0
  230. package/src/durable/SubscriptionInput.ts +5 -3
  231. package/src/durable/SubscriptionStoreConformance.ts +23 -23
  232. package/src/durable/Subscriptions.ts +18 -19
  233. package/src/durable/ThreadImport.ts +18 -19
  234. package/src/durable/ThreadInvariants.ts +2 -1
  235. package/src/durable/ThreadStore.ts +217 -111
  236. package/src/durable/ThreadWork.ts +11 -2
  237. package/src/durable/WakeScheduler.ts +34 -66
  238. package/src/durable/internal/StorageOwner.ts +10 -4
  239. package/src/durable/internal/agent-registration.ts +96 -89
  240. package/src/durable/internal/canonical-json.ts +61 -20
  241. package/src/durable/internal/prompt-history-cache.ts +13 -4
  242. package/src/durable/internal/record-encoding.ts +120 -64
  243. package/src/durable/internal/schedule-time.ts +6 -6
  244. package/src/durable/internal/usage-totals.ts +35 -0
  245. package/src/durable/internal/worker-host.ts +69 -74
  246. package/src/engine/MessagingHost.ts +4 -2
  247. package/src/engine/ThreadHistory.ts +47 -48
  248. package/src/engine/internal/agent-runtime.ts +1298 -1217
  249. package/src/engine/internal/output-contract.ts +15 -15
  250. package/src/engine/internal/primitive-delta.ts +2 -3
  251. package/src/engine/internal/provisional-text.ts +12 -10
  252. package/src/engine/internal/tool-exposure.ts +22 -18
  253. package/src/engine/internal/tool-telemetry.ts +15 -12
  254. package/dist/Agent-0WvBWWbM.mjs.map +0 -1
  255. package/dist/AgentRuntime-CQ-qcETl.mjs.map +0 -1
  256. package/dist/Digest-DCuPlhNk.mjs.map +0 -1
  257. package/dist/DurableAgentRuntime-BAmSkWYr.mjs.map +0 -1
  258. package/dist/MessagingHost-CRUK4JBi.mjs.map +0 -1
  259. package/dist/RunContinuation-DHYNAQFi.mjs.map +0 -1
  260. package/dist/RunJournal-kfKVxJj7.mjs.map +0 -1
  261. package/dist/RunStorage-uqPxps09.mjs.map +0 -1
  262. package/dist/Scheduling-CVyfXlBR.mjs.map +0 -1
  263. package/dist/Subagent-vpffemql.mjs.map +0 -1
  264. package/dist/ThreadImport-DckUMEqJ.mjs.map +0 -1
  265. package/dist/ThreadStore-CEekRa80.mjs.map +0 -1
  266. package/dist/agent-registration-ByMZ_cK5.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionStoreConformance.mjs","names":[],"sources":["../../src/durable/SubscriptionStoreConformance.ts"],"sourcesContent":["import { Clock, Effect, Result, Schema } from \"effect\";\nimport { TestClock } from \"effect/testing\";\n\nimport { AgentId, ThreadId, ReceiptId, SubmissionId } from \"../core/Identifiers.ts\";\nimport { Receipt } from \"./DurableAgentRuntime.ts\";\nimport { DefinitionDigests, Digest } from \"./Records.ts\";\nimport { IdempotencyKey, Principal, QueueSequence } from \"./SubmissionLedger.ts\";\nimport {\n type AcceptedEvent,\n defaultSubscriptionLimits,\n type SourcePartition,\n type SubscriptionDelivery,\n type SubscriptionRecord,\n SubscriptionStore,\n type SubscriptionStoreFailure,\n} from \"./Subscription.ts\";\n\nexport class SubscriptionStoreConformanceViolation extends Schema.TaggedError<SubscriptionStoreConformanceViolation>()(\n \"SubscriptionStoreConformanceViolation\",\n { caseName: Schema.String, message: Schema.String },\n) {}\n\nexport interface SubscriptionStoreConformanceCase {\n readonly name: string;\n readonly run: Effect.Effect<\n void,\n SubscriptionStoreFailure | SubscriptionStoreConformanceViolation,\n SubscriptionStore\n >;\n}\n\nexport const subscriptionConformancePartition: SourcePartition = {\n tenantId: \"subscription-conformance\",\n address: \"source-address\",\n};\n\nconst principal = Schema.decodeSync(Principal)(\"subscription-conformance-principal\");\nconst agentId = Schema.decodeSync(AgentId)(\"subscription-conformance-agent\");\nconst threadId = Schema.decodeSync(ThreadId)(\"subscription-conformance-thread\");\nconst digest = (character: string) => Schema.decodeSync(Digest)(character.repeat(64));\n\nconst definitions = DefinitionDigests.make({\n agent: digest(\"a\"),\n model: digest(\"b\"),\n tools: digest(\"c\"),\n});\n\nconst record = (\n name: string,\n mode: \"once\" | \"continuous\" = \"once\",\n ownerId = \"owner\",\n): SubscriptionRecord => ({\n schemaVersion: 1,\n key: { partition: subscriptionConformancePartition, ownerId, subscriptionId: name },\n creationFingerprint: digest(name.charCodeAt(0) % 2 === 0 ? \"d\" : \"e\"),\n createdBy: principal,\n createdAtMillis: 1,\n ordinal: 0,\n configurationRevision: 1,\n configurationFingerprint: digest(name.charCodeAt(0) % 2 === 0 ? \"d\" : \"e\"),\n creationConfiguration: {\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n parameters: { name },\n context: { name },\n mode,\n expiresAtMillis: 100_000,\n destination: { _tag: \"ExistingThread\", threadId },\n deliveryPrincipal: principal,\n agentId,\n definitions,\n },\n configuration: {\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n parameters: { name },\n context: { name },\n mode,\n expiresAtMillis: 100_000,\n destination: { _tag: \"ExistingThread\", threadId },\n deliveryPrincipal: principal,\n agentId,\n definitions,\n },\n state: \"active\",\n recovery: null,\n});\n\nconst event = (name: string, payloadDigest = digest(\"f\")): AcceptedEvent => ({\n schemaVersion: 1,\n partition: subscriptionConformancePartition,\n eventId: name,\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n payload: { name },\n payloadDigest,\n acceptedAtMillis: 10,\n cutoff: 0,\n cursor: 0,\n routingComplete: false,\n routingFailure: null,\n nextAttemptAtMillis: 10,\n});\n\nconst delivery = (\n subscription: SubscriptionRecord,\n accepted: AcceptedEvent,\n suffix = \"0\",\n): SubscriptionDelivery => {\n const deliveryId = digest(suffix === \"0\" ? \"1\" : \"2\");\n\n return {\n schemaVersion: 1,\n key: { subscription: subscription.key, eventId: accepted.eventId },\n deliveryId,\n source: accepted.source,\n subscriptionFingerprint: subscription.configurationFingerprint,\n configurationRevision: subscription.configurationRevision,\n configuration: subscription.configuration,\n eventDigest: accepted.payloadDigest,\n threadId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n selectedAtMillis: suffix === \"0\" ? 20 : 21,\n state: \"selected\",\n envelope: null,\n envelopeDigest: null,\n retry: {\n generation: 0,\n attempts: 0,\n automaticAttempts: 0,\n parked: false,\n nextAttemptAtMillis: 20,\n lastAttemptAtMillis: null,\n lastFailure: null,\n },\n receipt: null,\n refusal: null,\n };\n};\n\nconst preparedInput = (selected: SubscriptionDelivery) => ({\n schemaVersion: 1 as const,\n threadId: selected.threadId,\n deliveryPrincipal: principal,\n agentId,\n definitions,\n input: { event: selected.key.eventId },\n inputDigest: digest(\"3\"),\n admissionKey: selected.admissionKey,\n authorization: { policyId: \"policy\", decisionId: \"decision\" },\n});\n\nconst receipt = Receipt.make({\n receiptId: Schema.decodeSync(ReceiptId)(\"subscription-conformance-receipt\"),\n submissionId: Schema.decodeSync(SubmissionId)(\"subscription-conformance-submission\"),\n threadId,\n queueSequence: Schema.decodeSync(QueueSequence)(1),\n});\n\nconst conformanceCase = (\n name: string,\n body: (\n ensure: (\n condition: boolean,\n message: string,\n ) => Effect.Effect<void, SubscriptionStoreConformanceViolation>,\n ) => Effect.Effect<\n void,\n SubscriptionStoreFailure | SubscriptionStoreConformanceViolation,\n SubscriptionStore\n >,\n): SubscriptionStoreConformanceCase => ({\n name,\n run: body((condition, message) =>\n condition\n ? Effect.void\n : Effect.fail(SubscriptionStoreConformanceViolation.make({ caseName: name, message })),\n ),\n});\n\nconst historicalOccurrenceReplay = conformanceCase(\n \"preserves unknown occurrence time on replay and fences known times\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const original = yield* store.accept(event(\"legacy-occurrence\"), defaultSubscriptionLimits);\n\n const replay = yield* store.accept(\n { ...original, occurredAtMillis: 1 },\n defaultSubscriptionLimits,\n );\n\n yield* ensure(\n replay.occurredAtMillis === undefined &&\n replay.acceptedAtMillis === original.acceptedAtMillis &&\n replay.cutoff === original.cutoff,\n \"replay invented historical occurrence or moved acceptance\",\n );\n\n const known = yield* store.accept(\n { ...event(\"known-occurrence\"), occurredAtMillis: 1 },\n defaultSubscriptionLimits,\n );\n\n const changed = yield* store\n .accept({ ...known, occurredAtMillis: 2 }, defaultSubscriptionLimits)\n .pipe(Effect.result);\n\n yield* ensure(Result.isFailure(changed), \"known occurrence time changed on replay\");\n\n const omitted = yield* store\n .accept(event(\"known-occurrence\"), defaultSubscriptionLimits)\n .pipe(Effect.result);\n\n yield* ensure(Result.isFailure(omitted), \"known occurrence time was erased on replay\");\n }),\n);\n\nconst cutoffAndIntake = conformanceCase(\n \"orders eligibility cutoffs and preserves duplicate intake\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const before = yield* store.register(record(\"before\"), defaultSubscriptionLimits);\n const accepted = yield* store.accept(event(\"cutoff\"), defaultSubscriptionLimits);\n const after = yield* store.register(record(\"after\"), defaultSubscriptionLimits);\n\n yield* ensure(\n before.ordinal < accepted.cutoff && after.ordinal > accepted.cutoff,\n \"sequence did not order registration and intake\",\n );\n const candidates = yield* store.candidates(accepted, 10);\n\n yield* ensure(\n candidates.length === 1 && candidates[0].key.subscriptionId === \"before\",\n \"cutoff admitted a later registration\",\n );\n\n const replayed = yield* store.accept(\n { ...event(\"cutoff\"), acceptedAtMillis: 99 },\n defaultSubscriptionLimits,\n );\n\n yield* ensure(\n replayed.cutoff === accepted.cutoff &&\n replayed.acceptedAtMillis === accepted.acceptedAtMillis,\n \"duplicate intake did not return retained progress\",\n );\n\n const conflict = yield* Effect.result(\n store.accept(event(\"cutoff\", digest(\"9\")), defaultSubscriptionLimits),\n );\n\n yield* ensure(\n Result.isFailure(conflict) &&\n conflict.failure._tag === \"SubscriptionError\" &&\n conflict.failure.reason === \"conflict\",\n \"conflicting event identity was accepted\",\n );\n }),\n);\n\nconst onceAndCapacity = conformanceCase(\n \"consumes once atomically and rejects capacity before progress\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const once = yield* store.register(record(\"once\"), defaultSubscriptionLimits);\n const first = yield* store.accept(event(\"first\"), defaultSubscriptionLimits);\n const second = yield* store.accept(event(\"second\"), defaultSubscriptionLimits);\n\n const duplicate = yield* store\n .select(\n first,\n [delivery(once, first), delivery(once, first)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n )\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(duplicate) &&\n duplicate.failure._tag === \"SubscriptionError\" &&\n duplicate.failure.reason === \"validation\",\n \"duplicate batch keys must not charge capacity twice for one retained delivery\",\n );\n yield* ensure(\n (yield* store.get(once.key))?.state === \"active\" &&\n (yield* store.event(first.eventId))?.cursor === 0,\n \"duplicate batch rejection consumed once or advanced routing\",\n );\n yield* store.select(\n first,\n [delivery(once, first)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.select(\n second,\n [delivery(once, second)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* ensure(\n (yield* store.get(once.key))?.state === \"consumed\",\n \"once registration remained active\",\n );\n yield* ensure(\n (yield* store.delivery({ subscription: once.key, eventId: first.eventId })) !== null,\n \"winning delivery was lost\",\n );\n yield* ensure(\n (yield* store.delivery({ subscription: once.key, eventId: second.eventId })) === null,\n \"second event consumed once registration again\",\n );\n\n const left = yield* store.register(\n record(\"left\", \"continuous\", \"capacity\"),\n defaultSubscriptionLimits,\n );\n\n const right = yield* store.register(\n record(\"right\", \"continuous\", \"capacity\"),\n defaultSubscriptionLimits,\n );\n\n const bounded = yield* store.accept(event(\"bounded\"), defaultSubscriptionLimits);\n const limits = { ...defaultSubscriptionLimits, maxDeliveries: 2, maxDeliveriesPerOwner: 1 };\n\n const failure = yield* Effect.result(\n store.select(\n bounded,\n [delivery(left, bounded), delivery(right, bounded, \"1\")],\n right.ordinal,\n true,\n 20,\n limits,\n ),\n );\n\n yield* ensure(\n Result.isFailure(failure) &&\n failure.failure._tag === \"SubscriptionError\" &&\n failure.failure.reason === \"capacity\",\n \"delivery quota did not reject batch\",\n );\n yield* ensure(\n (yield* store.event(bounded.eventId))?.cursor === 0,\n \"capacity failure advanced event cursor\",\n );\n }),\n);\n\nconst preparationLifecycle = conformanceCase(\n \"refuses cancelled selection and preserves prepared work\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const cancelled = yield* store.register(record(\"cancelled\"), defaultSubscriptionLimits);\n\n const cancelledEvent = yield* store.accept(\n event(\"cancelled-event\"),\n defaultSubscriptionLimits,\n );\n\n const cancelledDelivery = delivery(cancelled, cancelledEvent);\n\n yield* store.select(\n cancelledEvent,\n [cancelledDelivery],\n cancelled.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.cancel(cancelled.key);\n\n const refused = yield* store.changeDelivery(\n cancelledDelivery.key,\n cancelledDelivery.deliveryId,\n {\n _tag: \"Prepare\",\n envelope: preparedInput(cancelledDelivery),\n envelopeDigest: digest(\"4\"),\n nowMillis: 30,\n },\n );\n\n yield* ensure(\n refused.state === \"refused\" && refused.refusal?.code === \"cancelled\",\n \"cancelled selection prepared\",\n );\n\n const durable = yield* store.register(record(\"durable\"), defaultSubscriptionLimits);\n const durableEvent = yield* store.accept(event(\"durable-event\"), defaultSubscriptionLimits);\n const selected = delivery(durable, durableEvent);\n\n yield* store.select(\n durableEvent,\n [selected],\n durable.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n\n const prepared = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"5\"),\n nowMillis: 30,\n });\n\n const retry = {\n generation: 0,\n automaticAttempts: 0,\n parked: false,\n attempts: 2,\n nextAttemptAtMillis: 60,\n lastAttemptAtMillis: 35,\n lastFailure: \"transport\" as const,\n };\n\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry,\n nowMillis: 35,\n });\n for (const staleRetry of [\n { ...retry, attempts: 1, nextAttemptAtMillis: 70 },\n { ...retry, nextAttemptAtMillis: 70 },\n { ...retry, attempts: 3, nextAttemptAtMillis: 50 },\n ]) {\n const retained = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry: staleRetry,\n nowMillis: 36,\n });\n\n yield* ensure(\n retained.retry.attempts === 2 && retained.retry.nextAttemptAtMillis === 60,\n \"stale retry overwrote newer retry state\",\n );\n }\n yield* store.cancel(durable.key);\n\n const completed = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 40,\n });\n\n yield* ensure(\n prepared.state === \"prepared\" && completed.state === \"delivered\",\n \"prepared work did not survive cancellation\",\n );\n\n const stale = yield* Effect.result(\n store.changeDelivery(selected.key, digest(\"8\"), {\n _tag: \"Complete\",\n receipt,\n nowMillis: 41,\n }),\n );\n\n yield* ensure(\n Result.isFailure(stale) &&\n stale.failure._tag === \"SubscriptionError\" &&\n stale.failure.code === \"stale-delivery\",\n \"stale outcome was not fenced\",\n );\n }),\n);\n\nconst catchUpAndCursors = conformanceCase(\n \"limits catch-up to one watch and persists recovery cursors\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const accepted = yield* store.accept(event(\"observed\"), defaultSubscriptionLimits);\n const watch = yield* store.register(record(\"watch\"), defaultSubscriptionLimits);\n const selected = delivery(watch, accepted);\n\n yield* store.catchUp(accepted, selected, 20, defaultSubscriptionLimits);\n yield* store.catchUp(\n accepted,\n { ...selected, selectedAtMillis: 999, retry: { ...selected.retry, attempts: 2 } },\n 30,\n defaultSubscriptionLimits,\n );\n yield* ensure(\n (yield* store.get(watch.key))?.state === \"consumed\",\n \"catch-up did not consume watch\",\n );\n yield* store.advanceScanCursors({ events: \"e\", deliveries: \"d\", recovery: 7 });\n const cursors = yield* store.readScanCursors;\n\n yield* ensure(\n cursors.events === \"e\" && cursors.deliveries === \"d\" && cursors.recovery === 7,\n \"scan cursors were not durable\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === 0,\n \"nonzero scan cursor did not keep recovery armed\",\n );\n }),\n);\n\nconst replayUnderTighterLimits = conformanceCase(\n \"preserves retained identities when limits tighten\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const created = yield* store.register(record(\"retained\"), defaultSubscriptionLimits);\n const accepted = yield* store.accept(event(\"retained\"), defaultSubscriptionLimits);\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 1,\n maxEvents: 1,\n maxPayloadBytes: 1,\n maxContextBytes: 1,\n maxLifetimeMillis: 1,\n };\n\n const replayed = yield* store.register(record(\"retained\"), limits);\n const repeated = yield* store.accept(event(\"retained\"), limits);\n\n yield* ensure(replayed.ordinal === created.ordinal, \"registration replay lost identity\");\n yield* ensure(repeated.cutoff === accepted.cutoff, \"intake replay lost cutoff\");\n const newRegistration = yield* Effect.result(store.register(record(\"new\"), limits));\n const newEvent = yield* Effect.result(store.accept(event(\"new\"), limits));\n\n yield* ensure(Result.isFailure(newRegistration), \"new registration ignored tightened limits\");\n yield* ensure(Result.isFailure(newEvent), \"new intake ignored tightened limits\");\n }),\n);\n\nconst revisionsAndRetention = conformanceCase(\n \"preserves historical selection, CAS revisions, and unsettled evidence during retention\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const now = yield* Clock.currentTimeMillis;\n const policy = { replayHorizonMillis: 10_000, completedRetentionMillis: 0, maxTombstones: 8 };\n const limits = { ...defaultSubscriptionLimits, retention: policy };\n const indefinite = record(\"revision\", \"continuous\");\n\n const original = yield* store.register(\n {\n ...indefinite,\n configuration: { ...indefinite.configuration, expiresAtMillis: null },\n },\n limits,\n );\n\n yield* ensure(\n original.configuration.expiresAtMillis === null,\n \"UntilCancelled must remain explicit\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === null,\n \"UntilCancelled cannot create an expiry wake\",\n );\n\n const accepted = yield* store.accept(\n { ...event(\"retained\"), occurredAtMillis: now, acceptedAtMillis: now },\n limits,\n );\n\n const selected = {\n ...delivery(original, accepted),\n configuration: original.configuration,\n configurationRevision: 1,\n };\n\n yield* store.select(\n accepted,\n [selected],\n original.ordinal,\n true,\n now + limits.maxLifetimeMillis + 1,\n limits,\n );\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"UntilCancelled cannot expire at the ordinary maximum lifetime\",\n );\n\n const updated = yield* store.change(original.key, 1, {\n _tag: \"Update\",\n configuration: { ...original.configuration, context: { edited: true } },\n configurationFingerprint: digest(\"9\"),\n recovery: null,\n });\n\n yield* ensure(\n updated.configurationRevision === 2 && updated.creationConfiguration !== undefined,\n \"Update must preserve creation evidence and advance revision\",\n );\n const stale = yield* store.change(original.key, 1, { _tag: \"Pause\" }).pipe(Effect.result);\n\n yield* ensure(Result.isFailure(stale), \"Stale management must conflict\");\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: now,\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"Admission is not settlement; delivery evidence must remain\",\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: now,\n nextAttemptAtMillis: now,\n });\n const recovering = yield* store.register(record(\"recovering-retention\", \"once\"), limits);\n\n yield* store.deferRecovery(recovering.key, recovering.configurationRevision, {\n attempts: 1,\n nextAttemptAtMillis: null,\n lastFailure: \"source-unavailable\",\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"Permanent recovery evidence must protect retained source facts\",\n );\n yield* store.deferRecovery(recovering.key, recovering.configurationRevision, null);\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) === null,\n \"Settled delivery must release retained capacity\",\n );\n yield* ensure(\n (yield* store.event(accepted.eventId))?.tombstone === true,\n \"Deduplication tombstone must outlive completed payload\",\n );\n const replay = yield* store.accept(accepted, limits);\n\n yield* ensure(\n Result.isFailure(\n yield* store\n .accept({ ...accepted, occurredAtMillis: now + 1 }, limits)\n .pipe(Effect.result),\n ),\n \"An event identity cannot replace its retained source timestamp\",\n );\n\n yield* ensure(\n Result.isFailure(\n yield* store.compact(now, { ...policy, replayHorizonMillis: 1 }, 8).pipe(Effect.result),\n ),\n \"Compaction cannot change the persisted replay horizon\",\n );\n yield* ensure(\n Result.isFailure(\n yield* store\n .accept(event(\"without-policy\"), defaultSubscriptionLimits)\n .pipe(Effect.result),\n ),\n \"Fresh intake cannot disable established retention\",\n );\n yield* ensure(\n replay.cutoff === accepted.cutoff && replay.tombstone === true,\n \"Duplicate intake cannot reopen routing after compaction\",\n );\n }),\n);\n\nconst sustainedRetention = conformanceCase(\n \"reuses event, delivery and tombstone quotas across replay horizons\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const policy = { replayHorizonMillis: 100, completedRetentionMillis: 0, maxTombstones: 8 };\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxEvents: 4,\n maxDeliveries: 4,\n maxDeliveriesPerOwner: 4,\n retention: policy,\n };\n\n const registration = yield* store.register(record(\"sustained\", \"continuous\"), limits);\n\n // 32 events reuse four live slots and eight tombstone slots across six replay\n // horizons, including the lexical 9→10 boundary. The full driver's >1,000-event\n // regression remains in storage-memory/test/subscriptions.test.ts; bounded cursor\n // traversal is exercised separately by retentionFairness on every adapter.\n for (let index = 0; index < 32; index++) {\n const now = yield* Clock.currentTimeMillis;\n\n const accepted = yield* store.accept(\n { ...event(`retained-${index}`), occurredAtMillis: now, acceptedAtMillis: now },\n limits,\n );\n\n const deliveryId = Schema.decodeSync(Digest)(index.toString(16).padStart(64, \"0\"));\n\n const selected = {\n ...delivery(registration, accepted),\n deliveryId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n };\n\n yield* store.select(accepted, [selected], registration.ordinal, true, now, limits);\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: now,\n nextAttemptAtMillis: now,\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) === null,\n \"Settled delivery must release its quota on every cycle\",\n );\n yield* ensure(\n (yield* store.accept(accepted, limits)).tombstone === true,\n \"Duplicate acknowledgement must preserve its tombstone\",\n );\n yield* TestClock.adjust(20);\n }\n yield* ensure(\n (yield* store.event(\"retained-0\")) === null,\n \"Expired identity must be reclaimed\",\n );\n\n const expired = yield* store\n .accept({ ...event(\"retained-0\"), occurredAtMillis: 0 }, limits)\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(expired) &&\n expired.failure._tag === \"SubscriptionError\" &&\n expired.failure.code === \"event-replay-horizon\",\n \"Reclaimed identity must not be admitted after its replay horizon\",\n );\n }),\n);\n\nconst lifetimeCapacity = conformanceCase(\n \"reuses subscription capacity without retention and preserves live host guards and replay\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 1,\n maxRegistrationsPerOwner: 1,\n maxEvents: 1,\n maxDeliveries: 1,\n maxDeliveriesPerOwner: 1,\n };\n\n const retained: Array<{\n registration: SubscriptionRecord;\n accepted: AcceptedEvent;\n completed: SubscriptionDelivery;\n }> = [];\n\n for (let index = 0; index < 4; index++) {\n const registration = yield* store.register(record(`lifetime-${index}`), limits);\n const accepted = yield* store.accept(event(`lifetime-${index}`), limits);\n const deliveryId = Schema.decodeSync(Digest)(index.toString(16).padStart(64, \"0\"));\n\n const selected = {\n ...delivery(registration, accepted),\n deliveryId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n };\n\n if (index === 3) {\n yield* store.select(accepted, [], 0, true, 20, limits);\n yield* store.catchUp(accepted, selected, 20, limits);\n } else {\n yield* store.select(accepted, [selected], registration.ordinal, true, 20, limits);\n }\n\n if (index % 2 === 0) {\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 20,\n });\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 21,\n });\n } else {\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Refuse\",\n refusal: { phase: \"preparation\", code: \"refused\" },\n nowMillis: 21,\n });\n }\n const completed = yield* store.delivery(selected.key);\n\n if (completed === null)\n return yield* ensure(false, \"completion discarded exact delivery evidence\");\n retained.push({ registration, accepted, completed });\n }\n\n for (const { registration, accepted, completed } of retained) {\n const replay = yield* store.register(registration, limits);\n const intakeReplay = yield* store.accept(accepted, limits);\n\n yield* ensure(\n replay.state === \"consumed\" && replay.ordinal === registration.ordinal,\n \"creation replay changed or resurrected a consumed registration\",\n );\n yield* ensure(\n intakeReplay.routingComplete &&\n intakeReplay.cutoff === accepted.cutoff &&\n JSON.stringify(intakeReplay.payload) === JSON.stringify(accepted.payload),\n \"retained event replay lost its payload/cutoff or reopened routing\",\n );\n if (completed.state === \"delivered\")\n yield* store.changeDelivery(completed.key, completed.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 99,\n });\n yield* ensure(\n JSON.stringify(yield* store.delivery(completed.key)) === JSON.stringify(completed),\n \"terminal replay changed prepared input, receipt, refusal or completion time\",\n );\n }\n\n const assertHostGuard = <A>(\n effect: Effect.Effect<A, SubscriptionStoreFailure>,\n code: string,\n ) =>\n Effect.gen(function* () {\n const result = yield* Effect.result(effect);\n\n yield* ensure(\n Result.isFailure(result) &&\n result.failure._tag === \"SubscriptionError\" &&\n result.failure.reason === \"capacity\" &&\n result.failure.code === code,\n `host ${code} guard ignored live work`,\n );\n });\n\n const active = yield* store.register(record(\"host-active\"), limits);\n const activeEvent = yield* store.accept(event(\"host-active\"), limits);\n\n yield* assertHostGuard(\n store.register(record(\"host-excess\", \"once\", \"other-owner\"), limits),\n \"registrations\",\n );\n yield* assertHostGuard(store.accept(event(\"host-excess\"), limits), \"events\");\n yield* store.select(\n activeEvent,\n [delivery(active, activeEvent)],\n active.ordinal,\n true,\n 20,\n limits,\n );\n\n const nextRegistration = yield* store.register(\n record(\"host-excess\", \"once\", \"other-owner\"),\n limits,\n );\n\n const nextEvent = yield* store.accept(event(\"host-excess\"), limits);\n\n yield* assertHostGuard(\n store.select(\n nextEvent,\n [delivery(nextRegistration, nextEvent)],\n nextRegistration.ordinal,\n true,\n 20,\n limits,\n ),\n \"deliveries\",\n );\n yield* ensure(\n (yield* store.event(nextEvent.eventId))?.cursor === 0 &&\n (yield* store.get(nextRegistration.key))?.state === \"active\",\n \"host capacity rejection changed routing or registration evidence\",\n );\n }),\n);\n\nconst capacityReactivation = conformanceCase(\n \"reserves live capacity across expiry, pause and settlement observation\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 32,\n maxRegistrationsPerOwner: 1,\n maxEvents: 32,\n maxDeliveries: 32,\n maxDeliveriesPerOwner: 1,\n };\n\n const expectCapacity = <A>(effect: Effect.Effect<A, SubscriptionStoreFailure>) =>\n Effect.gen(function* () {\n const result = yield* Effect.result(effect);\n\n yield* ensure(\n Result.isFailure(result) &&\n result.failure._tag === \"SubscriptionError\" &&\n result.failure.reason === \"capacity\",\n \"live work did not reserve capacity\",\n );\n });\n\n const expiring = record(\"expiring\");\n\n yield* store.register(\n { ...expiring, configuration: { ...expiring.configuration, expiresAtMillis: 1 } },\n limits,\n );\n yield* TestClock.setTime(2);\n const current = yield* store.register(record(\"current\", \"continuous\"), limits);\n const paused = yield* store.change(current.key, 1, { _tag: \"Pause\" }, limits);\n\n yield* expectCapacity(store.register(record(\"excess\"), limits));\n\n const revive = {\n _tag: \"Update\" as const,\n configuration: expiring.configuration,\n configurationFingerprint: expiring.configurationFingerprint,\n recovery: null,\n };\n\n yield* expectCapacity(store.change(expiring.key, 1, revive, limits));\n yield* ensure(\n (yield* store.get(expiring.key))?.configurationRevision === 1,\n \"rejected revival changed registration evidence\",\n );\n yield* store.cancel(current.key, paused.configurationRevision);\n const registration = yield* store.change(expiring.key, 1, revive, limits);\n const accepted = yield* store.accept(event(\"observed\"), limits);\n\n yield* expectCapacity(store.accept(event(\"unrouted-excess\"), { ...limits, maxEvents: 1 }));\n const selected = { ...delivery(registration, accepted), observeSettlement: true };\n\n yield* store.select(accepted, [selected], registration.ordinal, true, 20, limits);\n const nextRegistration = yield* store.register(record(\"next\"), limits);\n const nextEvent = yield* store.accept(event(\"next-event\"), limits);\n const next = delivery(nextRegistration, nextEvent, \"1\");\n\n const selectNext = store.select(\n nextEvent,\n [next],\n nextRegistration.ordinal,\n true,\n 20,\n limits,\n );\n\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry: { ...selected.retry, attempts: 1, automaticAttempts: 1, parked: true },\n nowMillis: 20,\n });\n yield* expectCapacity(selectNext);\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 20,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 21,\n });\n yield* expectCapacity(selectNext);\n yield* ensure(\n (yield* store.event(nextEvent.eventId))?.cursor === 0 &&\n (yield* store.get(nextRegistration.key))?.state === \"active\",\n \"capacity rejection consumed a registration or advanced routing\",\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: 22,\n nextAttemptAtMillis: 22,\n });\n yield* selectNext;\n yield* store.changeDelivery(next.key, next.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(next),\n envelopeDigest: digest(\"4\"),\n nowMillis: 22,\n });\n yield* store.changeDelivery(next.key, next.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 23,\n });\n const blocker = yield* store.register(record(\"blocker\"), limits);\n const blockerEvent = yield* store.accept(event(\"blocker\"), limits);\n const blockerDelivery = delivery(blocker, blockerEvent);\n\n yield* store.select(blockerEvent, [blockerDelivery], blocker.ordinal, true, 24, limits);\n yield* expectCapacity(\n store.changeDelivery(\n next.key,\n next.deliveryId,\n {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: false,\n nowMillis: 24,\n nextAttemptAtMillis: 25,\n },\n limits,\n ),\n );\n yield* ensure(\n (yield* store.delivery(next.key))?.observeSettlement !== true,\n \"rejected observation reactivation changed delivery evidence\",\n );\n }),\n);\n\nconst recoveryRevisionFence = conformanceCase(\n \"fences source recovery across pause, resume and configuration replacement\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const initial = yield* store.register(\n {\n ...record(\"recovery-revisions\"),\n recovery: { attempts: 0, nextAttemptAtMillis: 10, lastFailure: null },\n },\n defaultSubscriptionLimits,\n );\n\n const paused = yield* store.change(initial.key, 1, { _tag: \"Pause\" });\n\n yield* store.deferRecovery(initial.key, 1, null);\n yield* ensure(\n (yield* store.get(initial.key))?.recovery?.nextAttemptAtMillis === 10,\n \"late provider completion erased paused recovery\",\n );\n\n const resumed = yield* store.change(initial.key, paused.configurationRevision, {\n _tag: \"Resume\",\n });\n\n yield* ensure(\n resumed.recovery?.nextAttemptAtMillis === 10,\n \"resume lost the recovery obligation\",\n );\n\n const updated = yield* store.change(initial.key, resumed.configurationRevision, {\n _tag: \"Update\",\n configuration: { ...initial.configuration, source: { name: \"replacement\", version: \"2\" } },\n configurationFingerprint: digest(\"9\"),\n recovery: { attempts: 0, nextAttemptAtMillis: 50, lastFailure: null },\n });\n\n yield* store.deferRecovery(initial.key, resumed.configurationRevision, {\n attempts: 9,\n nextAttemptAtMillis: null,\n lastFailure: \"obsolete-source\",\n });\n const retained = yield* store.get(initial.key);\n\n yield* ensure(\n retained?.recovery?.nextAttemptAtMillis === 50 &&\n retained.configurationRevision === updated.configurationRevision,\n \"obsolete provider completion overwrote replacement recovery\",\n );\n yield* ensure(\n retained?.creationFingerprint === initial.creationFingerprint &&\n retained.creationConfiguration.source.name === initial.configuration.source.name,\n \"revision rewrote creation identity\",\n );\n }),\n);\n\nconst retryGenerationFence = conformanceCase(\n \"rearms only one delivery generation and retains late receipt authority\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const subscription = yield* store.register(\n record(\"retry-generation\", \"continuous\"),\n defaultSubscriptionLimits,\n );\n\n const accepted = yield* store.accept(event(\"retry-generation\"), defaultSubscriptionLimits);\n const selected = { ...delivery(subscription, accepted), observeSettlement: true };\n\n yield* store.select(\n accepted,\n [selected],\n subscription.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 30,\n });\n\n const parked = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n nowMillis: 40,\n retry: {\n ...selected.retry,\n attempts: 8,\n automaticAttempts: 8,\n parked: true,\n nextAttemptAtMillis: 50,\n lastAttemptAtMillis: 40,\n lastFailure: \"ambiguous\",\n },\n });\n\n yield* ensure(\n (yield* store.pendingDeliveries(100, \"\", 10)).length === 0,\n \"parked admission remained due for settlement observation\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === null,\n \"parked admission retained a busy-loop deadline\",\n );\n\n const recovered = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Recover\",\n expectedGeneration: parked.retry.generation,\n nowMillis: 50,\n });\n\n const stale = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n nowMillis: 60,\n retry: { ...parked.retry, attempts: 9, nextAttemptAtMillis: 70 },\n });\n\n yield* ensure(\n !stale.retry.parked && stale.retry.generation === recovered.retry.generation,\n \"stale retry undid recovery\",\n );\n\n const completed = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 70,\n });\n\n yield* ensure(\n completed.receipt?.receiptId === receipt.receiptId &&\n completed.envelopeDigest === digest(\"4\"),\n \"late receipt or immutable envelope was lost\",\n );\n }),\n);\n\nconst retentionFairness = conformanceCase(\n \"advances bounded maintenance beyond protected oldest events\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const policy = { replayHorizonMillis: 1_000, completedRetentionMillis: 0, maxTombstones: 8 };\n const limits = { ...defaultSubscriptionLimits, retention: policy };\n\n for (let index = 0; index < 6; index++) {\n const accepted = yield* store.accept(\n { ...event(`protected-${index}`), occurredAtMillis: 0, acceptedAtMillis: 0 },\n limits,\n );\n\n if (index === 5) yield* store.select(accepted, [], 0, true, 0, limits);\n }\n yield* TestClock.setTime(10);\n for (let pass = 0; pass < 8; pass++) yield* store.compact(10, policy, 1);\n yield* ensure(\n (yield* store.event(\"protected-5\"))?.tombstone === true,\n \"protected first pages starved a reclaimable event\",\n );\n yield* ensure(\n (yield* store.event(\"protected-0\"))?.tombstone !== true,\n \"unfinished event was reclaimed\",\n );\n yield* TestClock.setTime(1_001);\n for (let pass = 0; pass < 8; pass++) yield* store.compact(1_001, policy, 1);\n yield* ensure(\n (yield* store.event(\"protected-5\")) === null,\n \"idle maintenance did not expire tombstone\",\n );\n\n const rejected = yield* store\n .accept({ ...event(\"protected-5\"), occurredAtMillis: 0 }, limits)\n .pipe(Effect.result);\n\n // The caller cannot manufacture a recent occurrence to resurrect a pruned identity.\n yield* ensure(Result.isFailure(rejected), \"retention state became inconsistent\");\n }),\n);\n\nexport const subscriptionStoreConformanceCases: ReadonlyArray<SubscriptionStoreConformanceCase> = [\n historicalOccurrenceReplay,\n recoveryRevisionFence,\n retryGenerationFence,\n retentionFairness,\n sustainedRetention,\n lifetimeCapacity,\n capacityReactivation,\n revisionsAndRetention,\n cutoffAndIntake,\n onceAndCapacity,\n preparationLifecycle,\n catchUpAndCursors,\n replayUnderTighterLimits,\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionStoreConformance.mjs","names":[],"sources":["../../src/durable/SubscriptionStoreConformance.ts"],"sourcesContent":["import { Clock, Effect, Result, Schema } from \"effect\";\nimport { TestClock } from \"effect/testing\";\n\nimport { AgentId, ThreadId, ReceiptId, SubmissionId } from \"../core/Identifiers.ts\";\nimport { Receipt } from \"./DurableAgentRuntime.ts\";\nimport { DefinitionDigests, Digest } from \"./Records.ts\";\nimport { IdempotencyKey, Principal, QueueSequence } from \"./SubmissionLedger.ts\";\nimport {\n type AcceptedEvent,\n defaultSubscriptionLimits,\n type SourcePartition,\n type SubscriptionDelivery,\n type SubscriptionRecord,\n SubscriptionStore,\n type SubscriptionStoreFailure,\n} from \"./Subscription.ts\";\n\nexport class SubscriptionStoreConformanceViolation extends Schema.TaggedError<SubscriptionStoreConformanceViolation>()(\n \"SubscriptionStoreConformanceViolation\",\n { caseName: Schema.String, message: Schema.String },\n) {}\n\nexport interface SubscriptionStoreConformanceCase {\n readonly name: string;\n readonly run: Effect.Effect<\n void,\n SubscriptionStoreFailure | SubscriptionStoreConformanceViolation,\n SubscriptionStore\n >;\n}\n\nexport const subscriptionConformancePartition: SourcePartition = {\n tenantId: \"subscription-conformance\",\n address: \"source-address\",\n};\n\nconst principal = Schema.decodeSync(Principal)(\"subscription-conformance-principal\");\nconst agentId = Schema.decodeSync(AgentId)(\"subscription-conformance-agent\");\nconst threadId = Schema.decodeSync(ThreadId)(\"subscription-conformance-thread\");\nconst digest = (character: string) => Schema.decodeSync(Digest)(character.repeat(64));\n\nconst definitions = DefinitionDigests.make({\n agent: digest(\"a\"),\n model: digest(\"b\"),\n tools: digest(\"c\"),\n});\n\nconst record = (\n name: string,\n mode: \"once\" | \"continuous\" = \"once\",\n ownerId = \"owner\",\n): SubscriptionRecord => ({\n schemaVersion: 1,\n key: { partition: subscriptionConformancePartition, ownerId, subscriptionId: name },\n creationFingerprint: digest(name.charCodeAt(0) % 2 === 0 ? \"d\" : \"e\"),\n createdBy: principal,\n createdAtMillis: 1,\n ordinal: 0,\n configurationRevision: 1,\n configurationFingerprint: digest(name.charCodeAt(0) % 2 === 0 ? \"d\" : \"e\"),\n creationConfiguration: {\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n parameters: { name },\n context: { name },\n mode,\n expiresAtMillis: 100_000,\n destination: { _tag: \"ExistingThread\", threadId },\n deliveryPrincipal: principal,\n agentId,\n definitions,\n },\n configuration: {\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n parameters: { name },\n context: { name },\n mode,\n expiresAtMillis: 100_000,\n destination: { _tag: \"ExistingThread\", threadId },\n deliveryPrincipal: principal,\n agentId,\n definitions,\n },\n state: \"active\",\n recovery: null,\n});\n\nconst event = (name: string, payloadDigest = digest(\"f\")): AcceptedEvent => ({\n schemaVersion: 1,\n partition: subscriptionConformancePartition,\n eventId: name,\n source: { name: \"trusted\", version: \"1\" },\n matchingKey: \"match\",\n payload: { name },\n payloadDigest,\n acceptedAtMillis: 10,\n cutoff: 0,\n cursor: 0,\n routingComplete: false,\n routingFailure: null,\n nextAttemptAtMillis: 10,\n});\n\nconst delivery = (\n subscription: SubscriptionRecord,\n accepted: AcceptedEvent,\n suffix = \"0\",\n): SubscriptionDelivery => {\n const deliveryId = digest(suffix === \"0\" ? \"1\" : \"2\");\n\n return {\n schemaVersion: 1,\n key: { subscription: subscription.key, eventId: accepted.eventId },\n deliveryId,\n source: accepted.source,\n subscriptionFingerprint: subscription.configurationFingerprint,\n configurationRevision: subscription.configurationRevision,\n configuration: subscription.configuration,\n eventDigest: accepted.payloadDigest,\n threadId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n selectedAtMillis: suffix === \"0\" ? 20 : 21,\n state: \"selected\",\n envelope: null,\n envelopeDigest: null,\n retry: {\n generation: 0,\n attempts: 0,\n automaticAttempts: 0,\n parked: false,\n nextAttemptAtMillis: 20,\n lastAttemptAtMillis: null,\n lastFailure: null,\n },\n receipt: null,\n refusal: null,\n };\n};\n\nconst preparedInput = (selected: SubscriptionDelivery) => ({\n schemaVersion: 1 as const,\n threadId: selected.threadId,\n deliveryPrincipal: principal,\n agentId,\n definitions,\n input: { event: selected.key.eventId },\n inputDigest: digest(\"3\"),\n admissionKey: selected.admissionKey,\n authorization: { policyId: \"policy\", decisionId: \"decision\" },\n});\n\nconst receipt = Receipt.make({\n receiptId: Schema.decodeSync(ReceiptId)(\"subscription-conformance-receipt\"),\n submissionId: Schema.decodeSync(SubmissionId)(\"subscription-conformance-submission\"),\n threadId,\n queueSequence: Schema.decodeSync(QueueSequence)(1),\n});\n\nconst conformanceCase = (\n name: string,\n body: (\n ensure: (\n condition: boolean,\n message: string,\n ) => Effect.Effect<void, SubscriptionStoreConformanceViolation>,\n ) => Effect.Effect<\n void,\n SubscriptionStoreFailure | SubscriptionStoreConformanceViolation,\n SubscriptionStore\n >,\n): SubscriptionStoreConformanceCase => ({\n name,\n run: body((condition, message) =>\n condition\n ? Effect.void\n : Effect.fail(SubscriptionStoreConformanceViolation.make({ caseName: name, message })),\n ),\n});\n\nconst historicalOccurrenceReplay = conformanceCase(\n \"preserves unknown occurrence time on replay and fences known times\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const original = yield* store.accept(event(\"legacy-occurrence\"), defaultSubscriptionLimits);\n\n const replay = yield* store.accept(\n { ...original, occurredAtMillis: 1 },\n defaultSubscriptionLimits,\n );\n\n yield* ensure(\n replay.occurredAtMillis === undefined &&\n replay.acceptedAtMillis === original.acceptedAtMillis &&\n replay.cutoff === original.cutoff,\n \"replay invented historical occurrence or moved acceptance\",\n );\n\n const known = yield* store.accept(\n { ...event(\"known-occurrence\"), occurredAtMillis: 1 },\n defaultSubscriptionLimits,\n );\n\n const changed = yield* store\n .accept({ ...known, occurredAtMillis: 2 }, defaultSubscriptionLimits)\n .pipe(Effect.result);\n\n yield* ensure(Result.isFailure(changed), \"known occurrence time changed on replay\");\n\n const omitted = yield* store\n .accept(event(\"known-occurrence\"), defaultSubscriptionLimits)\n .pipe(Effect.result);\n\n yield* ensure(Result.isFailure(omitted), \"known occurrence time was erased on replay\");\n }),\n);\n\nconst cutoffAndIntake = conformanceCase(\n \"orders eligibility cutoffs and preserves duplicate intake\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const before = yield* store.register(record(\"before\"), defaultSubscriptionLimits);\n const accepted = yield* store.accept(event(\"cutoff\"), defaultSubscriptionLimits);\n const after = yield* store.register(record(\"after\"), defaultSubscriptionLimits);\n\n yield* ensure(\n before.ordinal < accepted.cutoff && after.ordinal > accepted.cutoff,\n \"sequence did not order registration and intake\",\n );\n const candidates = yield* store.candidates(accepted, 10);\n\n yield* ensure(\n candidates.length === 1 && candidates[0].key.subscriptionId === \"before\",\n \"cutoff admitted a later registration\",\n );\n\n const replayed = yield* store.accept(\n { ...event(\"cutoff\"), acceptedAtMillis: 99 },\n defaultSubscriptionLimits,\n );\n\n yield* ensure(\n replayed.cutoff === accepted.cutoff &&\n replayed.acceptedAtMillis === accepted.acceptedAtMillis,\n \"duplicate intake did not return retained progress\",\n );\n\n const conflict = yield* Effect.result(\n store.accept(event(\"cutoff\", digest(\"9\")), defaultSubscriptionLimits),\n );\n\n yield* ensure(\n Result.isFailure(conflict) &&\n conflict.failure._tag === \"SubscriptionError\" &&\n conflict.failure.reason === \"conflict\",\n \"conflicting event identity was accepted\",\n );\n }),\n);\n\nconst onceAndCapacity = conformanceCase(\n \"consumes once atomically and rejects capacity before progress\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const once = yield* store.register(record(\"once\"), defaultSubscriptionLimits);\n const first = yield* store.accept(event(\"first\"), defaultSubscriptionLimits);\n const second = yield* store.accept(event(\"second\"), defaultSubscriptionLimits);\n\n const duplicate = yield* store\n .select(\n first,\n [delivery(once, first), delivery(once, first)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n )\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(duplicate) &&\n duplicate.failure._tag === \"SubscriptionError\" &&\n duplicate.failure.reason === \"validation\",\n \"duplicate batch keys must not charge capacity twice for one retained delivery\",\n );\n yield* ensure(\n (yield* store.get(once.key))?.state === \"active\" &&\n (yield* store.event(first.eventId))?.cursor === 0,\n \"duplicate batch rejection consumed once or advanced routing\",\n );\n yield* store.select(\n first,\n [delivery(once, first)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.select(\n second,\n [delivery(once, second)],\n once.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* ensure(\n (yield* store.get(once.key))?.state === \"consumed\",\n \"once registration remained active\",\n );\n yield* ensure(\n (yield* store.delivery({ subscription: once.key, eventId: first.eventId })) !== null,\n \"winning delivery was lost\",\n );\n yield* ensure(\n (yield* store.delivery({ subscription: once.key, eventId: second.eventId })) === null,\n \"second event consumed once registration again\",\n );\n\n const left = yield* store.register(\n record(\"left\", \"continuous\", \"capacity\"),\n defaultSubscriptionLimits,\n );\n\n const right = yield* store.register(\n record(\"right\", \"continuous\", \"capacity\"),\n defaultSubscriptionLimits,\n );\n\n const bounded = yield* store.accept(event(\"bounded\"), defaultSubscriptionLimits);\n const limits = { ...defaultSubscriptionLimits, maxDeliveries: 2, maxDeliveriesPerOwner: 1 };\n\n const failure = yield* Effect.result(\n store.select(\n bounded,\n [delivery(left, bounded), delivery(right, bounded, \"1\")],\n right.ordinal,\n true,\n 20,\n limits,\n ),\n );\n\n yield* ensure(\n Result.isFailure(failure) &&\n failure.failure._tag === \"SubscriptionError\" &&\n failure.failure.reason === \"capacity\",\n \"delivery quota did not reject batch\",\n );\n yield* ensure(\n (yield* store.event(bounded.eventId))?.cursor === 0,\n \"capacity failure advanced event cursor\",\n );\n }),\n);\n\nconst preparationLifecycle = conformanceCase(\n \"refuses cancelled selection and preserves prepared work\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const cancelled = yield* store.register(record(\"cancelled\"), defaultSubscriptionLimits);\n\n const cancelledEvent = yield* store.accept(\n event(\"cancelled-event\"),\n defaultSubscriptionLimits,\n );\n\n const cancelledDelivery = delivery(cancelled, cancelledEvent);\n\n yield* store.select(\n cancelledEvent,\n [cancelledDelivery],\n cancelled.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.cancel(cancelled.key);\n\n const refused = yield* store.changeDelivery(\n cancelledDelivery.key,\n cancelledDelivery.deliveryId,\n {\n _tag: \"Prepare\",\n envelope: preparedInput(cancelledDelivery),\n envelopeDigest: digest(\"4\"),\n nowMillis: 30,\n },\n );\n\n yield* ensure(\n refused.state === \"refused\" && refused.refusal?.code === \"cancelled\",\n \"cancelled selection prepared\",\n );\n\n const durable = yield* store.register(record(\"durable\"), defaultSubscriptionLimits);\n const durableEvent = yield* store.accept(event(\"durable-event\"), defaultSubscriptionLimits);\n const selected = delivery(durable, durableEvent);\n\n yield* store.select(\n durableEvent,\n [selected],\n durable.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n\n const prepared = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"5\"),\n nowMillis: 30,\n });\n\n const retry = {\n generation: 0,\n automaticAttempts: 0,\n parked: false,\n attempts: 2,\n nextAttemptAtMillis: 60,\n lastAttemptAtMillis: 35,\n lastFailure: \"transport\" as const,\n };\n\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry,\n nowMillis: 35,\n });\n for (const staleRetry of [\n { ...retry, attempts: 1, nextAttemptAtMillis: 70 },\n { ...retry, nextAttemptAtMillis: 70 },\n { ...retry, attempts: 3, nextAttemptAtMillis: 50 },\n ]) {\n const retained = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry: staleRetry,\n nowMillis: 36,\n });\n\n yield* ensure(\n retained.retry.attempts === 2 && retained.retry.nextAttemptAtMillis === 60,\n \"stale retry overwrote newer retry state\",\n );\n }\n yield* store.cancel(durable.key);\n\n const completed = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 40,\n });\n\n yield* ensure(\n prepared.state === \"prepared\" && completed.state === \"delivered\",\n \"prepared work did not survive cancellation\",\n );\n\n const stale = yield* Effect.result(\n store.changeDelivery(selected.key, digest(\"8\"), {\n _tag: \"Complete\",\n receipt,\n nowMillis: 41,\n }),\n );\n\n yield* ensure(\n Result.isFailure(stale) &&\n stale.failure._tag === \"SubscriptionError\" &&\n stale.failure.code === \"stale-delivery\",\n \"stale outcome was not fenced\",\n );\n }),\n);\n\nconst catchUpAndCursors = conformanceCase(\n \"limits catch-up to one watch and persists recovery cursors\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const accepted = yield* store.accept(event(\"observed\"), defaultSubscriptionLimits);\n const watch = yield* store.register(record(\"watch\"), defaultSubscriptionLimits);\n const selected = delivery(watch, accepted);\n\n yield* store.catchUp(accepted, selected, 20, defaultSubscriptionLimits);\n yield* store.catchUp(\n accepted,\n { ...selected, selectedAtMillis: 999, retry: { ...selected.retry, attempts: 2 } },\n 30,\n defaultSubscriptionLimits,\n );\n yield* ensure(\n (yield* store.get(watch.key))?.state === \"consumed\",\n \"catch-up did not consume watch\",\n );\n yield* store.advanceScanCursors({ events: \"e\", deliveries: \"d\", recovery: 7 });\n const cursors = yield* store.readScanCursors;\n\n yield* ensure(\n cursors.events === \"e\" && cursors.deliveries === \"d\" && cursors.recovery === 7,\n \"scan cursors were not durable\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === 0,\n \"nonzero scan cursor did not keep recovery armed\",\n );\n }),\n);\n\nconst replayUnderTighterLimits = conformanceCase(\n \"preserves retained identities when limits tighten\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const created = yield* store.register(record(\"retained\"), defaultSubscriptionLimits);\n const accepted = yield* store.accept(event(\"retained\"), defaultSubscriptionLimits);\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 1,\n maxEvents: 1,\n maxPayloadBytes: 1,\n maxContextBytes: 1,\n maxLifetimeMillis: 1,\n };\n\n const replayed = yield* store.register(record(\"retained\"), limits);\n const repeated = yield* store.accept(event(\"retained\"), limits);\n\n yield* ensure(replayed.ordinal === created.ordinal, \"registration replay lost identity\");\n yield* ensure(repeated.cutoff === accepted.cutoff, \"intake replay lost cutoff\");\n const newRegistration = yield* Effect.result(store.register(record(\"new\"), limits));\n const newEvent = yield* Effect.result(store.accept(event(\"new\"), limits));\n\n yield* ensure(Result.isFailure(newRegistration), \"new registration ignored tightened limits\");\n yield* ensure(Result.isFailure(newEvent), \"new intake ignored tightened limits\");\n }),\n);\n\nconst revisionsAndRetention = conformanceCase(\n \"preserves historical selection, CAS revisions, and unsettled evidence during retention\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const now = yield* Clock.currentTimeMillis;\n const policy = { replayHorizonMillis: 10_000, completedRetentionMillis: 0, maxTombstones: 8 };\n const limits = { ...defaultSubscriptionLimits, retention: policy };\n const indefinite = record(\"revision\", \"continuous\");\n\n const original = yield* store.register(\n {\n ...indefinite,\n configuration: { ...indefinite.configuration, expiresAtMillis: null },\n },\n limits,\n );\n\n yield* ensure(\n original.configuration.expiresAtMillis === null,\n \"UntilCancelled must remain explicit\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === null,\n \"UntilCancelled cannot create an expiry wake\",\n );\n\n const accepted = yield* store.accept(\n { ...event(\"retained\"), occurredAtMillis: now, acceptedAtMillis: now },\n limits,\n );\n\n const selected = {\n ...delivery(original, accepted),\n configuration: original.configuration,\n configurationRevision: 1,\n };\n\n yield* store.select(\n accepted,\n [selected],\n original.ordinal,\n true,\n now + limits.maxLifetimeMillis + 1,\n limits,\n );\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"UntilCancelled cannot expire at the ordinary maximum lifetime\",\n );\n\n const updated = yield* store.change(original.key, 1, {\n _tag: \"Update\",\n configuration: { ...original.configuration, context: { edited: true } },\n configurationFingerprint: digest(\"9\"),\n recovery: null,\n });\n\n yield* ensure(\n updated.configurationRevision === 2 && updated.creationConfiguration !== undefined,\n \"Update must preserve creation evidence and advance revision\",\n );\n const stale = yield* store.change(original.key, 1, { _tag: \"Pause\" }).pipe(Effect.result);\n\n yield* ensure(Result.isFailure(stale), \"Stale management must conflict\");\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: now,\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"Admission is not settlement; delivery evidence must remain\",\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: now,\n nextAttemptAtMillis: now,\n });\n const recovering = yield* store.register(record(\"recovering-retention\", \"once\"), limits);\n\n yield* store.deferRecovery(recovering.key, recovering.configurationRevision, {\n attempts: 1,\n nextAttemptAtMillis: null,\n lastFailure: \"source-unavailable\",\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) !== null,\n \"Permanent recovery evidence must protect retained source facts\",\n );\n yield* store.deferRecovery(recovering.key, recovering.configurationRevision, null);\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) === null,\n \"Settled delivery must release retained capacity\",\n );\n yield* ensure(\n (yield* store.event(accepted.eventId))?.tombstone === true,\n \"Deduplication tombstone must outlive completed payload\",\n );\n const replay = yield* store.accept(accepted, limits);\n\n yield* ensure(\n Result.isFailure(\n yield* store\n .accept({ ...accepted, occurredAtMillis: now + 1 }, limits)\n .pipe(Effect.result),\n ),\n \"An event identity cannot replace its retained source timestamp\",\n );\n\n yield* ensure(\n Result.isFailure(\n yield* store.compact(now, { ...policy, replayHorizonMillis: 1 }, 8).pipe(Effect.result),\n ),\n \"Compaction cannot change the persisted replay horizon\",\n );\n yield* ensure(\n Result.isFailure(\n yield* store\n .accept(event(\"without-policy\"), defaultSubscriptionLimits)\n .pipe(Effect.result),\n ),\n \"Fresh intake cannot disable established retention\",\n );\n yield* ensure(\n replay.cutoff === accepted.cutoff && replay.tombstone === true,\n \"Duplicate intake cannot reopen routing after compaction\",\n );\n }),\n);\n\nconst sustainedRetention = conformanceCase(\n \"reuses event, delivery and tombstone quotas across replay horizons\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const policy = { replayHorizonMillis: 100, completedRetentionMillis: 0, maxTombstones: 8 };\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxEvents: 4,\n maxDeliveries: 4,\n maxDeliveriesPerOwner: 4,\n retention: policy,\n };\n\n const registration = yield* store.register(record(\"sustained\", \"continuous\"), limits);\n\n // 32 events reuse four live slots and eight tombstone slots across six replay\n // horizons, including the lexical 9→10 boundary. The full driver's >1,000-event\n // regression remains in storage-memory/test/subscriptions.test.ts; bounded cursor\n // traversal is exercised separately by retentionFairness on every adapter.\n for (let index = 0; index < 32; index++) {\n const now = yield* Clock.currentTimeMillis;\n\n const accepted = yield* store.accept(\n { ...event(`retained-${index}`), occurredAtMillis: now, acceptedAtMillis: now },\n limits,\n );\n\n const deliveryId = Schema.decodeSync(Digest)(index.toString(16).padStart(64, \"0\"));\n\n const selected = {\n ...delivery(registration, accepted),\n deliveryId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n };\n\n yield* store.select(accepted, [selected], registration.ordinal, true, now, limits);\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: now,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: now,\n nextAttemptAtMillis: now,\n });\n yield* store.compact(now, policy, 8);\n yield* ensure(\n (yield* store.delivery(selected.key)) === null,\n \"Settled delivery must release its quota on every cycle\",\n );\n yield* ensure(\n (yield* store.accept(accepted, limits)).tombstone === true,\n \"Duplicate acknowledgement must preserve its tombstone\",\n );\n yield* TestClock.adjust(20);\n }\n yield* ensure(\n (yield* store.event(\"retained-0\")) === null,\n \"Expired identity must be reclaimed\",\n );\n\n const expired = yield* store\n .accept({ ...event(\"retained-0\"), occurredAtMillis: 0 }, limits)\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(expired) &&\n expired.failure._tag === \"SubscriptionError\" &&\n expired.failure.code === \"event-replay-horizon\",\n \"Reclaimed identity must not be admitted after its replay horizon\",\n );\n }),\n);\n\nconst lifetimeCapacity = conformanceCase(\n \"reuses subscription capacity without retention and preserves live host guards and replay\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 1,\n maxRegistrationsPerOwner: 1,\n maxEvents: 1,\n maxDeliveries: 1,\n maxDeliveriesPerOwner: 1,\n };\n\n const retained: Array<{\n registration: SubscriptionRecord;\n accepted: AcceptedEvent;\n completed: SubscriptionDelivery;\n }> = [];\n\n for (let index = 0; index < 4; index++) {\n const registration = yield* store.register(record(`lifetime-${index}`), limits);\n const accepted = yield* store.accept(event(`lifetime-${index}`), limits);\n const deliveryId = Schema.decodeSync(Digest)(index.toString(16).padStart(64, \"0\"));\n\n const selected = {\n ...delivery(registration, accepted),\n deliveryId,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`subscription:${deliveryId}`),\n };\n\n if (index === 3) {\n yield* store.select(accepted, [], 0, true, 20, limits);\n yield* store.catchUp(accepted, selected, 20, limits);\n } else {\n yield* store.select(accepted, [selected], registration.ordinal, true, 20, limits);\n }\n\n if (index % 2 === 0) {\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 20,\n });\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 21,\n });\n } else {\n yield* store.changeDelivery(selected.key, deliveryId, {\n _tag: \"Refuse\",\n refusal: { phase: \"preparation\", code: \"refused\" },\n nowMillis: 21,\n });\n }\n const completed = yield* store.delivery(selected.key);\n\n if (completed === null)\n return yield* ensure(false, \"completion discarded exact delivery evidence\");\n retained.push({ registration, accepted, completed });\n }\n\n for (const { registration, accepted, completed } of retained) {\n const replay = yield* store.register(registration, limits);\n const intakeReplay = yield* store.accept(accepted, limits);\n\n yield* ensure(\n replay.state === \"consumed\" && replay.ordinal === registration.ordinal,\n \"creation replay changed or resurrected a consumed registration\",\n );\n yield* ensure(\n intakeReplay.routingComplete &&\n intakeReplay.cutoff === accepted.cutoff &&\n JSON.stringify(intakeReplay.payload) === JSON.stringify(accepted.payload),\n \"retained event replay lost its payload/cutoff or reopened routing\",\n );\n if (completed.state === \"delivered\")\n yield* store.changeDelivery(completed.key, completed.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 99,\n });\n yield* ensure(\n JSON.stringify(yield* store.delivery(completed.key)) === JSON.stringify(completed),\n \"terminal replay changed prepared input, receipt, refusal or completion time\",\n );\n }\n\n const assertHostGuard = Effect.fnUntraced(function* <A>(\n effect: Effect.Effect<A, SubscriptionStoreFailure>,\n code: string,\n ) {\n const result = yield* Effect.result(effect);\n\n yield* ensure(\n Result.isFailure(result) &&\n result.failure._tag === \"SubscriptionError\" &&\n result.failure.reason === \"capacity\" &&\n result.failure.code === code,\n `host ${code} guard ignored live work`,\n );\n });\n\n const active = yield* store.register(record(\"host-active\"), limits);\n const activeEvent = yield* store.accept(event(\"host-active\"), limits);\n\n yield* assertHostGuard(\n store.register(record(\"host-excess\", \"once\", \"other-owner\"), limits),\n \"registrations\",\n );\n yield* assertHostGuard(store.accept(event(\"host-excess\"), limits), \"events\");\n yield* store.select(\n activeEvent,\n [delivery(active, activeEvent)],\n active.ordinal,\n true,\n 20,\n limits,\n );\n\n const nextRegistration = yield* store.register(\n record(\"host-excess\", \"once\", \"other-owner\"),\n limits,\n );\n\n const nextEvent = yield* store.accept(event(\"host-excess\"), limits);\n\n yield* assertHostGuard(\n store.select(\n nextEvent,\n [delivery(nextRegistration, nextEvent)],\n nextRegistration.ordinal,\n true,\n 20,\n limits,\n ),\n \"deliveries\",\n );\n yield* ensure(\n (yield* store.event(nextEvent.eventId))?.cursor === 0 &&\n (yield* store.get(nextRegistration.key))?.state === \"active\",\n \"host capacity rejection changed routing or registration evidence\",\n );\n }),\n);\n\nconst capacityReactivation = conformanceCase(\n \"reserves live capacity across expiry, pause and settlement observation\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const limits = {\n ...defaultSubscriptionLimits,\n maxRegistrations: 32,\n maxRegistrationsPerOwner: 1,\n maxEvents: 32,\n maxDeliveries: 32,\n maxDeliveriesPerOwner: 1,\n };\n\n const expectCapacity = Effect.fnUntraced(function* <A>(\n effect: Effect.Effect<A, SubscriptionStoreFailure>,\n ) {\n const result = yield* Effect.result(effect);\n\n yield* ensure(\n Result.isFailure(result) &&\n result.failure._tag === \"SubscriptionError\" &&\n result.failure.reason === \"capacity\",\n \"live work did not reserve capacity\",\n );\n });\n\n const expiring = record(\"expiring\");\n\n yield* store.register(\n { ...expiring, configuration: { ...expiring.configuration, expiresAtMillis: 1 } },\n limits,\n );\n yield* TestClock.setTime(2);\n const current = yield* store.register(record(\"current\", \"continuous\"), limits);\n const paused = yield* store.change(current.key, 1, { _tag: \"Pause\" }, limits);\n\n yield* expectCapacity(store.register(record(\"excess\"), limits));\n\n const revive = {\n _tag: \"Update\" as const,\n configuration: expiring.configuration,\n configurationFingerprint: expiring.configurationFingerprint,\n recovery: null,\n };\n\n yield* expectCapacity(store.change(expiring.key, 1, revive, limits));\n yield* ensure(\n (yield* store.get(expiring.key))?.configurationRevision === 1,\n \"rejected revival changed registration evidence\",\n );\n yield* store.cancel(current.key, paused.configurationRevision);\n const registration = yield* store.change(expiring.key, 1, revive, limits);\n const accepted = yield* store.accept(event(\"observed\"), limits);\n\n yield* expectCapacity(store.accept(event(\"unrouted-excess\"), { ...limits, maxEvents: 1 }));\n const selected = { ...delivery(registration, accepted), observeSettlement: true };\n\n yield* store.select(accepted, [selected], registration.ordinal, true, 20, limits);\n const nextRegistration = yield* store.register(record(\"next\"), limits);\n const nextEvent = yield* store.accept(event(\"next-event\"), limits);\n const next = delivery(nextRegistration, nextEvent, \"1\");\n\n const selectNext = store.select(\n nextEvent,\n [next],\n nextRegistration.ordinal,\n true,\n 20,\n limits,\n );\n\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n retry: { ...selected.retry, attempts: 1, automaticAttempts: 1, parked: true },\n nowMillis: 20,\n });\n yield* expectCapacity(selectNext);\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 20,\n });\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 21,\n });\n yield* expectCapacity(selectNext);\n yield* ensure(\n (yield* store.event(nextEvent.eventId))?.cursor === 0 &&\n (yield* store.get(nextRegistration.key))?.state === \"active\",\n \"capacity rejection consumed a registration or advanced routing\",\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: true,\n nowMillis: 22,\n nextAttemptAtMillis: 22,\n });\n yield* selectNext;\n yield* store.changeDelivery(next.key, next.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(next),\n envelopeDigest: digest(\"4\"),\n nowMillis: 22,\n });\n yield* store.changeDelivery(next.key, next.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 23,\n });\n const blocker = yield* store.register(record(\"blocker\"), limits);\n const blockerEvent = yield* store.accept(event(\"blocker\"), limits);\n const blockerDelivery = delivery(blocker, blockerEvent);\n\n yield* store.select(blockerEvent, [blockerDelivery], blocker.ordinal, true, 24, limits);\n yield* expectCapacity(\n store.changeDelivery(\n next.key,\n next.deliveryId,\n {\n _tag: \"ObserveSettlement\",\n receipt,\n settled: false,\n nowMillis: 24,\n nextAttemptAtMillis: 25,\n },\n limits,\n ),\n );\n yield* ensure(\n (yield* store.delivery(next.key))?.observeSettlement !== true,\n \"rejected observation reactivation changed delivery evidence\",\n );\n }),\n);\n\nconst recoveryRevisionFence = conformanceCase(\n \"fences source recovery across pause, resume and configuration replacement\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const initial = yield* store.register(\n {\n ...record(\"recovery-revisions\"),\n recovery: { attempts: 0, nextAttemptAtMillis: 10, lastFailure: null },\n },\n defaultSubscriptionLimits,\n );\n\n const paused = yield* store.change(initial.key, 1, { _tag: \"Pause\" });\n\n yield* store.deferRecovery(initial.key, 1, null);\n yield* ensure(\n (yield* store.get(initial.key))?.recovery?.nextAttemptAtMillis === 10,\n \"late provider completion erased paused recovery\",\n );\n\n const resumed = yield* store.change(initial.key, paused.configurationRevision, {\n _tag: \"Resume\",\n });\n\n yield* ensure(\n resumed.recovery?.nextAttemptAtMillis === 10,\n \"resume lost the recovery obligation\",\n );\n\n const updated = yield* store.change(initial.key, resumed.configurationRevision, {\n _tag: \"Update\",\n configuration: { ...initial.configuration, source: { name: \"replacement\", version: \"2\" } },\n configurationFingerprint: digest(\"9\"),\n recovery: { attempts: 0, nextAttemptAtMillis: 50, lastFailure: null },\n });\n\n yield* store.deferRecovery(initial.key, resumed.configurationRevision, {\n attempts: 9,\n nextAttemptAtMillis: null,\n lastFailure: \"obsolete-source\",\n });\n const retained = yield* store.get(initial.key);\n\n yield* ensure(\n retained?.recovery?.nextAttemptAtMillis === 50 &&\n retained.configurationRevision === updated.configurationRevision,\n \"obsolete provider completion overwrote replacement recovery\",\n );\n yield* ensure(\n retained?.creationFingerprint === initial.creationFingerprint &&\n retained.creationConfiguration.source.name === initial.configuration.source.name,\n \"revision rewrote creation identity\",\n );\n }),\n);\n\nconst retryGenerationFence = conformanceCase(\n \"rearms only one delivery generation and retains late receipt authority\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n\n const subscription = yield* store.register(\n record(\"retry-generation\", \"continuous\"),\n defaultSubscriptionLimits,\n );\n\n const accepted = yield* store.accept(event(\"retry-generation\"), defaultSubscriptionLimits);\n const selected = { ...delivery(subscription, accepted), observeSettlement: true };\n\n yield* store.select(\n accepted,\n [selected],\n subscription.ordinal,\n true,\n 20,\n defaultSubscriptionLimits,\n );\n yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Prepare\",\n envelope: preparedInput(selected),\n envelopeDigest: digest(\"4\"),\n nowMillis: 30,\n });\n\n const parked = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n nowMillis: 40,\n retry: {\n ...selected.retry,\n attempts: 8,\n automaticAttempts: 8,\n parked: true,\n nextAttemptAtMillis: 50,\n lastAttemptAtMillis: 40,\n lastFailure: \"ambiguous\",\n },\n });\n\n yield* ensure(\n (yield* store.pendingDeliveries(100, \"\", 10)).length === 0,\n \"parked admission remained due for settlement observation\",\n );\n yield* ensure(\n (yield* store.nextDeadline) === null,\n \"parked admission retained a busy-loop deadline\",\n );\n\n const recovered = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Recover\",\n expectedGeneration: parked.retry.generation,\n nowMillis: 50,\n });\n\n const stale = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Retry\",\n nowMillis: 60,\n retry: { ...parked.retry, attempts: 9, nextAttemptAtMillis: 70 },\n });\n\n yield* ensure(\n !stale.retry.parked && stale.retry.generation === recovered.retry.generation,\n \"stale retry undid recovery\",\n );\n\n const completed = yield* store.changeDelivery(selected.key, selected.deliveryId, {\n _tag: \"Complete\",\n receipt,\n nowMillis: 70,\n });\n\n yield* ensure(\n completed.receipt?.receiptId === receipt.receiptId &&\n completed.envelopeDigest === digest(\"4\"),\n \"late receipt or immutable envelope was lost\",\n );\n }),\n);\n\nconst retentionFairness = conformanceCase(\n \"advances bounded maintenance beyond protected oldest events\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* SubscriptionStore;\n const policy = { replayHorizonMillis: 1_000, completedRetentionMillis: 0, maxTombstones: 8 };\n const limits = { ...defaultSubscriptionLimits, retention: policy };\n\n for (let index = 0; index < 6; index++) {\n const accepted = yield* store.accept(\n { ...event(`protected-${index}`), occurredAtMillis: 0, acceptedAtMillis: 0 },\n limits,\n );\n\n if (index === 5) yield* store.select(accepted, [], 0, true, 0, limits);\n }\n yield* TestClock.setTime(10);\n for (let pass = 0; pass < 8; pass++) yield* store.compact(10, policy, 1);\n yield* ensure(\n (yield* store.event(\"protected-5\"))?.tombstone === true,\n \"protected first pages starved a reclaimable event\",\n );\n yield* ensure(\n (yield* store.event(\"protected-0\"))?.tombstone !== true,\n \"unfinished event was reclaimed\",\n );\n yield* TestClock.setTime(1_001);\n for (let pass = 0; pass < 8; pass++) yield* store.compact(1_001, policy, 1);\n yield* ensure(\n (yield* store.event(\"protected-5\")) === null,\n \"idle maintenance did not expire tombstone\",\n );\n\n const rejected = yield* store\n .accept({ ...event(\"protected-5\"), occurredAtMillis: 0 }, limits)\n .pipe(Effect.result);\n\n // The caller cannot manufacture a recent occurrence to resurrect a pruned identity.\n yield* ensure(Result.isFailure(rejected), \"retention state became inconsistent\");\n }),\n);\n\nexport const subscriptionStoreConformanceCases: ReadonlyArray<SubscriptionStoreConformanceCase> = [\n historicalOccurrenceReplay,\n recoveryRevisionFence,\n retryGenerationFence,\n retentionFairness,\n sustainedRetention,\n lifetimeCapacity,\n capacityReactivation,\n revisionsAndRetention,\n cutoffAndIntake,\n onceAndCapacity,\n preparationLifecycle,\n catchUpAndCursors,\n replayUnderTighterLimits,\n];\n"],"mappings":";;;;;;;AAiBA,IAAa,wCAAb,cAA2D,OAAO,YAAmD,CAAC,CACpH,yCACA;CAAE,UAAU,OAAO;CAAQ,SAAS,OAAO;AAAO,CACpD,CAAC,CAAC,CAAC;AAWH,MAAa,mCAAoD;CAC/D,UAAU;CACV,SAAS;AACX;AAEA,MAAM,YAAY,OAAO,WAAW,SAAS,CAAC,CAAC,oCAAoC;AACnF,MAAM,UAAU,OAAO,WAAW,OAAO,CAAC,CAAC,gCAAgC;AAC3E,MAAM,WAAW,OAAO,WAAW,QAAQ,CAAC,CAAC,iCAAiC;AAC9E,MAAM,UAAU,cAAsB,OAAO,WAAW,MAAM,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;AAEpF,MAAM,cAAc,kBAAkB,KAAK;CACzC,OAAO,OAAO,GAAG;CACjB,OAAO,OAAO,GAAG;CACjB,OAAO,OAAO,GAAG;AACnB,CAAC;AAED,MAAM,UACJ,MACA,OAA8B,QAC9B,UAAU,aACc;CACxB,eAAe;CACf,KAAK;EAAE,WAAW;EAAkC;EAAS,gBAAgB;CAAK;CAClF,qBAAqB,OAAO,KAAK,WAAW,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG;CACpE,WAAW;CACX,iBAAiB;CACjB,SAAS;CACT,uBAAuB;CACvB,0BAA0B,OAAO,KAAK,WAAW,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG;CACzE,uBAAuB;EACrB,QAAQ;GAAE,MAAM;GAAW,SAAS;EAAI;EACxC,aAAa;EACb,YAAY,EAAE,KAAK;EACnB,SAAS,EAAE,KAAK;EAChB;EACA,iBAAiB;EACjB,aAAa;GAAE,MAAM;GAAkB;EAAS;EAChD,mBAAmB;EACnB;EACA;CACF;CACA,eAAe;EACb,QAAQ;GAAE,MAAM;GAAW,SAAS;EAAI;EACxC,aAAa;EACb,YAAY,EAAE,KAAK;EACnB,SAAS,EAAE,KAAK;EAChB;EACA,iBAAiB;EACjB,aAAa;GAAE,MAAM;GAAkB;EAAS;EAChD,mBAAmB;EACnB;EACA;CACF;CACA,OAAO;CACP,UAAU;AACZ;AAEA,MAAM,SAAS,MAAc,gBAAgB,OAAO,GAAG,OAAsB;CAC3E,eAAe;CACf,WAAW;CACX,SAAS;CACT,QAAQ;EAAE,MAAM;EAAW,SAAS;CAAI;CACxC,aAAa;CACb,SAAS,EAAE,KAAK;CAChB;CACA,kBAAkB;CAClB,QAAQ;CACR,QAAQ;CACR,iBAAiB;CACjB,gBAAgB;CAChB,qBAAqB;AACvB;AAEA,MAAM,YACJ,cACA,UACA,SAAS,QACgB;CACzB,MAAM,aAAa,OAAO,WAAW,MAAM,MAAM,GAAG;CAEpD,OAAO;EACL,eAAe;EACf,KAAK;GAAE,cAAc,aAAa;GAAK,SAAS,SAAS;EAAQ;EACjE;EACA,QAAQ,SAAS;EACjB,yBAAyB,aAAa;EACtC,uBAAuB,aAAa;EACpC,eAAe,aAAa;EAC5B,aAAa,SAAS;EACtB;EACA,cAAc,OAAO,WAAW,cAAc,CAAC,CAAC,gBAAgB,YAAY;EAC5E,kBAAkB,WAAW,MAAM,KAAK;EACxC,OAAO;EACP,UAAU;EACV,gBAAgB;EAChB,OAAO;GACL,YAAY;GACZ,UAAU;GACV,mBAAmB;GACnB,QAAQ;GACR,qBAAqB;GACrB,qBAAqB;GACrB,aAAa;EACf;EACA,SAAS;EACT,SAAS;CACX;AACF;AAEA,MAAM,iBAAiB,cAAoC;CACzD,eAAe;CACf,UAAU,SAAS;CACnB,mBAAmB;CACnB;CACA;CACA,OAAO,EAAE,OAAO,SAAS,IAAI,QAAQ;CACrC,aAAa,OAAO,GAAG;CACvB,cAAc,SAAS;CACvB,eAAe;EAAE,UAAU;EAAU,YAAY;CAAW;AAC9D;AAEA,MAAM,UAAU,QAAQ,KAAK;CAC3B,WAAW,OAAO,WAAW,SAAS,CAAC,CAAC,kCAAkC;CAC1E,cAAc,OAAO,WAAW,YAAY,CAAC,CAAC,qCAAqC;CACnF;CACA,eAAe,OAAO,WAAW,aAAa,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,mBACJ,MACA,UAUsC;CACtC;CACA,KAAK,MAAM,WAAW,YACpB,YACI,OAAO,OACP,OAAO,KAAK,sCAAsC,KAAK;EAAE,UAAU;EAAM;CAAQ,CAAC,CAAC,CACzF;AACF;AAEA,MAAM,6BAA6B,gBACjC,uEACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,mBAAmB,GAAG,yBAAyB;CAE1F,MAAM,SAAS,OAAO,MAAM,OAC1B;EAAE,GAAG;EAAU,kBAAkB;CAAE,GACnC,yBACF;CAEA,OAAO,OACL,OAAO,qBAAqB,KAAA,KAC1B,OAAO,qBAAqB,SAAS,oBACrC,OAAO,WAAW,SAAS,QAC7B,2DACF;CAEA,MAAM,QAAQ,OAAO,MAAM,OACzB;EAAE,GAAG,MAAM,kBAAkB;EAAG,kBAAkB;CAAE,GACpD,yBACF;CAEA,MAAM,UAAU,OAAO,MACpB,OAAO;EAAE,GAAG;EAAO,kBAAkB;CAAE,GAAG,yBAAyB,CAAC,CACpE,KAAK,OAAO,MAAM;CAErB,OAAO,OAAO,OAAO,UAAU,OAAO,GAAG,yCAAyC;CAElF,MAAM,UAAU,OAAO,MACpB,OAAO,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,CAC5D,KAAK,OAAO,MAAM;CAErB,OAAO,OAAO,OAAO,UAAU,OAAO,GAAG,4CAA4C;AACvF,CAAC,CACL;AAEA,MAAM,kBAAkB,gBACtB,8DACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,SAAS,OAAO,MAAM,SAAS,OAAO,QAAQ,GAAG,yBAAyB;CAChF,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,QAAQ,GAAG,yBAAyB;CAC/E,MAAM,QAAQ,OAAO,MAAM,SAAS,OAAO,OAAO,GAAG,yBAAyB;CAE9E,OAAO,OACL,OAAO,UAAU,SAAS,UAAU,MAAM,UAAU,SAAS,QAC7D,gDACF;CACA,MAAM,aAAa,OAAO,MAAM,WAAW,UAAU,EAAE;CAEvD,OAAO,OACL,WAAW,WAAW,KAAK,WAAW,EAAE,CAAC,IAAI,mBAAmB,UAChE,sCACF;CAEA,MAAM,WAAW,OAAO,MAAM,OAC5B;EAAE,GAAG,MAAM,QAAQ;EAAG,kBAAkB;CAAG,GAC3C,yBACF;CAEA,OAAO,OACL,SAAS,WAAW,SAAS,UAC3B,SAAS,qBAAqB,SAAS,kBACzC,mDACF;CAEA,MAAM,WAAW,OAAO,OAAO,OAC7B,MAAM,OAAO,MAAM,UAAU,OAAO,GAAG,CAAC,GAAG,yBAAyB,CACtE;CAEA,OAAO,OACL,OAAO,UAAU,QAAQ,KACvB,SAAS,QAAQ,SAAS,uBAC1B,SAAS,QAAQ,WAAW,YAC9B,yCACF;AACF,CAAC,CACL;AAEA,MAAM,kBAAkB,gBACtB,kEACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,OAAO,OAAO,MAAM,SAAS,OAAO,MAAM,GAAG,yBAAyB;CAC5E,MAAM,QAAQ,OAAO,MAAM,OAAO,MAAM,OAAO,GAAG,yBAAyB;CAC3E,MAAM,SAAS,OAAO,MAAM,OAAO,MAAM,QAAQ,GAAG,yBAAyB;CAE7E,MAAM,YAAY,OAAO,MACtB,OACC,OACA,CAAC,SAAS,MAAM,KAAK,GAAG,SAAS,MAAM,KAAK,CAAC,GAC7C,KAAK,SACL,MACA,IACA,yBACF,CAAC,CACA,KAAK,OAAO,MAAM;CAErB,OAAO,OACL,OAAO,UAAU,SAAS,KACxB,UAAU,QAAQ,SAAS,uBAC3B,UAAU,QAAQ,WAAW,cAC/B,+EACF;CACA,OAAO,QACJ,OAAO,MAAM,IAAI,KAAK,GAAG,EAAA,EAAI,UAAU,aACrC,OAAO,MAAM,MAAM,MAAM,OAAO,EAAA,EAAI,WAAW,GAClD,6DACF;CACA,OAAO,MAAM,OACX,OACA,CAAC,SAAS,MAAM,KAAK,CAAC,GACtB,KAAK,SACL,MACA,IACA,yBACF;CACA,OAAO,MAAM,OACX,QACA,CAAC,SAAS,MAAM,MAAM,CAAC,GACvB,KAAK,SACL,MACA,IACA,yBACF;CACA,OAAO,QACJ,OAAO,MAAM,IAAI,KAAK,GAAG,EAAA,EAAI,UAAU,YACxC,mCACF;CACA,OAAO,QACJ,OAAO,MAAM,SAAS;EAAE,cAAc,KAAK;EAAK,SAAS,MAAM;CAAQ,CAAC,OAAO,MAChF,2BACF;CACA,OAAO,QACJ,OAAO,MAAM,SAAS;EAAE,cAAc,KAAK;EAAK,SAAS,OAAO;CAAQ,CAAC,OAAO,MACjF,+CACF;CAEA,MAAM,OAAO,OAAO,MAAM,SACxB,OAAO,QAAQ,cAAc,UAAU,GACvC,yBACF;CAEA,MAAM,QAAQ,OAAO,MAAM,SACzB,OAAO,SAAS,cAAc,UAAU,GACxC,yBACF;CAEA,MAAM,UAAU,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG,yBAAyB;CAC/E,MAAM,SAAS;EAAE,GAAG;EAA2B,eAAe;EAAG,uBAAuB;CAAE;CAE1F,MAAM,UAAU,OAAO,OAAO,OAC5B,MAAM,OACJ,SACA,CAAC,SAAS,MAAM,OAAO,GAAG,SAAS,OAAO,SAAS,GAAG,CAAC,GACvD,MAAM,SACN,MACA,IACA,MACF,CACF;CAEA,OAAO,OACL,OAAO,UAAU,OAAO,KACtB,QAAQ,QAAQ,SAAS,uBACzB,QAAQ,QAAQ,WAAW,YAC7B,qCACF;CACA,OAAO,QACJ,OAAO,MAAM,MAAM,QAAQ,OAAO,EAAA,EAAI,WAAW,GAClD,wCACF;AACF,CAAC,CACL;AAEA,MAAM,uBAAuB,gBAC3B,4DACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,YAAY,OAAO,MAAM,SAAS,OAAO,WAAW,GAAG,yBAAyB;CAEtF,MAAM,iBAAiB,OAAO,MAAM,OAClC,MAAM,iBAAiB,GACvB,yBACF;CAEA,MAAM,oBAAoB,SAAS,WAAW,cAAc;CAE5D,OAAO,MAAM,OACX,gBACA,CAAC,iBAAiB,GAClB,UAAU,SACV,MACA,IACA,yBACF;CACA,OAAO,MAAM,OAAO,UAAU,GAAG;CAEjC,MAAM,UAAU,OAAO,MAAM,eAC3B,kBAAkB,KAClB,kBAAkB,YAClB;EACE,MAAM;EACN,UAAU,cAAc,iBAAiB;EACzC,gBAAgB,OAAO,GAAG;EAC1B,WAAW;CACb,CACF;CAEA,OAAO,OACL,QAAQ,UAAU,aAAa,QAAQ,SAAS,SAAS,aACzD,8BACF;CAEA,MAAM,UAAU,OAAO,MAAM,SAAS,OAAO,SAAS,GAAG,yBAAyB;CAClF,MAAM,eAAe,OAAO,MAAM,OAAO,MAAM,eAAe,GAAG,yBAAyB;CAC1F,MAAM,WAAW,SAAS,SAAS,YAAY;CAE/C,OAAO,MAAM,OACX,cACA,CAAC,QAAQ,GACT,QAAQ,SACR,MACA,IACA,yBACF;CAEA,MAAM,WAAW,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC9E,MAAM;EACN,UAAU,cAAc,QAAQ;EAChC,gBAAgB,OAAO,GAAG;EAC1B,WAAW;CACb,CAAC;CAED,MAAM,QAAQ;EACZ,YAAY;EACZ,mBAAmB;EACnB,QAAQ;EACR,UAAU;EACV,qBAAqB;EACrB,qBAAqB;EACrB,aAAa;CACf;CAEA,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN;EACA,WAAW;CACb,CAAC;CACD,KAAK,MAAM,cAAc;EACvB;GAAE,GAAG;GAAO,UAAU;GAAG,qBAAqB;EAAG;EACjD;GAAE,GAAG;GAAO,qBAAqB;EAAG;EACpC;GAAE,GAAG;GAAO,UAAU;GAAG,qBAAqB;EAAG;CACnD,GAAG;EACD,MAAM,WAAW,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC9E,MAAM;GACN,OAAO;GACP,WAAW;EACb,CAAC;EAED,OAAO,OACL,SAAS,MAAM,aAAa,KAAK,SAAS,MAAM,wBAAwB,IACxE,yCACF;CACF;CACA,OAAO,MAAM,OAAO,QAAQ,GAAG;CAE/B,MAAM,YAAY,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC/E,MAAM;EACN;EACA,WAAW;CACb,CAAC;CAED,OAAO,OACL,SAAS,UAAU,cAAc,UAAU,UAAU,aACrD,4CACF;CAEA,MAAM,QAAQ,OAAO,OAAO,OAC1B,MAAM,eAAe,SAAS,KAAK,OAAO,GAAG,GAAG;EAC9C,MAAM;EACN;EACA,WAAW;CACb,CAAC,CACH;CAEA,OAAO,OACL,OAAO,UAAU,KAAK,KACpB,MAAM,QAAQ,SAAS,uBACvB,MAAM,QAAQ,SAAS,kBACzB,8BACF;AACF,CAAC,CACL;AAEA,MAAM,oBAAoB,gBACxB,+DACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,UAAU,GAAG,yBAAyB;CACjF,MAAM,QAAQ,OAAO,MAAM,SAAS,OAAO,OAAO,GAAG,yBAAyB;CAC9E,MAAM,WAAW,SAAS,OAAO,QAAQ;CAEzC,OAAO,MAAM,QAAQ,UAAU,UAAU,IAAI,yBAAyB;CACtE,OAAO,MAAM,QACX,UACA;EAAE,GAAG;EAAU,kBAAkB;EAAK,OAAO;GAAE,GAAG,SAAS;GAAO,UAAU;EAAE;CAAE,GAChF,IACA,yBACF;CACA,OAAO,QACJ,OAAO,MAAM,IAAI,MAAM,GAAG,EAAA,EAAI,UAAU,YACzC,gCACF;CACA,OAAO,MAAM,mBAAmB;EAAE,QAAQ;EAAK,YAAY;EAAK,UAAU;CAAE,CAAC;CAC7E,MAAM,UAAU,OAAO,MAAM;CAE7B,OAAO,OACL,QAAQ,WAAW,OAAO,QAAQ,eAAe,OAAO,QAAQ,aAAa,GAC7E,+BACF;CACA,OAAO,QACJ,OAAO,MAAM,kBAAkB,GAChC,iDACF;AACF,CAAC,CACL;AAEA,MAAM,2BAA2B,gBAC/B,sDACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,UAAU,OAAO,MAAM,SAAS,OAAO,UAAU,GAAG,yBAAyB;CACnF,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,UAAU,GAAG,yBAAyB;CAEjF,MAAM,SAAS;EACb,GAAG;EACH,kBAAkB;EAClB,WAAW;EACX,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;CACrB;CAEA,MAAM,WAAW,OAAO,MAAM,SAAS,OAAO,UAAU,GAAG,MAAM;CACjE,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,UAAU,GAAG,MAAM;CAE9D,OAAO,OAAO,SAAS,YAAY,QAAQ,SAAS,mCAAmC;CACvF,OAAO,OAAO,SAAS,WAAW,SAAS,QAAQ,2BAA2B;CAC9E,MAAM,kBAAkB,OAAO,OAAO,OAAO,MAAM,SAAS,OAAO,KAAK,GAAG,MAAM,CAAC;CAClF,MAAM,WAAW,OAAO,OAAO,OAAO,MAAM,OAAO,MAAM,KAAK,GAAG,MAAM,CAAC;CAExE,OAAO,OAAO,OAAO,UAAU,eAAe,GAAG,2CAA2C;CAC5F,OAAO,OAAO,OAAO,UAAU,QAAQ,GAAG,qCAAqC;AACjF,CAAC,CACL;AAEA,MAAM,wBAAwB,gBAC5B,2FACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,MAAM,OAAO,MAAM;CACzB,MAAM,SAAS;EAAE,qBAAqB;EAAQ,0BAA0B;EAAG,eAAe;CAAE;CAC5F,MAAM,SAAS;EAAE,GAAG;EAA2B,WAAW;CAAO;CACjE,MAAM,aAAa,OAAO,YAAY,YAAY;CAElD,MAAM,WAAW,OAAO,MAAM,SAC5B;EACE,GAAG;EACH,eAAe;GAAE,GAAG,WAAW;GAAe,iBAAiB;EAAK;CACtE,GACA,MACF;CAEA,OAAO,OACL,SAAS,cAAc,oBAAoB,MAC3C,qCACF;CACA,OAAO,QACJ,OAAO,MAAM,kBAAkB,MAChC,6CACF;CAEA,MAAM,WAAW,OAAO,MAAM,OAC5B;EAAE,GAAG,MAAM,UAAU;EAAG,kBAAkB;EAAK,kBAAkB;CAAI,GACrE,MACF;CAEA,MAAM,WAAW;EACf,GAAG,SAAS,UAAU,QAAQ;EAC9B,eAAe,SAAS;EACxB,uBAAuB;CACzB;CAEA,OAAO,MAAM,OACX,UACA,CAAC,QAAQ,GACT,SAAS,SACT,MACA,MAAM,OAAO,oBAAoB,GACjC,MACF;CACA,OAAO,QACJ,OAAO,MAAM,SAAS,SAAS,GAAG,OAAO,MAC1C,+DACF;CAEA,MAAM,UAAU,OAAO,MAAM,OAAO,SAAS,KAAK,GAAG;EACnD,MAAM;EACN,eAAe;GAAE,GAAG,SAAS;GAAe,SAAS,EAAE,QAAQ,KAAK;EAAE;EACtE,0BAA0B,OAAO,GAAG;EACpC,UAAU;CACZ,CAAC;CAED,OAAO,OACL,QAAQ,0BAA0B,KAAK,QAAQ,0BAA0B,KAAA,GACzE,6DACF;CACA,MAAM,QAAQ,OAAO,MAAM,OAAO,SAAS,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,MAAM;CAExF,OAAO,OAAO,OAAO,UAAU,KAAK,GAAG,gCAAgC;CACvE,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN,UAAU,cAAc,QAAQ;EAChC,gBAAgB,OAAO,GAAG;EAC1B,WAAW;CACb,CAAC;CACD,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN;EACA,WAAW;CACb,CAAC;CACD,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;CACnC,OAAO,QACJ,OAAO,MAAM,SAAS,SAAS,GAAG,OAAO,MAC1C,4DACF;CACA,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN;EACA,SAAS;EACT,WAAW;EACX,qBAAqB;CACvB,CAAC;CACD,MAAM,aAAa,OAAO,MAAM,SAAS,OAAO,wBAAwB,MAAM,GAAG,MAAM;CAEvF,OAAO,MAAM,cAAc,WAAW,KAAK,WAAW,uBAAuB;EAC3E,UAAU;EACV,qBAAqB;EACrB,aAAa;CACf,CAAC;CACD,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;CACnC,OAAO,QACJ,OAAO,MAAM,SAAS,SAAS,GAAG,OAAO,MAC1C,gEACF;CACA,OAAO,MAAM,cAAc,WAAW,KAAK,WAAW,uBAAuB,IAAI;CACjF,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;CACnC,OAAO,QACJ,OAAO,MAAM,SAAS,SAAS,GAAG,OAAO,MAC1C,iDACF;CACA,OAAO,QACJ,OAAO,MAAM,MAAM,SAAS,OAAO,EAAA,EAAI,cAAc,MACtD,wDACF;CACA,MAAM,SAAS,OAAO,MAAM,OAAO,UAAU,MAAM;CAEnD,OAAO,OACL,OAAO,UACL,OAAO,MACJ,OAAO;EAAE,GAAG;EAAU,kBAAkB,MAAM;CAAE,GAAG,MAAM,CAAC,CAC1D,KAAK,OAAO,MAAM,CACvB,GACA,gEACF;CAEA,OAAO,OACL,OAAO,UACL,OAAO,MAAM,QAAQ,KAAK;EAAE,GAAG;EAAQ,qBAAqB;CAAE,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,MAAM,CACxF,GACA,uDACF;CACA,OAAO,OACL,OAAO,UACL,OAAO,MACJ,OAAO,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,CAC1D,KAAK,OAAO,MAAM,CACvB,GACA,mDACF;CACA,OAAO,OACL,OAAO,WAAW,SAAS,UAAU,OAAO,cAAc,MAC1D,yDACF;AACF,CAAC,CACL;AAEA,MAAM,qBAAqB,gBACzB,uEACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,SAAS;EAAE,qBAAqB;EAAK,0BAA0B;EAAG,eAAe;CAAE;CAEzF,MAAM,SAAS;EACb,GAAG;EACH,WAAW;EACX,eAAe;EACf,uBAAuB;EACvB,WAAW;CACb;CAEA,MAAM,eAAe,OAAO,MAAM,SAAS,OAAO,aAAa,YAAY,GAAG,MAAM;CAMpF,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,SAAS;EACvC,MAAM,MAAM,OAAO,MAAM;EAEzB,MAAM,WAAW,OAAO,MAAM,OAC5B;GAAE,GAAG,MAAM,YAAY,OAAO;GAAG,kBAAkB;GAAK,kBAAkB;EAAI,GAC9E,MACF;EAEA,MAAM,aAAa,OAAO,WAAW,MAAM,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;EAEjF,MAAM,WAAW;GACf,GAAG,SAAS,cAAc,QAAQ;GAClC;GACA,cAAc,OAAO,WAAW,cAAc,CAAC,CAAC,gBAAgB,YAAY;EAC9E;EAEA,OAAO,MAAM,OAAO,UAAU,CAAC,QAAQ,GAAG,aAAa,SAAS,MAAM,KAAK,MAAM;EACjF,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC7D,MAAM;GACN,UAAU,cAAc,QAAQ;GAChC,gBAAgB,OAAO,GAAG;GAC1B,WAAW;EACb,CAAC;EACD,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC7D,MAAM;GACN;GACA,WAAW;EACb,CAAC;EACD,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC7D,MAAM;GACN;GACA,SAAS;GACT,WAAW;GACX,qBAAqB;EACvB,CAAC;EACD,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;EACnC,OAAO,QACJ,OAAO,MAAM,SAAS,SAAS,GAAG,OAAO,MAC1C,wDACF;EACA,OAAO,QACJ,OAAO,MAAM,OAAO,UAAU,MAAM,EAAA,CAAG,cAAc,MACtD,uDACF;EACA,OAAO,UAAU,OAAO,EAAE;CAC5B;CACA,OAAO,QACJ,OAAO,MAAM,MAAM,YAAY,OAAO,MACvC,oCACF;CAEA,MAAM,UAAU,OAAO,MACpB,OAAO;EAAE,GAAG,MAAM,YAAY;EAAG,kBAAkB;CAAE,GAAG,MAAM,CAAC,CAC/D,KAAK,OAAO,MAAM;CAErB,OAAO,OACL,OAAO,UAAU,OAAO,KACtB,QAAQ,QAAQ,SAAS,uBACzB,QAAQ,QAAQ,SAAS,wBAC3B,kEACF;AACF,CAAC,CACL;AAEA,MAAM,mBAAmB,gBACvB,6FACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CAErB,MAAM,SAAS;EACb,GAAG;EACH,kBAAkB;EAClB,0BAA0B;EAC1B,WAAW;EACX,eAAe;EACf,uBAAuB;CACzB;CAEA,MAAM,WAID,CAAC;CAEN,KAAK,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS;EACtC,MAAM,eAAe,OAAO,MAAM,SAAS,OAAO,YAAY,OAAO,GAAG,MAAM;EAC9E,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,YAAY,OAAO,GAAG,MAAM;EACvE,MAAM,aAAa,OAAO,WAAW,MAAM,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;EAEjF,MAAM,WAAW;GACf,GAAG,SAAS,cAAc,QAAQ;GAClC;GACA,cAAc,OAAO,WAAW,cAAc,CAAC,CAAC,gBAAgB,YAAY;EAC9E;EAEA,IAAI,UAAU,GAAG;GACf,OAAO,MAAM,OAAO,UAAU,CAAC,GAAG,GAAG,MAAM,IAAI,MAAM;GACrD,OAAO,MAAM,QAAQ,UAAU,UAAU,IAAI,MAAM;EACrD,OACE,OAAO,MAAM,OAAO,UAAU,CAAC,QAAQ,GAAG,aAAa,SAAS,MAAM,IAAI,MAAM;EAGlF,IAAI,QAAQ,MAAM,GAAG;GACnB,OAAO,MAAM,eAAe,SAAS,KAAK,YAAY;IACpD,MAAM;IACN,UAAU,cAAc,QAAQ;IAChC,gBAAgB,OAAO,GAAG;IAC1B,WAAW;GACb,CAAC;GACD,OAAO,MAAM,eAAe,SAAS,KAAK,YAAY;IACpD,MAAM;IACN;IACA,WAAW;GACb,CAAC;EACH,OACE,OAAO,MAAM,eAAe,SAAS,KAAK,YAAY;GACpD,MAAM;GACN,SAAS;IAAE,OAAO;IAAe,MAAM;GAAU;GACjD,WAAW;EACb,CAAC;EAEH,MAAM,YAAY,OAAO,MAAM,SAAS,SAAS,GAAG;EAEpD,IAAI,cAAc,MAChB,OAAO,OAAO,OAAO,OAAO,8CAA8C;EAC5E,SAAS,KAAK;GAAE;GAAc;GAAU;EAAU,CAAC;CACrD;CAEA,KAAK,MAAM,EAAE,cAAc,UAAU,eAAe,UAAU;EAC5D,MAAM,SAAS,OAAO,MAAM,SAAS,cAAc,MAAM;EACzD,MAAM,eAAe,OAAO,MAAM,OAAO,UAAU,MAAM;EAEzD,OAAO,OACL,OAAO,UAAU,cAAc,OAAO,YAAY,aAAa,SAC/D,gEACF;EACA,OAAO,OACL,aAAa,mBACX,aAAa,WAAW,SAAS,UACjC,KAAK,UAAU,aAAa,OAAO,MAAM,KAAK,UAAU,SAAS,OAAO,GAC1E,mEACF;EACA,IAAI,UAAU,UAAU,aACtB,OAAO,MAAM,eAAe,UAAU,KAAK,UAAU,YAAY;GAC/D,MAAM;GACN;GACA,WAAW;EACb,CAAC;EACH,OAAO,OACL,KAAK,UAAU,OAAO,MAAM,SAAS,UAAU,GAAG,CAAC,MAAM,KAAK,UAAU,SAAS,GACjF,6EACF;CACF;CAEA,MAAM,kBAAkB,OAAO,WAAW,WACxC,QACA,MACA;EACA,MAAM,SAAS,OAAO,OAAO,OAAO,MAAM;EAE1C,OAAO,OACL,OAAO,UAAU,MAAM,KACrB,OAAO,QAAQ,SAAS,uBACxB,OAAO,QAAQ,WAAW,cAC1B,OAAO,QAAQ,SAAS,MAC1B,QAAQ,KAAK,yBACf;CACF,CAAC;CAED,MAAM,SAAS,OAAO,MAAM,SAAS,OAAO,aAAa,GAAG,MAAM;CAClE,MAAM,cAAc,OAAO,MAAM,OAAO,MAAM,aAAa,GAAG,MAAM;CAEpE,OAAO,gBACL,MAAM,SAAS,OAAO,eAAe,QAAQ,aAAa,GAAG,MAAM,GACnE,eACF;CACA,OAAO,gBAAgB,MAAM,OAAO,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ;CAC3E,OAAO,MAAM,OACX,aACA,CAAC,SAAS,QAAQ,WAAW,CAAC,GAC9B,OAAO,SACP,MACA,IACA,MACF;CAEA,MAAM,mBAAmB,OAAO,MAAM,SACpC,OAAO,eAAe,QAAQ,aAAa,GAC3C,MACF;CAEA,MAAM,YAAY,OAAO,MAAM,OAAO,MAAM,aAAa,GAAG,MAAM;CAElE,OAAO,gBACL,MAAM,OACJ,WACA,CAAC,SAAS,kBAAkB,SAAS,CAAC,GACtC,iBAAiB,SACjB,MACA,IACA,MACF,GACA,YACF;CACA,OAAO,QACJ,OAAO,MAAM,MAAM,UAAU,OAAO,EAAA,EAAI,WAAW,MACjD,OAAO,MAAM,IAAI,iBAAiB,GAAG,EAAA,EAAI,UAAU,UACtD,kEACF;AACF,CAAC,CACL;AAEA,MAAM,uBAAuB,gBAC3B,2EACC,WACC,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CAErB,MAAM,SAAS;EACb,GAAG;EACH,kBAAkB;EAClB,0BAA0B;EAC1B,WAAW;EACX,eAAe;EACf,uBAAuB;CACzB;CAEA,MAAM,iBAAiB,OAAO,WAAW,WACvC,QACA;EACA,MAAM,SAAS,OAAO,OAAO,OAAO,MAAM;EAE1C,OAAO,OACL,OAAO,UAAU,MAAM,KACrB,OAAO,QAAQ,SAAS,uBACxB,OAAO,QAAQ,WAAW,YAC5B,oCACF;CACF,CAAC;CAED,MAAM,WAAW,OAAO,UAAU;CAElC,OAAO,MAAM,SACX;EAAE,GAAG;EAAU,eAAe;GAAE,GAAG,SAAS;GAAe,iBAAiB;EAAE;CAAE,GAChF,MACF;CACA,OAAO,UAAU,QAAQ,CAAC;CAC1B,MAAM,UAAU,OAAO,MAAM,SAAS,OAAO,WAAW,YAAY,GAAG,MAAM;CAC7E,MAAM,SAAS,OAAO,MAAM,OAAO,QAAQ,KAAK,GAAG,EAAE,MAAM,QAAQ,GAAG,MAAM;CAE5E,OAAO,eAAe,MAAM,SAAS,OAAO,QAAQ,GAAG,MAAM,CAAC;CAE9D,MAAM,SAAS;EACb,MAAM;EACN,eAAe,SAAS;EACxB,0BAA0B,SAAS;EACnC,UAAU;CACZ;CAEA,OAAO,eAAe,MAAM,OAAO,SAAS,KAAK,GAAG,QAAQ,MAAM,CAAC;CACnE,OAAO,QACJ,OAAO,MAAM,IAAI,SAAS,GAAG,EAAA,EAAI,0BAA0B,GAC5D,gDACF;CACA,OAAO,MAAM,OAAO,QAAQ,KAAK,OAAO,qBAAqB;CAC7D,MAAM,eAAe,OAAO,MAAM,OAAO,SAAS,KAAK,GAAG,QAAQ,MAAM;CACxE,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,UAAU,GAAG,MAAM;CAE9D,OAAO,eAAe,MAAM,OAAO,MAAM,iBAAiB,GAAG;EAAE,GAAG;EAAQ,WAAW;CAAE,CAAC,CAAC;CACzF,MAAM,WAAW;EAAE,GAAG,SAAS,cAAc,QAAQ;EAAG,mBAAmB;CAAK;CAEhF,OAAO,MAAM,OAAO,UAAU,CAAC,QAAQ,GAAG,aAAa,SAAS,MAAM,IAAI,MAAM;CAChF,MAAM,mBAAmB,OAAO,MAAM,SAAS,OAAO,MAAM,GAAG,MAAM;CACrE,MAAM,YAAY,OAAO,MAAM,OAAO,MAAM,YAAY,GAAG,MAAM;CACjE,MAAM,OAAO,SAAS,kBAAkB,WAAW,GAAG;CAEtD,MAAM,aAAa,MAAM,OACvB,WACA,CAAC,IAAI,GACL,iBAAiB,SACjB,MACA,IACA,MACF;CAEA,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN,OAAO;GAAE,GAAG,SAAS;GAAO,UAAU;GAAG,mBAAmB;GAAG,QAAQ;EAAK;EAC5E,WAAW;CACb,CAAC;CACD,OAAO,eAAe,UAAU;CAChC,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN,UAAU,cAAc,QAAQ;EAChC,gBAAgB,OAAO,GAAG;EAC1B,WAAW;CACb,CAAC;CACD,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN;EACA,WAAW;CACb,CAAC;CACD,OAAO,eAAe,UAAU;CAChC,OAAO,QACJ,OAAO,MAAM,MAAM,UAAU,OAAO,EAAA,EAAI,WAAW,MACjD,OAAO,MAAM,IAAI,iBAAiB,GAAG,EAAA,EAAI,UAAU,UACtD,gEACF;CACA,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;EAC7D,MAAM;EACN;EACA,SAAS;EACT,WAAW;EACX,qBAAqB;CACvB,CAAC;CACD,OAAO;CACP,OAAO,MAAM,eAAe,KAAK,KAAK,KAAK,YAAY;EACrD,MAAM;EACN,UAAU,cAAc,IAAI;EAC5B,gBAAgB,OAAO,GAAG;EAC1B,WAAW;CACb,CAAC;CACD,OAAO,MAAM,eAAe,KAAK,KAAK,KAAK,YAAY;EACrD,MAAM;EACN;EACA,WAAW;CACb,CAAC;CACD,MAAM,UAAU,OAAO,MAAM,SAAS,OAAO,SAAS,GAAG,MAAM;CAC/D,MAAM,eAAe,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG,MAAM;CACjE,MAAM,kBAAkB,SAAS,SAAS,YAAY;CAEtD,OAAO,MAAM,OAAO,cAAc,CAAC,eAAe,GAAG,QAAQ,SAAS,MAAM,IAAI,MAAM;CACtF,OAAO,eACL,MAAM,eACJ,KAAK,KACL,KAAK,YACL;EACE,MAAM;EACN;EACA,SAAS;EACT,WAAW;EACX,qBAAqB;CACvB,GACA,MACF,CACF;CACA,OAAO,QACJ,OAAO,MAAM,SAAS,KAAK,GAAG,EAAA,EAAI,sBAAsB,MACzD,6DACF;AACF,CAAC,CACL;AAyLA,MAAa,oCAAqF;CAChG;CAxL4B,gBAC5B,8EACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EAErB,MAAM,UAAU,OAAO,MAAM,SAC3B;GACE,GAAG,OAAO,oBAAoB;GAC9B,UAAU;IAAE,UAAU;IAAG,qBAAqB;IAAI,aAAa;GAAK;EACtE,GACA,yBACF;EAEA,MAAM,SAAS,OAAO,MAAM,OAAO,QAAQ,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAC;EAEpE,OAAO,MAAM,cAAc,QAAQ,KAAK,GAAG,IAAI;EAC/C,OAAO,QACJ,OAAO,MAAM,IAAI,QAAQ,GAAG,EAAA,EAAI,UAAU,wBAAwB,IACnE,iDACF;EAEA,MAAM,UAAU,OAAO,MAAM,OAAO,QAAQ,KAAK,OAAO,uBAAuB,EAC7E,MAAM,SACR,CAAC;EAED,OAAO,OACL,QAAQ,UAAU,wBAAwB,IAC1C,qCACF;EAEA,MAAM,UAAU,OAAO,MAAM,OAAO,QAAQ,KAAK,QAAQ,uBAAuB;GAC9E,MAAM;GACN,eAAe;IAAE,GAAG,QAAQ;IAAe,QAAQ;KAAE,MAAM;KAAe,SAAS;IAAI;GAAE;GACzF,0BAA0B,OAAO,GAAG;GACpC,UAAU;IAAE,UAAU;IAAG,qBAAqB;IAAI,aAAa;GAAK;EACtE,CAAC;EAED,OAAO,MAAM,cAAc,QAAQ,KAAK,QAAQ,uBAAuB;GACrE,UAAU;GACV,qBAAqB;GACrB,aAAa;EACf,CAAC;EACD,MAAM,WAAW,OAAO,MAAM,IAAI,QAAQ,GAAG;EAE7C,OAAO,OACL,UAAU,UAAU,wBAAwB,MAC1C,SAAS,0BAA0B,QAAQ,uBAC7C,6DACF;EACA,OAAO,OACL,UAAU,wBAAwB,QAAQ,uBACxC,SAAS,sBAAsB,OAAO,SAAS,QAAQ,cAAc,OAAO,MAC9E,oCACF;CACF,CAAC,CAkIH;CA/H2B,gBAC3B,2EACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EAErB,MAAM,eAAe,OAAO,MAAM,SAChC,OAAO,oBAAoB,YAAY,GACvC,yBACF;EAEA,MAAM,WAAW,OAAO,MAAM,OAAO,MAAM,kBAAkB,GAAG,yBAAyB;EACzF,MAAM,WAAW;GAAE,GAAG,SAAS,cAAc,QAAQ;GAAG,mBAAmB;EAAK;EAEhF,OAAO,MAAM,OACX,UACA,CAAC,QAAQ,GACT,aAAa,SACb,MACA,IACA,yBACF;EACA,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC7D,MAAM;GACN,UAAU,cAAc,QAAQ;GAChC,gBAAgB,OAAO,GAAG;GAC1B,WAAW;EACb,CAAC;EAED,MAAM,SAAS,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC5E,MAAM;GACN,WAAW;GACX,OAAO;IACL,GAAG,SAAS;IACZ,UAAU;IACV,mBAAmB;IACnB,QAAQ;IACR,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;EACF,CAAC;EAED,OAAO,QACJ,OAAO,MAAM,kBAAkB,KAAK,IAAI,EAAE,EAAA,CAAG,WAAW,GACzD,0DACF;EACA,OAAO,QACJ,OAAO,MAAM,kBAAkB,MAChC,gDACF;EAEA,MAAM,YAAY,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC/E,MAAM;GACN,oBAAoB,OAAO,MAAM;GACjC,WAAW;EACb,CAAC;EAED,MAAM,QAAQ,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC3E,MAAM;GACN,WAAW;GACX,OAAO;IAAE,GAAG,OAAO;IAAO,UAAU;IAAG,qBAAqB;GAAG;EACjE,CAAC;EAED,OAAO,OACL,CAAC,MAAM,MAAM,UAAU,MAAM,MAAM,eAAe,UAAU,MAAM,YAClE,4BACF;EAEA,MAAM,YAAY,OAAO,MAAM,eAAe,SAAS,KAAK,SAAS,YAAY;GAC/E,MAAM;GACN;GACA,WAAW;EACb,CAAC;EAED,OAAO,OACL,UAAU,SAAS,cAAc,QAAQ,aACvC,UAAU,mBAAmB,OAAO,GAAG,GACzC,6CACF;CACF,CAAC,CAgDH;CA7CwB,gBACxB,gEACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EACrB,MAAM,SAAS;GAAE,qBAAqB;GAAO,0BAA0B;GAAG,eAAe;EAAE;EAC3F,MAAM,SAAS;GAAE,GAAG;GAA2B,WAAW;EAAO;EAEjE,KAAK,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS;GACtC,MAAM,WAAW,OAAO,MAAM,OAC5B;IAAE,GAAG,MAAM,aAAa,OAAO;IAAG,kBAAkB;IAAG,kBAAkB;GAAE,GAC3E,MACF;GAEA,IAAI,UAAU,GAAG,OAAO,MAAM,OAAO,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM;EACvE;EACA,OAAO,UAAU,QAAQ,EAAE;EAC3B,KAAK,IAAI,OAAO,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,QAAQ,IAAI,QAAQ,CAAC;EACvE,OAAO,QACJ,OAAO,MAAM,MAAM,aAAa,EAAA,EAAI,cAAc,MACnD,mDACF;EACA,OAAO,QACJ,OAAO,MAAM,MAAM,aAAa,EAAA,EAAI,cAAc,MACnD,gCACF;EACA,OAAO,UAAU,QAAQ,IAAK;EAC9B,KAAK,IAAI,OAAO,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,QAAQ,MAAO,QAAQ,CAAC;EAC1E,OAAO,QACJ,OAAO,MAAM,MAAM,aAAa,OAAO,MACxC,2CACF;EAEA,MAAM,WAAW,OAAO,MACrB,OAAO;GAAE,GAAG,MAAM,aAAa;GAAG,kBAAkB;EAAE,GAAG,MAAM,CAAC,CAChE,KAAK,OAAO,MAAM;EAGrB,OAAO,OAAO,OAAO,UAAU,QAAQ,GAAG,qCAAqC;CACjF,CAAC,CAOH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -2,9 +2,9 @@ import { t as AgentId, u as ThreadId } from "../Identifiers-CN2s30fF.mjs";
2
2
  import { r as Principal } from "../Receipt-BkM21Qiu.mjs";
3
3
  import { t as DurableStep } from "../DurableStep-DXGn7KQ4.mjs";
4
4
  import { b as DefinitionDigests } from "../Records-BTnGRdcf.mjs";
5
- import "../Admin-BX9ns28E.mjs";
5
+ import "../Admin-Qa3I1oA5.mjs";
6
6
  import { c as ScheduleDestination } from "../Schedule-CDgTz0vj.mjs";
7
- import { E as SubscriptionSourceError, g as SubscriptionFailpointError, i as EventSourceVersion, m as SubscriptionError, w as SubscriptionScope } from "../Subscription-DONig54Q.mjs";
7
+ import { E as SubscriptionSourceError, g as SubscriptionFailpointError, i as EventSourceVersion, m as SubscriptionError, w as SubscriptionScope } from "../Subscription-DmIHlOJK.mjs";
8
8
  import { Subscriptions } from "./Subscriptions.mjs";
9
9
  import { Crypto, Layer, Schema } from "effect";
10
10
  import { Tool, Toolkit } from "effect/ai";
@@ -1,4 +1,4 @@
1
- import { b as SubscriptionRecord, d as SubscriptionDelivery, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, t as AcceptedEvent, v as SubscriptionLimits } from "../Subscription-DONig54Q.mjs";
1
+ import { b as SubscriptionRecord, d as SubscriptionDelivery, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, t as AcceptedEvent, v as SubscriptionLimits } from "../Subscription-DmIHlOJK.mjs";
2
2
  import { Result } from "effect";
3
3
  declare namespace SubscriptionTransition_d_exports {
4
4
  export { applySubscriptionChange, applySubscriptionDeliveryChange, sameAcceptedEventIdentity, sameSourcePartition, sameSubscriptionDelivery, subscriptionCanSelect, subscriptionDeliveryCanSelect, subscriptionDeliveryUsesCapacity, subscriptionMatchesEvent, subscriptionUsesCapacity, validateEventRetention };
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
2
  import { Receipt } from "../core/Receipt.mjs";
3
- import { v as DefinitionDigests } from "../Records-BiuJDWNe.mjs";
3
+ import { v as DefinitionDigests } from "../Records-DzL4Kbtw.mjs";
4
4
  import { AdmissionFence } from "./SubmissionLedger.mjs";
5
5
  import { SubscriptionConfiguration, SubscriptionDelivery, SubscriptionError } from "./Subscription.mjs";
6
6
  import { Result, Schema } from "effect";
@@ -1,10 +1,10 @@
1
1
  import { r as Principal } from "../Receipt-BkM21Qiu.mjs";
2
2
  import { K as PersistedJson } from "../Records-BTnGRdcf.mjs";
3
- import { pt as AdmissionFence } from "../Admin-BX9ns28E.mjs";
4
- import { D as SubscriptionStore, E as SubscriptionSourceError, O as SubscriptionStoreFailure, T as SubscriptionSnapshot, _ as SubscriptionKey, c as SubscriptionAuthorizer, f as SubscriptionDeliveryKey, i as EventSourceVersion, m as SubscriptionError, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope } from "../Subscription-DONig54Q.mjs";
5
- import { r as EventSources } from "../EventSource-BwliwQz9.mjs";
6
- import { t as PreparedInputAdmission } from "../PreparedInputAdmission-CxSJSiTl.mjs";
7
- import { n as SubscriptionInputBindings } from "../SubscriptionInput-mJIRxWJM.mjs";
3
+ import { pt as AdmissionFence } from "../Admin-Qa3I1oA5.mjs";
4
+ import { D as SubscriptionStore, E as SubscriptionSourceError, O as SubscriptionStoreFailure, T as SubscriptionSnapshot, _ as SubscriptionKey, c as SubscriptionAuthorizer, f as SubscriptionDeliveryKey, i as EventSourceVersion, m as SubscriptionError, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope } from "../Subscription-DmIHlOJK.mjs";
5
+ import { r as EventSources } from "../EventSource-BTu68yDW.mjs";
6
+ import { t as PreparedInputAdmission } from "../PreparedInputAdmission-wgY4JMZY.mjs";
7
+ import { n as SubscriptionInputBindings } from "../SubscriptionInput-DgcQhvbe.mjs";
8
8
  import { Context, Crypto, Effect, Layer } from "effect";
9
9
  declare namespace Subscriptions_d_exports {
10
10
  export { SubscribeOptions, SubscriptionDriver, SubscriptionFailure, SubscriptionIntake, Subscriptions };
@@ -2,8 +2,8 @@ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
2
  import { ThreadId } from "../core/Identifiers.mjs";
3
3
  import { n as utf8ByteLength } from "../utf8-B5pAmhTo.mjs";
4
4
  import { IdempotencyKey } from "../core/Receipt.mjs";
5
- import { v as DefinitionDigests } from "../Records-BiuJDWNe.mjs";
6
- import { s as digestJson } from "../Digest-DCuPlhNk.mjs";
5
+ import { v as DefinitionDigests } from "../Records-DzL4Kbtw.mjs";
6
+ import { s as digestJson } from "../Digest-C3EODOee.mjs";
7
7
  import { PreparedInputAdmission, admitPreparedInput } from "./PreparedInputAdmission.mjs";
8
8
  import { AcceptedEvent, PreparedInput, SubscriptionAuthorizer, SubscriptionConfiguration, SubscriptionDelivery, SubscriptionError, SubscriptionFailpoint, SubscriptionKey, SubscriptionLimits, SubscriptionScope, SubscriptionSourceError, SubscriptionStore, defaultSubscriptionLimits, subscriptionDeliveryKeyString } from "./Subscription.mjs";
9
9
  import { EventSources } from "./EventSource.mjs";
@@ -279,7 +279,7 @@ const makeManagement = Effect.fnUntraced(function* (requested) {
279
279
  });
280
280
  return Subscriptions.of({
281
281
  getSubscription,
282
- recoverSubscription: (scopeValue, key, expectedRevision) => Effect.gen(function* () {
282
+ recoverSubscription: Effect.fnUntraced(function* (scopeValue, key, expectedRevision) {
283
283
  const owner = yield* scope(scopeValue);
284
284
  yield* authorizer.manage("recover", owner);
285
285
  return snapshot(yield* store.change(yield* ownedKey(owner, key), expectedRevision, {