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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (751) hide show
  1. package/dist/Agent-CN0EWRsR.d.mts +226 -0
  2. package/dist/Agent-RklVROrm.mjs +83 -0
  3. package/dist/Agent-RklVROrm.mjs.map +1 -0
  4. package/dist/AgentError-CggcAQ7V.d.mts +101 -0
  5. package/dist/AgentPolicy-CetmQrf3.d.mts +96 -0
  6. package/dist/AgentRuntime-BLyETCPo.mjs +4562 -0
  7. package/dist/AgentRuntime-BLyETCPo.mjs.map +1 -0
  8. package/dist/AgentRuntime-uxR_a4VM.d.mts +346 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-Dxu5zhOL.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-uggeJpv3.mjs +6368 -0
  13. package/dist/DurableAgentRuntime-uggeJpv3.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Oinuuedm.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/Ephemeral.d.mts +22 -0
  17. package/dist/Ephemeral.mjs +22 -0
  18. package/dist/Ephemeral.mjs.map +1 -0
  19. package/dist/EventSource-OqS_P9ug.d.mts +51 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  22. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  23. package/dist/Messaging-CkcIdt4I.d.mts +490 -0
  24. package/dist/MessagingHost-CRk0kXzT.d.mts +246 -0
  25. package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
  26. package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
  27. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  28. package/dist/Output-D6SkedVx.d.mts +25 -0
  29. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  30. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  31. package/dist/PreparedInputAdmission-C4HbjHgl.d.mts +38 -0
  32. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  33. package/dist/Records-BAGkekt8.d.mts +3570 -0
  34. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  35. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  36. package/dist/RunJournal-Cgg1kNvc.mjs +825 -0
  37. package/dist/RunJournal-Cgg1kNvc.mjs.map +1 -0
  38. package/dist/RunOptions-g1aigcKI.d.mts +915 -0
  39. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  40. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  41. package/dist/Schedule-H3SEYX9g.d.mts +842 -0
  42. package/dist/Scheduling-C9aIP8zT.mjs +691 -0
  43. package/dist/Scheduling-C9aIP8zT.mjs.map +1 -0
  44. package/dist/Subagent-Cy_hU1tv.mjs +1469 -0
  45. package/dist/Subagent-Cy_hU1tv.mjs.map +1 -0
  46. package/dist/Subagent-DyfzHNdv.d.mts +826 -0
  47. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  48. package/dist/SubagentHost-CJUBQlcc.d.mts +140 -0
  49. package/dist/Subscription-BEP8oQO5.d.mts +921 -0
  50. package/dist/SubscriptionInput-vAAOBrK7.d.mts +41 -0
  51. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  52. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  53. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  54. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  55. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  56. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  57. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  58. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  59. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  60. package/dist/ToolExposure.d.mts +6 -5
  61. package/dist/ToolExposure.mjs +17 -9
  62. package/dist/ToolExposure.mjs.map +1 -1
  63. package/dist/ToolReconciler-DQVaJfpE.d.mts +76 -0
  64. package/dist/ToolResult-DmmgoChv.d.mts +61 -0
  65. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  66. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  67. package/dist/Worker-CaPYykpe.d.mts +228 -0
  68. package/dist/agent-registration-CWDMOAZA.mjs +172 -0
  69. package/dist/agent-registration-CWDMOAZA.mjs.map +1 -0
  70. package/dist/capabilities/Approval.d.mts +114 -0
  71. package/dist/capabilities/Approval.mjs +226 -0
  72. package/dist/capabilities/Approval.mjs.map +1 -0
  73. package/dist/capabilities/Budget.d.mts +112 -0
  74. package/dist/capabilities/Budget.mjs +346 -0
  75. package/dist/capabilities/Budget.mjs.map +1 -0
  76. package/dist/capabilities/CodeMode.d.mts +157 -0
  77. package/dist/capabilities/CodeMode.mjs +522 -0
  78. package/dist/capabilities/CodeMode.mjs.map +1 -0
  79. package/dist/capabilities/Commands.d.mts +55 -0
  80. package/dist/capabilities/Commands.mjs +57 -0
  81. package/dist/capabilities/Commands.mjs.map +1 -0
  82. package/dist/capabilities/ContextTools.d.mts +321 -0
  83. package/dist/capabilities/ContextTools.mjs +126 -0
  84. package/dist/capabilities/ContextTools.mjs.map +1 -0
  85. package/dist/capabilities/Mcp.d.mts +108 -0
  86. package/dist/capabilities/Mcp.mjs +260 -0
  87. package/dist/capabilities/Mcp.mjs.map +1 -0
  88. package/dist/capabilities/McpClient.d.mts +115 -0
  89. package/dist/capabilities/McpClient.mjs +506 -0
  90. package/dist/capabilities/McpClient.mjs.map +1 -0
  91. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  92. package/dist/capabilities/MemoryNotes.mjs +128 -0
  93. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  94. package/dist/capabilities/Messaging.d.mts +3 -0
  95. package/dist/capabilities/Messaging.mjs +151 -0
  96. package/dist/capabilities/Messaging.mjs.map +1 -0
  97. package/dist/capabilities/ModelContext.d.mts +89 -0
  98. package/dist/capabilities/ModelContext.mjs +168 -0
  99. package/dist/capabilities/ModelContext.mjs.map +1 -0
  100. package/dist/capabilities/Redaction.d.mts +37 -0
  101. package/dist/capabilities/Redaction.mjs +104 -0
  102. package/dist/capabilities/Redaction.mjs.map +1 -0
  103. package/dist/capabilities/Remembering.d.mts +434 -0
  104. package/dist/capabilities/Remembering.mjs +290 -0
  105. package/dist/capabilities/Remembering.mjs.map +1 -0
  106. package/dist/capabilities/RunHooks.d.mts +82 -0
  107. package/dist/capabilities/RunHooks.mjs +144 -0
  108. package/dist/capabilities/RunHooks.mjs.map +1 -0
  109. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  110. package/dist/capabilities/SemanticMemory.mjs +315 -0
  111. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  112. package/dist/capabilities/Subagent.d.mts +4 -0
  113. package/dist/capabilities/Subagent.mjs +5 -0
  114. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  115. package/dist/capabilities/SubagentReservations.mjs +479 -0
  116. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  117. package/dist/capabilities/ToolDiscovery.d.mts +109 -0
  118. package/dist/capabilities/ToolDiscovery.mjs +211 -0
  119. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  120. package/dist/capabilities/WebCapture.d.mts +163 -0
  121. package/dist/capabilities/WebCapture.mjs +335 -0
  122. package/dist/capabilities/WebCapture.mjs.map +1 -0
  123. package/dist/capabilities/WebSearch.d.mts +71 -0
  124. package/dist/capabilities/WebSearch.mjs +112 -0
  125. package/dist/capabilities/WebSearch.mjs.map +1 -0
  126. package/dist/compaction-C2OTceKw.mjs +505 -0
  127. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  128. package/dist/core/Agent.d.mts +2 -0
  129. package/dist/core/Agent.mjs +2 -0
  130. package/dist/core/AgentError.d.mts +2 -0
  131. package/dist/core/AgentError.mjs +117 -0
  132. package/dist/core/AgentError.mjs.map +1 -0
  133. package/dist/core/AgentPolicy.d.mts +2 -0
  134. package/dist/core/AgentPolicy.mjs +94 -0
  135. package/dist/core/AgentPolicy.mjs.map +1 -0
  136. package/dist/core/AgentUpdates.d.mts +2 -0
  137. package/dist/core/AgentUpdates.mjs +63 -0
  138. package/dist/core/AgentUpdates.mjs.map +1 -0
  139. package/dist/core/IdGenerator.d.mts +26 -0
  140. package/dist/core/IdGenerator.mjs +27 -0
  141. package/dist/core/IdGenerator.mjs.map +1 -0
  142. package/dist/core/Identifiers.d.mts +2 -0
  143. package/dist/core/Identifiers.mjs +43 -0
  144. package/dist/core/Identifiers.mjs.map +1 -0
  145. package/dist/core/Memory.d.mts +57 -0
  146. package/dist/core/Memory.mjs +203 -0
  147. package/dist/core/Memory.mjs.map +1 -0
  148. package/dist/core/MemoryNamespace.d.mts +2 -0
  149. package/dist/core/MemoryNamespace.mjs +116 -0
  150. package/dist/core/MemoryNamespace.mjs.map +1 -0
  151. package/dist/core/MemoryReference.d.mts +2 -0
  152. package/dist/core/MemoryReference.mjs +109 -0
  153. package/dist/core/MemoryReference.mjs.map +1 -0
  154. package/dist/core/MemoryRevalidation.d.mts +65 -0
  155. package/dist/core/MemoryRevalidation.mjs +126 -0
  156. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  157. package/dist/core/MemoryStore.d.mts +186 -0
  158. package/dist/core/MemoryStore.mjs +243 -0
  159. package/dist/core/MemoryStore.mjs.map +1 -0
  160. package/dist/core/Receipt.d.mts +2 -0
  161. package/dist/core/Receipt.mjs +36 -0
  162. package/dist/core/Receipt.mjs.map +1 -0
  163. package/dist/core/RememberingStore.d.mts +1562 -0
  164. package/dist/core/RememberingStore.mjs +190 -0
  165. package/dist/core/RememberingStore.mjs.map +1 -0
  166. package/dist/core/RunEvent.d.mts +2 -0
  167. package/dist/core/RunEvent.mjs +337 -0
  168. package/dist/core/RunEvent.mjs.map +1 -0
  169. package/dist/core/RunPolicyUsage.d.mts +2 -0
  170. package/dist/core/RunPolicyUsage.mjs +21 -0
  171. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  172. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  173. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  174. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  175. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  176. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  177. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  178. package/dist/core/SubagentContract.d.mts +2 -0
  179. package/dist/core/SubagentContract.mjs +148 -0
  180. package/dist/core/SubagentContract.mjs.map +1 -0
  181. package/dist/core/Thread.d.mts +2 -0
  182. package/dist/core/Thread.mjs +250 -0
  183. package/dist/core/Thread.mjs.map +1 -0
  184. package/dist/core/ToolResult.d.mts +2 -0
  185. package/dist/core/ToolResult.mjs +140 -0
  186. package/dist/core/ToolResult.mjs.map +1 -0
  187. package/dist/core/Usage.d.mts +2 -0
  188. package/dist/core/Usage.mjs +319 -0
  189. package/dist/core/Usage.mjs.map +1 -0
  190. package/dist/core/Worker.d.mts +3 -0
  191. package/dist/core/Worker.mjs +147 -0
  192. package/dist/core/Worker.mjs.map +1 -0
  193. package/dist/durable/ActivityStore.d.mts +116 -0
  194. package/dist/durable/ActivityStore.mjs +131 -0
  195. package/dist/durable/ActivityStore.mjs.map +1 -0
  196. package/dist/durable/Admin.d.mts +2 -0
  197. package/dist/durable/Admin.mjs +328 -0
  198. package/dist/durable/Admin.mjs.map +1 -0
  199. package/dist/durable/AgentRegistration.d.mts +2 -0
  200. package/dist/durable/AgentRegistration.mjs +14 -0
  201. package/dist/durable/AgentRegistration.mjs.map +1 -0
  202. package/dist/durable/Certification.d.mts +111 -0
  203. package/dist/durable/Certification.mjs +159 -0
  204. package/dist/durable/Certification.mjs.map +1 -0
  205. package/dist/durable/CommittedActivity.d.mts +62 -0
  206. package/dist/durable/CommittedActivity.mjs +159 -0
  207. package/dist/durable/CommittedActivity.mjs.map +1 -0
  208. package/dist/durable/Digest.d.mts +2 -0
  209. package/dist/durable/Digest.mjs +50 -0
  210. package/dist/durable/Digest.mjs.map +1 -0
  211. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  212. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  213. package/dist/durable/DurableFailpoint.d.mts +2 -0
  214. package/dist/durable/DurableFailpoint.mjs +94 -0
  215. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  216. package/dist/durable/DurableFailpointTestControl.d.mts +15 -0
  217. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  218. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  219. package/dist/durable/EventSource.d.mts +2 -0
  220. package/dist/durable/EventSource.mjs +65 -0
  221. package/dist/durable/EventSource.mjs.map +1 -0
  222. package/dist/durable/GitHubWorkflowSource.d.mts +144 -0
  223. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  224. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  225. package/dist/durable/MessageDelivery.d.mts +492 -0
  226. package/dist/durable/MessageDelivery.mjs +495 -0
  227. package/dist/durable/MessageDelivery.mjs.map +1 -0
  228. package/dist/durable/MessageDeliveryStoreConformance.d.mts +358 -0
  229. package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
  230. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  231. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  232. package/dist/durable/OperationAuthorizer.mjs +70 -0
  233. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  234. package/dist/durable/PersistentHistory.d.mts +16 -0
  235. package/dist/durable/PersistentHistory.mjs +125 -0
  236. package/dist/durable/PersistentHistory.mjs.map +1 -0
  237. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  238. package/dist/durable/PreparedInputAdmission.mjs +34 -0
  239. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  240. package/dist/durable/Records.d.mts +2 -0
  241. package/dist/durable/Records.mjs +795 -0
  242. package/dist/durable/Records.mjs.map +1 -0
  243. package/dist/durable/Recovery.d.mts +2 -0
  244. package/dist/durable/Recovery.mjs +739 -0
  245. package/dist/durable/Recovery.mjs.map +1 -0
  246. package/dist/durable/RunJournal.d.mts +2 -0
  247. package/dist/durable/RunJournal.mjs +2 -0
  248. package/dist/durable/Schedule.d.mts +2 -0
  249. package/dist/durable/Schedule.mjs +382 -0
  250. package/dist/durable/Schedule.mjs.map +1 -0
  251. package/dist/durable/ScheduleStoreConformance.d.mts +18 -0
  252. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  253. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  254. package/dist/durable/ScheduleTransition.d.mts +24 -0
  255. package/dist/durable/ScheduleTransition.mjs +180 -0
  256. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  257. package/dist/durable/Scheduling.d.mts +54 -0
  258. package/dist/durable/Scheduling.mjs +2 -0
  259. package/dist/durable/SqlMemoryStore.d.mts +30 -0
  260. package/dist/durable/SqlMemoryStore.mjs +435 -0
  261. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  262. package/dist/durable/SqlMessageDeliveryStore.d.mts +40 -0
  263. package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
  264. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  265. package/dist/durable/SqlStorageV2Upgrade.d.mts +22 -0
  266. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  267. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  268. package/dist/durable/SqlSubscriptionStore.d.mts +63 -0
  269. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  270. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  271. package/dist/durable/SubmissionLedger.d.mts +3 -0
  272. package/dist/durable/SubmissionLedger.mjs +914 -0
  273. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  274. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  275. package/dist/durable/SubmissionLedgerConformance.mjs +1986 -0
  276. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  277. package/dist/durable/SubmissionStatus.d.mts +2 -0
  278. package/dist/durable/SubmissionStatus.mjs +18 -0
  279. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  280. package/dist/durable/Subscription.d.mts +2 -0
  281. package/dist/durable/Subscription.mjs +360 -0
  282. package/dist/durable/Subscription.mjs.map +1 -0
  283. package/dist/durable/SubscriptionInput.d.mts +2 -0
  284. package/dist/durable/SubscriptionInput.mjs +52 -0
  285. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  286. package/dist/durable/SubscriptionStoreConformance.d.mts +17 -0
  287. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  288. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  289. package/dist/durable/SubscriptionTools.d.mts +273 -0
  290. package/dist/durable/SubscriptionTools.mjs +190 -0
  291. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  292. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  293. package/dist/durable/SubscriptionTransition.mjs +148 -0
  294. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  295. package/dist/durable/Subscriptions.d.mts +73 -0
  296. package/dist/durable/Subscriptions.mjs +627 -0
  297. package/dist/durable/Subscriptions.mjs.map +1 -0
  298. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  299. package/dist/durable/ThreadContextHistory.mjs +152 -0
  300. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  301. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  302. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  303. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  304. package/dist/durable/ThreadInvariants.d.mts +74 -0
  305. package/dist/durable/ThreadInvariants.mjs +200 -0
  306. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  307. package/dist/durable/ThreadProjection.d.mts +78 -0
  308. package/dist/durable/ThreadProjection.mjs +158 -0
  309. package/dist/durable/ThreadProjection.mjs.map +1 -0
  310. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  311. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  312. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  313. package/dist/durable/ThreadStore.d.mts +2 -0
  314. package/dist/durable/ThreadStore.mjs +147 -0
  315. package/dist/durable/ThreadStore.mjs.map +1 -0
  316. package/dist/durable/ThreadStoreConformance.d.mts +29 -0
  317. package/dist/durable/ThreadStoreConformance.mjs +248 -0
  318. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  319. package/dist/durable/ToolReconciler.d.mts +2 -0
  320. package/dist/durable/ToolReconciler.mjs +81 -0
  321. package/dist/durable/ToolReconciler.mjs.map +1 -0
  322. package/dist/durable/WakeScheduler.d.mts +2 -0
  323. package/dist/durable/WakeScheduler.mjs +85 -0
  324. package/dist/durable/WakeScheduler.mjs.map +1 -0
  325. package/dist/durable/WorkerHost.d.mts +129 -0
  326. package/dist/durable/WorkerHost.mjs +77 -0
  327. package/dist/durable/WorkerHost.mjs.map +1 -0
  328. package/dist/engine/AgentRuntime.d.mts +2 -0
  329. package/dist/engine/AgentRuntime.mjs +2 -0
  330. package/dist/engine/Compaction.d.mts +7 -0
  331. package/dist/engine/Compaction.mjs +16 -0
  332. package/dist/engine/Compaction.mjs.map +1 -0
  333. package/dist/engine/ContextCompactor.d.mts +2 -0
  334. package/dist/engine/ContextCompactor.mjs +119 -0
  335. package/dist/engine/ContextCompactor.mjs.map +1 -0
  336. package/dist/engine/ContextHistory.d.mts +65 -0
  337. package/dist/engine/ContextHistory.mjs +76 -0
  338. package/dist/engine/ContextHistory.mjs.map +1 -0
  339. package/dist/engine/ContextWindow.d.mts +2 -0
  340. package/dist/engine/ContextWindow.mjs +59 -0
  341. package/dist/engine/ContextWindow.mjs.map +1 -0
  342. package/dist/engine/DurableStep.d.mts +2 -0
  343. package/dist/engine/DurableStep.mjs +62 -0
  344. package/dist/engine/DurableStep.mjs.map +1 -0
  345. package/dist/engine/MessagingHost.d.mts +2 -0
  346. package/dist/engine/MessagingHost.mjs +2 -0
  347. package/dist/engine/Output.d.mts +2 -0
  348. package/dist/engine/Output.mjs +8 -0
  349. package/dist/engine/Output.mjs.map +1 -0
  350. package/dist/engine/RunEventSink.d.mts +2 -0
  351. package/dist/engine/RunEventSink.mjs +22 -0
  352. package/dist/engine/RunEventSink.mjs.map +1 -0
  353. package/dist/engine/RunOptions.d.mts +2 -0
  354. package/dist/engine/RunOptions.mjs +122 -0
  355. package/dist/engine/RunOptions.mjs.map +1 -0
  356. package/dist/engine/SubagentHost.d.mts +2 -0
  357. package/dist/engine/SubagentHost.mjs +72 -0
  358. package/dist/engine/SubagentHost.mjs.map +1 -0
  359. package/dist/engine/ThreadHistory.d.mts +2 -0
  360. package/dist/engine/ThreadHistory.mjs +67 -0
  361. package/dist/engine/ThreadHistory.mjs.map +1 -0
  362. package/dist/engine/ToolBroker.d.mts +2 -0
  363. package/dist/engine/ToolBroker.mjs +42 -0
  364. package/dist/engine/ToolBroker.mjs.map +1 -0
  365. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  366. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  367. package/dist/index.d.mts +88 -54
  368. package/dist/index.mjs +97 -54
  369. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  370. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  371. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  372. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  373. package/dist/sandbox/CodeExecutor.mjs +278 -0
  374. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  375. package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
  376. package/dist/sandbox/InteractiveBrowser.mjs +165 -0
  377. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  378. package/dist/sandbox/PageCapture.d.mts +2 -0
  379. package/dist/sandbox/PageCapture.mjs +450 -0
  380. package/dist/sandbox/PageCapture.mjs.map +1 -0
  381. package/dist/sandbox/PageCrawl.d.mts +88 -0
  382. package/dist/sandbox/PageCrawl.mjs +124 -0
  383. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  384. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  385. package/dist/sandbox/PageScreenshot.mjs +53 -0
  386. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  387. package/dist/sandbox/ProtectedBrowser.d.mts +252 -0
  388. package/dist/sandbox/ProtectedBrowser.mjs +270 -0
  389. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  390. package/dist/sandbox/Sandbox.d.mts +2 -0
  391. package/dist/sandbox/Sandbox.mjs +208 -0
  392. package/dist/sandbox/Sandbox.mjs.map +1 -0
  393. package/dist/utf8-BYfhEkcj.mjs +11 -0
  394. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  395. package/dist/utf8-DchGZRBd.mjs +23 -0
  396. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  397. package/package.json +1 -1
  398. package/src/Ephemeral.ts +17 -0
  399. package/src/ToolExposure.ts +2 -2
  400. package/src/capabilities/Approval.ts +352 -0
  401. package/src/capabilities/Budget.ts +536 -0
  402. package/src/capabilities/CodeMode.ts +1090 -0
  403. package/src/capabilities/Commands.ts +86 -0
  404. package/src/capabilities/ContextTools.ts +184 -0
  405. package/src/capabilities/Mcp.ts +427 -0
  406. package/src/capabilities/McpClient.ts +967 -0
  407. package/src/capabilities/MemoryNotes.ts +174 -0
  408. package/src/capabilities/Messaging.ts +261 -0
  409. package/src/capabilities/ModelContext.ts +354 -0
  410. package/src/capabilities/Redaction.ts +157 -0
  411. package/src/capabilities/Remembering.ts +550 -0
  412. package/src/capabilities/RunHooks.ts +280 -0
  413. package/src/capabilities/SemanticMemory.ts +447 -0
  414. package/src/capabilities/Subagent.ts +2277 -0
  415. package/src/capabilities/SubagentReservations.ts +850 -0
  416. package/src/capabilities/ToolDiscovery.ts +339 -0
  417. package/src/capabilities/WebCapture.ts +722 -0
  418. package/src/capabilities/WebSearch.ts +184 -0
  419. package/src/capabilities/internal/subagent-background.ts +1106 -0
  420. package/src/capabilities/internal/subagent-contract.ts +142 -0
  421. package/src/capabilities/internal/subagent-policy.ts +235 -0
  422. package/src/capabilities/internal/subagent-reporting.ts +261 -0
  423. package/src/capabilities/internal/utf8.ts +10 -0
  424. package/src/core/Agent.ts +575 -0
  425. package/src/core/AgentError.ts +152 -0
  426. package/src/core/AgentPolicy.ts +153 -0
  427. package/src/core/AgentUpdates.ts +100 -0
  428. package/src/core/IdGenerator.ts +39 -0
  429. package/src/core/Identifiers.ts +48 -0
  430. package/src/core/Memory.ts +290 -0
  431. package/src/core/MemoryNamespace.ts +196 -0
  432. package/src/core/MemoryReference.ts +121 -0
  433. package/src/core/MemoryRevalidation.ts +185 -0
  434. package/src/core/MemoryStore.ts +368 -0
  435. package/src/core/Messaging.ts +90 -0
  436. package/src/core/Receipt.ts +42 -0
  437. package/src/core/RememberingStore.ts +300 -0
  438. package/src/core/RunEvent.ts +366 -0
  439. package/src/core/RunPolicyUsage.ts +17 -0
  440. package/src/core/SemanticMemoryIndex.ts +250 -0
  441. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  442. package/src/core/SubagentContract.ts +196 -0
  443. package/src/core/Thread.ts +371 -0
  444. package/src/core/ToolExposure.ts +74 -0
  445. package/src/core/ToolResult.ts +170 -0
  446. package/src/core/Usage.ts +529 -0
  447. package/src/core/Worker.ts +173 -0
  448. package/src/core/internal/agent-updates.ts +32 -0
  449. package/src/core/internal/utf8.ts +23 -0
  450. package/src/durable/ActivityStore.ts +160 -0
  451. package/src/durable/Admin.ts +496 -0
  452. package/src/durable/AgentRegistration.ts +13 -0
  453. package/src/durable/Certification.ts +210 -0
  454. package/src/durable/CommittedActivity.ts +296 -0
  455. package/src/durable/Digest.ts +93 -0
  456. package/src/durable/DurableAgentRuntime.ts +10340 -0
  457. package/src/durable/DurableFailpoint.ts +103 -0
  458. package/src/durable/DurableFailpointTestControl.ts +39 -0
  459. package/src/durable/EventSource.ts +172 -0
  460. package/src/durable/GitHubWorkflowSource.ts +453 -0
  461. package/src/durable/MessageDelivery.ts +708 -0
  462. package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
  463. package/src/durable/OperationAuthorizer.ts +85 -0
  464. package/src/durable/PersistentHistory.ts +260 -0
  465. package/src/durable/PreparedInputAdmission.ts +44 -0
  466. package/src/durable/Records.ts +1010 -0
  467. package/src/durable/Recovery.ts +1018 -0
  468. package/src/durable/RunJournal.ts +1479 -0
  469. package/src/durable/Schedule.ts +504 -0
  470. package/src/durable/ScheduleStoreConformance.ts +638 -0
  471. package/src/durable/ScheduleTransition.ts +265 -0
  472. package/src/durable/Scheduling.ts +1077 -0
  473. package/src/durable/SqlMemoryStore.ts +774 -0
  474. package/src/durable/SqlMessageDeliveryStore.ts +302 -0
  475. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  476. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  477. package/src/durable/SubmissionLedger.ts +1201 -0
  478. package/src/durable/SubmissionLedgerConformance.ts +4579 -0
  479. package/src/durable/SubmissionStatus.ts +14 -0
  480. package/src/durable/Subscription.ts +544 -0
  481. package/src/durable/SubscriptionInput.ts +144 -0
  482. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  483. package/src/durable/SubscriptionTools.ts +327 -0
  484. package/src/durable/SubscriptionTransition.ts +302 -0
  485. package/src/durable/Subscriptions.ts +1210 -0
  486. package/src/durable/ThreadContextHistory.ts +227 -0
  487. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  488. package/src/durable/ThreadInvariants.ts +442 -0
  489. package/src/durable/ThreadProjection.ts +269 -0
  490. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  491. package/src/durable/ThreadStore.ts +242 -0
  492. package/src/durable/ThreadStoreConformance.ts +710 -0
  493. package/src/durable/ToolReconciler.ts +105 -0
  494. package/src/durable/WakeScheduler.ts +134 -0
  495. package/src/durable/WorkerHost.ts +171 -0
  496. package/src/durable/internal/agent-registration.ts +525 -0
  497. package/src/durable/internal/agent-updates.ts +302 -0
  498. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  499. package/src/durable/internal/journal-checkpoint.ts +104 -0
  500. package/src/durable/internal/journal-metadata.ts +107 -0
  501. package/src/durable/internal/messaging-host.ts +608 -0
  502. package/src/durable/internal/schedule-time.ts +303 -0
  503. package/src/durable/internal/storage-v2-layout.ts +163 -0
  504. package/src/durable/internal/storage-v2.ts +73 -0
  505. package/src/durable/internal/worker-host.ts +2467 -0
  506. package/src/durable/internal/worker-runtime.ts +9 -0
  507. package/src/engine/AgentRuntime.ts +37 -0
  508. package/src/engine/Compaction.ts +11 -0
  509. package/src/engine/ContextCompactor.ts +277 -0
  510. package/src/engine/ContextHistory.ts +73 -0
  511. package/src/engine/ContextWindow.ts +72 -0
  512. package/src/engine/DurableStep.ts +132 -0
  513. package/src/engine/MessagingHost.ts +110 -0
  514. package/src/engine/Output.ts +2 -0
  515. package/src/engine/RunEventSink.ts +132 -0
  516. package/src/engine/RunOptions.ts +1077 -0
  517. package/src/engine/SubagentHost.ts +181 -0
  518. package/src/engine/ThreadHistory.ts +120 -0
  519. package/src/engine/ToolBroker.ts +157 -0
  520. package/src/engine/ToolExposure.ts +48 -0
  521. package/src/engine/internal/agent-runtime.ts +10117 -0
  522. package/src/engine/internal/bounded-value.ts +315 -0
  523. package/src/engine/internal/compaction.ts +678 -0
  524. package/src/engine/internal/error-diagnostic.ts +39 -0
  525. package/src/engine/internal/output-contract.ts +173 -0
  526. package/src/engine/internal/primitive-delta.ts +80 -0
  527. package/src/engine/internal/provider-result-staging.ts +211 -0
  528. package/src/engine/internal/tool-derivative.ts +106 -0
  529. package/src/engine/internal/tool-exposure.ts +224 -0
  530. package/src/engine/internal/tool-telemetry.ts +484 -0
  531. package/src/index.ts +96 -53
  532. package/src/sandbox/CodeExecutor.ts +352 -0
  533. package/src/sandbox/InteractiveBrowser.ts +257 -0
  534. package/src/sandbox/PageCapture.ts +692 -0
  535. package/src/sandbox/PageCrawl.ts +148 -0
  536. package/src/sandbox/PageScreenshot.ts +81 -0
  537. package/src/sandbox/ProtectedBrowser.ts +413 -0
  538. package/src/sandbox/Sandbox.ts +241 -0
  539. package/dist/Agent.d.mts +0 -5
  540. package/dist/Agent.mjs +0 -10
  541. package/dist/Agent.mjs.map +0 -1
  542. package/dist/AgentError.d.mts +0 -5
  543. package/dist/AgentError.mjs +0 -10
  544. package/dist/AgentError.mjs.map +0 -1
  545. package/dist/AgentPolicy.d.mts +0 -5
  546. package/dist/AgentPolicy.mjs +0 -10
  547. package/dist/AgentPolicy.mjs.map +0 -1
  548. package/dist/AgentRuntime.d.mts +0 -5
  549. package/dist/AgentRuntime.mjs +0 -10
  550. package/dist/AgentRuntime.mjs.map +0 -1
  551. package/dist/AgentUpdates.d.mts +0 -5
  552. package/dist/AgentUpdates.mjs +0 -10
  553. package/dist/AgentUpdates.mjs.map +0 -1
  554. package/dist/Approval.d.mts +0 -5
  555. package/dist/Approval.mjs +0 -10
  556. package/dist/Approval.mjs.map +0 -1
  557. package/dist/Budget.d.mts +0 -5
  558. package/dist/Budget.mjs +0 -10
  559. package/dist/Budget.mjs.map +0 -1
  560. package/dist/CodeMode.d.mts +0 -5
  561. package/dist/CodeMode.mjs +0 -10
  562. package/dist/CodeMode.mjs.map +0 -1
  563. package/dist/Commands.d.mts +0 -5
  564. package/dist/Commands.mjs +0 -10
  565. package/dist/Commands.mjs.map +0 -1
  566. package/dist/Compaction.d.mts +0 -5
  567. package/dist/Compaction.mjs +0 -10
  568. package/dist/Compaction.mjs.map +0 -1
  569. package/dist/ContextCompactor.d.mts +0 -5
  570. package/dist/ContextCompactor.mjs +0 -10
  571. package/dist/ContextCompactor.mjs.map +0 -1
  572. package/dist/ContextHistory.d.mts +0 -5
  573. package/dist/ContextHistory.mjs +0 -10
  574. package/dist/ContextHistory.mjs.map +0 -1
  575. package/dist/ContextTools.d.mts +0 -5
  576. package/dist/ContextTools.mjs +0 -10
  577. package/dist/ContextTools.mjs.map +0 -1
  578. package/dist/ContextWindow.d.mts +0 -5
  579. package/dist/ContextWindow.mjs +0 -10
  580. package/dist/ContextWindow.mjs.map +0 -1
  581. package/dist/DurableStep.d.mts +0 -5
  582. package/dist/DurableStep.mjs +0 -10
  583. package/dist/DurableStep.mjs.map +0 -1
  584. package/dist/EphemeralThreads.d.mts +0 -5
  585. package/dist/EphemeralThreads.mjs +0 -10
  586. package/dist/EphemeralThreads.mjs.map +0 -1
  587. package/dist/IdGenerator.d.mts +0 -5
  588. package/dist/IdGenerator.mjs +0 -10
  589. package/dist/IdGenerator.mjs.map +0 -1
  590. package/dist/Identifiers.d.mts +0 -5
  591. package/dist/Identifiers.mjs +0 -10
  592. package/dist/Identifiers.mjs.map +0 -1
  593. package/dist/Mcp.d.mts +0 -5
  594. package/dist/Mcp.mjs +0 -10
  595. package/dist/Mcp.mjs.map +0 -1
  596. package/dist/McpClient.d.mts +0 -5
  597. package/dist/McpClient.mjs +0 -10
  598. package/dist/McpClient.mjs.map +0 -1
  599. package/dist/Memory.d.mts +0 -5
  600. package/dist/Memory.mjs +0 -10
  601. package/dist/Memory.mjs.map +0 -1
  602. package/dist/MemoryNamespace.d.mts +0 -5
  603. package/dist/MemoryNamespace.mjs +0 -10
  604. package/dist/MemoryNamespace.mjs.map +0 -1
  605. package/dist/MemoryNotes.d.mts +0 -5
  606. package/dist/MemoryNotes.mjs +0 -10
  607. package/dist/MemoryNotes.mjs.map +0 -1
  608. package/dist/MemoryReference.d.mts +0 -5
  609. package/dist/MemoryReference.mjs +0 -10
  610. package/dist/MemoryReference.mjs.map +0 -1
  611. package/dist/MemoryRevalidation.d.mts +0 -5
  612. package/dist/MemoryRevalidation.mjs +0 -10
  613. package/dist/MemoryRevalidation.mjs.map +0 -1
  614. package/dist/MemoryStore.d.mts +0 -5
  615. package/dist/MemoryStore.mjs +0 -10
  616. package/dist/MemoryStore.mjs.map +0 -1
  617. package/dist/Messaging.d.mts +0 -5
  618. package/dist/Messaging.mjs +0 -10
  619. package/dist/Messaging.mjs.map +0 -1
  620. package/dist/MessagingHost.d.mts +0 -5
  621. package/dist/MessagingHost.mjs +0 -10
  622. package/dist/MessagingHost.mjs.map +0 -1
  623. package/dist/ModelContext.d.mts +0 -5
  624. package/dist/ModelContext.mjs +0 -10
  625. package/dist/ModelContext.mjs.map +0 -1
  626. package/dist/Receipt.d.mts +0 -5
  627. package/dist/Receipt.mjs +0 -10
  628. package/dist/Receipt.mjs.map +0 -1
  629. package/dist/Redaction.d.mts +0 -5
  630. package/dist/Redaction.mjs +0 -10
  631. package/dist/Redaction.mjs.map +0 -1
  632. package/dist/Remembering.d.mts +0 -5
  633. package/dist/Remembering.mjs +0 -10
  634. package/dist/Remembering.mjs.map +0 -1
  635. package/dist/RememberingStore.d.mts +0 -5
  636. package/dist/RememberingStore.mjs +0 -10
  637. package/dist/RememberingStore.mjs.map +0 -1
  638. package/dist/RunEvent.d.mts +0 -5
  639. package/dist/RunEvent.mjs +0 -10
  640. package/dist/RunEvent.mjs.map +0 -1
  641. package/dist/RunEventSink.d.mts +0 -5
  642. package/dist/RunEventSink.mjs +0 -10
  643. package/dist/RunEventSink.mjs.map +0 -1
  644. package/dist/RunHooks.d.mts +0 -5
  645. package/dist/RunHooks.mjs +0 -10
  646. package/dist/RunHooks.mjs.map +0 -1
  647. package/dist/RunOptions.d.mts +0 -5
  648. package/dist/RunOptions.mjs +0 -10
  649. package/dist/RunOptions.mjs.map +0 -1
  650. package/dist/RunPolicyUsage.d.mts +0 -5
  651. package/dist/RunPolicyUsage.mjs +0 -10
  652. package/dist/RunPolicyUsage.mjs.map +0 -1
  653. package/dist/SemanticMemory.d.mts +0 -5
  654. package/dist/SemanticMemory.mjs +0 -10
  655. package/dist/SemanticMemory.mjs.map +0 -1
  656. package/dist/SemanticMemoryIndex.d.mts +0 -5
  657. package/dist/SemanticMemoryIndex.mjs +0 -10
  658. package/dist/SemanticMemoryIndex.mjs.map +0 -1
  659. package/dist/SemanticMemoryRevalidation.d.mts +0 -5
  660. package/dist/SemanticMemoryRevalidation.mjs +0 -10
  661. package/dist/SemanticMemoryRevalidation.mjs.map +0 -1
  662. package/dist/Subagent.d.mts +0 -5
  663. package/dist/Subagent.mjs +0 -10
  664. package/dist/Subagent.mjs.map +0 -1
  665. package/dist/SubagentContract.d.mts +0 -5
  666. package/dist/SubagentContract.mjs +0 -10
  667. package/dist/SubagentContract.mjs.map +0 -1
  668. package/dist/SubagentHost.d.mts +0 -5
  669. package/dist/SubagentHost.mjs +0 -10
  670. package/dist/SubagentHost.mjs.map +0 -1
  671. package/dist/SubagentReservations.d.mts +0 -5
  672. package/dist/SubagentReservations.mjs +0 -10
  673. package/dist/SubagentReservations.mjs.map +0 -1
  674. package/dist/ThreadHistory.d.mts +0 -5
  675. package/dist/ThreadHistory.mjs +0 -10
  676. package/dist/ThreadHistory.mjs.map +0 -1
  677. package/dist/ToolBroker.d.mts +0 -5
  678. package/dist/ToolBroker.mjs +0 -10
  679. package/dist/ToolBroker.mjs.map +0 -1
  680. package/dist/ToolDiscovery.d.mts +0 -5
  681. package/dist/ToolDiscovery.mjs +0 -10
  682. package/dist/ToolDiscovery.mjs.map +0 -1
  683. package/dist/ToolResult.d.mts +0 -5
  684. package/dist/ToolResult.mjs +0 -10
  685. package/dist/ToolResult.mjs.map +0 -1
  686. package/dist/Usage.d.mts +0 -5
  687. package/dist/Usage.mjs +0 -10
  688. package/dist/Usage.mjs.map +0 -1
  689. package/dist/WebCapture.d.mts +0 -5
  690. package/dist/WebCapture.mjs +0 -10
  691. package/dist/WebCapture.mjs.map +0 -1
  692. package/dist/WebSearch.d.mts +0 -5
  693. package/dist/WebSearch.mjs +0 -10
  694. package/dist/WebSearch.mjs.map +0 -1
  695. package/dist/Worker.d.mts +0 -5
  696. package/dist/Worker.mjs +0 -10
  697. package/dist/Worker.mjs.map +0 -1
  698. package/dist/rolldown-runtime-BBjsoOtd.mjs +0 -27
  699. package/src/Agent.ts +0 -1
  700. package/src/AgentError.ts +0 -1
  701. package/src/AgentPolicy.ts +0 -1
  702. package/src/AgentRuntime.ts +0 -1
  703. package/src/AgentUpdates.ts +0 -1
  704. package/src/Approval.ts +0 -1
  705. package/src/Budget.ts +0 -1
  706. package/src/CodeMode.ts +0 -1
  707. package/src/Commands.ts +0 -1
  708. package/src/Compaction.ts +0 -1
  709. package/src/ContextCompactor.ts +0 -1
  710. package/src/ContextHistory.ts +0 -1
  711. package/src/ContextTools.ts +0 -1
  712. package/src/ContextWindow.ts +0 -1
  713. package/src/DurableStep.ts +0 -1
  714. package/src/EphemeralThreads.ts +0 -1
  715. package/src/IdGenerator.ts +0 -1
  716. package/src/Identifiers.ts +0 -1
  717. package/src/Mcp.ts +0 -1
  718. package/src/McpClient.ts +0 -1
  719. package/src/Memory.ts +0 -1
  720. package/src/MemoryNamespace.ts +0 -1
  721. package/src/MemoryNotes.ts +0 -1
  722. package/src/MemoryReference.ts +0 -1
  723. package/src/MemoryRevalidation.ts +0 -1
  724. package/src/MemoryStore.ts +0 -1
  725. package/src/Messaging.ts +0 -1
  726. package/src/MessagingHost.ts +0 -1
  727. package/src/ModelContext.ts +0 -1
  728. package/src/Receipt.ts +0 -1
  729. package/src/Redaction.ts +0 -1
  730. package/src/Remembering.ts +0 -1
  731. package/src/RememberingStore.ts +0 -1
  732. package/src/RunEvent.ts +0 -1
  733. package/src/RunEventSink.ts +0 -1
  734. package/src/RunHooks.ts +0 -1
  735. package/src/RunOptions.ts +0 -1
  736. package/src/RunPolicyUsage.ts +0 -1
  737. package/src/SemanticMemory.ts +0 -1
  738. package/src/SemanticMemoryIndex.ts +0 -1
  739. package/src/SemanticMemoryRevalidation.ts +0 -1
  740. package/src/Subagent.ts +0 -1
  741. package/src/SubagentContract.ts +0 -1
  742. package/src/SubagentHost.ts +0 -1
  743. package/src/SubagentReservations.ts +0 -1
  744. package/src/ThreadHistory.ts +0 -1
  745. package/src/ToolBroker.ts +0 -1
  746. package/src/ToolDiscovery.ts +0 -1
  747. package/src/ToolResult.ts +0 -1
  748. package/src/Usage.ts +0 -1
  749. package/src/WebCapture.ts +0 -1
  750. package/src/WebSearch.ts +0 -1
  751. package/src/Worker.ts +0 -1
