effect-agent 0.1.0-beta.16 → 0.1.0-beta.160

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 (546) hide show
  1. package/dist/Admin-Dirux8PR.d.mts +4270 -0
  2. package/dist/Agent-BMATXYsI.mjs +93 -0
  3. package/dist/Agent-BMATXYsI.mjs.map +1 -0
  4. package/dist/Agent-ZfnNCQXs.d.mts +259 -0
  5. package/dist/AgentError-Bn1ytXRD.d.mts +117 -0
  6. package/dist/AgentPolicy-B4oH8TbG.d.mts +112 -0
  7. package/dist/AgentRuntime-CVMHysXm.mjs +4844 -0
  8. package/dist/AgentRuntime-CVMHysXm.mjs.map +1 -0
  9. package/dist/AgentRuntime-D1MmB_0z.d.mts +346 -0
  10. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  11. package/dist/ContextCompactor-BoKQOjr5.d.mts +161 -0
  12. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  13. package/dist/Digest-COAt3Orl.d.mts +22 -0
  14. package/dist/DurableAgentRuntime-pr7cCaZw.mjs +7507 -0
  15. package/dist/DurableAgentRuntime-pr7cCaZw.mjs.map +1 -0
  16. package/dist/DurableFailpoint-Cnr3wx1L.d.mts +41 -0
  17. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  18. package/dist/EventSource-DOXB0RJR.d.mts +51 -0
  19. package/dist/FailureDiagnostic-BElLOoED.mjs +274 -0
  20. package/dist/FailureDiagnostic-BElLOoED.mjs.map +1 -0
  21. package/dist/FailureDiagnostic-CaAkzGHL.d.mts +223 -0
  22. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  23. package/dist/InMemory.d.mts +24 -0
  24. package/dist/InMemory.mjs +24 -0
  25. package/dist/InMemory.mjs.map +1 -0
  26. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  27. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  28. package/dist/Messaging-7VXQnWI3.d.mts +221 -0
  29. package/dist/Messaging-CICd_CSi.d.mts +1067 -0
  30. package/dist/MessagingHost-DXwWnrMh.d.mts +74 -0
  31. package/dist/MessagingHost-DfsbMPvq.mjs +110 -0
  32. package/dist/MessagingHost-DfsbMPvq.mjs.map +1 -0
  33. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  34. package/dist/Output-CY7NZByV.d.mts +25 -0
  35. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  36. package/dist/PreparedInputAdmission-B7r401xJ.d.mts +42 -0
  37. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  38. package/dist/Records-Bm4Qt70a.d.mts +1115 -0
  39. package/dist/RunEvent-D0aepYwN.d.mts +474 -0
  40. package/dist/RunEventSink-9CUdI9Ar.d.mts +108 -0
  41. package/dist/RunJournal-CA2bsvHn.mjs +979 -0
  42. package/dist/RunJournal-CA2bsvHn.mjs.map +1 -0
  43. package/dist/RunOptions-BHmBa05n.d.mts +960 -0
  44. package/dist/RunPolicyUsage-CUudVtg_.d.mts +23 -0
  45. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  46. package/dist/Schedule-Bi_XVKLF.d.mts +847 -0
  47. package/dist/Scheduling-DPb2QyAK.mjs +691 -0
  48. package/dist/Scheduling-DPb2QyAK.mjs.map +1 -0
  49. package/dist/Subagent-D59om8SR.d.mts +1650 -0
  50. package/dist/Subagent-DH6G120f.mjs +1499 -0
  51. package/dist/Subagent-DH6G120f.mjs.map +1 -0
  52. package/dist/SubagentContract-tyN9v-Jv.d.mts +112 -0
  53. package/dist/SubagentHost-VTyf_wEF.d.mts +172 -0
  54. package/dist/Subscription-B3ScCBaN.d.mts +979 -0
  55. package/dist/SubscriptionInput-BP5WVsX_.d.mts +41 -0
  56. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  57. package/dist/ThreadHistory-FD-o4TsR.d.mts +60 -0
  58. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  59. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  60. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  61. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  62. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  63. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  64. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  65. package/dist/ToolExposure.d.mts +8 -0
  66. package/dist/ToolExposure.mjs +21 -0
  67. package/dist/ToolExposure.mjs.map +1 -0
  68. package/dist/ToolReconciler-BmVRAHKs.d.mts +80 -0
  69. package/dist/ToolResult-BKdqWRff.d.mts +78 -0
  70. package/dist/Usage-BNjPR7Zr.d.mts +129 -0
  71. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  72. package/dist/Worker-CfwzMZEK.mjs +271 -0
  73. package/dist/Worker-CfwzMZEK.mjs.map +1 -0
  74. package/dist/Worker-XEBYxRQv.d.mts +472 -0
  75. package/dist/WorkerAdmission-Cmcxd6nS.mjs +171 -0
  76. package/dist/WorkerAdmission-Cmcxd6nS.mjs.map +1 -0
  77. package/dist/agent-registration-BIOzAej4.mjs +210 -0
  78. package/dist/agent-registration-BIOzAej4.mjs.map +1 -0
  79. package/dist/capabilities/Approval.d.mts +114 -0
  80. package/dist/capabilities/Approval.mjs +226 -0
  81. package/dist/capabilities/Approval.mjs.map +1 -0
  82. package/dist/capabilities/BrowserUse.d.mts +545 -0
  83. package/dist/capabilities/BrowserUse.mjs +254 -0
  84. package/dist/capabilities/BrowserUse.mjs.map +1 -0
  85. package/dist/capabilities/Budget.d.mts +112 -0
  86. package/dist/capabilities/Budget.mjs +346 -0
  87. package/dist/capabilities/Budget.mjs.map +1 -0
  88. package/dist/capabilities/CodeMode.d.mts +157 -0
  89. package/dist/capabilities/CodeMode.mjs +523 -0
  90. package/dist/capabilities/CodeMode.mjs.map +1 -0
  91. package/dist/capabilities/Commands.d.mts +55 -0
  92. package/dist/capabilities/Commands.mjs +57 -0
  93. package/dist/capabilities/Commands.mjs.map +1 -0
  94. package/dist/capabilities/ContextTools.d.mts +187 -0
  95. package/dist/capabilities/ContextTools.mjs +87 -0
  96. package/dist/capabilities/ContextTools.mjs.map +1 -0
  97. package/dist/capabilities/Mcp.d.mts +108 -0
  98. package/dist/capabilities/Mcp.mjs +259 -0
  99. package/dist/capabilities/Mcp.mjs.map +1 -0
  100. package/dist/capabilities/McpClient.d.mts +115 -0
  101. package/dist/capabilities/McpClient.mjs +519 -0
  102. package/dist/capabilities/McpClient.mjs.map +1 -0
  103. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  104. package/dist/capabilities/MemoryNotes.mjs +128 -0
  105. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  106. package/dist/capabilities/Messaging.d.mts +3 -0
  107. package/dist/capabilities/Messaging.mjs +152 -0
  108. package/dist/capabilities/Messaging.mjs.map +1 -0
  109. package/dist/capabilities/ModelContext.d.mts +89 -0
  110. package/dist/capabilities/ModelContext.mjs +168 -0
  111. package/dist/capabilities/ModelContext.mjs.map +1 -0
  112. package/dist/capabilities/Redaction.d.mts +37 -0
  113. package/dist/capabilities/Redaction.mjs +104 -0
  114. package/dist/capabilities/Redaction.mjs.map +1 -0
  115. package/dist/capabilities/Remembering.d.mts +434 -0
  116. package/dist/capabilities/Remembering.mjs +290 -0
  117. package/dist/capabilities/Remembering.mjs.map +1 -0
  118. package/dist/capabilities/RunHooks.d.mts +82 -0
  119. package/dist/capabilities/RunHooks.mjs +144 -0
  120. package/dist/capabilities/RunHooks.mjs.map +1 -0
  121. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  122. package/dist/capabilities/SemanticMemory.mjs +315 -0
  123. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  124. package/dist/capabilities/Subagent.d.mts +4 -0
  125. package/dist/capabilities/Subagent.mjs +5 -0
  126. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  127. package/dist/capabilities/SubagentReservations.mjs +479 -0
  128. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  129. package/dist/capabilities/ToolDiscovery.d.mts +129 -0
  130. package/dist/capabilities/ToolDiscovery.mjs +239 -0
  131. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  132. package/dist/capabilities/WebCapture.d.mts +163 -0
  133. package/dist/capabilities/WebCapture.mjs +335 -0
  134. package/dist/capabilities/WebCapture.mjs.map +1 -0
  135. package/dist/capabilities/WebSearch.d.mts +75 -0
  136. package/dist/capabilities/WebSearch.mjs +123 -0
  137. package/dist/capabilities/WebSearch.mjs.map +1 -0
  138. package/dist/compaction-C2OTceKw.mjs +505 -0
  139. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  140. package/dist/core/Agent.d.mts +2 -0
  141. package/dist/core/Agent.mjs +2 -0
  142. package/dist/core/AgentError.d.mts +2 -0
  143. package/dist/core/AgentError.mjs +134 -0
  144. package/dist/core/AgentError.mjs.map +1 -0
  145. package/dist/core/AgentPolicy.d.mts +2 -0
  146. package/dist/core/AgentPolicy.mjs +102 -0
  147. package/dist/core/AgentPolicy.mjs.map +1 -0
  148. package/dist/core/AgentUpdates.d.mts +2 -0
  149. package/dist/core/AgentUpdates.mjs +63 -0
  150. package/dist/core/AgentUpdates.mjs.map +1 -0
  151. package/dist/core/FailureDiagnostic.d.mts +2 -0
  152. package/dist/core/FailureDiagnostic.mjs +2 -0
  153. package/dist/core/IdGenerator.d.mts +26 -0
  154. package/dist/core/IdGenerator.mjs +27 -0
  155. package/dist/core/IdGenerator.mjs.map +1 -0
  156. package/dist/core/Identifiers.d.mts +2 -0
  157. package/dist/core/Identifiers.mjs +43 -0
  158. package/dist/core/Identifiers.mjs.map +1 -0
  159. package/dist/core/Memory.d.mts +57 -0
  160. package/dist/core/Memory.mjs +203 -0
  161. package/dist/core/Memory.mjs.map +1 -0
  162. package/dist/core/MemoryNamespace.d.mts +2 -0
  163. package/dist/core/MemoryNamespace.mjs +116 -0
  164. package/dist/core/MemoryNamespace.mjs.map +1 -0
  165. package/dist/core/MemoryReference.d.mts +2 -0
  166. package/dist/core/MemoryReference.mjs +109 -0
  167. package/dist/core/MemoryReference.mjs.map +1 -0
  168. package/dist/core/MemoryRevalidation.d.mts +65 -0
  169. package/dist/core/MemoryRevalidation.mjs +126 -0
  170. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  171. package/dist/core/MemoryStore.d.mts +186 -0
  172. package/dist/core/MemoryStore.mjs +243 -0
  173. package/dist/core/MemoryStore.mjs.map +1 -0
  174. package/dist/core/Receipt.d.mts +2 -0
  175. package/dist/core/Receipt.mjs +36 -0
  176. package/dist/core/Receipt.mjs.map +1 -0
  177. package/dist/core/RememberingStore.d.mts +1562 -0
  178. package/dist/core/RememberingStore.mjs +190 -0
  179. package/dist/core/RememberingStore.mjs.map +1 -0
  180. package/dist/core/RunEvent.d.mts +2 -0
  181. package/dist/core/RunEvent.mjs +346 -0
  182. package/dist/core/RunEvent.mjs.map +1 -0
  183. package/dist/core/RunPolicyUsage.d.mts +2 -0
  184. package/dist/core/RunPolicyUsage.mjs +26 -0
  185. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  186. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  187. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  188. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  189. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  190. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  191. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  192. package/dist/core/SubagentContract.d.mts +2 -0
  193. package/dist/core/SubagentContract.mjs +142 -0
  194. package/dist/core/SubagentContract.mjs.map +1 -0
  195. package/dist/core/Thread.d.mts +2 -0
  196. package/dist/core/Thread.mjs +250 -0
  197. package/dist/core/Thread.mjs.map +1 -0
  198. package/dist/core/ToolResult.d.mts +2 -0
  199. package/dist/core/ToolResult.mjs +156 -0
  200. package/dist/core/ToolResult.mjs.map +1 -0
  201. package/dist/core/Usage.d.mts +2 -0
  202. package/dist/core/Usage.mjs +340 -0
  203. package/dist/core/Usage.mjs.map +1 -0
  204. package/dist/core/Worker.d.mts +3 -0
  205. package/dist/core/Worker.mjs +3 -0
  206. package/dist/durable/ActivityStore.d.mts +116 -0
  207. package/dist/durable/ActivityStore.mjs +131 -0
  208. package/dist/durable/ActivityStore.mjs.map +1 -0
  209. package/dist/durable/Admin.d.mts +2 -0
  210. package/dist/durable/Admin.mjs +330 -0
  211. package/dist/durable/Admin.mjs.map +1 -0
  212. package/dist/durable/AgentRegistration.d.mts +2 -0
  213. package/dist/durable/AgentRegistration.mjs +15 -0
  214. package/dist/durable/AgentRegistration.mjs.map +1 -0
  215. package/dist/durable/Certification.d.mts +110 -0
  216. package/dist/durable/Certification.mjs +159 -0
  217. package/dist/durable/Certification.mjs.map +1 -0
  218. package/dist/durable/CommittedActivity.d.mts +64 -0
  219. package/dist/durable/CommittedActivity.mjs +159 -0
  220. package/dist/durable/CommittedActivity.mjs.map +1 -0
  221. package/dist/durable/Digest.d.mts +2 -0
  222. package/dist/durable/Digest.mjs +50 -0
  223. package/dist/durable/Digest.mjs.map +1 -0
  224. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  225. package/dist/durable/DurableAgentRuntime.mjs +4 -0
  226. package/dist/durable/DurableFailpoint.d.mts +2 -0
  227. package/dist/durable/DurableFailpoint.mjs +102 -0
  228. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  229. package/dist/durable/DurableFailpointTestControl.d.mts +14 -0
  230. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  231. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  232. package/dist/durable/EventSource.d.mts +2 -0
  233. package/dist/durable/EventSource.mjs +65 -0
  234. package/dist/durable/EventSource.mjs.map +1 -0
  235. package/dist/durable/GitHubWorkflowSource.d.mts +185 -0
  236. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  237. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  238. package/dist/durable/LifecyclePublication.d.mts +2 -0
  239. package/dist/durable/LifecyclePublication.mjs +189 -0
  240. package/dist/durable/LifecyclePublication.mjs.map +1 -0
  241. package/dist/durable/MessageDelivery.d.mts +949 -0
  242. package/dist/durable/MessageDelivery.mjs +589 -0
  243. package/dist/durable/MessageDelivery.mjs.map +1 -0
  244. package/dist/durable/MessageDeliveryStoreConformance.d.mts +400 -0
  245. package/dist/durable/MessageDeliveryStoreConformance.mjs +270 -0
  246. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  247. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  248. package/dist/durable/OperationAuthorizer.mjs +70 -0
  249. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  250. package/dist/durable/PersistentHistory.d.mts +16 -0
  251. package/dist/durable/PersistentHistory.mjs +125 -0
  252. package/dist/durable/PersistentHistory.mjs.map +1 -0
  253. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  254. package/dist/durable/PreparedInputAdmission.mjs +38 -0
  255. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  256. package/dist/durable/Records.d.mts +2 -0
  257. package/dist/durable/Records.mjs +873 -0
  258. package/dist/durable/Records.mjs.map +1 -0
  259. package/dist/durable/Recovery.d.mts +2 -0
  260. package/dist/durable/Recovery.mjs +739 -0
  261. package/dist/durable/Recovery.mjs.map +1 -0
  262. package/dist/durable/RunJournal.d.mts +2 -0
  263. package/dist/durable/RunJournal.mjs +2 -0
  264. package/dist/durable/Schedule.d.mts +2 -0
  265. package/dist/durable/Schedule.mjs +391 -0
  266. package/dist/durable/Schedule.mjs.map +1 -0
  267. package/dist/durable/ScheduleStoreConformance.d.mts +17 -0
  268. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  269. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  270. package/dist/durable/ScheduleTransition.d.mts +24 -0
  271. package/dist/durable/ScheduleTransition.mjs +180 -0
  272. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  273. package/dist/durable/Scheduling.d.mts +55 -0
  274. package/dist/durable/Scheduling.mjs +2 -0
  275. package/dist/durable/SqlMemoryStore.d.mts +742 -0
  276. package/dist/durable/SqlMemoryStore.mjs +627 -0
  277. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  278. package/dist/durable/SubmissionLedger.d.mts +3 -0
  279. package/dist/durable/SubmissionLedger.mjs +986 -0
  280. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  281. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  282. package/dist/durable/SubmissionLedgerConformance.mjs +2254 -0
  283. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  284. package/dist/durable/SubmissionStatus.d.mts +2 -0
  285. package/dist/durable/SubmissionStatus.mjs +18 -0
  286. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  287. package/dist/durable/Subscription.d.mts +2 -0
  288. package/dist/durable/Subscription.mjs +360 -0
  289. package/dist/durable/Subscription.mjs.map +1 -0
  290. package/dist/durable/SubscriptionInput.d.mts +2 -0
  291. package/dist/durable/SubscriptionInput.mjs +52 -0
  292. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  293. package/dist/durable/SubscriptionStoreConformance.d.mts +16 -0
  294. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  295. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  296. package/dist/durable/SubscriptionTools.d.mts +274 -0
  297. package/dist/durable/SubscriptionTools.mjs +190 -0
  298. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  299. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  300. package/dist/durable/SubscriptionTransition.mjs +148 -0
  301. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  302. package/dist/durable/Subscriptions.d.mts +74 -0
  303. package/dist/durable/Subscriptions.mjs +627 -0
  304. package/dist/durable/Subscriptions.mjs.map +1 -0
  305. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  306. package/dist/durable/ThreadContextHistory.mjs +152 -0
  307. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  308. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  309. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  310. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  311. package/dist/durable/ThreadInvariants.d.mts +77 -0
  312. package/dist/durable/ThreadInvariants.mjs +246 -0
  313. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  314. package/dist/durable/ThreadProjection.d.mts +78 -0
  315. package/dist/durable/ThreadProjection.mjs +158 -0
  316. package/dist/durable/ThreadProjection.mjs.map +1 -0
  317. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  318. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  319. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  320. package/dist/durable/ThreadStore.d.mts +2 -0
  321. package/dist/durable/ThreadStore.mjs +383 -0
  322. package/dist/durable/ThreadStore.mjs.map +1 -0
  323. package/dist/durable/ThreadStoreConformance.d.mts +28 -0
  324. package/dist/durable/ThreadStoreConformance.mjs +543 -0
  325. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  326. package/dist/durable/ToolReconciler.d.mts +2 -0
  327. package/dist/durable/ToolReconciler.mjs +85 -0
  328. package/dist/durable/ToolReconciler.mjs.map +1 -0
  329. package/dist/durable/WakeScheduler.d.mts +2 -0
  330. package/dist/durable/WakeScheduler.mjs +85 -0
  331. package/dist/durable/WakeScheduler.mjs.map +1 -0
  332. package/dist/durable/WorkerAdmission.d.mts +172 -0
  333. package/dist/durable/WorkerAdmission.mjs +2 -0
  334. package/dist/durable/WorkerHost.d.mts +156 -0
  335. package/dist/durable/WorkerHost.mjs +77 -0
  336. package/dist/durable/WorkerHost.mjs.map +1 -0
  337. package/dist/engine/AgentRuntime.d.mts +2 -0
  338. package/dist/engine/AgentRuntime.mjs +2 -0
  339. package/dist/engine/Compaction.d.mts +7 -0
  340. package/dist/engine/Compaction.mjs +16 -0
  341. package/dist/engine/Compaction.mjs.map +1 -0
  342. package/dist/engine/ContextCompactor.d.mts +2 -0
  343. package/dist/engine/ContextCompactor.mjs +119 -0
  344. package/dist/engine/ContextCompactor.mjs.map +1 -0
  345. package/dist/engine/ContextHistory.d.mts +65 -0
  346. package/dist/engine/ContextHistory.mjs +76 -0
  347. package/dist/engine/ContextHistory.mjs.map +1 -0
  348. package/dist/engine/ContextWindow.d.mts +2 -0
  349. package/dist/engine/ContextWindow.mjs +59 -0
  350. package/dist/engine/ContextWindow.mjs.map +1 -0
  351. package/dist/engine/DurableStep.d.mts +2 -0
  352. package/dist/engine/DurableStep.mjs +62 -0
  353. package/dist/engine/DurableStep.mjs.map +1 -0
  354. package/dist/engine/MessagingHost.d.mts +2 -0
  355. package/dist/engine/MessagingHost.mjs +2 -0
  356. package/dist/engine/Output.d.mts +2 -0
  357. package/dist/engine/Output.mjs +8 -0
  358. package/dist/engine/Output.mjs.map +1 -0
  359. package/dist/engine/RunEventSink.d.mts +2 -0
  360. package/dist/engine/RunEventSink.mjs +22 -0
  361. package/dist/engine/RunEventSink.mjs.map +1 -0
  362. package/dist/engine/RunOptions.d.mts +2 -0
  363. package/dist/engine/RunOptions.mjs +125 -0
  364. package/dist/engine/RunOptions.mjs.map +1 -0
  365. package/dist/engine/SubagentHost.d.mts +2 -0
  366. package/dist/engine/SubagentHost.mjs +76 -0
  367. package/dist/engine/SubagentHost.mjs.map +1 -0
  368. package/dist/engine/ThreadHistory.d.mts +2 -0
  369. package/dist/engine/ThreadHistory.mjs +67 -0
  370. package/dist/engine/ThreadHistory.mjs.map +1 -0
  371. package/dist/engine/ToolBroker.d.mts +2 -0
  372. package/dist/engine/ToolBroker.mjs +42 -0
  373. package/dist/engine/ToolBroker.mjs.map +1 -0
  374. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  375. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  376. package/dist/index.d.mts +93 -6
  377. package/dist/index.mjs +101 -6
  378. package/dist/output-contract-DS-S8mTv.mjs +135 -0
  379. package/dist/output-contract-DS-S8mTv.mjs.map +1 -0
  380. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  381. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  382. package/dist/sandbox/CodeExecutor.mjs +278 -0
  383. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  384. package/dist/sandbox/InteractiveBrowser.d.mts +257 -0
  385. package/dist/sandbox/InteractiveBrowser.mjs +236 -0
  386. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  387. package/dist/sandbox/PageCapture.d.mts +2 -0
  388. package/dist/sandbox/PageCapture.mjs +450 -0
  389. package/dist/sandbox/PageCapture.mjs.map +1 -0
  390. package/dist/sandbox/PageCrawl.d.mts +88 -0
  391. package/dist/sandbox/PageCrawl.mjs +124 -0
  392. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  393. package/dist/sandbox/PageScreenshot.d.mts +48 -0
  394. package/dist/sandbox/PageScreenshot.mjs +53 -0
  395. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  396. package/dist/sandbox/Sandbox.d.mts +2 -0
  397. package/dist/sandbox/Sandbox.mjs +208 -0
  398. package/dist/sandbox/Sandbox.mjs.map +1 -0
  399. package/dist/utf8-BYfhEkcj.mjs +11 -0
  400. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  401. package/dist/utf8-DchGZRBd.mjs +23 -0
  402. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  403. package/package.json +1 -40
  404. package/src/InMemory.ts +19 -0
  405. package/src/ToolExposure.ts +2 -0
  406. package/src/capabilities/Approval.ts +352 -0
  407. package/src/capabilities/BrowserUse.ts +367 -0
  408. package/src/capabilities/Budget.ts +536 -0
  409. package/src/capabilities/CodeMode.ts +1099 -0
  410. package/src/capabilities/Commands.ts +86 -0
  411. package/src/capabilities/ContextTools.ts +129 -0
  412. package/src/capabilities/Mcp.ts +426 -0
  413. package/src/capabilities/McpClient.ts +983 -0
  414. package/src/capabilities/MemoryNotes.ts +174 -0
  415. package/src/capabilities/Messaging.ts +261 -0
  416. package/src/capabilities/ModelContext.ts +354 -0
  417. package/src/capabilities/Redaction.ts +157 -0
  418. package/src/capabilities/Remembering.ts +550 -0
  419. package/src/capabilities/RunHooks.ts +280 -0
  420. package/src/capabilities/SemanticMemory.ts +447 -0
  421. package/src/capabilities/Subagent.ts +2486 -0
  422. package/src/capabilities/SubagentReservations.ts +850 -0
  423. package/src/capabilities/ToolDiscovery.ts +383 -0
  424. package/src/capabilities/WebCapture.ts +722 -0
  425. package/src/capabilities/WebSearch.ts +205 -0
  426. package/src/capabilities/internal/subagent-background.ts +1307 -0
  427. package/src/capabilities/internal/subagent-contract.ts +146 -0
  428. package/src/capabilities/internal/subagent-policy.ts +235 -0
  429. package/src/capabilities/internal/subagent-reporting.ts +136 -0
  430. package/src/capabilities/internal/utf8.ts +10 -0
  431. package/src/core/Agent.ts +623 -0
  432. package/src/core/AgentError.ts +172 -0
  433. package/src/core/AgentPolicy.ts +161 -0
  434. package/src/core/AgentUpdates.ts +100 -0
  435. package/src/core/FailureDiagnostic.ts +343 -0
  436. package/src/core/IdGenerator.ts +39 -0
  437. package/src/core/Identifiers.ts +48 -0
  438. package/src/core/Memory.ts +290 -0
  439. package/src/core/MemoryNamespace.ts +196 -0
  440. package/src/core/MemoryReference.ts +121 -0
  441. package/src/core/MemoryRevalidation.ts +185 -0
  442. package/src/core/MemoryStore.ts +368 -0
  443. package/src/core/Messaging.ts +72 -0
  444. package/src/core/Receipt.ts +42 -0
  445. package/src/core/RememberingStore.ts +300 -0
  446. package/src/core/RunEvent.ts +375 -0
  447. package/src/core/RunPolicyUsage.ts +19 -0
  448. package/src/core/SemanticMemoryIndex.ts +250 -0
  449. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  450. package/src/core/SubagentContract.ts +189 -0
  451. package/src/core/Thread.ts +371 -0
  452. package/src/core/ToolExposure.ts +74 -0
  453. package/src/core/ToolResult.ts +190 -0
  454. package/src/core/Usage.ts +570 -0
  455. package/src/core/Worker.ts +240 -0
  456. package/src/core/internal/agent-updates.ts +34 -0
  457. package/src/core/internal/message-status.ts +60 -0
  458. package/src/core/internal/strict-schema.ts +14 -0
  459. package/src/core/internal/utf8.ts +23 -0
  460. package/src/durable/ActivityStore.ts +160 -0
  461. package/src/durable/Admin.ts +505 -0
  462. package/src/durable/AgentRegistration.ts +16 -0
  463. package/src/durable/Certification.ts +210 -0
  464. package/src/durable/CommittedActivity.ts +296 -0
  465. package/src/durable/Digest.ts +87 -0
  466. package/src/durable/DurableAgentRuntime.ts +11854 -0
  467. package/src/durable/DurableFailpoint.ts +111 -0
  468. package/src/durable/DurableFailpointTestControl.ts +39 -0
  469. package/src/durable/EventSource.ts +172 -0
  470. package/src/durable/GitHubWorkflowSource.ts +447 -0
  471. package/src/durable/LifecyclePublication.ts +311 -0
  472. package/src/durable/MessageDelivery.ts +878 -0
  473. package/src/durable/MessageDeliveryStoreConformance.ts +410 -0
  474. package/src/durable/OperationAuthorizer.ts +85 -0
  475. package/src/durable/PersistentHistory.ts +260 -0
  476. package/src/durable/PreparedInputAdmission.ts +57 -0
  477. package/src/durable/Records.ts +1099 -0
  478. package/src/durable/Recovery.ts +1018 -0
  479. package/src/durable/RunJournal.ts +1768 -0
  480. package/src/durable/Schedule.ts +513 -0
  481. package/src/durable/ScheduleStoreConformance.ts +638 -0
  482. package/src/durable/ScheduleTransition.ts +265 -0
  483. package/src/durable/Scheduling.ts +1077 -0
  484. package/src/durable/SqlMemoryStore.ts +1056 -0
  485. package/src/durable/SubmissionLedger.ts +1297 -0
  486. package/src/durable/SubmissionLedgerConformance.ts +4940 -0
  487. package/src/durable/SubmissionStatus.ts +14 -0
  488. package/src/durable/Subscription.ts +544 -0
  489. package/src/durable/SubscriptionInput.ts +144 -0
  490. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  491. package/src/durable/SubscriptionTools.ts +327 -0
  492. package/src/durable/SubscriptionTransition.ts +302 -0
  493. package/src/durable/Subscriptions.ts +1210 -0
  494. package/src/durable/ThreadContextHistory.ts +227 -0
  495. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  496. package/src/durable/ThreadInvariants.ts +507 -0
  497. package/src/durable/ThreadProjection.ts +269 -0
  498. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  499. package/src/durable/ThreadStore.ts +637 -0
  500. package/src/durable/ThreadStoreConformance.ts +1296 -0
  501. package/src/durable/ToolReconciler.ts +109 -0
  502. package/src/durable/WakeScheduler.ts +134 -0
  503. package/src/durable/WorkerAdmission.ts +104 -0
  504. package/src/durable/WorkerHost.ts +205 -0
  505. package/src/durable/internal/agent-registration.ts +621 -0
  506. package/src/durable/internal/agent-updates.ts +306 -0
  507. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  508. package/src/durable/internal/journal-checkpoint.ts +158 -0
  509. package/src/durable/internal/journal-metadata.ts +124 -0
  510. package/src/durable/internal/message-status.ts +20 -0
  511. package/src/durable/internal/messaging-host.ts +637 -0
  512. package/src/durable/internal/schedule-time.ts +303 -0
  513. package/src/durable/internal/thread-initialization.ts +195 -0
  514. package/src/durable/internal/worker-host.ts +3309 -0
  515. package/src/durable/internal/worker-runtime.ts +9 -0
  516. package/src/engine/AgentRuntime.ts +37 -0
  517. package/src/engine/Compaction.ts +11 -0
  518. package/src/engine/ContextCompactor.ts +277 -0
  519. package/src/engine/ContextHistory.ts +73 -0
  520. package/src/engine/ContextWindow.ts +72 -0
  521. package/src/engine/DurableStep.ts +132 -0
  522. package/src/engine/MessagingHost.ts +110 -0
  523. package/src/engine/Output.ts +2 -0
  524. package/src/engine/RunEventSink.ts +132 -0
  525. package/src/engine/RunOptions.ts +1127 -0
  526. package/src/engine/SubagentHost.ts +239 -0
  527. package/src/engine/ThreadHistory.ts +120 -0
  528. package/src/engine/ToolBroker.ts +157 -0
  529. package/src/engine/ToolExposure.ts +48 -0
  530. package/src/engine/internal/agent-runtime.ts +10845 -0
  531. package/src/engine/internal/bounded-value.ts +315 -0
  532. package/src/engine/internal/compaction.ts +678 -0
  533. package/src/engine/internal/error-diagnostic.ts +39 -0
  534. package/src/engine/internal/output-contract.ts +250 -0
  535. package/src/engine/internal/primitive-delta.ts +80 -0
  536. package/src/engine/internal/provider-result-staging.ts +211 -0
  537. package/src/engine/internal/tool-derivative.ts +106 -0
  538. package/src/engine/internal/tool-exposure.ts +224 -0
  539. package/src/engine/internal/tool-telemetry.ts +484 -0
  540. package/src/index.ts +100 -22
  541. package/src/sandbox/CodeExecutor.ts +352 -0
  542. package/src/sandbox/InteractiveBrowser.ts +339 -0
  543. package/src/sandbox/PageCapture.ts +691 -0
  544. package/src/sandbox/PageCrawl.ts +148 -0
  545. package/src/sandbox/PageScreenshot.ts +81 -0
  546. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadStoreConformance.mjs","names":[],"sources":["../../src/durable/ThreadStoreConformance.ts"],"sourcesContent":["import { Effect, DateTime, Option, Schema, Stream } from \"effect\";\n\nimport { AgentPolicy } from \"../core/AgentPolicy.ts\";\nimport {\n ThreadId,\n RunId,\n SubmissionId,\n ToolCallId,\n TurnId,\n AgentId,\n DelegationId,\n ReceiptId,\n SettlementId,\n} from \"../core/Identifiers.ts\";\nimport { IdempotencyKey } from \"../core/Receipt.ts\";\nimport {\n SubagentDelegationCaps,\n SubagentGrant,\n SubagentReservationAmounts,\n} from \"../core/SubagentContract.ts\";\nimport { EMPTY_TAIL_DIGEST } from \"./Digest.ts\";\nimport type { Digest } from \"./Records.ts\";\nimport {\n BatchId,\n CanonicalBatch,\n CanonicalSequence,\n DeploymentId,\n ProducerEpoch,\n ProducerId,\n RecordEnvelope,\n RecordId,\n UserInputRecorded,\n ToolCallPrepared,\n ToolCallUnknown,\n ToolCallResolved,\n ToolCallSettled,\n WorkerInputRequested,\n WorkerInputCompleted,\n WorkerStopRequested,\n SubtreeBudgetReserved,\n PeerMessagePrepared,\n} from \"./Records.ts\";\nimport { subagentLineageRecordId, workerOriginRecordId } from \"./RunJournal.ts\";\nimport {\n type AppendResult,\n AppendConflict,\n CheckpointRejected,\n ThreadCheckpoint,\n ThreadExportRequest,\n ThreadMaterialization,\n ThreadIdentityRequest,\n ThreadNotMaterialized,\n ThreadObservation,\n ThreadRead,\n ThreadStore,\n getRecord,\n getRunInput,\n readWorkerState,\n ThreadTailRequest,\n FencedAppendRequest,\n FenceRejected,\n LoadCheckpointRequest,\n SaveCheckpointRequest,\n type ThreadStoreFailure,\n} from \"./ThreadStore.ts\";\n\n/** A ThreadStore contract invariant that an adapter under test violated. */\nexport class ThreadStoreConformanceViolation extends Schema.TaggedError<ThreadStoreConformanceViolation>()(\n \"ThreadStoreConformanceViolation\",\n {\n caseName: Schema.String,\n message: Schema.String,\n },\n) {}\n\nexport type ThreadStoreConformanceFailure =\n | ThreadStoreFailure\n | CheckpointRejected\n | ThreadStoreConformanceViolation;\n\n/**\n * One adapter-neutral ThreadStore contract case. Each case owns disjoint\n * Thread identities, so a suite may run every case against one shared store\n * instance or against a fresh store per case.\n */\nexport interface ThreadStoreConformanceCase {\n readonly name: string;\n readonly run: Effect.Effect<void, ThreadStoreConformanceFailure, ThreadStore>;\n}\n\nconst decodeThreadId = Schema.decodeSync(ThreadId);\nconst decodeRecordId = Schema.decodeSync(RecordId);\nconst decodeBatchId = Schema.decodeSync(BatchId);\nconst decodeSequence = Schema.decodeSync(CanonicalSequence);\nconst decodeEpoch = Schema.decodeSync(ProducerEpoch);\n\nconst CONFORMANCE_DEPLOYMENT = Schema.decodeSync(DeploymentId)(\"deployment-conformance\");\nconst CONFORMANCE_PRODUCER = Schema.decodeSync(ProducerId)(\"producer-conformance\");\nconst CONFORMANCE_SUBMISSION = Schema.decodeSync(SubmissionId)(\"submission-conformance\");\nconst CONFORMANCE_RUN = Schema.decodeSync(RunId)(\"run-conformance\");\nconst CONFORMANCE_CREATED_AT = DateTime.toUtc(DateTime.makeUnsafe(1));\n\nconst ZERO_SEQUENCE = decodeSequence(0);\nconst EPOCH_ONE = decodeEpoch(1);\nconst EPOCH_TWO = decodeEpoch(2);\nconst EMPTY_TAIL = { lastSequence: ZERO_SEQUENCE, tailDigest: EMPTY_TAIL_DIGEST } as const;\nconst isAppendConflict = Schema.is(AppendConflict);\nconst isFenceRejected = Schema.is(FenceRejected);\nconst isCheckpointRejected = Schema.is(CheckpointRejected);\nconst isThreadNotMaterialized = Schema.is(ThreadNotMaterialized);\n\nconst record = (recordId: string, input: string): RecordEnvelope =>\n RecordEnvelope.make({\n recordId: decodeRecordId(recordId),\n family: \"thread\",\n schemaVersion: 1,\n createdAt: CONFORMANCE_CREATED_AT,\n deploymentId: CONFORMANCE_DEPLOYMENT,\n payload: UserInputRecorded.make({\n submissionId: CONFORMANCE_SUBMISSION,\n kind: \"user\",\n runId: CONFORMANCE_RUN,\n input,\n }),\n });\n\nconst batch = (\n batchId: string,\n records: readonly [RecordEnvelope, ...Array<RecordEnvelope>],\n): CanonicalBatch =>\n CanonicalBatch.make({\n batchId: decodeBatchId(batchId),\n producerId: CONFORMANCE_PRODUCER,\n records,\n });\n\nconst materialize = Effect.fn(\"ThreadStoreConformance.materialize\")(function* (\n threadId: ThreadId,\n producerEpoch: ProducerEpoch,\n) {\n const store = yield* ThreadStore;\n\n yield* store.materialize(ThreadMaterialization.make({ threadId, producerEpoch }));\n});\n\nconst append = Effect.fn(\"ThreadStoreConformance.append\")(function* (\n threadId: ThreadId,\n canonicalBatch: CanonicalBatch,\n tail: Pick<AppendResult, \"lastSequence\" | \"tailDigest\"> = EMPTY_TAIL,\n producerEpoch: ProducerEpoch = EPOCH_ONE,\n) {\n const store = yield* ThreadStore;\n\n return yield* store.append(\n FencedAppendRequest.make({\n threadId,\n batch: canonicalBatch,\n expectedTailSequence: tail.lastSequence,\n expectedTailDigest: tail.tailDigest,\n producerEpoch,\n }),\n );\n});\n\nconst readAll = Effect.fn(\"ThreadStoreConformance.readAll\")(function* (threadId: ThreadId) {\n const store = yield* ThreadStore;\n\n return yield* store.read(ThreadRead.make({ threadId, limit: 1_024 })).pipe(Stream.runCollect);\n});\n\nconst checkpointAt = (\n threadId: ThreadId,\n throughSequence: CanonicalSequence,\n tailDigest: Digest,\n): ThreadCheckpoint =>\n ThreadCheckpoint.make({\n schemaVersion: 1,\n threadId,\n throughSequence,\n tailDigest,\n state: { conformance: true },\n createdAt: CONFORMANCE_CREATED_AT,\n });\n\nconst conformanceCase = (\n name: string,\n build: (assert: {\n readonly ensure: (\n condition: boolean,\n message: string,\n ) => Effect.Effect<void, ThreadStoreConformanceViolation>;\n readonly expectFailure: <A, E, R>(\n description: string,\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<E, ThreadStoreConformanceViolation, R>;\n }) => Effect.Effect<void, ThreadStoreConformanceFailure, ThreadStore>,\n): ThreadStoreConformanceCase => ({\n name,\n run: build({\n ensure: (condition, message) =>\n condition\n ? Effect.void\n : Effect.fail(ThreadStoreConformanceViolation.make({ caseName: name, message })),\n expectFailure: (description, effect) =>\n Effect.flip(effect).pipe(\n Effect.mapError(() =>\n ThreadStoreConformanceViolation.make({\n caseName: name,\n message: `Expected failure but the operation succeeded: ${description}`,\n }),\n ),\n ),\n }).pipe(Effect.withSpan(`ThreadStoreConformance.${name}`)),\n});\n\nconst atomicBatchVisibility = conformanceCase(\n \"commits batches atomically with no partial reader visibility\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-atomic\");\n const store = yield* ThreadStore;\n\n yield* materialize(threadId, EPOCH_ONE);\n\n const committed = yield* append(\n threadId,\n batch(\"atomic-batch-1\", [\n record(\"atomic-record-1\", \"first\"),\n record(\"atomic-record-2\", \"second\"),\n record(\"atomic-record-3\", \"third\"),\n ]),\n );\n\n yield* ensure(\n committed.firstSequence === 1 && committed.lastSequence === 3,\n \"A three-record batch must commit sequences 1 through 3\",\n );\n\n const read = yield* readAll(threadId);\n\n yield* ensure(read.length === 3, \"Readers must observe the full committed batch\");\n yield* ensure(\n read.every((envelope, index) => envelope.sequence === index + 1),\n \"Committed records must be gap-free in declaration order\",\n );\n\n const observed = yield* store\n .observe(ThreadObservation.make({ threadId }))\n .pipe(Stream.take(3), Stream.runCollect);\n\n yield* ensure(\n observed.map((envelope) => envelope.record.recordId).join(\",\") ===\n read.map((envelope) => envelope.record.recordId).join(\",\"),\n \"Observers must see exactly the committed batch records in order\",\n );\n\n const duplicate = record(\"atomic-record-4\", \"duplicate\");\n\n const intraBatch = yield* expectFailure(\n \"a batch containing one record ID twice\",\n append(threadId, batch(\"atomic-batch-2\", [duplicate, duplicate]), committed),\n );\n\n yield* ensure(\n isAppendConflict(intraBatch) && intraBatch.reason === \"record-identity\",\n \"A duplicated record ID inside one batch must conflict with reason record-identity\",\n );\n\n const crossBatch = yield* expectFailure(\n \"a batch reusing an already-committed record ID\",\n append(threadId, batch(\"atomic-batch-3\", [record(\"atomic-record-1\", \"reused\")]), committed),\n );\n\n yield* ensure(\n isAppendConflict(crossBatch) && crossBatch.reason === \"record-identity\",\n \"A record ID reused across batches must conflict with reason record-identity\",\n );\n\n const exported = yield* store.export(ThreadExportRequest.make({ threadId }));\n\n yield* ensure(\n exported.records.length === 3 &&\n exported.tailSequence === committed.lastSequence &&\n exported.tailDigest === committed.tailDigest,\n \"A conflicting batch must leave no partial prefix behind\",\n );\n }),\n);\n\nconst idempotentReplay = conformanceCase(\n \"replays an identical batch idempotently and rejects altered content\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-replay\");\n\n yield* materialize(threadId, EPOCH_ONE);\n\n const original = batch(\"replay-batch-1\", [\n record(\"replay-record-1\", \"Lisbon\"),\n record(\"replay-record-2\", \"Porto\"),\n ]);\n\n const first = yield* append(threadId, original);\n\n yield* ensure(!first.replayed, \"The first append of a batch must not report replayed\");\n\n const replayed = yield* append(threadId, original);\n\n yield* ensure(\n replayed.replayed &&\n replayed.firstSequence === first.firstSequence &&\n replayed.lastSequence === first.lastSequence &&\n replayed.tailDigest === first.tailDigest,\n \"Replaying an identical batch must return the original result with replayed set\",\n );\n\n const altered = yield* expectFailure(\n \"replaying a batch ID with different canonical content\",\n append(threadId, batch(\"replay-batch-1\", [record(\"replay-record-3\", \"Faro\")])),\n );\n\n yield* ensure(\n isAppendConflict(altered) && altered.reason === \"batch-digest\",\n \"A batch ID replayed with different content must conflict with reason batch-digest\",\n );\n\n const read = yield* readAll(threadId);\n\n yield* ensure(read.length === 2, \"Replay and conflict must not duplicate committed records\");\n }),\n);\n\nconst tailConflict = conformanceCase(\n \"rejects stale expected tails and reports the actual tail\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-tail\");\n\n yield* materialize(threadId, EPOCH_ONE);\n\n const first = yield* append(\n threadId,\n batch(\"tail-batch-1\", [record(\"tail-record-1\", \"first\")]),\n );\n\n const staleSequence = yield* expectFailure(\n \"an append declaring the pre-append tail sequence\",\n append(threadId, batch(\"tail-batch-2\", [record(\"tail-record-2\", \"second\")])),\n );\n\n yield* ensure(\n isAppendConflict(staleSequence) && staleSequence.reason === \"tail\",\n \"A stale expected tail sequence must conflict with reason tail\",\n );\n yield* ensure(\n isAppendConflict(staleSequence) &&\n staleSequence.actualTailSequence === first.lastSequence &&\n staleSequence.actualTailDigest === first.tailDigest,\n \"A tail conflict must carry the actual committed tail as a resume hint\",\n );\n\n const staleDigest = yield* expectFailure(\n \"an append declaring the right sequence with the wrong digest\",\n append(threadId, batch(\"tail-batch-2\", [record(\"tail-record-2\", \"second\")]), {\n lastSequence: first.lastSequence,\n tailDigest: EMPTY_TAIL_DIGEST,\n }),\n );\n\n yield* ensure(\n isAppendConflict(staleDigest) && staleDigest.reason === \"tail\",\n \"A stale expected tail digest must conflict with reason tail\",\n );\n\n const recovered = yield* append(\n threadId,\n batch(\"tail-batch-2\", [record(\"tail-record-2\", \"second\")]),\n first,\n );\n\n yield* ensure(\n recovered.firstSequence === first.lastSequence + 1,\n \"An append declaring the true tail must commit after a tail conflict\",\n );\n }),\n);\n\nconst producerFencing = conformanceCase(\n \"fences stale producer epochs while allowing epoch takeover\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-fencing\");\n\n yield* materialize(threadId, EPOCH_ONE);\n\n const first = yield* append(\n threadId,\n batch(\"fence-batch-1\", [record(\"fence-record-1\", \"first\")]),\n );\n\n yield* materialize(threadId, EPOCH_TWO);\n\n const staleAppend = yield* expectFailure(\n \"an append using the pre-takeover producer epoch\",\n append(\n threadId,\n batch(\"fence-batch-2\", [record(\"fence-record-2\", \"second\")]),\n first,\n EPOCH_ONE,\n ),\n );\n\n yield* ensure(\n isFenceRejected(staleAppend) &&\n staleAppend.actualEpoch === EPOCH_TWO &&\n staleAppend.attemptedEpoch === EPOCH_ONE,\n \"A stale producer epoch must be fenced with both epochs reported\",\n );\n\n const staleMaterialize = yield* expectFailure(\n \"re-materializing with the pre-takeover producer epoch\",\n materialize(threadId, EPOCH_ONE),\n );\n\n yield* ensure(\n isFenceRejected(staleMaterialize),\n \"A stale producer epoch must not re-register through materialization\",\n );\n\n const takeover = yield* append(\n threadId,\n batch(\"fence-batch-2\", [record(\"fence-record-2\", \"second\")]),\n first,\n EPOCH_TWO,\n );\n\n yield* ensure(\n !takeover.replayed && takeover.firstSequence === first.lastSequence + 1,\n \"The takeover epoch must append after the committed tail\",\n );\n }),\n);\n\nconst offsetResumability = conformanceCase(\n \"resumes observation from a saved offset with exactly the suffix\",\n ({ ensure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-offsets\");\n const store = yield* ThreadStore;\n\n yield* materialize(threadId, EPOCH_ONE);\n\n const first = yield* append(\n threadId,\n batch(\"offset-batch-1\", [\n record(\"offset-record-1\", \"first\"),\n record(\"offset-record-2\", \"second\"),\n ]),\n );\n\n const second = yield* append(\n threadId,\n batch(\"offset-batch-2\", [record(\"offset-record-3\", \"third\")]),\n first,\n );\n\n yield* append(\n threadId,\n batch(\"offset-batch-3\", [record(\"offset-record-4\", \"fourth\")]),\n second,\n );\n\n const committed = yield* readAll(threadId);\n\n yield* ensure(committed.length === 4, \"All committed records must be readable\");\n const savedOffset = committed[1]?.offset;\n\n yield* ensure(savedOffset !== undefined, \"Committed records must carry observation offsets\");\n if (savedOffset === undefined) return;\n\n const resumed = yield* store\n .observe(ThreadObservation.make({ threadId, afterOffset: savedOffset }))\n .pipe(Stream.take(2), Stream.runCollect);\n\n yield* ensure(\n resumed.map((envelope) => envelope.record.recordId).join(\",\") ===\n committed\n .slice(2)\n .map((envelope) => envelope.record.recordId)\n .join(\",\"),\n \"Observation from a saved offset must deliver exactly the suffix in order\",\n );\n\n const fromStart = yield* store\n .observe(ThreadObservation.make({ threadId }))\n .pipe(Stream.take(4), Stream.runCollect);\n\n yield* ensure(\n fromStart.map((envelope) => envelope.record.recordId).join(\",\") ===\n committed.map((envelope) => envelope.record.recordId).join(\",\"),\n \"Observation without an offset must deliver the full log in order\",\n );\n }),\n);\n\nconst checkpointBoundaries = conformanceCase(\n \"enforces checkpoint save and load boundary rules\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-checkpoints\");\n const store = yield* ThreadStore;\n const checkpoints = store.checkpoints;\n\n if (checkpoints === undefined) {\n return yield* ThreadStoreConformanceViolation.make({\n caseName: \"enforces checkpoint save and load boundary rules\",\n message: \"The optional checkpoint suite requires checkpoint support\",\n });\n }\n\n const missing = [\n yield* expectFailure(\n \"saving a checkpoint for an unmaterialized Thread\",\n checkpoints.save(\n SaveCheckpointRequest.make({\n checkpoint: checkpointAt(threadId, ZERO_SEQUENCE, EMPTY_TAIL_DIGEST),\n }),\n ),\n ),\n yield* expectFailure(\n \"loading a checkpoint for an unmaterialized Thread\",\n checkpoints.load(LoadCheckpointRequest.make({ threadId })),\n ),\n ];\n\n yield* ensure(\n missing.every(isThreadNotMaterialized),\n \"Checkpoints require a materialized Thread\",\n );\n yield* materialize(threadId, EPOCH_ONE);\n\n const first = yield* append(\n threadId,\n batch(\"checkpoint-batch-1\", [record(\"checkpoint-record-1\", \"Kyoto\")]),\n );\n\n const aheadOfTail = yield* expectFailure(\n \"a checkpoint claiming a sequence beyond the committed tail\",\n checkpoints.save(\n SaveCheckpointRequest.make({\n checkpoint: checkpointAt(\n threadId,\n decodeSequence(first.lastSequence + 1),\n first.tailDigest,\n ),\n }),\n ),\n );\n\n yield* ensure(\n isCheckpointRejected(aheadOfTail) && aheadOfTail.reason === \"ahead-of-tail\",\n \"A checkpoint ahead of the tail must be rejected with reason ahead-of-tail\",\n );\n\n const digestMismatch = yield* expectFailure(\n \"a checkpoint whose digest does not match the canonical chain\",\n checkpoints.save(\n SaveCheckpointRequest.make({\n checkpoint: checkpointAt(threadId, first.lastSequence, EMPTY_TAIL_DIGEST),\n }),\n ),\n );\n\n yield* ensure(\n isCheckpointRejected(digestMismatch) && digestMismatch.reason === \"digest-mismatch\",\n \"A checkpoint with a mismatched digest must be rejected with reason digest-mismatch\",\n );\n yield* ensure(\n Option.isNone(yield* checkpoints.load(LoadCheckpointRequest.make({ threadId }))),\n \"Rejected checkpoints must not become loadable\",\n );\n\n const valid = checkpointAt(threadId, first.lastSequence, first.tailDigest);\n\n yield* checkpoints.save(SaveCheckpointRequest.make({ checkpoint: valid }));\n yield* checkpoints.save(SaveCheckpointRequest.make({ checkpoint: valid }));\n\n const loaded = yield* checkpoints.load(LoadCheckpointRequest.make({ threadId }));\n\n yield* ensure(\n Option.isSome(loaded) &&\n loaded.value.throughSequence === first.lastSequence &&\n loaded.value.tailDigest === first.tailDigest,\n \"A valid checkpoint must load bound to its canonical sequence and digest\",\n );\n\n const beforeCheckpoint = yield* checkpoints.load(\n LoadCheckpointRequest.make({ threadId, atOrBeforeSequence: ZERO_SEQUENCE }),\n );\n\n yield* ensure(\n Option.isNone(beforeCheckpoint),\n \"Checkpoint lookup must respect the atOrBeforeSequence bound\",\n );\n\n yield* append(\n threadId,\n batch(\"checkpoint-batch-2\", [record(\"checkpoint-record-2\", \"Nara\")]),\n first,\n );\n const afterAppend = yield* checkpoints.load(LoadCheckpointRequest.make({ threadId }));\n\n yield* ensure(\n Option.isSome(afterAppend) && afterAppend.value.throughSequence === first.lastSequence,\n \"An older checkpoint must remain loadable after later appends\",\n );\n }),\n);\n\nconst tailInspection = conformanceCase(\n \"inspects the canonical tail so a resuming producer can compose its next append\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-tail-inspection\");\n const store = yield* ThreadStore;\n\n const missing = yield* expectFailure(\n \"inspecting the tail of an unmaterialized Thread\",\n store.inspectTail(ThreadTailRequest.make({ threadId })),\n );\n\n yield* ensure(\n isThreadNotMaterialized(missing) && missing.threadId === threadId,\n \"Tail inspection of an unmaterialized Thread must fail as not materialized\",\n );\n\n yield* materialize(threadId, EPOCH_ONE);\n const empty = yield* store.inspectTail(ThreadTailRequest.make({ threadId }));\n\n yield* ensure(\n empty.tailSequence === ZERO_SEQUENCE &&\n empty.tailDigest === EMPTY_TAIL_DIGEST &&\n empty.producerEpoch === EPOCH_ONE,\n \"An empty Thread must report the zero tail and its registered epoch\",\n );\n const emptyIdentity = yield* store.readIdentity(ThreadIdentityRequest.make({ threadId }));\n\n yield* ensure(\n emptyIdentity.tailSequence === ZERO_SEQUENCE &&\n emptyIdentity.tailDigest === EMPTY_TAIL_DIGEST &&\n emptyIdentity.producerEpoch === EPOCH_ONE &&\n emptyIdentity.records.length === 0,\n \"A materialized empty identity remains distinct from a missing Thread\",\n );\n\n const first = yield* append(\n threadId,\n batch(\"inspect-batch-1\", [record(workerOriginRecordId(threadId), \"first\")]),\n );\n\n const afterAppend = yield* store.inspectTail(ThreadTailRequest.make({ threadId }));\n\n yield* ensure(\n afterAppend.tailSequence === first.lastSequence &&\n afterAppend.tailDigest === first.tailDigest,\n \"Tail inspection must match the latest AppendResult\",\n );\n // Regression: https://github.com/danieljvdm/effect-agent/commit/6a4f4f870\n const identity = yield* store.readIdentity(ThreadIdentityRequest.make({ threadId }));\n\n yield* ensure(\n identity.threadId === threadId &&\n identity.tailSequence === first.lastSequence &&\n identity.tailDigest === first.tailDigest &&\n identity.producerEpoch === EPOCH_ONE &&\n identity.records.length === 1 &&\n identity.records[0]?.record.recordId === workerOriginRecordId(threadId),\n \"Identity captures the canonical tail and deduplicates a first record at the origin locator\",\n );\n\n const resumed = yield* append(\n threadId,\n batch(\"inspect-batch-2\", [record(\"inspect-record-2\", \"second\")]),\n { lastSequence: afterAppend.tailSequence, tailDigest: afterAppend.tailDigest },\n afterAppend.producerEpoch,\n );\n\n yield* ensure(\n resumed.firstSequence === afterAppend.tailSequence + 1,\n \"An append composed from the inspected tail must commit without exporting the log\",\n );\n\n const staleIdentity = yield* expectFailure(\n \"appending from an identity snapshot after a tail advance\",\n append(\n threadId,\n batch(\"inspect-stale-identity\", [record(\"inspect-record-3\", \"third\")]),\n { lastSequence: identity.tailSequence, tailDigest: identity.tailDigest },\n identity.producerEpoch,\n ),\n );\n\n yield* ensure(\n isAppendConflict(staleIdentity) && staleIdentity.reason === \"tail\",\n \"Identity reads do not bypass the canonical append tail fence\",\n );\n const beforeTakeover = yield* store.readIdentity(ThreadIdentityRequest.make({ threadId }));\n\n yield* materialize(threadId, EPOCH_TWO);\n const afterTakeover = yield* store.inspectTail(ThreadTailRequest.make({ threadId }));\n\n yield* ensure(\n afterTakeover.producerEpoch === EPOCH_TWO &&\n afterTakeover.tailSequence === resumed.lastSequence,\n \"Tail inspection must reflect epoch takeover without disturbing the tail\",\n );\n\n const fencedIdentity = yield* expectFailure(\n \"appending from an identity snapshot after an epoch-only takeover\",\n append(\n threadId,\n batch(\"inspect-stale-epoch\", [record(\"inspect-record-3\", \"third\")]),\n { lastSequence: beforeTakeover.tailSequence, tailDigest: beforeTakeover.tailDigest },\n beforeTakeover.producerEpoch,\n ),\n );\n\n yield* ensure(\n isFenceRejected(fencedIdentity),\n \"An epoch-only takeover rejects the identity snapshot's captured producer fence\",\n );\n\n const afterTakeoverIdentity = yield* store.readIdentity(\n ThreadIdentityRequest.make({ threadId }),\n );\n\n const retried = yield* append(\n threadId,\n batch(\"inspect-retry-identity\", [record(\"inspect-record-3\", \"third\")]),\n {\n lastSequence: afterTakeoverIdentity.tailSequence,\n tailDigest: afterTakeoverIdentity.tailDigest,\n },\n afterTakeoverIdentity.producerEpoch,\n );\n\n yield* ensure(\n afterTakeoverIdentity.producerEpoch === EPOCH_TWO &&\n afterTakeoverIdentity.tailSequence === resumed.lastSequence &&\n afterTakeoverIdentity.records.length === 1 &&\n retried.lastSequence === resumed.lastSequence + 1,\n \"Rereading identity after takeover retains the bounded facts and permits the current producer\",\n );\n }),\n);\n\nconst notMaterializedOperations = conformanceCase(\n \"fails every read and write against an unmaterialized Thread\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-not-materialized\");\n const store = yield* ThreadStore;\n\n const failures = [\n yield* expectFailure(\n \"appending to an unmaterialized Thread\",\n append(threadId, batch(\"missing-batch-1\", [record(\"missing-record-1\", \"first\")])),\n ),\n yield* expectFailure(\"reading an unmaterialized Thread\", readAll(threadId)),\n yield* expectFailure(\n \"observing an unmaterialized Thread\",\n store\n .observe(ThreadObservation.make({ threadId }))\n .pipe(Stream.take(1), Stream.runCollect),\n ),\n yield* expectFailure(\n \"exporting an unmaterialized Thread\",\n store.export(ThreadExportRequest.make({ threadId })),\n ),\n yield* expectFailure(\n \"inspecting the tail of an unmaterialized Thread\",\n store.inspectTail(ThreadTailRequest.make({ threadId })),\n ),\n yield* expectFailure(\n \"reading the identity of an unmaterialized Thread\",\n store.readIdentity(ThreadIdentityRequest.make({ threadId })),\n ),\n ];\n\n yield* Effect.forEach(\n failures,\n (failure) =>\n ensure(\n isThreadNotMaterialized(failure) && failure.threadId === threadId,\n \"Operations against an unmaterialized Thread must fail as not materialized\",\n ),\n { discard: true },\n );\n }),\n);\n\nconst selectedOutstanding = Effect.fnUntraced(function* (threadId: ThreadId) {\n const store = yield* ThreadStore;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId }));\n\n return yield* Stream.runCollect(\n store.read({\n threadId,\n page: { limit: 1024 },\n selection: {\n _tag: \"Outstanding\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n },\n }),\n );\n});\n\nconst nativeOutstandingReads = conformanceCase(\n \"native reads retain uncertainty until canonical result and preserve exact input identities\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"conformance-native-outstanding\");\n\n yield* materialize(threadId, EPOCH_ONE);\n\n let tail = yield* append(\n threadId,\n batch(\"native-input\", [record(\"native-input\", \"original\")]),\n );\n\n const toolCallId = Schema.decodeSync(ToolCallId)(\"native-call\");\n\n const prepared = ToolCallPrepared.make({\n runId: CONFORMANCE_RUN,\n turnId: Schema.decodeSync(TurnId)(\"native-turn\"),\n turn: 1,\n toolCallId,\n toolName: \"write\",\n parameters: { original: true },\n parametersDigest: EMPTY_TAIL_DIGEST,\n executionKind: \"orchestration\",\n executionClass: \"uncertain\",\n });\n\n const envelope = (id: string, payload: RecordEnvelope[\"payload\"]) =>\n RecordEnvelope.make({ ...record(id, \"unused\"), payload });\n\n tail = yield* append(\n threadId,\n batch(\"native-prepared\", [envelope(\"native-prepared\", prepared)]),\n tail,\n );\n const store = yield* ThreadStore;\n\n const selected = {\n threadId,\n page: { limit: 1 },\n selection: {\n _tag: \"Outstanding\" as const,\n expectedTailSequence: tail.lastSequence,\n expectedTailDigest: tail.tailDigest,\n },\n };\n\n yield* expectFailure(\n \"Old decoder must reject a selected read\",\n Schema.decodeUnknownEffect(ThreadRead)(selected),\n );\n yield* expectFailure(\n \"Digest mismatch must reject a selected read\",\n Stream.runCollect(\n store.read({\n ...selected,\n selection: { ...selected.selection, expectedTailDigest: EMPTY_TAIL_DIGEST },\n }),\n ),\n );\n const first = yield* selectedOutstanding(threadId);\n\n yield* ensure(\n first.length === 1 &&\n first[0]?.record.payload._tag === \"ToolCallPrepared\" &&\n first[0].record.payload.executionKind === \"orchestration\",\n \"A current orchestration preparation is not an unknown outcome\",\n );\n tail = yield* append(\n threadId,\n batch(\"native-unknown\", [\n envelope(\n \"native-unknown\",\n ToolCallUnknown.make({\n runId: CONFORMANCE_RUN,\n turn: 1,\n toolCallId,\n toolName: \"write\",\n reason: \"ownership lost\",\n }),\n ),\n ]),\n tail,\n );\n tail = yield* append(\n threadId,\n batch(\"native-permission\", [\n envelope(\n \"native-permission\",\n ToolCallResolved.make({\n runId: CONFORMANCE_RUN,\n toolCallId,\n resolution: \"safe-retry\",\n author: \"operator\",\n reason: \"supplier supports same key\",\n }),\n ),\n ]),\n tail,\n );\n yield* expectFailure(\n \"An append that changed outstanding flags invalidates the captured page\",\n Stream.runCollect(store.read(selected)),\n );\n const unknown = yield* selectedOutstanding(threadId);\n\n yield* ensure(\n unknown.length === 1 && unknown[0]?.record.payload._tag === \"ToolCallUnknown\",\n \"A resolution permission is not a recorded external result\",\n );\n\n const exact = yield* getRecord({\n threadId,\n recordId: decodeRecordId(\"native-prepared\"),\n });\n\n const input = yield* getRunInput({ threadId, runId: CONFORMANCE_RUN });\n\n yield* ensure(\n Option.isSome(exact) &&\n exact.value.record.payload._tag === \"ToolCallPrepared\" &&\n Option.isSome(input) &&\n input.value.record.recordId === \"native-input\",\n \"Exact lookups retain original preparation and host input\",\n );\n tail = yield* append(\n threadId,\n batch(\"later-preparation\", [envelope(\"later-preparation\", prepared)]),\n tail,\n );\n const retained = yield* selectedOutstanding(threadId);\n\n yield* ensure(\n retained.length === 2 &&\n retained[0]?.record.payload._tag === \"ToolCallUnknown\" &&\n retained[1]?.record.payload._tag === \"ToolCallPrepared\",\n \"A later preparation never overwrites older uncertainty\",\n );\n\n const currentSelection = {\n ...selected,\n selection: {\n ...selected.selection,\n expectedTailSequence: tail.lastSequence,\n expectedTailDigest: tail.tailDigest,\n },\n };\n\n const sparsePage = yield* Stream.runCollect(store.read(currentSelection));\n\n const sparseNext = yield* Stream.runCollect(\n store.read({\n ...currentSelection,\n page: { limit: 1, afterSequence: sparsePage[0]!.sequence },\n }),\n );\n\n yield* ensure(\n sparsePage[0]?.record.payload._tag === \"ToolCallUnknown\" &&\n sparseNext[0]?.record.payload._tag === \"ToolCallPrepared\",\n \"Selection pages use sparse canonical sequence without skipping current records\",\n );\n yield* append(\n threadId,\n batch(\"native-result\", [\n envelope(\n \"native-result\",\n ToolCallSettled.make({\n runId: CONFORMANCE_RUN,\n toolCallId,\n toolName: \"write\",\n result: { receipt: \"supplier-receipt\" },\n isFailure: false,\n }),\n ),\n ]),\n tail,\n );\n yield* ensure(\n (yield* selectedOutstanding(threadId)).length === 0,\n \"Only canonical result retires the uncertain call\",\n );\n const missingThread = decodeThreadId(\"native-missing\");\n\n const missing = yield* expectFailure(\n \"reading unmaterialized native state\",\n selectedOutstanding(missingThread),\n );\n\n yield* ensure(\n isThreadNotMaterialized(missing),\n \"Missing storage is never an empty inventory\",\n );\n }),\n);\n\nconst nativeAmbiguousOwnership = conformanceCase(\n \"native Run input lookup fails closed on ambiguous original input\",\n ({ expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"ambiguous-native-run\");\n\n yield* materialize(threadId, EPOCH_ONE);\n yield* append(\n threadId,\n batch(\"inputs\", [record(\"input-1\", \"first\"), record(\"input-2\", \"second\")]),\n );\n yield* expectFailure(\n \"ambiguous original Run input\",\n getRunInput({ threadId, runId: CONFORMANCE_RUN }),\n );\n }),\n);\n\nconst nativeWorkerAccounting = conformanceCase(\n \"native worker accounting retains lifetime reservations without conversation history\",\n ({ ensure, expectFailure }) =>\n Effect.gen(function* () {\n const threadId = decodeThreadId(\"native-worker-accounting\");\n const store = yield* ThreadStore;\n\n yield* materialize(threadId, EPOCH_ONE);\n const workerThreadId = decodeThreadId(\"worker\");\n const agentId = Schema.decodeSync(AgentId)(\"agent\");\n\n const origin = {\n worker: {\n schemaVersion: 1 as const,\n delegationId: Schema.decodeSync(DelegationId)(\"child\"),\n targetAgentId: agentId,\n threadId: workerThreadId,\n },\n source: { _tag: \"programmatic\" as const, agentId, threadId },\n targetDigests: {\n agent: EMPTY_TAIL_DIGEST,\n model: EMPTY_TAIL_DIGEST,\n tools: EMPTY_TAIL_DIGEST,\n },\n policy: AgentPolicy.make({\n maxTurns: 1,\n maxToolCalls: 1,\n maxDuration: \"1 second\",\n toolConcurrency: 1,\n }),\n budget: {\n caps: SubagentDelegationCaps.make({}),\n allocation: SubagentReservationAmounts.make({\n turns: 1,\n toolCalls: 1,\n durationMillis: 1000,\n inputTokens: 0,\n outputTokens: 0,\n costMicrousd: 0,\n resultBytes: 0,\n }),\n },\n grant: SubagentGrant.make({ allowedToolNames: [], maxDepth: 1 }),\n depth: 1,\n firstMessageId: Schema.decodeSync(IdempotencyKey)(\"message-0\"),\n createdAtMillis: 0,\n expiresAtMillis: 1000,\n };\n\n const envelope = (id: string, payload: RecordEnvelope[\"payload\"]) =>\n RecordEnvelope.make({ ...record(id, \"unused\"), payload });\n\n const completed = (messageId: IdempotencyKey, verified: boolean) =>\n WorkerInputCompleted.make({\n messageId,\n workerThreadId,\n submissionId: CONFORMANCE_SUBMISSION,\n receiptId: Schema.decodeSync(ReceiptId)(\"receipt\"),\n settlementId: Schema.decodeSync(SettlementId)(\"settlement\"),\n completedAtMillis: 1,\n ...(verified ? { effectsResolved: true as const } : {}),\n });\n\n const requested = WorkerInputRequested.make({\n admission: { origin, messageId: origin.firstMessageId, parameters: {}, createdAtMillis: 0 },\n inputDigest: EMPTY_TAIL_DIGEST,\n });\n\n let tail = yield* append(\n threadId,\n batch(\"legacy\", [\n envelope(\"requested\", requested),\n envelope(\"legacy-completion\", completed(origin.firstMessageId, false)),\n ]),\n );\n\n yield* expectFailure(\n \"Legacy acknowledgements remain explicitly incomplete\",\n selectedOutstanding(threadId),\n );\n tail = yield* append(\n threadId,\n batch(\"verified\", [envelope(\"verified\", completed(origin.firstMessageId, true))]),\n tail,\n );\n yield* ensure(\n (yield* selectedOutstanding(threadId)).length === 0 &&\n Option.isSome(yield* getRecord({ threadId, recordId: decodeRecordId(\"requested\") })),\n \"Proven completion retires the input while retaining its canonical reservation\",\n );\n // Regression: https://github.com/danieljvdm/effect-agent/commit/6a4f4f870\n // Payloads do not select identity: the exact lineage locator precedes the\n // exact origin locator in the log, while replies retain first/origin/lineage order.\n tail = yield* append(\n threadId,\n batch(\"identity-lineage\", [record(subagentLineageRecordId(threadId), \"lineage\")]),\n tail,\n );\n // Cross the recovery horizon with irrelevant conversation records. Native worker\n // accounting must return the same families and scope, while capturing the full CAS tail.\n for (let base = 0; base < 4097; base += 256) {\n const makeInput = (n: number) =>\n envelope(\n `history-${n}`,\n UserInputRecorded.make({ kind: \"steering\", input: `message-${n}` }),\n );\n\n tail = yield* append(\n threadId,\n batch(`history-${base}`, [\n makeInput(base),\n ...Array.from({ length: Math.min(255, 4096 - base) }, (_, offset) =>\n makeInput(base + offset + 1),\n ),\n ]),\n tail,\n );\n }\n tail = yield* append(\n threadId,\n batch(\"identity-origin\", [record(workerOriginRecordId(threadId), \"origin\")]),\n tail,\n );\n const identity = yield* store.readIdentity(ThreadIdentityRequest.make({ threadId }));\n\n yield* ensure(\n identity.threadId === threadId &&\n identity.tailSequence === tail.lastSequence &&\n identity.tailDigest === tail.tailDigest &&\n identity.producerEpoch === EPOCH_ONE &&\n identity.records.length === 3 &&\n identity.records.map(({ record }) => record.recordId).join() ===\n [\n \"requested\",\n workerOriginRecordId(threadId),\n subagentLineageRecordId(threadId),\n ].join() &&\n identity.records.every(\n (entry) => entry.threadId === threadId && entry.sequence <= identity.tailSequence,\n ),\n \"Identity selects the exact canonical locators in semantic order beyond the recovery horizon\",\n );\n\n const budgetRow = (id: string, sourceSubmissionId: SubmissionId) =>\n envelope(\n id,\n SubtreeBudgetReserved.make({\n reservationId: id,\n sourceSubmissionId,\n childThreadId: workerThreadId,\n lifetime: \"background\",\n depth: 1,\n policy: origin.policy,\n budget: origin.budget,\n grant: origin.grant,\n }),\n );\n\n tail = yield* append(\n threadId,\n batch(\"scoped-budgets\", [\n budgetRow(\"selected\", CONFORMANCE_SUBMISSION),\n budgetRow(\"old-run\", Schema.decodeSync(SubmissionId)(\"old-run\")),\n ]),\n tail,\n );\n yield* ensure(\n (yield* store.countPeerMessages!({ threadId, limit: 1 })) === 0,\n \"Conversation history does not count as peer sends\",\n );\n\n const peerProof = (n: number) =>\n envelope(\n `peer-${n}`,\n PeerMessagePrepared.make({\n messageId: Schema.decodeSync(IdempotencyKey)(`peer-${n}`),\n encodedEnvelope: {},\n sourcePrincipal: Schema.decodeSync(PeerMessagePrepared.fields.sourcePrincipal)(\"owner\"),\n operation: \"send\",\n deadlineAtMillis: 1000,\n }),\n );\n\n tail = yield* append(threadId, batch(\"peer-proofs\", [peerProof(0), peerProof(1)]), tail);\n yield* ensure(\n (yield* store.countPeerMessages!({ threadId, limit: 1 })) === 1 &&\n (yield* store.countPeerMessages!({ threadId, limit: 1000 })) === 2,\n \"Peer count saturates at the requested capacity without returning payloads\",\n );\n\n yield* expectFailure(\n \"Worker accounting cannot return a partial authorization snapshot\",\n readWorkerState({ threadId, sourceSubmissionId: CONFORMANCE_SUBMISSION, limit: 3 }),\n );\n\n const accounting = yield* readWorkerState({\n threadId,\n sourceSubmissionId: CONFORMANCE_SUBMISSION,\n limit: 4,\n });\n\n yield* ensure(\n accounting.records.length === 4 &&\n accounting.records\n .filter(({ record }) => record.payload._tag === \"SubtreeBudgetReserved\")\n .map(({ record }) => record.recordId)\n .join() === \"selected\",\n \"Worker state excludes conversation and another Run's accounting, retaining completed lifetime reservations\",\n );\n yield* ensure(\n accounting.tailSequence === tail.lastSequence && accounting.tailDigest === tail.tailDigest,\n \"The accounting snapshot carries the full canonical CAS tail\",\n );\n // Regression: https://github.com/danieljvdm/effect-agent/blob/c721a292205e06185f0136c3ed05dcf53e29ca66/packages/effect-agent/src/durable/SqlThreadNativeReads.ts#L195-L214\n yield* append(\n threadId,\n batch(\"stop-worker\", [\n envelope(\n \"stop-worker\",\n WorkerStopRequested.make({\n command: {\n worker: origin.worker,\n idempotencyKey: Schema.decodeSync(IdempotencyKey)(\"stop-worker\"),\n },\n }),\n ),\n ]),\n tail,\n );\n\n const stopped = yield* readWorkerState({\n threadId,\n sourceSubmissionId: CONFORMANCE_SUBMISSION,\n limit: 5,\n });\n\n yield* ensure(\n stopped.records.some(({ record }) => record.payload._tag === \"WorkerStopRequested\"),\n \"Native worker state retains explicit stop intent after assignment completion\",\n );\n }),\n);\n\n/**\n * The shared, adapter-parameterized ThreadStore contract suite (STORE-010). Every\n * durable adapter test suite must execute each case against its own store provisioning.\n */\nexport const threadStoreConformanceCases: ReadonlyArray<ThreadStoreConformanceCase> = [\n nativeOutstandingReads,\n nativeAmbiguousOwnership,\n nativeWorkerAccounting,\n atomicBatchVisibility,\n idempotentReplay,\n tailConflict,\n producerFencing,\n offsetResumability,\n tailInspection,\n notMaterializedOperations,\n];\n\n/** Additional contract cases only for adapters advertising `ThreadStore.checkpoints`. */\nexport const threadCheckpointConformanceCases: ReadonlyArray<ThreadStoreConformanceCase> = [\n checkpointBoundaries,\n];\n"],"mappings":";;;;;;;;;;;AAmEA,IAAa,kCAAb,cAAqD,OAAO,YAA6C,CAAC,CACxG,mCACA;CACE,UAAU,OAAO;CACjB,SAAS,OAAO;AAClB,CACF,CAAC,CAAC,CAAC;AAiBH,MAAM,iBAAiB,OAAO,WAAW,QAAQ;AACjD,MAAM,iBAAiB,OAAO,WAAW,QAAQ;AACjD,MAAM,gBAAgB,OAAO,WAAW,OAAO;AAC/C,MAAM,iBAAiB,OAAO,WAAW,iBAAiB;AAC1D,MAAM,cAAc,OAAO,WAAW,aAAa;AAEnD,MAAM,yBAAyB,OAAO,WAAW,YAAY,CAAC,CAAC,wBAAwB;AACvF,MAAM,uBAAuB,OAAO,WAAW,UAAU,CAAC,CAAC,sBAAsB;AACjF,MAAM,yBAAyB,OAAO,WAAW,YAAY,CAAC,CAAC,wBAAwB;AACvF,MAAM,kBAAkB,OAAO,WAAW,KAAK,CAAC,CAAC,iBAAiB;AAClE,MAAM,yBAAyB,SAAS,MAAM,SAAS,WAAW,CAAC,CAAC;AAEpE,MAAM,gBAAgB,eAAe,CAAC;AACtC,MAAM,YAAY,YAAY,CAAC;AAC/B,MAAM,YAAY,YAAY,CAAC;AAC/B,MAAM,aAAa;CAAE,cAAc;CAAe,YAAY;AAAkB;AAChF,MAAM,mBAAmB,OAAO,GAAG,cAAc;AACjD,MAAM,kBAAkB,OAAO,GAAG,aAAa;AAC/C,MAAM,uBAAuB,OAAO,GAAG,kBAAkB;AACzD,MAAM,0BAA0B,OAAO,GAAG,qBAAqB;AAE/D,MAAM,UAAU,UAAkB,UAChC,eAAe,KAAK;CAClB,UAAU,eAAe,QAAQ;CACjC,QAAQ;CACR,eAAe;CACf,WAAW;CACX,cAAc;CACd,SAAS,kBAAkB,KAAK;EAC9B,cAAc;EACd,MAAM;EACN,OAAO;EACP;CACF,CAAC;AACH,CAAC;AAEH,MAAM,SACJ,SACA,YAEA,eAAe,KAAK;CAClB,SAAS,cAAc,OAAO;CAC9B,YAAY;CACZ;AACF,CAAC;AAEH,MAAM,cAAc,OAAO,GAAG,oCAAoC,CAAC,CAAC,WAClE,UACA,eACA;CAGA,QAAO,OAFc,YAAA,CAER,YAAY,sBAAsB,KAAK;EAAE;EAAU;CAAc,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,SAAS,OAAO,GAAG,+BAA+B,CAAC,CAAC,WACxD,UACA,gBACA,OAA0D,YAC1D,gBAA+B,WAC/B;CAGA,OAAO,QAAO,OAFO,YAAA,CAED,OAClB,oBAAoB,KAAK;EACvB;EACA,OAAO;EACP,sBAAsB,KAAK;EAC3B,oBAAoB,KAAK;EACzB;CACF,CAAC,CACH;AACF,CAAC;AAED,MAAM,UAAU,OAAO,GAAG,gCAAgC,CAAC,CAAC,WAAW,UAAoB;CAGzF,OAAO,QAAO,OAFO,YAAA,CAED,KAAK,WAAW,KAAK;EAAE;EAAU,OAAO;CAAM,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,UAAU;AAC9F,CAAC;AAED,MAAM,gBACJ,UACA,iBACA,eAEA,iBAAiB,KAAK;CACpB,eAAe;CACf;CACA;CACA;CACA,OAAO,EAAE,aAAa,KAAK;CAC3B,WAAW;AACb,CAAC;AAEH,MAAM,mBACJ,MACA,WAUgC;CAChC;CACA,KAAK,MAAM;EACT,SAAS,WAAW,YAClB,YACI,OAAO,OACP,OAAO,KAAK,gCAAgC,KAAK;GAAE,UAAU;GAAM;EAAQ,CAAC,CAAC;EACnF,gBAAgB,aAAa,WAC3B,OAAO,KAAK,MAAM,CAAC,CAAC,KAClB,OAAO,eACL,gCAAgC,KAAK;GACnC,UAAU;GACV,SAAS,iDAAiD;EAC5D,CAAC,CACH,CACF;CACJ,CAAC,CAAC,CAAC,KAAK,OAAO,SAAS,0BAA0B,MAAM,CAAC;AAC3D;AAEA,MAAM,wBAAwB,gBAC5B,iEACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,oBAAoB;CACpD,MAAM,QAAQ,OAAO;CAErB,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,YAAY,OAAO,OACvB,UACA,MAAM,kBAAkB;EACtB,OAAO,mBAAmB,OAAO;EACjC,OAAO,mBAAmB,QAAQ;EAClC,OAAO,mBAAmB,OAAO;CACnC,CAAC,CACH;CAEA,OAAO,OACL,UAAU,kBAAkB,KAAK,UAAU,iBAAiB,GAC5D,wDACF;CAEA,MAAM,OAAO,OAAO,QAAQ,QAAQ;CAEpC,OAAO,OAAO,KAAK,WAAW,GAAG,+CAA+C;CAChF,OAAO,OACL,KAAK,OAAO,UAAU,UAAU,SAAS,aAAa,QAAQ,CAAC,GAC/D,yDACF;CAMA,OAAO,QACL,OALsB,MACrB,QAAQ,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAC7C,KAAK,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU,EAAA,CAG9B,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAAC,KAAK,GAAG,MAC3D,KAAK,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAAC,KAAK,GAAG,GAC3D,iEACF;CAEA,MAAM,YAAY,OAAO,mBAAmB,WAAW;CAEvD,MAAM,aAAa,OAAO,cACxB,0CACA,OAAO,UAAU,MAAM,kBAAkB,CAAC,WAAW,SAAS,CAAC,GAAG,SAAS,CAC7E;CAEA,OAAO,OACL,iBAAiB,UAAU,KAAK,WAAW,WAAW,mBACtD,mFACF;CAEA,MAAM,aAAa,OAAO,cACxB,kDACA,OAAO,UAAU,MAAM,kBAAkB,CAAC,OAAO,mBAAmB,QAAQ,CAAC,CAAC,GAAG,SAAS,CAC5F;CAEA,OAAO,OACL,iBAAiB,UAAU,KAAK,WAAW,WAAW,mBACtD,6EACF;CAEA,MAAM,WAAW,OAAO,MAAM,OAAO,oBAAoB,KAAK,EAAE,SAAS,CAAC,CAAC;CAE3E,OAAO,OACL,SAAS,QAAQ,WAAW,KAC1B,SAAS,iBAAiB,UAAU,gBACpC,SAAS,eAAe,UAAU,YACpC,yDACF;AACF,CAAC,CACL;AAEA,MAAM,mBAAmB,gBACvB,wEACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,oBAAoB;CAEpD,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,WAAW,MAAM,kBAAkB,CACvC,OAAO,mBAAmB,QAAQ,GAClC,OAAO,mBAAmB,OAAO,CACnC,CAAC;CAED,MAAM,QAAQ,OAAO,OAAO,UAAU,QAAQ;CAE9C,OAAO,OAAO,CAAC,MAAM,UAAU,sDAAsD;CAErF,MAAM,WAAW,OAAO,OAAO,UAAU,QAAQ;CAEjD,OAAO,OACL,SAAS,YACP,SAAS,kBAAkB,MAAM,iBACjC,SAAS,iBAAiB,MAAM,gBAChC,SAAS,eAAe,MAAM,YAChC,gFACF;CAEA,MAAM,UAAU,OAAO,cACrB,yDACA,OAAO,UAAU,MAAM,kBAAkB,CAAC,OAAO,mBAAmB,MAAM,CAAC,CAAC,CAAC,CAC/E;CAEA,OAAO,OACL,iBAAiB,OAAO,KAAK,QAAQ,WAAW,gBAChD,mFACF;CAIA,OAAO,QAAO,OAFM,QAAQ,QAAQ,EAAA,CAEjB,WAAW,GAAG,0DAA0D;AAC7F,CAAC,CACL;AAEA,MAAM,eAAe,gBACnB,6DACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,kBAAkB;CAElD,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,QAAQ,OAAO,OACnB,UACA,MAAM,gBAAgB,CAAC,OAAO,iBAAiB,OAAO,CAAC,CAAC,CAC1D;CAEA,MAAM,gBAAgB,OAAO,cAC3B,oDACA,OAAO,UAAU,MAAM,gBAAgB,CAAC,OAAO,iBAAiB,QAAQ,CAAC,CAAC,CAAC,CAC7E;CAEA,OAAO,OACL,iBAAiB,aAAa,KAAK,cAAc,WAAW,QAC5D,+DACF;CACA,OAAO,OACL,iBAAiB,aAAa,KAC5B,cAAc,uBAAuB,MAAM,gBAC3C,cAAc,qBAAqB,MAAM,YAC3C,uEACF;CAEA,MAAM,cAAc,OAAO,cACzB,gEACA,OAAO,UAAU,MAAM,gBAAgB,CAAC,OAAO,iBAAiB,QAAQ,CAAC,CAAC,GAAG;EAC3E,cAAc,MAAM;EACpB,YAAY;CACd,CAAC,CACH;CAEA,OAAO,OACL,iBAAiB,WAAW,KAAK,YAAY,WAAW,QACxD,6DACF;CAQA,OAAO,QACL,OAPuB,OACvB,UACA,MAAM,gBAAgB,CAAC,OAAO,iBAAiB,QAAQ,CAAC,CAAC,GACzD,KACF,EAAA,CAGY,kBAAkB,MAAM,eAAe,GACjD,qEACF;AACF,CAAC,CACL;AAEA,MAAM,kBAAkB,gBACtB,+DACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,qBAAqB;CAErD,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,QAAQ,OAAO,OACnB,UACA,MAAM,iBAAiB,CAAC,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAC5D;CAEA,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,cAAc,OAAO,cACzB,mDACA,OACE,UACA,MAAM,iBAAiB,CAAC,OAAO,kBAAkB,QAAQ,CAAC,CAAC,GAC3D,OACA,SACF,CACF;CAEA,OAAO,OACL,gBAAgB,WAAW,KACzB,YAAY,gBAAgB,aAC5B,YAAY,mBAAmB,WACjC,iEACF;CAEA,MAAM,mBAAmB,OAAO,cAC9B,yDACA,YAAY,UAAU,SAAS,CACjC;CAEA,OAAO,OACL,gBAAgB,gBAAgB,GAChC,qEACF;CAEA,MAAM,WAAW,OAAO,OACtB,UACA,MAAM,iBAAiB,CAAC,OAAO,kBAAkB,QAAQ,CAAC,CAAC,GAC3D,OACA,SACF;CAEA,OAAO,OACL,CAAC,SAAS,YAAY,SAAS,kBAAkB,MAAM,eAAe,GACtE,yDACF;AACF,CAAC,CACL;AAEA,MAAM,qBAAqB,gBACzB,oEACC,EAAE,aACD,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,qBAAqB;CACrD,MAAM,QAAQ,OAAO;CAErB,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,QAAQ,OAAO,OACnB,UACA,MAAM,kBAAkB,CACtB,OAAO,mBAAmB,OAAO,GACjC,OAAO,mBAAmB,QAAQ,CACpC,CAAC,CACH;CAEA,MAAM,SAAS,OAAO,OACpB,UACA,MAAM,kBAAkB,CAAC,OAAO,mBAAmB,OAAO,CAAC,CAAC,GAC5D,KACF;CAEA,OAAO,OACL,UACA,MAAM,kBAAkB,CAAC,OAAO,mBAAmB,QAAQ,CAAC,CAAC,GAC7D,MACF;CAEA,MAAM,YAAY,OAAO,QAAQ,QAAQ;CAEzC,OAAO,OAAO,UAAU,WAAW,GAAG,wCAAwC;CAC9E,MAAM,cAAc,UAAU,EAAE,EAAE;CAElC,OAAO,OAAO,gBAAgB,KAAA,GAAW,kDAAkD;CAC3F,IAAI,gBAAgB,KAAA,GAAW;CAM/B,OAAO,QACL,OALqB,MACpB,QAAQ,kBAAkB,KAAK;EAAE;EAAU,aAAa;CAAY,CAAC,CAAC,CAAC,CACvE,KAAK,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU,EAAA,CAG/B,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAAC,KAAK,GAAG,MAC1D,UACG,MAAM,CAAC,CAAC,CACR,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAC3C,KAAK,GAAG,GACb,0EACF;CAMA,OAAO,QACL,OALuB,MACtB,QAAQ,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAC7C,KAAK,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU,EAAA,CAG7B,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAAC,KAAK,GAAG,MAC5D,UAAU,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC,CAAC,KAAK,GAAG,GAChE,kEACF;AACF,CAAC,CACL;AAEA,MAAM,uBAAuB,gBAC3B,qDACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,yBAAyB;CAEzD,MAAM,eAAc,OADC,YAAA,CACK;CAE1B,IAAI,gBAAgB,KAAA,GAClB,OAAO,OAAO,gCAAgC,KAAK;EACjD,UAAU;EACV,SAAS;CACX,CAAC;CAkBH,OAAO,OACL,CAfA,OAAO,cACL,oDACA,YAAY,KACV,sBAAsB,KAAK,EACzB,YAAY,aAAa,UAAU,eAAe,iBAAiB,EACrE,CAAC,CACH,CACF,GACA,OAAO,cACL,qDACA,YAAY,KAAK,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC,CAC3D,CAIM,CAAC,CAAC,MAAM,uBAAuB,GACrC,2CACF;CACA,OAAO,YAAY,UAAU,SAAS;CAEtC,MAAM,QAAQ,OAAO,OACnB,UACA,MAAM,sBAAsB,CAAC,OAAO,uBAAuB,OAAO,CAAC,CAAC,CACtE;CAEA,MAAM,cAAc,OAAO,cACzB,8DACA,YAAY,KACV,sBAAsB,KAAK,EACzB,YAAY,aACV,UACA,eAAe,MAAM,eAAe,CAAC,GACrC,MAAM,UACR,EACF,CAAC,CACH,CACF;CAEA,OAAO,OACL,qBAAqB,WAAW,KAAK,YAAY,WAAW,iBAC5D,2EACF;CAEA,MAAM,iBAAiB,OAAO,cAC5B,gEACA,YAAY,KACV,sBAAsB,KAAK,EACzB,YAAY,aAAa,UAAU,MAAM,cAAc,iBAAiB,EAC1E,CAAC,CACH,CACF;CAEA,OAAO,OACL,qBAAqB,cAAc,KAAK,eAAe,WAAW,mBAClE,oFACF;CACA,OAAO,OACL,OAAO,OAAO,OAAO,YAAY,KAAK,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAC/E,+CACF;CAEA,MAAM,QAAQ,aAAa,UAAU,MAAM,cAAc,MAAM,UAAU;CAEzE,OAAO,YAAY,KAAK,sBAAsB,KAAK,EAAE,YAAY,MAAM,CAAC,CAAC;CACzE,OAAO,YAAY,KAAK,sBAAsB,KAAK,EAAE,YAAY,MAAM,CAAC,CAAC;CAEzE,MAAM,SAAS,OAAO,YAAY,KAAK,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;CAE/E,OAAO,OACL,OAAO,OAAO,MAAM,KAClB,OAAO,MAAM,oBAAoB,MAAM,gBACvC,OAAO,MAAM,eAAe,MAAM,YACpC,yEACF;CAEA,MAAM,mBAAmB,OAAO,YAAY,KAC1C,sBAAsB,KAAK;EAAE;EAAU,oBAAoB;CAAc,CAAC,CAC5E;CAEA,OAAO,OACL,OAAO,OAAO,gBAAgB,GAC9B,6DACF;CAEA,OAAO,OACL,UACA,MAAM,sBAAsB,CAAC,OAAO,uBAAuB,MAAM,CAAC,CAAC,GACnE,KACF;CACA,MAAM,cAAc,OAAO,YAAY,KAAK,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;CAEpF,OAAO,OACL,OAAO,OAAO,WAAW,KAAK,YAAY,MAAM,oBAAoB,MAAM,cAC1E,8DACF;AACF,CAAC,CACL;AAEA,MAAM,iBAAiB,gBACrB,mFACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,6BAA6B;CAC7D,MAAM,QAAQ,OAAO;CAErB,MAAM,UAAU,OAAO,cACrB,mDACA,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC,CACxD;CAEA,OAAO,OACL,wBAAwB,OAAO,KAAK,QAAQ,aAAa,UACzD,2EACF;CAEA,OAAO,YAAY,UAAU,SAAS;CACtC,MAAM,QAAQ,OAAO,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC;CAE3E,OAAO,OACL,MAAM,iBAAiB,iBACrB,MAAM,eAAe,qBACrB,MAAM,kBAAkB,WAC1B,oEACF;CACA,MAAM,gBAAgB,OAAO,MAAM,aAAa,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;CAExF,OAAO,OACL,cAAc,iBAAiB,iBAC7B,cAAc,eAAe,qBAC7B,cAAc,kBAAkB,aAChC,cAAc,QAAQ,WAAW,GACnC,sEACF;CAEA,MAAM,QAAQ,OAAO,OACnB,UACA,MAAM,mBAAmB,CAAC,OAAO,qBAAqB,QAAQ,GAAG,OAAO,CAAC,CAAC,CAC5E;CAEA,MAAM,cAAc,OAAO,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC;CAEjF,OAAO,OACL,YAAY,iBAAiB,MAAM,gBACjC,YAAY,eAAe,MAAM,YACnC,oDACF;CAEA,MAAM,WAAW,OAAO,MAAM,aAAa,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;CAEnF,OAAO,OACL,SAAS,aAAa,YACpB,SAAS,iBAAiB,MAAM,gBAChC,SAAS,eAAe,MAAM,cAC9B,SAAS,kBAAkB,aAC3B,SAAS,QAAQ,WAAW,KAC5B,SAAS,QAAQ,EAAE,EAAE,OAAO,aAAa,qBAAqB,QAAQ,GACxE,4FACF;CAEA,MAAM,UAAU,OAAO,OACrB,UACA,MAAM,mBAAmB,CAAC,OAAO,oBAAoB,QAAQ,CAAC,CAAC,GAC/D;EAAE,cAAc,YAAY;EAAc,YAAY,YAAY;CAAW,GAC7E,YAAY,aACd;CAEA,OAAO,OACL,QAAQ,kBAAkB,YAAY,eAAe,GACrD,kFACF;CAEA,MAAM,gBAAgB,OAAO,cAC3B,4DACA,OACE,UACA,MAAM,0BAA0B,CAAC,OAAO,oBAAoB,OAAO,CAAC,CAAC,GACrE;EAAE,cAAc,SAAS;EAAc,YAAY,SAAS;CAAW,GACvE,SAAS,aACX,CACF;CAEA,OAAO,OACL,iBAAiB,aAAa,KAAK,cAAc,WAAW,QAC5D,8DACF;CACA,MAAM,iBAAiB,OAAO,MAAM,aAAa,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;CAEzF,OAAO,YAAY,UAAU,SAAS;CACtC,MAAM,gBAAgB,OAAO,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC;CAEnF,OAAO,OACL,cAAc,kBAAkB,aAC9B,cAAc,iBAAiB,QAAQ,cACzC,yEACF;CAEA,MAAM,iBAAiB,OAAO,cAC5B,oEACA,OACE,UACA,MAAM,uBAAuB,CAAC,OAAO,oBAAoB,OAAO,CAAC,CAAC,GAClE;EAAE,cAAc,eAAe;EAAc,YAAY,eAAe;CAAW,GACnF,eAAe,aACjB,CACF;CAEA,OAAO,OACL,gBAAgB,cAAc,GAC9B,gFACF;CAEA,MAAM,wBAAwB,OAAO,MAAM,aACzC,sBAAsB,KAAK,EAAE,SAAS,CAAC,CACzC;CAEA,MAAM,UAAU,OAAO,OACrB,UACA,MAAM,0BAA0B,CAAC,OAAO,oBAAoB,OAAO,CAAC,CAAC,GACrE;EACE,cAAc,sBAAsB;EACpC,YAAY,sBAAsB;CACpC,GACA,sBAAsB,aACxB;CAEA,OAAO,OACL,sBAAsB,kBAAkB,aACtC,sBAAsB,iBAAiB,QAAQ,gBAC/C,sBAAsB,QAAQ,WAAW,KACzC,QAAQ,iBAAiB,QAAQ,eAAe,GAClD,8FACF;AACF,CAAC,CACL;AAEA,MAAM,4BAA4B,gBAChC,gEACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,eAAe,8BAA8B;CAC9D,MAAM,QAAQ,OAAO;CAErB,MAAM,WAAW;EACf,OAAO,cACL,yCACA,OAAO,UAAU,MAAM,mBAAmB,CAAC,OAAO,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAClF;EACA,OAAO,cAAc,oCAAoC,QAAQ,QAAQ,CAAC;EAC1E,OAAO,cACL,sCACA,MACG,QAAQ,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAC7C,KAAK,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU,CAC3C;EACA,OAAO,cACL,sCACA,MAAM,OAAO,oBAAoB,KAAK,EAAE,SAAS,CAAC,CAAC,CACrD;EACA,OAAO,cACL,mDACA,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC,CACxD;EACA,OAAO,cACL,oDACA,MAAM,aAAa,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC,CAC7D;CACF;CAEA,OAAO,OAAO,QACZ,WACC,YACC,OACE,wBAAwB,OAAO,KAAK,QAAQ,aAAa,UACzD,2EACF,GACF,EAAE,SAAS,KAAK,CAClB;AACF,CAAC,CACL;AAEA,MAAM,sBAAsB,OAAO,WAAW,WAAW,UAAoB;CAC3E,MAAM,QAAQ,OAAO;CACrB,MAAM,OAAO,OAAO,MAAM,YAAY,kBAAkB,KAAK,EAAE,SAAS,CAAC,CAAC;CAE1E,OAAO,OAAO,OAAO,WACnB,MAAM,KAAK;EACT;EACA,MAAM,EAAE,OAAO,KAAK;EACpB,WAAW;GACT,MAAM;GACN,sBAAsB,KAAK;GAC3B,oBAAoB,KAAK;EAC3B;CACF,CAAC,CACH;AACF,CAAC;;;;;AA+cD,MAAa,8BAAyE;CA7cvD,gBAC7B,+FACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;EACtB,MAAM,WAAW,eAAe,gCAAgC;EAEhE,OAAO,YAAY,UAAU,SAAS;EAEtC,IAAI,OAAO,OAAO,OAChB,UACA,MAAM,gBAAgB,CAAC,OAAO,gBAAgB,UAAU,CAAC,CAAC,CAC5D;EAEA,MAAM,aAAa,OAAO,WAAW,UAAU,CAAC,CAAC,aAAa;EAE9D,MAAM,WAAW,iBAAiB,KAAK;GACrC,OAAO;GACP,QAAQ,OAAO,WAAW,MAAM,CAAC,CAAC,aAAa;GAC/C,MAAM;GACN;GACA,UAAU;GACV,YAAY,EAAE,UAAU,KAAK;GAC7B,kBAAkB;GAClB,eAAe;GACf,gBAAgB;EAClB,CAAC;EAED,MAAM,YAAY,IAAY,YAC5B,eAAe,KAAK;GAAE,GAAG,OAAO,IAAI,QAAQ;GAAG;EAAQ,CAAC;EAE1D,OAAO,OAAO,OACZ,UACA,MAAM,mBAAmB,CAAC,SAAS,mBAAmB,QAAQ,CAAC,CAAC,GAChE,IACF;EACA,MAAM,QAAQ,OAAO;EAErB,MAAM,WAAW;GACf;GACA,MAAM,EAAE,OAAO,EAAE;GACjB,WAAW;IACT,MAAM;IACN,sBAAsB,KAAK;IAC3B,oBAAoB,KAAK;GAC3B;EACF;EAEA,OAAO,cACL,2CACA,OAAO,oBAAoB,UAAU,CAAC,CAAC,QAAQ,CACjD;EACA,OAAO,cACL,+CACA,OAAO,WACL,MAAM,KAAK;GACT,GAAG;GACH,WAAW;IAAE,GAAG,SAAS;IAAW,oBAAoB;GAAkB;EAC5E,CAAC,CACH,CACF;EACA,MAAM,QAAQ,OAAO,oBAAoB,QAAQ;EAEjD,OAAO,OACL,MAAM,WAAW,KACf,MAAM,EAAE,EAAE,OAAO,QAAQ,SAAS,sBAClC,MAAM,EAAE,CAAC,OAAO,QAAQ,kBAAkB,iBAC5C,+DACF;EACA,OAAO,OAAO,OACZ,UACA,MAAM,kBAAkB,CACtB,SACE,kBACA,gBAAgB,KAAK;GACnB,OAAO;GACP,MAAM;GACN;GACA,UAAU;GACV,QAAQ;EACV,CAAC,CACH,CACF,CAAC,GACD,IACF;EACA,OAAO,OAAO,OACZ,UACA,MAAM,qBAAqB,CACzB,SACE,qBACA,iBAAiB,KAAK;GACpB,OAAO;GACP;GACA,YAAY;GACZ,QAAQ;GACR,QAAQ;EACV,CAAC,CACH,CACF,CAAC,GACD,IACF;EACA,OAAO,cACL,0EACA,OAAO,WAAW,MAAM,KAAK,QAAQ,CAAC,CACxC;EACA,MAAM,UAAU,OAAO,oBAAoB,QAAQ;EAEnD,OAAO,OACL,QAAQ,WAAW,KAAK,QAAQ,EAAE,EAAE,OAAO,QAAQ,SAAS,mBAC5D,2DACF;EAEA,MAAM,QAAQ,OAAO,UAAU;GAC7B;GACA,UAAU,eAAe,iBAAiB;EAC5C,CAAC;EAED,MAAM,QAAQ,OAAO,YAAY;GAAE;GAAU,OAAO;EAAgB,CAAC;EAErE,OAAO,OACL,OAAO,OAAO,KAAK,KACjB,MAAM,MAAM,OAAO,QAAQ,SAAS,sBACpC,OAAO,OAAO,KAAK,KACnB,MAAM,MAAM,OAAO,aAAa,gBAClC,0DACF;EACA,OAAO,OAAO,OACZ,UACA,MAAM,qBAAqB,CAAC,SAAS,qBAAqB,QAAQ,CAAC,CAAC,GACpE,IACF;EACA,MAAM,WAAW,OAAO,oBAAoB,QAAQ;EAEpD,OAAO,OACL,SAAS,WAAW,KAClB,SAAS,EAAE,EAAE,OAAO,QAAQ,SAAS,qBACrC,SAAS,EAAE,EAAE,OAAO,QAAQ,SAAS,oBACvC,wDACF;EAEA,MAAM,mBAAmB;GACvB,GAAG;GACH,WAAW;IACT,GAAG,SAAS;IACZ,sBAAsB,KAAK;IAC3B,oBAAoB,KAAK;GAC3B;EACF;EAEA,MAAM,aAAa,OAAO,OAAO,WAAW,MAAM,KAAK,gBAAgB,CAAC;EAExE,MAAM,aAAa,OAAO,OAAO,WAC/B,MAAM,KAAK;GACT,GAAG;GACH,MAAM;IAAE,OAAO;IAAG,eAAe,WAAW,EAAE,CAAE;GAAS;EAC3D,CAAC,CACH;EAEA,OAAO,OACL,WAAW,EAAE,EAAE,OAAO,QAAQ,SAAS,qBACrC,WAAW,EAAE,EAAE,OAAO,QAAQ,SAAS,oBACzC,gFACF;EACA,OAAO,OACL,UACA,MAAM,iBAAiB,CACrB,SACE,iBACA,gBAAgB,KAAK;GACnB,OAAO;GACP;GACA,UAAU;GACV,QAAQ,EAAE,SAAS,mBAAmB;GACtC,WAAW;EACb,CAAC,CACH,CACF,CAAC,GACD,IACF;EACA,OAAO,QACJ,OAAO,oBAAoB,QAAQ,EAAA,CAAG,WAAW,GAClD,kDACF;EACA,MAAM,gBAAgB,eAAe,gBAAgB;EAErD,MAAM,UAAU,OAAO,cACrB,uCACA,oBAAoB,aAAa,CACnC;EAEA,OAAO,OACL,wBAAwB,OAAO,GAC/B,6CACF;CACF,CAAC,CA6QH;CA1Q+B,gBAC/B,qEACC,EAAE,oBACD,OAAO,IAAI,aAAa;EACtB,MAAM,WAAW,eAAe,sBAAsB;EAEtD,OAAO,YAAY,UAAU,SAAS;EACtC,OAAO,OACL,UACA,MAAM,UAAU,CAAC,OAAO,WAAW,OAAO,GAAG,OAAO,WAAW,QAAQ,CAAC,CAAC,CAC3E;EACA,OAAO,cACL,gCACA,YAAY;GAAE;GAAU,OAAO;EAAgB,CAAC,CAClD;CACF,CAAC,CA4PH;CAzP6B,gBAC7B,wFACC,EAAE,QAAQ,oBACT,OAAO,IAAI,aAAa;EACtB,MAAM,WAAW,eAAe,0BAA0B;EAC1D,MAAM,QAAQ,OAAO;EAErB,OAAO,YAAY,UAAU,SAAS;EACtC,MAAM,iBAAiB,eAAe,QAAQ;EAC9C,MAAM,UAAU,OAAO,WAAW,OAAO,CAAC,CAAC,OAAO;EAElD,MAAM,SAAS;GACb,QAAQ;IACN,eAAe;IACf,cAAc,OAAO,WAAW,YAAY,CAAC,CAAC,OAAO;IACrD,eAAe;IACf,UAAU;GACZ;GACA,QAAQ;IAAE,MAAM;IAAyB;IAAS;GAAS;GAC3D,eAAe;IACb,OAAO;IACP,OAAO;IACP,OAAO;GACT;GACA,QAAQ,YAAY,KAAK;IACvB,UAAU;IACV,cAAc;IACd,aAAa;IACb,iBAAiB;GACnB,CAAC;GACD,QAAQ;IACN,MAAM,uBAAuB,KAAK,CAAC,CAAC;IACpC,YAAY,2BAA2B,KAAK;KAC1C,OAAO;KACP,WAAW;KACX,gBAAgB;KAChB,aAAa;KACb,cAAc;KACd,cAAc;KACd,aAAa;IACf,CAAC;GACH;GACA,OAAO,cAAc,KAAK;IAAE,kBAAkB,CAAC;IAAG,UAAU;GAAE,CAAC;GAC/D,OAAO;GACP,gBAAgB,OAAO,WAAW,cAAc,CAAC,CAAC,WAAW;GAC7D,iBAAiB;GACjB,iBAAiB;EACnB;EAEA,MAAM,YAAY,IAAY,YAC5B,eAAe,KAAK;GAAE,GAAG,OAAO,IAAI,QAAQ;GAAG;EAAQ,CAAC;EAE1D,MAAM,aAAa,WAA2B,aAC5C,qBAAqB,KAAK;GACxB;GACA;GACA,cAAc;GACd,WAAW,OAAO,WAAW,SAAS,CAAC,CAAC,SAAS;GACjD,cAAc,OAAO,WAAW,YAAY,CAAC,CAAC,YAAY;GAC1D,mBAAmB;GACnB,GAAI,WAAW,EAAE,iBAAiB,KAAc,IAAI,CAAC;EACvD,CAAC;EAEH,MAAM,YAAY,qBAAqB,KAAK;GAC1C,WAAW;IAAE;IAAQ,WAAW,OAAO;IAAgB,YAAY,CAAC;IAAG,iBAAiB;GAAE;GAC1F,aAAa;EACf,CAAC;EAED,IAAI,OAAO,OAAO,OAChB,UACA,MAAM,UAAU,CACd,SAAS,aAAa,SAAS,GAC/B,SAAS,qBAAqB,UAAU,OAAO,gBAAgB,KAAK,CAAC,CACvE,CAAC,CACH;EAEA,OAAO,cACL,wDACA,oBAAoB,QAAQ,CAC9B;EACA,OAAO,OAAO,OACZ,UACA,MAAM,YAAY,CAAC,SAAS,YAAY,UAAU,OAAO,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAChF,IACF;EACA,OAAO,QACJ,OAAO,oBAAoB,QAAQ,EAAA,CAAG,WAAW,KAChD,OAAO,OAAO,OAAO,UAAU;GAAE;GAAU,UAAU,eAAe,WAAW;EAAE,CAAC,CAAC,GACrF,+EACF;EAIA,OAAO,OAAO,OACZ,UACA,MAAM,oBAAoB,CAAC,OAAO,wBAAwB,QAAQ,GAAG,SAAS,CAAC,CAAC,GAChF,IACF;EAGA,KAAK,IAAI,OAAO,GAAG,OAAO,MAAM,QAAQ,KAAK;GAC3C,MAAM,aAAa,MACjB,SACE,WAAW,KACX,kBAAkB,KAAK;IAAE,MAAM;IAAY,OAAO,WAAW;GAAI,CAAC,CACpE;GAEF,OAAO,OAAO,OACZ,UACA,MAAM,WAAW,QAAQ,CACvB,UAAU,IAAI,GACd,GAAG,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,KAAK,OAAO,IAAI,EAAE,IAAI,GAAG,WACxD,UAAU,OAAO,SAAS,CAAC,CAC7B,CACF,CAAC,GACD,IACF;EACF;EACA,OAAO,OAAO,OACZ,UACA,MAAM,mBAAmB,CAAC,OAAO,qBAAqB,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAC3E,IACF;EACA,MAAM,WAAW,OAAO,MAAM,aAAa,sBAAsB,KAAK,EAAE,SAAS,CAAC,CAAC;EAEnF,OAAO,OACL,SAAS,aAAa,YACpB,SAAS,iBAAiB,KAAK,gBAC/B,SAAS,eAAe,KAAK,cAC7B,SAAS,kBAAkB,aAC3B,SAAS,QAAQ,WAAW,KAC5B,SAAS,QAAQ,KAAK,EAAE,aAAa,OAAO,QAAQ,CAAC,CAAC,KAAK,MACzD;GACE;GACA,qBAAqB,QAAQ;GAC7B,wBAAwB,QAAQ;EAClC,CAAC,CAAC,KAAK,KACT,SAAS,QAAQ,OACd,UAAU,MAAM,aAAa,YAAY,MAAM,YAAY,SAAS,YACvE,GACF,6FACF;EAEA,MAAM,aAAa,IAAY,uBAC7B,SACE,IACA,sBAAsB,KAAK;GACzB,eAAe;GACf;GACA,eAAe;GACf,UAAU;GACV,OAAO;GACP,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,OAAO,OAAO;EAChB,CAAC,CACH;EAEF,OAAO,OAAO,OACZ,UACA,MAAM,kBAAkB,CACtB,UAAU,YAAY,sBAAsB,GAC5C,UAAU,WAAW,OAAO,WAAW,YAAY,CAAC,CAAC,SAAS,CAAC,CACjE,CAAC,GACD,IACF;EACA,OAAO,QACJ,OAAO,MAAM,kBAAmB;GAAE;GAAU,OAAO;EAAE,CAAC,OAAO,GAC9D,mDACF;EAEA,MAAM,aAAa,MACjB,SACE,QAAQ,KACR,oBAAoB,KAAK;GACvB,WAAW,OAAO,WAAW,cAAc,CAAC,CAAC,QAAQ,GAAG;GACxD,iBAAiB,CAAC;GAClB,iBAAiB,OAAO,WAAW,oBAAoB,OAAO,eAAe,CAAC,CAAC,OAAO;GACtF,WAAW;GACX,kBAAkB;EACpB,CAAC,CACH;EAEF,OAAO,OAAO,OAAO,UAAU,MAAM,eAAe,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;EACvF,OAAO,QACJ,OAAO,MAAM,kBAAmB;GAAE;GAAU,OAAO;EAAE,CAAC,OAAO,MAC3D,OAAO,MAAM,kBAAmB;GAAE;GAAU,OAAO;EAAK,CAAC,OAAO,GACnE,2EACF;EAEA,OAAO,cACL,oEACA,gBAAgB;GAAE;GAAU,oBAAoB;GAAwB,OAAO;EAAE,CAAC,CACpF;EAEA,MAAM,aAAa,OAAO,gBAAgB;GACxC;GACA,oBAAoB;GACpB,OAAO;EACT,CAAC;EAED,OAAO,OACL,WAAW,QAAQ,WAAW,KAC5B,WAAW,QACR,QAAQ,EAAE,aAAa,OAAO,QAAQ,SAAS,uBAAuB,CAAC,CACvE,KAAK,EAAE,aAAa,OAAO,QAAQ,CAAC,CACpC,KAAK,MAAM,YAChB,4GACF;EACA,OAAO,OACL,WAAW,iBAAiB,KAAK,gBAAgB,WAAW,eAAe,KAAK,YAChF,6DACF;EAEA,OAAO,OACL,UACA,MAAM,eAAe,CACnB,SACE,eACA,oBAAoB,KAAK,EACvB,SAAS;GACP,QAAQ,OAAO;GACf,gBAAgB,OAAO,WAAW,cAAc,CAAC,CAAC,aAAa;EACjE,EACF,CAAC,CACH,CACF,CAAC,GACD,IACF;EAQA,OAAO,QACL,OAPqB,gBAAgB;GACrC;GACA,oBAAoB;GACpB,OAAO;EACT,CAAC,EAAA,CAGS,QAAQ,MAAM,EAAE,aAAa,OAAO,QAAQ,SAAS,qBAAqB,GAClF,8EACF;CACF,CAAC,CAUH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;AAGA,MAAa,mCAA8E,CACzF,oBACF"}
