effect-agent 0.0.1-beta.6 → 0.1.0-beta.100

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 (540) hide show
  1. package/dist/Agent-CG_VMrtA.mjs +83 -0
  2. package/dist/Agent-CG_VMrtA.mjs.map +1 -0
  3. package/dist/Agent-CM6JubNX.d.mts +226 -0
  4. package/dist/AgentError-CggcAQ7V.d.mts +101 -0
  5. package/dist/AgentPolicy-BqDoSXO6.d.mts +96 -0
  6. package/dist/AgentRuntime-B1SXMVN7.d.mts +346 -0
  7. package/dist/AgentRuntime-BWOnNc0d.mjs +4690 -0
  8. package/dist/AgentRuntime-BWOnNc0d.mjs.map +1 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-WwSIG_Z2.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-BE_OjQjz.mjs +6607 -0
  13. package/dist/DurableAgentRuntime-BE_OjQjz.mjs.map +1 -0
  14. package/dist/DurableFailpoint-mx3-nsxU.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/EventSource-EKNxvkLe.d.mts +51 -0
  17. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  18. package/dist/InMemory.d.mts +24 -0
  19. package/dist/InMemory.mjs +24 -0
  20. package/dist/InMemory.mjs.map +1 -0
  21. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  22. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  23. package/dist/Messaging-QMYhp297.d.mts +490 -0
  24. package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
  25. package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
  26. package/dist/MessagingHost-gAxs5gme.d.mts +246 -0
  27. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  28. package/dist/Output-CjocJzsl.d.mts +25 -0
  29. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  30. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  31. package/dist/PreparedInputAdmission-D0yepgfa.d.mts +38 -0
  32. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  33. package/dist/Records-DR1xtbXY.mjs +842 -0
  34. package/dist/Records-DR1xtbXY.mjs.map +1 -0
  35. package/dist/Records-Uh_ktvNK.d.mts +3638 -0
  36. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  37. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  38. package/dist/RunJournal-DNs3PM4K.mjs +888 -0
  39. package/dist/RunJournal-DNs3PM4K.mjs.map +1 -0
  40. package/dist/RunOptions-Bruk54SE.d.mts +930 -0
  41. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  42. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  43. package/dist/Schedule-CVNtnIpG.d.mts +842 -0
  44. package/dist/Scheduling-HFH0pST1.mjs +691 -0
  45. package/dist/Scheduling-HFH0pST1.mjs.map +1 -0
  46. package/dist/Subagent-C2s8PFrd.mjs +1469 -0
  47. package/dist/Subagent-C2s8PFrd.mjs.map +1 -0
  48. package/dist/Subagent-DP0CzO16.d.mts +826 -0
  49. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  50. package/dist/SubagentHost-CYcxkpRc.d.mts +140 -0
  51. package/dist/Subscription-D94jLq3n.d.mts +921 -0
  52. package/dist/SubscriptionInput-CfefvQng.d.mts +41 -0
  53. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  54. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  55. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  56. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  57. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  58. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  59. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  60. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  61. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  62. package/dist/ToolExposure.d.mts +8 -0
  63. package/dist/ToolExposure.mjs +21 -0
  64. package/dist/ToolExposure.mjs.map +1 -0
  65. package/dist/ToolReconciler-BmVRAHKs.d.mts +80 -0
  66. package/dist/ToolResult-BKdqWRff.d.mts +78 -0
  67. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  68. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  69. package/dist/Worker--j87JI__.d.mts +228 -0
  70. package/dist/agent-registration-cXpB8cBU.mjs +199 -0
  71. package/dist/agent-registration-cXpB8cBU.mjs.map +1 -0
  72. package/dist/capabilities/Approval.d.mts +114 -0
  73. package/dist/capabilities/Approval.mjs +226 -0
  74. package/dist/capabilities/Approval.mjs.map +1 -0
  75. package/dist/capabilities/Budget.d.mts +112 -0
  76. package/dist/capabilities/Budget.mjs +346 -0
  77. package/dist/capabilities/Budget.mjs.map +1 -0
  78. package/dist/capabilities/CodeMode.d.mts +157 -0
  79. package/dist/capabilities/CodeMode.mjs +522 -0
  80. package/dist/capabilities/CodeMode.mjs.map +1 -0
  81. package/dist/capabilities/Commands.d.mts +55 -0
  82. package/dist/capabilities/Commands.mjs +57 -0
  83. package/dist/capabilities/Commands.mjs.map +1 -0
  84. package/dist/capabilities/ContextTools.d.mts +321 -0
  85. package/dist/capabilities/ContextTools.mjs +126 -0
  86. package/dist/capabilities/ContextTools.mjs.map +1 -0
  87. package/dist/capabilities/Mcp.d.mts +108 -0
  88. package/dist/capabilities/Mcp.mjs +260 -0
  89. package/dist/capabilities/Mcp.mjs.map +1 -0
  90. package/dist/capabilities/McpClient.d.mts +115 -0
  91. package/dist/capabilities/McpClient.mjs +506 -0
  92. package/dist/capabilities/McpClient.mjs.map +1 -0
  93. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  94. package/dist/capabilities/MemoryNotes.mjs +128 -0
  95. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  96. package/dist/capabilities/Messaging.d.mts +3 -0
  97. package/dist/capabilities/Messaging.mjs +151 -0
  98. package/dist/capabilities/Messaging.mjs.map +1 -0
  99. package/dist/capabilities/ModelContext.d.mts +89 -0
  100. package/dist/capabilities/ModelContext.mjs +168 -0
  101. package/dist/capabilities/ModelContext.mjs.map +1 -0
  102. package/dist/capabilities/Redaction.d.mts +37 -0
  103. package/dist/capabilities/Redaction.mjs +104 -0
  104. package/dist/capabilities/Redaction.mjs.map +1 -0
  105. package/dist/capabilities/Remembering.d.mts +434 -0
  106. package/dist/capabilities/Remembering.mjs +290 -0
  107. package/dist/capabilities/Remembering.mjs.map +1 -0
  108. package/dist/capabilities/RunHooks.d.mts +82 -0
  109. package/dist/capabilities/RunHooks.mjs +144 -0
  110. package/dist/capabilities/RunHooks.mjs.map +1 -0
  111. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  112. package/dist/capabilities/SemanticMemory.mjs +315 -0
  113. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  114. package/dist/capabilities/Subagent.d.mts +4 -0
  115. package/dist/capabilities/Subagent.mjs +5 -0
  116. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  117. package/dist/capabilities/SubagentReservations.mjs +479 -0
  118. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  119. package/dist/capabilities/ToolDiscovery.d.mts +124 -0
  120. package/dist/capabilities/ToolDiscovery.mjs +230 -0
  121. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  122. package/dist/capabilities/WebCapture.d.mts +163 -0
  123. package/dist/capabilities/WebCapture.mjs +335 -0
  124. package/dist/capabilities/WebCapture.mjs.map +1 -0
  125. package/dist/capabilities/WebSearch.d.mts +71 -0
  126. package/dist/capabilities/WebSearch.mjs +115 -0
  127. package/dist/capabilities/WebSearch.mjs.map +1 -0
  128. package/dist/compaction-C2OTceKw.mjs +505 -0
  129. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  130. package/dist/core/Agent.d.mts +2 -0
  131. package/dist/core/Agent.mjs +2 -0
  132. package/dist/core/AgentError.d.mts +2 -0
  133. package/dist/core/AgentError.mjs +117 -0
  134. package/dist/core/AgentError.mjs.map +1 -0
  135. package/dist/core/AgentPolicy.d.mts +2 -0
  136. package/dist/core/AgentPolicy.mjs +94 -0
  137. package/dist/core/AgentPolicy.mjs.map +1 -0
  138. package/dist/core/AgentUpdates.d.mts +2 -0
  139. package/dist/core/AgentUpdates.mjs +63 -0
  140. package/dist/core/AgentUpdates.mjs.map +1 -0
  141. package/dist/core/IdGenerator.d.mts +26 -0
  142. package/dist/core/IdGenerator.mjs +27 -0
  143. package/dist/core/IdGenerator.mjs.map +1 -0
  144. package/dist/core/Identifiers.d.mts +2 -0
  145. package/dist/core/Identifiers.mjs +43 -0
  146. package/dist/core/Identifiers.mjs.map +1 -0
  147. package/dist/core/Memory.d.mts +57 -0
  148. package/dist/core/Memory.mjs +203 -0
  149. package/dist/core/Memory.mjs.map +1 -0
  150. package/dist/core/MemoryNamespace.d.mts +2 -0
  151. package/dist/core/MemoryNamespace.mjs +116 -0
  152. package/dist/core/MemoryNamespace.mjs.map +1 -0
  153. package/dist/core/MemoryReference.d.mts +2 -0
  154. package/dist/core/MemoryReference.mjs +109 -0
  155. package/dist/core/MemoryReference.mjs.map +1 -0
  156. package/dist/core/MemoryRevalidation.d.mts +65 -0
  157. package/dist/core/MemoryRevalidation.mjs +126 -0
  158. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  159. package/dist/core/MemoryStore.d.mts +186 -0
  160. package/dist/core/MemoryStore.mjs +243 -0
  161. package/dist/core/MemoryStore.mjs.map +1 -0
  162. package/dist/core/Receipt.d.mts +2 -0
  163. package/dist/core/Receipt.mjs +36 -0
  164. package/dist/core/Receipt.mjs.map +1 -0
  165. package/dist/core/RememberingStore.d.mts +1562 -0
  166. package/dist/core/RememberingStore.mjs +190 -0
  167. package/dist/core/RememberingStore.mjs.map +1 -0
  168. package/dist/core/RunEvent.d.mts +2 -0
  169. package/dist/core/RunEvent.mjs +337 -0
  170. package/dist/core/RunEvent.mjs.map +1 -0
  171. package/dist/core/RunPolicyUsage.d.mts +2 -0
  172. package/dist/core/RunPolicyUsage.mjs +21 -0
  173. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  174. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  175. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  176. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  177. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  178. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  179. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  180. package/dist/core/SubagentContract.d.mts +2 -0
  181. package/dist/core/SubagentContract.mjs +148 -0
  182. package/dist/core/SubagentContract.mjs.map +1 -0
  183. package/dist/core/Thread.d.mts +2 -0
  184. package/dist/core/Thread.mjs +250 -0
  185. package/dist/core/Thread.mjs.map +1 -0
  186. package/dist/core/ToolResult.d.mts +2 -0
  187. package/dist/core/ToolResult.mjs +156 -0
  188. package/dist/core/ToolResult.mjs.map +1 -0
  189. package/dist/core/Usage.d.mts +2 -0
  190. package/dist/core/Usage.mjs +319 -0
  191. package/dist/core/Usage.mjs.map +1 -0
  192. package/dist/core/Worker.d.mts +3 -0
  193. package/dist/core/Worker.mjs +147 -0
  194. package/dist/core/Worker.mjs.map +1 -0
  195. package/dist/durable/ActivityStore.d.mts +116 -0
  196. package/dist/durable/ActivityStore.mjs +131 -0
  197. package/dist/durable/ActivityStore.mjs.map +1 -0
  198. package/dist/durable/Admin.d.mts +2 -0
  199. package/dist/durable/Admin.mjs +330 -0
  200. package/dist/durable/Admin.mjs.map +1 -0
  201. package/dist/durable/AgentRegistration.d.mts +2 -0
  202. package/dist/durable/AgentRegistration.mjs +14 -0
  203. package/dist/durable/AgentRegistration.mjs.map +1 -0
  204. package/dist/durable/Certification.d.mts +110 -0
  205. package/dist/durable/Certification.mjs +159 -0
  206. package/dist/durable/Certification.mjs.map +1 -0
  207. package/dist/durable/CommittedActivity.d.mts +62 -0
  208. package/dist/durable/CommittedActivity.mjs +159 -0
  209. package/dist/durable/CommittedActivity.mjs.map +1 -0
  210. package/dist/durable/Digest.d.mts +2 -0
  211. package/dist/durable/Digest.mjs +50 -0
  212. package/dist/durable/Digest.mjs.map +1 -0
  213. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  214. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  215. package/dist/durable/DurableFailpoint.d.mts +2 -0
  216. package/dist/durable/DurableFailpoint.mjs +98 -0
  217. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  218. package/dist/durable/DurableFailpointTestControl.d.mts +14 -0
  219. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  220. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  221. package/dist/durable/EventSource.d.mts +2 -0
  222. package/dist/durable/EventSource.mjs +65 -0
  223. package/dist/durable/EventSource.mjs.map +1 -0
  224. package/dist/durable/GitHubWorkflowSource.d.mts +185 -0
  225. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  226. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  227. package/dist/durable/MessageDelivery.d.mts +492 -0
  228. package/dist/durable/MessageDelivery.mjs +495 -0
  229. package/dist/durable/MessageDelivery.mjs.map +1 -0
  230. package/dist/durable/MessageDeliveryStoreConformance.d.mts +357 -0
  231. package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
  232. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  233. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  234. package/dist/durable/OperationAuthorizer.mjs +70 -0
  235. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  236. package/dist/durable/PersistentHistory.d.mts +16 -0
  237. package/dist/durable/PersistentHistory.mjs +125 -0
  238. package/dist/durable/PersistentHistory.mjs.map +1 -0
  239. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  240. package/dist/durable/PreparedInputAdmission.mjs +34 -0
  241. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  242. package/dist/durable/Records.d.mts +2 -0
  243. package/dist/durable/Records.mjs +2 -0
  244. package/dist/durable/Recovery.d.mts +2 -0
  245. package/dist/durable/Recovery.mjs +739 -0
  246. package/dist/durable/Recovery.mjs.map +1 -0
  247. package/dist/durable/RunJournal.d.mts +2 -0
  248. package/dist/durable/RunJournal.mjs +2 -0
  249. package/dist/durable/Schedule.d.mts +2 -0
  250. package/dist/durable/Schedule.mjs +382 -0
  251. package/dist/durable/Schedule.mjs.map +1 -0
  252. package/dist/durable/ScheduleStoreConformance.d.mts +17 -0
  253. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  254. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  255. package/dist/durable/ScheduleTransition.d.mts +24 -0
  256. package/dist/durable/ScheduleTransition.mjs +180 -0
  257. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  258. package/dist/durable/Scheduling.d.mts +54 -0
  259. package/dist/durable/Scheduling.mjs +2 -0
  260. package/dist/durable/SqlMemoryStore.d.mts +29 -0
  261. package/dist/durable/SqlMemoryStore.mjs +436 -0
  262. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  263. package/dist/durable/SqlMessageDeliveryStore.d.mts +39 -0
  264. package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
  265. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  266. package/dist/durable/SqlStorageV2Upgrade.d.mts +21 -0
  267. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  268. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  269. package/dist/durable/SqlSubscriptionStore.d.mts +62 -0
  270. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  271. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  272. package/dist/durable/SubmissionLedger.d.mts +3 -0
  273. package/dist/durable/SubmissionLedger.mjs +915 -0
  274. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  275. package/dist/durable/SubmissionLedgerConformance.d.mts +29 -0
  276. package/dist/durable/SubmissionLedgerConformance.mjs +1993 -0
  277. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  278. package/dist/durable/SubmissionStatus.d.mts +2 -0
  279. package/dist/durable/SubmissionStatus.mjs +18 -0
  280. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  281. package/dist/durable/Subscription.d.mts +2 -0
  282. package/dist/durable/Subscription.mjs +360 -0
  283. package/dist/durable/Subscription.mjs.map +1 -0
  284. package/dist/durable/SubscriptionInput.d.mts +2 -0
  285. package/dist/durable/SubscriptionInput.mjs +52 -0
  286. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  287. package/dist/durable/SubscriptionStoreConformance.d.mts +16 -0
  288. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  289. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  290. package/dist/durable/SubscriptionTools.d.mts +273 -0
  291. package/dist/durable/SubscriptionTools.mjs +190 -0
  292. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  293. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  294. package/dist/durable/SubscriptionTransition.mjs +148 -0
  295. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  296. package/dist/durable/Subscriptions.d.mts +73 -0
  297. package/dist/durable/Subscriptions.mjs +627 -0
  298. package/dist/durable/Subscriptions.mjs.map +1 -0
  299. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  300. package/dist/durable/ThreadContextHistory.mjs +152 -0
  301. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  302. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  303. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  304. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  305. package/dist/durable/ThreadInvariants.d.mts +76 -0
  306. package/dist/durable/ThreadInvariants.mjs +246 -0
  307. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  308. package/dist/durable/ThreadProjection.d.mts +78 -0
  309. package/dist/durable/ThreadProjection.mjs +158 -0
  310. package/dist/durable/ThreadProjection.mjs.map +1 -0
  311. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  312. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  313. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  314. package/dist/durable/ThreadStore.d.mts +2 -0
  315. package/dist/durable/ThreadStore.mjs +147 -0
  316. package/dist/durable/ThreadStore.mjs.map +1 -0
  317. package/dist/durable/ThreadStoreConformance.d.mts +28 -0
  318. package/dist/durable/ThreadStoreConformance.mjs +248 -0
  319. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  320. package/dist/durable/ToolReconciler.d.mts +2 -0
  321. package/dist/durable/ToolReconciler.mjs +85 -0
  322. package/dist/durable/ToolReconciler.mjs.map +1 -0
  323. package/dist/durable/WakeScheduler.d.mts +2 -0
  324. package/dist/durable/WakeScheduler.mjs +85 -0
  325. package/dist/durable/WakeScheduler.mjs.map +1 -0
  326. package/dist/durable/WorkerHost.d.mts +129 -0
  327. package/dist/durable/WorkerHost.mjs +77 -0
  328. package/dist/durable/WorkerHost.mjs.map +1 -0
  329. package/dist/engine/AgentRuntime.d.mts +2 -0
  330. package/dist/engine/AgentRuntime.mjs +2 -0
  331. package/dist/engine/Compaction.d.mts +7 -0
  332. package/dist/engine/Compaction.mjs +16 -0
  333. package/dist/engine/Compaction.mjs.map +1 -0
  334. package/dist/engine/ContextCompactor.d.mts +2 -0
  335. package/dist/engine/ContextCompactor.mjs +119 -0
  336. package/dist/engine/ContextCompactor.mjs.map +1 -0
  337. package/dist/engine/ContextHistory.d.mts +65 -0
  338. package/dist/engine/ContextHistory.mjs +76 -0
  339. package/dist/engine/ContextHistory.mjs.map +1 -0
  340. package/dist/engine/ContextWindow.d.mts +2 -0
  341. package/dist/engine/ContextWindow.mjs +59 -0
  342. package/dist/engine/ContextWindow.mjs.map +1 -0
  343. package/dist/engine/DurableStep.d.mts +2 -0
  344. package/dist/engine/DurableStep.mjs +62 -0
  345. package/dist/engine/DurableStep.mjs.map +1 -0
  346. package/dist/engine/MessagingHost.d.mts +2 -0
  347. package/dist/engine/MessagingHost.mjs +2 -0
  348. package/dist/engine/Output.d.mts +2 -0
  349. package/dist/engine/Output.mjs +8 -0
  350. package/dist/engine/Output.mjs.map +1 -0
  351. package/dist/engine/RunEventSink.d.mts +2 -0
  352. package/dist/engine/RunEventSink.mjs +22 -0
  353. package/dist/engine/RunEventSink.mjs.map +1 -0
  354. package/dist/engine/RunOptions.d.mts +2 -0
  355. package/dist/engine/RunOptions.mjs +122 -0
  356. package/dist/engine/RunOptions.mjs.map +1 -0
  357. package/dist/engine/SubagentHost.d.mts +2 -0
  358. package/dist/engine/SubagentHost.mjs +72 -0
  359. package/dist/engine/SubagentHost.mjs.map +1 -0
  360. package/dist/engine/ThreadHistory.d.mts +2 -0
  361. package/dist/engine/ThreadHistory.mjs +67 -0
  362. package/dist/engine/ThreadHistory.mjs.map +1 -0
  363. package/dist/engine/ToolBroker.d.mts +2 -0
  364. package/dist/engine/ToolBroker.mjs +42 -0
  365. package/dist/engine/ToolBroker.mjs.map +1 -0
  366. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  367. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  368. package/dist/index.d.mts +89 -6
  369. package/dist/index.mjs +98 -6
  370. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  371. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  372. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  373. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  374. package/dist/sandbox/CodeExecutor.mjs +278 -0
  375. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  376. package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
  377. package/dist/sandbox/InteractiveBrowser.mjs +165 -0
  378. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  379. package/dist/sandbox/PageCapture.d.mts +2 -0
  380. package/dist/sandbox/PageCapture.mjs +450 -0
  381. package/dist/sandbox/PageCapture.mjs.map +1 -0
  382. package/dist/sandbox/PageCrawl.d.mts +88 -0
  383. package/dist/sandbox/PageCrawl.mjs +124 -0
  384. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  385. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  386. package/dist/sandbox/PageScreenshot.mjs +53 -0
  387. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  388. package/dist/sandbox/ProtectedBrowser.d.mts +273 -0
  389. package/dist/sandbox/ProtectedBrowser.mjs +287 -0
  390. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  391. package/dist/sandbox/Sandbox.d.mts +2 -0
  392. package/dist/sandbox/Sandbox.mjs +208 -0
  393. package/dist/sandbox/Sandbox.mjs.map +1 -0
  394. package/dist/utf8-BYfhEkcj.mjs +11 -0
  395. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  396. package/dist/utf8-DchGZRBd.mjs +23 -0
  397. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  398. package/package.json +1 -40
  399. package/src/InMemory.ts +19 -0
  400. package/src/ToolExposure.ts +2 -0
  401. package/src/capabilities/Approval.ts +352 -0
  402. package/src/capabilities/Budget.ts +536 -0
  403. package/src/capabilities/CodeMode.ts +1090 -0
  404. package/src/capabilities/Commands.ts +86 -0
  405. package/src/capabilities/ContextTools.ts +184 -0
  406. package/src/capabilities/Mcp.ts +427 -0
  407. package/src/capabilities/McpClient.ts +967 -0
  408. package/src/capabilities/MemoryNotes.ts +174 -0
  409. package/src/capabilities/Messaging.ts +261 -0
  410. package/src/capabilities/ModelContext.ts +354 -0
  411. package/src/capabilities/Redaction.ts +157 -0
  412. package/src/capabilities/Remembering.ts +550 -0
  413. package/src/capabilities/RunHooks.ts +280 -0
  414. package/src/capabilities/SemanticMemory.ts +447 -0
  415. package/src/capabilities/Subagent.ts +2277 -0
  416. package/src/capabilities/SubagentReservations.ts +850 -0
  417. package/src/capabilities/ToolDiscovery.ts +369 -0
  418. package/src/capabilities/WebCapture.ts +722 -0
  419. package/src/capabilities/WebSearch.ts +190 -0
  420. package/src/capabilities/internal/subagent-background.ts +1106 -0
  421. package/src/capabilities/internal/subagent-contract.ts +142 -0
  422. package/src/capabilities/internal/subagent-policy.ts +235 -0
  423. package/src/capabilities/internal/subagent-reporting.ts +261 -0
  424. package/src/capabilities/internal/utf8.ts +10 -0
  425. package/src/core/Agent.ts +575 -0
  426. package/src/core/AgentError.ts +152 -0
  427. package/src/core/AgentPolicy.ts +153 -0
  428. package/src/core/AgentUpdates.ts +100 -0
  429. package/src/core/IdGenerator.ts +39 -0
  430. package/src/core/Identifiers.ts +48 -0
  431. package/src/core/Memory.ts +290 -0
  432. package/src/core/MemoryNamespace.ts +196 -0
  433. package/src/core/MemoryReference.ts +121 -0
  434. package/src/core/MemoryRevalidation.ts +185 -0
  435. package/src/core/MemoryStore.ts +368 -0
  436. package/src/core/Messaging.ts +90 -0
  437. package/src/core/Receipt.ts +42 -0
  438. package/src/core/RememberingStore.ts +300 -0
  439. package/src/core/RunEvent.ts +366 -0
  440. package/src/core/RunPolicyUsage.ts +17 -0
  441. package/src/core/SemanticMemoryIndex.ts +250 -0
  442. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  443. package/src/core/SubagentContract.ts +196 -0
  444. package/src/core/Thread.ts +371 -0
  445. package/src/core/ToolExposure.ts +74 -0
  446. package/src/core/ToolResult.ts +190 -0
  447. package/src/core/Usage.ts +529 -0
  448. package/src/core/Worker.ts +173 -0
  449. package/src/core/internal/agent-updates.ts +32 -0
  450. package/src/core/internal/strict-schema.ts +14 -0
  451. package/src/core/internal/utf8.ts +23 -0
  452. package/src/durable/ActivityStore.ts +160 -0
  453. package/src/durable/Admin.ts +505 -0
  454. package/src/durable/AgentRegistration.ts +14 -0
  455. package/src/durable/Certification.ts +210 -0
  456. package/src/durable/CommittedActivity.ts +296 -0
  457. package/src/durable/Digest.ts +93 -0
  458. package/src/durable/DurableAgentRuntime.ts +10901 -0
  459. package/src/durable/DurableFailpoint.ts +107 -0
  460. package/src/durable/DurableFailpointTestControl.ts +39 -0
  461. package/src/durable/EventSource.ts +172 -0
  462. package/src/durable/GitHubWorkflowSource.ts +447 -0
  463. package/src/durable/MessageDelivery.ts +708 -0
  464. package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
  465. package/src/durable/OperationAuthorizer.ts +85 -0
  466. package/src/durable/PersistentHistory.ts +260 -0
  467. package/src/durable/PreparedInputAdmission.ts +44 -0
  468. package/src/durable/Records.ts +1059 -0
  469. package/src/durable/Recovery.ts +1018 -0
  470. package/src/durable/RunJournal.ts +1567 -0
  471. package/src/durable/Schedule.ts +504 -0
  472. package/src/durable/ScheduleStoreConformance.ts +638 -0
  473. package/src/durable/ScheduleTransition.ts +265 -0
  474. package/src/durable/Scheduling.ts +1077 -0
  475. package/src/durable/SqlMemoryStore.ts +778 -0
  476. package/src/durable/SqlMessageDeliveryStore.ts +302 -0
  477. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  478. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  479. package/src/durable/SubmissionLedger.ts +1202 -0
  480. package/src/durable/SubmissionLedgerConformance.ts +4590 -0
  481. package/src/durable/SubmissionStatus.ts +14 -0
  482. package/src/durable/Subscription.ts +544 -0
  483. package/src/durable/SubscriptionInput.ts +144 -0
  484. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  485. package/src/durable/SubscriptionTools.ts +327 -0
  486. package/src/durable/SubscriptionTransition.ts +302 -0
  487. package/src/durable/Subscriptions.ts +1210 -0
  488. package/src/durable/ThreadContextHistory.ts +227 -0
  489. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  490. package/src/durable/ThreadInvariants.ts +507 -0
  491. package/src/durable/ThreadProjection.ts +269 -0
  492. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  493. package/src/durable/ThreadStore.ts +242 -0
  494. package/src/durable/ThreadStoreConformance.ts +710 -0
  495. package/src/durable/ToolReconciler.ts +109 -0
  496. package/src/durable/WakeScheduler.ts +134 -0
  497. package/src/durable/WorkerHost.ts +171 -0
  498. package/src/durable/internal/agent-registration.ts +589 -0
  499. package/src/durable/internal/agent-updates.ts +302 -0
  500. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  501. package/src/durable/internal/journal-checkpoint.ts +104 -0
  502. package/src/durable/internal/journal-metadata.ts +107 -0
  503. package/src/durable/internal/messaging-host.ts +603 -0
  504. package/src/durable/internal/schedule-time.ts +303 -0
  505. package/src/durable/internal/storage-v2-layout.ts +163 -0
  506. package/src/durable/internal/storage-v2.ts +73 -0
  507. package/src/durable/internal/worker-host.ts +2431 -0
  508. package/src/durable/internal/worker-runtime.ts +9 -0
  509. package/src/engine/AgentRuntime.ts +37 -0
  510. package/src/engine/Compaction.ts +11 -0
  511. package/src/engine/ContextCompactor.ts +277 -0
  512. package/src/engine/ContextHistory.ts +73 -0
  513. package/src/engine/ContextWindow.ts +72 -0
  514. package/src/engine/DurableStep.ts +132 -0
  515. package/src/engine/MessagingHost.ts +110 -0
  516. package/src/engine/Output.ts +2 -0
  517. package/src/engine/RunEventSink.ts +132 -0
  518. package/src/engine/RunOptions.ts +1093 -0
  519. package/src/engine/SubagentHost.ts +181 -0
  520. package/src/engine/ThreadHistory.ts +120 -0
  521. package/src/engine/ToolBroker.ts +157 -0
  522. package/src/engine/ToolExposure.ts +48 -0
  523. package/src/engine/internal/agent-runtime.ts +10402 -0
  524. package/src/engine/internal/bounded-value.ts +315 -0
  525. package/src/engine/internal/compaction.ts +678 -0
  526. package/src/engine/internal/error-diagnostic.ts +39 -0
  527. package/src/engine/internal/output-contract.ts +173 -0
  528. package/src/engine/internal/primitive-delta.ts +80 -0
  529. package/src/engine/internal/provider-result-staging.ts +211 -0
  530. package/src/engine/internal/tool-derivative.ts +106 -0
  531. package/src/engine/internal/tool-exposure.ts +224 -0
  532. package/src/engine/internal/tool-telemetry.ts +484 -0
  533. package/src/index.ts +97 -22
  534. package/src/sandbox/CodeExecutor.ts +352 -0
  535. package/src/sandbox/InteractiveBrowser.ts +257 -0
  536. package/src/sandbox/PageCapture.ts +691 -0
  537. package/src/sandbox/PageCrawl.ts +148 -0
  538. package/src/sandbox/PageScreenshot.ts +81 -0
  539. package/src/sandbox/ProtectedBrowser.ts +436 -0
  540. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,420 @@