@@ -0,0 +1,290 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { n as utf8ByteLength } from "../utf8-DchGZRBd.mjs";
3
+ import { MemoryContent, MemorySourceReference } from "../core/MemoryReference.mjs";
4
+ import { MemoryDocument, MemoryKey, MemoryReader, MemoryScope, MemoryWrite, MemoryWriter } from "../core/MemoryStore.mjs";
5
+ import { AdmissionError, Checkpoint, CheckpointError, Intent, Invalidation, MutationFailpoint, ProcessingError, Proposal, Source } from "../core/RememberingStore.mjs";
6
+ import { Effect, Encoding, Schema } from "effect";
7
+ //#region src/capabilities/Remembering.ts
8
+ var Remembering_exports = /* @__PURE__ */ __exportAll({
9
+ Decision: () => Decision,
10
+ Limits: () => Limits,
11
+ SourceSnapshot: () => SourceSnapshot,
12
+ admit: () => admit,
13
+ invalidate: () => invalidate,
14
+ make: () => make
15
+ });
16
+ var Limits = class extends Schema.Class("@effect-agent/remembering/Limits")({
17
+ maxSourceBytes: Schema.Int.check(Schema.isBetween({
18
+ minimum: 1,
19
+ maximum: 4194304
20
+ })),
21
+ maxProposalBytes: Schema.Int.check(Schema.isBetween({
22
+ minimum: 1,
23
+ maximum: 1048576
24
+ })),
25
+ timeoutMillis: Schema.Int.check(Schema.isBetween({
26
+ minimum: 1,
27
+ maximum: 3e5
28
+ }))
29
+ }) {};
30
+ var SourceSnapshot = class extends Schema.Class("@effect-agent/remembering/SourceSnapshot")({
31
+ source: Source,
32
+ text: Schema.String.check(Schema.isMaxLength(4194304))
33
+ }) {};
34
+ const SourceResult = Schema.NullOr(Schema.Union([SourceSnapshot, Invalidation]));
35
+ /** Application-authorized output. The coordinator binds key, operation ID and expected revision.
36
+ * Fact acceptance, sharing scopes, profile schema and source-aware merging remain application code.
37
+ */
38
+ const Decision = Schema.Union([
39
+ Schema.TaggedStruct("Put", {
40
+ locator: MemorySourceReference.fields.locator,
41
+ content: MemoryContent,
42
+ scopes: Schema.Array(MemoryScope).check(Schema.isMaxLength(128))
43
+ }),
44
+ Schema.TaggedStruct("Withdraw", { reason: Schema.String.check(Schema.isMaxLength(4096)) }),
45
+ Schema.TaggedStruct("NoChange", {}),
46
+ Schema.TaggedStruct("Reject", {})
47
+ ]);
48
+ const equal = (left, right) => JSON.stringify(left) === JSON.stringify(right);
49
+ const sameKey = (left, right) => left.id === right.id && left.namespace.address === right.namespace.address;
50
+ const encodeIntent = Schema.encodeSync(Intent.Wire);
51
+ const validateSource = Effect.fn("Remembering.validateSource")(function* (intent, snapshot, limits) {
52
+ const source = yield* Schema.decodeEffect(SourceSnapshot)(snapshot).pipe(Effect.mapError(() => ProcessingError.make({ reason: "invalid-input" })));
53
+ const actual = yield* Schema.encodeEffect(Source)(source.source);
54
+ const expected = yield* Schema.encodeEffect(Source)(intent.source);
55
+ if (!equal(actual, expected)) return yield* ProcessingError.make({ reason: "source-changed" });
56
+ if (utf8ByteLength(source.text) > limits.maxSourceBytes) return yield* ProcessingError.make({ reason: "budget" });
57
+ return source;
58
+ });
59
+ const validateEvidence = Effect.fn("Remembering.validateEvidence")(function* (source, proposal) {
60
+ const bytes = Encoding.encodeHex(source.text);
61
+ for (const evidence of proposal.evidence) {
62
+ const quote = Encoding.encodeHex(evidence.quote);
63
+ if (evidence.source.id !== source.source.key.id || evidence.source.revision !== source.source.revision || evidence.source.locator !== source.source.locator || evidence.endByte <= evidence.startByte || evidence.endByte > bytes.length / 2 || quote.length / 2 !== evidence.endByte - evidence.startByte || quote !== bytes.slice(evidence.startByte * 2, evidence.endByte * 2)) return yield* ProcessingError.make({ reason: "invalid-evidence" });
64
+ }
65
+ });
66
+ const validateCheckpoint = Effect.fn("Remembering.validateCheckpoint")(function* (intent, input) {
67
+ const checkpoint = yield* Schema.decodeEffect(Checkpoint)(input).pipe(Effect.mapError(() => CheckpointError.make({ reason: "corrupt" })));
68
+ if (!equal(encodeIntent(intent), encodeIntent(checkpoint.intent)) || checkpoint.suppression !== null && !sameKey(checkpoint.suppression.source, intent.source.key)) return yield* CheckpointError.make({ reason: "corrupt" });
69
+ const progress = checkpoint.progress;
70
+ if (progress._tag !== "Pending" && progress.applied !== null && !sameKey(progress.applied.key, intent.target)) return yield* CheckpointError.make({ reason: "corrupt" });
71
+ if (progress._tag === "Prepared" && (!sameKey(progress.command.key, intent.target) || progress.command.operationId !== operationId(intent, progress.purpose, progress.attempt))) return yield* CheckpointError.make({ reason: "corrupt" });
72
+ const applied = progress._tag === "Pending" || progress.applied === null ? null : yield* MemoryDocument.restore(intent.target.namespace, progress.applied).pipe(Effect.mapError(() => CheckpointError.make({ reason: "corrupt" })));
73
+ const boundProgress = progress._tag === "Pending" ? progress : progress._tag === "Prepared" ? {
74
+ ...progress,
75
+ applied,
76
+ command: MemoryWrite.make({
77
+ ...progress.command,
78
+ key: intent.target
79
+ })
80
+ } : {
81
+ ...progress,
82
+ applied
83
+ };
84
+ const suppression = checkpoint.suppression === null ? null : Object.assign(checkpoint.suppression, { source: MemoryKey.make({
85
+ ...checkpoint.suppression.source,
86
+ namespace: intent.source.key.namespace
87
+ }) });
88
+ return Object.assign(checkpoint, {
89
+ intent,
90
+ progress: boundProgress,
91
+ suppression
92
+ });
93
+ });
94
+ const operationId = (intent, purpose, attempt) => `remembering/${intent.id}/${purpose}/${attempt}`;
95
+ const completed = (progress, outcome, cleaned, applied) => ({
96
+ _tag: "Completed",
97
+ proposal: progress._tag === "Pending" ? null : progress.proposal,
98
+ attempt: progress._tag === "Pending" ? 0 : progress.attempt,
99
+ applied: applied ?? (progress._tag === "Pending" ? null : progress.applied),
100
+ outcome,
101
+ cleaned
102
+ });
103
+ /** Foreground admission performs only one durable port call. Bind authority and idempotency
104
+ * from the trusted invocation before calling; a queued receipt is returned only after commit.
105
+ */
106
+ const admit = Effect.fn("Remembering.admit")(function* (store, intent) {
107
+ const checked = yield* Schema.decodeEffect(Intent.Wire)(intent).pipe(Effect.mapError(() => AdmissionError.make({ reason: "invalid-input" })));
108
+ const failpoint = yield* MutationFailpoint;
109
+ yield* failpoint.hit("admission:before");
110
+ const receipt = yield* store.admit(checked);
111
+ yield* failpoint.hit("admission:after");
112
+ return receipt;
113
+ });
114
+ /** Source owners await this durable suppression receipt before acknowledging edit/deletion/Forget.
115
+ * Scheduling all affected retained references and conditional cleanup is the host's obligation.
116
+ */
117
+ const invalidate = Effect.fn("Remembering.invalidate")(function* (store, event) {
118
+ const checked = yield* Schema.decodeEffect(Invalidation)(event).pipe(Effect.mapError(() => AdmissionError.make({ reason: "invalid-input" })));
119
+ const failpoint = yield* MutationFailpoint;
120
+ yield* failpoint.hit("suppression:before");
121
+ const receipt = yield* store.invalidate(checked);
122
+ yield* failpoint.hit("suppression:after");
123
+ return receipt;
124
+ });
125
+ /** Define one application learner. Extraction may call native Effect AI LanguageModel directly;
126
+ * callback/model/schema requirements and errors remain in the returned Effect. No model owns
127
+ * authority, source loading, fact acceptance, profile representation or sharing policy.
128
+ * These are Effect-composition callbacks: they can yield application Context services, and advance
129
+ * retains every callback's E/R. The framework neither acquires nor provides application policy.
130
+ *
131
+ * advance is finite: it extracts, prepares, dispatches, or rebases at most once. The host calls it
132
+ * again when ready. A proposal is persisted before any target read; a complete command is saved
133
+ * before dispatch. Unknown outcomes leave that command untouched. Only MemoryConflict rebases.
134
+ * Cleanup receives the immutable proposal, original applied document and latest target so it can
135
+ * remove that contribution without overwriting intervening human corrections.
136
+ *
137
+ * loadSource returns an explicit Invalidation when source authority changed or was revoked; its
138
+ * suppression is committed before processing returns. null means absent on an initial load. A
139
+ * later null or a changed snapshot without an authority event fails source-changed and retains
140
+ * the obligation. Sources must keep revision content immutable. Evidence is checked again before
141
+ * preparing a new command. A saved Prepared command may already have executed, so it never calls
142
+ * loadSource and must reconcile even during a source outage. Source owners durably invalidate
143
+ * before acknowledging edits, and authoritative recall filters suppression while cleanup runs.
144
+ * No source text, proposal, authority identity, or extracted values are added to tracing spans.
145
+ */
146
+ const make = (options) => {
147
+ return { advance: Effect.fn("Remembering.advance")(function* (input) {
148
+ const limits = yield* Schema.decodeEffect(Limits)(input.limits).pipe(Effect.mapError(() => ProcessingError.make({ reason: "invalid-input" })));
149
+ const decodedIntent = yield* Schema.decodeUnknownEffect(Intent.Wire)(input.intent).pipe(Effect.mapError(() => ProcessingError.make({ reason: "invalid-input" })));
150
+ const intent = Object.assign(decodedIntent, {
151
+ source: {
152
+ ...decodedIntent.source,
153
+ key: MemoryKey.make({
154
+ ...decodedIntent.source.key,
155
+ namespace: input.intent.source.key.namespace
156
+ })
157
+ },
158
+ target: MemoryKey.make({
159
+ ...decodedIntent.target,
160
+ namespace: input.intent.target.namespace
161
+ })
162
+ });
163
+ return yield* Effect.gen(function* () {
164
+ const checkpoint = yield* input.store.read(intent).pipe(Effect.flatMap((value) => validateCheckpoint(intent, value)));
165
+ const progress = checkpoint.progress;
166
+ const suppression = checkpoint.suppression;
167
+ if (progress._tag === "Proposed" && suppression === null && utf8ByteLength(JSON.stringify(progress.proposal)) > limits.maxProposalBytes) return yield* ProcessingError.make({ reason: "budget" });
168
+ const failpoint = yield* MutationFailpoint;
169
+ const save = Effect.fn("Remembering.save")(function* (next, before, after) {
170
+ yield* failpoint.hit(before);
171
+ const stored = yield* input.store.save({
172
+ intent,
173
+ expectedVersion: checkpoint.version,
174
+ progress: next
175
+ });
176
+ yield* failpoint.hit(after);
177
+ return yield* validateCheckpoint(intent, stored);
178
+ });
179
+ const suppress = Effect.fn("Remembering.suppress")(function* (event) {
180
+ if (!sameKey(event.source, intent.source.key)) return yield* ProcessingError.make({ reason: "invalid-input" });
181
+ yield* invalidate(input.store, event);
182
+ return yield* input.store.read(intent).pipe(Effect.flatMap((value) => validateCheckpoint(intent, value)));
183
+ });
184
+ if (progress._tag === "Completed" && (suppression === null || progress.cleaned)) return checkpoint;
185
+ if (suppression !== null && progress._tag !== "Prepared" && (progress._tag === "Pending" || progress.applied === null)) return yield* save(completed(progress, "suppressed", true), "completion:before", "completion:after");
186
+ if (progress._tag === "Pending") {
187
+ if (!input.extractionEnabled) return yield* ProcessingError.make({ reason: "disabled" });
188
+ const snapshot = yield* options.loadSource(intent).pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));
189
+ if (snapshot === null) return yield* save(completed(progress, "rejected", false), "completion:before", "completion:after");
190
+ if (Schema.is(Invalidation)(snapshot)) return yield* suppress(snapshot);
191
+ const source = yield* validateSource(intent, snapshot, limits);
192
+ const extracted = yield* options.extract(source, intent);
193
+ if (extracted === null) return yield* save(completed(progress, "no-change", false), "completion:before", "completion:after");
194
+ const value = yield* Schema.encodeEffect(options.proposal)(extracted.value);
195
+ const proposal = yield* Schema.decodeUnknownEffect(Proposal)({
196
+ version: 1,
197
+ value,
198
+ evidence: extracted.evidence
199
+ });
200
+ if (utf8ByteLength(JSON.stringify(proposal)) > limits.maxProposalBytes) return yield* ProcessingError.make({ reason: "budget" });
201
+ yield* validateEvidence(source, proposal);
202
+ const latest = yield* options.loadSource(intent).pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));
203
+ if (latest === null) return yield* ProcessingError.make({ reason: "source-changed" });
204
+ if (Schema.is(Invalidation)(latest)) return yield* suppress(latest);
205
+ yield* validateSource(intent, latest, limits);
206
+ if (latest.text !== source.text) return yield* ProcessingError.make({ reason: "source-changed" });
207
+ return yield* save({
208
+ _tag: "Proposed",
209
+ proposal,
210
+ attempt: 0,
211
+ purpose: "remember",
212
+ applied: null
213
+ }, "proposal:before", "proposal:after");
214
+ }
215
+ if (progress._tag === "Prepared") {
216
+ const writer = yield* MemoryWriter;
217
+ const command = MemoryWrite.make({
218
+ ...progress.command,
219
+ key: intent.target
220
+ });
221
+ const outcome = yield* writer.change(command).pipe(Effect.map((document) => ({
222
+ _tag: "Written",
223
+ document
224
+ })), Effect.catchTag("MemoryConflict", () => Effect.succeed({ _tag: "Conflict" })), Effect.catchTag("MemoryWithdrawn", () => Effect.succeed({ _tag: "Withdrawn" })));
225
+ if (outcome._tag === "Written") return yield* save(completed(progress, progress.purpose === "cleanup" ? "suppressed" : "applied", progress.purpose === "cleanup", progress.purpose === "remember" ? outcome.document : void 0), "completion:before", "completion:after");
226
+ if (outcome._tag === "Withdrawn" || suppression !== null && progress.purpose === "remember") return yield* save(completed(progress, suppression !== null ? "suppressed" : "rejected", suppression !== null), "completion:before", "completion:after");
227
+ return yield* save({
228
+ _tag: "Proposed",
229
+ proposal: progress.proposal,
230
+ attempt: progress.attempt,
231
+ purpose: progress.purpose,
232
+ applied: progress.applied
233
+ }, "rebase:before", "rebase:after");
234
+ }
235
+ const proposal = progress.proposal;
236
+ if (proposal === null) return yield* CheckpointError.make({ reason: "corrupt" });
237
+ if (suppression === null) {
238
+ const latest = yield* options.loadSource(intent).pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));
239
+ if (latest === null) return yield* ProcessingError.make({ reason: "source-changed" });
240
+ if (Schema.is(Invalidation)(latest)) return yield* suppress(latest);
241
+ yield* validateSource(intent, latest, limits);
242
+ yield* validateEvidence(latest, proposal);
243
+ }
244
+ const value = yield* Schema.decodeUnknownEffect(options.proposal)(proposal.value);
245
+ const current = yield* (yield* MemoryReader).get(intent.target);
246
+ const applied = progress.applied === null ? null : yield* MemoryDocument.restore(intent.target.namespace, progress.applied);
247
+ const cleanup = suppression !== null && applied !== null;
248
+ const mergeInput = {
249
+ intent,
250
+ proposal: {
251
+ value,
252
+ evidence: proposal.evidence
253
+ },
254
+ current
255
+ };
256
+ const candidate = cleanup ? yield* options.cleanup({
257
+ ...mergeInput,
258
+ suppression,
259
+ applied
260
+ }) : yield* options.merge(mergeInput);
261
+ const decision = yield* Schema.decodeEffect(Decision)(candidate);
262
+ if (cleanup && decision._tag === "Reject") return yield* ProcessingError.make({ reason: "cleanup-rejected" });
263
+ if (decision._tag === "NoChange" || decision._tag === "Reject") return yield* save(completed(progress, cleanup ? "suppressed" : decision._tag === "Reject" ? "rejected" : "no-change", cleanup, !cleanup && decision._tag === "NoChange" && current !== null ? current : void 0), cleanup ? "cleanup:before" : "completion:before", cleanup ? "cleanup:after" : "completion:after");
264
+ if (decision._tag === "Withdraw" && current === null) return yield* save(completed(progress, cleanup ? "suppressed" : "no-change", cleanup), "completion:before", "completion:after");
265
+ const purpose = cleanup ? "cleanup" : "remember";
266
+ const attempt = progress.attempt + 1;
267
+ const key = intent.target;
268
+ return yield* save({
269
+ _tag: "Prepared",
270
+ proposal,
271
+ applied,
272
+ attempt,
273
+ purpose,
274
+ command: yield* Schema.decodeUnknownEffect(MemoryWrite.Wire)({
275
+ ...decision,
276
+ key,
277
+ operationId: operationId(intent, purpose, attempt),
278
+ expectedRevision: current?.source.revision ?? null
279
+ })
280
+ }, cleanup ? "cleanup:before" : "command:before", cleanup ? "cleanup:after" : "command:after");
281
+ }).pipe(Effect.timeoutOrElse({
282
+ duration: limits.timeoutMillis,
283
+ orElse: () => ProcessingError.make({ reason: "timeout" })
284
+ }));
285
+ }) };
286
+ };
287
+ //#endregion
288
+ export { Decision, Limits, SourceSnapshot, admit, invalidate, make, Remembering_exports as t };
289
+
290
+ //# sourceMappingURL=Remembering.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Remembering.mjs","names":["Protocol.Source","Protocol.Invalidation","Protocol.Checkpoint","Protocol.MutationFailpoint","Protocol.Proposal"],"sources":["../../src/capabilities/Remembering.ts"],"sourcesContent":["import { Effect, Encoding, Schema } from \"effect\";\n\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport type * as MemoryNamespace from \"../core/MemoryNamespace.ts\";\nimport { MemoryContent, MemorySourceReference } from \"../core/MemoryReference.ts\";\nimport {\n MemoryDocument,\n MemoryKey,\n MemoryReader,\n MemoryScope,\n MemoryWrite,\n MemoryWriter,\n} from \"../core/MemoryStore.ts\";\nimport * as Protocol from \"../core/RememberingStore.ts\";\n\nexport class Limits extends Schema.Class<Limits>(\"@effect-agent/remembering/Limits\")({\n maxSourceBytes: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 4_194_304 })),\n maxProposalBytes: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 1_048_576 })),\n timeoutMillis: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 300_000 })),\n}) {}\n\nexport class SourceSnapshot extends Schema.Class<SourceSnapshot>(\n \"@effect-agent/remembering/SourceSnapshot\",\n)({\n source: Protocol.Source,\n text: Schema.String.check(Schema.isMaxLength(4_194_304)),\n}) {}\n\nconst SourceResult = Schema.NullOr(Schema.Union([SourceSnapshot, Protocol.Invalidation]));\n\n/** Application-authorized output. The coordinator binds key, operation ID and expected revision.\n * Fact acceptance, sharing scopes, profile schema and source-aware merging remain application code.\n */\nexport const Decision = Schema.Union([\n Schema.TaggedStruct(\"Put\", {\n locator: MemorySourceReference.fields.locator,\n content: MemoryContent,\n scopes: Schema.Array(MemoryScope).check(Schema.isMaxLength(128)),\n }),\n Schema.TaggedStruct(\"Withdraw\", { reason: Schema.String.check(Schema.isMaxLength(4_096)) }),\n Schema.TaggedStruct(\"NoChange\", {}),\n Schema.TaggedStruct(\"Reject\", {}),\n]);\n\nexport type Decision = typeof Decision.Type;\n\nexport interface MergeInput<Value, S extends MemoryNamespace.Any, T extends MemoryNamespace.Any> {\n readonly intent: Protocol.Intent<S, T>;\n readonly proposal: Protocol.Extracted<Value>;\n readonly current: MemoryDocument<T> | null;\n}\n\nexport interface CleanupInput<\n Value,\n S extends MemoryNamespace.Any,\n T extends MemoryNamespace.Any,\n> extends MergeInput<Value, S, T> {\n readonly suppression: Protocol.Invalidation;\n readonly applied: MemoryDocument<T>;\n}\n\nconst equal = (left: unknown, right: unknown): boolean =>\n JSON.stringify(left) === JSON.stringify(right);\n\nconst sameKey = (left: MemoryKey, right: MemoryKey): boolean =>\n left.id === right.id && left.namespace.address === right.namespace.address;\n\nconst encodeIntent = Schema.encodeSync(Protocol.Intent.Wire);\n\nconst validateSource = Effect.fn(\"Remembering.validateSource\")(function* (\n intent: Protocol.Intent,\n snapshot: SourceSnapshot,\n limits: Limits,\n) {\n const source = yield* Schema.decodeEffect(SourceSnapshot)(snapshot).pipe(\n Effect.mapError(() => Protocol.ProcessingError.make({ reason: \"invalid-input\" })),\n );\n\n const actual = yield* Schema.encodeEffect(Protocol.Source)(source.source);\n const expected = yield* Schema.encodeEffect(Protocol.Source)(intent.source);\n\n if (!equal(actual, expected))\n return yield* Protocol.ProcessingError.make({ reason: \"source-changed\" });\n if (utf8ByteLength(source.text) > limits.maxSourceBytes)\n return yield* Protocol.ProcessingError.make({ reason: \"budget\" });\n\n return source;\n});\n\nconst validateEvidence = Effect.fn(\"Remembering.validateEvidence\")(function* (\n source: SourceSnapshot,\n proposal: Protocol.Proposal,\n) {\n const bytes = Encoding.encodeHex(source.text);\n\n for (const evidence of proposal.evidence) {\n const quote = Encoding.encodeHex(evidence.quote);\n\n if (\n evidence.source.id !== source.source.key.id ||\n evidence.source.revision !== source.source.revision ||\n evidence.source.locator !== source.source.locator ||\n evidence.endByte <= evidence.startByte ||\n evidence.endByte > bytes.length / 2 ||\n quote.length / 2 !== evidence.endByte - evidence.startByte ||\n quote !== bytes.slice(evidence.startByte * 2, evidence.endByte * 2)\n )\n return yield* Protocol.ProcessingError.make({ reason: \"invalid-evidence\" });\n }\n});\n\nconst validateCheckpoint = Effect.fn(\"Remembering.validateCheckpoint\")(function* <\n S extends MemoryNamespace.Any,\n T extends MemoryNamespace.Any,\n>(\n intent: Protocol.Intent<S, T>,\n input: Protocol.Checkpoint,\n): Effect.fn.Return<Protocol.BoundCheckpoint<S, T>, Protocol.CheckpointError> {\n const checkpoint = yield* Schema.decodeEffect(Protocol.Checkpoint)(input).pipe(\n Effect.mapError(() => Protocol.CheckpointError.make({ reason: \"corrupt\" })),\n );\n\n if (\n !equal(encodeIntent(intent), encodeIntent(checkpoint.intent)) ||\n (checkpoint.suppression !== null && !sameKey(checkpoint.suppression.source, intent.source.key))\n )\n return yield* Protocol.CheckpointError.make({ reason: \"corrupt\" });\n const progress = checkpoint.progress;\n\n if (\n progress._tag !== \"Pending\" &&\n progress.applied !== null &&\n !sameKey(progress.applied.key, intent.target)\n )\n return yield* Protocol.CheckpointError.make({ reason: \"corrupt\" });\n if (\n progress._tag === \"Prepared\" &&\n (!sameKey(progress.command.key, intent.target) ||\n progress.command.operationId !== operationId(intent, progress.purpose, progress.attempt))\n )\n return yield* Protocol.CheckpointError.make({ reason: \"corrupt\" });\n\n const applied =\n progress._tag === \"Pending\" || progress.applied === null\n ? null\n : yield* MemoryDocument.restore(intent.target.namespace, progress.applied).pipe(\n Effect.mapError(() => Protocol.CheckpointError.make({ reason: \"corrupt\" })),\n );\n\n const boundProgress: Protocol.Progress<T> =\n progress._tag === \"Pending\"\n ? progress\n : progress._tag === \"Prepared\"\n ? {\n ...progress,\n applied,\n command: MemoryWrite.make({ ...progress.command, key: intent.target }),\n }\n : { ...progress, applied };\n\n const suppression: Protocol.BoundInvalidation<S> | null =\n checkpoint.suppression === null\n ? null\n : Object.assign(checkpoint.suppression, {\n source: MemoryKey.make({\n ...checkpoint.suppression.source,\n namespace: intent.source.key.namespace,\n }),\n });\n\n return Object.assign(checkpoint, { intent, progress: boundProgress, suppression });\n});\n\nconst operationId = (\n intent: Protocol.Intent,\n purpose: \"remember\" | \"cleanup\",\n attempt: number,\n): string => `remembering/${intent.id}/${purpose}/${attempt}`;\n\nconst completed = (\n progress: Protocol.Progress,\n outcome: \"applied\" | \"no-change\" | \"rejected\" | \"suppressed\",\n cleaned: boolean,\n applied?: MemoryDocument,\n): Protocol.Progress => ({\n _tag: \"Completed\",\n proposal: progress._tag === \"Pending\" ? null : progress.proposal,\n attempt: progress._tag === \"Pending\" ? 0 : progress.attempt,\n applied: applied ?? (progress._tag === \"Pending\" ? null : progress.applied),\n outcome,\n cleaned,\n});\n\n/** Foreground admission performs only one durable port call. Bind authority and idempotency\n * from the trusted invocation before calling; a queued receipt is returned only after commit.\n */\nexport const admit = Effect.fn(\"Remembering.admit\")(function* <E, R>(\n store: Protocol.Store<E, R>,\n intent: Protocol.Intent,\n) {\n const checked = yield* Schema.decodeEffect(Protocol.Intent.Wire)(intent).pipe(\n Effect.mapError(() => Protocol.AdmissionError.make({ reason: \"invalid-input\" })),\n );\n\n const failpoint = yield* Protocol.MutationFailpoint;\n\n yield* failpoint.hit(\"admission:before\");\n const receipt = yield* store.admit(checked);\n\n yield* failpoint.hit(\"admission:after\");\n\n return receipt;\n});\n\n/** Source owners await this durable suppression receipt before acknowledging edit/deletion/Forget.\n * Scheduling all affected retained references and conditional cleanup is the host's obligation.\n */\nexport const invalidate = Effect.fn(\"Remembering.invalidate\")(function* <E, R>(\n store: Protocol.Store<E, R>,\n event: Protocol.Invalidation,\n) {\n const checked = yield* Schema.decodeEffect(Protocol.Invalidation)(event).pipe(\n Effect.mapError(() => Protocol.AdmissionError.make({ reason: \"invalid-input\" })),\n );\n\n const failpoint = yield* Protocol.MutationFailpoint;\n\n yield* failpoint.hit(\"suppression:before\");\n const receipt = yield* store.invalidate(checked);\n\n yield* failpoint.hit(\"suppression:after\");\n\n return receipt;\n});\n\n/** Define one application learner. Extraction may call native Effect AI LanguageModel directly;\n * callback/model/schema requirements and errors remain in the returned Effect. No model owns\n * authority, source loading, fact acceptance, profile representation or sharing policy.\n * These are Effect-composition callbacks: they can yield application Context services, and advance\n * retains every callback's E/R. The framework neither acquires nor provides application policy.\n *\n * advance is finite: it extracts, prepares, dispatches, or rebases at most once. The host calls it\n * again when ready. A proposal is persisted before any target read; a complete command is saved\n * before dispatch. Unknown outcomes leave that command untouched. Only MemoryConflict rebases.\n * Cleanup receives the immutable proposal, original applied document and latest target so it can\n * remove that contribution without overwriting intervening human corrections.\n *\n * loadSource returns an explicit Invalidation when source authority changed or was revoked; its\n * suppression is committed before processing returns. null means absent on an initial load. A\n * later null or a changed snapshot without an authority event fails source-changed and retains\n * the obligation. Sources must keep revision content immutable. Evidence is checked again before\n * preparing a new command. A saved Prepared command may already have executed, so it never calls\n * loadSource and must reconcile even during a source outage. Source owners durably invalidate\n * before acknowledging edits, and authoritative recall filters suppression while cleanup runs.\n * No source text, proposal, authority identity, or extracted values are added to tracing spans.\n */\nexport const make = <\n S extends MemoryNamespace.Any,\n T extends MemoryNamespace.Any,\n Value,\n Encoded extends Schema.Json,\n DecodeR,\n EncodeR,\n SourceE,\n SourceR,\n ExtractE,\n ExtractR,\n MergeE,\n MergeR,\n CleanupE,\n CleanupR,\n>(options: {\n readonly proposal: Schema.Codec<Value, Encoded, DecodeR, EncodeR>;\n readonly loadSource: (\n intent: Protocol.Intent<S, T>,\n ) => Effect.Effect<SourceSnapshot | Protocol.Invalidation | null, SourceE, SourceR>;\n readonly extract: (\n source: SourceSnapshot,\n intent: Protocol.Intent<S, T>,\n ) => Effect.Effect<Protocol.Extracted<Value> | null, ExtractE, ExtractR>;\n readonly merge: (input: MergeInput<Value, S, T>) => Effect.Effect<Decision, MergeE, MergeR>;\n readonly cleanup: (\n input: CleanupInput<Value, S, T>,\n ) => Effect.Effect<Decision, CleanupE, CleanupR>;\n}) => {\n const advance = Effect.fn(\"Remembering.advance\")(function* <StoreE, StoreR>(input: {\n readonly intent: Protocol.Intent<S, T>;\n readonly store: Protocol.Store<StoreE, StoreR>;\n readonly limits: Limits;\n /** Stops new extraction only. Saved commands, rebase and suppression cleanup still run. */\n readonly extractionEnabled: boolean;\n }) {\n const limits = yield* Schema.decodeEffect(Limits)(input.limits).pipe(\n Effect.mapError(() => Protocol.ProcessingError.make({ reason: \"invalid-input\" })),\n );\n\n const decodedIntent = yield* Schema.decodeUnknownEffect(Protocol.Intent.Wire)(\n input.intent,\n ).pipe(Effect.mapError(() => Protocol.ProcessingError.make({ reason: \"invalid-input\" })));\n\n const intent: Protocol.Intent<S, T> = Object.assign(decodedIntent, {\n source: {\n ...decodedIntent.source,\n key: MemoryKey.make({\n ...decodedIntent.source.key,\n namespace: input.intent.source.key.namespace,\n }),\n },\n target: MemoryKey.make({ ...decodedIntent.target, namespace: input.intent.target.namespace }),\n });\n\n const run = Effect.gen(function* () {\n const checkpoint = yield* input.store\n .read(intent)\n .pipe(Effect.flatMap((value) => validateCheckpoint(intent, value)));\n\n const progress = checkpoint.progress;\n const suppression = checkpoint.suppression;\n\n if (\n progress._tag === \"Proposed\" &&\n suppression === null &&\n utf8ByteLength(JSON.stringify(progress.proposal)) > limits.maxProposalBytes\n )\n return yield* Protocol.ProcessingError.make({ reason: \"budget\" });\n const failpoint = yield* Protocol.MutationFailpoint;\n\n const save = Effect.fn(\"Remembering.save\")(function* (\n next: Protocol.Progress,\n before: Protocol.MutationPoint,\n after: Protocol.MutationPoint,\n ) {\n yield* failpoint.hit(before);\n\n const stored = yield* input.store.save({\n intent,\n expectedVersion: checkpoint.version,\n progress: next,\n });\n\n yield* failpoint.hit(after);\n\n return yield* validateCheckpoint(intent, stored);\n });\n\n const suppress = Effect.fn(\"Remembering.suppress\")(function* (event: Protocol.Invalidation) {\n if (!sameKey(event.source, intent.source.key))\n return yield* Protocol.ProcessingError.make({ reason: \"invalid-input\" });\n yield* invalidate(input.store, event);\n\n return yield* input.store\n .read(intent)\n .pipe(Effect.flatMap((value) => validateCheckpoint(intent, value)));\n });\n\n if (progress._tag === \"Completed\" && (suppression === null || progress.cleaned))\n return checkpoint;\n if (\n suppression !== null &&\n progress._tag !== \"Prepared\" &&\n (progress._tag === \"Pending\" || progress.applied === null)\n )\n return yield* save(\n completed(progress, \"suppressed\", true),\n \"completion:before\",\n \"completion:after\",\n );\n\n if (progress._tag === \"Pending\") {\n if (!input.extractionEnabled)\n return yield* Protocol.ProcessingError.make({ reason: \"disabled\" });\n\n const snapshot = yield* options\n .loadSource(intent)\n .pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));\n\n if (snapshot === null)\n return yield* save(\n completed(progress, \"rejected\", false),\n \"completion:before\",\n \"completion:after\",\n );\n if (Schema.is(Protocol.Invalidation)(snapshot)) return yield* suppress(snapshot);\n const source = yield* validateSource(intent, snapshot, limits);\n const extracted = yield* options.extract(source, intent);\n\n if (extracted === null)\n return yield* save(\n completed(progress, \"no-change\", false),\n \"completion:before\",\n \"completion:after\",\n );\n const value = yield* Schema.encodeEffect(options.proposal)(extracted.value);\n\n const proposal = yield* Schema.decodeUnknownEffect(Protocol.Proposal)({\n version: 1,\n value,\n evidence: extracted.evidence,\n });\n\n if (utf8ByteLength(JSON.stringify(proposal)) > limits.maxProposalBytes)\n return yield* Protocol.ProcessingError.make({ reason: \"budget\" });\n yield* validateEvidence(source, proposal);\n\n const latest = yield* options\n .loadSource(intent)\n .pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));\n\n if (latest === null)\n return yield* Protocol.ProcessingError.make({ reason: \"source-changed\" });\n if (Schema.is(Protocol.Invalidation)(latest)) return yield* suppress(latest);\n yield* validateSource(intent, latest, limits);\n if (latest.text !== source.text)\n return yield* Protocol.ProcessingError.make({ reason: \"source-changed\" });\n\n return yield* save(\n { _tag: \"Proposed\", proposal, attempt: 0, purpose: \"remember\", applied: null },\n \"proposal:before\",\n \"proposal:after\",\n );\n }\n\n if (progress._tag === \"Prepared\") {\n const writer = yield* MemoryWriter;\n const command = MemoryWrite.make({ ...progress.command, key: intent.target });\n\n const outcome = yield* writer.change(command).pipe(\n Effect.map((document) => ({ _tag: \"Written\" as const, document })),\n Effect.catchTag(\"MemoryConflict\", () => Effect.succeed({ _tag: \"Conflict\" as const })),\n Effect.catchTag(\"MemoryWithdrawn\", () => Effect.succeed({ _tag: \"Withdrawn\" as const })),\n );\n\n if (outcome._tag === \"Written\") {\n return yield* save(\n completed(\n progress,\n progress.purpose === \"cleanup\" ? \"suppressed\" : \"applied\",\n progress.purpose === \"cleanup\",\n progress.purpose === \"remember\" ? outcome.document : undefined,\n ),\n \"completion:before\",\n \"completion:after\",\n );\n }\n if (\n outcome._tag === \"Withdrawn\" ||\n (suppression !== null && progress.purpose === \"remember\")\n )\n return yield* save(\n completed(\n progress,\n suppression !== null ? \"suppressed\" : \"rejected\",\n suppression !== null,\n ),\n \"completion:before\",\n \"completion:after\",\n );\n\n return yield* save(\n {\n _tag: \"Proposed\",\n proposal: progress.proposal,\n attempt: progress.attempt,\n purpose: progress.purpose,\n applied: progress.applied,\n },\n \"rebase:before\",\n \"rebase:after\",\n );\n }\n\n const proposal = progress.proposal;\n\n if (proposal === null) return yield* Protocol.CheckpointError.make({ reason: \"corrupt\" });\n if (suppression === null) {\n const latest = yield* options\n .loadSource(intent)\n .pipe(Effect.flatMap(Schema.decodeUnknownEffect(SourceResult)));\n\n if (latest === null)\n return yield* Protocol.ProcessingError.make({ reason: \"source-changed\" });\n if (Schema.is(Protocol.Invalidation)(latest)) return yield* suppress(latest);\n yield* validateSource(intent, latest, limits);\n yield* validateEvidence(latest, proposal);\n }\n const value = yield* Schema.decodeUnknownEffect(options.proposal)(proposal.value);\n const reader = yield* MemoryReader;\n const current = yield* reader.get(intent.target);\n\n const applied =\n progress.applied === null\n ? null\n : yield* MemoryDocument.restore(intent.target.namespace, progress.applied);\n\n const cleanup = suppression !== null && applied !== null;\n const mergeInput = { intent, proposal: { value, evidence: proposal.evidence }, current };\n\n const candidate = cleanup\n ? yield* options.cleanup({ ...mergeInput, suppression, applied })\n : yield* options.merge(mergeInput);\n\n const decision = yield* Schema.decodeEffect(Decision)(candidate);\n\n if (cleanup && decision._tag === \"Reject\")\n return yield* Protocol.ProcessingError.make({ reason: \"cleanup-rejected\" });\n if (decision._tag === \"NoChange\" || decision._tag === \"Reject\")\n return yield* save(\n completed(\n progress,\n cleanup ? \"suppressed\" : decision._tag === \"Reject\" ? \"rejected\" : \"no-change\",\n cleanup,\n !cleanup && decision._tag === \"NoChange\" && current !== null ? current : undefined,\n ),\n cleanup ? \"cleanup:before\" : \"completion:before\",\n cleanup ? \"cleanup:after\" : \"completion:after\",\n );\n if (decision._tag === \"Withdraw\" && current === null)\n return yield* save(\n completed(progress, cleanup ? \"suppressed\" : \"no-change\", cleanup),\n \"completion:before\",\n \"completion:after\",\n );\n const purpose = cleanup ? \"cleanup\" : \"remember\";\n const attempt = progress.attempt + 1;\n const key = intent.target;\n\n const write = yield* Schema.decodeUnknownEffect(MemoryWrite.Wire)({\n ...decision,\n key,\n operationId: operationId(intent, purpose, attempt),\n expectedRevision: current?.source.revision ?? null,\n });\n\n return yield* save(\n { _tag: \"Prepared\", proposal, applied, attempt, purpose, command: write },\n cleanup ? \"cleanup:before\" : \"command:before\",\n cleanup ? \"cleanup:after\" : \"command:after\",\n );\n });\n\n return yield* run.pipe(\n Effect.timeoutOrElse({\n duration: limits.timeoutMillis,\n orElse: () => Protocol.ProcessingError.make({ reason: \"timeout\" }),\n }),\n );\n });\n\n return { advance };\n};\n"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { c as ThreadLimitExceeded, i as ThreadEncodingError, s as ThreadHistoryDiverged, t as Store, u as ThreadNotFound } from "../Thread-DOBQ0QUY.mjs";
2
+ import { RedactionError, Redactor } from "./Redaction.mjs";
3
+ import { ApprovalAudit, ApprovalAuditLimitExceeded, ApprovalDecisionMismatch, ApprovalRequestDraft, ApprovalResolver, ApprovalResolverError } from "./Approval.mjs";
4
+ import { BudgetExceeded, UsageBudgetNode } from "./Budget.mjs";
5
+ import { M as RunOptions, R as RunSchedulingHook, _ as RunBudgetHook, b as RunContextHook, g as RunApprovalRequest, h as RunApprovalHook, j as RunInputHook, w as RunContextRequest } from "../RunOptions-g1aigcKI.mjs";
6
+ import { RunCommandQueue } from "./Commands.mjs";
7
+ import { Prompt } from "effect/unstable/ai";
8
+ import { Effect, Schema } from "effect";
9
+ declare namespace RunHooks_d_exports {
10
+ export { ApprovalAdapterError, BudgetAdapterError, EnginePromptTransform, RunApprovalAdapterPolicy, RunApprovalAdapterPolicySchema, ThreadAdapterError, toDurableRunApprovalHook, toRunApprovalHook, toRunBudgetHook, toRunContextHook, toRunInputHook, toRunSchedulingHook, toRunThreadOptions };
11
+ }
12
+ declare const ApprovalAdapterError_base: Schema.Class<ApprovalAdapterError, Schema.TaggedStruct<"ApprovalAdapterError", {
13
+ readonly message: Schema.String;
14
+ }>, import("effect/Cause").YieldableError>;
15
+ /** Capability policy could not be normalized into the bounded approval request Schema. */
16
+ declare class ApprovalAdapterError extends ApprovalAdapterError_base {}
17
+ declare const BudgetAdapterError_base: Schema.Class<BudgetAdapterError, Schema.TaggedStruct<"BudgetAdapterError", {
18
+ readonly message: Schema.String;
19
+ }>, import("effect/Cause").YieldableError>;
20
+ /** Engine usage data did not satisfy the non-negative budget delta Schema. */
21
+ declare class BudgetAdapterError extends BudgetAdapterError_base {}
22
+ /** Adapt the richer audited FIFO commands to the engine's safe-seam input hook. */
23
+ declare const toRunInputHook: (queue: RunCommandQueue) => RunInputHook<never, never>;
24
+ /** Explicit policy needed to turn a native Effect AI approval request into an audit request. */
25
+ interface RunApprovalAdapterPolicy {
26
+ readonly expiresInMillis: number;
27
+ readonly risk: ApprovalRequestDraft["risk"];
28
+ readonly denial: ApprovalRequestDraft["denial"];
29
+ readonly actionSummary: (request: RunApprovalRequest) => string;
30
+ readonly resourceTargets: (request: RunApprovalRequest) => ReadonlyArray<string>;
31
+ }
32
+ /** Adapt native Effect AI approval parts through structural redaction, audit, and timeout policy. */
33
+ declare const toRunApprovalHook: (policy: RunApprovalAdapterPolicy) => RunApprovalHook<ApprovalResolverError | ApprovalAuditLimitExceeded | ApprovalDecisionMismatch | ApprovalAdapterError | RedactionError, ApprovalResolver | ApprovalAudit | Redactor>;
34
+ /**
35
+ * Durable variant of `toRunApprovalHook` (P5 plan §2.6): the durable coordinator consults this
36
+ * delegate for policy-AUTO decisions only, after its recorded-decision lookup misses. It reuses
37
+ * the exact P2 approval stack — `ApprovalRequestDraft` policy metadata, structural redaction,
38
+ * audit sink, expiry/timeout policy — but differs in two durable-specific ways:
39
+ *
40
+ * 1. The capability services (`ApprovalResolver | ApprovalAudit | Redactor`) are captured up
41
+ * front, so the returned hook is `RunApprovalHook<never, never>` — the shape the
42
+ * coordinator's `DurableApprovalResolver` reference accepts without leaking capability
43
+ * requirements into the durable runtime Layer.
44
+ * 2. It FAILS CLOSED into `unresolved`: any adapter, audit, redaction, or resolver failure
45
+ * defers the decision to the durable suspension + `resolveApproval` path instead of
46
+ * approving, denying, or crashing the Attempt on a transient policy fault. Explicit
47
+ * policy denials (including the P2 timeout-denial for `denial: "terminal"`) still deny.
48
+ */
49
+ declare const toDurableRunApprovalHook: (policy: RunApprovalAdapterPolicy) => Effect.Effect<RunApprovalHook<never, never>, never, ApprovalAudit | ApprovalResolver | Redactor>;
50
+ /** Adapt one hierarchical budget node to the engine's usage accounting seam. */
51
+ declare const toRunBudgetHook: (budget: UsageBudgetNode) => RunBudgetHook<BudgetExceeded | BudgetAdapterError, never>;
52
+ type ThreadAdapterError = ThreadNotFound | ThreadLimitExceeded | ThreadEncodingError | ThreadHistoryDiverged;
53
+ /**
54
+ * Advanced integration for an existing Thread.Store snapshot. Ordinary Runs automatically
55
+ * retain history through ThreadHistory.layer; use this helper only for explicit snapshot hooks.
56
+ * Share that Layer's Thread.Store owner. PersistentHistory rejects these competing hooks.
57
+ * The snapshot is explicit initial Prompt data. Each inline onHistory call immediately records
58
+ * its append-only suffix, including updates from Runs that later fail or are interrupted. Writes
59
+ * already made remain in the snapshot. Callback errors stop the Run as ThreadAdapterError;
60
+ * snapshot lookup can fail with ThreadNotFound before execution.
61
+ * Native Effect AI parts and provider options are preserved without a role/text projection.
62
+ * For retaining only successful Runs, provide ThreadHistory through PersistentHistory.layer
63
+ * with a memory or SQLite store instead. This adapter does not provide durable recovery.
64
+ */
65
+ declare const toRunThreadOptions: (threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">, runId: string & import("effect/Brand").Brand<"@effect-agent/core/RunId">) => Effect.Effect<Pick<RunOptions<ThreadAdapterError, never>, "history" | "onHistory" | "threadId">, ThreadNotFound, Store>;
66
+ /** Prompt transform used by the adapter; the engine retains the authoritative source separately. */
67
+ interface EnginePromptTransform<Error = never, Requirements = never> {
68
+ readonly prepare: (source: Prompt.Prompt, request: RunContextRequest) => Effect.Effect<Prompt.Prompt, Error, Requirements>;
69
+ }
70
+ /** Adapt a prompt-only context transform without granting it authority over engine source history. */
71
+ declare const toRunContextHook: <Error, Requirements>(transform: EnginePromptTransform<Error, Requirements>) => RunContextHook<Error, Requirements>;
72
+ /** Scheduling values are structurally aligned and only reduce finite concurrency. */
73
+ declare const toRunSchedulingHook: (runOverride: RunSchedulingHook["runOverride"], toolRequiresSequential?: (toolName: string) => boolean) => RunSchedulingHook;
74
+ /** Validate policy configuration at adapter construction boundaries. */
75
+ declare const RunApprovalAdapterPolicySchema: Schema.Struct<{
76
+ readonly expiresInMillis: Schema.Int;
77
+ readonly risk: Schema.Literals<readonly ["low", "medium", "high", "critical"]>;
78
+ readonly denial: Schema.Literals<readonly ["terminal", "recoverable"]>;
79
+ }>;
80
+ //#endregion
81
+ export { ApprovalAdapterError, BudgetAdapterError, EnginePromptTransform, RunApprovalAdapterPolicy, RunApprovalAdapterPolicySchema, ThreadAdapterError, RunHooks_d_exports as t, toDurableRunApprovalHook, toRunApprovalHook, toRunBudgetHook, toRunContextHook, toRunInputHook, toRunSchedulingHook, toRunThreadOptions };
82
+ //# sourceMappingURL=RunHooks.d.mts.map
@@ -0,0 +1,144 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { Store, toPrompt } from "../core/Thread.mjs";
3
+ import { ApprovalRequestDraft, makeApprovalRequest, requestApproval } from "./Approval.mjs";
4
+ import { UsageDelta } from "./Budget.mjs";
5
+ import { Clock, DateTime, Effect, Schema } from "effect";
6
+ //#region src/capabilities/RunHooks.ts
7
+ var RunHooks_exports = /* @__PURE__ */ __exportAll({
8
+ ApprovalAdapterError: () => ApprovalAdapterError,
9
+ BudgetAdapterError: () => BudgetAdapterError,
10
+ RunApprovalAdapterPolicySchema: () => RunApprovalAdapterPolicySchema,
11
+ toDurableRunApprovalHook: () => toDurableRunApprovalHook,
12
+ toRunApprovalHook: () => toRunApprovalHook,
13
+ toRunBudgetHook: () => toRunBudgetHook,
14
+ toRunContextHook: () => toRunContextHook,
15
+ toRunInputHook: () => toRunInputHook,
16
+ toRunSchedulingHook: () => toRunSchedulingHook,
17
+ toRunThreadOptions: () => toRunThreadOptions
18
+ });
19
+ /** Capability policy could not be normalized into the bounded approval request Schema. */
20
+ var ApprovalAdapterError = class extends Schema.TaggedError()("ApprovalAdapterError", { message: Schema.String }) {};
21
+ /** Engine usage data did not satisfy the non-negative budget delta Schema. */
22
+ var BudgetAdapterError = class extends Schema.TaggedError()("BudgetAdapterError", { message: Schema.String }) {};
23
+ /** Adapt the richer audited FIFO commands to the engine's safe-seam input hook. */
24
+ const toRunInputHook = (queue) => ({
25
+ drain: (policy) => queue.drain(policy).pipe(Effect.map((commands) => commands.map((command) => ({
26
+ kind: command._tag === "SteeringCommand" ? "steering" : "follow-up",
27
+ input: command.content
28
+ })))),
29
+ end: () => queue.shutdown
30
+ });
31
+ /** Adapt native Effect AI approval parts through structural redaction, audit, and timeout policy. */
32
+ const toRunApprovalHook = (policy) => ({ request: (engineRequest) => Effect.gen(function* () {
33
+ const validatedPolicy = yield* Schema.decodeEffect(RunApprovalAdapterPolicySchema)(policy).pipe(Effect.mapError((error) => ApprovalAdapterError.make({ message: `Approval adapter policy is invalid: ${error.message}` })));
34
+ const now = yield* Clock.currentTimeMillis;
35
+ const metadata = yield* Effect.try({
36
+ try: () => ({
37
+ actionSummary: policy.actionSummary(engineRequest),
38
+ resourceTargets: policy.resourceTargets(engineRequest)
39
+ }),
40
+ catch: () => ApprovalAdapterError.make({ message: "Approval policy failed while describing the native Tool request" })
41
+ });
42
+ const draft = yield* Schema.decodeEffect(ApprovalRequestDraft)({
43
+ requestId: engineRequest.request.approvalId,
44
+ runId: engineRequest.runId,
45
+ threadId: engineRequest.threadId,
46
+ toolCallId: engineRequest.toolCallId,
47
+ toolName: engineRequest.toolName,
48
+ actionSummary: metadata.actionSummary,
49
+ resourceTargets: metadata.resourceTargets,
50
+ risk: validatedPolicy.risk,
51
+ expiresAt: DateTime.formatIso(DateTime.toUtc(DateTime.makeUnsafe(now + validatedPolicy.expiresInMillis))),
52
+ denial: validatedPolicy.denial
53
+ }).pipe(Effect.mapError((error) => ApprovalAdapterError.make({ message: `Approval adapter policy is invalid: ${error.message}` })));
54
+ const request = yield* makeApprovalRequest(draft, engineRequest.parameters);
55
+ const decision = yield* requestApproval(request);
56
+ if (decision._tag === "ApprovalApproved") return { _tag: "approved" };
57
+ if (decision.timedOut && request.denial === "recoverable") return {
58
+ _tag: "unresolved",
59
+ reason: decision.reason
60
+ };
61
+ return {
62
+ _tag: "denied",
63
+ reason: decision.reason
64
+ };
65
+ }) });
66
+ /**
67
+ * Durable variant of `toRunApprovalHook` (P5 plan §2.6): the durable coordinator consults this
68
+ * delegate for policy-AUTO decisions only, after its recorded-decision lookup misses. It reuses
69
+ * the exact P2 approval stack — `ApprovalRequestDraft` policy metadata, structural redaction,
70
+ * audit sink, expiry/timeout policy — but differs in two durable-specific ways:
71
+ *
72
+ * 1. The capability services (`ApprovalResolver | ApprovalAudit | Redactor`) are captured up
73
+ * front, so the returned hook is `RunApprovalHook<never, never>` — the shape the
74
+ * coordinator's `DurableApprovalResolver` reference accepts without leaking capability
75
+ * requirements into the durable runtime Layer.
76
+ * 2. It FAILS CLOSED into `unresolved`: any adapter, audit, redaction, or resolver failure
77
+ * defers the decision to the durable suspension + `resolveApproval` path instead of
78
+ * approving, denying, or crashing the Attempt on a transient policy fault. Explicit
79
+ * policy denials (including the P2 timeout-denial for `denial: "terminal"`) still deny.
80
+ */
81
+ const toDurableRunApprovalHook = Effect.fn("toDurableRunApprovalHook")(function* (policy) {
82
+ const services = yield* Effect.context();
83
+ const hook = toRunApprovalHook(policy);
84
+ return { request: (request) => hook.request(request).pipe(Effect.provideContext(services), Effect.catch((error) => Effect.succeed({
85
+ _tag: "unresolved",
86
+ reason: `Approval delegation failed (${error._tag}); the decision defers to the durable resolveApproval path`
87
+ }))) };
88
+ });
89
+ /** Adapt one hierarchical budget node to the engine's usage accounting seam. */
90
+ const toRunBudgetHook = (budget) => ({
91
+ guard: budget.guard,
92
+ consume: (delta) => Schema.decodeEffect(UsageDelta)({
93
+ modelCalls: delta.modelCalls,
94
+ inputTokens: delta.inputTokens,
95
+ outputTokens: delta.outputTokens,
96
+ cacheReadInputTokens: Math.max(0, delta.usage.inputTokens.cacheRead ?? 0),
97
+ cacheWriteInputTokens: Math.max(0, delta.usage.inputTokens.cacheWrite ?? 0),
98
+ toolCalls: delta.toolCalls,
99
+ costMicrousd: delta.costMicrousd
100
+ }).pipe(Effect.mapError((error) => BudgetAdapterError.make({ message: `Engine usage delta is invalid: ${error.message}` })), Effect.flatMap((usage) => budget.consume(usage)), Effect.asVoid)
101
+ });
102
+ /**
103
+ * Advanced integration for an existing Thread.Store snapshot. Ordinary Runs automatically
104
+ * retain history through ThreadHistory.layer; use this helper only for explicit snapshot hooks.
105
+ * Share that Layer's Thread.Store owner. PersistentHistory rejects these competing hooks.
106
+ * The snapshot is explicit initial Prompt data. Each inline onHistory call immediately records
107
+ * its append-only suffix, including updates from Runs that later fail or are interrupted. Writes
108
+ * already made remain in the snapshot. Callback errors stop the Run as ThreadAdapterError;
109
+ * snapshot lookup can fail with ThreadNotFound before execution.
110
+ * Native Effect AI parts and provider options are preserved without a role/text projection.
111
+ * For retaining only successful Runs, provide ThreadHistory through PersistentHistory.layer
112
+ * with a memory or SQLite store instead. This adapter does not provide durable recovery.
113
+ */
114
+ const toRunThreadOptions = Effect.fn("toRunThreadOptions")(function* (threadId, runId) {
115
+ const threads = yield* Store;
116
+ const snapshot = yield* threads.snapshot(threadId);
117
+ return {
118
+ threadId,
119
+ history: toPrompt(snapshot),
120
+ onHistory: (history) => threads.recordHistory(threadId, runId, history).pipe(Effect.asVoid)
121
+ };
122
+ });
123
+ /** Adapt a prompt-only context transform without granting it authority over engine source history. */
124
+ const toRunContextHook = (transform) => ({ prepare: (request) => transform.prepare(request.source, request).pipe(Effect.map((prompt) => ({ prompt }))) });
125
+ /** Scheduling values are structurally aligned and only reduce finite concurrency. */
126
+ const toRunSchedulingHook = (runOverride, toolRequiresSequential) => ({
127
+ runOverride,
128
+ ...toolRequiresSequential === void 0 ? {} : { toolRequiresSequential }
129
+ });
130
+ /** Validate policy configuration at adapter construction boundaries. */
131
+ const RunApprovalAdapterPolicySchema = Schema.Struct({
132
+ expiresInMillis: Schema.Int.check(Schema.isGreaterThan(0)),
133
+ risk: Schema.Literals([
134
+ "low",
135
+ "medium",
136
+ "high",
137
+ "critical"
138
+ ]),
139
+ denial: Schema.Literals(["terminal", "recoverable"])
140
+ });
141
+ //#endregion
142
+ export { ApprovalAdapterError, BudgetAdapterError, RunApprovalAdapterPolicySchema, RunHooks_exports as t, toDurableRunApprovalHook, toRunApprovalHook, toRunBudgetHook, toRunContextHook, toRunInputHook, toRunSchedulingHook, toRunThreadOptions };
143
+
144
+ //# sourceMappingURL=RunHooks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunHooks.mjs","names":["ConversationStore"],"sources":["../../src/capabilities/RunHooks.ts"],"sourcesContent":["import { Clock, DateTime, Effect, Schema } from \"effect\";\nimport type { Prompt } from \"effect/unstable/ai\";\n\nimport {\n type ThreadEncodingError,\n type ThreadHistoryDiverged,\n type ThreadLimitExceeded,\n type ThreadNotFound,\n toPrompt,\n Store as ConversationStore,\n} from \"../core/Thread.ts\";\nimport {\n type PreparedRunContext,\n type RunApprovalDecision,\n type RunApprovalHook,\n type RunApprovalRequest,\n type RunBudgetHook,\n type RunContextHook,\n type RunContextRequest,\n type RunInputHook,\n type RunOptions,\n type RunSchedulingHook,\n} from \"../engine/RunOptions.ts\";\nimport {\n type ApprovalAudit,\n type ApprovalAuditLimitExceeded,\n type ApprovalDecisionMismatch,\n ApprovalRequestDraft,\n type ApprovalResolver,\n type ApprovalResolverError,\n makeApprovalRequest,\n requestApproval,\n} from \"./Approval.ts\";\nimport { type BudgetExceeded, UsageDelta, type UsageBudgetNode } from \"./Budget.ts\";\nimport type { RunCommandQueue } from \"./Commands.ts\";\nimport type { RedactionError, Redactor } from \"./Redaction.ts\";\n\n/** Capability policy could not be normalized into the bounded approval request Schema. */\nexport class ApprovalAdapterError extends Schema.TaggedError<ApprovalAdapterError>()(\n \"ApprovalAdapterError\",\n { message: Schema.String },\n) {}\n\n/** Engine usage data did not satisfy the non-negative budget delta Schema. */\nexport class BudgetAdapterError extends Schema.TaggedError<BudgetAdapterError>()(\n \"BudgetAdapterError\",\n { message: Schema.String },\n) {}\n\n/** Adapt the richer audited FIFO commands to the engine's safe-seam input hook. */\nexport const toRunInputHook = (queue: RunCommandQueue): RunInputHook<never, never> => ({\n drain: (policy) =>\n queue.drain(policy).pipe(\n Effect.map((commands) =>\n commands.map((command) => ({\n kind: command._tag === \"SteeringCommand\" ? (\"steering\" as const) : (\"follow-up\" as const),\n input: command.content,\n })),\n ),\n ),\n end: () => queue.shutdown,\n});\n\n/** Explicit policy needed to turn a native Effect AI approval request into an audit request. */\nexport interface RunApprovalAdapterPolicy {\n readonly expiresInMillis: number;\n readonly risk: ApprovalRequestDraft[\"risk\"];\n readonly denial: ApprovalRequestDraft[\"denial\"];\n readonly actionSummary: (request: RunApprovalRequest) => string;\n readonly resourceTargets: (request: RunApprovalRequest) => ReadonlyArray<string>;\n}\n\n/** Adapt native Effect AI approval parts through structural redaction, audit, and timeout policy. */\nexport const toRunApprovalHook = (\n policy: RunApprovalAdapterPolicy,\n): RunApprovalHook<\n | ApprovalResolverError\n | ApprovalAuditLimitExceeded\n | ApprovalDecisionMismatch\n | ApprovalAdapterError\n | RedactionError,\n ApprovalResolver | ApprovalAudit | Redactor\n> => ({\n request: (engineRequest) =>\n Effect.gen(function* () {\n const validatedPolicy = yield* Schema.decodeEffect(RunApprovalAdapterPolicySchema)(\n policy,\n ).pipe(\n Effect.mapError((error) =>\n ApprovalAdapterError.make({\n message: `Approval adapter policy is invalid: ${error.message}`,\n }),\n ),\n );\n\n const now = yield* Clock.currentTimeMillis;\n\n const metadata = yield* Effect.try({\n try: () => ({\n actionSummary: policy.actionSummary(engineRequest),\n resourceTargets: policy.resourceTargets(engineRequest),\n }),\n catch: () =>\n ApprovalAdapterError.make({\n message: \"Approval policy failed while describing the native Tool request\",\n }),\n });\n\n const draft = yield* Schema.decodeEffect(ApprovalRequestDraft)({\n requestId: engineRequest.request.approvalId,\n runId: engineRequest.runId,\n threadId: engineRequest.threadId,\n toolCallId: engineRequest.toolCallId,\n toolName: engineRequest.toolName,\n actionSummary: metadata.actionSummary,\n resourceTargets: metadata.resourceTargets,\n risk: validatedPolicy.risk,\n expiresAt: DateTime.formatIso(\n DateTime.toUtc(DateTime.makeUnsafe(now + validatedPolicy.expiresInMillis)),\n ),\n denial: validatedPolicy.denial,\n }).pipe(\n Effect.mapError((error) =>\n ApprovalAdapterError.make({\n message: `Approval adapter policy is invalid: ${error.message}`,\n }),\n ),\n );\n\n const request = yield* makeApprovalRequest(draft, engineRequest.parameters);\n const decision = yield* requestApproval(request);\n\n if (decision._tag === \"ApprovalApproved\") {\n return { _tag: \"approved\" as const };\n }\n if (decision.timedOut && request.denial === \"recoverable\") {\n return {\n _tag: \"unresolved\" as const,\n reason: decision.reason,\n };\n }\n\n return {\n _tag: \"denied\" as const,\n reason: decision.reason,\n };\n }),\n});\n\n/**\n * Durable variant of `toRunApprovalHook` (P5 plan §2.6): the durable coordinator consults this\n * delegate for policy-AUTO decisions only, after its recorded-decision lookup misses. It reuses\n * the exact P2 approval stack — `ApprovalRequestDraft` policy metadata, structural redaction,\n * audit sink, expiry/timeout policy — but differs in two durable-specific ways:\n *\n * 1. The capability services (`ApprovalResolver | ApprovalAudit | Redactor`) are captured up\n * front, so the returned hook is `RunApprovalHook<never, never>` — the shape the\n * coordinator's `DurableApprovalResolver` reference accepts without leaking capability\n * requirements into the durable runtime Layer.\n * 2. It FAILS CLOSED into `unresolved`: any adapter, audit, redaction, or resolver failure\n * defers the decision to the durable suspension + `resolveApproval` path instead of\n * approving, denying, or crashing the Attempt on a transient policy fault. Explicit\n * policy denials (including the P2 timeout-denial for `denial: \"terminal\"`) still deny.\n */\nexport const toDurableRunApprovalHook = Effect.fn(\"toDurableRunApprovalHook\")(function* (\n policy: RunApprovalAdapterPolicy,\n): Effect.fn.Return<\n RunApprovalHook<never, never>,\n never,\n ApprovalResolver | ApprovalAudit | Redactor\n> {\n const services = yield* Effect.context<ApprovalResolver | ApprovalAudit | Redactor>();\n const hook = toRunApprovalHook(policy);\n\n return {\n request: (request) =>\n hook.request(request).pipe(\n Effect.provideContext(services),\n Effect.catch((error) =>\n Effect.succeed<RunApprovalDecision>({\n _tag: \"unresolved\",\n reason: `Approval delegation failed (${error._tag}); the decision defers to the durable resolveApproval path`,\n }),\n ),\n ),\n };\n});\n\n/** Adapt one hierarchical budget node to the engine's usage accounting seam. */\nexport const toRunBudgetHook = (\n budget: UsageBudgetNode,\n): RunBudgetHook<BudgetExceeded | BudgetAdapterError, never> => ({\n guard: budget.guard,\n consume: (delta) =>\n Schema.decodeEffect(UsageDelta)({\n modelCalls: delta.modelCalls,\n inputTokens: delta.inputTokens,\n outputTokens: delta.outputTokens,\n cacheReadInputTokens: Math.max(0, delta.usage.inputTokens.cacheRead ?? 0),\n cacheWriteInputTokens: Math.max(0, delta.usage.inputTokens.cacheWrite ?? 0),\n toolCalls: delta.toolCalls,\n costMicrousd: delta.costMicrousd,\n }).pipe(\n Effect.mapError((error) =>\n BudgetAdapterError.make({\n message: `Engine usage delta is invalid: ${error.message}`,\n }),\n ),\n Effect.flatMap((usage) => budget.consume(usage)),\n Effect.asVoid,\n ),\n});\n\nexport type ThreadAdapterError =\n | ThreadNotFound\n | ThreadLimitExceeded\n | ThreadEncodingError\n | ThreadHistoryDiverged;\n\n/**\n * Advanced integration for an existing Thread.Store snapshot. Ordinary Runs automatically\n * retain history through ThreadHistory.layer; use this helper only for explicit snapshot hooks.\n * Share that Layer's Thread.Store owner. PersistentHistory rejects these competing hooks.\n * The snapshot is explicit initial Prompt data. Each inline onHistory call immediately records\n * its append-only suffix, including updates from Runs that later fail or are interrupted. Writes\n * already made remain in the snapshot. Callback errors stop the Run as ThreadAdapterError;\n * snapshot lookup can fail with ThreadNotFound before execution.\n * Native Effect AI parts and provider options are preserved without a role/text projection.\n * For retaining only successful Runs, provide ThreadHistory through PersistentHistory.layer\n * with a memory or SQLite store instead. This adapter does not provide durable recovery.\n */\nexport const toRunThreadOptions = Effect.fn(\"toRunThreadOptions\")(function* (\n threadId: import(\"../core/Identifiers.ts\").ThreadId,\n runId: import(\"../core/Identifiers.ts\").RunId,\n): Effect.fn.Return<\n Pick<RunOptions<ThreadAdapterError>, \"threadId\" | \"history\" | \"onHistory\">,\n ThreadNotFound,\n ConversationStore\n> {\n const threads = yield* ConversationStore;\n const snapshot = yield* threads.snapshot(threadId);\n\n return {\n threadId,\n history: toPrompt(snapshot),\n onHistory: (history) => threads.recordHistory(threadId, runId, history).pipe(Effect.asVoid),\n };\n});\n\n/** Prompt transform used by the adapter; the engine retains the authoritative source separately. */\nexport interface EnginePromptTransform<Error = never, Requirements = never> {\n readonly prepare: (\n source: Prompt.Prompt,\n request: RunContextRequest,\n ) => Effect.Effect<Prompt.Prompt, Error, Requirements>;\n}\n\n/** Adapt a prompt-only context transform without granting it authority over engine source history. */\nexport const toRunContextHook = <Error, Requirements>(\n transform: EnginePromptTransform<Error, Requirements>,\n): RunContextHook<Error, Requirements> => ({\n prepare: (request): Effect.Effect<PreparedRunContext, Error, Requirements> =>\n transform.prepare(request.source, request).pipe(Effect.map((prompt) => ({ prompt }))),\n});\n\n/** Scheduling values are structurally aligned and only reduce finite concurrency. */\nexport const toRunSchedulingHook = (\n runOverride: RunSchedulingHook[\"runOverride\"],\n toolRequiresSequential?: (toolName: string) => boolean,\n): RunSchedulingHook => ({\n runOverride,\n ...(toolRequiresSequential === undefined ? {} : { toolRequiresSequential }),\n});\n\n/** Validate policy configuration at adapter construction boundaries. */\nexport const RunApprovalAdapterPolicySchema = Schema.Struct({\n expiresInMillis: Schema.Int.check(Schema.isGreaterThan(0)),\n risk: Schema.Literals([\"low\", \"medium\", \"high\", \"critical\"]),\n denial: Schema.Literals([\"terminal\", \"recoverable\"]),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsCA,IAAa,uBAAb,cAA0C,OAAO,YAAkC,CAAC,CAClF,wBACA,EAAE,SAAS,OAAO,OAAO,CAC3B,CAAC,CAAC,CAAC;;AAGH,IAAa,qBAAb,cAAwC,OAAO,YAAgC,CAAC,CAC9E,sBACA,EAAE,SAAS,OAAO,OAAO,CAC3B,CAAC,CAAC,CAAC;;AAGH,MAAa,kBAAkB,WAAwD;CACrF,QAAQ,WACN,MAAM,MAAM,MAAM,CAAC,CAAC,KAClB,OAAO,KAAK,aACV,SAAS,KAAK,aAAa;EACzB,MAAM,QAAQ,SAAS,oBAAqB,aAAwB;EACpE,OAAO,QAAQ;CACjB,EAAE,CACJ,CACF;CACF,WAAW,MAAM;AACnB;;AAYA,MAAa,qBACX,YAQI,EACJ,UAAU,kBACR,OAAO,IAAI,aAAa;CACtB,MAAM,kBAAkB,OAAO,OAAO,aAAa,8BAA8B,CAAC,CAChF,MACF,CAAC,CAAC,KACA,OAAO,UAAU,UACf,qBAAqB,KAAK,EACxB,SAAS,uCAAuC,MAAM,UACxD,CAAC,CACH,CACF;CAEA,MAAM,MAAM,OAAO,MAAM;CAEzB,MAAM,WAAW,OAAO,OAAO,IAAI;EACjC,YAAY;GACV,eAAe,OAAO,cAAc,aAAa;GACjD,iBAAiB,OAAO,gBAAgB,aAAa;EACvD;EACA,aACE,qBAAqB,KAAK,EACxB,SAAS,kEACX,CAAC;CACL,CAAC;CAED,MAAM,QAAQ,OAAO,OAAO,aAAa,oBAAoB,CAAC,CAAC;EAC7D,WAAW,cAAc,QAAQ;EACjC,OAAO,cAAc;EACrB,UAAU,cAAc;EACxB,YAAY,cAAc;EAC1B,UAAU,cAAc;EACxB,eAAe,SAAS;EACxB,iBAAiB,SAAS;EAC1B,MAAM,gBAAgB;EACtB,WAAW,SAAS,UAClB,SAAS,MAAM,SAAS,WAAW,MAAM,gBAAgB,eAAe,CAAC,CAC3E;EACA,QAAQ,gBAAgB;CAC1B,CAAC,CAAC,CAAC,KACD,OAAO,UAAU,UACf,qBAAqB,KAAK,EACxB,SAAS,uCAAuC,MAAM,UACxD,CAAC,CACH,CACF;CAEA,MAAM,UAAU,OAAO,oBAAoB,OAAO,cAAc,UAAU;CAC1E,MAAM,WAAW,OAAO,gBAAgB,OAAO;CAE/C,IAAI,SAAS,SAAS,oBACpB,OAAO,EAAE,MAAM,WAAoB;CAErC,IAAI,SAAS,YAAY,QAAQ,WAAW,eAC1C,OAAO;EACL,MAAM;EACN,QAAQ,SAAS;CACnB;CAGF,OAAO;EACL,MAAM;EACN,QAAQ,SAAS;CACnB;AACF,CAAC,EACL;;;;;;;;;;;;;;;;AAiBA,MAAa,2BAA2B,OAAO,GAAG,0BAA0B,CAAC,CAAC,WAC5E,QAKA;CACA,MAAM,WAAW,OAAO,OAAO,QAAqD;CACpF,MAAM,OAAO,kBAAkB,MAAM;CAErC,OAAO,EACL,UAAU,YACR,KAAK,QAAQ,OAAO,CAAC,CAAC,KACpB,OAAO,eAAe,QAAQ,GAC9B,OAAO,OAAO,UACZ,OAAO,QAA6B;EAClC,MAAM;EACN,QAAQ,+BAA+B,MAAM,KAAK;CACpD,CAAC,CACH,CACF,EACJ;AACF,CAAC;;AAGD,MAAa,mBACX,YAC+D;CAC/D,OAAO,OAAO;CACd,UAAU,UACR,OAAO,aAAa,UAAU,CAAC,CAAC;EAC9B,YAAY,MAAM;EAClB,aAAa,MAAM;EACnB,cAAc,MAAM;EACpB,sBAAsB,KAAK,IAAI,GAAG,MAAM,MAAM,YAAY,aAAa,CAAC;EACxE,uBAAuB,KAAK,IAAI,GAAG,MAAM,MAAM,YAAY,cAAc,CAAC;EAC1E,WAAW,MAAM;EACjB,cAAc,MAAM;CACtB,CAAC,CAAC,CAAC,KACD,OAAO,UAAU,UACf,mBAAmB,KAAK,EACtB,SAAS,kCAAkC,MAAM,UACnD,CAAC,CACH,GACA,OAAO,SAAS,UAAU,OAAO,QAAQ,KAAK,CAAC,GAC/C,OAAO,MACT;AACJ;;;;;;;;;;;;;AAoBA,MAAa,qBAAqB,OAAO,GAAG,oBAAoB,CAAC,CAAC,WAChE,UACA,OAKA;CACA,MAAM,UAAU,OAAOA;CACvB,MAAM,WAAW,OAAO,QAAQ,SAAS,QAAQ;CAEjD,OAAO;EACL;EACA,SAAS,SAAS,QAAQ;EAC1B,YAAY,YAAY,QAAQ,cAAc,UAAU,OAAO,OAAO,CAAC,CAAC,KAAK,OAAO,MAAM;CAC5F;AACF,CAAC;;AAWD,MAAa,oBACX,eACyC,EACzC,UAAU,YACR,UAAU,QAAQ,QAAQ,QAAQ,OAAO,CAAC,CAAC,KAAK,OAAO,KAAK,YAAY,EAAE,OAAO,EAAE,CAAC,EACxF;;AAGA,MAAa,uBACX,aACA,4BACuB;CACvB;CACA,GAAI,2BAA2B,KAAA,IAAY,CAAC,IAAI,EAAE,uBAAuB;AAC3E;;AAGA,MAAa,iCAAiC,OAAO,OAAO;CAC1D,iBAAiB,OAAO,IAAI,MAAM,OAAO,cAAc,CAAC,CAAC;CACzD,MAAM,OAAO,SAAS;EAAC;EAAO;EAAU;EAAQ;CAAU,CAAC;CAC3D,QAAQ,OAAO,SAAS,CAAC,YAAY,aAAa,CAAC;AACrD,CAAC"}