@@ -0,0 +1,2 @@
1
+ import { a as ReconciliationSafeToRetry, c as ToolReconcilerError, i as ReconciliationNeverStarted, n as ReconciliationCompleted, o as ReconciliationUncertain, r as ReconciliationDecision, s as ToolReconciler, t as PreparedToolCallEvidence } from "../ToolReconciler-BmVRAHKs.mjs";
2
+ export { PreparedToolCallEvidence, ReconciliationCompleted, ReconciliationDecision, ReconciliationNeverStarted, ReconciliationSafeToRetry, ReconciliationUncertain, ToolReconciler, ToolReconcilerError };
@@ -0,0 +1,85 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { RunId, SubmissionId, ThreadId, ToolCallId } from "../core/Identifiers.mjs";
3
+ import { Digest, PersistedJson, ToolCallPrepared } from "./Records.mjs";
4
+ import { Context, Effect, Layer, Schema } from "effect";
5
+ //#region src/durable/ToolReconciler.ts
6
+ var ToolReconciler_exports = /* @__PURE__ */ __exportAll({
7
+ PreparedToolCallEvidence: () => PreparedToolCallEvidence,
8
+ ReconciliationCompleted: () => ReconciliationCompleted,
9
+ ReconciliationDecision: () => ReconciliationDecision,
10
+ ReconciliationNeverStarted: () => ReconciliationNeverStarted,
11
+ ReconciliationSafeToRetry: () => ReconciliationSafeToRetry,
12
+ ReconciliationUncertain: () => ReconciliationUncertain,
13
+ ToolReconciler: () => ToolReconciler,
14
+ ToolReconcilerError: () => ToolReconcilerError
15
+ });
16
+ /**
17
+ * Everything a reconciliation policy can consult about one prepared-but-unsettled ordinary Tool
18
+ * Call (durability §10): deterministic identities for supplier-side lookup plus the exact
19
+ * Schema-encoded parameters and their digest. Built from the canonical `ToolCallPrepared` record
20
+ * and the owning Submission's identities — never from in-memory Attempt state.
21
+ */
22
+ var PreparedToolCallEvidence = class extends Schema.Class("@effect-agent/thread/PreparedToolCallEvidence")({
23
+ threadId: ThreadId,
24
+ submissionId: SubmissionId,
25
+ runId: RunId,
26
+ turn: ToolCallPrepared.fields.turn,
27
+ toolCallId: ToolCallId,
28
+ toolName: ToolCallPrepared.fields.toolName,
29
+ parameters: PersistedJson,
30
+ parametersDigest: Digest,
31
+ executionKind: ToolCallPrepared.fields.executionKind,
32
+ executionClass: ToolCallPrepared.fields.executionClass,
33
+ replay: ToolCallPrepared.fields.replay
34
+ }) {};
35
+ /** Proof of nonexecution: resume the original operation or report it unavailable. */
36
+ var ReconciliationNeverStarted = class extends Schema.TaggedClass("@effect-agent/thread/ReconciliationNeverStarted")("NeverStarted", {}) {};
37
+ /**
38
+ * Proof that the external execution completed: `result` is the recovered supplier truth, which
39
+ * becomes canonical (`ToolCallSettled` + `ToolCallResolved`) WITHOUT executing anything.
40
+ */
41
+ var ReconciliationCompleted = class extends Schema.TaggedClass("@effect-agent/thread/ReconciliationCompleted")("CompletedWithResult", {
42
+ result: PersistedJson,
43
+ isFailure: Schema.Boolean
44
+ }) {};
45
+ /** Only the original operation, identity and parameters may repeat under supported semantics. */
46
+ var ReconciliationSafeToRetry = class extends Schema.TaggedClass("@effect-agent/thread/ReconciliationSafeToRetry")("SafeToRetry", {}) {};
47
+ /** No proof either way: the outcome is Unknown and requires authorized resolution (DUR-017). */
48
+ var ReconciliationUncertain = class extends Schema.TaggedClass("@effect-agent/thread/ReconciliationUncertain")("Uncertain", { reason: Schema.String }) {};
49
+ /**
50
+ * What a reconciliation policy can prove about one prepared-but-unsettled ordinary Tool Call
51
+ * (durability §10): execution never started, execution completed with a recoverable result,
52
+ * execution is safe to repeat, or nothing — in which case the Run enters Unknown. The engine
53
+ * never invents an external result. Proven nonexecution can close a retired operation with
54
+ * an explicit not-executed result; uncertainty stays parked.
55
+ */
56
+ const ReconciliationDecision = Schema.Union([
57
+ ReconciliationNeverStarted,
58
+ ReconciliationCompleted,
59
+ ReconciliationSafeToRetry,
60
+ ReconciliationUncertain
61
+ ]);
62
+ /** The reconciliation policy itself failed (supplier unreachable, corrupt lookup, ...). The
63
+ * caller treats this as no proof: the call stays open and the pass may retry. */
64
+ var ToolReconcilerError = class extends Schema.TaggedError()("ToolReconcilerError", {
65
+ toolCallId: ToolCallId,
66
+ message: Schema.String,
67
+ cause: Schema.optionalKey(Schema.Defect())
68
+ }) {};
69
+ /**
70
+ * Application-registered reconciliation policy consulted by recovery for every open ordinary
71
+ * Tool Call before an Unknown Outcome is recorded (durability §10, DUR-009). A decision is a
72
+ * claim about EXTERNAL truth — typically an idempotency-keyed supplier lookup — never a guess
73
+ * from canonical state alone.
74
+ *
75
+ * `ToolReconciler.uncertain` is the fail-closed default (AGENTS rule 11): with no registered
76
+ * policy, every open call stays Unknown and routes to the authorized DUR-017 resolution path.
77
+ */
78
+ var ToolReconciler = class extends Context.Service()("@effect-agent/thread/ToolReconciler") {
79
+ /** Fail-closed default: no proof is ever asserted, every open call stays Unknown. */
80
+ static uncertain = Layer.succeed(this)({ reconcile: () => Effect.succeed(ReconciliationUncertain.make({ reason: "No reconciliation policy is registered; the outcome stays unknown" })) });
81
+ };
82
+ //#endregion
83
+ export { PreparedToolCallEvidence, ReconciliationCompleted, ReconciliationDecision, ReconciliationNeverStarted, ReconciliationSafeToRetry, ReconciliationUncertain, ToolReconciler, ToolReconcilerError, ToolReconciler_exports as t };
84
+
85
+ //# sourceMappingURL=ToolReconciler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolReconciler.mjs","names":[],"sources":["../../src/durable/ToolReconciler.ts"],"sourcesContent":["import { Context, Effect, Layer, Schema } from \"effect\";\n\nimport { ThreadId, RunId, SubmissionId, ToolCallId } from \"../core/Identifiers.ts\";\nimport { Digest, PersistedJson, ToolCallPrepared } from \"./Records.ts\";\n\n/**\n * Everything a reconciliation policy can consult about one prepared-but-unsettled ordinary Tool\n * Call (durability §10): deterministic identities for supplier-side lookup plus the exact\n * Schema-encoded parameters and their digest. Built from the canonical `ToolCallPrepared` record\n * and the owning Submission's identities — never from in-memory Attempt state.\n */\nexport class PreparedToolCallEvidence extends Schema.Class<PreparedToolCallEvidence>(\n \"@effect-agent/thread/PreparedToolCallEvidence\",\n)({\n threadId: ThreadId,\n submissionId: SubmissionId,\n runId: RunId,\n turn: ToolCallPrepared.fields.turn,\n toolCallId: ToolCallId,\n toolName: ToolCallPrepared.fields.toolName,\n parameters: PersistedJson,\n parametersDigest: Digest,\n executionKind: ToolCallPrepared.fields.executionKind,\n executionClass: ToolCallPrepared.fields.executionClass,\n replay: ToolCallPrepared.fields.replay,\n}) {}\n\n/** Proof of nonexecution: resume the original operation or report it unavailable. */\nexport class ReconciliationNeverStarted extends Schema.TaggedClass<ReconciliationNeverStarted>(\n \"@effect-agent/thread/ReconciliationNeverStarted\",\n)(\"NeverStarted\", {}) {}\n\n/**\n * Proof that the external execution completed: `result` is the recovered supplier truth, which\n * becomes canonical (`ToolCallSettled` + `ToolCallResolved`) WITHOUT executing anything.\n */\nexport class ReconciliationCompleted extends Schema.TaggedClass<ReconciliationCompleted>(\n \"@effect-agent/thread/ReconciliationCompleted\",\n)(\"CompletedWithResult\", {\n result: PersistedJson,\n isFailure: Schema.Boolean,\n}) {}\n\n/** Only the original operation, identity and parameters may repeat under supported semantics. */\nexport class ReconciliationSafeToRetry extends Schema.TaggedClass<ReconciliationSafeToRetry>(\n \"@effect-agent/thread/ReconciliationSafeToRetry\",\n)(\"SafeToRetry\", {}) {}\n\n/** No proof either way: the outcome is Unknown and requires authorized resolution (DUR-017). */\nexport class ReconciliationUncertain extends Schema.TaggedClass<ReconciliationUncertain>(\n \"@effect-agent/thread/ReconciliationUncertain\",\n)(\"Uncertain\", {\n reason: Schema.String,\n}) {}\n\n/**\n * What a reconciliation policy can prove about one prepared-but-unsettled ordinary Tool Call\n * (durability §10): execution never started, execution completed with a recoverable result,\n * execution is safe to repeat, or nothing — in which case the Run enters Unknown. The engine\n * never invents an external result. Proven nonexecution can close a retired operation with\n * an explicit not-executed result; uncertainty stays parked.\n */\nexport const ReconciliationDecision = Schema.Union([\n ReconciliationNeverStarted,\n ReconciliationCompleted,\n ReconciliationSafeToRetry,\n ReconciliationUncertain,\n]);\n\nexport type ReconciliationDecision = typeof ReconciliationDecision.Type;\n\n/** The reconciliation policy itself failed (supplier unreachable, corrupt lookup, ...). The\n * caller treats this as no proof: the call stays open and the pass may retry. */\nexport class ToolReconcilerError extends Schema.TaggedError<ToolReconcilerError>()(\n \"ToolReconcilerError\",\n {\n toolCallId: ToolCallId,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\n/**\n * Application-registered reconciliation policy consulted by recovery for every open ordinary\n * Tool Call before an Unknown Outcome is recorded (durability §10, DUR-009). A decision is a\n * claim about EXTERNAL truth — typically an idempotency-keyed supplier lookup — never a guess\n * from canonical state alone.\n *\n * `ToolReconciler.uncertain` is the fail-closed default (AGENTS rule 11): with no registered\n * policy, every open call stays Unknown and routes to the authorized DUR-017 resolution path.\n */\nexport class ToolReconciler extends Context.Service<\n ToolReconciler,\n {\n readonly reconcile: (\n evidence: PreparedToolCallEvidence,\n ) => Effect.Effect<ReconciliationDecision, ToolReconcilerError>;\n }\n>()(\"@effect-agent/thread/ToolReconciler\") {\n /** Fail-closed default: no proof is ever asserted, every open call stays Unknown. */\n static readonly uncertain: Layer.Layer<ToolReconciler> = Layer.succeed(this)({\n reconcile: () =>\n Effect.succeed(\n ReconciliationUncertain.make({\n reason: \"No reconciliation policy is registered; the outcome stays unknown\",\n }),\n ),\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAWA,IAAa,2BAAb,cAA8C,OAAO,MACnD,+CACF,CAAC,CAAC;CACA,UAAU;CACV,cAAc;CACd,OAAO;CACP,MAAM,iBAAiB,OAAO;CAC9B,YAAY;CACZ,UAAU,iBAAiB,OAAO;CAClC,YAAY;CACZ,kBAAkB;CAClB,eAAe,iBAAiB,OAAO;CACvC,gBAAgB,iBAAiB,OAAO;CACxC,QAAQ,iBAAiB,OAAO;AAClC,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,6BAAb,cAAgD,OAAO,YACrD,iDACF,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;AAMvB,IAAa,0BAAb,cAA6C,OAAO,YAClD,8CACF,CAAC,CAAC,uBAAuB;CACvB,QAAQ;CACR,WAAW,OAAO;AACpB,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,4BAAb,cAA+C,OAAO,YACpD,gDACF,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;;AAGtB,IAAa,0BAAb,cAA6C,OAAO,YAClD,8CACF,CAAC,CAAC,aAAa,EACb,QAAQ,OAAO,OACjB,CAAC,CAAC,CAAC,CAAC;;;;;;;;AASJ,MAAa,yBAAyB,OAAO,MAAM;CACjD;CACA;CACA;CACA;AACF,CAAC;;;AAMD,IAAa,sBAAb,cAAyC,OAAO,YAAiC,CAAC,CAChF,uBACA;CACE,YAAY;CACZ,SAAS,OAAO;CAChB,OAAO,OAAO,YAAY,OAAO,OAAO,CAAC;AAC3C,CACF,CAAC,CAAC,CAAC;;;;;;;;;;AAWH,IAAa,iBAAb,cAAoC,QAAQ,QAO1C,CAAC,CAAC,qCAAqC,CAAC,CAAC;;CAEzC,OAAgB,YAAyC,MAAM,QAAQ,IAAI,CAAC,CAAC,EAC3E,iBACE,OAAO,QACL,wBAAwB,KAAK,EAC3B,QAAQ,oEACV,CAAC,CACH,EACJ,CAAC;AACH"}
@@ -0,0 +1,2 @@
1
+ import { i as makeWakeSubscriptionHub, r as WakeSubscriptionHub, t as WakeScheduler } from "../WakeScheduler-EjUF-GhC.mjs";
2
+ export { WakeScheduler, WakeSubscriptionHub, makeWakeSubscriptionHub };
@@ -0,0 +1,85 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { Context, Deferred, Effect, Layer, Ref, Stream } from "effect";
3
+ //#region src/durable/WakeScheduler.ts
4
+ var WakeScheduler_exports = /* @__PURE__ */ __exportAll({
5
+ WakeScheduler: () => WakeScheduler,
6
+ makeWakeSubscriptionHub: () => makeWakeSubscriptionHub
7
+ });
8
+ /**
9
+ * Build the shared per-incarnation registration primitive used by host WakeSchedulers. The hub
10
+ * contains hints only: eviction may discard it, while a reconnecting caller re-subscribes and
11
+ * rechecks canonical storage. Scope finalizers remove cancelled waiters, and notify broadcasts
12
+ * instead of consuming a signal that belongs to another waiter.
13
+ */
14
+ const makeWakeSubscriptionHub = Effect.gen(function* () {
15
+ const registrations = yield* Ref.make(/* @__PURE__ */ new Map());
16
+ const nextId = yield* Ref.make(0);
17
+ const remove = (threadId, id) => Ref.update(registrations, (current) => {
18
+ const existing = current.get(threadId);
19
+ if (existing === void 0 || !existing.has(id)) return current;
20
+ const next = new Map(current);
21
+ const thread = new Map(existing);
22
+ thread.delete(id);
23
+ if (thread.size === 0) next.delete(threadId);
24
+ else next.set(threadId, thread);
25
+ return next;
26
+ });
27
+ return {
28
+ subscribe: Effect.fn("WakeSubscriptionHub.subscribe")((threadId) => Effect.gen(function* () {
29
+ const deferred = yield* Deferred.make();
30
+ const registration = {
31
+ id: yield* Ref.getAndUpdate(nextId, (current) => current + 1),
32
+ deferred
33
+ };
34
+ yield* Effect.addFinalizer(() => remove(threadId, registration.id));
35
+ yield* Ref.update(registrations, (current) => {
36
+ const next = new Map(current);
37
+ const thread = new Map(current.get(threadId) ?? []);
38
+ thread.set(registration.id, registration.deferred);
39
+ next.set(threadId, thread);
40
+ return next;
41
+ });
42
+ return registration.deferred;
43
+ }).pipe(Effect.map((deferred) => Deferred.await(deferred)))),
44
+ notify: Effect.fn("WakeSubscriptionHub.notify")(function* (threadId) {
45
+ const waiters = yield* Ref.modify(registrations, (current) => {
46
+ const thread = current.get(threadId);
47
+ if (thread === void 0) return [[], current];
48
+ const next = new Map(current);
49
+ next.delete(threadId);
50
+ return [[...thread.values()], next];
51
+ });
52
+ yield* Effect.forEach(waiters, (waiter) => Deferred.succeed(waiter, void 0), { discard: true });
53
+ })
54
+ };
55
+ });
56
+ /**
57
+ * Liveness hint channel for durable schedulers. `notify` announces that a Thread lane may
58
+ * have claimable, canonical, or settled work; `wakes` is the all-lanes subscription surface for
59
+ * workers, while `subscribe` installs an efficient one-Thread wait registration.
60
+ *
61
+ * Correctness must NEVER depend on delivery: notifications may be dropped, coalesced, duplicated,
62
+ * or observed by no subscriber (a notify before any subscription is simply lost). Every consumer
63
+ * must pair a wake with durable authority: workers use periodic SubmissionLedger scans, while a
64
+ * public progress waiter subscribes before its canonical read and reconnects/rechecks after an
65
+ * incarnation loss (persistence §14).
66
+ *
67
+ * Each run of `wakes` creates its own subscription whose resources live in that run's Scope and
68
+ * are released when the consuming stream ends or is interrupted. Implementations must not spawn
69
+ * daemon fibers.
70
+ */
71
+ var WakeScheduler = class WakeScheduler extends Context.Service()("@effect-agent/thread/WakeScheduler") {
72
+ /**
73
+ * Discards every notification and never wakes anyone. Valid because WakeScheduler is only a
74
+ * liveness hint: consumers relying on ledger scans stay correct, merely slower.
75
+ */
76
+ static layerNoop = Layer.succeed(WakeScheduler, {
77
+ notify: () => Effect.void,
78
+ subscribe: () => Effect.succeed(Effect.never),
79
+ wakes: Stream.never
80
+ });
81
+ };
82
+ //#endregion
83
+ export { WakeScheduler, makeWakeSubscriptionHub, WakeScheduler_exports as t };
84
+
85
+ //# sourceMappingURL=WakeScheduler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WakeScheduler.mjs","names":[],"sources":["../../src/durable/WakeScheduler.ts"],"sourcesContent":["import type { Scope } from \"effect\";\nimport { Context, Deferred, Effect, Layer, Ref, Stream } from \"effect\";\n\nimport { type ThreadId } from \"../core/Identifiers.ts\";\n\n/**\n * Incarnation-local, thread-keyed wake registrations. A registration is installed before\n * its returned Effect can be awaited, which lets a caller subscribe, check durable authority,\n * and then park without a lost-wakeup window.\n */\nexport interface WakeSubscriptionHub {\n /** Register one Scope-owned waiter and return its one-shot wake Effect. */\n readonly subscribe: (\n threadId: ThreadId,\n ) => Effect.Effect<Effect.Effect<void>, never, Scope.Scope>;\n /** Wake every currently registered waiter for exactly this Thread. */\n readonly notify: (threadId: ThreadId) => Effect.Effect<void>;\n}\n\ninterface WakeRegistration {\n readonly id: number;\n readonly deferred: Deferred.Deferred<void>;\n}\n\ntype WakeRegistrations = ReadonlyMap<ThreadId, ReadonlyMap<number, Deferred.Deferred<void>>>;\n\n/**\n * Build the shared per-incarnation registration primitive used by host WakeSchedulers. The hub\n * contains hints only: eviction may discard it, while a reconnecting caller re-subscribes and\n * rechecks canonical storage. Scope finalizers remove cancelled waiters, and notify broadcasts\n * instead of consuming a signal that belongs to another waiter.\n */\nexport const makeWakeSubscriptionHub: Effect.Effect<WakeSubscriptionHub> = Effect.gen(function* () {\n const registrations = yield* Ref.make<WakeRegistrations>(new Map());\n const nextId = yield* Ref.make(0);\n\n const remove = (threadId: ThreadId, id: number) =>\n Ref.update(registrations, (current) => {\n const existing = current.get(threadId);\n\n if (existing === undefined || !existing.has(id)) return current;\n const next = new Map(current);\n const thread = new Map(existing);\n\n thread.delete(id);\n if (thread.size === 0) {\n next.delete(threadId);\n } else {\n next.set(threadId, thread);\n }\n\n return next;\n });\n\n const subscribe = Effect.fn(\"WakeSubscriptionHub.subscribe\")(\n (threadId: ThreadId): Effect.Effect<Effect.Effect<void>, never, Scope.Scope> =>\n Effect.gen(function* () {\n const deferred = yield* Deferred.make<void>();\n const id = yield* Ref.getAndUpdate(nextId, (current) => current + 1);\n const registration: WakeRegistration = { id, deferred };\n\n yield* Effect.addFinalizer(() => remove(threadId, registration.id));\n yield* Ref.update(registrations, (current) => {\n const next = new Map(current);\n const thread = new Map(current.get(threadId) ?? []);\n\n thread.set(registration.id, registration.deferred);\n next.set(threadId, thread);\n\n return next;\n });\n\n return registration.deferred;\n }).pipe(Effect.map((deferred) => Deferred.await(deferred))),\n );\n\n const notify = Effect.fn(\"WakeSubscriptionHub.notify\")(function* (threadId: ThreadId) {\n const waiters = yield* Ref.modify(registrations, (current) => {\n const thread = current.get(threadId);\n\n if (thread === undefined) return [[], current] as const;\n const next = new Map(current);\n\n next.delete(threadId);\n\n return [[...thread.values()], next] as const;\n });\n\n yield* Effect.forEach(waiters, (waiter) => Deferred.succeed(waiter, undefined), {\n discard: true,\n });\n });\n\n return { subscribe, notify };\n});\n\n/**\n * Liveness hint channel for durable schedulers. `notify` announces that a Thread lane may\n * have claimable, canonical, or settled work; `wakes` is the all-lanes subscription surface for\n * workers, while `subscribe` installs an efficient one-Thread wait registration.\n *\n * Correctness must NEVER depend on delivery: notifications may be dropped, coalesced, duplicated,\n * or observed by no subscriber (a notify before any subscription is simply lost). Every consumer\n * must pair a wake with durable authority: workers use periodic SubmissionLedger scans, while a\n * public progress waiter subscribes before its canonical read and reconnects/rechecks after an\n * incarnation loss (persistence §14).\n *\n * Each run of `wakes` creates its own subscription whose resources live in that run's Scope and\n * are released when the consuming stream ends or is interrupted. Implementations must not spawn\n * daemon fibers.\n */\nexport class WakeScheduler extends Context.Service<\n WakeScheduler,\n {\n /** Best-effort hint that `threadId` may have claimable or settled work. Never fails. */\n readonly notify: (threadId: ThreadId) => Effect.Effect<void>;\n /** Scope-owned one-shot registration for exactly one Thread. */\n readonly subscribe: (\n threadId: ThreadId,\n ) => Effect.Effect<Effect.Effect<void>, never, Scope.Scope>;\n /** Scope-owned subscription to wake hints, starting at subscription time. */\n readonly wakes: Stream.Stream<ThreadId>;\n }\n>()(\"@effect-agent/thread/WakeScheduler\") {\n /**\n * Discards every notification and never wakes anyone. Valid because WakeScheduler is only a\n * liveness hint: consumers relying on ledger scans stay correct, merely slower.\n */\n static readonly layerNoop: Layer.Layer<WakeScheduler> = Layer.succeed(WakeScheduler, {\n notify: () => Effect.void,\n subscribe: () => Effect.succeed(Effect.never),\n wakes: Stream.never,\n });\n}\n"],"mappings":";;;;;;;;;;;;;AAgCA,MAAa,0BAA8D,OAAO,IAAI,aAAa;CACjG,MAAM,gBAAgB,OAAO,IAAI,qBAAwB,IAAI,IAAI,CAAC;CAClE,MAAM,SAAS,OAAO,IAAI,KAAK,CAAC;CAEhC,MAAM,UAAU,UAAoB,OAClC,IAAI,OAAO,gBAAgB,YAAY;EACrC,MAAM,WAAW,QAAQ,IAAI,QAAQ;EAErC,IAAI,aAAa,KAAA,KAAa,CAAC,SAAS,IAAI,EAAE,GAAG,OAAO;EACxD,MAAM,OAAO,IAAI,IAAI,OAAO;EAC5B,MAAM,SAAS,IAAI,IAAI,QAAQ;EAE/B,OAAO,OAAO,EAAE;EAChB,IAAI,OAAO,SAAS,GAClB,KAAK,OAAO,QAAQ;OAEpB,KAAK,IAAI,UAAU,MAAM;EAG3B,OAAO;CACT,CAAC;CAyCH,OAAO;EAAE,WAvCS,OAAO,GAAG,+BAA+B,CAAC,EACzD,aACC,OAAO,IAAI,aAAa;GACtB,MAAM,WAAW,OAAO,SAAS,KAAW;GAE5C,MAAM,eAAiC;IAAE,IAAA,OADvB,IAAI,aAAa,SAAS,YAAY,UAAU,CAAC;IACtB;GAAS;GAEtD,OAAO,OAAO,mBAAmB,OAAO,UAAU,aAAa,EAAE,CAAC;GAClE,OAAO,IAAI,OAAO,gBAAgB,YAAY;IAC5C,MAAM,OAAO,IAAI,IAAI,OAAO;IAC5B,MAAM,SAAS,IAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC;IAElD,OAAO,IAAI,aAAa,IAAI,aAAa,QAAQ;IACjD,KAAK,IAAI,UAAU,MAAM;IAEzB,OAAO;GACT,CAAC;GAED,OAAO,aAAa;EACtB,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,SAAS,MAAM,QAAQ,CAAC,CAAC,CAoB7C;EAAG,QAjBL,OAAO,GAAG,4BAA4B,CAAC,CAAC,WAAW,UAAoB;GACpF,MAAM,UAAU,OAAO,IAAI,OAAO,gBAAgB,YAAY;IAC5D,MAAM,SAAS,QAAQ,IAAI,QAAQ;IAEnC,IAAI,WAAW,KAAA,GAAW,OAAO,CAAC,CAAC,GAAG,OAAO;IAC7C,MAAM,OAAO,IAAI,IAAI,OAAO;IAE5B,KAAK,OAAO,QAAQ;IAEpB,OAAO,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,GAAG,IAAI;GACpC,CAAC;GAED,OAAO,OAAO,QAAQ,UAAU,WAAW,SAAS,QAAQ,QAAQ,KAAA,CAAS,GAAG,EAC9E,SAAS,KACX,CAAC;EACH,CAEyB;CAAE;AAC7B,CAAC;;;;;;;;;;;;;;;;AAiBD,IAAa,gBAAb,MAAa,sBAAsB,QAAQ,QAYzC,CAAC,CAAC,oCAAoC,CAAC,CAAC;;;;;CAKxC,OAAgB,YAAwC,MAAM,QAAQ,eAAe;EACnF,cAAc,OAAO;EACrB,iBAAiB,OAAO,QAAQ,OAAO,KAAK;EAC5C,OAAO,OAAO;CAChB,CAAC;AACH"}
@@ -0,0 +1,172 @@
1
+ import { d as SubagentReservationAmounts, l as SubagentGrant, o as SubagentDelegationCaps, s as SubagentExecutionFailure } from "../SubagentContract-tyN9v-Jv.mjs";
2
+ import { a as Receipt } from "../Receipt-BAHyigAF.mjs";
3
+ import { r as Update } from "../AgentUpdates-DMJ-_xow.mjs";
4
+ import { t as AgentPolicy } from "../AgentPolicy-B4oH8TbG.mjs";
5
+ import { h as DefinitionDigests } from "../Records-Bm4Qt70a.mjs";
6
+ import { $t as ParentLinkage, Gr as ThreadNotMaterialized, Or as AppendConflict, Wt as LedgerError, _t as AdmissionPolicyError, bt as AdmissionResult, ft as AdmissionConflict, ii as ThreadStoreError, jr as FenceRejected, ni as ThreadStore, vn as SubmissionLedger } from "../Admin-Dirux8PR.mjs";
7
+ import { n as DurableRuntimeFailpoint, r as DurableRuntimeFailpointError } from "../DurableFailpoint-Cnr3wx1L.mjs";
8
+ import { t as WakeScheduler } from "../WakeScheduler-EjUF-GhC.mjs";
9
+ import { Context, Effect, Schema } from "effect";
10
+ declare namespace WorkerAdmission_d_exports {
11
+ export { WorkerAdmissionFailure, WorkerAdmissionPort, WorkerAdmissionRequest, admitWorker };
12
+ }
13
+ declare const WorkerAdmissionRequest_base: Schema.Class<WorkerAdmissionRequest, Schema.Struct<{
14
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
15
+ readonly principal: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/Principal">;
16
+ readonly idempotencyKey: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/IdempotencyKey">;
17
+ readonly agentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
18
+ readonly agentDigests: typeof DefinitionDigests;
19
+ readonly deploymentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/DeploymentId">;
20
+ readonly inputPayload: Schema.declare<Schema.Json, Schema.Json>;
21
+ readonly inputDigest: Schema.brand<Schema.String, "@effect-agent/thread/Digest">;
22
+ readonly parentLinkage: Schema.optionalKey<typeof ParentLinkage>;
23
+ readonly messageAdmission: Schema.optionalKey<Schema.Union<readonly [Schema.Struct<{
24
+ readonly schemaVersion: Schema.Literal<1>;
25
+ readonly message: Schema.Struct<{
26
+ readonly ownerThreadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
27
+ readonly messageId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/IdempotencyKey">;
28
+ }>;
29
+ readonly peerName: Schema.NonEmptyString;
30
+ readonly sender: Schema.Struct<{
31
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
32
+ readonly agentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
33
+ }>;
34
+ readonly returnAddress: Schema.Struct<{
35
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
36
+ readonly agentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
37
+ }>;
38
+ readonly inReplyTo: Schema.optionalKey<Schema.Struct<{
39
+ readonly ownerThreadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
40
+ readonly messageId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/IdempotencyKey">;
41
+ }>>;
42
+ }>, Schema.Union<readonly [Schema.Struct<{
43
+ readonly _tag: Schema.Literal<"WorkerCompletion">;
44
+ readonly budgetExhausted: Schema.Boolean;
45
+ readonly schemaVersion: Schema.Literal<1>;
46
+ readonly report: Schema.Union<readonly [Schema.Struct<{
47
+ readonly _tag: Schema.Literal<"Settled">;
48
+ readonly worker: Schema.Struct<{
49
+ readonly schemaVersion: Schema.Literal<1>;
50
+ readonly delegationId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">;
51
+ readonly targetAgentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
52
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
53
+ }>;
54
+ readonly receipt: typeof Receipt;
55
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
56
+ readonly settlementId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/SettlementId">;
57
+ readonly outcome: Schema.Literal<"completed">;
58
+ readonly result: Schema.Union<readonly [Schema.Codec<Schema.Json, Schema.Json, never, never>]>;
59
+ }>, Schema.Struct<{
60
+ readonly _tag: Schema.Literal<"Settled">;
61
+ readonly worker: Schema.Struct<{
62
+ readonly schemaVersion: Schema.Literal<1>;
63
+ readonly delegationId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">;
64
+ readonly targetAgentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
65
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
66
+ }>;
67
+ readonly receipt: typeof Receipt;
68
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
69
+ readonly settlementId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/SettlementId">;
70
+ readonly outcome: Schema.Literals<readonly ["failed", "aborted"]>;
71
+ readonly failure: typeof SubagentExecutionFailure;
72
+ }>]>;
73
+ }>, Schema.Struct<{
74
+ readonly _tag: Schema.Literal<"WorkerUpdate">;
75
+ readonly schemaVersion: Schema.Literal<1>;
76
+ readonly worker: Schema.Struct<{
77
+ readonly schemaVersion: Schema.Literal<1>;
78
+ readonly delegationId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">;
79
+ readonly targetAgentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
80
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
81
+ }>;
82
+ readonly update: typeof Update;
83
+ }>]>]>>;
84
+ readonly admissionGroup: Schema.optionalKey<Schema.NonEmptyString>;
85
+ readonly admissionFence: Schema.optionalKey<Schema.Struct<{
86
+ readonly policyId: Schema.NonEmptyString;
87
+ readonly key: Schema.NonEmptyString;
88
+ readonly revision: Schema.NonEmptyString;
89
+ }>>;
90
+ readonly workerAdmission: Schema.Struct<{
91
+ readonly origin: Schema.Struct<{
92
+ readonly worker: Schema.Struct<{
93
+ readonly schemaVersion: Schema.Literal<1>;
94
+ readonly delegationId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">;
95
+ readonly targetAgentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
96
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
97
+ }>;
98
+ readonly source: Schema.Union<readonly [Schema.Struct<{
99
+ readonly _tag: Schema.Literal<"tool">;
100
+ readonly agentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
101
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
102
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
103
+ readonly toolCallId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ToolCallId">;
104
+ }>, Schema.Struct<{
105
+ readonly _tag: Schema.Literal<"programmatic">;
106
+ readonly agentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
107
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
108
+ }>]>;
109
+ readonly continuationOf: Schema.optionalKey<Schema.Struct<{
110
+ readonly worker: Schema.Struct<{
111
+ readonly schemaVersion: Schema.Literal<1>;
112
+ readonly delegationId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">;
113
+ readonly targetAgentId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/AgentId">;
114
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
115
+ }>;
116
+ readonly receipt: typeof Receipt;
117
+ readonly settlementId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/SettlementId">;
118
+ }>>;
119
+ readonly budgetScope: Schema.optionalKey<Schema.Literals<readonly ["source-subtree", "worker-run"]>>;
120
+ readonly lifecycle: Schema.optionalKey<Schema.Literal<"assignment">>;
121
+ readonly targetDigests: typeof DefinitionDigests;
122
+ readonly policy: Schema.toCodecJson<typeof AgentPolicy>;
123
+ readonly budget: Schema.Struct<{
124
+ readonly caps: typeof SubagentDelegationCaps;
125
+ readonly allocation: typeof SubagentReservationAmounts;
126
+ readonly descendantInvocations: Schema.optionalKey<Schema.Natural>;
127
+ }>;
128
+ readonly grant: typeof SubagentGrant;
129
+ readonly depth: Schema.Int;
130
+ readonly toolCallAllowance: Schema.optionalKey<Schema.Int>;
131
+ readonly firstMessageId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/IdempotencyKey">;
132
+ readonly createdAtMillis: Schema.Natural;
133
+ readonly expiresAtMillis: Schema.Natural;
134
+ readonly reporting: Schema.optionalKey<Schema.Struct<{
135
+ readonly mode: Schema.optionalKey<Schema.Literal<"standard">>;
136
+ readonly sourceDigests: typeof DefinitionDigests;
137
+ readonly destinationDelegationId: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "@effect-agent/core/DelegationId">>;
138
+ readonly returnAddress: Schema.optionalKey<Schema.Struct<{
139
+ readonly input: Schema.declare<Schema.Json, Schema.Json>;
140
+ readonly principal: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/Principal">;
141
+ readonly policy: Schema.toCodecJson<typeof AgentPolicy>;
142
+ readonly depth: Schema.Natural;
143
+ readonly grant: Schema.optionalKey<typeof SubagentGrant>;
144
+ readonly workerAdmission: Schema.optionalKey<Schema.declare<Schema.Json, Schema.Json>>;
145
+ }>>;
146
+ }>>;
147
+ }>;
148
+ readonly messageId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/IdempotencyKey">;
149
+ readonly parameters: Schema.declare<Schema.Json, Schema.Json>;
150
+ readonly createdAtMillis: Schema.Natural;
151
+ readonly sourceSubmissionId: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "@effect-agent/core/SubmissionId">>;
152
+ readonly deliveryPrincipal: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/Principal">>;
153
+ readonly reportKind: Schema.optionalKey<Schema.Literal<"update">>;
154
+ }>;
155
+ readonly producerId: Schema.brand<Schema.NonEmptyString, "@effect-agent/thread/ProducerId">;
156
+ }>, {}>;
157
+ /**
158
+ * Storage admission after source authorization, input validation and capacity reservation.
159
+ * This is an internal host port, not an authorization entrypoint. Hosts route the whole
160
+ * operation to the destination owner and enroll recovery before executing it.
161
+ */
162
+ export declare class WorkerAdmissionRequest extends WorkerAdmissionRequest_base {}
163
+ export declare const WorkerAdmissionFailure: Schema.Union<readonly [typeof AdmissionConflict, typeof AdmissionPolicyError, typeof LedgerError, typeof ThreadStoreError, typeof ThreadNotMaterialized, typeof AppendConflict, typeof FenceRejected, typeof DurableRuntimeFailpointError]>;
164
+ /** Local implementation shared by every host; retries finish the same admitted row. */
165
+ export declare const admitWorker: (request: WorkerAdmissionRequest) => Effect.Effect<AdmissionResult, AdmissionConflict | AdmissionPolicyError | AppendConflict | DurableRuntimeFailpointError | FenceRejected | LedgerError | ThreadNotMaterialized | ThreadStoreError, DurableRuntimeFailpoint | SubmissionLedger | ThreadStore | WakeScheduler>;
166
+ /** Placement adapter for the composite operation; local hosts use the same implementation. */
167
+ export declare const WorkerAdmissionPort: Context.Reference<{
168
+ readonly admit: typeof admitWorker;
169
+ }>;
170
+ //#endregion
171
+ export { WorkerAdmission_d_exports as t };
172
+ //# sourceMappingURL=WorkerAdmission.d.mts.map
@@ -0,0 +1,2 @@
1
+ import { a as admitWorker, n as WorkerAdmissionPort, r as WorkerAdmissionRequest, t as WorkerAdmissionFailure } from "../WorkerAdmission-Cmcxd6nS.mjs";
2
+ export { WorkerAdmissionFailure, WorkerAdmissionPort, WorkerAdmissionRequest, admitWorker };