effect-agent 0.1.0-beta.12 → 0.1.0-beta.121

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 (553) hide show
  1. package/dist/Agent-1DMSO_Fl.mjs +86 -0
  2. package/dist/Agent-1DMSO_Fl.mjs.map +1 -0
  3. package/dist/Agent-D9cXqfF3.d.mts +252 -0
  4. package/dist/AgentError-Bn1ytXRD.d.mts +117 -0
  5. package/dist/AgentPolicy-BqDoSXO6.d.mts +96 -0
  6. package/dist/AgentRuntime-BUxDdLpw.d.mts +346 -0
  7. package/dist/AgentRuntime-Cp1hAb-W.mjs +4739 -0
  8. package/dist/AgentRuntime-Cp1hAb-W.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-B-9w7jDt.mjs +7061 -0
  13. package/dist/DurableAgentRuntime-B-9w7jDt.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Cnr3wx1L.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/EventSource-CnlZ3Kma.d.mts +51 -0
  17. package/dist/FailureDiagnostic-BElLOoED.mjs +274 -0
  18. package/dist/FailureDiagnostic-BElLOoED.mjs.map +1 -0
  19. package/dist/FailureDiagnostic-CaAkzGHL.d.mts +223 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/InMemory.d.mts +24 -0
  22. package/dist/InMemory.mjs +24 -0
  23. package/dist/InMemory.mjs.map +1 -0
  24. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  25. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  26. package/dist/Messaging-Dkg87ebg.d.mts +221 -0
  27. package/dist/Messaging-JYYN3oYS.d.mts +1067 -0
  28. package/dist/MessagingHost-CqzpxbGz.d.mts +74 -0
  29. package/dist/MessagingHost-DfsbMPvq.mjs +110 -0
  30. package/dist/MessagingHost-DfsbMPvq.mjs.map +1 -0
  31. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  32. package/dist/Output-V-6YL1_Z.d.mts +25 -0
  33. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  34. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  35. package/dist/PreparedInputAdmission-BQLGldl-.d.mts +42 -0
  36. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  37. package/dist/Records-D88mgvyS.d.mts +4214 -0
  38. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  39. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  40. package/dist/RunJournal-BXrq0VIK.mjs +931 -0
  41. package/dist/RunJournal-BXrq0VIK.mjs.map +1 -0
  42. package/dist/RunOptions-CSBsSj0X.d.mts +935 -0
  43. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  44. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  45. package/dist/Schedule-BIOHA6RR.d.mts +847 -0
  46. package/dist/Scheduling-DPb2QyAK.mjs +691 -0
  47. package/dist/Scheduling-DPb2QyAK.mjs.map +1 -0
  48. package/dist/Subagent-CNik9RiA.d.mts +1635 -0
  49. package/dist/Subagent-DCrB7an7.mjs +1498 -0
  50. package/dist/Subagent-DCrB7an7.mjs.map +1 -0
  51. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  52. package/dist/SubagentHost-4WB8Hj0C.d.mts +164 -0
  53. package/dist/Subscription-CRteOKRf.d.mts +948 -0
  54. package/dist/SubscriptionInput-oNcwTPti.d.mts +41 -0
  55. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  56. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  57. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  58. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  59. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  60. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  61. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  62. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  63. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  64. package/dist/ToolExposure.d.mts +8 -0
  65. package/dist/ToolExposure.mjs +21 -0
  66. package/dist/ToolExposure.mjs.map +1 -0
  67. package/dist/ToolReconciler-BmVRAHKs.d.mts +80 -0
  68. package/dist/ToolResult-BKdqWRff.d.mts +78 -0
  69. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  70. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  71. package/dist/Worker-CfwzMZEK.mjs +271 -0
  72. package/dist/Worker-CfwzMZEK.mjs.map +1 -0
  73. package/dist/Worker-fwWkBg12.d.mts +472 -0
  74. package/dist/agent-registration-CKNsrpwo.mjs +201 -0
  75. package/dist/agent-registration-CKNsrpwo.mjs.map +1 -0
  76. package/dist/capabilities/Approval.d.mts +114 -0
  77. package/dist/capabilities/Approval.mjs +226 -0
  78. package/dist/capabilities/Approval.mjs.map +1 -0
  79. package/dist/capabilities/Budget.d.mts +112 -0
  80. package/dist/capabilities/Budget.mjs +346 -0
  81. package/dist/capabilities/Budget.mjs.map +1 -0
  82. package/dist/capabilities/CodeMode.d.mts +157 -0
  83. package/dist/capabilities/CodeMode.mjs +522 -0
  84. package/dist/capabilities/CodeMode.mjs.map +1 -0
  85. package/dist/capabilities/Commands.d.mts +55 -0
  86. package/dist/capabilities/Commands.mjs +57 -0
  87. package/dist/capabilities/Commands.mjs.map +1 -0
  88. package/dist/capabilities/ContextTools.d.mts +321 -0
  89. package/dist/capabilities/ContextTools.mjs +126 -0
  90. package/dist/capabilities/ContextTools.mjs.map +1 -0
  91. package/dist/capabilities/Mcp.d.mts +108 -0
  92. package/dist/capabilities/Mcp.mjs +259 -0
  93. package/dist/capabilities/Mcp.mjs.map +1 -0
  94. package/dist/capabilities/McpClient.d.mts +115 -0
  95. package/dist/capabilities/McpClient.mjs +506 -0
  96. package/dist/capabilities/McpClient.mjs.map +1 -0
  97. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  98. package/dist/capabilities/MemoryNotes.mjs +128 -0
  99. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  100. package/dist/capabilities/Messaging.d.mts +3 -0
  101. package/dist/capabilities/Messaging.mjs +152 -0
  102. package/dist/capabilities/Messaging.mjs.map +1 -0
  103. package/dist/capabilities/ModelContext.d.mts +89 -0
  104. package/dist/capabilities/ModelContext.mjs +168 -0
  105. package/dist/capabilities/ModelContext.mjs.map +1 -0
  106. package/dist/capabilities/Redaction.d.mts +37 -0
  107. package/dist/capabilities/Redaction.mjs +104 -0
  108. package/dist/capabilities/Redaction.mjs.map +1 -0
  109. package/dist/capabilities/Remembering.d.mts +434 -0
  110. package/dist/capabilities/Remembering.mjs +290 -0
  111. package/dist/capabilities/Remembering.mjs.map +1 -0
  112. package/dist/capabilities/RunHooks.d.mts +82 -0
  113. package/dist/capabilities/RunHooks.mjs +144 -0
  114. package/dist/capabilities/RunHooks.mjs.map +1 -0
  115. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  116. package/dist/capabilities/SemanticMemory.mjs +315 -0
  117. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  118. package/dist/capabilities/Subagent.d.mts +4 -0
  119. package/dist/capabilities/Subagent.mjs +5 -0
  120. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  121. package/dist/capabilities/SubagentReservations.mjs +479 -0
  122. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  123. package/dist/capabilities/ToolDiscovery.d.mts +124 -0
  124. package/dist/capabilities/ToolDiscovery.mjs +230 -0
  125. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  126. package/dist/capabilities/WebCapture.d.mts +163 -0
  127. package/dist/capabilities/WebCapture.mjs +335 -0
  128. package/dist/capabilities/WebCapture.mjs.map +1 -0
  129. package/dist/capabilities/WebSearch.d.mts +71 -0
  130. package/dist/capabilities/WebSearch.mjs +115 -0
  131. package/dist/capabilities/WebSearch.mjs.map +1 -0
  132. package/dist/compaction-C2OTceKw.mjs +505 -0
  133. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  134. package/dist/core/Agent.d.mts +2 -0
  135. package/dist/core/Agent.mjs +2 -0
  136. package/dist/core/AgentError.d.mts +2 -0
  137. package/dist/core/AgentError.mjs +134 -0
  138. package/dist/core/AgentError.mjs.map +1 -0
  139. package/dist/core/AgentPolicy.d.mts +2 -0
  140. package/dist/core/AgentPolicy.mjs +94 -0
  141. package/dist/core/AgentPolicy.mjs.map +1 -0
  142. package/dist/core/AgentUpdates.d.mts +2 -0
  143. package/dist/core/AgentUpdates.mjs +63 -0
  144. package/dist/core/AgentUpdates.mjs.map +1 -0
  145. package/dist/core/FailureDiagnostic.d.mts +2 -0
  146. package/dist/core/FailureDiagnostic.mjs +2 -0
  147. package/dist/core/IdGenerator.d.mts +26 -0
  148. package/dist/core/IdGenerator.mjs +27 -0
  149. package/dist/core/IdGenerator.mjs.map +1 -0
  150. package/dist/core/Identifiers.d.mts +2 -0
  151. package/dist/core/Identifiers.mjs +43 -0
  152. package/dist/core/Identifiers.mjs.map +1 -0
  153. package/dist/core/Memory.d.mts +57 -0
  154. package/dist/core/Memory.mjs +203 -0
  155. package/dist/core/Memory.mjs.map +1 -0
  156. package/dist/core/MemoryNamespace.d.mts +2 -0
  157. package/dist/core/MemoryNamespace.mjs +116 -0
  158. package/dist/core/MemoryNamespace.mjs.map +1 -0
  159. package/dist/core/MemoryReference.d.mts +2 -0
  160. package/dist/core/MemoryReference.mjs +109 -0
  161. package/dist/core/MemoryReference.mjs.map +1 -0
  162. package/dist/core/MemoryRevalidation.d.mts +65 -0
  163. package/dist/core/MemoryRevalidation.mjs +126 -0
  164. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  165. package/dist/core/MemoryStore.d.mts +186 -0
  166. package/dist/core/MemoryStore.mjs +243 -0
  167. package/dist/core/MemoryStore.mjs.map +1 -0
  168. package/dist/core/Receipt.d.mts +2 -0
  169. package/dist/core/Receipt.mjs +36 -0
  170. package/dist/core/Receipt.mjs.map +1 -0
  171. package/dist/core/RememberingStore.d.mts +1562 -0
  172. package/dist/core/RememberingStore.mjs +190 -0
  173. package/dist/core/RememberingStore.mjs.map +1 -0
  174. package/dist/core/RunEvent.d.mts +2 -0
  175. package/dist/core/RunEvent.mjs +337 -0
  176. package/dist/core/RunEvent.mjs.map +1 -0
  177. package/dist/core/RunPolicyUsage.d.mts +2 -0
  178. package/dist/core/RunPolicyUsage.mjs +21 -0
  179. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  180. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  181. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  182. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  183. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  184. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  185. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  186. package/dist/core/SubagentContract.d.mts +2 -0
  187. package/dist/core/SubagentContract.mjs +148 -0
  188. package/dist/core/SubagentContract.mjs.map +1 -0
  189. package/dist/core/Thread.d.mts +2 -0
  190. package/dist/core/Thread.mjs +250 -0
  191. package/dist/core/Thread.mjs.map +1 -0
  192. package/dist/core/ToolResult.d.mts +2 -0
  193. package/dist/core/ToolResult.mjs +156 -0
  194. package/dist/core/ToolResult.mjs.map +1 -0
  195. package/dist/core/Usage.d.mts +2 -0
  196. package/dist/core/Usage.mjs +319 -0
  197. package/dist/core/Usage.mjs.map +1 -0
  198. package/dist/core/Worker.d.mts +3 -0
  199. package/dist/core/Worker.mjs +3 -0
  200. package/dist/durable/ActivityStore.d.mts +116 -0
  201. package/dist/durable/ActivityStore.mjs +131 -0
  202. package/dist/durable/ActivityStore.mjs.map +1 -0
  203. package/dist/durable/Admin.d.mts +2 -0
  204. package/dist/durable/Admin.mjs +330 -0
  205. package/dist/durable/Admin.mjs.map +1 -0
  206. package/dist/durable/AgentRegistration.d.mts +2 -0
  207. package/dist/durable/AgentRegistration.mjs +14 -0
  208. package/dist/durable/AgentRegistration.mjs.map +1 -0
  209. package/dist/durable/Certification.d.mts +110 -0
  210. package/dist/durable/Certification.mjs +159 -0
  211. package/dist/durable/Certification.mjs.map +1 -0
  212. package/dist/durable/CommittedActivity.d.mts +62 -0
  213. package/dist/durable/CommittedActivity.mjs +159 -0
  214. package/dist/durable/CommittedActivity.mjs.map +1 -0
  215. package/dist/durable/Digest.d.mts +2 -0
  216. package/dist/durable/Digest.mjs +50 -0
  217. package/dist/durable/Digest.mjs.map +1 -0
  218. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  219. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  220. package/dist/durable/DurableFailpoint.d.mts +2 -0
  221. package/dist/durable/DurableFailpoint.mjs +102 -0
  222. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  223. package/dist/durable/DurableFailpointTestControl.d.mts +14 -0
  224. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  225. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  226. package/dist/durable/EventSource.d.mts +2 -0
  227. package/dist/durable/EventSource.mjs +65 -0
  228. package/dist/durable/EventSource.mjs.map +1 -0
  229. package/dist/durable/GitHubWorkflowSource.d.mts +185 -0
  230. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  231. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  232. package/dist/durable/MessageDelivery.d.mts +893 -0
  233. package/dist/durable/MessageDelivery.mjs +557 -0
  234. package/dist/durable/MessageDelivery.mjs.map +1 -0
  235. package/dist/durable/MessageDeliveryStoreConformance.d.mts +378 -0
  236. package/dist/durable/MessageDeliveryStoreConformance.mjs +270 -0
  237. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  238. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  239. package/dist/durable/OperationAuthorizer.mjs +70 -0
  240. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  241. package/dist/durable/PersistentHistory.d.mts +16 -0
  242. package/dist/durable/PersistentHistory.mjs +125 -0
  243. package/dist/durable/PersistentHistory.mjs.map +1 -0
  244. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  245. package/dist/durable/PreparedInputAdmission.mjs +38 -0
  246. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  247. package/dist/durable/Records.d.mts +2 -0
  248. package/dist/durable/Records.mjs +848 -0
  249. package/dist/durable/Records.mjs.map +1 -0
  250. package/dist/durable/Recovery.d.mts +2 -0
  251. package/dist/durable/Recovery.mjs +739 -0
  252. package/dist/durable/Recovery.mjs.map +1 -0
  253. package/dist/durable/RunJournal.d.mts +2 -0
  254. package/dist/durable/RunJournal.mjs +2 -0
  255. package/dist/durable/Schedule.d.mts +2 -0
  256. package/dist/durable/Schedule.mjs +391 -0
  257. package/dist/durable/Schedule.mjs.map +1 -0
  258. package/dist/durable/ScheduleStoreConformance.d.mts +17 -0
  259. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  260. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  261. package/dist/durable/ScheduleTransition.d.mts +24 -0
  262. package/dist/durable/ScheduleTransition.mjs +180 -0
  263. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  264. package/dist/durable/Scheduling.d.mts +54 -0
  265. package/dist/durable/Scheduling.mjs +2 -0
  266. package/dist/durable/SqlMemoryStore.d.mts +29 -0
  267. package/dist/durable/SqlMemoryStore.mjs +436 -0
  268. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  269. package/dist/durable/SqlMessageDeliveryStore.d.mts +42 -0
  270. package/dist/durable/SqlMessageDeliveryStore.mjs +179 -0
  271. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  272. package/dist/durable/SqlStorageV2Upgrade.d.mts +21 -0
  273. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  274. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  275. package/dist/durable/SqlSubscriptionStore.d.mts +62 -0
  276. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  277. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  278. package/dist/durable/SqlThreadNativeReads.d.mts +53 -0
  279. package/dist/durable/SqlThreadNativeReads.mjs +159 -0
  280. package/dist/durable/SqlThreadNativeReads.mjs.map +1 -0
  281. package/dist/durable/SubmissionLedger.d.mts +3 -0
  282. package/dist/durable/SubmissionLedger.mjs +959 -0
  283. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  284. package/dist/durable/SubmissionLedgerConformance.d.mts +29 -0
  285. package/dist/durable/SubmissionLedgerConformance.mjs +2187 -0
  286. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  287. package/dist/durable/SubmissionStatus.d.mts +2 -0
  288. package/dist/durable/SubmissionStatus.mjs +18 -0
  289. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  290. package/dist/durable/Subscription.d.mts +2 -0
  291. package/dist/durable/Subscription.mjs +360 -0
  292. package/dist/durable/Subscription.mjs.map +1 -0
  293. package/dist/durable/SubscriptionInput.d.mts +2 -0
  294. package/dist/durable/SubscriptionInput.mjs +52 -0
  295. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  296. package/dist/durable/SubscriptionStoreConformance.d.mts +16 -0
  297. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  298. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  299. package/dist/durable/SubscriptionTools.d.mts +273 -0
  300. package/dist/durable/SubscriptionTools.mjs +190 -0
  301. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  302. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  303. package/dist/durable/SubscriptionTransition.mjs +148 -0
  304. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  305. package/dist/durable/Subscriptions.d.mts +73 -0
  306. package/dist/durable/Subscriptions.mjs +627 -0
  307. package/dist/durable/Subscriptions.mjs.map +1 -0
  308. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  309. package/dist/durable/ThreadContextHistory.mjs +152 -0
  310. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  311. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  312. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  313. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  314. package/dist/durable/ThreadInvariants.d.mts +76 -0
  315. package/dist/durable/ThreadInvariants.mjs +246 -0
  316. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  317. package/dist/durable/ThreadProjection.d.mts +78 -0
  318. package/dist/durable/ThreadProjection.mjs +158 -0
  319. package/dist/durable/ThreadProjection.mjs.map +1 -0
  320. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  321. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  322. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  323. package/dist/durable/ThreadStore.d.mts +2 -0
  324. package/dist/durable/ThreadStore.mjs +355 -0
  325. package/dist/durable/ThreadStore.mjs.map +1 -0
  326. package/dist/durable/ThreadStoreConformance.d.mts +28 -0
  327. package/dist/durable/ThreadStoreConformance.mjs +503 -0
  328. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  329. package/dist/durable/ToolReconciler.d.mts +2 -0
  330. package/dist/durable/ToolReconciler.mjs +85 -0
  331. package/dist/durable/ToolReconciler.mjs.map +1 -0
  332. package/dist/durable/WakeScheduler.d.mts +2 -0
  333. package/dist/durable/WakeScheduler.mjs +85 -0
  334. package/dist/durable/WakeScheduler.mjs.map +1 -0
  335. package/dist/durable/WorkerHost.d.mts +129 -0
  336. package/dist/durable/WorkerHost.mjs +77 -0
  337. package/dist/durable/WorkerHost.mjs.map +1 -0
  338. package/dist/engine/AgentRuntime.d.mts +2 -0
  339. package/dist/engine/AgentRuntime.mjs +2 -0
  340. package/dist/engine/Compaction.d.mts +7 -0
  341. package/dist/engine/Compaction.mjs +16 -0
  342. package/dist/engine/Compaction.mjs.map +1 -0
  343. package/dist/engine/ContextCompactor.d.mts +2 -0
  344. package/dist/engine/ContextCompactor.mjs +119 -0
  345. package/dist/engine/ContextCompactor.mjs.map +1 -0
  346. package/dist/engine/ContextHistory.d.mts +65 -0
  347. package/dist/engine/ContextHistory.mjs +76 -0
  348. package/dist/engine/ContextHistory.mjs.map +1 -0
  349. package/dist/engine/ContextWindow.d.mts +2 -0
  350. package/dist/engine/ContextWindow.mjs +59 -0
  351. package/dist/engine/ContextWindow.mjs.map +1 -0
  352. package/dist/engine/DurableStep.d.mts +2 -0
  353. package/dist/engine/DurableStep.mjs +62 -0
  354. package/dist/engine/DurableStep.mjs.map +1 -0
  355. package/dist/engine/MessagingHost.d.mts +2 -0
  356. package/dist/engine/MessagingHost.mjs +2 -0
  357. package/dist/engine/Output.d.mts +2 -0
  358. package/dist/engine/Output.mjs +8 -0
  359. package/dist/engine/Output.mjs.map +1 -0
  360. package/dist/engine/RunEventSink.d.mts +2 -0
  361. package/dist/engine/RunEventSink.mjs +22 -0
  362. package/dist/engine/RunEventSink.mjs.map +1 -0
  363. package/dist/engine/RunOptions.d.mts +2 -0
  364. package/dist/engine/RunOptions.mjs +124 -0
  365. package/dist/engine/RunOptions.mjs.map +1 -0
  366. package/dist/engine/SubagentHost.d.mts +2 -0
  367. package/dist/engine/SubagentHost.mjs +76 -0
  368. package/dist/engine/SubagentHost.mjs.map +1 -0
  369. package/dist/engine/ThreadHistory.d.mts +2 -0
  370. package/dist/engine/ThreadHistory.mjs +67 -0
  371. package/dist/engine/ThreadHistory.mjs.map +1 -0
  372. package/dist/engine/ToolBroker.d.mts +2 -0
  373. package/dist/engine/ToolBroker.mjs +42 -0
  374. package/dist/engine/ToolBroker.mjs.map +1 -0
  375. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  376. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  377. package/dist/index.d.mts +91 -6
  378. package/dist/index.mjs +100 -6
  379. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  380. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  381. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  382. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  383. package/dist/sandbox/CodeExecutor.mjs +278 -0
  384. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  385. package/dist/sandbox/InteractiveBrowser.d.mts +257 -0
  386. package/dist/sandbox/InteractiveBrowser.mjs +236 -0
  387. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  388. package/dist/sandbox/PageCapture.d.mts +2 -0
  389. package/dist/sandbox/PageCapture.mjs +450 -0
  390. package/dist/sandbox/PageCapture.mjs.map +1 -0
  391. package/dist/sandbox/PageCrawl.d.mts +88 -0
  392. package/dist/sandbox/PageCrawl.mjs +124 -0
  393. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  394. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  395. package/dist/sandbox/PageScreenshot.mjs +53 -0
  396. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  397. package/dist/sandbox/ProtectedBrowser.d.mts +283 -0
  398. package/dist/sandbox/ProtectedBrowser.mjs +298 -0
  399. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  400. package/dist/sandbox/Sandbox.d.mts +2 -0
  401. package/dist/sandbox/Sandbox.mjs +208 -0
  402. package/dist/sandbox/Sandbox.mjs.map +1 -0
  403. package/dist/utf8-BYfhEkcj.mjs +11 -0
  404. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  405. package/dist/utf8-DchGZRBd.mjs +23 -0
  406. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  407. package/package.json +1 -40
  408. package/src/InMemory.ts +19 -0
  409. package/src/ToolExposure.ts +2 -0
  410. package/src/capabilities/Approval.ts +352 -0
  411. package/src/capabilities/Budget.ts +536 -0
  412. package/src/capabilities/CodeMode.ts +1090 -0
  413. package/src/capabilities/Commands.ts +86 -0
  414. package/src/capabilities/ContextTools.ts +184 -0
  415. package/src/capabilities/Mcp.ts +426 -0
  416. package/src/capabilities/McpClient.ts +967 -0
  417. package/src/capabilities/MemoryNotes.ts +174 -0
  418. package/src/capabilities/Messaging.ts +261 -0
  419. package/src/capabilities/ModelContext.ts +354 -0
  420. package/src/capabilities/Redaction.ts +157 -0
  421. package/src/capabilities/Remembering.ts +550 -0
  422. package/src/capabilities/RunHooks.ts +280 -0
  423. package/src/capabilities/SemanticMemory.ts +447 -0
  424. package/src/capabilities/Subagent.ts +2489 -0
  425. package/src/capabilities/SubagentReservations.ts +850 -0
  426. package/src/capabilities/ToolDiscovery.ts +369 -0
  427. package/src/capabilities/WebCapture.ts +722 -0
  428. package/src/capabilities/WebSearch.ts +190 -0
  429. package/src/capabilities/internal/subagent-background.ts +1273 -0
  430. package/src/capabilities/internal/subagent-contract.ts +146 -0
  431. package/src/capabilities/internal/subagent-policy.ts +235 -0
  432. package/src/capabilities/internal/subagent-reporting.ts +136 -0
  433. package/src/capabilities/internal/utf8.ts +10 -0
  434. package/src/core/Agent.ts +602 -0
  435. package/src/core/AgentError.ts +172 -0
  436. package/src/core/AgentPolicy.ts +153 -0
  437. package/src/core/AgentUpdates.ts +100 -0
  438. package/src/core/FailureDiagnostic.ts +343 -0
  439. package/src/core/IdGenerator.ts +39 -0
  440. package/src/core/Identifiers.ts +48 -0
  441. package/src/core/Memory.ts +290 -0
  442. package/src/core/MemoryNamespace.ts +196 -0
  443. package/src/core/MemoryReference.ts +121 -0
  444. package/src/core/MemoryRevalidation.ts +185 -0
  445. package/src/core/MemoryStore.ts +368 -0
  446. package/src/core/Messaging.ts +72 -0
  447. package/src/core/Receipt.ts +42 -0
  448. package/src/core/RememberingStore.ts +300 -0
  449. package/src/core/RunEvent.ts +366 -0
  450. package/src/core/RunPolicyUsage.ts +17 -0
  451. package/src/core/SemanticMemoryIndex.ts +250 -0
  452. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  453. package/src/core/SubagentContract.ts +196 -0
  454. package/src/core/Thread.ts +371 -0
  455. package/src/core/ToolExposure.ts +74 -0
  456. package/src/core/ToolResult.ts +190 -0
  457. package/src/core/Usage.ts +529 -0
  458. package/src/core/Worker.ts +240 -0
  459. package/src/core/internal/agent-updates.ts +34 -0
  460. package/src/core/internal/message-status.ts +60 -0
  461. package/src/core/internal/strict-schema.ts +14 -0
  462. package/src/core/internal/utf8.ts +23 -0
  463. package/src/durable/ActivityStore.ts +160 -0
  464. package/src/durable/Admin.ts +505 -0
  465. package/src/durable/AgentRegistration.ts +14 -0
  466. package/src/durable/Certification.ts +210 -0
  467. package/src/durable/CommittedActivity.ts +296 -0
  468. package/src/durable/Digest.ts +87 -0
  469. package/src/durable/DurableAgentRuntime.ts +11275 -0
  470. package/src/durable/DurableFailpoint.ts +111 -0
  471. package/src/durable/DurableFailpointTestControl.ts +39 -0
  472. package/src/durable/EventSource.ts +172 -0
  473. package/src/durable/GitHubWorkflowSource.ts +447 -0
  474. package/src/durable/MessageDelivery.ts +832 -0
  475. package/src/durable/MessageDeliveryStoreConformance.ts +410 -0
  476. package/src/durable/OperationAuthorizer.ts +85 -0
  477. package/src/durable/PersistentHistory.ts +260 -0
  478. package/src/durable/PreparedInputAdmission.ts +57 -0
  479. package/src/durable/Records.ts +1075 -0
  480. package/src/durable/Recovery.ts +1018 -0
  481. package/src/durable/RunJournal.ts +1631 -0
  482. package/src/durable/Schedule.ts +513 -0
  483. package/src/durable/ScheduleStoreConformance.ts +638 -0
  484. package/src/durable/ScheduleTransition.ts +265 -0
  485. package/src/durable/Scheduling.ts +1077 -0
  486. package/src/durable/SqlMemoryStore.ts +778 -0
  487. package/src/durable/SqlMessageDeliveryStore.ts +335 -0
  488. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  489. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  490. package/src/durable/SqlThreadNativeReads.ts +270 -0
  491. package/src/durable/SubmissionLedger.ts +1265 -0
  492. package/src/durable/SubmissionLedgerConformance.ts +4820 -0
  493. package/src/durable/SubmissionStatus.ts +14 -0
  494. package/src/durable/Subscription.ts +544 -0
  495. package/src/durable/SubscriptionInput.ts +144 -0
  496. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  497. package/src/durable/SubscriptionTools.ts +327 -0
  498. package/src/durable/SubscriptionTransition.ts +302 -0
  499. package/src/durable/Subscriptions.ts +1210 -0
  500. package/src/durable/ThreadContextHistory.ts +227 -0
  501. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  502. package/src/durable/ThreadInvariants.ts +507 -0
  503. package/src/durable/ThreadProjection.ts +269 -0
  504. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  505. package/src/durable/ThreadStore.ts +573 -0
  506. package/src/durable/ThreadStoreConformance.ts +1156 -0
  507. package/src/durable/ToolReconciler.ts +109 -0
  508. package/src/durable/WakeScheduler.ts +134 -0
  509. package/src/durable/WorkerHost.ts +171 -0
  510. package/src/durable/internal/agent-registration.ts +587 -0
  511. package/src/durable/internal/agent-updates.ts +302 -0
  512. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  513. package/src/durable/internal/journal-checkpoint.ts +104 -0
  514. package/src/durable/internal/journal-metadata.ts +117 -0
  515. package/src/durable/internal/message-status.ts +20 -0
  516. package/src/durable/internal/messaging-host.ts +637 -0
  517. package/src/durable/internal/schedule-time.ts +303 -0
  518. package/src/durable/internal/storage-v2-layout.ts +163 -0
  519. package/src/durable/internal/storage-v2.ts +73 -0
  520. package/src/durable/internal/worker-host.ts +2885 -0
  521. package/src/durable/internal/worker-runtime.ts +9 -0
  522. package/src/engine/AgentRuntime.ts +37 -0
  523. package/src/engine/Compaction.ts +11 -0
  524. package/src/engine/ContextCompactor.ts +277 -0
  525. package/src/engine/ContextHistory.ts +73 -0
  526. package/src/engine/ContextWindow.ts +72 -0
  527. package/src/engine/DurableStep.ts +132 -0
  528. package/src/engine/MessagingHost.ts +110 -0
  529. package/src/engine/Output.ts +2 -0
  530. package/src/engine/RunEventSink.ts +132 -0
  531. package/src/engine/RunOptions.ts +1101 -0
  532. package/src/engine/SubagentHost.ts +230 -0
  533. package/src/engine/ThreadHistory.ts +120 -0
  534. package/src/engine/ToolBroker.ts +157 -0
  535. package/src/engine/ToolExposure.ts +48 -0
  536. package/src/engine/internal/agent-runtime.ts +10500 -0
  537. package/src/engine/internal/bounded-value.ts +315 -0
  538. package/src/engine/internal/compaction.ts +678 -0
  539. package/src/engine/internal/error-diagnostic.ts +39 -0
  540. package/src/engine/internal/output-contract.ts +173 -0
  541. package/src/engine/internal/primitive-delta.ts +80 -0
  542. package/src/engine/internal/provider-result-staging.ts +211 -0
  543. package/src/engine/internal/tool-derivative.ts +106 -0
  544. package/src/engine/internal/tool-exposure.ts +224 -0
  545. package/src/engine/internal/tool-telemetry.ts +484 -0
  546. package/src/index.ts +99 -21
  547. package/src/sandbox/CodeExecutor.ts +352 -0
  548. package/src/sandbox/InteractiveBrowser.ts +339 -0
  549. package/src/sandbox/PageCapture.ts +691 -0
  550. package/src/sandbox/PageCrawl.ts +148 -0
  551. package/src/sandbox/PageScreenshot.ts +81 -0
  552. package/src/sandbox/ProtectedBrowser.ts +452 -0
  553. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,557 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { AgentId, DelegationId, ThreadId } from "../core/Identifiers.mjs";