1
+ import { AgentId, ReceiptId, SubmissionId, ThreadId } from "../core/Identifiers.mjs";
2
+ import { IdempotencyKey, Principal, QueueSequence, Receipt } from "../core/Receipt.mjs";
3
+ import { h as Digest, p as DefinitionDigests } from "../Records-DR1xtbXY.mjs";
4
+ import { ScheduleCapacityError, ScheduleId, ScheduleStore } from "./Schedule.mjs";
5
+ import { Effect, Result, Schema } from "effect";
6
+ //#region src/durable/ScheduleStoreConformance.ts
7
+ var ScheduleStoreConformanceViolation = class extends Schema.TaggedError()("ScheduleStoreConformanceViolation", {
8
+ caseName: Schema.String,
9
+ message: Schema.String
10
+ }) {};
11
+ const id = Schema.decodeSync(ScheduleId);
12
+ const principal = Schema.decodeSync(Principal)("schedule-conformance-principal");
13
+ const agentId = Schema.decodeSync(AgentId)("schedule-conformance-agent");
14
+ const threadId = Schema.decodeSync(ThreadId)("schedule-conformance-thread");
15
+ const digest = Schema.decodeSync(Digest)("d".repeat(64));
16
+ const definitions = DefinitionDigests.make({
17
+ agent: digest,
18
+ model: digest,
19
+ tools: digest
20
+ });
21
+ const key = (name, ownerId = "owner") => ({
22
+ owner: {
23
+ tenantId: "schedule-conformance-tenant",
24
+ ownerId
25
+ },
26
+ scheduleId: id(name)
27
+ });
28
+ const record = (name, input = { value: name }, ownerId = "owner") => ({
29
+ schemaVersion: 1,
30
+ ...key(name, ownerId),
31
+ creationFingerprint: Schema.decodeSync(Digest)("a".repeat(64)),
32
+ createdBy: principal,
33
+ createdAtMillis: 1,
34
+ updatedAtMillis: 1,
35
+ configurationRevision: 1,
36
+ version: 1,
37
+ configuration: {
38
+ timing: {
39
+ _tag: "At",
40
+ atMillis: 100
41
+ },
42
+ destination: {
43
+ _tag: "ExistingThread",
44
+ threadId
45
+ },
46
+ deliveryPrincipal: principal,
47
+ agentId,
48
+ definitions,
49
+ input,
50
+ inputDigest: digest
51
+ },
52
+ state: "active",
53
+ nextAtMillis: 100,
54
+ pending: null,
55
+ lastReceipt: null,
56
+ lastRefusal: null,
57
+ lastSkippedRange: null
58
+ });
59
+ const pendingRecord = (name) => {
60
+ const base = record(name);
61
+ const occurrenceId = Schema.decodeSync(Digest)("e".repeat(64));
62
+ return {
63
+ ...base,
64
+ nextAtMillis: null,
65
+ pending: {
66
+ envelope: {
67
+ schemaVersion: 1,
68
+ ...key(name),
69
+ configurationRevision: 1,
70
+ intendedAtMillis: 100,
71
+ preparedAtMillis: 110,
72
+ occurrenceId,
73
+ threadId,
74
+ deliveryPrincipal: principal,
75
+ agentId,
76
+ definitions,
77
+ input: base.configuration.input,
78
+ inputDigest: digest,
79
+ admissionKey: Schema.decodeSync(IdempotencyKey)(`schedule:${name}`),
80
+ authorization: {
81
+ policyId: "policy",
82
+ decisionId: "decision"
83
+ }
84
+ },
85
+ retry: {
86
+ generation: 0,
87
+ attempts: 0,
88
+ automaticAttempts: 0,
89
+ parked: false,
90
+ nextAttemptAtMillis: 120,
91
+ lastAttemptAtMillis: null,
92
+ lastFailure: null
93
+ }
94
+ }
95
+ };
96
+ };
97
+ const receipt = Receipt.make({
98
+ receiptId: Schema.decodeSync(ReceiptId)("schedule-conformance-receipt"),
99
+ submissionId: Schema.decodeSync(SubmissionId)("schedule-conformance-submission"),
100
+ threadId,
101
+ queueSequence: Schema.decodeSync(QueueSequence)(1)
102
+ });
103
+ const conformanceCase = (name, run) => ({
104
+ name,
105
+ run: run((condition, message) => condition ? Effect.void : Effect.fail(ScheduleStoreConformanceViolation.make({
106
+ caseName: name,
107
+ message
108
+ }))).pipe(Effect.withSpan(`ScheduleStoreConformance.${name}`))
109
+ });
110
+ /** Adapter-neutral contract cases. Each case uses disjoint owner and Schedule identities. */
111
+ const scheduleStoreConformanceCases = [
112
+ conformanceCase("returns the current record when creation replays after an edit", (ensure) => Effect.gen(function* () {
113
+ const store = yield* ScheduleStore;
114
+ const original = record("creation-replay");
115
+ yield* store.insert(original, 10);
116
+ const edited = yield* store.change(key("creation-replay"), {
117
+ _tag: "Update",
118
+ expectedRevision: 1,
119
+ configuration: {
120
+ ...original.configuration,
121
+ input: { value: "edited" }
122
+ },
123
+ nextAtMillis: 200,
124
+ nowMillis: 10
125
+ });
126
+ const replayed = yield* store.insert(original, 10);
127
+ yield* ensure(replayed.version === edited.version, "creation replay returned stale state");
128
+ yield* ensure(replayed.configurationRevision === 2, "creation replay lost the edited configuration revision");
129
+ yield* ensure(JSON.stringify(replayed.configuration.input) === JSON.stringify({ value: "edited" }), "creation replay returned the original input");
130
+ })),
131
+ conformanceCase("makes stale completions and retry regressions full no-ops", (ensure) => Effect.gen(function* () {
132
+ const store = yield* ScheduleStore;
133
+ const original = pendingRecord("stale-completion");
134
+ yield* store.insert(original, 10);
135
+ const stale = yield* store.change(key("stale-completion"), {
136
+ _tag: "Complete",
137
+ occurrenceId: Schema.decodeSync(Digest)("f".repeat(64)),
138
+ receipt,
139
+ nowMillis: 130
140
+ });
141
+ yield* ensure(stale.version === original.version, "stale completion changed the version");
142
+ yield* ensure(stale.pending !== null, "stale completion cleared pending work");
143
+ yield* ensure(stale.lastReceipt === null, "stale completion changed bounded status");
144
+ const advanced = yield* store.change(key("stale-completion"), {
145
+ _tag: "Retry",
146
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
147
+ retry: {
148
+ generation: 0,
149
+ automaticAttempts: 0,
150
+ parked: false,
151
+ attempts: 2,
152
+ nextAttemptAtMillis: 500,
153
+ lastAttemptAtMillis: 200,
154
+ lastFailure: "transport"
155
+ },
156
+ nowMillis: 200
157
+ });
158
+ const regressed = yield* store.change(key("stale-completion"), {
159
+ _tag: "Retry",
160
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
161
+ retry: {
162
+ generation: 0,
163
+ automaticAttempts: 0,
164
+ parked: false,
165
+ attempts: 1,
166
+ nextAttemptAtMillis: 300,
167
+ lastAttemptAtMillis: 150,
168
+ lastFailure: "timeout"
169
+ },
170
+ nowMillis: 210
171
+ });
172
+ yield* ensure(regressed.version === advanced.version, "retry regression changed the version");
173
+ yield* ensure(regressed.pending?.retry.nextAttemptAtMillis === 500, "retry regression moved the deadline backward");
174
+ })),
175
+ conformanceCase("isolates owner pages, prioritizes pending deadlines, and clones writes", (ensure) => Effect.gen(function* () {
176
+ const store = yield* ScheduleStore;
177
+ const mutableInput = { value: "before" };
178
+ yield* store.insert(record("z-page", mutableInput), 10);
179
+ mutableInput.value = "after";
180
+ yield* store.insert(record("a-page"), 10);
181
+ yield* store.insert(pendingRecord("pending-first"), 10);
182
+ yield* store.insert(record("foreign", { value: "foreign" }, "other-owner"), 10);
183
+ const page = yield* store.list({
184
+ owner: key("ignored").owner,
185
+ limit: 2
186
+ });
187
+ yield* ensure(page.items.length === 2, "owner page returned the wrong item count");
188
+ yield* ensure(page.items[0]?.scheduleId === id("a-page"), "owner page order is unstable");
189
+ yield* ensure(page.next === id("pending-first"), "owner page cursor is not its last item");
190
+ yield* ensure(page.items.every((item) => item.owner.ownerId === "owner"), "owner page leaked a foreign owner");
191
+ const stored = yield* store.get(key("z-page"));
192
+ yield* ensure(JSON.stringify(stored?.configuration.input) === JSON.stringify({ value: "before" }), "caller mutation changed the authoritative stored input");
193
+ const due = yield* store.due(150, 10, key("ignored").owner);
194
+ yield* ensure(due[0]?.scheduleId === id("a-page") || due[0]?.scheduleId === id("z-page"), "due ordering did not use the earliest deadline");
195
+ yield* ensure(due.some((item) => item.scheduleId === id("pending-first")), "due query omitted pending recovery");
196
+ })),
197
+ conformanceCase("enforces owner capacity without affecting other owners", (ensure) => Effect.gen(function* () {
198
+ const store = yield* ScheduleStore;
199
+ yield* store.insert(record("capacity-one", { value: 1 }, "capacity-owner"), 1);
200
+ const attempted = yield* store.insert(record("capacity-two", { value: 2 }, "capacity-owner"), 1).pipe(Effect.result);
201
+ yield* ensure(Result.isFailure(attempted) && attempted.failure instanceof ScheduleCapacityError, "owner capacity did not fail with ScheduleCapacityError");
202
+ yield* ensure((yield* store.insert(record("capacity-other", { value: 3 }, "capacity-other"), 1)).scheduleId === id("capacity-other"), "capacity leaked across owners");
203
+ })),
204
+ conformanceCase("releases terminal capacity without deleting replay evidence and fences reactivation", (ensure) => Effect.gen(function* () {
205
+ const store = yield* ScheduleStore;
206
+ const original = pendingRecord("capacity-retained");
207
+ yield* store.insert(original, 1);
208
+ const paused = yield* store.change(original, {
209
+ _tag: "Control",
210
+ expectedRevision: 1,
211
+ expectedVersion: original.version,
212
+ action: "pause",
213
+ nextAtMillis: null,
214
+ nowMillis: 120,
215
+ skippedRange: null
216
+ });
217
+ const cancelled = yield* store.change(original, {
218
+ _tag: "Control",
219
+ expectedRevision: 1,
220
+ expectedVersion: paused.version,
221
+ action: "cancel",
222
+ nextAtMillis: null,
223
+ nowMillis: 130,
224
+ skippedRange: null
225
+ });
226
+ const blocked = yield* store.insert(record("capacity-next"), 1).pipe(Effect.result);
227
+ yield* ensure(Result.isFailure(blocked) && blocked.failure._tag === "ScheduleCapacityError", "cancellation released unresolved pending capacity");
228
+ const parked = yield* store.change(original, {
229
+ _tag: "Retry",
230
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
231
+ retry: {
232
+ generation: 0,
233
+ attempts: 3,
234
+ automaticAttempts: 3,
235
+ parked: true,
236
+ nextAttemptAtMillis: 140,
237
+ lastAttemptAtMillis: 130,
238
+ lastFailure: "transport"
239
+ },
240
+ nowMillis: 130
241
+ });
242
+ yield* ensure((yield* store.due(140, 10, original.owner)).length === 0, "Parked work must not retry automatically");
243
+ const recovered = yield* store.change(original, {
244
+ _tag: "Recover",
245
+ expectedGeneration: 0,
246
+ expectedRevision: parked.configurationRevision,
247
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
248
+ nowMillis: 140
249
+ });
250
+ yield* ensure(recovered.state === "cancelled" && recovered.pending?.retry.automaticAttempts === 0 && recovered.pending.retry.attempts === 3 && recovered.pending.retry.parked === false && JSON.stringify(recovered.pending.envelope) === JSON.stringify(original.pending?.envelope), "Explicit recovery must preserve cancelled pending identity and total attempts");
251
+ const staleRetry = yield* store.change(original, {
252
+ _tag: "Retry",
253
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
254
+ retry: {
255
+ generation: 0,
256
+ attempts: 99,
257
+ automaticAttempts: 99,
258
+ parked: true,
259
+ nextAttemptAtMillis: 150,
260
+ lastAttemptAtMillis: 145,
261
+ lastFailure: "transport"
262
+ },
263
+ nowMillis: 145
264
+ });
265
+ yield* ensure(JSON.stringify(staleRetry) === JSON.stringify(recovered), "A pre-recovery retry consumed the new generation");
266
+ const repeatedRecovery = yield* store.change(original, {
267
+ _tag: "Recover",
268
+ expectedGeneration: 0,
269
+ expectedRevision: recovered.configurationRevision,
270
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
271
+ nowMillis: 146
272
+ });
273
+ yield* ensure(JSON.stringify(repeatedRecovery) === JSON.stringify(recovered), "A repeated recovery changed its original generation");
274
+ const completed = yield* store.change(original, {
275
+ _tag: "Complete",
276
+ occurrenceId: original.pending?.envelope.occurrenceId ?? digest,
277
+ receipt,
278
+ nowMillis: 140
279
+ });
280
+ yield* ensure(completed.pending === null && cancelled.pending !== null, "completion did not clear pending work");
281
+ yield* store.insert(record("capacity-next"), 1);
282
+ const replay = yield* store.insert(original, 1);
283
+ yield* ensure(replay.version === completed.version && replay.state === "cancelled", "terminal replay lost its creation evidence");
284
+ const second = record("capacity-next");
285
+ const pausedSecond = yield* store.change(second, {
286
+ _tag: "Control",
287
+ expectedRevision: 1,
288
+ expectedVersion: second.version,
289
+ action: "pause",
290
+ nextAtMillis: second.nextAtMillis,
291
+ nowMillis: 150,
292
+ skippedRange: null
293
+ });
294
+ const pausedCapacity = yield* store.insert(record("capacity-third"), 1).pipe(Effect.result);
295
+ yield* ensure(Result.isFailure(pausedCapacity) && pausedCapacity.failure._tag === "ScheduleCapacityError", "paused future work did not reserve capacity");
296
+ yield* store.change(second, {
297
+ _tag: "Control",
298
+ expectedRevision: 1,
299
+ expectedVersion: pausedSecond.version,
300
+ action: "cancel",
301
+ nextAtMillis: null,
302
+ nowMillis: 160,
303
+ skippedRange: null
304
+ });
305
+ const admitted = pendingRecord("capacity-completed");
306
+ yield* store.insert(admitted, 1);
307
+ const settled = yield* store.change(admitted, {
308
+ _tag: "Complete",
309
+ occurrenceId: admitted.pending?.envelope.occurrenceId ?? digest,
310
+ receipt,
311
+ nowMillis: 170
312
+ });
313
+ yield* store.insert(record("capacity-third"), 1);
314
+ const reactivated = yield* store.change(admitted, {
315
+ _tag: "Update",
316
+ expectedRevision: 1,
317
+ configuration: admitted.configuration,
318
+ nextAtMillis: 200,
319
+ nowMillis: 180
320
+ }, 1).pipe(Effect.result);
321
+ yield* ensure(Result.isFailure(reactivated) && reactivated.failure._tag === "ScheduleCapacityError", "reactivation exceeded operational capacity");
322
+ yield* ensure((yield* store.get(admitted))?.version === settled.version, "capacity failure mutated the completed record");
323
+ })),
324
+ conformanceCase("advances due pagination beyond unchanged rows with equal deadlines", (ensure) => Effect.gen(function* () {
325
+ const store = yield* ScheduleStore;
326
+ for (const name of [
327
+ "due-a",
328
+ "due-b",
329
+ "due-c"
330
+ ]) yield* store.insert(record(name), 10);
331
+ const first = yield* store.due(100, 1);
332
+ const second = yield* store.due(100, 1, void 0, first[0]);
333
+ const third = yield* store.due(100, 1, void 0, second[0]);
334
+ yield* ensure(first[0]?.scheduleId === id("due-a") && second[0]?.scheduleId === id("due-b") && third[0]?.scheduleId === id("due-c"), "due pages repeated or skipped a key");
335
+ yield* ensure((yield* store.due(100, 1, void 0, third[0])).length === 0, "due cursor did not terminate");
336
+ })),
337
+ conformanceCase("fences stale preparation and control while preserving frozen pending work", (ensure) => Effect.gen(function* () {
338
+ const store = yield* ScheduleStore;
339
+ const prepareOriginal = record("stale-prepare");
340
+ yield* store.insert(prepareOriginal, 10);
341
+ const edited = yield* store.change(key("stale-prepare"), {
342
+ _tag: "Update",
343
+ expectedRevision: 1,
344
+ configuration: {
345
+ ...prepareOriginal.configuration,
346
+ timing: {
347
+ _tag: "At",
348
+ atMillis: 200
349
+ },
350
+ input: { value: "edited-before-prepare" }
351
+ },
352
+ nextAtMillis: 200,
353
+ nowMillis: 10
354
+ });
355
+ const staleEnvelope = pendingRecord("stale-prepare").pending?.envelope;
356
+ if (staleEnvelope === void 0) return yield* ScheduleStoreConformanceViolation.make({
357
+ caseName: "fences stale preparation and control while preserving frozen pending work",
358
+ message: "fixture did not contain a pending envelope"
359
+ });
360
+ const stalePrepare = yield* store.change(key("stale-prepare"), {
361
+ _tag: "Prepare",
362
+ expectedRevision: 1,
363
+ expectedCursor: 100,
364
+ envelope: staleEnvelope,
365
+ nextAtMillis: null,
366
+ skippedRange: null,
367
+ nowMillis: 110
368
+ }).pipe(Effect.result);
369
+ yield* ensure(Result.isFailure(stalePrepare) && stalePrepare.failure._tag === "ScheduleConflict", "stale preparation did not conflict");
370
+ yield* ensure(JSON.stringify(yield* store.get(key("stale-prepare"))) === JSON.stringify(edited), "stale preparation changed the edited record");
371
+ const frozen = pendingRecord("pending-update");
372
+ yield* store.insert(frozen, 10);
373
+ const frozenEnvelope = JSON.stringify(frozen.pending?.envelope);
374
+ const updatedPending = yield* store.change(key("pending-update"), {
375
+ _tag: "Update",
376
+ expectedRevision: 1,
377
+ configuration: {
378
+ ...frozen.configuration,
379
+ timing: {
380
+ _tag: "At",
381
+ atMillis: 300
382
+ },
383
+ input: { value: "new-configuration" }
384
+ },
385
+ nextAtMillis: 300,
386
+ nowMillis: 20
387
+ });
388
+ yield* ensure(JSON.stringify(updatedPending.pending?.envelope) === frozenEnvelope, "configuration update changed the frozen pending envelope");
389
+ const completedOriginal = pendingRecord("stale-control");
390
+ yield* store.insert(completedOriginal, 10);
391
+ const occurrenceId = completedOriginal.pending?.envelope.occurrenceId;
392
+ if (occurrenceId === void 0) return yield* ScheduleStoreConformanceViolation.make({
393
+ caseName: "fences stale preparation and control while preserving frozen pending work",
394
+ message: "fixture did not contain an occurrence identifier"
395
+ });
396
+ const completed = yield* store.change(key("stale-control"), {
397
+ _tag: "Complete",
398
+ occurrenceId,
399
+ receipt,
400
+ nowMillis: 130
401
+ });
402
+ const staleControl = yield* store.change(key("stale-control"), {
403
+ _tag: "Control",
404
+ expectedRevision: 1,
405
+ expectedVersion: 1,
406
+ action: "resume",
407
+ nextAtMillis: 100,
408
+ nowMillis: 140,
409
+ skippedRange: null
410
+ }).pipe(Effect.result);
411
+ yield* ensure(Result.isFailure(staleControl) && staleControl.failure._tag === "ScheduleConflict", "stale control did not conflict");
412
+ const afterControl = yield* store.get(key("stale-control"));
413
+ yield* ensure(afterControl?.nextAtMillis === null, "stale control revived a completed one-shot");
414
+ yield* ensure(afterControl?.version === completed.version && afterControl.lastReceipt !== null, "stale control changed completed state");
415
+ }))
416
+ ];
417
+ //#endregion
418
+ export { ScheduleStoreConformanceViolation, scheduleStoreConformanceCases };
419
+
420
+ //# sourceMappingURL=ScheduleStoreConformance.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleStoreConformance.mjs","names":[],"sources":["../../src/durable/ScheduleStoreConformance.ts"],"sourcesContent":["import { Effect, Result, Schema } from \"effect\";\n\nimport { AgentId, ThreadId, ReceiptId, SubmissionId } from \"../core/Identifiers.ts\";\nimport { Receipt } from \"./DurableAgentRuntime.ts\";\nimport { DefinitionDigests, Digest, type PersistedJson } from \"./Records.ts\";\nimport {\n ScheduleCapacityError,\n ScheduleId,\n type ScheduleKey,\n type ScheduleRecord,\n ScheduleStore,\n type ScheduleStoreFailure,\n} from \"./Schedule.ts\";\nimport { IdempotencyKey, Principal, QueueSequence } from \"./SubmissionLedger.ts\";\n\nexport class ScheduleStoreConformanceViolation extends Schema.TaggedError<ScheduleStoreConformanceViolation>()(\n \"ScheduleStoreConformanceViolation\",\n { caseName: Schema.String, message: Schema.String },\n) {}\n\nexport type ScheduleStoreConformanceFailure =\n | ScheduleStoreFailure\n | ScheduleStoreConformanceViolation;\n\nexport interface ScheduleStoreConformanceCase {\n readonly name: string;\n readonly run: Effect.Effect<void, ScheduleStoreConformanceFailure, ScheduleStore>;\n}\n\nconst id = Schema.decodeSync(ScheduleId);\nconst principal = Schema.decodeSync(Principal)(\"schedule-conformance-principal\");\nconst agentId = Schema.decodeSync(AgentId)(\"schedule-conformance-agent\");\nconst threadId = Schema.decodeSync(ThreadId)(\"schedule-conformance-thread\");\nconst digest = Schema.decodeSync(Digest)(\"d\".repeat(64));\nconst definitions = DefinitionDigests.make({ agent: digest, model: digest, tools: digest });\n\nconst key = (name: string, ownerId = \"owner\"): ScheduleKey => ({\n owner: { tenantId: \"schedule-conformance-tenant\", ownerId },\n scheduleId: id(name),\n});\n\nconst record = (\n name: string,\n input: PersistedJson = { value: name },\n ownerId = \"owner\",\n): ScheduleRecord => ({\n schemaVersion: 1,\n ...key(name, ownerId),\n creationFingerprint: Schema.decodeSync(Digest)(\"a\".repeat(64)),\n createdBy: principal,\n createdAtMillis: 1,\n updatedAtMillis: 1,\n configurationRevision: 1,\n version: 1,\n configuration: {\n timing: { _tag: \"At\", atMillis: 100 },\n destination: { _tag: \"ExistingThread\", threadId },\n deliveryPrincipal: principal,\n agentId,\n definitions,\n input,\n inputDigest: digest,\n },\n state: \"active\",\n nextAtMillis: 100,\n pending: null,\n lastReceipt: null,\n lastRefusal: null,\n lastSkippedRange: null,\n});\n\nconst pendingRecord = (name: string): ScheduleRecord => {\n const base = record(name);\n const occurrenceId = Schema.decodeSync(Digest)(\"e\".repeat(64));\n\n return {\n ...base,\n nextAtMillis: null,\n pending: {\n envelope: {\n schemaVersion: 1,\n ...key(name),\n configurationRevision: 1,\n intendedAtMillis: 100,\n preparedAtMillis: 110,\n occurrenceId,\n threadId,\n deliveryPrincipal: principal,\n agentId,\n definitions,\n input: base.configuration.input,\n inputDigest: digest,\n admissionKey: Schema.decodeSync(IdempotencyKey)(`schedule:${name}`),\n authorization: { policyId: \"policy\", decisionId: \"decision\" },\n },\n retry: {\n generation: 0,\n attempts: 0,\n automaticAttempts: 0,\n parked: false,\n nextAttemptAtMillis: 120,\n lastAttemptAtMillis: null,\n lastFailure: null,\n },\n },\n };\n};\n\nconst receipt = Receipt.make({\n receiptId: Schema.decodeSync(ReceiptId)(\"schedule-conformance-receipt\"),\n submissionId: Schema.decodeSync(SubmissionId)(\"schedule-conformance-submission\"),\n threadId,\n queueSequence: Schema.decodeSync(QueueSequence)(1),\n});\n\nconst conformanceCase = (\n name: string,\n run: (\n ensure: (\n condition: boolean,\n message: string,\n ) => Effect.Effect<void, ScheduleStoreConformanceViolation>,\n ) => Effect.Effect<void, ScheduleStoreConformanceFailure, ScheduleStore>,\n): ScheduleStoreConformanceCase => ({\n name,\n run: run((condition, message) =>\n condition\n ? Effect.void\n : Effect.fail(ScheduleStoreConformanceViolation.make({ caseName: name, message })),\n ).pipe(Effect.withSpan(`ScheduleStoreConformance.${name}`)),\n});\n\nconst creationReplay = conformanceCase(\n \"returns the current record when creation replays after an edit\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n const original = record(\"creation-replay\");\n\n yield* store.insert(original, 10);\n\n const edited = yield* store.change(key(\"creation-replay\"), {\n _tag: \"Update\",\n expectedRevision: 1,\n configuration: {\n ...original.configuration,\n input: { value: \"edited\" },\n },\n nextAtMillis: 200,\n nowMillis: 10,\n });\n\n const replayed = yield* store.insert(original, 10);\n\n yield* ensure(replayed.version === edited.version, \"creation replay returned stale state\");\n yield* ensure(\n replayed.configurationRevision === 2,\n \"creation replay lost the edited configuration revision\",\n );\n yield* ensure(\n JSON.stringify(replayed.configuration.input) === JSON.stringify({ value: \"edited\" }),\n \"creation replay returned the original input\",\n );\n }),\n);\n\nconst staleCompletion = conformanceCase(\n \"makes stale completions and retry regressions full no-ops\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n const original = pendingRecord(\"stale-completion\");\n\n yield* store.insert(original, 10);\n\n const stale = yield* store.change(key(\"stale-completion\"), {\n _tag: \"Complete\",\n occurrenceId: Schema.decodeSync(Digest)(\"f\".repeat(64)),\n receipt,\n nowMillis: 130,\n });\n\n yield* ensure(stale.version === original.version, \"stale completion changed the version\");\n yield* ensure(stale.pending !== null, \"stale completion cleared pending work\");\n yield* ensure(stale.lastReceipt === null, \"stale completion changed bounded status\");\n\n const advanced = yield* store.change(key(\"stale-completion\"), {\n _tag: \"Retry\",\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n retry: {\n generation: 0,\n automaticAttempts: 0,\n parked: false,\n attempts: 2,\n nextAttemptAtMillis: 500,\n lastAttemptAtMillis: 200,\n lastFailure: \"transport\",\n },\n nowMillis: 200,\n });\n\n const regressed = yield* store.change(key(\"stale-completion\"), {\n _tag: \"Retry\",\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n retry: {\n generation: 0,\n automaticAttempts: 0,\n parked: false,\n attempts: 1,\n nextAttemptAtMillis: 300,\n lastAttemptAtMillis: 150,\n lastFailure: \"timeout\",\n },\n nowMillis: 210,\n });\n\n yield* ensure(regressed.version === advanced.version, \"retry regression changed the version\");\n yield* ensure(\n regressed.pending?.retry.nextAttemptAtMillis === 500,\n \"retry regression moved the deadline backward\",\n );\n }),\n);\n\nconst isolationAndCloning = conformanceCase(\n \"isolates owner pages, prioritizes pending deadlines, and clones writes\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n const mutableInput = { value: \"before\" };\n\n yield* store.insert(record(\"z-page\", mutableInput), 10);\n mutableInput.value = \"after\";\n yield* store.insert(record(\"a-page\"), 10);\n yield* store.insert(pendingRecord(\"pending-first\"), 10);\n yield* store.insert(record(\"foreign\", { value: \"foreign\" }, \"other-owner\"), 10);\n\n const page = yield* store.list({ owner: key(\"ignored\").owner, limit: 2 });\n\n yield* ensure(page.items.length === 2, \"owner page returned the wrong item count\");\n yield* ensure(page.items[0]?.scheduleId === id(\"a-page\"), \"owner page order is unstable\");\n yield* ensure(page.next === id(\"pending-first\"), \"owner page cursor is not its last item\");\n yield* ensure(\n page.items.every((item) => item.owner.ownerId === \"owner\"),\n \"owner page leaked a foreign owner\",\n );\n\n const stored = yield* store.get(key(\"z-page\"));\n\n yield* ensure(\n JSON.stringify(stored?.configuration.input) === JSON.stringify({ value: \"before\" }),\n \"caller mutation changed the authoritative stored input\",\n );\n const due = yield* store.due(150, 10, key(\"ignored\").owner);\n\n yield* ensure(\n due[0]?.scheduleId === id(\"a-page\") || due[0]?.scheduleId === id(\"z-page\"),\n \"due ordering did not use the earliest deadline\",\n );\n yield* ensure(\n due.some((item) => item.scheduleId === id(\"pending-first\")),\n \"due query omitted pending recovery\",\n );\n }),\n);\n\nconst ownerCapacity = conformanceCase(\n \"enforces owner capacity without affecting other owners\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n\n yield* store.insert(record(\"capacity-one\", { value: 1 }, \"capacity-owner\"), 1);\n\n const attempted = yield* store\n .insert(record(\"capacity-two\", { value: 2 }, \"capacity-owner\"), 1)\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(attempted) && attempted.failure instanceof ScheduleCapacityError,\n \"owner capacity did not fail with ScheduleCapacityError\",\n );\n\n const other = yield* store.insert(\n record(\"capacity-other\", { value: 3 }, \"capacity-other\"),\n 1,\n );\n\n yield* ensure(other.scheduleId === id(\"capacity-other\"), \"capacity leaked across owners\");\n }),\n);\n\nconst retainedEvidence = conformanceCase(\n \"releases terminal capacity without deleting replay evidence and fences reactivation\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n const original = pendingRecord(\"capacity-retained\");\n\n yield* store.insert(original, 1);\n\n const paused = yield* store.change(original, {\n _tag: \"Control\",\n expectedRevision: 1,\n expectedVersion: original.version,\n action: \"pause\",\n nextAtMillis: null,\n nowMillis: 120,\n skippedRange: null,\n });\n\n const cancelled = yield* store.change(original, {\n _tag: \"Control\",\n expectedRevision: 1,\n expectedVersion: paused.version,\n action: \"cancel\",\n nextAtMillis: null,\n nowMillis: 130,\n skippedRange: null,\n });\n\n const blocked = yield* store.insert(record(\"capacity-next\"), 1).pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(blocked) && blocked.failure._tag === \"ScheduleCapacityError\",\n \"cancellation released unresolved pending capacity\",\n );\n\n const parked = yield* store.change(original, {\n _tag: \"Retry\",\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n retry: {\n generation: 0,\n attempts: 3,\n automaticAttempts: 3,\n parked: true,\n nextAttemptAtMillis: 140,\n lastAttemptAtMillis: 130,\n lastFailure: \"transport\",\n },\n nowMillis: 130,\n });\n\n yield* ensure(\n (yield* store.due(140, 10, original.owner)).length === 0,\n \"Parked work must not retry automatically\",\n );\n\n const recovered = yield* store.change(original, {\n _tag: \"Recover\",\n expectedGeneration: 0,\n expectedRevision: parked.configurationRevision,\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n nowMillis: 140,\n });\n\n yield* ensure(\n recovered.state === \"cancelled\" &&\n recovered.pending?.retry.automaticAttempts === 0 &&\n recovered.pending.retry.attempts === 3 &&\n recovered.pending.retry.parked === false &&\n JSON.stringify(recovered.pending.envelope) === JSON.stringify(original.pending?.envelope),\n \"Explicit recovery must preserve cancelled pending identity and total attempts\",\n );\n\n const staleRetry = yield* store.change(original, {\n _tag: \"Retry\",\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n retry: {\n generation: 0,\n attempts: 99,\n automaticAttempts: 99,\n parked: true,\n nextAttemptAtMillis: 150,\n lastAttemptAtMillis: 145,\n lastFailure: \"transport\",\n },\n nowMillis: 145,\n });\n\n yield* ensure(\n JSON.stringify(staleRetry) === JSON.stringify(recovered),\n \"A pre-recovery retry consumed the new generation\",\n );\n\n const repeatedRecovery = yield* store.change(original, {\n _tag: \"Recover\",\n expectedGeneration: 0,\n expectedRevision: recovered.configurationRevision,\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n nowMillis: 146,\n });\n\n yield* ensure(\n JSON.stringify(repeatedRecovery) === JSON.stringify(recovered),\n \"A repeated recovery changed its original generation\",\n );\n\n const completed = yield* store.change(original, {\n _tag: \"Complete\",\n occurrenceId: original.pending?.envelope.occurrenceId ?? digest,\n receipt,\n nowMillis: 140,\n });\n\n yield* ensure(\n completed.pending === null && cancelled.pending !== null,\n \"completion did not clear pending work\",\n );\n yield* store.insert(record(\"capacity-next\"), 1);\n const replay = yield* store.insert(original, 1);\n\n yield* ensure(\n replay.version === completed.version && replay.state === \"cancelled\",\n \"terminal replay lost its creation evidence\",\n );\n\n const second = record(\"capacity-next\");\n\n const pausedSecond = yield* store.change(second, {\n _tag: \"Control\",\n expectedRevision: 1,\n expectedVersion: second.version,\n action: \"pause\",\n nextAtMillis: second.nextAtMillis,\n nowMillis: 150,\n skippedRange: null,\n });\n\n const pausedCapacity = yield* store.insert(record(\"capacity-third\"), 1).pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(pausedCapacity) && pausedCapacity.failure._tag === \"ScheduleCapacityError\",\n \"paused future work did not reserve capacity\",\n );\n yield* store.change(second, {\n _tag: \"Control\",\n expectedRevision: 1,\n expectedVersion: pausedSecond.version,\n action: \"cancel\",\n nextAtMillis: null,\n nowMillis: 160,\n skippedRange: null,\n });\n const admitted = pendingRecord(\"capacity-completed\");\n\n yield* store.insert(admitted, 1);\n\n const settled = yield* store.change(admitted, {\n _tag: \"Complete\",\n occurrenceId: admitted.pending?.envelope.occurrenceId ?? digest,\n receipt,\n nowMillis: 170,\n });\n\n yield* store.insert(record(\"capacity-third\"), 1);\n\n const reactivated = yield* store\n .change(\n admitted,\n {\n _tag: \"Update\",\n expectedRevision: 1,\n configuration: admitted.configuration,\n nextAtMillis: 200,\n nowMillis: 180,\n },\n 1,\n )\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(reactivated) && reactivated.failure._tag === \"ScheduleCapacityError\",\n \"reactivation exceeded operational capacity\",\n );\n yield* ensure(\n (yield* store.get(admitted))?.version === settled.version,\n \"capacity failure mutated the completed record\",\n );\n }),\n);\n\nconst duePagination = conformanceCase(\n \"advances due pagination beyond unchanged rows with equal deadlines\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n\n for (const name of [\"due-a\", \"due-b\", \"due-c\"]) yield* store.insert(record(name), 10);\n const first = yield* store.due(100, 1);\n const second = yield* store.due(100, 1, undefined, first[0]);\n const third = yield* store.due(100, 1, undefined, second[0]);\n\n yield* ensure(\n first[0]?.scheduleId === id(\"due-a\") &&\n second[0]?.scheduleId === id(\"due-b\") &&\n third[0]?.scheduleId === id(\"due-c\"),\n \"due pages repeated or skipped a key\",\n );\n yield* ensure(\n (yield* store.due(100, 1, undefined, third[0])).length === 0,\n \"due cursor did not terminate\",\n );\n }),\n);\n\nconst transitionFencing = conformanceCase(\n \"fences stale preparation and control while preserving frozen pending work\",\n (ensure) =>\n Effect.gen(function* () {\n const store = yield* ScheduleStore;\n\n const prepareOriginal = record(\"stale-prepare\");\n\n yield* store.insert(prepareOriginal, 10);\n\n const edited = yield* store.change(key(\"stale-prepare\"), {\n _tag: \"Update\",\n expectedRevision: 1,\n configuration: {\n ...prepareOriginal.configuration,\n timing: { _tag: \"At\", atMillis: 200 },\n input: { value: \"edited-before-prepare\" },\n },\n nextAtMillis: 200,\n nowMillis: 10,\n });\n\n const staleEnvelope = pendingRecord(\"stale-prepare\").pending?.envelope;\n\n if (staleEnvelope === undefined) {\n return yield* ScheduleStoreConformanceViolation.make({\n caseName: \"fences stale preparation and control while preserving frozen pending work\",\n message: \"fixture did not contain a pending envelope\",\n });\n }\n\n const stalePrepare = yield* store\n .change(key(\"stale-prepare\"), {\n _tag: \"Prepare\",\n expectedRevision: 1,\n expectedCursor: 100,\n envelope: staleEnvelope,\n nextAtMillis: null,\n skippedRange: null,\n nowMillis: 110,\n })\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(stalePrepare) && stalePrepare.failure._tag === \"ScheduleConflict\",\n \"stale preparation did not conflict\",\n );\n yield* ensure(\n JSON.stringify(yield* store.get(key(\"stale-prepare\"))) === JSON.stringify(edited),\n \"stale preparation changed the edited record\",\n );\n\n const frozen = pendingRecord(\"pending-update\");\n\n yield* store.insert(frozen, 10);\n const frozenEnvelope = JSON.stringify(frozen.pending?.envelope);\n\n const updatedPending = yield* store.change(key(\"pending-update\"), {\n _tag: \"Update\",\n expectedRevision: 1,\n configuration: {\n ...frozen.configuration,\n timing: { _tag: \"At\", atMillis: 300 },\n input: { value: \"new-configuration\" },\n },\n nextAtMillis: 300,\n nowMillis: 20,\n });\n\n yield* ensure(\n JSON.stringify(updatedPending.pending?.envelope) === frozenEnvelope,\n \"configuration update changed the frozen pending envelope\",\n );\n\n const completedOriginal = pendingRecord(\"stale-control\");\n\n yield* store.insert(completedOriginal, 10);\n const occurrenceId = completedOriginal.pending?.envelope.occurrenceId;\n\n if (occurrenceId === undefined) {\n return yield* ScheduleStoreConformanceViolation.make({\n caseName: \"fences stale preparation and control while preserving frozen pending work\",\n message: \"fixture did not contain an occurrence identifier\",\n });\n }\n\n const completed = yield* store.change(key(\"stale-control\"), {\n _tag: \"Complete\",\n occurrenceId,\n receipt,\n nowMillis: 130,\n });\n\n const staleControl = yield* store\n .change(key(\"stale-control\"), {\n _tag: \"Control\",\n expectedRevision: 1,\n expectedVersion: 1,\n action: \"resume\",\n nextAtMillis: 100,\n nowMillis: 140,\n skippedRange: null,\n })\n .pipe(Effect.result);\n\n yield* ensure(\n Result.isFailure(staleControl) && staleControl.failure._tag === \"ScheduleConflict\",\n \"stale control did not conflict\",\n );\n const afterControl = yield* store.get(key(\"stale-control\"));\n\n yield* ensure(\n afterControl?.nextAtMillis === null,\n \"stale control revived a completed one-shot\",\n );\n yield* ensure(\n afterControl?.version === completed.version && afterControl.lastReceipt !== null,\n \"stale control changed completed state\",\n );\n }),\n);\n\n/** Adapter-neutral contract cases. Each case uses disjoint owner and Schedule identities. */\nexport const scheduleStoreConformanceCases: ReadonlyArray<ScheduleStoreConformanceCase> = [\n creationReplay,\n staleCompletion,\n isolationAndCloning,\n ownerCapacity,\n retainedEvidence,\n duePagination,\n transitionFencing,\n];\n"],"mappings":";;;;;;AAeA,IAAa,oCAAb,cAAuD,OAAO,YAA+C,CAAC,CAC5G,qCACA;CAAE,UAAU,OAAO;CAAQ,SAAS,OAAO;AAAO,CACpD,CAAC,CAAC,CAAC;AAWH,MAAM,KAAK,OAAO,WAAW,UAAU;AACvC,MAAM,YAAY,OAAO,WAAW,SAAS,CAAC,CAAC,gCAAgC;AAC/E,MAAM,UAAU,OAAO,WAAW,OAAO,CAAC,CAAC,4BAA4B;AACvE,MAAM,WAAW,OAAO,WAAW,QAAQ,CAAC,CAAC,6BAA6B;AAC1E,MAAM,SAAS,OAAO,WAAW,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AACvD,MAAM,cAAc,kBAAkB,KAAK;CAAE,OAAO;CAAQ,OAAO;CAAQ,OAAO;AAAO,CAAC;AAE1F,MAAM,OAAO,MAAc,UAAU,aAA0B;CAC7D,OAAO;EAAE,UAAU;EAA+B;CAAQ;CAC1D,YAAY,GAAG,IAAI;AACrB;AAEA,MAAM,UACJ,MACA,QAAuB,EAAE,OAAO,KAAK,GACrC,UAAU,aACU;CACpB,eAAe;CACf,GAAG,IAAI,MAAM,OAAO;CACpB,qBAAqB,OAAO,WAAW,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;CAC7D,WAAW;CACX,iBAAiB;CACjB,iBAAiB;CACjB,uBAAuB;CACvB,SAAS;CACT,eAAe;EACb,QAAQ;GAAE,MAAM;GAAM,UAAU;EAAI;EACpC,aAAa;GAAE,MAAM;GAAkB;EAAS;EAChD,mBAAmB;EACnB;EACA;EACA;EACA,aAAa;CACf;CACA,OAAO;CACP,cAAc;CACd,SAAS;CACT,aAAa;CACb,aAAa;CACb,kBAAkB;AACpB;AAEA,MAAM,iBAAiB,SAAiC;CACtD,MAAM,OAAO,OAAO,IAAI;CACxB,MAAM,eAAe,OAAO,WAAW,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;CAE7D,OAAO;EACL,GAAG;EACH,cAAc;EACd,SAAS;GACP,UAAU;IACR,eAAe;IACf,GAAG,IAAI,IAAI;IACX,uBAAuB;IACvB,kBAAkB;IAClB,kBAAkB;IAClB;IACA;IACA,mBAAmB;IACnB;IACA;IACA,OAAO,KAAK,cAAc;IAC1B,aAAa;IACb,cAAc,OAAO,WAAW,cAAc,CAAC,CAAC,YAAY,MAAM;IAClE,eAAe;KAAE,UAAU;KAAU,YAAY;IAAW;GAC9D;GACA,OAAO;IACL,YAAY;IACZ,UAAU;IACV,mBAAmB;IACnB,QAAQ;IACR,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;EACF;CACF;AACF;AAEA,MAAM,UAAU,QAAQ,KAAK;CAC3B,WAAW,OAAO,WAAW,SAAS,CAAC,CAAC,8BAA8B;CACtE,cAAc,OAAO,WAAW,YAAY,CAAC,CAAC,iCAAiC;CAC/E;CACA,eAAe,OAAO,WAAW,aAAa,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,mBACJ,MACA,SAMkC;CAClC;CACA,KAAK,KAAK,WAAW,YACnB,YACI,OAAO,OACP,OAAO,KAAK,kCAAkC,KAAK;EAAE,UAAU;EAAM;CAAQ,CAAC,CAAC,CACrF,CAAC,CAAC,KAAK,OAAO,SAAS,4BAA4B,MAAM,CAAC;AAC5D;;AAmfA,MAAa,gCAA6E;CAjfnE,gBACrB,mEACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EACrB,MAAM,WAAW,OAAO,iBAAiB;EAEzC,OAAO,MAAM,OAAO,UAAU,EAAE;EAEhC,MAAM,SAAS,OAAO,MAAM,OAAO,IAAI,iBAAiB,GAAG;GACzD,MAAM;GACN,kBAAkB;GAClB,eAAe;IACb,GAAG,SAAS;IACZ,OAAO,EAAE,OAAO,SAAS;GAC3B;GACA,cAAc;GACd,WAAW;EACb,CAAC;EAED,MAAM,WAAW,OAAO,MAAM,OAAO,UAAU,EAAE;EAEjD,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,sCAAsC;EACzF,OAAO,OACL,SAAS,0BAA0B,GACnC,wDACF;EACA,OAAO,OACL,KAAK,UAAU,SAAS,cAAc,KAAK,MAAM,KAAK,UAAU,EAAE,OAAO,SAAS,CAAC,GACnF,6CACF;CACF,CAAC,CAmdH;CAhdsB,gBACtB,8DACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EACrB,MAAM,WAAW,cAAc,kBAAkB;EAEjD,OAAO,MAAM,OAAO,UAAU,EAAE;EAEhC,MAAM,QAAQ,OAAO,MAAM,OAAO,IAAI,kBAAkB,GAAG;GACzD,MAAM;GACN,cAAc,OAAO,WAAW,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;GACtD;GACA,WAAW;EACb,CAAC;EAED,OAAO,OAAO,MAAM,YAAY,SAAS,SAAS,sCAAsC;EACxF,OAAO,OAAO,MAAM,YAAY,MAAM,uCAAuC;EAC7E,OAAO,OAAO,MAAM,gBAAgB,MAAM,yCAAyC;EAEnF,MAAM,WAAW,OAAO,MAAM,OAAO,IAAI,kBAAkB,GAAG;GAC5D,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,OAAO;IACL,YAAY;IACZ,mBAAmB;IACnB,QAAQ;IACR,UAAU;IACV,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;GACA,WAAW;EACb,CAAC;EAED,MAAM,YAAY,OAAO,MAAM,OAAO,IAAI,kBAAkB,GAAG;GAC7D,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,OAAO;IACL,YAAY;IACZ,mBAAmB;IACnB,QAAQ;IACR,UAAU;IACV,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;GACA,WAAW;EACb,CAAC;EAED,OAAO,OAAO,UAAU,YAAY,SAAS,SAAS,sCAAsC;EAC5F,OAAO,OACL,UAAU,SAAS,MAAM,wBAAwB,KACjD,8CACF;CACF,CAAC,CA0ZH;CAvZ0B,gBAC1B,2EACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EACrB,MAAM,eAAe,EAAE,OAAO,SAAS;EAEvC,OAAO,MAAM,OAAO,OAAO,UAAU,YAAY,GAAG,EAAE;EACtD,aAAa,QAAQ;EACrB,OAAO,MAAM,OAAO,OAAO,QAAQ,GAAG,EAAE;EACxC,OAAO,MAAM,OAAO,cAAc,eAAe,GAAG,EAAE;EACtD,OAAO,MAAM,OAAO,OAAO,WAAW,EAAE,OAAO,UAAU,GAAG,aAAa,GAAG,EAAE;EAE9E,MAAM,OAAO,OAAO,MAAM,KAAK;GAAE,OAAO,IAAI,SAAS,CAAC,CAAC;GAAO,OAAO;EAAE,CAAC;EAExE,OAAO,OAAO,KAAK,MAAM,WAAW,GAAG,0CAA0C;EACjF,OAAO,OAAO,KAAK,MAAM,EAAE,EAAE,eAAe,GAAG,QAAQ,GAAG,8BAA8B;EACxF,OAAO,OAAO,KAAK,SAAS,GAAG,eAAe,GAAG,wCAAwC;EACzF,OAAO,OACL,KAAK,MAAM,OAAO,SAAS,KAAK,MAAM,YAAY,OAAO,GACzD,mCACF;EAEA,MAAM,SAAS,OAAO,MAAM,IAAI,IAAI,QAAQ,CAAC;EAE7C,OAAO,OACL,KAAK,UAAU,QAAQ,cAAc,KAAK,MAAM,KAAK,UAAU,EAAE,OAAO,SAAS,CAAC,GAClF,wDACF;EACA,MAAM,MAAM,OAAO,MAAM,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,CAAC,KAAK;EAE1D,OAAO,OACL,IAAI,EAAE,EAAE,eAAe,GAAG,QAAQ,KAAK,IAAI,EAAE,EAAE,eAAe,GAAG,QAAQ,GACzE,gDACF;EACA,OAAO,OACL,IAAI,MAAM,SAAS,KAAK,eAAe,GAAG,eAAe,CAAC,GAC1D,oCACF;CACF,CAAC,CAiXH;CA9WoB,gBACpB,2DACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EAErB,OAAO,MAAM,OAAO,OAAO,gBAAgB,EAAE,OAAO,EAAE,GAAG,gBAAgB,GAAG,CAAC;EAE7E,MAAM,YAAY,OAAO,MACtB,OAAO,OAAO,gBAAgB,EAAE,OAAO,EAAE,GAAG,gBAAgB,GAAG,CAAC,CAAC,CACjE,KAAK,OAAO,MAAM;EAErB,OAAO,OACL,OAAO,UAAU,SAAS,KAAK,UAAU,mBAAmB,uBAC5D,wDACF;EAOA,OAAO,QAAO,OALO,MAAM,OACzB,OAAO,kBAAkB,EAAE,OAAO,EAAE,GAAG,gBAAgB,GACvD,CACF,EAAA,CAEoB,eAAe,GAAG,gBAAgB,GAAG,+BAA+B;CAC1F,CAAC,CAwVH;CArVuB,gBACvB,wFACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EACrB,MAAM,WAAW,cAAc,mBAAmB;EAElD,OAAO,MAAM,OAAO,UAAU,CAAC;EAE/B,MAAM,SAAS,OAAO,MAAM,OAAO,UAAU;GAC3C,MAAM;GACN,kBAAkB;GAClB,iBAAiB,SAAS;GAC1B,QAAQ;GACR,cAAc;GACd,WAAW;GACX,cAAc;EAChB,CAAC;EAED,MAAM,YAAY,OAAO,MAAM,OAAO,UAAU;GAC9C,MAAM;GACN,kBAAkB;GAClB,iBAAiB,OAAO;GACxB,QAAQ;GACR,cAAc;GACd,WAAW;GACX,cAAc;EAChB,CAAC;EAED,MAAM,UAAU,OAAO,MAAM,OAAO,OAAO,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,MAAM;EAElF,OAAO,OACL,OAAO,UAAU,OAAO,KAAK,QAAQ,QAAQ,SAAS,yBACtD,mDACF;EAEA,MAAM,SAAS,OAAO,MAAM,OAAO,UAAU;GAC3C,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,OAAO;IACL,YAAY;IACZ,UAAU;IACV,mBAAmB;IACnB,QAAQ;IACR,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;GACA,WAAW;EACb,CAAC;EAED,OAAO,QACJ,OAAO,MAAM,IAAI,KAAK,IAAI,SAAS,KAAK,EAAA,CAAG,WAAW,GACvD,0CACF;EAEA,MAAM,YAAY,OAAO,MAAM,OAAO,UAAU;GAC9C,MAAM;GACN,oBAAoB;GACpB,kBAAkB,OAAO;GACzB,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,WAAW;EACb,CAAC;EAED,OAAO,OACL,UAAU,UAAU,eAClB,UAAU,SAAS,MAAM,sBAAsB,KAC/C,UAAU,QAAQ,MAAM,aAAa,KACrC,UAAU,QAAQ,MAAM,WAAW,SACnC,KAAK,UAAU,UAAU,QAAQ,QAAQ,MAAM,KAAK,UAAU,SAAS,SAAS,QAAQ,GAC1F,+EACF;EAEA,MAAM,aAAa,OAAO,MAAM,OAAO,UAAU;GAC/C,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,OAAO;IACL,YAAY;IACZ,UAAU;IACV,mBAAmB;IACnB,QAAQ;IACR,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;GACf;GACA,WAAW;EACb,CAAC;EAED,OAAO,OACL,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,SAAS,GACvD,kDACF;EAEA,MAAM,mBAAmB,OAAO,MAAM,OAAO,UAAU;GACrD,MAAM;GACN,oBAAoB;GACpB,kBAAkB,UAAU;GAC5B,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD,WAAW;EACb,CAAC;EAED,OAAO,OACL,KAAK,UAAU,gBAAgB,MAAM,KAAK,UAAU,SAAS,GAC7D,qDACF;EAEA,MAAM,YAAY,OAAO,MAAM,OAAO,UAAU;GAC9C,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD;GACA,WAAW;EACb,CAAC;EAED,OAAO,OACL,UAAU,YAAY,QAAQ,UAAU,YAAY,MACpD,uCACF;EACA,OAAO,MAAM,OAAO,OAAO,eAAe,GAAG,CAAC;EAC9C,MAAM,SAAS,OAAO,MAAM,OAAO,UAAU,CAAC;EAE9C,OAAO,OACL,OAAO,YAAY,UAAU,WAAW,OAAO,UAAU,aACzD,4CACF;EAEA,MAAM,SAAS,OAAO,eAAe;EAErC,MAAM,eAAe,OAAO,MAAM,OAAO,QAAQ;GAC/C,MAAM;GACN,kBAAkB;GAClB,iBAAiB,OAAO;GACxB,QAAQ;GACR,cAAc,OAAO;GACrB,WAAW;GACX,cAAc;EAChB,CAAC;EAED,MAAM,iBAAiB,OAAO,MAAM,OAAO,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,MAAM;EAE1F,OAAO,OACL,OAAO,UAAU,cAAc,KAAK,eAAe,QAAQ,SAAS,yBACpE,6CACF;EACA,OAAO,MAAM,OAAO,QAAQ;GAC1B,MAAM;GACN,kBAAkB;GAClB,iBAAiB,aAAa;GAC9B,QAAQ;GACR,cAAc;GACd,WAAW;GACX,cAAc;EAChB,CAAC;EACD,MAAM,WAAW,cAAc,oBAAoB;EAEnD,OAAO,MAAM,OAAO,UAAU,CAAC;EAE/B,MAAM,UAAU,OAAO,MAAM,OAAO,UAAU;GAC5C,MAAM;GACN,cAAc,SAAS,SAAS,SAAS,gBAAgB;GACzD;GACA,WAAW;EACb,CAAC;EAED,OAAO,MAAM,OAAO,OAAO,gBAAgB,GAAG,CAAC;EAE/C,MAAM,cAAc,OAAO,MACxB,OACC,UACA;GACE,MAAM;GACN,kBAAkB;GAClB,eAAe,SAAS;GACxB,cAAc;GACd,WAAW;EACb,GACA,CACF,CAAC,CACA,KAAK,OAAO,MAAM;EAErB,OAAO,OACL,OAAO,UAAU,WAAW,KAAK,YAAY,QAAQ,SAAS,yBAC9D,4CACF;EACA,OAAO,QACJ,OAAO,MAAM,IAAI,QAAQ,EAAA,EAAI,YAAY,QAAQ,SAClD,+CACF;CACF,CAAC,CA2JH;CAxJoB,gBACpB,uEACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EAErB,KAAK,MAAM,QAAQ;GAAC;GAAS;GAAS;EAAO,GAAG,OAAO,MAAM,OAAO,OAAO,IAAI,GAAG,EAAE;EACpF,MAAM,QAAQ,OAAO,MAAM,IAAI,KAAK,CAAC;EACrC,MAAM,SAAS,OAAO,MAAM,IAAI,KAAK,GAAG,KAAA,GAAW,MAAM,EAAE;EAC3D,MAAM,QAAQ,OAAO,MAAM,IAAI,KAAK,GAAG,KAAA,GAAW,OAAO,EAAE;EAE3D,OAAO,OACL,MAAM,EAAE,EAAE,eAAe,GAAG,OAAO,KACjC,OAAO,EAAE,EAAE,eAAe,GAAG,OAAO,KACpC,MAAM,EAAE,EAAE,eAAe,GAAG,OAAO,GACrC,qCACF;EACA,OAAO,QACJ,OAAO,MAAM,IAAI,KAAK,GAAG,KAAA,GAAW,MAAM,EAAE,EAAA,CAAG,WAAW,GAC3D,8BACF;CACF,CAAC,CAoIH;CAjIwB,gBACxB,8EACC,WACC,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO;EAErB,MAAM,kBAAkB,OAAO,eAAe;EAE9C,OAAO,MAAM,OAAO,iBAAiB,EAAE;EAEvC,MAAM,SAAS,OAAO,MAAM,OAAO,IAAI,eAAe,GAAG;GACvD,MAAM;GACN,kBAAkB;GAClB,eAAe;IACb,GAAG,gBAAgB;IACnB,QAAQ;KAAE,MAAM;KAAM,UAAU;IAAI;IACpC,OAAO,EAAE,OAAO,wBAAwB;GAC1C;GACA,cAAc;GACd,WAAW;EACb,CAAC;EAED,MAAM,gBAAgB,cAAc,eAAe,CAAC,CAAC,SAAS;EAE9D,IAAI,kBAAkB,KAAA,GACpB,OAAO,OAAO,kCAAkC,KAAK;GACnD,UAAU;GACV,SAAS;EACX,CAAC;EAGH,MAAM,eAAe,OAAO,MACzB,OAAO,IAAI,eAAe,GAAG;GAC5B,MAAM;GACN,kBAAkB;GAClB,gBAAgB;GAChB,UAAU;GACV,cAAc;GACd,cAAc;GACd,WAAW;EACb,CAAC,CAAC,CACD,KAAK,OAAO,MAAM;EAErB,OAAO,OACL,OAAO,UAAU,YAAY,KAAK,aAAa,QAAQ,SAAS,oBAChE,oCACF;EACA,OAAO,OACL,KAAK,UAAU,OAAO,MAAM,IAAI,IAAI,eAAe,CAAC,CAAC,MAAM,KAAK,UAAU,MAAM,GAChF,6CACF;EAEA,MAAM,SAAS,cAAc,gBAAgB;EAE7C,OAAO,MAAM,OAAO,QAAQ,EAAE;EAC9B,MAAM,iBAAiB,KAAK,UAAU,OAAO,SAAS,QAAQ;EAE9D,MAAM,iBAAiB,OAAO,MAAM,OAAO,IAAI,gBAAgB,GAAG;GAChE,MAAM;GACN,kBAAkB;GAClB,eAAe;IACb,GAAG,OAAO;IACV,QAAQ;KAAE,MAAM;KAAM,UAAU;IAAI;IACpC,OAAO,EAAE,OAAO,oBAAoB;GACtC;GACA,cAAc;GACd,WAAW;EACb,CAAC;EAED,OAAO,OACL,KAAK,UAAU,eAAe,SAAS,QAAQ,MAAM,gBACrD,0DACF;EAEA,MAAM,oBAAoB,cAAc,eAAe;EAEvD,OAAO,MAAM,OAAO,mBAAmB,EAAE;EACzC,MAAM,eAAe,kBAAkB,SAAS,SAAS;EAEzD,IAAI,iBAAiB,KAAA,GACnB,OAAO,OAAO,kCAAkC,KAAK;GACnD,UAAU;GACV,SAAS;EACX,CAAC;EAGH,MAAM,YAAY,OAAO,MAAM,OAAO,IAAI,eAAe,GAAG;GAC1D,MAAM;GACN;GACA;GACA,WAAW;EACb,CAAC;EAED,MAAM,eAAe,OAAO,MACzB,OAAO,IAAI,eAAe,GAAG;GAC5B,MAAM;GACN,kBAAkB;GAClB,iBAAiB;GACjB,QAAQ;GACR,cAAc;GACd,WAAW;GACX,cAAc;EAChB,CAAC,CAAC,CACD,KAAK,OAAO,MAAM;EAErB,OAAO,OACL,OAAO,UAAU,YAAY,KAAK,aAAa,QAAQ,SAAS,oBAChE,gCACF;EACA,MAAM,eAAe,OAAO,MAAM,IAAI,IAAI,eAAe,CAAC;EAE1D,OAAO,OACL,cAAc,iBAAiB,MAC/B,4CACF;EACA,OAAO,OACL,cAAc,YAAY,UAAU,WAAW,aAAa,gBAAgB,MAC5E,uCACF;CACF,CAAC,CAWH;AACF"}
@@ -0,0 +1,24 @@
1
+ import { C as ScheduleRecord, a as ScheduleChange, m as ScheduleKey, s as ScheduleConflict, y as ScheduleOwner } from "../Schedule-CVNtnIpG.mjs";
2
+ import { Result } from "effect";
3
+ declare namespace ScheduleTransition_d_exports {
4
+ export { applyScheduleChange, compareScheduleKeys, compareScheduleNames, scheduleDeadline, scheduleKeyOf, scheduleKeyString, scheduleOwnerKey, scheduleUsesCapacity };
5
+ }
6
+ export declare const scheduleOwnerKey: (owner: ScheduleOwner) => string;
7
+ export declare const scheduleKeyString: (key: ScheduleKey) => string;
8
+ /** Locale-independent Unicode scalar ordering, matching UTF-8/BINARY order for valid text. */
9
+ export declare const compareScheduleNames: (left: string, right: string) => number;
10
+ export declare const compareScheduleKeys: (left: ScheduleKey, right: ScheduleKey) => number;
11
+ export declare const scheduleKeyOf: (record: ScheduleRecord) => ScheduleKey;
12
+ /** Pending recovery always outranks preparation, even after pause or cancellation. */
13
+ export declare const scheduleDeadline: (record: ScheduleRecord) => number | null;
14
+ /** Paused work reserves capacity; terminal replay evidence does not. */
15
+ export declare const scheduleUsesCapacity: (record: ScheduleRecord) => boolean;
16
+ /**
17
+ * The adapter-neutral local transaction reducer. Adapters call it only after decoding the row and
18
+ * command. A stale delivery completion returns the original record without changing even bounded
19
+ * status or the CAS version.
20
+ */
21
+ export declare const applyScheduleChange: (record: ScheduleRecord, change: ScheduleChange) => Result.Result<ScheduleRecord, ScheduleConflict>;
22
+ //#endregion
23
+ export { ScheduleTransition_d_exports as t };
24
+ //# sourceMappingURL=ScheduleTransition.d.mts.map