effect-agent 0.1.0-beta.85 → 0.1.0-beta.87

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 (751) hide show
  1. package/dist/Agent-CN0EWRsR.d.mts +226 -0
  2. package/dist/Agent-RklVROrm.mjs +83 -0
  3. package/dist/Agent-RklVROrm.mjs.map +1 -0
  4. package/dist/AgentError-CggcAQ7V.d.mts +101 -0
  5. package/dist/AgentPolicy-CetmQrf3.d.mts +96 -0
  6. package/dist/AgentRuntime-BLyETCPo.mjs +4562 -0
  7. package/dist/AgentRuntime-BLyETCPo.mjs.map +1 -0
  8. package/dist/AgentRuntime-uxR_a4VM.d.mts +346 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-Dxu5zhOL.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-uggeJpv3.mjs +6368 -0
  13. package/dist/DurableAgentRuntime-uggeJpv3.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Oinuuedm.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/Ephemeral.d.mts +22 -0
  17. package/dist/Ephemeral.mjs +22 -0
  18. package/dist/Ephemeral.mjs.map +1 -0
  19. package/dist/EventSource-OqS_P9ug.d.mts +51 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  22. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  23. package/dist/Messaging-CkcIdt4I.d.mts +490 -0
  24. package/dist/MessagingHost-CRk0kXzT.d.mts +246 -0
  25. package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
  26. package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
  27. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  28. package/dist/Output-D6SkedVx.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-C4HbjHgl.d.mts +38 -0
  32. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  33. package/dist/Records-BAGkekt8.d.mts +3570 -0
  34. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  35. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  36. package/dist/RunJournal-Cgg1kNvc.mjs +825 -0
  37. package/dist/RunJournal-Cgg1kNvc.mjs.map +1 -0
  38. package/dist/RunOptions-g1aigcKI.d.mts +915 -0
  39. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  40. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  41. package/dist/Schedule-H3SEYX9g.d.mts +842 -0
  42. package/dist/Scheduling-C9aIP8zT.mjs +691 -0
  43. package/dist/Scheduling-C9aIP8zT.mjs.map +1 -0
  44. package/dist/Subagent-Cy_hU1tv.mjs +1469 -0
  45. package/dist/Subagent-Cy_hU1tv.mjs.map +1 -0
  46. package/dist/Subagent-DyfzHNdv.d.mts +826 -0
  47. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  48. package/dist/SubagentHost-CJUBQlcc.d.mts +140 -0
  49. package/dist/Subscription-BEP8oQO5.d.mts +921 -0
  50. package/dist/SubscriptionInput-vAAOBrK7.d.mts +41 -0
  51. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  52. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  53. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  54. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  55. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  56. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  57. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  58. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  59. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  60. package/dist/ToolExposure.d.mts +6 -5
  61. package/dist/ToolExposure.mjs +17 -9
  62. package/dist/ToolExposure.mjs.map +1 -1
  63. package/dist/ToolReconciler-DQVaJfpE.d.mts +76 -0
  64. package/dist/ToolResult-DmmgoChv.d.mts +61 -0
  65. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  66. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  67. package/dist/Worker-CaPYykpe.d.mts +228 -0
  68. package/dist/agent-registration-CWDMOAZA.mjs +172 -0
  69. package/dist/agent-registration-CWDMOAZA.mjs.map +1 -0
  70. package/dist/capabilities/Approval.d.mts +114 -0
  71. package/dist/capabilities/Approval.mjs +226 -0
  72. package/dist/capabilities/Approval.mjs.map +1 -0
  73. package/dist/capabilities/Budget.d.mts +112 -0
  74. package/dist/capabilities/Budget.mjs +346 -0
  75. package/dist/capabilities/Budget.mjs.map +1 -0
  76. package/dist/capabilities/CodeMode.d.mts +157 -0
  77. package/dist/capabilities/CodeMode.mjs +522 -0
  78. package/dist/capabilities/CodeMode.mjs.map +1 -0
  79. package/dist/capabilities/Commands.d.mts +55 -0
  80. package/dist/capabilities/Commands.mjs +57 -0
  81. package/dist/capabilities/Commands.mjs.map +1 -0
  82. package/dist/capabilities/ContextTools.d.mts +321 -0
  83. package/dist/capabilities/ContextTools.mjs +126 -0
  84. package/dist/capabilities/ContextTools.mjs.map +1 -0
  85. package/dist/capabilities/Mcp.d.mts +108 -0
  86. package/dist/capabilities/Mcp.mjs +260 -0
  87. package/dist/capabilities/Mcp.mjs.map +1 -0
  88. package/dist/capabilities/McpClient.d.mts +115 -0
  89. package/dist/capabilities/McpClient.mjs +506 -0
  90. package/dist/capabilities/McpClient.mjs.map +1 -0
  91. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  92. package/dist/capabilities/MemoryNotes.mjs +128 -0
  93. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  94. package/dist/capabilities/Messaging.d.mts +3 -0
  95. package/dist/capabilities/Messaging.mjs +151 -0
  96. package/dist/capabilities/Messaging.mjs.map +1 -0
  97. package/dist/capabilities/ModelContext.d.mts +89 -0
  98. package/dist/capabilities/ModelContext.mjs +168 -0
  99. package/dist/capabilities/ModelContext.mjs.map +1 -0
  100. package/dist/capabilities/Redaction.d.mts +37 -0
  101. package/dist/capabilities/Redaction.mjs +104 -0
  102. package/dist/capabilities/Redaction.mjs.map +1 -0
  103. package/dist/capabilities/Remembering.d.mts +434 -0
  104. package/dist/capabilities/Remembering.mjs +290 -0
  105. package/dist/capabilities/Remembering.mjs.map +1 -0
  106. package/dist/capabilities/RunHooks.d.mts +82 -0
  107. package/dist/capabilities/RunHooks.mjs +144 -0
  108. package/dist/capabilities/RunHooks.mjs.map +1 -0
  109. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  110. package/dist/capabilities/SemanticMemory.mjs +315 -0
  111. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  112. package/dist/capabilities/Subagent.d.mts +4 -0
  113. package/dist/capabilities/Subagent.mjs +5 -0
  114. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  115. package/dist/capabilities/SubagentReservations.mjs +479 -0
  116. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  117. package/dist/capabilities/ToolDiscovery.d.mts +109 -0
  118. package/dist/capabilities/ToolDiscovery.mjs +211 -0
  119. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  120. package/dist/capabilities/WebCapture.d.mts +163 -0
  121. package/dist/capabilities/WebCapture.mjs +335 -0
  122. package/dist/capabilities/WebCapture.mjs.map +1 -0
  123. package/dist/capabilities/WebSearch.d.mts +71 -0
  124. package/dist/capabilities/WebSearch.mjs +112 -0
  125. package/dist/capabilities/WebSearch.mjs.map +1 -0
  126. package/dist/compaction-C2OTceKw.mjs +505 -0
  127. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  128. package/dist/core/Agent.d.mts +2 -0
  129. package/dist/core/Agent.mjs +2 -0
  130. package/dist/core/AgentError.d.mts +2 -0
  131. package/dist/core/AgentError.mjs +117 -0
  132. package/dist/core/AgentError.mjs.map +1 -0
  133. package/dist/core/AgentPolicy.d.mts +2 -0
  134. package/dist/core/AgentPolicy.mjs +94 -0
  135. package/dist/core/AgentPolicy.mjs.map +1 -0
  136. package/dist/core/AgentUpdates.d.mts +2 -0
  137. package/dist/core/AgentUpdates.mjs +63 -0
  138. package/dist/core/AgentUpdates.mjs.map +1 -0
  139. package/dist/core/IdGenerator.d.mts +26 -0
  140. package/dist/core/IdGenerator.mjs +27 -0
  141. package/dist/core/IdGenerator.mjs.map +1 -0
  142. package/dist/core/Identifiers.d.mts +2 -0
  143. package/dist/core/Identifiers.mjs +43 -0
  144. package/dist/core/Identifiers.mjs.map +1 -0
  145. package/dist/core/Memory.d.mts +57 -0
  146. package/dist/core/Memory.mjs +203 -0
  147. package/dist/core/Memory.mjs.map +1 -0
  148. package/dist/core/MemoryNamespace.d.mts +2 -0
  149. package/dist/core/MemoryNamespace.mjs +116 -0
  150. package/dist/core/MemoryNamespace.mjs.map +1 -0
  151. package/dist/core/MemoryReference.d.mts +2 -0
  152. package/dist/core/MemoryReference.mjs +109 -0
  153. package/dist/core/MemoryReference.mjs.map +1 -0
  154. package/dist/core/MemoryRevalidation.d.mts +65 -0
  155. package/dist/core/MemoryRevalidation.mjs +126 -0
  156. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  157. package/dist/core/MemoryStore.d.mts +186 -0
  158. package/dist/core/MemoryStore.mjs +243 -0
  159. package/dist/core/MemoryStore.mjs.map +1 -0
  160. package/dist/core/Receipt.d.mts +2 -0
  161. package/dist/core/Receipt.mjs +36 -0
  162. package/dist/core/Receipt.mjs.map +1 -0
  163. package/dist/core/RememberingStore.d.mts +1562 -0
  164. package/dist/core/RememberingStore.mjs +190 -0
  165. package/dist/core/RememberingStore.mjs.map +1 -0
  166. package/dist/core/RunEvent.d.mts +2 -0
  167. package/dist/core/RunEvent.mjs +337 -0
  168. package/dist/core/RunEvent.mjs.map +1 -0
  169. package/dist/core/RunPolicyUsage.d.mts +2 -0
  170. package/dist/core/RunPolicyUsage.mjs +21 -0
  171. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  172. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  173. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  174. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  175. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  176. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  177. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  178. package/dist/core/SubagentContract.d.mts +2 -0
  179. package/dist/core/SubagentContract.mjs +148 -0
  180. package/dist/core/SubagentContract.mjs.map +1 -0
  181. package/dist/core/Thread.d.mts +2 -0
  182. package/dist/core/Thread.mjs +250 -0
  183. package/dist/core/Thread.mjs.map +1 -0
  184. package/dist/core/ToolResult.d.mts +2 -0
  185. package/dist/core/ToolResult.mjs +140 -0
  186. package/dist/core/ToolResult.mjs.map +1 -0
  187. package/dist/core/Usage.d.mts +2 -0
  188. package/dist/core/Usage.mjs +319 -0
  189. package/dist/core/Usage.mjs.map +1 -0
  190. package/dist/core/Worker.d.mts +3 -0
  191. package/dist/core/Worker.mjs +147 -0
  192. package/dist/core/Worker.mjs.map +1 -0
  193. package/dist/durable/ActivityStore.d.mts +116 -0
  194. package/dist/durable/ActivityStore.mjs +131 -0
  195. package/dist/durable/ActivityStore.mjs.map +1 -0
  196. package/dist/durable/Admin.d.mts +2 -0
  197. package/dist/durable/Admin.mjs +328 -0
  198. package/dist/durable/Admin.mjs.map +1 -0
  199. package/dist/durable/AgentRegistration.d.mts +2 -0
  200. package/dist/durable/AgentRegistration.mjs +14 -0
  201. package/dist/durable/AgentRegistration.mjs.map +1 -0
  202. package/dist/durable/Certification.d.mts +111 -0
  203. package/dist/durable/Certification.mjs +159 -0
  204. package/dist/durable/Certification.mjs.map +1 -0
  205. package/dist/durable/CommittedActivity.d.mts +62 -0
  206. package/dist/durable/CommittedActivity.mjs +159 -0
  207. package/dist/durable/CommittedActivity.mjs.map +1 -0
  208. package/dist/durable/Digest.d.mts +2 -0
  209. package/dist/durable/Digest.mjs +50 -0
  210. package/dist/durable/Digest.mjs.map +1 -0
  211. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  212. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  213. package/dist/durable/DurableFailpoint.d.mts +2 -0
  214. package/dist/durable/DurableFailpoint.mjs +94 -0
  215. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  216. package/dist/durable/DurableFailpointTestControl.d.mts +15 -0
  217. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  218. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  219. package/dist/durable/EventSource.d.mts +2 -0
  220. package/dist/durable/EventSource.mjs +65 -0
  221. package/dist/durable/EventSource.mjs.map +1 -0
  222. package/dist/durable/GitHubWorkflowSource.d.mts +144 -0
  223. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  224. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  225. package/dist/durable/MessageDelivery.d.mts +492 -0
  226. package/dist/durable/MessageDelivery.mjs +495 -0
  227. package/dist/durable/MessageDelivery.mjs.map +1 -0
  228. package/dist/durable/MessageDeliveryStoreConformance.d.mts +358 -0
  229. package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
  230. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  231. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  232. package/dist/durable/OperationAuthorizer.mjs +70 -0
  233. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  234. package/dist/durable/PersistentHistory.d.mts +16 -0
  235. package/dist/durable/PersistentHistory.mjs +125 -0
  236. package/dist/durable/PersistentHistory.mjs.map +1 -0
  237. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  238. package/dist/durable/PreparedInputAdmission.mjs +34 -0
  239. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  240. package/dist/durable/Records.d.mts +2 -0
  241. package/dist/durable/Records.mjs +795 -0
  242. package/dist/durable/Records.mjs.map +1 -0
  243. package/dist/durable/Recovery.d.mts +2 -0
  244. package/dist/durable/Recovery.mjs +739 -0
  245. package/dist/durable/Recovery.mjs.map +1 -0
  246. package/dist/durable/RunJournal.d.mts +2 -0
  247. package/dist/durable/RunJournal.mjs +2 -0
  248. package/dist/durable/Schedule.d.mts +2 -0
  249. package/dist/durable/Schedule.mjs +382 -0
  250. package/dist/durable/Schedule.mjs.map +1 -0
  251. package/dist/durable/ScheduleStoreConformance.d.mts +18 -0
  252. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  253. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  254. package/dist/durable/ScheduleTransition.d.mts +24 -0
  255. package/dist/durable/ScheduleTransition.mjs +180 -0
  256. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  257. package/dist/durable/Scheduling.d.mts +54 -0
  258. package/dist/durable/Scheduling.mjs +2 -0
  259. package/dist/durable/SqlMemoryStore.d.mts +30 -0
  260. package/dist/durable/SqlMemoryStore.mjs +435 -0
  261. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  262. package/dist/durable/SqlMessageDeliveryStore.d.mts +40 -0
  263. package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
  264. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  265. package/dist/durable/SqlStorageV2Upgrade.d.mts +22 -0
  266. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  267. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  268. package/dist/durable/SqlSubscriptionStore.d.mts +63 -0
  269. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  270. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  271. package/dist/durable/SubmissionLedger.d.mts +3 -0
  272. package/dist/durable/SubmissionLedger.mjs +914 -0
  273. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  274. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  275. package/dist/durable/SubmissionLedgerConformance.mjs +1986 -0
  276. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  277. package/dist/durable/SubmissionStatus.d.mts +2 -0
  278. package/dist/durable/SubmissionStatus.mjs +18 -0
  279. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  280. package/dist/durable/Subscription.d.mts +2 -0
  281. package/dist/durable/Subscription.mjs +360 -0
  282. package/dist/durable/Subscription.mjs.map +1 -0
  283. package/dist/durable/SubscriptionInput.d.mts +2 -0
  284. package/dist/durable/SubscriptionInput.mjs +52 -0
  285. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  286. package/dist/durable/SubscriptionStoreConformance.d.mts +17 -0
  287. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  288. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  289. package/dist/durable/SubscriptionTools.d.mts +273 -0
  290. package/dist/durable/SubscriptionTools.mjs +190 -0
  291. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  292. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  293. package/dist/durable/SubscriptionTransition.mjs +148 -0
  294. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  295. package/dist/durable/Subscriptions.d.mts +73 -0
  296. package/dist/durable/Subscriptions.mjs +627 -0
  297. package/dist/durable/Subscriptions.mjs.map +1 -0
  298. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  299. package/dist/durable/ThreadContextHistory.mjs +152 -0
  300. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  301. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  302. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  303. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  304. package/dist/durable/ThreadInvariants.d.mts +74 -0
  305. package/dist/durable/ThreadInvariants.mjs +200 -0
  306. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  307. package/dist/durable/ThreadProjection.d.mts +78 -0
  308. package/dist/durable/ThreadProjection.mjs +158 -0
  309. package/dist/durable/ThreadProjection.mjs.map +1 -0
  310. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  311. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  312. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  313. package/dist/durable/ThreadStore.d.mts +2 -0
  314. package/dist/durable/ThreadStore.mjs +147 -0
  315. package/dist/durable/ThreadStore.mjs.map +1 -0
  316. package/dist/durable/ThreadStoreConformance.d.mts +29 -0
  317. package/dist/durable/ThreadStoreConformance.mjs +248 -0
  318. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  319. package/dist/durable/ToolReconciler.d.mts +2 -0
  320. package/dist/durable/ToolReconciler.mjs +81 -0
  321. package/dist/durable/ToolReconciler.mjs.map +1 -0
  322. package/dist/durable/WakeScheduler.d.mts +2 -0
  323. package/dist/durable/WakeScheduler.mjs +85 -0
  324. package/dist/durable/WakeScheduler.mjs.map +1 -0
  325. package/dist/durable/WorkerHost.d.mts +129 -0
  326. package/dist/durable/WorkerHost.mjs +77 -0
  327. package/dist/durable/WorkerHost.mjs.map +1 -0
  328. package/dist/engine/AgentRuntime.d.mts +2 -0
  329. package/dist/engine/AgentRuntime.mjs +2 -0
  330. package/dist/engine/Compaction.d.mts +7 -0
  331. package/dist/engine/Compaction.mjs +16 -0
  332. package/dist/engine/Compaction.mjs.map +1 -0
  333. package/dist/engine/ContextCompactor.d.mts +2 -0
  334. package/dist/engine/ContextCompactor.mjs +119 -0
  335. package/dist/engine/ContextCompactor.mjs.map +1 -0
  336. package/dist/engine/ContextHistory.d.mts +65 -0
  337. package/dist/engine/ContextHistory.mjs +76 -0
  338. package/dist/engine/ContextHistory.mjs.map +1 -0
  339. package/dist/engine/ContextWindow.d.mts +2 -0
  340. package/dist/engine/ContextWindow.mjs +59 -0
  341. package/dist/engine/ContextWindow.mjs.map +1 -0
  342. package/dist/engine/DurableStep.d.mts +2 -0
  343. package/dist/engine/DurableStep.mjs +62 -0
  344. package/dist/engine/DurableStep.mjs.map +1 -0
  345. package/dist/engine/MessagingHost.d.mts +2 -0
  346. package/dist/engine/MessagingHost.mjs +2 -0
  347. package/dist/engine/Output.d.mts +2 -0
  348. package/dist/engine/Output.mjs +8 -0
  349. package/dist/engine/Output.mjs.map +1 -0
  350. package/dist/engine/RunEventSink.d.mts +2 -0
  351. package/dist/engine/RunEventSink.mjs +22 -0
  352. package/dist/engine/RunEventSink.mjs.map +1 -0
  353. package/dist/engine/RunOptions.d.mts +2 -0
  354. package/dist/engine/RunOptions.mjs +122 -0
  355. package/dist/engine/RunOptions.mjs.map +1 -0
  356. package/dist/engine/SubagentHost.d.mts +2 -0
  357. package/dist/engine/SubagentHost.mjs +72 -0
  358. package/dist/engine/SubagentHost.mjs.map +1 -0
  359. package/dist/engine/ThreadHistory.d.mts +2 -0
  360. package/dist/engine/ThreadHistory.mjs +67 -0
  361. package/dist/engine/ThreadHistory.mjs.map +1 -0
  362. package/dist/engine/ToolBroker.d.mts +2 -0
  363. package/dist/engine/ToolBroker.mjs +42 -0
  364. package/dist/engine/ToolBroker.mjs.map +1 -0
  365. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  366. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  367. package/dist/index.d.mts +88 -54
  368. package/dist/index.mjs +97 -54
  369. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  370. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  371. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  372. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  373. package/dist/sandbox/CodeExecutor.mjs +278 -0
  374. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  375. package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
  376. package/dist/sandbox/InteractiveBrowser.mjs +165 -0
  377. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  378. package/dist/sandbox/PageCapture.d.mts +2 -0
  379. package/dist/sandbox/PageCapture.mjs +450 -0
  380. package/dist/sandbox/PageCapture.mjs.map +1 -0
  381. package/dist/sandbox/PageCrawl.d.mts +88 -0
  382. package/dist/sandbox/PageCrawl.mjs +124 -0
  383. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  384. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  385. package/dist/sandbox/PageScreenshot.mjs +53 -0
  386. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  387. package/dist/sandbox/ProtectedBrowser.d.mts +252 -0
  388. package/dist/sandbox/ProtectedBrowser.mjs +270 -0
  389. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  390. package/dist/sandbox/Sandbox.d.mts +2 -0
  391. package/dist/sandbox/Sandbox.mjs +208 -0
  392. package/dist/sandbox/Sandbox.mjs.map +1 -0
  393. package/dist/utf8-BYfhEkcj.mjs +11 -0
  394. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  395. package/dist/utf8-DchGZRBd.mjs +23 -0
  396. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  397. package/package.json +1 -1
  398. package/src/Ephemeral.ts +17 -0
  399. package/src/ToolExposure.ts +2 -2
  400. package/src/capabilities/Approval.ts +352 -0
  401. package/src/capabilities/Budget.ts +536 -0
  402. package/src/capabilities/CodeMode.ts +1090 -0
  403. package/src/capabilities/Commands.ts +86 -0
  404. package/src/capabilities/ContextTools.ts +184 -0
  405. package/src/capabilities/Mcp.ts +427 -0
  406. package/src/capabilities/McpClient.ts +967 -0
  407. package/src/capabilities/MemoryNotes.ts +174 -0
  408. package/src/capabilities/Messaging.ts +261 -0
  409. package/src/capabilities/ModelContext.ts +354 -0
  410. package/src/capabilities/Redaction.ts +157 -0
  411. package/src/capabilities/Remembering.ts +550 -0
  412. package/src/capabilities/RunHooks.ts +280 -0
  413. package/src/capabilities/SemanticMemory.ts +447 -0
  414. package/src/capabilities/Subagent.ts +2277 -0
  415. package/src/capabilities/SubagentReservations.ts +850 -0
  416. package/src/capabilities/ToolDiscovery.ts +339 -0
  417. package/src/capabilities/WebCapture.ts +722 -0
  418. package/src/capabilities/WebSearch.ts +184 -0
  419. package/src/capabilities/internal/subagent-background.ts +1106 -0
  420. package/src/capabilities/internal/subagent-contract.ts +142 -0
  421. package/src/capabilities/internal/subagent-policy.ts +235 -0
  422. package/src/capabilities/internal/subagent-reporting.ts +261 -0
  423. package/src/capabilities/internal/utf8.ts +10 -0
  424. package/src/core/Agent.ts +575 -0
  425. package/src/core/AgentError.ts +152 -0
  426. package/src/core/AgentPolicy.ts +153 -0
  427. package/src/core/AgentUpdates.ts +100 -0
  428. package/src/core/IdGenerator.ts +39 -0
  429. package/src/core/Identifiers.ts +48 -0
  430. package/src/core/Memory.ts +290 -0
  431. package/src/core/MemoryNamespace.ts +196 -0
  432. package/src/core/MemoryReference.ts +121 -0
  433. package/src/core/MemoryRevalidation.ts +185 -0
  434. package/src/core/MemoryStore.ts +368 -0
  435. package/src/core/Messaging.ts +90 -0
  436. package/src/core/Receipt.ts +42 -0
  437. package/src/core/RememberingStore.ts +300 -0
  438. package/src/core/RunEvent.ts +366 -0
  439. package/src/core/RunPolicyUsage.ts +17 -0
  440. package/src/core/SemanticMemoryIndex.ts +250 -0
  441. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  442. package/src/core/SubagentContract.ts +196 -0
  443. package/src/core/Thread.ts +371 -0
  444. package/src/core/ToolExposure.ts +74 -0
  445. package/src/core/ToolResult.ts +170 -0
  446. package/src/core/Usage.ts +529 -0
  447. package/src/core/Worker.ts +173 -0
  448. package/src/core/internal/agent-updates.ts +32 -0
  449. package/src/core/internal/utf8.ts +23 -0
  450. package/src/durable/ActivityStore.ts +160 -0
  451. package/src/durable/Admin.ts +496 -0
  452. package/src/durable/AgentRegistration.ts +13 -0
  453. package/src/durable/Certification.ts +210 -0
  454. package/src/durable/CommittedActivity.ts +296 -0
  455. package/src/durable/Digest.ts +93 -0
  456. package/src/durable/DurableAgentRuntime.ts +10340 -0
  457. package/src/durable/DurableFailpoint.ts +103 -0
  458. package/src/durable/DurableFailpointTestControl.ts +39 -0
  459. package/src/durable/EventSource.ts +172 -0
  460. package/src/durable/GitHubWorkflowSource.ts +453 -0
  461. package/src/durable/MessageDelivery.ts +708 -0
  462. package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
  463. package/src/durable/OperationAuthorizer.ts +85 -0
  464. package/src/durable/PersistentHistory.ts +260 -0
  465. package/src/durable/PreparedInputAdmission.ts +44 -0
  466. package/src/durable/Records.ts +1010 -0
  467. package/src/durable/Recovery.ts +1018 -0
  468. package/src/durable/RunJournal.ts +1479 -0
  469. package/src/durable/Schedule.ts +504 -0
  470. package/src/durable/ScheduleStoreConformance.ts +638 -0
  471. package/src/durable/ScheduleTransition.ts +265 -0
  472. package/src/durable/Scheduling.ts +1077 -0
  473. package/src/durable/SqlMemoryStore.ts +774 -0
  474. package/src/durable/SqlMessageDeliveryStore.ts +302 -0
  475. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  476. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  477. package/src/durable/SubmissionLedger.ts +1201 -0
  478. package/src/durable/SubmissionLedgerConformance.ts +4579 -0
  479. package/src/durable/SubmissionStatus.ts +14 -0
  480. package/src/durable/Subscription.ts +544 -0
  481. package/src/durable/SubscriptionInput.ts +144 -0
  482. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  483. package/src/durable/SubscriptionTools.ts +327 -0
  484. package/src/durable/SubscriptionTransition.ts +302 -0
  485. package/src/durable/Subscriptions.ts +1210 -0
  486. package/src/durable/ThreadContextHistory.ts +227 -0
  487. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  488. package/src/durable/ThreadInvariants.ts +442 -0
  489. package/src/durable/ThreadProjection.ts +269 -0
  490. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  491. package/src/durable/ThreadStore.ts +242 -0
  492. package/src/durable/ThreadStoreConformance.ts +710 -0
  493. package/src/durable/ToolReconciler.ts +105 -0
  494. package/src/durable/WakeScheduler.ts +134 -0
  495. package/src/durable/WorkerHost.ts +171 -0
  496. package/src/durable/internal/agent-registration.ts +525 -0
  497. package/src/durable/internal/agent-updates.ts +302 -0
  498. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  499. package/src/durable/internal/journal-checkpoint.ts +104 -0
  500. package/src/durable/internal/journal-metadata.ts +107 -0
  501. package/src/durable/internal/messaging-host.ts +608 -0
  502. package/src/durable/internal/schedule-time.ts +303 -0
  503. package/src/durable/internal/storage-v2-layout.ts +163 -0
  504. package/src/durable/internal/storage-v2.ts +73 -0
  505. package/src/durable/internal/worker-host.ts +2467 -0
  506. package/src/durable/internal/worker-runtime.ts +9 -0
  507. package/src/engine/AgentRuntime.ts +37 -0
  508. package/src/engine/Compaction.ts +11 -0
  509. package/src/engine/ContextCompactor.ts +277 -0
  510. package/src/engine/ContextHistory.ts +73 -0
  511. package/src/engine/ContextWindow.ts +72 -0
  512. package/src/engine/DurableStep.ts +132 -0
  513. package/src/engine/MessagingHost.ts +110 -0
  514. package/src/engine/Output.ts +2 -0
  515. package/src/engine/RunEventSink.ts +132 -0
  516. package/src/engine/RunOptions.ts +1077 -0
  517. package/src/engine/SubagentHost.ts +181 -0
  518. package/src/engine/ThreadHistory.ts +120 -0
  519. package/src/engine/ToolBroker.ts +157 -0
  520. package/src/engine/ToolExposure.ts +48 -0
  521. package/src/engine/internal/agent-runtime.ts +10117 -0
  522. package/src/engine/internal/bounded-value.ts +315 -0
  523. package/src/engine/internal/compaction.ts +678 -0
  524. package/src/engine/internal/error-diagnostic.ts +39 -0
  525. package/src/engine/internal/output-contract.ts +173 -0
  526. package/src/engine/internal/primitive-delta.ts +80 -0
  527. package/src/engine/internal/provider-result-staging.ts +211 -0
  528. package/src/engine/internal/tool-derivative.ts +106 -0
  529. package/src/engine/internal/tool-exposure.ts +224 -0
  530. package/src/engine/internal/tool-telemetry.ts +484 -0
  531. package/src/index.ts +96 -53
  532. package/src/sandbox/CodeExecutor.ts +352 -0
  533. package/src/sandbox/InteractiveBrowser.ts +257 -0
  534. package/src/sandbox/PageCapture.ts +692 -0
  535. package/src/sandbox/PageCrawl.ts +148 -0
  536. package/src/sandbox/PageScreenshot.ts +81 -0
  537. package/src/sandbox/ProtectedBrowser.ts +413 -0
  538. package/src/sandbox/Sandbox.ts +241 -0
  539. package/dist/Agent.d.mts +0 -5
  540. package/dist/Agent.mjs +0 -10
  541. package/dist/Agent.mjs.map +0 -1
  542. package/dist/AgentError.d.mts +0 -5
  543. package/dist/AgentError.mjs +0 -10
  544. package/dist/AgentError.mjs.map +0 -1
  545. package/dist/AgentPolicy.d.mts +0 -5
  546. package/dist/AgentPolicy.mjs +0 -10
  547. package/dist/AgentPolicy.mjs.map +0 -1
  548. package/dist/AgentRuntime.d.mts +0 -5
  549. package/dist/AgentRuntime.mjs +0 -10
  550. package/dist/AgentRuntime.mjs.map +0 -1
  551. package/dist/AgentUpdates.d.mts +0 -5
  552. package/dist/AgentUpdates.mjs +0 -10
  553. package/dist/AgentUpdates.mjs.map +0 -1
  554. package/dist/Approval.d.mts +0 -5
  555. package/dist/Approval.mjs +0 -10
  556. package/dist/Approval.mjs.map +0 -1
  557. package/dist/Budget.d.mts +0 -5
  558. package/dist/Budget.mjs +0 -10
  559. package/dist/Budget.mjs.map +0 -1
  560. package/dist/CodeMode.d.mts +0 -5
  561. package/dist/CodeMode.mjs +0 -10
  562. package/dist/CodeMode.mjs.map +0 -1
  563. package/dist/Commands.d.mts +0 -5
  564. package/dist/Commands.mjs +0 -10
  565. package/dist/Commands.mjs.map +0 -1
  566. package/dist/Compaction.d.mts +0 -5
  567. package/dist/Compaction.mjs +0 -10
  568. package/dist/Compaction.mjs.map +0 -1
  569. package/dist/ContextCompactor.d.mts +0 -5
  570. package/dist/ContextCompactor.mjs +0 -10
  571. package/dist/ContextCompactor.mjs.map +0 -1
  572. package/dist/ContextHistory.d.mts +0 -5
  573. package/dist/ContextHistory.mjs +0 -10
  574. package/dist/ContextHistory.mjs.map +0 -1
  575. package/dist/ContextTools.d.mts +0 -5
  576. package/dist/ContextTools.mjs +0 -10
  577. package/dist/ContextTools.mjs.map +0 -1
  578. package/dist/ContextWindow.d.mts +0 -5
  579. package/dist/ContextWindow.mjs +0 -10
  580. package/dist/ContextWindow.mjs.map +0 -1
  581. package/dist/DurableStep.d.mts +0 -5
  582. package/dist/DurableStep.mjs +0 -10
  583. package/dist/DurableStep.mjs.map +0 -1
  584. package/dist/EphemeralThreads.d.mts +0 -5
  585. package/dist/EphemeralThreads.mjs +0 -10
  586. package/dist/EphemeralThreads.mjs.map +0 -1
  587. package/dist/IdGenerator.d.mts +0 -5
  588. package/dist/IdGenerator.mjs +0 -10
  589. package/dist/IdGenerator.mjs.map +0 -1
  590. package/dist/Identifiers.d.mts +0 -5
  591. package/dist/Identifiers.mjs +0 -10
  592. package/dist/Identifiers.mjs.map +0 -1
  593. package/dist/Mcp.d.mts +0 -5
  594. package/dist/Mcp.mjs +0 -10
  595. package/dist/Mcp.mjs.map +0 -1
  596. package/dist/McpClient.d.mts +0 -5
  597. package/dist/McpClient.mjs +0 -10
  598. package/dist/McpClient.mjs.map +0 -1
  599. package/dist/Memory.d.mts +0 -5
  600. package/dist/Memory.mjs +0 -10
  601. package/dist/Memory.mjs.map +0 -1
  602. package/dist/MemoryNamespace.d.mts +0 -5
  603. package/dist/MemoryNamespace.mjs +0 -10
  604. package/dist/MemoryNamespace.mjs.map +0 -1
  605. package/dist/MemoryNotes.d.mts +0 -5
  606. package/dist/MemoryNotes.mjs +0 -10
  607. package/dist/MemoryNotes.mjs.map +0 -1
  608. package/dist/MemoryReference.d.mts +0 -5
  609. package/dist/MemoryReference.mjs +0 -10
  610. package/dist/MemoryReference.mjs.map +0 -1
  611. package/dist/MemoryRevalidation.d.mts +0 -5
  612. package/dist/MemoryRevalidation.mjs +0 -10
  613. package/dist/MemoryRevalidation.mjs.map +0 -1
  614. package/dist/MemoryStore.d.mts +0 -5
  615. package/dist/MemoryStore.mjs +0 -10
  616. package/dist/MemoryStore.mjs.map +0 -1
  617. package/dist/Messaging.d.mts +0 -5
  618. package/dist/Messaging.mjs +0 -10
  619. package/dist/Messaging.mjs.map +0 -1
  620. package/dist/MessagingHost.d.mts +0 -5
  621. package/dist/MessagingHost.mjs +0 -10
  622. package/dist/MessagingHost.mjs.map +0 -1
  623. package/dist/ModelContext.d.mts +0 -5
  624. package/dist/ModelContext.mjs +0 -10
  625. package/dist/ModelContext.mjs.map +0 -1
  626. package/dist/Receipt.d.mts +0 -5
  627. package/dist/Receipt.mjs +0 -10
  628. package/dist/Receipt.mjs.map +0 -1
  629. package/dist/Redaction.d.mts +0 -5
  630. package/dist/Redaction.mjs +0 -10
  631. package/dist/Redaction.mjs.map +0 -1
  632. package/dist/Remembering.d.mts +0 -5
  633. package/dist/Remembering.mjs +0 -10
  634. package/dist/Remembering.mjs.map +0 -1
  635. package/dist/RememberingStore.d.mts +0 -5
  636. package/dist/RememberingStore.mjs +0 -10
  637. package/dist/RememberingStore.mjs.map +0 -1
  638. package/dist/RunEvent.d.mts +0 -5
  639. package/dist/RunEvent.mjs +0 -10
  640. package/dist/RunEvent.mjs.map +0 -1
  641. package/dist/RunEventSink.d.mts +0 -5
  642. package/dist/RunEventSink.mjs +0 -10
  643. package/dist/RunEventSink.mjs.map +0 -1
  644. package/dist/RunHooks.d.mts +0 -5
  645. package/dist/RunHooks.mjs +0 -10
  646. package/dist/RunHooks.mjs.map +0 -1
  647. package/dist/RunOptions.d.mts +0 -5
  648. package/dist/RunOptions.mjs +0 -10
  649. package/dist/RunOptions.mjs.map +0 -1
  650. package/dist/RunPolicyUsage.d.mts +0 -5
  651. package/dist/RunPolicyUsage.mjs +0 -10
  652. package/dist/RunPolicyUsage.mjs.map +0 -1
  653. package/dist/SemanticMemory.d.mts +0 -5
  654. package/dist/SemanticMemory.mjs +0 -10
  655. package/dist/SemanticMemory.mjs.map +0 -1
  656. package/dist/SemanticMemoryIndex.d.mts +0 -5
  657. package/dist/SemanticMemoryIndex.mjs +0 -10
  658. package/dist/SemanticMemoryIndex.mjs.map +0 -1
  659. package/dist/SemanticMemoryRevalidation.d.mts +0 -5
  660. package/dist/SemanticMemoryRevalidation.mjs +0 -10
  661. package/dist/SemanticMemoryRevalidation.mjs.map +0 -1
  662. package/dist/Subagent.d.mts +0 -5
  663. package/dist/Subagent.mjs +0 -10
  664. package/dist/Subagent.mjs.map +0 -1
  665. package/dist/SubagentContract.d.mts +0 -5
  666. package/dist/SubagentContract.mjs +0 -10
  667. package/dist/SubagentContract.mjs.map +0 -1
  668. package/dist/SubagentHost.d.mts +0 -5
  669. package/dist/SubagentHost.mjs +0 -10
  670. package/dist/SubagentHost.mjs.map +0 -1
  671. package/dist/SubagentReservations.d.mts +0 -5
  672. package/dist/SubagentReservations.mjs +0 -10
  673. package/dist/SubagentReservations.mjs.map +0 -1
  674. package/dist/ThreadHistory.d.mts +0 -5
  675. package/dist/ThreadHistory.mjs +0 -10
  676. package/dist/ThreadHistory.mjs.map +0 -1
  677. package/dist/ToolBroker.d.mts +0 -5
  678. package/dist/ToolBroker.mjs +0 -10
  679. package/dist/ToolBroker.mjs.map +0 -1
  680. package/dist/ToolDiscovery.d.mts +0 -5
  681. package/dist/ToolDiscovery.mjs +0 -10
  682. package/dist/ToolDiscovery.mjs.map +0 -1
  683. package/dist/ToolResult.d.mts +0 -5
  684. package/dist/ToolResult.mjs +0 -10
  685. package/dist/ToolResult.mjs.map +0 -1
  686. package/dist/Usage.d.mts +0 -5
  687. package/dist/Usage.mjs +0 -10
  688. package/dist/Usage.mjs.map +0 -1
  689. package/dist/WebCapture.d.mts +0 -5
  690. package/dist/WebCapture.mjs +0 -10
  691. package/dist/WebCapture.mjs.map +0 -1
  692. package/dist/WebSearch.d.mts +0 -5
  693. package/dist/WebSearch.mjs +0 -10
  694. package/dist/WebSearch.mjs.map +0 -1
  695. package/dist/Worker.d.mts +0 -5
  696. package/dist/Worker.mjs +0 -10
  697. package/dist/Worker.mjs.map +0 -1
  698. package/dist/rolldown-runtime-BBjsoOtd.mjs +0 -27
  699. package/src/Agent.ts +0 -1
  700. package/src/AgentError.ts +0 -1
  701. package/src/AgentPolicy.ts +0 -1
  702. package/src/AgentRuntime.ts +0 -1
  703. package/src/AgentUpdates.ts +0 -1
  704. package/src/Approval.ts +0 -1
  705. package/src/Budget.ts +0 -1
  706. package/src/CodeMode.ts +0 -1
  707. package/src/Commands.ts +0 -1
  708. package/src/Compaction.ts +0 -1
  709. package/src/ContextCompactor.ts +0 -1
  710. package/src/ContextHistory.ts +0 -1
  711. package/src/ContextTools.ts +0 -1
  712. package/src/ContextWindow.ts +0 -1
  713. package/src/DurableStep.ts +0 -1
  714. package/src/EphemeralThreads.ts +0 -1
  715. package/src/IdGenerator.ts +0 -1
  716. package/src/Identifiers.ts +0 -1
  717. package/src/Mcp.ts +0 -1
  718. package/src/McpClient.ts +0 -1
  719. package/src/Memory.ts +0 -1
  720. package/src/MemoryNamespace.ts +0 -1
  721. package/src/MemoryNotes.ts +0 -1
  722. package/src/MemoryReference.ts +0 -1
  723. package/src/MemoryRevalidation.ts +0 -1
  724. package/src/MemoryStore.ts +0 -1
  725. package/src/Messaging.ts +0 -1
  726. package/src/MessagingHost.ts +0 -1
  727. package/src/ModelContext.ts +0 -1
  728. package/src/Receipt.ts +0 -1
  729. package/src/Redaction.ts +0 -1
  730. package/src/Remembering.ts +0 -1
  731. package/src/RememberingStore.ts +0 -1
  732. package/src/RunEvent.ts +0 -1
  733. package/src/RunEventSink.ts +0 -1
  734. package/src/RunHooks.ts +0 -1
  735. package/src/RunOptions.ts +0 -1
  736. package/src/RunPolicyUsage.ts +0 -1
  737. package/src/SemanticMemory.ts +0 -1
  738. package/src/SemanticMemoryIndex.ts +0 -1
  739. package/src/SemanticMemoryRevalidation.ts +0 -1
  740. package/src/Subagent.ts +0 -1
  741. package/src/SubagentContract.ts +0 -1
  742. package/src/SubagentHost.ts +0 -1
  743. package/src/SubagentReservations.ts +0 -1
  744. package/src/ThreadHistory.ts +0 -1
  745. package/src/ToolBroker.ts +0 -1
  746. package/src/ToolDiscovery.ts +0 -1
  747. package/src/ToolResult.ts +0 -1
  748. package/src/Usage.ts +0 -1
  749. package/src/WebCapture.ts +0 -1
  750. package/src/WebSearch.ts +0 -1
  751. package/src/Worker.ts +0 -1