3
+ import { IdempotencyKey, Receipt } from "../core/Receipt.mjs";
4
+ import { o as Value, r as Diagnostic, s as capture } from "../FailureDiagnostic-BElLOoED.mjs";
5
+ import { b as WorkerUpdate } from "../Worker-CfwzMZEK.mjs";
6
+ import { Digest } from "./Records.mjs";
7
+ import { Settlement } from "./SubmissionLedger.mjs";
8
+ import { digestJson } from "./Digest.mjs";
9
+ import { ScheduleInstant, ScheduleRetry, ScheduleRetryReason } from "./Schedule.mjs";
10
+ import { PreparedInputAdmission, admitPreparedInput } from "./PreparedInputAdmission.mjs";
11
+ import { PreparedInput } from "./Subscription.mjs";
12
+ import { Clock, Context, Crypto, Effect, Layer, Result, Schema, Semaphore } from "effect";
13
+ //#region src/durable/MessageDelivery.ts
14
+ var MessageDelivery_exports = /* @__PURE__ */ __exportAll({
15
+ MessageDeliveryChange: () => MessageDeliveryChange,
16
+ MessageDeliveryDriver: () => MessageDeliveryDriver,
17
+ MessageDeliveryDriverLimits: () => MessageDeliveryDriverLimits,
18
+ MessageDeliveryError: () => MessageDeliveryError,
19
+ MessageDeliveryFailpoint: () => MessageDeliveryFailpoint,
20
+ MessageDeliveryFailpointError: () => MessageDeliveryFailpointError,
21
+ MessageDeliveryKey: () => MessageDeliveryKey,
22
+ MessageDeliveryPage: () => MessageDeliveryPage,
23
+ MessageDeliveryPageRequest: () => MessageDeliveryPageRequest,
24
+ MessageDeliveryPolicy: () => MessageDeliveryPolicy,
25
+ MessageDeliveryRecord: () => MessageDeliveryRecord,
26
+ MessageDeliveryStore: () => MessageDeliveryStore,
27
+ MessageDeliveryStoreLimits: () => MessageDeliveryStoreLimits,
28
+ applyMessageDeliveryChange: () => applyMessageDeliveryChange,
29
+ defaultMessageDeliveryPolicy: () => defaultMessageDeliveryPolicy,
30
+ defaultMessageDeliveryStoreLimits: () => defaultMessageDeliveryStoreLimits,
31
+ isWorkerUpdateDelivery: () => isWorkerUpdateDelivery,
32
+ messageDeliveryCapacity: () => messageDeliveryCapacity,
33
+ messageDeliveryDeadline: () => messageDeliveryDeadline,
34
+ messageDeliveryKeyString: () => messageDeliveryKeyString,
35
+ messageDeliveryUsesCapacity: () => messageDeliveryUsesCapacity,
36
+ prepareMessageDelivery: () => prepareMessageDelivery,
37
+ readPending: () => readPending,
38
+ sameMessageDeliveryIdentity: () => sameMessageDeliveryIdentity,
39
+ validateMessageDelivery: () => validateMessageDelivery
40
+ });
41
+ const Positive = Schema.Int.check(Schema.isGreaterThan(0));
42
+ const BoundedName = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256));
43
+ /** An owner is always a source Thread. Destination admission has its own frozen key. */
44
+ const MessageDeliveryKey = Schema.Struct({
45
+ ownerThreadId: ThreadId,
46
+ messageId: IdempotencyKey
47
+ });
48
+ const MessageDeliveryPolicy = Schema.Struct({
49
+ maxAutomaticAttempts: Positive.check(Schema.isLessThanOrEqualTo(100)),
50
+ attemptTimeoutMillis: Positive.check(Schema.isLessThanOrEqualTo(3e5)),
51
+ retryBaseMillis: Positive,
52
+ retryMaxMillis: Positive,
53
+ settlementPollMillis: Positive
54
+ }).check(Schema.makeFilter((value) => value.retryBaseMillis <= value.retryMaxMillis));
55
+ const defaultMessageDeliveryPolicy = {
56
+ maxAutomaticAttempts: 8,
57
+ attemptTimeoutMillis: 3e4,
58
+ retryBaseMillis: 1e3,
59
+ retryMaxMillis: 6e4,
60
+ settlementPollMillis: 5e3
61
+ };
62
+ const MessageDeliveryStoreLimits = Schema.Struct({
63
+ maxPendingPerOwner: Positive,
64
+ maxRetainedPerOwner: Positive,
65
+ maxEnvelopeBytes: Positive,
66
+ /** Separate update capacity preserves the full ordinary allowance for terminal reports. */
67
+ maxPendingUpdatesPerOwner: Schema.optionalKey(Positive),
68
+ maxRetainedUpdatesPerOwner: Schema.optionalKey(Positive)
69
+ }).check(Schema.makeFilter((value) => value.maxPendingPerOwner <= value.maxRetainedPerOwner && (value.maxPendingUpdatesPerOwner ?? 32) <= (value.maxRetainedUpdatesPerOwner ?? 256)));
70
+ const defaultMessageDeliveryStoreLimits = {
71
+ maxPendingPerOwner: 100,
72
+ maxRetainedPerOwner: 1e3,
73
+ maxEnvelopeBytes: 262144,
74
+ maxPendingUpdatesPerOwner: 32,
75
+ maxRetainedUpdatesPerOwner: 256
76
+ };
77
+ const ParkReason = Schema.Literals([
78
+ "exhausted",
79
+ "deadline",
80
+ "status-unavailable"
81
+ ]);
82
+ const MessageDeliveryRecord = Schema.Struct({
83
+ schemaVersion: Schema.Literal(1),
84
+ key: MessageDeliveryKey,
85
+ envelope: PreparedInput,
86
+ envelopeDigest: Digest,
87
+ /** Same-owner predecessor whose admission must be known before this message is submitted. */
88
+ predecessor: Schema.optionalKey(IdempotencyKey),
89
+ createdAtMillis: ScheduleInstant,
90
+ /** Immutable creation identity; explicit recovery only renews deadlineAtMillis. */
91
+ initialDeadlineAtMillis: ScheduleInstant,
92
+ deadlineAtMillis: ScheduleInstant,
93
+ policy: MessageDeliveryPolicy,
94
+ version: Positive,
95
+ status: Schema.Literals([
96
+ "pending",
97
+ "accepted",
98
+ "processed",
99
+ "refused",
100
+ "parked"
101
+ ]),
102
+ receipt: Schema.NullOr(Receipt),
103
+ settlement: Schema.NullOr(Settlement),
104
+ refusal: Schema.NullOr(BoundedName),
105
+ parkReason: Schema.NullOr(ParkReason),
106
+ leaseUntilMillis: Schema.NullOr(ScheduleInstant),
107
+ retry: ScheduleRetry,
108
+ /** Last failed admission/status check, retained across retries and successful recovery. */
109
+ lastFailureDiagnostic: Schema.optionalKey(Diagnostic)
110
+ }).check(Schema.makeFilter((record) => record.deadlineAtMillis > record.createdAtMillis && record.initialDeadlineAtMillis > record.createdAtMillis && record.predecessor !== record.key.messageId && record.status === "processed" === (record.settlement !== null) && record.status === "refused" === (record.refusal !== null) && record.status === "parked" === (record.parkReason !== null) && record.status === "parked" === record.retry.parked && (record.status === "accepted" || record.status === "processed" ? record.receipt !== null : true) && (record.status === "pending" || record.status === "refused" ? record.receipt === null : true) && (record.receipt === null || record.receipt.threadId === record.envelope.threadId) && (record.settlement === null || record.settlement.receiptId === record.receipt?.receiptId && record.settlement.submissionId === record.receipt.submissionId) && (record.status === "processed" || record.status === "refused" || record.status === "parked" ? record.leaseUntilMillis === null : true)));
111
+ var MessageDeliveryError = class extends Schema.TaggedError()("MessageDeliveryError", {
112
+ cause: Schema.optionalKey(Value),
113
+ stack: Schema.optionalKey(Schema.String),
114
+ reason: Schema.Literals([
115
+ "validation",
116
+ "conflict",
117
+ "capacity",
118
+ "not-found",
119
+ "storage",
120
+ "corrupt"
121
+ ]),
122
+ operation: Schema.String
123
+ }) {};
124
+ var MessageDeliveryFailpointError = class extends Schema.TaggedError()("MessageDeliveryFailpointError", { point: Schema.String }) {};
125
+ const MessageDeliveryFailpoint = Context.Reference("@effect-agent/thread/MessageDeliveryFailpoint", { defaultValue: () => ({ hit: () => Effect.void }) });
126
+ const fence = {
127
+ expectedVersion: Positive,
128
+ nowMillis: ScheduleInstant
129
+ };
130
+ const MessageDeliveryChange = Schema.Union([
131
+ Schema.Struct({
132
+ _tag: Schema.Literal("Claim"),
133
+ ...fence
134
+ }),
135
+ Schema.Struct({
136
+ _tag: Schema.Literal("Accept"),
137
+ ...fence,
138
+ receipt: Receipt
139
+ }),
140
+ Schema.Struct({
141
+ _tag: Schema.Literal("Process"),
142
+ ...fence,
143
+ settlement: Settlement
144
+ }),
145
+ Schema.Struct({
146
+ _tag: Schema.Literal("ObservePending"),
147
+ ...fence
148
+ }),
149
+ Schema.Struct({
150
+ _tag: Schema.Literal("Refuse"),
151
+ ...fence,
152
+ code: BoundedName,
153
+ diagnostic: Schema.optionalKey(Diagnostic)
154
+ }),
155
+ Schema.Struct({
156
+ _tag: Schema.Literal("Retry"),
157
+ ...fence,
158
+ reason: ScheduleRetryReason,
159
+ diagnostic: Schema.optionalKey(Diagnostic)
160
+ }),
161
+ Schema.Struct({
162
+ _tag: Schema.Literal("Park"),
163
+ ...fence,
164
+ reason: ParkReason,
165
+ diagnostic: Schema.optionalKey(Diagnostic)
166
+ }),
167
+ Schema.Struct({
168
+ _tag: Schema.Literal("Recover"),
169
+ ...fence,
170
+ deadlineAtMillis: ScheduleInstant
171
+ }),
172
+ Schema.Struct({
173
+ _tag: Schema.Literal("Defer"),
174
+ ...fence,
175
+ untilMillis: ScheduleInstant
176
+ })
177
+ ]);
178
+ /** Select one native index per page; index filters cannot be combined. */
179
+ const MessageDeliveryPageRequest = Schema.Struct({
180
+ ownerThreadId: ThreadId,
181
+ limit: Positive.check(Schema.isLessThanOrEqualTo(4096)),
182
+ after: Schema.optionalKey(IdempotencyKey),
183
+ /** Native pending index, including accepted, future-due and parked obligations. */
184
+ pendingOnly: Schema.optionalKey(Schema.Boolean),
185
+ /** First retained envelopes, including starts not admitted at the destination. */
186
+ workerStarts: Schema.optionalKey(Schema.Struct({
187
+ delegationId: DelegationId,
188
+ targetAgentId: AgentId
189
+ })),
190
+ /** Retained inputs not yet acknowledged by one destination worker. */
191
+ pendingWorker: Schema.optionalKey(ThreadId)
192
+ }).check(Schema.makeFilter((request) => Number(request.pendingOnly === true) + Number(request.workerStarts !== void 0) + Number(request.pendingWorker !== void 0) <= 1));
193
+ const MessageDeliveryPage = Schema.Struct({
194
+ items: Schema.Array(MessageDeliveryRecord),
195
+ next: Schema.NullOr(IdempotencyKey)
196
+ });
197
+ /**
198
+ * Trusted host port, independent of either Thread's active Submission. List/get require an owner.
199
+ * Inserts and changes are atomic; identical inserts return current state even after completion.
200
+ * No automatic deletion: completed rows retain deduplication evidence and count toward retention.
201
+ * `due`/`nextDeadline` are bounded host recovery seams, never model-facing management operations.
202
+ */
203
+ var MessageDeliveryStore = class extends Context.Service()("@effect-agent/thread/MessageDeliveryStore") {};
204
+ /**
205
+ * Read current source-owned obligations without acquiring a runtime or scanning completed history.
206
+ * A retained receipt is native accepted-admission evidence, not proof of destination materialization.
207
+ * Shipped worker admission reserves the source input before returning that receipt. Policy can
208
+ * therefore leave accepted worker discovery to canonical outstanding inputs; a no-receipt action
209
+ * delivery remains uncertain, including when parked or due in the future.
210
+ */
211
+ const readPending = Effect.fn("MessageDelivery.readPending")(function* (request) {
212
+ const store = yield* MessageDeliveryStore;
213
+ const input = yield* validateMessageDelivery(MessageDeliveryPageRequest, {
214
+ ownerThreadId: request.ownerThreadId,
215
+ limit: request.limit,
216
+ pendingOnly: true
217
+ }, "read-pending");
218
+ const page = yield* validateMessageDelivery(MessageDeliveryPage, yield* store.list(input), "read-pending result");
219
+ if (page.next !== null || page.items.length > input.limit) return yield* MessageDeliveryError.make({
220
+ reason: "capacity",
221
+ operation: "read-pending"
222
+ });
223
+ const records = page.items;
224
+ if (records.some((record) => record.key.ownerThreadId !== input.ownerThreadId || !messageDeliveryUsesCapacity(record)) || new Set(records.map((record) => record.key.messageId)).size !== records.length) return yield* MessageDeliveryError.make({
225
+ reason: "corrupt",
226
+ operation: "read-pending result"
227
+ });
228
+ return records;
229
+ });
230
+ const messageDeliveryKeyString = (key) => JSON.stringify([key.ownerThreadId, key.messageId]);
231
+ const messageDeliveryUsesCapacity = (record) => record.status !== "processed" && record.status !== "refused";
232
+ const isWorkerUpdateDelivery = (record) => Schema.is(WorkerUpdate)(record.envelope.messageAdmission);
233
+ const messageDeliveryCapacity = (limits, update) => ({
234
+ pending: update ? limits.maxPendingUpdatesPerOwner ?? 32 : limits.maxPendingPerOwner,
235
+ retained: update ? limits.maxRetainedUpdatesPerOwner ?? 256 : limits.maxRetainedPerOwner
236
+ });
237
+ const messageDeliveryDeadline = (record) => record.status === "pending" || record.status === "accepted" ? Math.min(record.deadlineAtMillis, record.leaseUntilMillis ?? record.retry.nextAttemptAtMillis) : null;
238
+ /** Creation identity deliberately excludes operational counters and renewed recovery deadlines. */
239
+ const sameMessageDeliveryIdentity = (left, right) => messageDeliveryKeyString(left.key) === messageDeliveryKeyString(right.key) && left.envelopeDigest === right.envelopeDigest && left.predecessor === right.predecessor && Schema.toEquivalence(PreparedInput)(left.envelope, right.envelope) && Schema.toEquivalence(MessageDeliveryPolicy)(left.policy, right.policy) && left.createdAtMillis === right.createdAtMillis && left.initialDeadlineAtMillis === right.initialDeadlineAtMillis;
240
+ const error = (reason, operation, cause) => MessageDeliveryError.make({
241
+ reason,
242
+ operation,
243
+ ...cause === void 0 ? {} : { cause }
244
+ });
245
+ const validateMessageDelivery = (schema, value, operation) => Schema.decodeUnknownEffect(Schema.toType(schema))(value).pipe(Effect.mapError(() => error("validation", operation)));
246
+ const MessageDeliveryPreparation = Schema.Struct({
247
+ key: MessageDeliveryKey,
248
+ envelope: PreparedInput,
249
+ createdAtMillis: ScheduleInstant,
250
+ deadlineAtMillis: ScheduleInstant,
251
+ policy: MessageDeliveryPolicy,
252
+ predecessor: Schema.optionalKey(IdempotencyKey)
253
+ });
254
+ /** Freeze and digest the complete admission envelope before publishing the obligation. */
255
+ const prepareMessageDelivery = Effect.fn("MessageDelivery.prepare")(function* (options) {
256
+ const snapshot = yield* Schema.encodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))({
257
+ ...options,
258
+ policy: options.policy ?? defaultMessageDeliveryPolicy
259
+ }).pipe(Effect.flatMap(Schema.decodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))), Effect.mapError((cause) => error("validation", "prepare", cause)));
260
+ const envelope = snapshot.envelope;
261
+ const encoded = yield* Schema.encodeEffect(PreparedInput)(envelope).pipe(Effect.mapError((cause) => error("validation", "prepare", cause)));
262
+ if ((yield* digestJson(encoded.input).pipe(Effect.mapError((cause) => error("storage", "digest", cause)))) !== envelope.inputDigest) return yield* error("corrupt", "input-digest");
263
+ const envelopeDigest = yield* digestJson(encoded).pipe(Effect.mapError((cause) => error("storage", "digest", cause)));
264
+ return yield* validateMessageDelivery(MessageDeliveryRecord, {
265
+ schemaVersion: 1,
266
+ key: snapshot.key,
267
+ envelope,
268
+ envelopeDigest,
269
+ ...snapshot.predecessor === void 0 ? {} : { predecessor: snapshot.predecessor },
270
+ createdAtMillis: snapshot.createdAtMillis,
271
+ initialDeadlineAtMillis: snapshot.deadlineAtMillis,
272
+ deadlineAtMillis: snapshot.deadlineAtMillis,
273
+ policy: snapshot.policy,
274
+ version: 1,
275
+ status: "pending",
276
+ receipt: null,
277
+ settlement: null,
278
+ refusal: null,
279
+ parkReason: null,
280
+ leaseUntilMillis: null,
281
+ retry: {
282
+ attempts: 0,
283
+ generation: 0,
284
+ automaticAttempts: 0,
285
+ parked: false,
286
+ nextAttemptAtMillis: snapshot.createdAtMillis,
287
+ lastAttemptAtMillis: null,
288
+ lastFailure: null
289
+ }
290
+ }, "prepare");
291
+ });
292
+ /** Pure reducer used under the adapter's atomic compare-and-swap boundary. */
293
+ const applyMessageDeliveryChange = (record, change) => {
294
+ const conflict = () => Result.fail(error("conflict", change._tag));
295
+ if (record.version !== change.expectedVersion) return conflict();
296
+ if (record.status === "processed" || record.status === "refused") return conflict();
297
+ const now = change.nowMillis;
298
+ const base = {
299
+ ...record,
300
+ version: record.version + 1,
301
+ ..."diagnostic" in change && change.diagnostic !== void 0 ? { lastFailureDiagnostic: change.diagnostic } : {}
302
+ };
303
+ const parked = (reason) => ({
304
+ ...base,
305
+ status: "parked",
306
+ parkReason: reason,
307
+ leaseUntilMillis: null,
308
+ retry: {
309
+ ...record.retry,
310
+ parked: true
311
+ }
312
+ });
313
+ if (change._tag === "Defer") {
314
+ if (record.status !== "pending" || record.leaseUntilMillis !== null && record.leaseUntilMillis > now) return conflict();
315
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
316
+ if (change.untilMillis <= now) return conflict();
317
+ return Result.succeed({
318
+ ...base,
319
+ leaseUntilMillis: null,
320
+ retry: {
321
+ ...record.retry,
322
+ nextAttemptAtMillis: Math.min(change.untilMillis, record.deadlineAtMillis)
323
+ }
324
+ });
325
+ }
326
+ if (change._tag === "Recover") {
327
+ if (record.status !== "parked" || change.deadlineAtMillis <= now) return conflict();
328
+ return Result.succeed({
329
+ ...base,
330
+ deadlineAtMillis: change.deadlineAtMillis,
331
+ status: record.receipt === null ? "pending" : "accepted",
332
+ parkReason: null,
333
+ retry: {
334
+ ...record.retry,
335
+ generation: record.retry.generation + 1,
336
+ automaticAttempts: 0,
337
+ parked: false,
338
+ nextAttemptAtMillis: now
339
+ }
340
+ });
341
+ }
342
+ if (record.status === "parked") return conflict();
343
+ if (change._tag === "Park") return Result.succeed(parked(change.reason));
344
+ if (change._tag === "Claim") {
345
+ const due = messageDeliveryDeadline(record);
346
+ if (due === null || due > now) return conflict();
347
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
348
+ if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts) return Result.succeed(parked("exhausted"));
349
+ return Result.succeed({
350
+ ...base,
351
+ leaseUntilMillis: Math.min(now + record.policy.attemptTimeoutMillis, record.deadlineAtMillis),
352
+ retry: {
353
+ ...record.retry,
354
+ attempts: record.retry.attempts + 1,
355
+ automaticAttempts: record.retry.automaticAttempts + 1,
356
+ lastAttemptAtMillis: now
357
+ }
358
+ });
359
+ }
360
+ if (record.leaseUntilMillis === null || now > record.leaseUntilMillis) return conflict();
361
+ if (change._tag === "Accept") {
362
+ if (record.status !== "pending") return conflict();
363
+ if (change.receipt.threadId !== record.envelope.threadId) return Result.fail(error("corrupt", "receipt-identity"));
364
+ return Result.succeed({
365
+ ...base,
366
+ status: "accepted",
367
+ receipt: change.receipt,
368
+ leaseUntilMillis: null,
369
+ retry: {
370
+ ...record.retry,
371
+ automaticAttempts: 0,
372
+ nextAttemptAtMillis: Math.min(now + record.policy.settlementPollMillis, record.deadlineAtMillis),
373
+ lastFailure: null
374
+ }
375
+ });
376
+ }
377
+ if (change._tag === "Process") {
378
+ if (record.status !== "accepted") return conflict();
379
+ if (change.settlement.submissionId !== record.receipt?.submissionId || change.settlement.receiptId !== record.receipt.receiptId) return Result.fail(error("corrupt", "settlement-identity"));
380
+ return Result.succeed({
381
+ ...base,
382
+ status: "processed",
383
+ settlement: change.settlement,
384
+ leaseUntilMillis: null
385
+ });
386
+ }
387
+ if (change._tag === "ObservePending") {
388
+ if (record.status !== "accepted") return conflict();
389
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
390
+ return Result.succeed({
391
+ ...base,
392
+ leaseUntilMillis: null,
393
+ retry: {
394
+ ...record.retry,
395
+ automaticAttempts: 0,
396
+ lastFailure: null,
397
+ nextAttemptAtMillis: Math.min(now + record.policy.settlementPollMillis, record.deadlineAtMillis)
398
+ }
399
+ });
400
+ }
401
+ if (change._tag === "Refuse") {
402
+ if (record.status !== "pending") return conflict();
403
+ return Result.succeed({
404
+ ...base,
405
+ status: "refused",
406
+ refusal: change.code,
407
+ leaseUntilMillis: null
408
+ });
409
+ }
410
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
411
+ if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts) return Result.succeed(parked("exhausted"));
412
+ const delay = Math.min(record.policy.retryBaseMillis * 2 ** Math.min(record.retry.automaticAttempts - 1, 52), record.policy.retryMaxMillis);
413
+ return Result.succeed({
414
+ ...base,
415
+ leaseUntilMillis: null,
416
+ retry: {
417
+ ...record.retry,
418
+ nextAttemptAtMillis: Math.min(now + (record.status === "accepted" ? record.policy.settlementPollMillis : delay), record.deadlineAtMillis),
419
+ lastFailure: change.reason
420
+ }
421
+ });
422
+ };
423
+ const MessageDeliveryDriverLimits = Schema.Struct({
424
+ batchSize: Positive.check(Schema.isLessThanOrEqualTo(100)),
425
+ concurrency: Positive.check(Schema.isLessThanOrEqualTo(32))
426
+ });
427
+ /**
428
+ * Finite, structured host pump. The host owns its Scope and wakes it from nextDeadline even
429
+ * after source/receiver settlement. Failed or interrupted calls retain their expiring claim;
430
+ * no ordinary tool is replayed here, only idempotent PreparedInput admission/status lookup.
431
+ * Spans expose operation names; envelopes, principals, and message contents are never logged.
432
+ */
433
+ var MessageDeliveryDriver = class MessageDeliveryDriver extends Context.Service()("@effect-agent/thread/MessageDeliveryDriver") {
434
+ static layer(limits = {
435
+ batchSize: 100,
436
+ concurrency: 4
437
+ }) {
438
+ return Layer.effect(MessageDeliveryDriver, Effect.gen(function* () {
439
+ const config = yield* validateMessageDelivery(MessageDeliveryDriverLimits, limits, "driver-limits");
440
+ const store = yield* MessageDeliveryStore;
441
+ const admission = yield* PreparedInputAdmission;
442
+ const crypto = yield* Crypto.Crypto;
443
+ const failpoint = yield* MessageDeliveryFailpoint;
444
+ const semaphore = yield* Semaphore.make(config.concurrency);
445
+ const process = Effect.fn("MessageDelivery.process")((key) => semaphore.withPermit(Effect.gen(function* () {
446
+ const current = yield* store.get(key);
447
+ if (current === null) return yield* error("not-found", "process");
448
+ const nowMillis = yield* Clock.currentTimeMillis;
449
+ const due = messageDeliveryDeadline(current);
450
+ if (due === null || due > nowMillis) return current;
451
+ if (current.status === "pending" && current.predecessor !== void 0) {
452
+ const previous = yield* store.get({
453
+ ownerThreadId: key.ownerThreadId,
454
+ messageId: current.predecessor
455
+ });
456
+ if (previous === null || previous.receipt === null && previous.status !== "refused") return yield* store.change(key, {
457
+ _tag: "Defer",
458
+ expectedVersion: current.version,
459
+ nowMillis,
460
+ untilMillis: nowMillis + current.policy.settlementPollMillis
461
+ });
462
+ }
463
+ const claimed = yield* store.change(key, {
464
+ _tag: "Claim",
465
+ expectedVersion: current.version,
466
+ nowMillis
467
+ });
468
+ if (claimed.status === "parked") return claimed;
469
+ const envelope = yield* Schema.encodeEffect(PreparedInput)(claimed.envelope).pipe(Effect.mapError((cause) => error("corrupt", "envelope", cause)));
470
+ if ((yield* digestJson(envelope).pipe(Effect.provideService(Crypto.Crypto, crypto), Effect.mapError((cause) => error("storage", "digest", cause)))) !== claimed.envelopeDigest) return yield* error("corrupt", "envelope-digest");
471
+ const timeout = Math.min(claimed.policy.attemptTimeoutMillis, (claimed.leaseUntilMillis ?? claimed.deadlineAtMillis) - (yield* Clock.currentTimeMillis));
472
+ if (timeout <= 0) return claimed;
473
+ const commit = (change) => Clock.currentTimeMillis.pipe(Effect.flatMap((time) => store.change(key, {
474
+ ...change,
475
+ expectedVersion: claimed.version,
476
+ nowMillis: time
477
+ })));
478
+ if (claimed.status === "pending") {
479
+ const outcome = yield* admitPreparedInput(admission.submit(claimed.envelope), timeout).pipe(Effect.mapError((cause) => error("corrupt", "admission", cause)));
480
+ yield* failpoint.hit("message-delivery:admission:after");
481
+ if (outcome._tag === "Receipt") return yield* commit({
482
+ _tag: "Accept",
483
+ receipt: outcome.receipt
484
+ });
485
+ if (outcome._tag === "Refused") return yield* commit({
486
+ _tag: "Refuse",
487
+ code: outcome.error.code,
488
+ diagnostic: capture(outcome.error)
489
+ });
490
+ return yield* commit({
491
+ _tag: "Retry",
492
+ reason: outcome.reason,
493
+ diagnostic: outcome.diagnostic
494
+ });
495
+ }
496
+ if (claimed.receipt === null) return yield* error("corrupt", "receipt");
497
+ if (admission.submissionStatus === void 0) return yield* commit({
498
+ _tag: "Park",
499
+ reason: "status-unavailable"
500
+ });
501
+ const status = yield* admission.submissionStatus(claimed.receipt).pipe(Effect.timeout(timeout), Effect.map((status) => ({
502
+ _tag: "Status",
503
+ status
504
+ })), Effect.catchTag("ScheduledInputRetryable", (failure) => Effect.succeed({
505
+ _tag: "Retry",
506
+ reason: failure.reason,
507
+ diagnostic: capture(failure)
508
+ })), Effect.catchTag("ScheduledInputRefused", (failure) => Effect.succeed({
509
+ _tag: "Unavailable",
510
+ diagnostic: capture(failure)
511
+ })), Effect.catchTag("TimeoutError", (failure) => Effect.succeed({
512
+ _tag: "Retry",
513
+ reason: "timeout",
514
+ diagnostic: capture(failure)
515
+ })), Effect.catchTag("ScheduleStorageError", (failure) => failure.reason === "unavailable" ? Effect.succeed({
516
+ _tag: "Retry",
517
+ reason: "storage",
518
+ diagnostic: capture(failure)
519
+ }) : Effect.fail(error("corrupt", "status", failure))));
520
+ if (status._tag === "Unavailable") return yield* commit({
521
+ _tag: "Park",
522
+ reason: "status-unavailable",
523
+ diagnostic: status.diagnostic
524
+ });
525
+ if (status._tag === "Status" && status.status._tag === "settled") return yield* commit({
526
+ _tag: "Process",
527
+ settlement: status.status.settlement
528
+ });
529
+ if (status._tag === "Status") return yield* commit({ _tag: "ObservePending" });
530
+ return yield* commit({
531
+ _tag: "Retry",
532
+ reason: status.reason,
533
+ diagnostic: status.diagnostic
534
+ });
535
+ })).pipe(Effect.catchTag("MessageDeliveryError", (failure) => failure.reason === "conflict" ? store.get(key).pipe(Effect.filterOrFail((record) => record !== null, () => failure)) : Effect.fail(failure))));
536
+ return MessageDeliveryDriver.of({
537
+ process,
538
+ runDue: Effect.fn("MessageDelivery.runDue")(function* (ownerThreadId) {
539
+ const keys = yield* store.due(yield* Clock.currentTimeMillis, config.batchSize, ownerThreadId);
540
+ return yield* Effect.forEach(keys, process, { concurrency: config.concurrency });
541
+ }),
542
+ retry: Effect.fn("MessageDelivery.retry")(function* (key, expectedVersion, deadlineAtMillis) {
543
+ return yield* store.change(key, {
544
+ _tag: "Recover",
545
+ expectedVersion,
546
+ deadlineAtMillis,
547
+ nowMillis: yield* Clock.currentTimeMillis
548
+ });
549
+ })
550
+ });
551
+ }));
552
+ }
553
+ };
554
+ //#endregion
555
+ export { MessageDeliveryChange, MessageDeliveryDriver, MessageDeliveryDriverLimits, MessageDeliveryError, MessageDeliveryFailpoint, MessageDeliveryFailpointError, MessageDeliveryKey, MessageDeliveryPage, MessageDeliveryPageRequest, MessageDeliveryPolicy, MessageDeliveryRecord, MessageDeliveryStore, MessageDeliveryStoreLimits, applyMessageDeliveryChange, defaultMessageDeliveryPolicy, defaultMessageDeliveryStoreLimits, isWorkerUpdateDelivery, messageDeliveryCapacity, messageDeliveryDeadline, messageDeliveryKeyString, messageDeliveryUsesCapacity, prepareMessageDelivery, readPending, sameMessageDeliveryIdentity, MessageDelivery_exports as t, validateMessageDelivery };
556
+
557
+ //# sourceMappingURL=MessageDelivery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageDelivery.mjs","names":["FailureDiagnostic.Diagnostic","FailureDiagnostic.Value","FailureDiagnostic.capture"],"sources":["../../src/durable/MessageDelivery.ts"],"sourcesContent":["import { Clock, Context, Crypto, Effect, Layer, Result, Schema, Semaphore } from \"effect\";\n\nimport * as FailureDiagnostic from \"../core/FailureDiagnostic.ts\";\nimport { AgentId, DelegationId, ThreadId } from \"../core/Identifiers.ts\";\nimport { Receipt } from \"../core/Receipt.ts\";\nimport { WorkerUpdate } from \"../core/Worker.ts\";\nimport { digestJson } from \"./Digest.ts\";\nimport { admitPreparedInput, PreparedInputAdmission } from \"./PreparedInputAdmission.ts\";\nimport { Digest } from \"./Records.ts\";\nimport { ScheduleInstant, ScheduleRetry, ScheduleRetryReason } from \"./Schedule.ts\";\nimport { IdempotencyKey, Settlement } from \"./SubmissionLedger.ts\";\nimport { PreparedInput } from \"./Subscription.ts\";\n\nconst Positive = Schema.Int.check(Schema.isGreaterThan(0));\nconst BoundedName = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256));\n\n/** An owner is always a source Thread. Destination admission has its own frozen key. */\nexport const MessageDeliveryKey = Schema.Struct({\n ownerThreadId: ThreadId,\n messageId: IdempotencyKey,\n});\n\nexport type MessageDeliveryKey = typeof MessageDeliveryKey.Type;\n\nexport const MessageDeliveryPolicy = Schema.Struct({\n maxAutomaticAttempts: Positive.check(Schema.isLessThanOrEqualTo(100)),\n attemptTimeoutMillis: Positive.check(Schema.isLessThanOrEqualTo(300_000)),\n retryBaseMillis: Positive,\n retryMaxMillis: Positive,\n settlementPollMillis: Positive,\n}).check(Schema.makeFilter((value) => value.retryBaseMillis <= value.retryMaxMillis));\n\nexport type MessageDeliveryPolicy = typeof MessageDeliveryPolicy.Type;\n\nexport const defaultMessageDeliveryPolicy: MessageDeliveryPolicy = {\n maxAutomaticAttempts: 8,\n attemptTimeoutMillis: 30_000,\n retryBaseMillis: 1_000,\n retryMaxMillis: 60_000,\n settlementPollMillis: 5_000,\n};\n\nexport const MessageDeliveryStoreLimits = Schema.Struct({\n maxPendingPerOwner: Positive,\n maxRetainedPerOwner: Positive,\n maxEnvelopeBytes: Positive,\n /** Separate update capacity preserves the full ordinary allowance for terminal reports. */\n maxPendingUpdatesPerOwner: Schema.optionalKey(Positive),\n maxRetainedUpdatesPerOwner: Schema.optionalKey(Positive),\n}).check(\n Schema.makeFilter(\n (value) =>\n value.maxPendingPerOwner <= value.maxRetainedPerOwner &&\n (value.maxPendingUpdatesPerOwner ?? 32) <= (value.maxRetainedUpdatesPerOwner ?? 256),\n ),\n);\n\nexport type MessageDeliveryStoreLimits = typeof MessageDeliveryStoreLimits.Type;\n\nexport const defaultMessageDeliveryStoreLimits: MessageDeliveryStoreLimits = {\n maxPendingPerOwner: 100,\n maxRetainedPerOwner: 1_000,\n maxEnvelopeBytes: 262_144,\n maxPendingUpdatesPerOwner: 32,\n maxRetainedUpdatesPerOwner: 256,\n};\n\nconst ParkReason = Schema.Literals([\"exhausted\", \"deadline\", \"status-unavailable\"]);\n\nexport const MessageDeliveryRecord = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n key: MessageDeliveryKey,\n envelope: PreparedInput,\n envelopeDigest: Digest,\n /** Same-owner predecessor whose admission must be known before this message is submitted. */\n predecessor: Schema.optionalKey(IdempotencyKey),\n createdAtMillis: ScheduleInstant,\n /** Immutable creation identity; explicit recovery only renews deadlineAtMillis. */\n initialDeadlineAtMillis: ScheduleInstant,\n deadlineAtMillis: ScheduleInstant,\n policy: MessageDeliveryPolicy,\n version: Positive,\n status: Schema.Literals([\"pending\", \"accepted\", \"processed\", \"refused\", \"parked\"]),\n receipt: Schema.NullOr(Receipt),\n settlement: Schema.NullOr(Settlement),\n refusal: Schema.NullOr(BoundedName),\n parkReason: Schema.NullOr(ParkReason),\n leaseUntilMillis: Schema.NullOr(ScheduleInstant),\n retry: ScheduleRetry,\n /** Last failed admission/status check, retained across retries and successful recovery. */\n lastFailureDiagnostic: Schema.optionalKey(FailureDiagnostic.Diagnostic),\n}).check(\n Schema.makeFilter(\n (record) =>\n record.deadlineAtMillis > record.createdAtMillis &&\n record.initialDeadlineAtMillis > record.createdAtMillis &&\n record.predecessor !== record.key.messageId &&\n (record.status === \"processed\") === (record.settlement !== null) &&\n (record.status === \"refused\") === (record.refusal !== null) &&\n (record.status === \"parked\") === (record.parkReason !== null) &&\n (record.status === \"parked\") === record.retry.parked &&\n (record.status === \"accepted\" || record.status === \"processed\"\n ? record.receipt !== null\n : true) &&\n (record.status === \"pending\" || record.status === \"refused\"\n ? record.receipt === null\n : true) &&\n (record.receipt === null || record.receipt.threadId === record.envelope.threadId) &&\n (record.settlement === null ||\n (record.settlement.receiptId === record.receipt?.receiptId &&\n record.settlement.submissionId === record.receipt.submissionId)) &&\n (record.status === \"processed\" || record.status === \"refused\" || record.status === \"parked\"\n ? record.leaseUntilMillis === null\n : true),\n ),\n);\n\nexport type MessageDeliveryRecord = typeof MessageDeliveryRecord.Type;\n\nexport class MessageDeliveryError extends Schema.TaggedError<MessageDeliveryError>()(\n \"MessageDeliveryError\",\n {\n cause: Schema.optionalKey(FailureDiagnostic.Value),\n stack: Schema.optionalKey(Schema.String),\n reason: Schema.Literals([\n \"validation\",\n \"conflict\",\n \"capacity\",\n \"not-found\",\n \"storage\",\n \"corrupt\",\n ]),\n operation: Schema.String,\n },\n) {}\n\nexport class MessageDeliveryFailpointError extends Schema.TaggedError<MessageDeliveryFailpointError>()(\n \"MessageDeliveryFailpointError\",\n {\n point: Schema.String,\n },\n) {}\n\nexport type MessageDeliveryFailure = MessageDeliveryError | MessageDeliveryFailpointError;\n\nexport const MessageDeliveryFailpoint = Context.Reference<{\n readonly hit: (point: string) => Effect.Effect<void, MessageDeliveryFailpointError>;\n}>(\"@effect-agent/thread/MessageDeliveryFailpoint\", {\n defaultValue: () => ({ hit: () => Effect.void }),\n});\n\nconst fence = { expectedVersion: Positive, nowMillis: ScheduleInstant };\n\nexport const MessageDeliveryChange = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"Claim\"), ...fence }),\n Schema.Struct({ _tag: Schema.Literal(\"Accept\"), ...fence, receipt: Receipt }),\n Schema.Struct({ _tag: Schema.Literal(\"Process\"), ...fence, settlement: Settlement }),\n Schema.Struct({ _tag: Schema.Literal(\"ObservePending\"), ...fence }),\n Schema.Struct({\n _tag: Schema.Literal(\"Refuse\"),\n ...fence,\n code: BoundedName,\n diagnostic: Schema.optionalKey(FailureDiagnostic.Diagnostic),\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"Retry\"),\n ...fence,\n reason: ScheduleRetryReason,\n diagnostic: Schema.optionalKey(FailureDiagnostic.Diagnostic),\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"Park\"),\n ...fence,\n reason: ParkReason,\n diagnostic: Schema.optionalKey(FailureDiagnostic.Diagnostic),\n }),\n Schema.Struct({ _tag: Schema.Literal(\"Recover\"), ...fence, deadlineAtMillis: ScheduleInstant }),\n /** Waiting for earlier admission never spends an automatic transport attempt. */\n Schema.Struct({ _tag: Schema.Literal(\"Defer\"), ...fence, untilMillis: ScheduleInstant }),\n]);\n\nexport type MessageDeliveryChange = typeof MessageDeliveryChange.Type;\n\n/** Select one native index per page; index filters cannot be combined. */\nexport const MessageDeliveryPageRequest = Schema.Struct({\n ownerThreadId: ThreadId,\n limit: Positive.check(Schema.isLessThanOrEqualTo(4096)),\n after: Schema.optionalKey(IdempotencyKey),\n /** Native pending index, including accepted, future-due and parked obligations. */\n pendingOnly: Schema.optionalKey(Schema.Boolean),\n /** First retained envelopes, including starts not admitted at the destination. */\n workerStarts: Schema.optionalKey(\n Schema.Struct({ delegationId: DelegationId, targetAgentId: AgentId }),\n ),\n /** Retained inputs not yet acknowledged by one destination worker. */\n pendingWorker: Schema.optionalKey(ThreadId),\n}).check(\n Schema.makeFilter(\n (request) =>\n Number(request.pendingOnly === true) +\n Number(request.workerStarts !== undefined) +\n Number(request.pendingWorker !== undefined) <=\n 1,\n ),\n);\n\nexport type MessageDeliveryPageRequest = typeof MessageDeliveryPageRequest.Type;\n\nexport const MessageDeliveryPage = Schema.Struct({\n items: Schema.Array(MessageDeliveryRecord),\n next: Schema.NullOr(IdempotencyKey),\n});\n\nexport type MessageDeliveryPage = typeof MessageDeliveryPage.Type;\n\n/**\n * Trusted host port, independent of either Thread's active Submission. List/get require an owner.\n * Inserts and changes are atomic; identical inserts return current state even after completion.\n * No automatic deletion: completed rows retain deduplication evidence and count toward retention.\n * `due`/`nextDeadline` are bounded host recovery seams, never model-facing management operations.\n */\nexport class MessageDeliveryStore extends Context.Service<\n MessageDeliveryStore,\n {\n readonly limits: MessageDeliveryStoreLimits;\n readonly maxStoredValueBytes: number;\n readonly insert: (\n record: MessageDeliveryRecord,\n ) => Effect.Effect<MessageDeliveryRecord, MessageDeliveryFailure>;\n readonly get: (\n key: MessageDeliveryKey,\n ) => Effect.Effect<MessageDeliveryRecord | null, MessageDeliveryError>;\n readonly list: (\n request: MessageDeliveryPageRequest,\n ) => Effect.Effect<MessageDeliveryPage, MessageDeliveryError>;\n readonly change: (\n key: MessageDeliveryKey,\n change: MessageDeliveryChange,\n ) => Effect.Effect<MessageDeliveryRecord, MessageDeliveryFailure>;\n readonly due: (\n nowMillis: number,\n limit: number,\n ownerThreadId?: ThreadId,\n ) => Effect.Effect<ReadonlyArray<MessageDeliveryKey>, MessageDeliveryError>;\n readonly nextDeadline: (\n ownerThreadId?: ThreadId,\n ) => Effect.Effect<number | null, MessageDeliveryError>;\n }\n>()(\"@effect-agent/thread/MessageDeliveryStore\") {}\n\n/**\n * Read current source-owned obligations without acquiring a runtime or scanning completed history.\n * A retained receipt is native accepted-admission evidence, not proof of destination materialization.\n * Shipped worker admission reserves the source input before returning that receipt. Policy can\n * therefore leave accepted worker discovery to canonical outstanding inputs; a no-receipt action\n * delivery remains uncertain, including when parked or due in the future.\n */\nexport const readPending = Effect.fn(\"MessageDelivery.readPending\")(function* (\n request: Pick<MessageDeliveryPageRequest, \"ownerThreadId\" | \"limit\">,\n) {\n const store = yield* MessageDeliveryStore;\n\n const input = yield* validateMessageDelivery(\n MessageDeliveryPageRequest,\n {\n ownerThreadId: request.ownerThreadId,\n limit: request.limit,\n pendingOnly: true,\n },\n \"read-pending\",\n );\n\n const page = yield* validateMessageDelivery(\n MessageDeliveryPage,\n yield* store.list(input),\n \"read-pending result\",\n );\n\n if (page.next !== null || page.items.length > input.limit)\n return yield* MessageDeliveryError.make({ reason: \"capacity\", operation: \"read-pending\" });\n const records = page.items;\n\n if (\n records.some(\n (record) =>\n record.key.ownerThreadId !== input.ownerThreadId || !messageDeliveryUsesCapacity(record),\n ) ||\n new Set(records.map((record) => record.key.messageId)).size !== records.length\n )\n return yield* MessageDeliveryError.make({\n reason: \"corrupt\",\n operation: \"read-pending result\",\n });\n\n return records;\n});\n\nexport const messageDeliveryKeyString = (key: MessageDeliveryKey): string =>\n JSON.stringify([key.ownerThreadId, key.messageId]);\n\nexport const messageDeliveryUsesCapacity = (record: MessageDeliveryRecord): boolean =>\n record.status !== \"processed\" && record.status !== \"refused\";\n\nexport const isWorkerUpdateDelivery = (record: MessageDeliveryRecord): boolean =>\n Schema.is(WorkerUpdate)(record.envelope.messageAdmission);\n\nexport const messageDeliveryCapacity = (limits: MessageDeliveryStoreLimits, update: boolean) => ({\n pending: update ? (limits.maxPendingUpdatesPerOwner ?? 32) : limits.maxPendingPerOwner,\n retained: update ? (limits.maxRetainedUpdatesPerOwner ?? 256) : limits.maxRetainedPerOwner,\n});\n\nexport const messageDeliveryDeadline = (record: MessageDeliveryRecord): number | null =>\n record.status === \"pending\" || record.status === \"accepted\"\n ? Math.min(record.deadlineAtMillis, record.leaseUntilMillis ?? record.retry.nextAttemptAtMillis)\n : null;\n\n/** Creation identity deliberately excludes operational counters and renewed recovery deadlines. */\nexport const sameMessageDeliveryIdentity = (\n left: MessageDeliveryRecord,\n right: MessageDeliveryRecord,\n): boolean =>\n messageDeliveryKeyString(left.key) === messageDeliveryKeyString(right.key) &&\n left.envelopeDigest === right.envelopeDigest &&\n left.predecessor === right.predecessor &&\n Schema.toEquivalence(PreparedInput)(left.envelope, right.envelope) &&\n Schema.toEquivalence(MessageDeliveryPolicy)(left.policy, right.policy) &&\n left.createdAtMillis === right.createdAtMillis &&\n left.initialDeadlineAtMillis === right.initialDeadlineAtMillis;\n\nconst error = (reason: MessageDeliveryError[\"reason\"], operation: string, cause?: unknown) =>\n MessageDeliveryError.make({ reason, operation, ...(cause === undefined ? {} : { cause }) });\n\nexport const validateMessageDelivery = <A, I>(\n schema: Schema.Codec<A, I>,\n value: unknown,\n operation: string,\n) =>\n Schema.decodeUnknownEffect(Schema.toType(schema))(value).pipe(\n Effect.mapError(() => error(\"validation\", operation)),\n );\n\nconst MessageDeliveryPreparation = Schema.Struct({\n key: MessageDeliveryKey,\n envelope: PreparedInput,\n createdAtMillis: ScheduleInstant,\n deadlineAtMillis: ScheduleInstant,\n policy: MessageDeliveryPolicy,\n predecessor: Schema.optionalKey(IdempotencyKey),\n});\n\n/** Freeze and digest the complete admission envelope before publishing the obligation. */\nexport const prepareMessageDelivery = Effect.fn(\"MessageDelivery.prepare\")(function* (options: {\n readonly key: MessageDeliveryKey;\n readonly envelope: PreparedInput;\n readonly createdAtMillis: number;\n readonly deadlineAtMillis: number;\n readonly policy?: MessageDeliveryPolicy;\n readonly predecessor?: IdempotencyKey;\n}): Effect.fn.Return<MessageDeliveryRecord, MessageDeliveryError, Crypto.Crypto> {\n // JSON detaches every caller-owned value before Crypto can suspend preparation.\n const snapshot = yield* Schema.encodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))({\n ...options,\n policy: options.policy ?? defaultMessageDeliveryPolicy,\n }).pipe(\n Effect.flatMap(Schema.decodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))),\n Effect.mapError((cause) => error(\"validation\", \"prepare\", cause)),\n );\n\n const envelope = snapshot.envelope;\n\n const encoded = yield* Schema.encodeEffect(PreparedInput)(envelope).pipe(\n Effect.mapError((cause) => error(\"validation\", \"prepare\", cause)),\n );\n\n const inputDigest = yield* digestJson(encoded.input).pipe(\n Effect.mapError((cause) => error(\"storage\", \"digest\", cause)),\n );\n\n if (inputDigest !== envelope.inputDigest) return yield* error(\"corrupt\", \"input-digest\");\n\n const envelopeDigest = yield* digestJson(encoded).pipe(\n Effect.mapError((cause) => error(\"storage\", \"digest\", cause)),\n );\n\n return yield* validateMessageDelivery(\n MessageDeliveryRecord,\n {\n schemaVersion: 1,\n key: snapshot.key,\n envelope,\n envelopeDigest,\n ...(snapshot.predecessor === undefined ? {} : { predecessor: snapshot.predecessor }),\n createdAtMillis: snapshot.createdAtMillis,\n initialDeadlineAtMillis: snapshot.deadlineAtMillis,\n deadlineAtMillis: snapshot.deadlineAtMillis,\n policy: snapshot.policy,\n version: 1,\n status: \"pending\",\n receipt: null,\n settlement: null,\n refusal: null,\n parkReason: null,\n leaseUntilMillis: null,\n retry: {\n attempts: 0,\n generation: 0,\n automaticAttempts: 0,\n parked: false,\n nextAttemptAtMillis: snapshot.createdAtMillis,\n lastAttemptAtMillis: null,\n lastFailure: null,\n },\n },\n \"prepare\",\n );\n});\n\n/** Pure reducer used under the adapter's atomic compare-and-swap boundary. */\nexport const applyMessageDeliveryChange = (\n record: MessageDeliveryRecord,\n change: MessageDeliveryChange,\n): Result.Result<MessageDeliveryRecord, MessageDeliveryError> => {\n const conflict = () => Result.fail(error(\"conflict\", change._tag));\n\n if (record.version !== change.expectedVersion) return conflict();\n if (record.status === \"processed\" || record.status === \"refused\") return conflict();\n const now = change.nowMillis;\n\n const base = {\n ...record,\n version: record.version + 1,\n ...(\"diagnostic\" in change && change.diagnostic !== undefined\n ? { lastFailureDiagnostic: change.diagnostic }\n : {}),\n };\n\n const parked = (reason: typeof ParkReason.Type): MessageDeliveryRecord => ({\n ...base,\n status: \"parked\",\n parkReason: reason,\n leaseUntilMillis: null,\n retry: { ...record.retry, parked: true },\n });\n\n if (change._tag === \"Defer\") {\n if (\n record.status !== \"pending\" ||\n (record.leaseUntilMillis !== null && record.leaseUntilMillis > now)\n )\n return conflict();\n if (now >= record.deadlineAtMillis) return Result.succeed(parked(\"deadline\"));\n if (change.untilMillis <= now) return conflict();\n\n return Result.succeed({\n ...base,\n leaseUntilMillis: null,\n retry: {\n ...record.retry,\n nextAttemptAtMillis: Math.min(change.untilMillis, record.deadlineAtMillis),\n },\n });\n }\n\n if (change._tag === \"Recover\") {\n if (record.status !== \"parked\" || change.deadlineAtMillis <= now) return conflict();\n\n return Result.succeed({\n ...base,\n deadlineAtMillis: change.deadlineAtMillis,\n status: record.receipt === null ? \"pending\" : \"accepted\",\n parkReason: null,\n retry: {\n ...record.retry,\n generation: record.retry.generation + 1,\n automaticAttempts: 0,\n parked: false,\n nextAttemptAtMillis: now,\n },\n });\n }\n if (record.status === \"parked\") return conflict();\n if (change._tag === \"Park\") return Result.succeed(parked(change.reason));\n if (change._tag === \"Claim\") {\n const due = messageDeliveryDeadline(record);\n\n if (due === null || due > now) return conflict();\n if (now >= record.deadlineAtMillis) return Result.succeed(parked(\"deadline\"));\n if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts)\n return Result.succeed(parked(\"exhausted\"));\n\n return Result.succeed({\n ...base,\n leaseUntilMillis: Math.min(now + record.policy.attemptTimeoutMillis, record.deadlineAtMillis),\n retry: {\n ...record.retry,\n attempts: record.retry.attempts + 1,\n automaticAttempts: record.retry.automaticAttempts + 1,\n lastAttemptAtMillis: now,\n },\n });\n }\n if (record.leaseUntilMillis === null || now > record.leaseUntilMillis) return conflict();\n if (change._tag === \"Accept\") {\n if (record.status !== \"pending\") return conflict();\n if (change.receipt.threadId !== record.envelope.threadId)\n return Result.fail(error(\"corrupt\", \"receipt-identity\"));\n\n return Result.succeed({\n ...base,\n status: \"accepted\",\n receipt: change.receipt,\n leaseUntilMillis: null,\n retry: {\n ...record.retry,\n automaticAttempts: 0,\n nextAttemptAtMillis: Math.min(\n now + record.policy.settlementPollMillis,\n record.deadlineAtMillis,\n ),\n lastFailure: null,\n },\n });\n }\n if (change._tag === \"Process\") {\n if (record.status !== \"accepted\") return conflict();\n if (\n change.settlement.submissionId !== record.receipt?.submissionId ||\n change.settlement.receiptId !== record.receipt.receiptId\n )\n return Result.fail(error(\"corrupt\", \"settlement-identity\"));\n\n return Result.succeed({\n ...base,\n status: \"processed\",\n settlement: change.settlement,\n leaseUntilMillis: null,\n });\n }\n if (change._tag === \"ObservePending\") {\n if (record.status !== \"accepted\") return conflict();\n if (now >= record.deadlineAtMillis) return Result.succeed(parked(\"deadline\"));\n\n return Result.succeed({\n ...base,\n leaseUntilMillis: null,\n retry: {\n ...record.retry,\n automaticAttempts: 0,\n lastFailure: null,\n nextAttemptAtMillis: Math.min(\n now + record.policy.settlementPollMillis,\n record.deadlineAtMillis,\n ),\n },\n });\n }\n if (change._tag === \"Refuse\") {\n if (record.status !== \"pending\") return conflict();\n\n return Result.succeed({\n ...base,\n status: \"refused\",\n refusal: change.code,\n leaseUntilMillis: null,\n });\n }\n if (now >= record.deadlineAtMillis) return Result.succeed(parked(\"deadline\"));\n if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts)\n return Result.succeed(parked(\"exhausted\"));\n\n const delay = Math.min(\n record.policy.retryBaseMillis * 2 ** Math.min(record.retry.automaticAttempts - 1, 52),\n record.policy.retryMaxMillis,\n );\n\n return Result.succeed({\n ...base,\n leaseUntilMillis: null,\n retry: {\n ...record.retry,\n nextAttemptAtMillis: Math.min(\n now + (record.status === \"accepted\" ? record.policy.settlementPollMillis : delay),\n record.deadlineAtMillis,\n ),\n lastFailure: change.reason,\n },\n });\n};\n\nexport const MessageDeliveryDriverLimits = Schema.Struct({\n batchSize: Positive.check(Schema.isLessThanOrEqualTo(100)),\n concurrency: Positive.check(Schema.isLessThanOrEqualTo(32)),\n});\n\nexport type MessageDeliveryDriverLimits = typeof MessageDeliveryDriverLimits.Type;\n\n/**\n * Finite, structured host pump. The host owns its Scope and wakes it from nextDeadline even\n * after source/receiver settlement. Failed or interrupted calls retain their expiring claim;\n * no ordinary tool is replayed here, only idempotent PreparedInput admission/status lookup.\n * Spans expose operation names; envelopes, principals, and message contents are never logged.\n */\nexport class MessageDeliveryDriver extends Context.Service<\n MessageDeliveryDriver,\n {\n readonly process: (\n key: MessageDeliveryKey,\n ) => Effect.Effect<MessageDeliveryRecord, MessageDeliveryFailure>;\n readonly runDue: (\n ownerThreadId?: ThreadId,\n ) => Effect.Effect<ReadonlyArray<MessageDeliveryRecord>, MessageDeliveryFailure>;\n readonly retry: (\n key: MessageDeliveryKey,\n expectedVersion: number,\n deadlineAtMillis: number,\n ) => Effect.Effect<MessageDeliveryRecord, MessageDeliveryFailure>;\n }\n>()(\"@effect-agent/thread/MessageDeliveryDriver\") {\n static layer(\n limits: MessageDeliveryDriverLimits = { batchSize: 100, concurrency: 4 },\n ): Layer.Layer<\n MessageDeliveryDriver,\n MessageDeliveryError,\n MessageDeliveryStore | PreparedInputAdmission | Crypto.Crypto\n > {\n return Layer.effect(\n MessageDeliveryDriver,\n Effect.gen(function* () {\n const config = yield* validateMessageDelivery(\n MessageDeliveryDriverLimits,\n limits,\n \"driver-limits\",\n );\n\n const store = yield* MessageDeliveryStore;\n const admission = yield* PreparedInputAdmission;\n const crypto = yield* Crypto.Crypto;\n const failpoint = yield* MessageDeliveryFailpoint;\n const semaphore = yield* Semaphore.make(config.concurrency);\n\n const process = Effect.fn(\"MessageDelivery.process\")((key: MessageDeliveryKey) =>\n semaphore\n .withPermit(\n Effect.gen(function* () {\n const current = yield* store.get(key);\n\n if (current === null) return yield* error(\"not-found\", \"process\");\n const nowMillis = yield* Clock.currentTimeMillis;\n const due = messageDeliveryDeadline(current);\n\n if (due === null || due > nowMillis) return current;\n\n if (current.status === \"pending\" && current.predecessor !== undefined) {\n const previous = yield* store.get({\n ownerThreadId: key.ownerThreadId,\n messageId: current.predecessor,\n });\n\n if (\n previous === null ||\n (previous.receipt === null && previous.status !== \"refused\")\n ) {\n return yield* store.change(key, {\n _tag: \"Defer\",\n expectedVersion: current.version,\n nowMillis,\n untilMillis: nowMillis + current.policy.settlementPollMillis,\n });\n }\n }\n\n const claimed = yield* store.change(key, {\n _tag: \"Claim\",\n expectedVersion: current.version,\n nowMillis,\n });\n\n if (claimed.status === \"parked\") return claimed;\n\n const envelope = yield* Schema.encodeEffect(PreparedInput)(claimed.envelope).pipe(\n Effect.mapError((cause) => error(\"corrupt\", \"envelope\", cause)),\n );\n\n const digest = yield* digestJson(envelope).pipe(\n Effect.provideService(Crypto.Crypto, crypto),\n Effect.mapError((cause) => error(\"storage\", \"digest\", cause)),\n );\n\n if (digest !== claimed.envelopeDigest)\n return yield* error(\"corrupt\", \"envelope-digest\");\n\n const timeout = Math.min(\n claimed.policy.attemptTimeoutMillis,\n (claimed.leaseUntilMillis ?? claimed.deadlineAtMillis) -\n (yield* Clock.currentTimeMillis),\n );\n\n // Digest computation cannot extend this claim's admission authority.\n if (timeout <= 0) return claimed;\n\n type WithoutFence<T> = T extends MessageDeliveryChange\n ? Omit<T, \"expectedVersion\" | \"nowMillis\">\n : never;\n\n const commit = (change: WithoutFence<MessageDeliveryChange>) =>\n Clock.currentTimeMillis.pipe(\n Effect.flatMap((time) =>\n store.change(key, {\n ...change,\n expectedVersion: claimed.version,\n nowMillis: time,\n }),\n ),\n );\n\n if (claimed.status === \"pending\") {\n const outcome = yield* admitPreparedInput(\n admission.submit(claimed.envelope),\n timeout,\n ).pipe(Effect.mapError((cause) => error(\"corrupt\", \"admission\", cause)));\n\n yield* failpoint.hit(\"message-delivery:admission:after\");\n if (outcome._tag === \"Receipt\")\n return yield* commit({ _tag: \"Accept\", receipt: outcome.receipt });\n if (outcome._tag === \"Refused\")\n return yield* commit({\n _tag: \"Refuse\",\n code: outcome.error.code,\n diagnostic: FailureDiagnostic.capture(outcome.error),\n });\n\n return yield* commit({\n _tag: \"Retry\",\n reason: outcome.reason,\n diagnostic: outcome.diagnostic,\n });\n }\n if (claimed.receipt === null) return yield* error(\"corrupt\", \"receipt\");\n if (admission.submissionStatus === undefined)\n return yield* commit({ _tag: \"Park\", reason: \"status-unavailable\" });\n\n const status = yield* admission.submissionStatus(claimed.receipt).pipe(\n Effect.timeout(timeout),\n Effect.map((status) => ({ _tag: \"Status\" as const, status })),\n Effect.catchTag(\"ScheduledInputRetryable\", (failure) =>\n Effect.succeed({\n _tag: \"Retry\" as const,\n reason: failure.reason,\n diagnostic: FailureDiagnostic.capture(failure),\n }),\n ),\n Effect.catchTag(\"ScheduledInputRefused\", (failure) =>\n Effect.succeed({\n _tag: \"Unavailable\" as const,\n diagnostic: FailureDiagnostic.capture(failure),\n }),\n ),\n Effect.catchTag(\"TimeoutError\", (failure) =>\n Effect.succeed({\n _tag: \"Retry\" as const,\n reason: \"timeout\" as const,\n diagnostic: FailureDiagnostic.capture(failure),\n }),\n ),\n Effect.catchTag(\"ScheduleStorageError\", (failure) =>\n failure.reason === \"unavailable\"\n ? Effect.succeed({\n _tag: \"Retry\" as const,\n reason: \"storage\" as const,\n diagnostic: FailureDiagnostic.capture(failure),\n })\n : Effect.fail(error(\"corrupt\", \"status\", failure)),\n ),\n );\n\n if (status._tag === \"Unavailable\")\n return yield* commit({\n _tag: \"Park\",\n reason: \"status-unavailable\",\n diagnostic: status.diagnostic,\n });\n if (status._tag === \"Status\" && status.status._tag === \"settled\")\n return yield* commit({ _tag: \"Process\", settlement: status.status.settlement });\n if (status._tag === \"Status\") return yield* commit({ _tag: \"ObservePending\" });\n\n return yield* commit({\n _tag: \"Retry\",\n reason: status.reason,\n diagnostic: status.diagnostic,\n });\n }),\n )\n .pipe(\n Effect.catchTag(\"MessageDeliveryError\", (failure) =>\n failure.reason === \"conflict\"\n ? store.get(key).pipe(\n Effect.filterOrFail(\n (record) => record !== null,\n () => failure,\n ),\n )\n : Effect.fail(failure),\n ),\n ),\n );\n\n return MessageDeliveryDriver.of({\n process,\n runDue: Effect.fn(\"MessageDelivery.runDue\")(function* (ownerThreadId) {\n const keys = yield* store.due(\n yield* Clock.currentTimeMillis,\n config.batchSize,\n ownerThreadId,\n );\n\n return yield* Effect.forEach(keys, process, { concurrency: config.concurrency });\n }),\n retry: Effect.fn(\"MessageDelivery.retry\")(\n function* (key, expectedVersion, deadlineAtMillis) {\n return yield* store.change(key, {\n _tag: \"Recover\",\n expectedVersion,\n deadlineAtMillis,\n nowMillis: yield* Clock.currentTimeMillis,\n });\n },\n ),\n });\n }),\n );\n }\n}\n"],"mappings":"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"}