@@ -0,0 +1,495 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { ThreadId } from "../core/Identifiers.mjs";
3
+ import { IdempotencyKey, Receipt } from "../core/Receipt.mjs";
4
+ import { WorkerUpdate } from "../core/Worker.mjs";
5
+ import { Digest } from "./Records.mjs";
6
+ import { Settlement } from "./SubmissionLedger.mjs";
7
+ import { digestJson } from "./Digest.mjs";
8
+ import { ScheduleInstant, ScheduleRetry, ScheduleRetryReason } from "./Schedule.mjs";
9
+ import { PreparedInputAdmission, admitPreparedInput } from "./PreparedInputAdmission.mjs";
10
+ import { PreparedInput } from "./Subscription.mjs";
11
+ import { Clock, Context, Crypto, Effect, Layer, Result, Schema, Semaphore } from "effect";
12
+ //#region src/durable/MessageDelivery.ts
13
+ var MessageDelivery_exports = /* @__PURE__ */ __exportAll({
14
+ MessageDeliveryChange: () => MessageDeliveryChange,
15
+ MessageDeliveryDriver: () => MessageDeliveryDriver,
16
+ MessageDeliveryDriverLimits: () => MessageDeliveryDriverLimits,
17
+ MessageDeliveryError: () => MessageDeliveryError,
18
+ MessageDeliveryFailpoint: () => MessageDeliveryFailpoint,
19
+ MessageDeliveryFailpointError: () => MessageDeliveryFailpointError,
20
+ MessageDeliveryKey: () => MessageDeliveryKey,
21
+ MessageDeliveryPageRequest: () => MessageDeliveryPageRequest,
22
+ MessageDeliveryPolicy: () => MessageDeliveryPolicy,
23
+ MessageDeliveryRecord: () => MessageDeliveryRecord,
24
+ MessageDeliveryStore: () => MessageDeliveryStore,
25
+ MessageDeliveryStoreLimits: () => MessageDeliveryStoreLimits,
26
+ applyMessageDeliveryChange: () => applyMessageDeliveryChange,
27
+ defaultMessageDeliveryPolicy: () => defaultMessageDeliveryPolicy,
28
+ defaultMessageDeliveryStoreLimits: () => defaultMessageDeliveryStoreLimits,
29
+ isWorkerUpdateDelivery: () => isWorkerUpdateDelivery,
30
+ messageDeliveryCapacity: () => messageDeliveryCapacity,
31
+ messageDeliveryDeadline: () => messageDeliveryDeadline,
32
+ messageDeliveryKeyString: () => messageDeliveryKeyString,
33
+ messageDeliveryUsesCapacity: () => messageDeliveryUsesCapacity,
34
+ prepareMessageDelivery: () => prepareMessageDelivery,
35
+ sameMessageDeliveryIdentity: () => sameMessageDeliveryIdentity,
36
+ validateMessageDelivery: () => validateMessageDelivery
37
+ });
38
+ const Positive = Schema.Int.check(Schema.isGreaterThan(0));
39
+ const BoundedName = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256));
40
+ /** An owner is always a source Thread. Destination admission has its own frozen key. */
41
+ const MessageDeliveryKey = Schema.Struct({
42
+ ownerThreadId: ThreadId,
43
+ messageId: IdempotencyKey
44
+ });
45
+ const MessageDeliveryPolicy = Schema.Struct({
46
+ maxAutomaticAttempts: Positive.check(Schema.isLessThanOrEqualTo(100)),
47
+ attemptTimeoutMillis: Positive.check(Schema.isLessThanOrEqualTo(3e5)),
48
+ retryBaseMillis: Positive,
49
+ retryMaxMillis: Positive,
50
+ settlementPollMillis: Positive
51
+ }).check(Schema.makeFilter((value) => value.retryBaseMillis <= value.retryMaxMillis));
52
+ const defaultMessageDeliveryPolicy = {
53
+ maxAutomaticAttempts: 8,
54
+ attemptTimeoutMillis: 3e4,
55
+ retryBaseMillis: 1e3,
56
+ retryMaxMillis: 6e4,
57
+ settlementPollMillis: 5e3
58
+ };
59
+ const MessageDeliveryStoreLimits = Schema.Struct({
60
+ maxPendingPerOwner: Positive,
61
+ maxRetainedPerOwner: Positive,
62
+ maxEnvelopeBytes: Positive,
63
+ /** Separate update capacity preserves the full ordinary allowance for terminal reports. */
64
+ maxPendingUpdatesPerOwner: Schema.optionalKey(Positive),
65
+ maxRetainedUpdatesPerOwner: Schema.optionalKey(Positive)
66
+ }).check(Schema.makeFilter((value) => value.maxPendingPerOwner <= value.maxRetainedPerOwner && (value.maxPendingUpdatesPerOwner ?? 32) <= (value.maxRetainedUpdatesPerOwner ?? 256)));
67
+ const defaultMessageDeliveryStoreLimits = {
68
+ maxPendingPerOwner: 100,
69
+ maxRetainedPerOwner: 1e3,
70
+ maxEnvelopeBytes: 262144,
71
+ maxPendingUpdatesPerOwner: 32,
72
+ maxRetainedUpdatesPerOwner: 256
73
+ };
74
+ const ParkReason = Schema.Literals([
75
+ "exhausted",
76
+ "deadline",
77
+ "status-unavailable"
78
+ ]);
79
+ const MessageDeliveryRecord = Schema.Struct({
80
+ schemaVersion: Schema.Literal(1),
81
+ key: MessageDeliveryKey,
82
+ envelope: PreparedInput,
83
+ envelopeDigest: Digest,
84
+ /** Same-owner predecessor whose admission must be known before this message is submitted. */
85
+ predecessor: Schema.optionalKey(IdempotencyKey),
86
+ createdAtMillis: ScheduleInstant,
87
+ /** Immutable creation identity; explicit recovery only renews deadlineAtMillis. */
88
+ initialDeadlineAtMillis: ScheduleInstant,
89
+ deadlineAtMillis: ScheduleInstant,
90
+ policy: MessageDeliveryPolicy,
91
+ version: Positive,
92
+ status: Schema.Literals([
93
+ "pending",
94
+ "accepted",
95
+ "processed",
96
+ "refused",
97
+ "parked"
98
+ ]),
99
+ receipt: Schema.NullOr(Receipt),
100
+ settlement: Schema.NullOr(Settlement),
101
+ refusal: Schema.NullOr(BoundedName),
102
+ parkReason: Schema.NullOr(ParkReason),
103
+ leaseUntilMillis: Schema.NullOr(ScheduleInstant),
104
+ retry: ScheduleRetry
105
+ }).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)));
106
+ var MessageDeliveryError = class extends Schema.TaggedError()("MessageDeliveryError", {
107
+ reason: Schema.Literals([
108
+ "validation",
109
+ "conflict",
110
+ "capacity",
111
+ "not-found",
112
+ "storage",
113
+ "corrupt"
114
+ ]),
115
+ operation: Schema.String
116
+ }) {};
117
+ var MessageDeliveryFailpointError = class extends Schema.TaggedError()("MessageDeliveryFailpointError", { point: Schema.String }) {};
118
+ const MessageDeliveryFailpoint = Context.Reference("@effect-agent/thread/MessageDeliveryFailpoint", { defaultValue: () => ({ hit: () => Effect.void }) });
119
+ const fence = {
120
+ expectedVersion: Positive,
121
+ nowMillis: ScheduleInstant
122
+ };
123
+ const MessageDeliveryChange = Schema.Union([
124
+ Schema.Struct({
125
+ _tag: Schema.Literal("Claim"),
126
+ ...fence
127
+ }),
128
+ Schema.Struct({
129
+ _tag: Schema.Literal("Accept"),
130
+ ...fence,
131
+ receipt: Receipt
132
+ }),
133
+ Schema.Struct({
134
+ _tag: Schema.Literal("Process"),
135
+ ...fence,
136
+ settlement: Settlement
137
+ }),
138
+ Schema.Struct({
139
+ _tag: Schema.Literal("ObservePending"),
140
+ ...fence
141
+ }),
142
+ Schema.Struct({
143
+ _tag: Schema.Literal("Refuse"),
144
+ ...fence,
145
+ code: BoundedName
146
+ }),
147
+ Schema.Struct({
148
+ _tag: Schema.Literal("Retry"),
149
+ ...fence,
150
+ reason: ScheduleRetryReason
151
+ }),
152
+ Schema.Struct({
153
+ _tag: Schema.Literal("Park"),
154
+ ...fence,
155
+ reason: ParkReason
156
+ }),
157
+ Schema.Struct({
158
+ _tag: Schema.Literal("Recover"),
159
+ ...fence,
160
+ deadlineAtMillis: ScheduleInstant
161
+ }),
162
+ Schema.Struct({
163
+ _tag: Schema.Literal("Defer"),
164
+ ...fence,
165
+ untilMillis: ScheduleInstant
166
+ })
167
+ ]);
168
+ const MessageDeliveryPageRequest = Schema.Struct({
169
+ ownerThreadId: ThreadId,
170
+ limit: Positive.check(Schema.isLessThanOrEqualTo(100)),
171
+ after: Schema.optionalKey(IdempotencyKey)
172
+ });
173
+ /**
174
+ * Trusted host port, independent of either Thread's active Submission. List/get require an owner.
175
+ * Inserts and changes are atomic; identical inserts return current state even after completion.
176
+ * No automatic deletion: completed rows retain deduplication evidence and count toward retention.
177
+ * `due`/`nextDeadline` are bounded host recovery seams, never model-facing management operations.
178
+ */
179
+ var MessageDeliveryStore = class extends Context.Service()("@effect-agent/thread/MessageDeliveryStore") {};
180
+ const messageDeliveryKeyString = (key) => JSON.stringify([key.ownerThreadId, key.messageId]);
181
+ const messageDeliveryUsesCapacity = (record) => record.status !== "processed" && record.status !== "refused";
182
+ const isWorkerUpdateDelivery = (record) => Schema.is(WorkerUpdate)(record.envelope.messageAdmission);
183
+ const messageDeliveryCapacity = (limits, update) => ({
184
+ pending: update ? limits.maxPendingUpdatesPerOwner ?? 32 : limits.maxPendingPerOwner,
185
+ retained: update ? limits.maxRetainedUpdatesPerOwner ?? 256 : limits.maxRetainedPerOwner
186
+ });
187
+ const messageDeliveryDeadline = (record) => record.status === "pending" || record.status === "accepted" ? Math.min(record.deadlineAtMillis, record.leaseUntilMillis ?? record.retry.nextAttemptAtMillis) : null;
188
+ /** Creation identity deliberately excludes operational counters and renewed recovery deadlines. */
189
+ 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;
190
+ const error = (reason, operation) => MessageDeliveryError.make({
191
+ reason,
192
+ operation
193
+ });
194
+ const validateMessageDelivery = (schema, value, operation) => Schema.decodeUnknownEffect(Schema.toType(schema))(value).pipe(Effect.mapError(() => error("validation", operation)));
195
+ const MessageDeliveryPreparation = Schema.Struct({
196
+ key: MessageDeliveryKey,
197
+ envelope: PreparedInput,
198
+ createdAtMillis: ScheduleInstant,
199
+ deadlineAtMillis: ScheduleInstant,
200
+ policy: MessageDeliveryPolicy,
201
+ predecessor: Schema.optionalKey(IdempotencyKey)
202
+ });
203
+ /** Freeze and digest the complete admission envelope before publishing the obligation. */
204
+ const prepareMessageDelivery = Effect.fn("MessageDelivery.prepare")(function* (options) {
205
+ const snapshot = yield* Schema.encodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))({
206
+ ...options,
207
+ policy: options.policy ?? defaultMessageDeliveryPolicy
208
+ }).pipe(Effect.flatMap(Schema.decodeEffect(Schema.fromJsonString(MessageDeliveryPreparation))), Effect.mapError(() => error("validation", "prepare")));
209
+ const envelope = snapshot.envelope;
210
+ const encoded = yield* Schema.encodeEffect(PreparedInput)(envelope).pipe(Effect.mapError(() => error("validation", "prepare")));
211
+ if ((yield* digestJson(encoded.input).pipe(Effect.mapError(() => error("storage", "digest")))) !== envelope.inputDigest) return yield* error("corrupt", "input-digest");
212
+ const envelopeDigest = yield* digestJson(encoded).pipe(Effect.mapError(() => error("storage", "digest")));
213
+ return yield* validateMessageDelivery(MessageDeliveryRecord, {
214
+ schemaVersion: 1,
215
+ key: snapshot.key,
216
+ envelope,
217
+ envelopeDigest,
218
+ ...snapshot.predecessor === void 0 ? {} : { predecessor: snapshot.predecessor },
219
+ createdAtMillis: snapshot.createdAtMillis,
220
+ initialDeadlineAtMillis: snapshot.deadlineAtMillis,
221
+ deadlineAtMillis: snapshot.deadlineAtMillis,
222
+ policy: snapshot.policy,
223
+ version: 1,
224
+ status: "pending",
225
+ receipt: null,
226
+ settlement: null,
227
+ refusal: null,
228
+ parkReason: null,
229
+ leaseUntilMillis: null,
230
+ retry: {
231
+ attempts: 0,
232
+ generation: 0,
233
+ automaticAttempts: 0,
234
+ parked: false,
235
+ nextAttemptAtMillis: snapshot.createdAtMillis,
236
+ lastAttemptAtMillis: null,
237
+ lastFailure: null
238
+ }
239
+ }, "prepare");
240
+ });
241
+ /** Pure reducer used under the adapter's atomic compare-and-swap boundary. */
242
+ const applyMessageDeliveryChange = (record, change) => {
243
+ const conflict = () => Result.fail(error("conflict", change._tag));
244
+ if (record.version !== change.expectedVersion) return conflict();
245
+ if (record.status === "processed" || record.status === "refused") return conflict();
246
+ const now = change.nowMillis;
247
+ const base = {
248
+ ...record,
249
+ version: record.version + 1
250
+ };
251
+ const parked = (reason) => ({
252
+ ...base,
253
+ status: "parked",
254
+ parkReason: reason,
255
+ leaseUntilMillis: null,
256
+ retry: {
257
+ ...record.retry,
258
+ parked: true
259
+ }
260
+ });
261
+ if (change._tag === "Defer") {
262
+ if (record.status !== "pending" || record.leaseUntilMillis !== null && record.leaseUntilMillis > now) return conflict();
263
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
264
+ if (change.untilMillis <= now) return conflict();
265
+ return Result.succeed({
266
+ ...base,
267
+ leaseUntilMillis: null,
268
+ retry: {
269
+ ...record.retry,
270
+ nextAttemptAtMillis: Math.min(change.untilMillis, record.deadlineAtMillis)
271
+ }
272
+ });
273
+ }
274
+ if (change._tag === "Recover") {
275
+ if (record.status !== "parked" || change.deadlineAtMillis <= now) return conflict();
276
+ return Result.succeed({
277
+ ...base,
278
+ deadlineAtMillis: change.deadlineAtMillis,
279
+ status: record.receipt === null ? "pending" : "accepted",
280
+ parkReason: null,
281
+ retry: {
282
+ ...record.retry,
283
+ generation: record.retry.generation + 1,
284
+ automaticAttempts: 0,
285
+ parked: false,
286
+ nextAttemptAtMillis: now
287
+ }
288
+ });
289
+ }
290
+ if (record.status === "parked") return conflict();
291
+ if (change._tag === "Park") return Result.succeed(parked(change.reason));
292
+ if (change._tag === "Claim") {
293
+ const due = messageDeliveryDeadline(record);
294
+ if (due === null || due > now) return conflict();
295
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
296
+ if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts) return Result.succeed(parked("exhausted"));
297
+ return Result.succeed({
298
+ ...base,
299
+ leaseUntilMillis: Math.min(now + record.policy.attemptTimeoutMillis, record.deadlineAtMillis),
300
+ retry: {
301
+ ...record.retry,
302
+ attempts: record.retry.attempts + 1,
303
+ automaticAttempts: record.retry.automaticAttempts + 1,
304
+ lastAttemptAtMillis: now
305
+ }
306
+ });
307
+ }
308
+ if (record.leaseUntilMillis === null || now > record.leaseUntilMillis) return conflict();
309
+ if (change._tag === "Accept") {
310
+ if (record.status !== "pending") return conflict();
311
+ if (change.receipt.threadId !== record.envelope.threadId) return Result.fail(error("corrupt", "receipt-identity"));
312
+ return Result.succeed({
313
+ ...base,
314
+ status: "accepted",
315
+ receipt: change.receipt,
316
+ leaseUntilMillis: null,
317
+ retry: {
318
+ ...record.retry,
319
+ automaticAttempts: 0,
320
+ nextAttemptAtMillis: Math.min(now + record.policy.settlementPollMillis, record.deadlineAtMillis),
321
+ lastFailure: null
322
+ }
323
+ });
324
+ }
325
+ if (change._tag === "Process") {
326
+ if (record.status !== "accepted") return conflict();
327
+ if (change.settlement.submissionId !== record.receipt?.submissionId || change.settlement.receiptId !== record.receipt.receiptId) return Result.fail(error("corrupt", "settlement-identity"));
328
+ return Result.succeed({
329
+ ...base,
330
+ status: "processed",
331
+ settlement: change.settlement,
332
+ leaseUntilMillis: null
333
+ });
334
+ }
335
+ if (change._tag === "ObservePending") {
336
+ if (record.status !== "accepted") return conflict();
337
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
338
+ return Result.succeed({
339
+ ...base,
340
+ leaseUntilMillis: null,
341
+ retry: {
342
+ ...record.retry,
343
+ automaticAttempts: 0,
344
+ lastFailure: null,
345
+ nextAttemptAtMillis: Math.min(now + record.policy.settlementPollMillis, record.deadlineAtMillis)
346
+ }
347
+ });
348
+ }
349
+ if (change._tag === "Refuse") {
350
+ if (record.status !== "pending") return conflict();
351
+ return Result.succeed({
352
+ ...base,
353
+ status: "refused",
354
+ refusal: change.code,
355
+ leaseUntilMillis: null
356
+ });
357
+ }
358
+ if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
359
+ if (record.retry.automaticAttempts >= record.policy.maxAutomaticAttempts) return Result.succeed(parked("exhausted"));
360
+ const delay = Math.min(record.policy.retryBaseMillis * 2 ** Math.min(record.retry.automaticAttempts - 1, 52), record.policy.retryMaxMillis);
361
+ return Result.succeed({
362
+ ...base,
363
+ leaseUntilMillis: null,
364
+ retry: {
365
+ ...record.retry,
366
+ nextAttemptAtMillis: Math.min(now + (record.status === "accepted" ? record.policy.settlementPollMillis : delay), record.deadlineAtMillis),
367
+ lastFailure: change.reason
368
+ }
369
+ });
370
+ };
371
+ const MessageDeliveryDriverLimits = Schema.Struct({
372
+ batchSize: Positive.check(Schema.isLessThanOrEqualTo(100)),
373
+ concurrency: Positive.check(Schema.isLessThanOrEqualTo(32))
374
+ });
375
+ /**
376
+ * Finite, structured host pump. The host owns its Scope and wakes it from nextDeadline even
377
+ * after source/receiver settlement. Failed or interrupted calls retain their expiring claim;
378
+ * no ordinary tool is replayed here, only idempotent PreparedInput admission/status lookup.
379
+ * Spans expose operation names; envelopes, principals, and message contents are never logged.
380
+ */
381
+ var MessageDeliveryDriver = class MessageDeliveryDriver extends Context.Service()("@effect-agent/thread/MessageDeliveryDriver") {
382
+ static layer(limits = {
383
+ batchSize: 100,
384
+ concurrency: 4
385
+ }) {
386
+ return Layer.effect(MessageDeliveryDriver, Effect.gen(function* () {
387
+ const config = yield* validateMessageDelivery(MessageDeliveryDriverLimits, limits, "driver-limits");
388
+ const store = yield* MessageDeliveryStore;
389
+ const admission = yield* PreparedInputAdmission;
390
+ const crypto = yield* Crypto.Crypto;
391
+ const failpoint = yield* MessageDeliveryFailpoint;
392
+ const semaphore = yield* Semaphore.make(config.concurrency);
393
+ const process = Effect.fn("MessageDelivery.process")((key) => semaphore.withPermit(Effect.gen(function* () {
394
+ const current = yield* store.get(key);
395
+ if (current === null) return yield* error("not-found", "process");
396
+ const nowMillis = yield* Clock.currentTimeMillis;
397
+ const due = messageDeliveryDeadline(current);
398
+ if (due === null || due > nowMillis) return current;
399
+ if (current.status === "pending" && current.predecessor !== void 0) {
400
+ const previous = yield* store.get({
401
+ ownerThreadId: key.ownerThreadId,
402
+ messageId: current.predecessor
403
+ });
404
+ if (previous === null || previous.receipt === null && previous.status !== "refused") return yield* store.change(key, {
405
+ _tag: "Defer",
406
+ expectedVersion: current.version,
407
+ nowMillis,
408
+ untilMillis: nowMillis + current.policy.settlementPollMillis
409
+ });
410
+ }
411
+ const claimed = yield* store.change(key, {
412
+ _tag: "Claim",
413
+ expectedVersion: current.version,
414
+ nowMillis
415
+ });
416
+ if (claimed.status === "parked") return claimed;
417
+ const envelope = yield* Schema.encodeEffect(PreparedInput)(claimed.envelope).pipe(Effect.mapError(() => error("corrupt", "envelope")));
418
+ if ((yield* digestJson(envelope).pipe(Effect.provideService(Crypto.Crypto, crypto), Effect.mapError(() => error("storage", "digest")))) !== claimed.envelopeDigest) return yield* error("corrupt", "envelope-digest");
419
+ const timeout = Math.min(claimed.policy.attemptTimeoutMillis, (claimed.leaseUntilMillis ?? claimed.deadlineAtMillis) - (yield* Clock.currentTimeMillis));
420
+ if (timeout <= 0) return claimed;
421
+ const commit = (change) => Clock.currentTimeMillis.pipe(Effect.flatMap((time) => store.change(key, {
422
+ ...change,
423
+ expectedVersion: claimed.version,
424
+ nowMillis: time
425
+ })));
426
+ if (claimed.status === "pending") {
427
+ const outcome = yield* admitPreparedInput(admission.submit(claimed.envelope), timeout).pipe(Effect.mapError(() => error("corrupt", "admission")));
428
+ yield* failpoint.hit("message-delivery:admission:after");
429
+ if (outcome._tag === "Receipt") return yield* commit({
430
+ _tag: "Accept",
431
+ receipt: outcome.receipt
432
+ });
433
+ if (outcome._tag === "Refused") return yield* commit({
434
+ _tag: "Refuse",
435
+ code: outcome.error.code
436
+ });
437
+ return yield* commit({
438
+ _tag: "Retry",
439
+ reason: outcome.reason
440
+ });
441
+ }
442
+ if (claimed.receipt === null) return yield* error("corrupt", "receipt");
443
+ if (admission.submissionStatus === void 0) return yield* commit({
444
+ _tag: "Park",
445
+ reason: "status-unavailable"
446
+ });
447
+ const status = yield* admission.submissionStatus(claimed.receipt).pipe(Effect.timeout(timeout), Effect.map((status) => ({
448
+ _tag: "Status",
449
+ status
450
+ })), Effect.catchTag("ScheduledInputRetryable", (failure) => Effect.succeed({
451
+ _tag: "Retry",
452
+ reason: failure.reason
453
+ })), Effect.catchTag("ScheduledInputRefused", () => Effect.succeed({ _tag: "Unavailable" })), Effect.catchTag("TimeoutError", () => Effect.succeed({
454
+ _tag: "Retry",
455
+ reason: "timeout"
456
+ })), Effect.catchTag("ScheduleStorageError", (failure) => failure.reason === "unavailable" ? Effect.succeed({
457
+ _tag: "Retry",
458
+ reason: "storage"
459
+ }) : Effect.fail(error("corrupt", "status"))));
460
+ if (status._tag === "Unavailable") return yield* commit({
461
+ _tag: "Park",
462
+ reason: "status-unavailable"
463
+ });
464
+ if (status._tag === "Status" && status.status._tag === "settled") return yield* commit({
465
+ _tag: "Process",
466
+ settlement: status.status.settlement
467
+ });
468
+ if (status._tag === "Status") return yield* commit({ _tag: "ObservePending" });
469
+ return yield* commit({
470
+ _tag: "Retry",
471
+ reason: status.reason
472
+ });
473
+ })).pipe(Effect.catchTag("MessageDeliveryError", (failure) => failure.reason === "conflict" ? store.get(key).pipe(Effect.filterOrFail((record) => record !== null, () => failure)) : Effect.fail(failure))));
474
+ return MessageDeliveryDriver.of({
475
+ process,
476
+ runDue: Effect.fn("MessageDelivery.runDue")(function* (ownerThreadId) {
477
+ const keys = yield* store.due(yield* Clock.currentTimeMillis, config.batchSize, ownerThreadId);
478
+ return yield* Effect.forEach(keys, process, { concurrency: config.concurrency });
479
+ }),
480
+ retry: Effect.fn("MessageDelivery.retry")(function* (key, expectedVersion, deadlineAtMillis) {
481
+ return yield* store.change(key, {
482
+ _tag: "Recover",
483
+ expectedVersion,
484
+ deadlineAtMillis,
485
+ nowMillis: yield* Clock.currentTimeMillis
486
+ });
487
+ })
488
+ });
489
+ }));
490
+ }
491
+ };
492
+ //#endregion
493
+ export { MessageDeliveryChange, MessageDeliveryDriver, MessageDeliveryDriverLimits, MessageDeliveryError, MessageDeliveryFailpoint, MessageDeliveryFailpointError, MessageDeliveryKey, MessageDeliveryPageRequest, MessageDeliveryPolicy, MessageDeliveryRecord, MessageDeliveryStore, MessageDeliveryStoreLimits, applyMessageDeliveryChange, defaultMessageDeliveryPolicy, defaultMessageDeliveryStoreLimits, isWorkerUpdateDelivery, messageDeliveryCapacity, messageDeliveryDeadline, messageDeliveryKeyString, messageDeliveryUsesCapacity, prepareMessageDelivery, sameMessageDeliveryIdentity, MessageDelivery_exports as t, validateMessageDelivery };
494
+
495
+ //# sourceMappingURL=MessageDelivery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageDelivery.mjs","names":[],"sources":["../../src/durable/MessageDelivery.ts"],"sourcesContent":["import { Clock, Context, Crypto, Effect, Layer, Result, Schema, Semaphore } from \"effect\";\n\nimport { 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}).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 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({ _tag: Schema.Literal(\"Refuse\"), ...fence, code: BoundedName }),\n Schema.Struct({ _tag: Schema.Literal(\"Retry\"), ...fence, reason: ScheduleRetryReason }),\n Schema.Struct({ _tag: Schema.Literal(\"Park\"), ...fence, reason: ParkReason }),\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\nexport const MessageDeliveryPageRequest = Schema.Struct({\n ownerThreadId: ThreadId,\n limit: Positive.check(Schema.isLessThanOrEqualTo(100)),\n after: Schema.optionalKey(IdempotencyKey),\n});\n\nexport type MessageDeliveryPageRequest = typeof MessageDeliveryPageRequest.Type;\n\nexport interface MessageDeliveryPage {\n readonly items: ReadonlyArray<MessageDeliveryRecord>;\n readonly next: IdempotencyKey | null;\n}\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\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) =>\n MessageDeliveryError.make({ reason, operation });\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(() => error(\"validation\", \"prepare\")),\n );\n\n const envelope = snapshot.envelope;\n\n const encoded = yield* Schema.encodeEffect(PreparedInput)(envelope).pipe(\n Effect.mapError(() => error(\"validation\", \"prepare\")),\n );\n\n const inputDigest = yield* digestJson(encoded.input).pipe(\n Effect.mapError(() => error(\"storage\", \"digest\")),\n );\n\n if (inputDigest !== envelope.inputDigest) return yield* error(\"corrupt\", \"input-digest\");\n\n const envelopeDigest = yield* digestJson(encoded).pipe(\n Effect.mapError(() => error(\"storage\", \"digest\")),\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 const base = { ...record, version: record.version + 1 };\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(() => error(\"corrupt\", \"envelope\")),\n );\n\n const digest = yield* digestJson(envelope).pipe(\n Effect.provideService(Crypto.Crypto, crypto),\n Effect.mapError(() => error(\"storage\", \"digest\")),\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(() => error(\"corrupt\", \"admission\")));\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({ _tag: \"Refuse\", code: outcome.error.code });\n\n return yield* commit({ _tag: \"Retry\", reason: outcome.reason });\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({ _tag: \"Retry\" as const, reason: failure.reason }),\n ),\n Effect.catchTag(\"ScheduledInputRefused\", () =>\n Effect.succeed({ _tag: \"Unavailable\" as const }),\n ),\n Effect.catchTag(\"TimeoutError\", () =>\n Effect.succeed({ _tag: \"Retry\" as const, reason: \"timeout\" as const }),\n ),\n Effect.catchTag(\"ScheduleStorageError\", (failure) =>\n failure.reason === \"unavailable\"\n ? Effect.succeed({ _tag: \"Retry\" as const, reason: \"storage\" as const })\n : Effect.fail(error(\"corrupt\", \"status\")),\n ),\n );\n\n if (status._tag === \"Unavailable\")\n return yield* commit({ _tag: \"Park\", reason: \"status-unavailable\" });\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({ _tag: \"Retry\", reason: status.reason });\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,WAAW,OAAO,IAAI,MAAM,OAAO,cAAc,CAAC,CAAC;AACzD,MAAM,cAAc,OAAO,OAAO,MAAM,OAAO,YAAY,CAAC,GAAG,OAAO,YAAY,GAAG,CAAC;;AAGtF,MAAa,qBAAqB,OAAO,OAAO;CAC9C,eAAe;CACf,WAAW;AACb,CAAC;AAID,MAAa,wBAAwB,OAAO,OAAO;CACjD,sBAAsB,SAAS,MAAM,OAAO,oBAAoB,GAAG,CAAC;CACpE,sBAAsB,SAAS,MAAM,OAAO,oBAAoB,GAAO,CAAC;CACxE,iBAAiB;CACjB,gBAAgB;CAChB,sBAAsB;AACxB,CAAC,CAAC,CAAC,MAAM,OAAO,YAAY,UAAU,MAAM,mBAAmB,MAAM,cAAc,CAAC;AAIpF,MAAa,+BAAsD;CACjE,sBAAsB;CACtB,sBAAsB;CACtB,iBAAiB;CACjB,gBAAgB;CAChB,sBAAsB;AACxB;AAEA,MAAa,6BAA6B,OAAO,OAAO;CACtD,oBAAoB;CACpB,qBAAqB;CACrB,kBAAkB;;CAElB,2BAA2B,OAAO,YAAY,QAAQ;CACtD,4BAA4B,OAAO,YAAY,QAAQ;AACzD,CAAC,CAAC,CAAC,MACD,OAAO,YACJ,UACC,MAAM,sBAAsB,MAAM,wBACjC,MAAM,6BAA6B,QAAQ,MAAM,8BAA8B,IACpF,CACF;AAIA,MAAa,oCAAgE;CAC3E,oBAAoB;CACpB,qBAAqB;CACrB,kBAAkB;CAClB,2BAA2B;CAC3B,4BAA4B;AAC9B;AAEA,MAAM,aAAa,OAAO,SAAS;CAAC;CAAa;CAAY;AAAoB,CAAC;AAElF,MAAa,wBAAwB,OAAO,OAAO;CACjD,eAAe,OAAO,QAAQ,CAAC;CAC/B,KAAK;CACL,UAAU;CACV,gBAAgB;;CAEhB,aAAa,OAAO,YAAY,cAAc;CAC9C,iBAAiB;;CAEjB,yBAAyB;CACzB,kBAAkB;CAClB,QAAQ;CACR,SAAS;CACT,QAAQ,OAAO,SAAS;EAAC;EAAW;EAAY;EAAa;EAAW;CAAQ,CAAC;CACjF,SAAS,OAAO,OAAO,OAAO;CAC9B,YAAY,OAAO,OAAO,UAAU;CACpC,SAAS,OAAO,OAAO,WAAW;CAClC,YAAY,OAAO,OAAO,UAAU;CACpC,kBAAkB,OAAO,OAAO,eAAe;CAC/C,OAAO;AACT,CAAC,CAAC,CAAC,MACD,OAAO,YACJ,WACC,OAAO,mBAAmB,OAAO,mBACjC,OAAO,0BAA0B,OAAO,mBACxC,OAAO,gBAAgB,OAAO,IAAI,aACjC,OAAO,WAAW,iBAAkB,OAAO,eAAe,SAC1D,OAAO,WAAW,eAAgB,OAAO,YAAY,SACrD,OAAO,WAAW,cAAe,OAAO,eAAe,SACvD,OAAO,WAAW,aAAc,OAAO,MAAM,WAC7C,OAAO,WAAW,cAAc,OAAO,WAAW,cAC/C,OAAO,YAAY,OACnB,UACH,OAAO,WAAW,aAAa,OAAO,WAAW,YAC9C,OAAO,YAAY,OACnB,UACH,OAAO,YAAY,QAAQ,OAAO,QAAQ,aAAa,OAAO,SAAS,cACvE,OAAO,eAAe,QACpB,OAAO,WAAW,cAAc,OAAO,SAAS,aAC/C,OAAO,WAAW,iBAAiB,OAAO,QAAQ,kBACrD,OAAO,WAAW,eAAe,OAAO,WAAW,aAAa,OAAO,WAAW,WAC/E,OAAO,qBAAqB,OAC5B,KACR,CACF;AAIA,IAAa,uBAAb,cAA0C,OAAO,YAAkC,CAAC,CAClF,wBACA;CACE,QAAQ,OAAO,SAAS;EACtB;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,WAAW,OAAO;AACpB,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,gCAAb,cAAmD,OAAO,YAA2C,CAAC,CACpG,iCACA,EACE,OAAO,OAAO,OAChB,CACF,CAAC,CAAC,CAAC;AAIH,MAAa,2BAA2B,QAAQ,UAE7C,iDAAiD,EAClD,qBAAqB,EAAE,WAAW,OAAO,KAAK,GAChD,CAAC;AAED,MAAM,QAAQ;CAAE,iBAAiB;CAAU,WAAW;AAAgB;AAEtE,MAAa,wBAAwB,OAAO,MAAM;CAChD,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,OAAO;EAAG,GAAG;CAAM,CAAC;CACzD,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,QAAQ;EAAG,GAAG;EAAO,SAAS;CAAQ,CAAC;CAC5E,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,SAAS;EAAG,GAAG;EAAO,YAAY;CAAW,CAAC;CACnF,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,gBAAgB;EAAG,GAAG;CAAM,CAAC;CAClE,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,QAAQ;EAAG,GAAG;EAAO,MAAM;CAAY,CAAC;CAC7E,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,OAAO;EAAG,GAAG;EAAO,QAAQ;CAAoB,CAAC;CACtF,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,MAAM;EAAG,GAAG;EAAO,QAAQ;CAAW,CAAC;CAC5E,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,SAAS;EAAG,GAAG;EAAO,kBAAkB;CAAgB,CAAC;CAE9F,OAAO,OAAO;EAAE,MAAM,OAAO,QAAQ,OAAO;EAAG,GAAG;EAAO,aAAa;CAAgB,CAAC;AACzF,CAAC;AAID,MAAa,6BAA6B,OAAO,OAAO;CACtD,eAAe;CACf,OAAO,SAAS,MAAM,OAAO,oBAAoB,GAAG,CAAC;CACrD,OAAO,OAAO,YAAY,cAAc;AAC1C,CAAC;;;;;;;AAeD,IAAa,uBAAb,cAA0C,QAAQ,QA2BhD,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC;AAElD,MAAa,4BAA4B,QACvC,KAAK,UAAU,CAAC,IAAI,eAAe,IAAI,SAAS,CAAC;AAEnD,MAAa,+BAA+B,WAC1C,OAAO,WAAW,eAAe,OAAO,WAAW;AAErD,MAAa,0BAA0B,WACrC,OAAO,GAAG,YAAY,CAAC,CAAC,OAAO,SAAS,gBAAgB;AAE1D,MAAa,2BAA2B,QAAoC,YAAqB;CAC/F,SAAS,SAAU,OAAO,6BAA6B,KAAM,OAAO;CACpE,UAAU,SAAU,OAAO,8BAA8B,MAAO,OAAO;AACzE;AAEA,MAAa,2BAA2B,WACtC,OAAO,WAAW,aAAa,OAAO,WAAW,aAC7C,KAAK,IAAI,OAAO,kBAAkB,OAAO,oBAAoB,OAAO,MAAM,mBAAmB,IAC7F;;AAGN,MAAa,+BACX,MACA,UAEA,yBAAyB,KAAK,GAAG,MAAM,yBAAyB,MAAM,GAAG,KACzE,KAAK,mBAAmB,MAAM,kBAC9B,KAAK,gBAAgB,MAAM,eAC3B,OAAO,cAAc,aAAa,CAAC,CAAC,KAAK,UAAU,MAAM,QAAQ,KACjE,OAAO,cAAc,qBAAqB,CAAC,CAAC,KAAK,QAAQ,MAAM,MAAM,KACrE,KAAK,oBAAoB,MAAM,mBAC/B,KAAK,4BAA4B,MAAM;AAEzC,MAAM,SAAS,QAAwC,cACrD,qBAAqB,KAAK;CAAE;CAAQ;AAAU,CAAC;AAEjD,MAAa,2BACX,QACA,OACA,cAEA,OAAO,oBAAoB,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KACvD,OAAO,eAAe,MAAM,cAAc,SAAS,CAAC,CACtD;AAEF,MAAM,6BAA6B,OAAO,OAAO;CAC/C,KAAK;CACL,UAAU;CACV,iBAAiB;CACjB,kBAAkB;CAClB,QAAQ;CACR,aAAa,OAAO,YAAY,cAAc;AAChD,CAAC;;AAGD,MAAa,yBAAyB,OAAO,GAAG,yBAAyB,CAAC,CAAC,WAAW,SAOL;CAE/E,MAAM,WAAW,OAAO,OAAO,aAAa,OAAO,eAAe,0BAA0B,CAAC,CAAC,CAAC;EAC7F,GAAG;EACH,QAAQ,QAAQ,UAAU;CAC5B,CAAC,CAAC,CAAC,KACD,OAAO,QAAQ,OAAO,aAAa,OAAO,eAAe,0BAA0B,CAAC,CAAC,GACrF,OAAO,eAAe,MAAM,cAAc,SAAS,CAAC,CACtD;CAEA,MAAM,WAAW,SAAS;CAE1B,MAAM,UAAU,OAAO,OAAO,aAAa,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,KAClE,OAAO,eAAe,MAAM,cAAc,SAAS,CAAC,CACtD;CAMA,KAAI,OAJuB,WAAW,QAAQ,KAAK,CAAC,CAAC,KACnD,OAAO,eAAe,MAAM,WAAW,QAAQ,CAAC,CAClD,OAEoB,SAAS,aAAa,OAAO,OAAO,MAAM,WAAW,cAAc;CAEvF,MAAM,iBAAiB,OAAO,WAAW,OAAO,CAAC,CAAC,KAChD,OAAO,eAAe,MAAM,WAAW,QAAQ,CAAC,CAClD;CAEA,OAAO,OAAO,wBACZ,uBACA;EACE,eAAe;EACf,KAAK,SAAS;EACd;EACA;EACA,GAAI,SAAS,gBAAgB,KAAA,IAAY,CAAC,IAAI,EAAE,aAAa,SAAS,YAAY;EAClF,iBAAiB,SAAS;EAC1B,yBAAyB,SAAS;EAClC,kBAAkB,SAAS;EAC3B,QAAQ,SAAS;EACjB,SAAS;EACT,QAAQ;EACR,SAAS;EACT,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,kBAAkB;EAClB,OAAO;GACL,UAAU;GACV,YAAY;GACZ,mBAAmB;GACnB,QAAQ;GACR,qBAAqB,SAAS;GAC9B,qBAAqB;GACrB,aAAa;EACf;CACF,GACA,SACF;AACF,CAAC;;AAGD,MAAa,8BACX,QACA,WAC+D;CAC/D,MAAM,iBAAiB,OAAO,KAAK,MAAM,YAAY,OAAO,IAAI,CAAC;CAEjE,IAAI,OAAO,YAAY,OAAO,iBAAiB,OAAO,SAAS;CAC/D,IAAI,OAAO,WAAW,eAAe,OAAO,WAAW,WAAW,OAAO,SAAS;CAClF,MAAM,MAAM,OAAO;CACnB,MAAM,OAAO;EAAE,GAAG;EAAQ,SAAS,OAAO,UAAU;CAAE;CAEtD,MAAM,UAAU,YAA2D;EACzE,GAAG;EACH,QAAQ;EACR,YAAY;EACZ,kBAAkB;EAClB,OAAO;GAAE,GAAG,OAAO;GAAO,QAAQ;EAAK;CACzC;CAEA,IAAI,OAAO,SAAS,SAAS;EAC3B,IACE,OAAO,WAAW,aACjB,OAAO,qBAAqB,QAAQ,OAAO,mBAAmB,KAE/D,OAAO,SAAS;EAClB,IAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,QAAQ,OAAO,UAAU,CAAC;EAC5E,IAAI,OAAO,eAAe,KAAK,OAAO,SAAS;EAE/C,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,kBAAkB;GAClB,OAAO;IACL,GAAG,OAAO;IACV,qBAAqB,KAAK,IAAI,OAAO,aAAa,OAAO,gBAAgB;GAC3E;EACF,CAAC;CACH;CAEA,IAAI,OAAO,SAAS,WAAW;EAC7B,IAAI,OAAO,WAAW,YAAY,OAAO,oBAAoB,KAAK,OAAO,SAAS;EAElF,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,kBAAkB,OAAO;GACzB,QAAQ,OAAO,YAAY,OAAO,YAAY;GAC9C,YAAY;GACZ,OAAO;IACL,GAAG,OAAO;IACV,YAAY,OAAO,MAAM,aAAa;IACtC,mBAAmB;IACnB,QAAQ;IACR,qBAAqB;GACvB;EACF,CAAC;CACH;CACA,IAAI,OAAO,WAAW,UAAU,OAAO,SAAS;CAChD,IAAI,OAAO,SAAS,QAAQ,OAAO,OAAO,QAAQ,OAAO,OAAO,MAAM,CAAC;CACvE,IAAI,OAAO,SAAS,SAAS;EAC3B,MAAM,MAAM,wBAAwB,MAAM;EAE1C,IAAI,QAAQ,QAAQ,MAAM,KAAK,OAAO,SAAS;EAC/C,IAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,QAAQ,OAAO,UAAU,CAAC;EAC5E,IAAI,OAAO,MAAM,qBAAqB,OAAO,OAAO,sBAClD,OAAO,OAAO,QAAQ,OAAO,WAAW,CAAC;EAE3C,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,kBAAkB,KAAK,IAAI,MAAM,OAAO,OAAO,sBAAsB,OAAO,gBAAgB;GAC5F,OAAO;IACL,GAAG,OAAO;IACV,UAAU,OAAO,MAAM,WAAW;IAClC,mBAAmB,OAAO,MAAM,oBAAoB;IACpD,qBAAqB;GACvB;EACF,CAAC;CACH;CACA,IAAI,OAAO,qBAAqB,QAAQ,MAAM,OAAO,kBAAkB,OAAO,SAAS;CACvF,IAAI,OAAO,SAAS,UAAU;EAC5B,IAAI,OAAO,WAAW,WAAW,OAAO,SAAS;EACjD,IAAI,OAAO,QAAQ,aAAa,OAAO,SAAS,UAC9C,OAAO,OAAO,KAAK,MAAM,WAAW,kBAAkB,CAAC;EAEzD,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,QAAQ;GACR,SAAS,OAAO;GAChB,kBAAkB;GAClB,OAAO;IACL,GAAG,OAAO;IACV,mBAAmB;IACnB,qBAAqB,KAAK,IACxB,MAAM,OAAO,OAAO,sBACpB,OAAO,gBACT;IACA,aAAa;GACf;EACF,CAAC;CACH;CACA,IAAI,OAAO,SAAS,WAAW;EAC7B,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS;EAClD,IACE,OAAO,WAAW,iBAAiB,OAAO,SAAS,gBACnD,OAAO,WAAW,cAAc,OAAO,QAAQ,WAE/C,OAAO,OAAO,KAAK,MAAM,WAAW,qBAAqB,CAAC;EAE5D,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,QAAQ;GACR,YAAY,OAAO;GACnB,kBAAkB;EACpB,CAAC;CACH;CACA,IAAI,OAAO,SAAS,kBAAkB;EACpC,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS;EAClD,IAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,QAAQ,OAAO,UAAU,CAAC;EAE5E,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,kBAAkB;GAClB,OAAO;IACL,GAAG,OAAO;IACV,mBAAmB;IACnB,aAAa;IACb,qBAAqB,KAAK,IACxB,MAAM,OAAO,OAAO,sBACpB,OAAO,gBACT;GACF;EACF,CAAC;CACH;CACA,IAAI,OAAO,SAAS,UAAU;EAC5B,IAAI,OAAO,WAAW,WAAW,OAAO,SAAS;EAEjD,OAAO,OAAO,QAAQ;GACpB,GAAG;GACH,QAAQ;GACR,SAAS,OAAO;GAChB,kBAAkB;EACpB,CAAC;CACH;CACA,IAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,QAAQ,OAAO,UAAU,CAAC;CAC5E,IAAI,OAAO,MAAM,qBAAqB,OAAO,OAAO,sBAClD,OAAO,OAAO,QAAQ,OAAO,WAAW,CAAC;CAE3C,MAAM,QAAQ,KAAK,IACjB,OAAO,OAAO,kBAAkB,KAAK,KAAK,IAAI,OAAO,MAAM,oBAAoB,GAAG,EAAE,GACpF,OAAO,OAAO,cAChB;CAEA,OAAO,OAAO,QAAQ;EACpB,GAAG;EACH,kBAAkB;EAClB,OAAO;GACL,GAAG,OAAO;GACV,qBAAqB,KAAK,IACxB,OAAO,OAAO,WAAW,aAAa,OAAO,OAAO,uBAAuB,QAC3E,OAAO,gBACT;GACA,aAAa,OAAO;EACtB;CACF,CAAC;AACH;AAEA,MAAa,8BAA8B,OAAO,OAAO;CACvD,WAAW,SAAS,MAAM,OAAO,oBAAoB,GAAG,CAAC;CACzD,aAAa,SAAS,MAAM,OAAO,oBAAoB,EAAE,CAAC;AAC5D,CAAC;;;;;;;AAUD,IAAa,wBAAb,MAAa,8BAA8B,QAAQ,QAejD,CAAC,CAAC,4CAA4C,CAAC,CAAC;CAChD,OAAO,MACL,SAAsC;EAAE,WAAW;EAAK,aAAa;CAAE,GAKvE;EACA,OAAO,MAAM,OACX,uBACA,OAAO,IAAI,aAAa;GACtB,MAAM,SAAS,OAAO,wBACpB,6BACA,QACA,eACF;GAEA,MAAM,QAAQ,OAAO;GACrB,MAAM,YAAY,OAAO;GACzB,MAAM,SAAS,OAAO,OAAO;GAC7B,MAAM,YAAY,OAAO;GACzB,MAAM,YAAY,OAAO,UAAU,KAAK,OAAO,WAAW;GAE1D,MAAM,UAAU,OAAO,GAAG,yBAAyB,CAAC,EAAE,QACpD,UACG,WACC,OAAO,IAAI,aAAa;IACtB,MAAM,UAAU,OAAO,MAAM,IAAI,GAAG;IAEpC,IAAI,YAAY,MAAM,OAAO,OAAO,MAAM,aAAa,SAAS;IAChE,MAAM,YAAY,OAAO,MAAM;IAC/B,MAAM,MAAM,wBAAwB,OAAO;IAE3C,IAAI,QAAQ,QAAQ,MAAM,WAAW,OAAO;IAE5C,IAAI,QAAQ,WAAW,aAAa,QAAQ,gBAAgB,KAAA,GAAW;KACrE,MAAM,WAAW,OAAO,MAAM,IAAI;MAChC,eAAe,IAAI;MACnB,WAAW,QAAQ;KACrB,CAAC;KAED,IACE,aAAa,QACZ,SAAS,YAAY,QAAQ,SAAS,WAAW,WAElD,OAAO,OAAO,MAAM,OAAO,KAAK;MAC9B,MAAM;MACN,iBAAiB,QAAQ;MACzB;MACA,aAAa,YAAY,QAAQ,OAAO;KAC1C,CAAC;IAEL;IAEA,MAAM,UAAU,OAAO,MAAM,OAAO,KAAK;KACvC,MAAM;KACN,iBAAiB,QAAQ;KACzB;IACF,CAAC;IAED,IAAI,QAAQ,WAAW,UAAU,OAAO;IAExC,MAAM,WAAW,OAAO,OAAO,aAAa,aAAa,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,KAC3E,OAAO,eAAe,MAAM,WAAW,UAAU,CAAC,CACpD;IAOA,KAAI,OALkB,WAAW,QAAQ,CAAC,CAAC,KACzC,OAAO,eAAe,OAAO,QAAQ,MAAM,GAC3C,OAAO,eAAe,MAAM,WAAW,QAAQ,CAAC,CAClD,OAEe,QAAQ,gBACrB,OAAO,OAAO,MAAM,WAAW,iBAAiB;IAElD,MAAM,UAAU,KAAK,IACnB,QAAQ,OAAO,uBACd,QAAQ,oBAAoB,QAAQ,qBAClC,OAAO,MAAM,kBAClB;IAGA,IAAI,WAAW,GAAG,OAAO;IAMzB,MAAM,UAAU,WACd,MAAM,kBAAkB,KACtB,OAAO,SAAS,SACd,MAAM,OAAO,KAAK;KAChB,GAAG;KACH,iBAAiB,QAAQ;KACzB,WAAW;IACb,CAAC,CACH,CACF;IAEF,IAAI,QAAQ,WAAW,WAAW;KAChC,MAAM,UAAU,OAAO,mBACrB,UAAU,OAAO,QAAQ,QAAQ,GACjC,OACF,CAAC,CAAC,KAAK,OAAO,eAAe,MAAM,WAAW,WAAW,CAAC,CAAC;KAE3D,OAAO,UAAU,IAAI,kCAAkC;KACvD,IAAI,QAAQ,SAAS,WACnB,OAAO,OAAO,OAAO;MAAE,MAAM;MAAU,SAAS,QAAQ;KAAQ,CAAC;KACnE,IAAI,QAAQ,SAAS,WACnB,OAAO,OAAO,OAAO;MAAE,MAAM;MAAU,MAAM,QAAQ,MAAM;KAAK,CAAC;KAEnE,OAAO,OAAO,OAAO;MAAE,MAAM;MAAS,QAAQ,QAAQ;KAAO,CAAC;IAChE;IACA,IAAI,QAAQ,YAAY,MAAM,OAAO,OAAO,MAAM,WAAW,SAAS;IACtE,IAAI,UAAU,qBAAqB,KAAA,GACjC,OAAO,OAAO,OAAO;KAAE,MAAM;KAAQ,QAAQ;IAAqB,CAAC;IAErE,MAAM,SAAS,OAAO,UAAU,iBAAiB,QAAQ,OAAO,CAAC,CAAC,KAChE,OAAO,QAAQ,OAAO,GACtB,OAAO,KAAK,YAAY;KAAE,MAAM;KAAmB;IAAO,EAAE,GAC5D,OAAO,SAAS,4BAA4B,YAC1C,OAAO,QAAQ;KAAE,MAAM;KAAkB,QAAQ,QAAQ;IAAO,CAAC,CACnE,GACA,OAAO,SAAS,+BACd,OAAO,QAAQ,EAAE,MAAM,cAAuB,CAAC,CACjD,GACA,OAAO,SAAS,sBACd,OAAO,QAAQ;KAAE,MAAM;KAAkB,QAAQ;IAAmB,CAAC,CACvE,GACA,OAAO,SAAS,yBAAyB,YACvC,QAAQ,WAAW,gBACf,OAAO,QAAQ;KAAE,MAAM;KAAkB,QAAQ;IAAmB,CAAC,IACrE,OAAO,KAAK,MAAM,WAAW,QAAQ,CAAC,CAC5C,CACF;IAEA,IAAI,OAAO,SAAS,eAClB,OAAO,OAAO,OAAO;KAAE,MAAM;KAAQ,QAAQ;IAAqB,CAAC;IACrE,IAAI,OAAO,SAAS,YAAY,OAAO,OAAO,SAAS,WACrD,OAAO,OAAO,OAAO;KAAE,MAAM;KAAW,YAAY,OAAO,OAAO;IAAW,CAAC;IAChF,IAAI,OAAO,SAAS,UAAU,OAAO,OAAO,OAAO,EAAE,MAAM,iBAAiB,CAAC;IAE7E,OAAO,OAAO,OAAO;KAAE,MAAM;KAAS,QAAQ,OAAO;IAAO,CAAC;GAC/D,CAAC,CACH,CAAC,CACA,KACC,OAAO,SAAS,yBAAyB,YACvC,QAAQ,WAAW,aACf,MAAM,IAAI,GAAG,CAAC,CAAC,KACb,OAAO,cACJ,WAAW,WAAW,YACjB,OACR,CACF,IACA,OAAO,KAAK,OAAO,CACzB,CACF,CACJ;GAEA,OAAO,sBAAsB,GAAG;IAC9B;IACA,QAAQ,OAAO,GAAG,wBAAwB,CAAC,CAAC,WAAW,eAAe;KACpE,MAAM,OAAO,OAAO,MAAM,IACxB,OAAO,MAAM,mBACb,OAAO,WACP,aACF;KAEA,OAAO,OAAO,OAAO,QAAQ,MAAM,SAAS,EAAE,aAAa,OAAO,YAAY,CAAC;IACjF,CAAC;IACD,OAAO,OAAO,GAAG,uBAAuB,CAAC,CACvC,WAAW,KAAK,iBAAiB,kBAAkB;KACjD,OAAO,OAAO,MAAM,OAAO,KAAK;MAC9B,MAAM;MACN;MACA;MACA,WAAW,OAAO,MAAM;KAC1B,CAAC;IACH,CACF;GACF,CAAC;EACH,CAAC,CACH;CACF;AACF"}