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 @@
1
+ {"version":3,"file":"agent-registration-CWDMOAZA.mjs","names":["run"],"sources":["../src/durable/internal/agent-registration.ts"],"sourcesContent":["import { type Crypto, type Option, type Scope, Context, Effect, Layer, Schema } from \"effect\";\nimport { Tool } from \"effect/unstable/ai\";\n\nimport type * as Agent from \"../../core/Agent.ts\";\nimport {\n type InputPromptSource,\n type InstructionSource,\n type ModelServices,\n type RunDispositionDeclaration,\n} from \"../../core/Agent.ts\";\nimport { type ThreadId, AgentId } from \"../../core/Identifiers.ts\";\nimport {\n AdditionalToolCatalog,\n DiscoveryTool,\n IncludesCatalogDocumentation,\n PinnedTool,\n ToolNamespace,\n} from \"../../core/ToolExposure.ts\";\nimport { type RuntimeBinding } from \"../../engine/AgentRuntime.ts\";\nimport {\n BackgroundReporting,\n WorkerReportPreparationFailure,\n type WorkerReporting,\n} from \"../../engine/SubagentHost.ts\";\nimport { digestDefinitions, DigestError } from \"../Digest.ts\";\nimport type { DurableWorkerFailure, DurableWorkerRequirements } from \"../DurableAgentRuntime.ts\";\nimport type { DefinitionDigestInput, DefinitionDigests } from \"../Records.ts\";\nimport type { Claim, Settlement } from \"../SubmissionLedger.ts\";\n\n/**\n * No Agent Binding is registered for the requested stable identity. Recovery\n * fails closed: it never substitutes the latest Binding or runs different\n * code.\n */\nexport class BindingUnavailable extends Schema.TaggedError<BindingUnavailable>()(\n \"BindingUnavailable\",\n {\n agentId: AgentId,\n message: Schema.String,\n },\n) {}\n\n/**\n * A Binding is registered for the identity but its exact stored\n * definition/model/tool digests do not match the claimed head's stored\n * digests byte-for-byte. Fail closed (SUB-023): missing or different code is\n * a typed compatibility failure, never a silent substitution.\n */\nexport class BindingDigestMismatch extends Schema.TaggedError<BindingDigestMismatch>()(\n \"BindingDigestMismatch\",\n {\n agentId: AgentId,\n message: Schema.String,\n },\n) {}\n\n/** The typed refusal family of durable Binding resolution (spec §11, SUB-032). */\nexport type DurableBindingFailure = BindingUnavailable | BindingDigestMismatch;\n\n/** Byte-for-byte equality of two stored definition digest triples (SUB-023). */\nexport const definitionDigestsEqual = (\n left: DefinitionDigests,\n right: DefinitionDigests,\n): boolean =>\n left.agent === right.agent && left.model === right.model && left.tools === right.tools;\n\ntype ExecutableDefinition = Agent.AnyDefinition & {\n readonly instructions: InstructionSource<never, unknown, unknown>;\n readonly inputPrompt?: InputPromptSource<never, unknown, unknown> | undefined;\n};\n\n/** Executable model Binding accepted by durable registration descriptors. */\nexport type ExecutableAgentBinding = {\n readonly definition: ExecutableDefinition;\n readonly model: Layer.Layer<ModelServices, never, unknown>;\n};\n\n/**\n * Internal coordinator entry point for one fenced Attempt over an already-granted claim.\n * The generic signature matches `runAttempt` and is specialized for each captured Agent.\n */\ntype ResolvedAttemptDriver = <\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions,\n Tools extends Record<string, Tool.Any>,\n Provider,\n ModelProvides,\n ModelRequires,\n InstructionError,\n InstructionRequirements,\n RunDispositionValue extends\n | RunDispositionDeclaration<OutputSchema[\"Type\"], Schema.Top>\n | undefined,\n InputPromptValue extends InputPromptSource<InputSchema[\"Type\"], unknown, unknown> | undefined,\n UpdatesSchema extends Schema.Top | undefined,\n>(\n agent: RuntimeBinding<\n InputSchema,\n OutputSchema,\n Instructions,\n Tools,\n Provider,\n ModelProvides,\n ModelRequires,\n InstructionError,\n InstructionRequirements,\n RunDispositionValue,\n InputPromptValue,\n UpdatesSchema\n >,\n threadId: ThreadId,\n claim: Claim,\n) => Effect.Effect<\n Option.Option<Settlement>,\n DurableWorkerFailure,\n DurableWorkerRequirements<\n RuntimeBinding<\n InputSchema,\n OutputSchema,\n Instructions,\n Tools,\n Provider,\n ModelProvides,\n ModelRequires,\n InstructionError,\n InstructionRequirements,\n RunDispositionValue,\n InputPromptValue,\n UpdatesSchema\n >,\n InstructionRequirements\n >\n>;\n\ntype CapturedAttempt<A extends ExecutableAgentBinding> = (\n agent: A,\n threadId: ThreadId,\n claim: Claim,\n) => Effect.Effect<Option.Option<Settlement>, DurableWorkerFailure, DurableWorkerRequirements<A>>;\n\n/**\n * An Agent with its worker services captured, ready to drive a fenced Attempt.\n * Concrete Schema and model types stay inside this closure when registrations are collected.\n */\ninterface CapturedBinding {\n readonly agentId: AgentId;\n /** Exact immutable definition whose codecs and behavior the worker captured. */\n readonly definition: Agent.AnyDefinition;\n /** Captured independently from per-Attempt services: report preparation has no fenced Claim. */\n readonly reporting?: ReadonlyArray<WorkerReporting<WorkerReportPreparationFailure>>;\n readonly attempt: (\n driver: ResolvedAttemptDriver,\n threadId: ThreadId,\n claim: Claim,\n ) => Effect.Effect<Option.Option<Settlement>, DurableWorkerFailure>;\n}\n\ntype ReportRequirements<Reports> =\n Reports extends ReadonlyArray<WorkerReporting<unknown, unknown>>\n ? [Reports[number]] extends [never]\n ? never\n : Reports[number] extends WorkerReporting<unknown, infer R>\n ? Exclude<R, Scope.Scope>\n : never\n : never;\n\nconst captureReporting = <R>(reports: ReadonlyArray<WorkerReporting<unknown, R>>) =>\n Effect.map(Effect.context<Exclude<R, Scope.Scope>>(), (context) =>\n reports.map((report): WorkerReporting<WorkerReportPreparationFailure> => ({\n ...report,\n prepare: (value) =>\n Effect.scoped(Effect.suspend(() => report.prepare(value))).pipe(\n Effect.provide(context),\n Effect.mapError((error) =>\n Schema.is(WorkerReportPreparationFailure)(error)\n ? error\n : WorkerReportPreparationFailure.make({ stage: \"preparation\" }),\n ),\n ),\n })),\n );\n\nconst backgroundReports = (definition: Agent.AnyDefinition) => [\n ...new Set(\n Object.values(definition.toolkit.tools).flatMap((tool) => {\n const report = Context.get(tool.annotations, BackgroundReporting);\n\n return report === undefined ? [] : [report];\n }),\n ),\n];\n\n/** One exact executable registration used by durable claim-time resolution. */\nexport interface ResolvedBinding extends CapturedBinding {\n readonly digests: DefinitionDigests;\n}\n\n/** Trusted claim identity for resolving per-Attempt application services. Not model input. */\nexport interface AgentAttemptContext {\n readonly threadId: ThreadId;\n readonly submissionId: Claim[\"submissionId\"];\n readonly attemptId: Claim[\"attemptId\"];\n}\n\nconst capture = <A extends ExecutableAgentBinding, Provides = never, Requires = never>(\n agent: A,\n attemptLayer?: (context: AgentAttemptContext) => Layer.Layer<Provides, never, Requires>,\n): Effect.Effect<\n CapturedBinding,\n never,\n Exclude<DurableWorkerRequirements<A>, Provides> | Requires\n> =>\n Effect.map(\n Effect.context<Exclude<DurableWorkerRequirements<A>, Provides> | Requires>(),\n (context): CapturedBinding => ({\n agentId: agent.definition.id,\n definition: agent.definition,\n attempt: (driver, threadId, claim) => {\n // Registration closes one concrete Binding before heterogeneous registrations are\n // collected. TypeScript cannot instantiate the higher-rank RuntimeBinding parameters\n // from the intentionally erased public shape, so specialize the driver back to A here.\n const run = driver as unknown as CapturedAttempt<A>;\n const execute = run(agent, threadId, claim);\n\n const scoped =\n attemptLayer === undefined\n ? execute\n : execute.pipe(\n Effect.provide(\n Layer.fresh(\n attemptLayer({\n threadId,\n submissionId: claim.submissionId,\n attemptId: claim.attemptId,\n }),\n ),\n ),\n );\n\n return scoped.pipe(Effect.provide(context)) as Effect.Effect<\n Option.Option<Settlement>,\n DurableWorkerFailure\n >;\n },\n }),\n );\n\n/**\n * Build one exact worker registration from an executable Agent Binding and\n * its already-computed definition digests.\n *\n * `make(agent, digests)` captures the binding plus its worker-requirement\n * Context at Layer/effect construction time. Hosts that start from application\n * version declarations should use `compileRegistrations`; low-level fixtures\n * may supply a previously computed digest triple directly.\n */\nexport const DurableWorkerBinding = {\n make: <\n A extends ExecutableAgentBinding,\n const Reports extends ReadonlyArray<WorkerReporting<unknown, unknown>> = readonly [],\n >(\n agent: A,\n digests: DefinitionDigests,\n reporting?: Reports,\n ): Effect.Effect<\n ResolvedBinding,\n never,\n DurableWorkerRequirements<A> | ReportRequirements<Reports>\n > =>\n Effect.gen(function* () {\n const binding = yield* capture(agent);\n\n const reports = yield* captureReporting([\n ...(reporting ?? []),\n ...backgroundReports(agent.definition),\n ]);\n\n return { ...binding, digests, reporting: reports };\n }) as Effect.Effect<\n ResolvedBinding,\n never,\n DurableWorkerRequirements<A> | ReportRequirements<Reports>\n >,\n} as const;\n\n/** INTERNAL identity-only capture retained for the legacy direct worker path. */\nexport const makeLegacyWorkerBinding = capture;\n\nexport const resolveWorkerBinding = (\n bindings: ReadonlyArray<ResolvedBinding>,\n agentId: AgentId,\n digests: DefinitionDigests,\n): Effect.Effect<ResolvedBinding, DurableBindingFailure> => {\n const registered = bindings.filter((binding) => binding.agentId === agentId);\n\n if (registered.length === 0) {\n return Effect.fail(\n BindingUnavailable.make({\n agentId,\n message: `No Agent Binding is registered for ${agentId}; recovery never substitutes different code (SUB-023)`,\n }),\n );\n }\n const exact = registered.find((binding) => definitionDigestsEqual(binding.digests, digests));\n\n if (exact === undefined) {\n return Effect.fail(\n BindingDigestMismatch.make({\n agentId,\n message: `The registered Binding for ${agentId} does not match the stored definition digests exactly; missing or different code fails closed (SUB-023)`,\n }),\n );\n }\n\n return Effect.succeed(exact);\n};\n\n/** Resolve authoring-time admission through the one exact host registration, never by identity alone. */\nexport const resolveDefinitionBinding = (\n bindings: ReadonlyArray<ResolvedBinding>,\n definition: Pick<Agent.AnyDefinition, \"id\">,\n): Effect.Effect<ResolvedBinding, BindingUnavailable> => {\n const candidates = bindings.filter((binding) => binding.agentId === definition.id);\n const binding = candidates[0];\n\n if (candidates.length !== 1 || binding === undefined) {\n return Effect.fail(\n BindingUnavailable.make({\n agentId: definition.id,\n message: \"Registered admission requires exactly one binding for the Agent identity\",\n }),\n );\n }\n\n if (!Object.is(binding.definition, definition)) {\n return Effect.fail(\n BindingUnavailable.make({\n agentId: definition.id,\n message: \"Registered admission requires the exact Agent Definition used in registration\",\n }),\n );\n }\n\n return Effect.succeed(binding);\n};\n\n/** Application versions and a model Layer, supplied directly or through an existing Binding. */\nexport type AgentRegistration<A extends ExecutableAgentBinding = ExecutableAgentBinding> = (\n | { readonly agent: A; readonly model?: never; readonly definitions: DefinitionDigestInput }\n | {\n readonly agent: A[\"definition\"];\n readonly model: A[\"model\"];\n readonly definitions: DefinitionDigestInput;\n }\n) & {\n /**\n * Source-owned reports capture services outside attemptLayer and open a fresh Scope per\n * preparation. Version changes with this registration. Missing exact code and preparation\n * failures become retained report refusals; durable delivery retries reuse the frozen input.\n */\n readonly reporting?: ReadonlyArray<WorkerReporting<unknown, unknown>>;\n /**\n * Build fresh services for exactly one fenced Attempt, across all its Tool/model turns.\n * Finalizes on completion, suspension, failure and interruption. Never reused after eviction.\n * Resolve invocation authority from the trusted claim identity, not captured caller state.\n * Keep fallible resource acquisition lazy in typed Tool operations; this Layer cannot fail.\n */\n readonly attemptLayer?: (context: AgentAttemptContext) => Layer.Layer<never, never, unknown>;\n};\n\ntype EntryWorkerRequirements<Entry> = Entry extends {\n readonly agent: infer A extends ExecutableAgentBinding;\n}\n ? DurableWorkerRequirements<A>\n : Entry extends {\n readonly agent: infer D extends ExecutableDefinition;\n readonly model: infer M extends ExecutableAgentBinding[\"model\"];\n }\n ? DurableWorkerRequirements<{ readonly definition: D; readonly model: M }>\n : never;\n\ntype AttemptLayerRequirements<Requirements, AttemptLayer> = AttemptLayer extends (\n context: AgentAttemptContext,\n) => Layer.Layer<infer Provides, never, infer Requires>\n ? Exclude<Requirements, Provides> | Requires\n : Requirements;\n\n// Conditional options retain every service they may consume. An absent attempt Layer\n// still needs the original worker services; only a definite Layer can remove them.\ntype EntryRequirements<Entry> = Entry extends unknown\n ?\n | AttemptLayerRequirements<\n EntryWorkerRequirements<Entry>,\n \"attemptLayer\" extends keyof Entry ? Entry[\"attemptLayer\"] : undefined\n >\n | (\"reporting\" extends keyof Entry ? ReportRequirements<Entry[\"reporting\"]> : never)\n : never;\n\ntype RegistrationRequirements<Entries extends ReadonlyArray<AgentRegistration>> = [\n Entries[number],\n] extends [never]\n ? never\n : EntryRequirements<Entries[number]>;\n\nconst registrationDefinitions = (entry: AgentRegistration): DefinitionDigestInput => {\n const definition = entry.model === undefined ? entry.agent.definition : entry.agent;\n const automatic = backgroundReports(definition);\n\n const declaredDefinitions =\n definition.updates === undefined\n ? entry.definitions\n : {\n ...entry.definitions,\n agent: {\n declaration: entry.definitions.agent,\n updates: Schema.decodeUnknownSync(Schema.Json)(\n Tool.getJsonSchemaFromSchema(definition.updates),\n ),\n updateProtocol: { schemaVersion: 1, tool: \"emit_update\" },\n },\n };\n\n const definitions =\n automatic.length === 0\n ? declaredDefinitions\n : {\n ...declaredDefinitions,\n agent: {\n declaration: declaredDefinitions.agent,\n backgroundReporting: automatic.map((report) => ({\n delegationId: report.delegationId,\n targetAgentId: report.target.id,\n mode: report.mode ?? \"custom\",\n destinationDelegationId: report.destination?.delegationId ?? null,\n })),\n },\n };\n\n const exposure = definition.toolExposure;\n\n if (\n exposure === undefined &&\n !Object.values(definition.toolkit.tools).some(\n (tool) =>\n Context.get(tool.annotations, DiscoveryTool) || Context.get(tool.annotations, PinnedTool),\n )\n )\n return definitions;\n\n return {\n ...definitions,\n agent: {\n declaration: definitions.agent,\n toolExposure: {\n initialToolNames: exposure === undefined ? null : [...(exposure.initialToolNames ?? [])],\n maxTools: exposure?.maxTools ?? 64,\n maxSchemaBytes: exposure?.maxSchemaBytes ?? 262_144,\n requiredCompletion:\n definition.completion?.required === true ? definition.completion.tool : null,\n tools: Object.values(definition.toolkit.tools).map((tool) => ({\n name: tool.name,\n pinned: Context.get(tool.annotations, PinnedTool),\n discovery: Context.get(tool.annotations, DiscoveryTool),\n namespace: Context.get(tool.annotations, ToolNamespace) ?? null,\n includesCatalogDocumentation: Context.get(tool.annotations, IncludesCatalogDocumentation),\n additional: Context.get(tool.annotations, AdditionalToolCatalog).map((entry) => ({\n name: entry.tool.name,\n namespace: entry.namespace,\n method: entry.method,\n })),\n })),\n },\n },\n };\n};\n\nconst compileRegistration = <Entry extends AgentRegistration>(\n entry: Entry,\n): Effect.Effect<ResolvedBinding, DigestError, Crypto.Crypto | EntryRequirements<Entry>> =>\n Effect.flatMap(\n Effect.try({\n try: () => registrationDefinitions(entry),\n catch: () =>\n DigestError.make({ message: \"Agent update schema has no serializable wire contract\" }),\n }).pipe(Effect.flatMap(digestDefinitions)),\n (digests) =>\n Effect.gen(function* () {\n const binding = yield* capture(\n entry.model === undefined ? entry.agent : { definition: entry.agent, model: entry.model },\n entry.attemptLayer,\n );\n\n const reporting = yield* captureReporting([\n ...(entry.reporting ?? []),\n ...backgroundReports(binding.definition),\n ]);\n\n return { ...binding, digests, reporting };\n }),\n // The erased descriptor accepts arbitrary provided services. Restore the concrete entry's\n // Exclude<worker requirements, provided services> | layer requirements at this collection seam.\n ) as Effect.Effect<ResolvedBinding, DigestError, Crypto.Crypto | EntryRequirements<Entry>>;\n\n/** Compile heterogeneous Agent descriptors into exact, dependency-closed worker registrations. */\nexport const compileRegistrations = <const Entries extends ReadonlyArray<AgentRegistration>>(\n entries: Entries,\n): Effect.Effect<\n ReadonlyArray<ResolvedBinding>,\n DigestError,\n Crypto.Crypto | RegistrationRequirements<Entries>\n> => {\n // `Effect.forEach` instantiates a generic callback at its constraint. Specialize the callback to\n // this tuple's distributed requirement union before collection so empty and heterogeneous tuples\n // retain their exact service requirements.\n const compileEntry = compileRegistration as unknown as (\n entry: Entries[number],\n ) => Effect.Effect<\n ResolvedBinding,\n DigestError,\n Crypto.Crypto | RegistrationRequirements<Entries>\n >;\n\n return Effect.forEach(entries, compileEntry);\n};\n"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { RedactionError, Redactor } from "./Redaction.mjs";
2
+ import { Context, Effect, Layer, Schema } from "effect";
3
+ declare namespace Approval_d_exports {
4
+ export { ApprovalApproved, ApprovalAudit, ApprovalAuditEvent, ApprovalAuditEvents, ApprovalAuditLimitExceeded, ApprovalAuditMemoryLive, ApprovalDecision, ApprovalDecisionMismatch, ApprovalDecisionRecorded, ApprovalDenied, ApprovalDenyAll, ApprovalRequest, ApprovalRequestDraft, ApprovalRequestRecorded, ApprovalResolver, ApprovalResolverError, ApprovalTimedOut, makeApprovalRequest, requestApproval };
5
+ }
6
+ declare const ApprovalRequestDraft_base: Schema.Class<ApprovalRequestDraft, Schema.Struct<{
7
+ readonly requestId: Schema.NonEmptyString;
8
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
9
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
10
+ readonly toolCallId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ToolCallId">;
11
+ readonly toolName: Schema.NonEmptyString;
12
+ readonly actionSummary: Schema.String;
13
+ readonly resourceTargets: Schema.refine<readonly string[], Schema.$Array<Schema.String>>;
14
+ readonly risk: Schema.Literals<readonly ["low", "medium", "high", "critical"]>;
15
+ readonly expiresAt: Schema.DateTimeUtcFromString;
16
+ readonly denial: Schema.Literals<readonly ["terminal", "recoverable"]>;
17
+ }>, {}>;
18
+ /** Decoded approval metadata before the Redactor owns Tool input preview creation. */
19
+ declare class ApprovalRequestDraft extends ApprovalRequestDraft_base {}
20
+ declare const ApprovalRequest_base: Schema.Class<ApprovalRequest, Schema.Struct<{
21
+ readonly requestId: Schema.NonEmptyString;
22
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
23
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
24
+ readonly toolCallId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ToolCallId">;
25
+ readonly toolName: Schema.NonEmptyString;
26
+ readonly actionSummary: Schema.String;
27
+ readonly resourceTargets: Schema.refine<readonly string[], Schema.$Array<Schema.String>>;
28
+ readonly risk: Schema.Literals<readonly ["low", "medium", "high", "critical"]>;
29
+ readonly expiresAt: Schema.DateTimeUtcFromString;
30
+ readonly denial: Schema.Literals<readonly ["terminal", "recoverable"]>;
31
+ readonly redactedInputPreview: Schema.brand<Schema.refine<string, Schema.String>, "@effect-agent/capabilities/RedactedPreview">;
32
+ }>, {}>;
33
+ /** Fully decoded, structurally redacted approval input. */
34
+ declare class ApprovalRequest extends ApprovalRequest_base {}
35
+ declare const ApprovalApproved_base: Schema.Class<ApprovalApproved, Schema.TaggedStruct<"ApprovalApproved", {
36
+ readonly requestId: Schema.NonEmptyString;
37
+ readonly decidedAt: Schema.DateTimeUtcFromString;
38
+ readonly resolver: Schema.NonEmptyString;
39
+ }>, {}>;
40
+ declare class ApprovalApproved extends ApprovalApproved_base {}
41
+ declare const ApprovalDenied_base: Schema.Class<ApprovalDenied, Schema.TaggedStruct<"ApprovalDenied", {
42
+ readonly requestId: Schema.NonEmptyString;
43
+ readonly decidedAt: Schema.DateTimeUtcFromString;
44
+ readonly resolver: Schema.NonEmptyString;
45
+ readonly reason: Schema.String;
46
+ readonly timedOut: Schema.Boolean;
47
+ }>, {}>;
48
+ declare class ApprovalDenied extends ApprovalDenied_base {}
49
+ declare const ApprovalDecision: Schema.Union<readonly [typeof ApprovalApproved, typeof ApprovalDenied]>;
50
+ type ApprovalDecision = typeof ApprovalDecision.Type;
51
+ declare const ApprovalResolverError_base: Schema.Class<ApprovalResolverError, Schema.TaggedStruct<"ApprovalResolverError", {
52
+ readonly message: Schema.String;
53
+ }>, import("effect/Cause").YieldableError>;
54
+ /** Resolver infrastructure failed before it could make a policy decision. */
55
+ declare class ApprovalResolverError extends ApprovalResolverError_base {}
56
+ declare const ApprovalTimedOut_base: Schema.Class<ApprovalTimedOut, Schema.TaggedStruct<"ApprovalTimedOut", {
57
+ readonly requestId: Schema.NonEmptyString;
58
+ }>, import("effect/Cause").YieldableError>;
59
+ /** The resolver explicitly observed its request deadline; callers turn this into a denial. */
60
+ declare class ApprovalTimedOut extends ApprovalTimedOut_base {}
61
+ declare const ApprovalResolver_base: Context.ServiceClass<ApprovalResolver, "@effect-agent/capabilities/ApprovalResolver", {
62
+ readonly request: (request: ApprovalRequest) => Effect.Effect<ApprovalDecision, ApprovalResolverError | ApprovalTimedOut>;
63
+ }>;
64
+ /** First-class approval authority. Interactive, policy, and remote adapters implement this service. */
65
+ declare class ApprovalResolver extends ApprovalResolver_base {}
66
+ declare const ApprovalRequestRecorded_base: Schema.Class<ApprovalRequestRecorded, Schema.TaggedStruct<"ApprovalRequestRecorded", {
67
+ readonly sequence: Schema.Natural;
68
+ readonly recordedAt: Schema.DateTimeUtcFromString;
69
+ readonly request: typeof ApprovalRequest;
70
+ }>, {}>;
71
+ declare class ApprovalRequestRecorded extends ApprovalRequestRecorded_base {}
72
+ declare const ApprovalDecisionRecorded_base: Schema.Class<ApprovalDecisionRecorded, Schema.TaggedStruct<"ApprovalDecisionRecorded", {
73
+ readonly sequence: Schema.Natural;
74
+ readonly recordedAt: Schema.DateTimeUtcFromString;
75
+ readonly decision: Schema.Union<readonly [typeof ApprovalApproved, typeof ApprovalDenied]>;
76
+ }>, {}>;
77
+ declare class ApprovalDecisionRecorded extends ApprovalDecisionRecorded_base {}
78
+ declare const ApprovalAuditEvent: Schema.Union<readonly [typeof ApprovalRequestRecorded, typeof ApprovalDecisionRecorded]>;
79
+ type ApprovalAuditEvent = typeof ApprovalAuditEvent.Type;
80
+ declare const ApprovalAuditEvents: Schema.$Array<Schema.Union<readonly [typeof ApprovalRequestRecorded, typeof ApprovalDecisionRecorded]>>;
81
+ declare const ApprovalAuditLimitExceeded_base: Schema.Class<ApprovalAuditLimitExceeded, Schema.TaggedStruct<"ApprovalAuditLimitExceeded", {
82
+ readonly limitValue: Schema.Natural;
83
+ readonly observedValue: Schema.Natural;
84
+ }>, import("effect/Cause").YieldableError>;
85
+ declare class ApprovalAuditLimitExceeded extends ApprovalAuditLimitExceeded_base {}
86
+ declare const ApprovalDecisionMismatch_base: Schema.Class<ApprovalDecisionMismatch, Schema.TaggedStruct<"ApprovalDecisionMismatch", {
87
+ readonly expectedRequestId: Schema.NonEmptyString;
88
+ readonly observedRequestId: Schema.NonEmptyString;
89
+ }>, import("effect/Cause").YieldableError>;
90
+ /** A resolver or audit sink tried to associate a decision with another request. */
91
+ declare class ApprovalDecisionMismatch extends ApprovalDecisionMismatch_base {}
92
+ declare const ApprovalAudit_base: Context.ServiceClass<ApprovalAudit, "@effect-agent/capabilities/ApprovalAudit", {
93
+ readonly recordRequest: (request: ApprovalRequest) => Effect.Effect<void, ApprovalAuditLimitExceeded>;
94
+ readonly recordDecision: (decision: ApprovalDecision) => Effect.Effect<void, ApprovalAuditLimitExceeded | ApprovalDecisionMismatch>;
95
+ readonly events: Effect.Effect<ReadonlyArray<ApprovalAuditEvent>>;
96
+ }>;
97
+ /** P2 semantic audit sink; durable runtimes replace this with canonical records. */
98
+ declare class ApprovalAudit extends ApprovalAudit_base {}
99
+ /** Scoped in-memory audit projection with monotonic event order. */
100
+ declare const ApprovalAuditMemoryLive: Layer.Layer<ApprovalAudit, never, never>;
101
+ /** Construct an ApprovalRequest only after decoded input passes the configured Redactor. */
102
+ declare const makeApprovalRequest: (draft: ApprovalRequestDraft, decodedToolInput: unknown) => Effect.Effect<ApprovalRequest, RedactionError, Redactor>;
103
+ /**
104
+ * Resolve with fail-closed deadline semantics and record request/decision audit
105
+ * events around every successful, denied, timed-out, or resolver-failed
106
+ * resolution. A resolver infrastructure failure records a synthetic denial so
107
+ * the audit reservation is released before the typed error propagates.
108
+ */
109
+ declare const requestApproval: (request: ApprovalRequest) => Effect.Effect<ApprovalApproved | ApprovalDenied, ApprovalAuditLimitExceeded | ApprovalDecisionMismatch | ApprovalResolverError, ApprovalAudit | ApprovalResolver>;
110
+ /** Deterministic policy layer for tests and deny-by-default deployments. */
111
+ declare const ApprovalDenyAll: Layer.Layer<ApprovalResolver, never, never>;
112
+ //#endregion
113
+ export { ApprovalApproved, ApprovalAudit, ApprovalAuditEvent, ApprovalAuditEvents, ApprovalAuditLimitExceeded, ApprovalAuditMemoryLive, ApprovalDecision, ApprovalDecisionMismatch, ApprovalDecisionRecorded, ApprovalDenied, ApprovalDenyAll, ApprovalRequest, ApprovalRequestDraft, ApprovalRequestRecorded, ApprovalResolver, ApprovalResolverError, ApprovalTimedOut, makeApprovalRequest, requestApproval, Approval_d_exports as t };
114
+ //# sourceMappingURL=Approval.d.mts.map
@@ -0,0 +1,226 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { n as utf8ByteLength } from "../utf8-DchGZRBd.mjs";
3
+ import { RunId, ThreadId, ToolCallId } from "../core/Identifiers.mjs";
4
+ import { RedactedPreview, Redactor } from "./Redaction.mjs";
5
+ import { Clock, Context, DateTime, Duration, Effect, Layer, Ref, Schema } from "effect";
6
+ //#region src/capabilities/Approval.ts
7
+ var Approval_exports = /* @__PURE__ */ __exportAll({
8
+ ApprovalApproved: () => ApprovalApproved,
9
+ ApprovalAudit: () => ApprovalAudit,
10
+ ApprovalAuditEvent: () => ApprovalAuditEvent,
11
+ ApprovalAuditEvents: () => ApprovalAuditEvents,
12
+ ApprovalAuditLimitExceeded: () => ApprovalAuditLimitExceeded,
13
+ ApprovalAuditMemoryLive: () => ApprovalAuditMemoryLive,
14
+ ApprovalDecision: () => ApprovalDecision,
15
+ ApprovalDecisionMismatch: () => ApprovalDecisionMismatch,
16
+ ApprovalDecisionRecorded: () => ApprovalDecisionRecorded,
17
+ ApprovalDenied: () => ApprovalDenied,
18
+ ApprovalDenyAll: () => ApprovalDenyAll,
19
+ ApprovalRequest: () => ApprovalRequest,
20
+ ApprovalRequestDraft: () => ApprovalRequestDraft,
21
+ ApprovalRequestRecorded: () => ApprovalRequestRecorded,
22
+ ApprovalResolver: () => ApprovalResolver,
23
+ ApprovalResolverError: () => ApprovalResolverError,
24
+ ApprovalTimedOut: () => ApprovalTimedOut,
25
+ makeApprovalRequest: () => makeApprovalRequest,
26
+ requestApproval: () => requestApproval
27
+ });
28
+ const MAX_APPROVAL_TARGETS = 32;
29
+ const MAX_APPROVAL_TARGET_BYTES = 65536;
30
+ const MAX_APPROVAL_AUDIT_EVENTS = 2048;
31
+ const ApprovalTargets = Schema.Array(Schema.String.check(Schema.isMaxLength(2048))).check(Schema.isMaxLength(MAX_APPROVAL_TARGETS)).pipe(Schema.refine((targets) => targets.reduce((total, target) => total + utf8ByteLength(target), 0) <= MAX_APPROVAL_TARGET_BYTES, { expected: `approval targets totaling at most ${MAX_APPROVAL_TARGET_BYTES} UTF-8 bytes` }));
32
+ const ApprovalRequestFields = {
33
+ requestId: Schema.NonEmptyString,
34
+ runId: RunId,
35
+ threadId: ThreadId,
36
+ toolCallId: ToolCallId,
37
+ toolName: Schema.NonEmptyString,
38
+ actionSummary: Schema.String.check(Schema.isMaxLength(2048)),
39
+ resourceTargets: ApprovalTargets,
40
+ risk: Schema.Literals([
41
+ "low",
42
+ "medium",
43
+ "high",
44
+ "critical"
45
+ ]),
46
+ expiresAt: Schema.DateTimeUtcFromString,
47
+ denial: Schema.Literals(["terminal", "recoverable"])
48
+ };
49
+ /** Decoded approval metadata before the Redactor owns Tool input preview creation. */
50
+ var ApprovalRequestDraft = class extends Schema.Class("@effect-agent/capabilities/ApprovalRequestDraft")(ApprovalRequestFields) {};
51
+ /** Fully decoded, structurally redacted approval input. */
52
+ var ApprovalRequest = class extends Schema.Class("@effect-agent/capabilities/ApprovalRequest")({
53
+ ...ApprovalRequestFields,
54
+ redactedInputPreview: RedactedPreview
55
+ }) {};
56
+ var ApprovalApproved = class extends Schema.TaggedClass()("ApprovalApproved", {
57
+ requestId: Schema.NonEmptyString,
58
+ decidedAt: Schema.DateTimeUtcFromString,
59
+ resolver: Schema.NonEmptyString
60
+ }) {};
61
+ var ApprovalDenied = class extends Schema.TaggedClass()("ApprovalDenied", {
62
+ requestId: Schema.NonEmptyString,
63
+ decidedAt: Schema.DateTimeUtcFromString,
64
+ resolver: Schema.NonEmptyString,
65
+ reason: Schema.String.check(Schema.isMaxLength(2048)),
66
+ timedOut: Schema.Boolean
67
+ }) {};
68
+ const ApprovalDecision = Schema.Union([ApprovalApproved, ApprovalDenied]);
69
+ /** Resolver infrastructure failed before it could make a policy decision. */
70
+ var ApprovalResolverError = class extends Schema.TaggedError()("ApprovalResolverError", { message: Schema.String }) {};
71
+ /** The resolver explicitly observed its request deadline; callers turn this into a denial. */
72
+ var ApprovalTimedOut = class extends Schema.TaggedError()("ApprovalTimedOut", { requestId: Schema.NonEmptyString }) {};
73
+ /** First-class approval authority. Interactive, policy, and remote adapters implement this service. */
74
+ var ApprovalResolver = class extends Context.Service()("@effect-agent/capabilities/ApprovalResolver") {};
75
+ var ApprovalRequestRecorded = class extends Schema.TaggedClass()("ApprovalRequestRecorded", {
76
+ sequence: Schema.Natural,
77
+ recordedAt: Schema.DateTimeUtcFromString,
78
+ request: ApprovalRequest
79
+ }) {};
80
+ var ApprovalDecisionRecorded = class extends Schema.TaggedClass()("ApprovalDecisionRecorded", {
81
+ sequence: Schema.Natural,
82
+ recordedAt: Schema.DateTimeUtcFromString,
83
+ decision: ApprovalDecision
84
+ }) {};
85
+ const ApprovalAuditEvent = Schema.Union([ApprovalRequestRecorded, ApprovalDecisionRecorded]);
86
+ const ApprovalAuditEvents = Schema.Array(ApprovalAuditEvent).check(Schema.isMaxLength(MAX_APPROVAL_AUDIT_EVENTS));
87
+ var ApprovalAuditLimitExceeded = class extends Schema.TaggedError()("ApprovalAuditLimitExceeded", {
88
+ limitValue: Schema.Natural,
89
+ observedValue: Schema.Natural
90
+ }) {};
91
+ /** A resolver or audit sink tried to associate a decision with another request. */
92
+ var ApprovalDecisionMismatch = class extends Schema.TaggedError()("ApprovalDecisionMismatch", {
93
+ expectedRequestId: Schema.NonEmptyString,
94
+ observedRequestId: Schema.NonEmptyString
95
+ }) {};
96
+ /** P2 semantic audit sink; durable runtimes replace this with canonical records. */
97
+ var ApprovalAudit = class extends Context.Service()("@effect-agent/capabilities/ApprovalAudit") {};
98
+ /** Scoped in-memory audit projection with monotonic event order. */
99
+ const ApprovalAuditMemoryLive = Layer.effect(ApprovalAudit, Effect.gen(function* () {
100
+ const state = yield* Ref.make({
101
+ events: [],
102
+ pending: /* @__PURE__ */ new Set()
103
+ });
104
+ return ApprovalAudit.of({
105
+ recordRequest: (request) => Effect.gen(function* () {
106
+ const recordedAt = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));
107
+ const error = yield* Ref.modify(state, (current) => {
108
+ const reservedSize = current.events.length + current.pending.size + 2;
109
+ if (reservedSize > MAX_APPROVAL_AUDIT_EVENTS) return [ApprovalAuditLimitExceeded.make({
110
+ limitValue: MAX_APPROVAL_AUDIT_EVENTS,
111
+ observedValue: reservedSize
112
+ }), current];
113
+ const event = ApprovalRequestRecorded.make({
114
+ sequence: current.events.length,
115
+ recordedAt,
116
+ request
117
+ });
118
+ return [void 0, {
119
+ events: [...current.events, event],
120
+ pending: new Set(current.pending).add(request.requestId)
121
+ }];
122
+ });
123
+ if (error !== void 0) return yield* error;
124
+ }),
125
+ recordDecision: (decision) => Effect.gen(function* () {
126
+ const recordedAt = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));
127
+ const error = yield* Ref.modify(state, (current) => {
128
+ if (!current.pending.has(decision.requestId)) return [ApprovalDecisionMismatch.make({
129
+ expectedRequestId: [...current.pending][0] ?? "no-pending-request",
130
+ observedRequestId: decision.requestId
131
+ }), current];
132
+ const pending = new Set(current.pending);
133
+ pending.delete(decision.requestId);
134
+ const event = ApprovalDecisionRecorded.make({
135
+ sequence: current.events.length,
136
+ recordedAt,
137
+ decision
138
+ });
139
+ return [void 0, {
140
+ events: [...current.events, event],
141
+ pending
142
+ }];
143
+ });
144
+ if (error !== void 0) return yield* error;
145
+ }),
146
+ events: Ref.get(state).pipe(Effect.map((current) => current.events))
147
+ });
148
+ }));
149
+ /** Construct an ApprovalRequest only after decoded input passes the configured Redactor. */
150
+ const makeApprovalRequest = Effect.fn("makeApprovalRequest")(function* (draft, decodedToolInput) {
151
+ const redactedInputPreview = yield* (yield* Redactor).redact(decodedToolInput);
152
+ return ApprovalRequest.make({
153
+ requestId: draft.requestId,
154
+ runId: draft.runId,
155
+ threadId: draft.threadId,
156
+ toolCallId: draft.toolCallId,
157
+ toolName: draft.toolName,
158
+ actionSummary: draft.actionSummary,
159
+ resourceTargets: draft.resourceTargets,
160
+ risk: draft.risk,
161
+ expiresAt: draft.expiresAt,
162
+ denial: draft.denial,
163
+ redactedInputPreview
164
+ });
165
+ });
166
+ const timeoutDenial = (request, decidedAt) => ApprovalDenied.make({
167
+ requestId: request.requestId,
168
+ decidedAt,
169
+ resolver: "effect-agent.timeout-deny",
170
+ reason: "Approval request expired before a decision was available",
171
+ timedOut: true
172
+ });
173
+ /**
174
+ * Resolve with fail-closed deadline semantics and record request/decision audit
175
+ * events around every successful, denied, timed-out, or resolver-failed
176
+ * resolution. A resolver infrastructure failure records a synthetic denial so
177
+ * the audit reservation is released before the typed error propagates.
178
+ */
179
+ const requestApproval = Effect.fn("requestApproval")(function* (request) {
180
+ const audit = yield* ApprovalAudit;
181
+ yield* audit.recordRequest(request);
182
+ const nowMillis = yield* Clock.currentTimeMillis;
183
+ const now = DateTime.toUtc(DateTime.makeUnsafe(nowMillis));
184
+ const remainingMillis = DateTime.toEpochMillis(request.expiresAt) - nowMillis;
185
+ let decision;
186
+ if (remainingMillis <= 0) decision = timeoutDenial(request, now);
187
+ else decision = yield* (yield* ApprovalResolver).request(request).pipe(Effect.timeoutOrElse({
188
+ duration: Duration.millis(remainingMillis),
189
+ orElse: () => Clock.currentTimeMillis.pipe(Effect.map((millis) => timeoutDenial(request, DateTime.toUtc(DateTime.makeUnsafe(millis)))))
190
+ }), Effect.catchTag("ApprovalTimedOut", () => Clock.currentTimeMillis.pipe(Effect.map((millis) => timeoutDenial(request, DateTime.toUtc(DateTime.makeUnsafe(millis)))))), Effect.tapError(() => Clock.currentTimeMillis.pipe(Effect.flatMap((millis) => audit.recordDecision(ApprovalDenied.make({
191
+ requestId: request.requestId,
192
+ decidedAt: DateTime.toUtc(DateTime.makeUnsafe(millis)),
193
+ resolver: "effect-agent.resolver-error",
194
+ reason: "Approval resolver failed before making a policy decision",
195
+ timedOut: false
196
+ }))))));
197
+ if (decision.requestId !== request.requestId) {
198
+ const mismatch = ApprovalDecisionMismatch.make({
199
+ expectedRequestId: request.requestId,
200
+ observedRequestId: decision.requestId
201
+ });
202
+ const denied = ApprovalDenied.make({
203
+ requestId: request.requestId,
204
+ decidedAt: DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis)),
205
+ resolver: "effect-agent.correlation-check",
206
+ reason: "Approval resolver returned a decision for another request",
207
+ timedOut: false
208
+ });
209
+ yield* audit.recordDecision(denied);
210
+ return yield* mismatch;
211
+ }
212
+ yield* audit.recordDecision(decision);
213
+ return decision;
214
+ });
215
+ /** Deterministic policy layer for tests and deny-by-default deployments. */
216
+ const ApprovalDenyAll = Layer.succeed(ApprovalResolver)({ request: (request) => Clock.currentTimeMillis.pipe(Effect.map((millis) => ApprovalDenied.make({
217
+ requestId: request.requestId,
218
+ decidedAt: DateTime.toUtc(DateTime.makeUnsafe(millis)),
219
+ resolver: "effect-agent.deny-all",
220
+ reason: "No approving policy is configured",
221
+ timedOut: false
222
+ }))) });
223
+ //#endregion
224
+ export { ApprovalApproved, ApprovalAudit, ApprovalAuditEvent, ApprovalAuditEvents, ApprovalAuditLimitExceeded, ApprovalAuditMemoryLive, ApprovalDecision, ApprovalDecisionMismatch, ApprovalDecisionRecorded, ApprovalDenied, ApprovalDenyAll, ApprovalRequest, ApprovalRequestDraft, ApprovalRequestRecorded, ApprovalResolver, ApprovalResolverError, ApprovalTimedOut, makeApprovalRequest, requestApproval, Approval_exports as t };
225
+
226
+ //# sourceMappingURL=Approval.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Approval.mjs","names":[],"sources":["../../src/capabilities/Approval.ts"],"sourcesContent":["import { Clock, Context, DateTime, Duration, Effect, Layer, Ref, Schema } from \"effect\";\n\nimport { ThreadId, RunId, ToolCallId } from \"../core/Identifiers.ts\";\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport { RedactedPreview, Redactor, type RedactionError } from \"./Redaction.ts\";\n\nconst MAX_APPROVAL_TARGETS = 32;\nconst MAX_APPROVAL_TARGET_BYTES = 64 * 1024;\nconst MAX_APPROVAL_AUDIT_EVENTS = 2_048;\n\nconst ApprovalTargets = Schema.Array(Schema.String.check(Schema.isMaxLength(2 * 1024)))\n .check(Schema.isMaxLength(MAX_APPROVAL_TARGETS))\n .pipe(\n Schema.refine(\n (targets): targets is ReadonlyArray<string> =>\n targets.reduce((total, target) => total + utf8ByteLength(target), 0) <=\n MAX_APPROVAL_TARGET_BYTES,\n { expected: `approval targets totaling at most ${MAX_APPROVAL_TARGET_BYTES} UTF-8 bytes` },\n ),\n );\n\nconst ApprovalRequestFields = {\n requestId: Schema.NonEmptyString,\n runId: RunId,\n threadId: ThreadId,\n toolCallId: ToolCallId,\n toolName: Schema.NonEmptyString,\n actionSummary: Schema.String.check(Schema.isMaxLength(2 * 1024)),\n resourceTargets: ApprovalTargets,\n risk: Schema.Literals([\"low\", \"medium\", \"high\", \"critical\"]),\n expiresAt: Schema.DateTimeUtcFromString,\n denial: Schema.Literals([\"terminal\", \"recoverable\"]),\n} as const;\n\n/** Decoded approval metadata before the Redactor owns Tool input preview creation. */\nexport class ApprovalRequestDraft extends Schema.Class<ApprovalRequestDraft>(\n \"@effect-agent/capabilities/ApprovalRequestDraft\",\n)(ApprovalRequestFields) {}\n\n/** Fully decoded, structurally redacted approval input. */\nexport class ApprovalRequest extends Schema.Class<ApprovalRequest>(\n \"@effect-agent/capabilities/ApprovalRequest\",\n)({\n ...ApprovalRequestFields,\n redactedInputPreview: RedactedPreview,\n}) {}\n\nexport class ApprovalApproved extends Schema.TaggedClass<ApprovalApproved>()(\"ApprovalApproved\", {\n requestId: Schema.NonEmptyString,\n decidedAt: Schema.DateTimeUtcFromString,\n resolver: Schema.NonEmptyString,\n}) {}\n\nexport class ApprovalDenied extends Schema.TaggedClass<ApprovalDenied>()(\"ApprovalDenied\", {\n requestId: Schema.NonEmptyString,\n decidedAt: Schema.DateTimeUtcFromString,\n resolver: Schema.NonEmptyString,\n reason: Schema.String.check(Schema.isMaxLength(2 * 1024)),\n timedOut: Schema.Boolean,\n}) {}\n\nexport const ApprovalDecision = Schema.Union([ApprovalApproved, ApprovalDenied]);\nexport type ApprovalDecision = typeof ApprovalDecision.Type;\n\n/** Resolver infrastructure failed before it could make a policy decision. */\nexport class ApprovalResolverError extends Schema.TaggedError<ApprovalResolverError>()(\n \"ApprovalResolverError\",\n { message: Schema.String },\n) {}\n\n/** The resolver explicitly observed its request deadline; callers turn this into a denial. */\nexport class ApprovalTimedOut extends Schema.TaggedError<ApprovalTimedOut>()(\"ApprovalTimedOut\", {\n requestId: Schema.NonEmptyString,\n}) {}\n\n/** First-class approval authority. Interactive, policy, and remote adapters implement this service. */\nexport class ApprovalResolver extends Context.Service<\n ApprovalResolver,\n {\n readonly request: (\n request: ApprovalRequest,\n ) => Effect.Effect<ApprovalDecision, ApprovalResolverError | ApprovalTimedOut>;\n }\n>()(\"@effect-agent/capabilities/ApprovalResolver\") {}\n\nexport class ApprovalRequestRecorded extends Schema.TaggedClass<ApprovalRequestRecorded>()(\n \"ApprovalRequestRecorded\",\n {\n sequence: Schema.Natural,\n recordedAt: Schema.DateTimeUtcFromString,\n request: ApprovalRequest,\n },\n) {}\n\nexport class ApprovalDecisionRecorded extends Schema.TaggedClass<ApprovalDecisionRecorded>()(\n \"ApprovalDecisionRecorded\",\n {\n sequence: Schema.Natural,\n recordedAt: Schema.DateTimeUtcFromString,\n decision: ApprovalDecision,\n },\n) {}\n\nexport const ApprovalAuditEvent = Schema.Union([ApprovalRequestRecorded, ApprovalDecisionRecorded]);\nexport type ApprovalAuditEvent = typeof ApprovalAuditEvent.Type;\n\nexport const ApprovalAuditEvents = Schema.Array(ApprovalAuditEvent).check(\n Schema.isMaxLength(MAX_APPROVAL_AUDIT_EVENTS),\n);\n\nexport class ApprovalAuditLimitExceeded extends Schema.TaggedError<ApprovalAuditLimitExceeded>()(\n \"ApprovalAuditLimitExceeded\",\n {\n limitValue: Schema.Natural,\n observedValue: Schema.Natural,\n },\n) {}\n\n/** A resolver or audit sink tried to associate a decision with another request. */\nexport class ApprovalDecisionMismatch extends Schema.TaggedError<ApprovalDecisionMismatch>()(\n \"ApprovalDecisionMismatch\",\n {\n expectedRequestId: Schema.NonEmptyString,\n observedRequestId: Schema.NonEmptyString,\n },\n) {}\n\n/** P2 semantic audit sink; durable runtimes replace this with canonical records. */\nexport class ApprovalAudit extends Context.Service<\n ApprovalAudit,\n {\n readonly recordRequest: (\n request: ApprovalRequest,\n ) => Effect.Effect<void, ApprovalAuditLimitExceeded>;\n readonly recordDecision: (\n decision: ApprovalDecision,\n ) => Effect.Effect<void, ApprovalAuditLimitExceeded | ApprovalDecisionMismatch>;\n readonly events: Effect.Effect<ReadonlyArray<ApprovalAuditEvent>>;\n }\n>()(\"@effect-agent/capabilities/ApprovalAudit\") {}\n\n/** Scoped in-memory audit projection with monotonic event order. */\nexport const ApprovalAuditMemoryLive = Layer.effect(\n ApprovalAudit,\n Effect.gen(function* () {\n interface AuditState {\n readonly events: ReadonlyArray<ApprovalAuditEvent>;\n readonly pending: ReadonlySet<string>;\n }\n const state = yield* Ref.make<AuditState>({ events: [], pending: new Set() });\n\n return ApprovalAudit.of({\n recordRequest: (request) =>\n Effect.gen(function* () {\n const recordedAt = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));\n\n const error = yield* Ref.modify(state, (current) => {\n // Each accepted request atomically reserves room for its decision.\n const reservedSize = current.events.length + current.pending.size + 2;\n\n if (reservedSize > MAX_APPROVAL_AUDIT_EVENTS) {\n return [\n ApprovalAuditLimitExceeded.make({\n limitValue: MAX_APPROVAL_AUDIT_EVENTS,\n observedValue: reservedSize,\n }),\n current,\n ] as const;\n }\n\n const event = ApprovalRequestRecorded.make({\n sequence: current.events.length,\n recordedAt,\n request,\n });\n\n return [\n undefined,\n {\n events: [...current.events, event],\n pending: new Set(current.pending).add(request.requestId),\n },\n ] as const;\n });\n\n if (error !== undefined) return yield* error;\n }),\n recordDecision: (decision) =>\n Effect.gen(function* () {\n const recordedAt = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));\n\n const error = yield* Ref.modify(state, (current) => {\n if (!current.pending.has(decision.requestId)) {\n return [\n ApprovalDecisionMismatch.make({\n expectedRequestId: [...current.pending][0] ?? \"no-pending-request\",\n observedRequestId: decision.requestId,\n }),\n current,\n ] as const;\n }\n const pending = new Set(current.pending);\n\n pending.delete(decision.requestId);\n\n const event = ApprovalDecisionRecorded.make({\n sequence: current.events.length,\n recordedAt,\n decision,\n });\n\n return [\n undefined,\n {\n events: [...current.events, event],\n pending,\n },\n ] as const;\n });\n\n if (error !== undefined) return yield* error;\n }),\n events: Ref.get(state).pipe(Effect.map((current) => current.events)),\n });\n }),\n);\n\n/** Construct an ApprovalRequest only after decoded input passes the configured Redactor. */\nexport const makeApprovalRequest = Effect.fn(\"makeApprovalRequest\")(function* (\n draft: ApprovalRequestDraft,\n decodedToolInput: unknown,\n): Effect.fn.Return<ApprovalRequest, RedactionError, Redactor> {\n const redactor = yield* Redactor;\n const redactedInputPreview = yield* redactor.redact(decodedToolInput);\n\n return ApprovalRequest.make({\n requestId: draft.requestId,\n runId: draft.runId,\n threadId: draft.threadId,\n toolCallId: draft.toolCallId,\n toolName: draft.toolName,\n actionSummary: draft.actionSummary,\n resourceTargets: draft.resourceTargets,\n risk: draft.risk,\n expiresAt: draft.expiresAt,\n denial: draft.denial,\n redactedInputPreview,\n });\n});\n\nconst timeoutDenial = (request: ApprovalRequest, decidedAt: DateTime.Utc): ApprovalDenied =>\n ApprovalDenied.make({\n requestId: request.requestId,\n decidedAt,\n resolver: \"effect-agent.timeout-deny\",\n reason: \"Approval request expired before a decision was available\",\n timedOut: true,\n });\n\n/**\n * Resolve with fail-closed deadline semantics and record request/decision audit\n * events around every successful, denied, timed-out, or resolver-failed\n * resolution. A resolver infrastructure failure records a synthetic denial so\n * the audit reservation is released before the typed error propagates.\n */\nexport const requestApproval = Effect.fn(\"requestApproval\")(function* (request: ApprovalRequest) {\n const audit = yield* ApprovalAudit;\n\n yield* audit.recordRequest(request);\n const nowMillis = yield* Clock.currentTimeMillis;\n const now = DateTime.toUtc(DateTime.makeUnsafe(nowMillis));\n const remainingMillis = DateTime.toEpochMillis(request.expiresAt) - nowMillis;\n\n let decision: ApprovalDecision;\n\n if (remainingMillis <= 0) {\n decision = timeoutDenial(request, now);\n } else {\n const resolver = yield* ApprovalResolver;\n\n decision = yield* resolver.request(request).pipe(\n Effect.timeoutOrElse({\n duration: Duration.millis(remainingMillis),\n orElse: () =>\n Clock.currentTimeMillis.pipe(\n Effect.map((millis) =>\n timeoutDenial(request, DateTime.toUtc(DateTime.makeUnsafe(millis))),\n ),\n ),\n }),\n Effect.catchTag(\"ApprovalTimedOut\", () =>\n Clock.currentTimeMillis.pipe(\n Effect.map((millis) =>\n timeoutDenial(request, DateTime.toUtc(DateTime.makeUnsafe(millis))),\n ),\n ),\n ),\n Effect.tapError(() =>\n Clock.currentTimeMillis.pipe(\n Effect.flatMap((millis) =>\n audit.recordDecision(\n ApprovalDenied.make({\n requestId: request.requestId,\n decidedAt: DateTime.toUtc(DateTime.makeUnsafe(millis)),\n resolver: \"effect-agent.resolver-error\",\n reason: \"Approval resolver failed before making a policy decision\",\n timedOut: false,\n }),\n ),\n ),\n ),\n ),\n );\n }\n if (decision.requestId !== request.requestId) {\n const mismatch = ApprovalDecisionMismatch.make({\n expectedRequestId: request.requestId,\n observedRequestId: decision.requestId,\n });\n\n const denied = ApprovalDenied.make({\n requestId: request.requestId,\n decidedAt: DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis)),\n resolver: \"effect-agent.correlation-check\",\n reason: \"Approval resolver returned a decision for another request\",\n timedOut: false,\n });\n\n yield* audit.recordDecision(denied);\n\n return yield* mismatch;\n }\n yield* audit.recordDecision(decision);\n\n return decision;\n});\n\n/** Deterministic policy layer for tests and deny-by-default deployments. */\nexport const ApprovalDenyAll = Layer.succeed(ApprovalResolver)({\n request: (request) =>\n Clock.currentTimeMillis.pipe(\n Effect.map((millis) =>\n ApprovalDenied.make({\n requestId: request.requestId,\n decidedAt: DateTime.toUtc(DateTime.makeUnsafe(millis)),\n resolver: \"effect-agent.deny-all\",\n reason: \"No approving policy is configured\",\n timedOut: false,\n }),\n ),\n ),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,uBAAuB;AAC7B,MAAM,4BAA4B;AAClC,MAAM,4BAA4B;AAElC,MAAM,kBAAkB,OAAO,MAAM,OAAO,OAAO,MAAM,OAAO,YAAY,IAAQ,CAAC,CAAC,CAAC,CACpF,MAAM,OAAO,YAAY,oBAAoB,CAAC,CAAC,CAC/C,KACC,OAAO,QACJ,YACC,QAAQ,QAAQ,OAAO,WAAW,QAAQ,eAAe,MAAM,GAAG,CAAC,KACnE,2BACF,EAAE,UAAU,qCAAqC,0BAA0B,cAAc,CAC3F,CACF;AAEF,MAAM,wBAAwB;CAC5B,WAAW,OAAO;CAClB,OAAO;CACP,UAAU;CACV,YAAY;CACZ,UAAU,OAAO;CACjB,eAAe,OAAO,OAAO,MAAM,OAAO,YAAY,IAAQ,CAAC;CAC/D,iBAAiB;CACjB,MAAM,OAAO,SAAS;EAAC;EAAO;EAAU;EAAQ;CAAU,CAAC;CAC3D,WAAW,OAAO;CAClB,QAAQ,OAAO,SAAS,CAAC,YAAY,aAAa,CAAC;AACrD;;AAGA,IAAa,uBAAb,cAA0C,OAAO,MAC/C,iDACF,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;;AAG1B,IAAa,kBAAb,cAAqC,OAAO,MAC1C,4CACF,CAAC,CAAC;CACA,GAAG;CACH,sBAAsB;AACxB,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,mBAAb,cAAsC,OAAO,YAA8B,CAAC,CAAC,oBAAoB;CAC/F,WAAW,OAAO;CAClB,WAAW,OAAO;CAClB,UAAU,OAAO;AACnB,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,iBAAb,cAAoC,OAAO,YAA4B,CAAC,CAAC,kBAAkB;CACzF,WAAW,OAAO;CAClB,WAAW,OAAO;CAClB,UAAU,OAAO;CACjB,QAAQ,OAAO,OAAO,MAAM,OAAO,YAAY,IAAQ,CAAC;CACxD,UAAU,OAAO;AACnB,CAAC,CAAC,CAAC,CAAC;AAEJ,MAAa,mBAAmB,OAAO,MAAM,CAAC,kBAAkB,cAAc,CAAC;;AAI/E,IAAa,wBAAb,cAA2C,OAAO,YAAmC,CAAC,CACpF,yBACA,EAAE,SAAS,OAAO,OAAO,CAC3B,CAAC,CAAC,CAAC;;AAGH,IAAa,mBAAb,cAAsC,OAAO,YAA8B,CAAC,CAAC,oBAAoB,EAC/F,WAAW,OAAO,eACpB,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,mBAAb,cAAsC,QAAQ,QAO5C,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC;AAEpD,IAAa,0BAAb,cAA6C,OAAO,YAAqC,CAAC,CACxF,2BACA;CACE,UAAU,OAAO;CACjB,YAAY,OAAO;CACnB,SAAS;AACX,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,2BAAb,cAA8C,OAAO,YAAsC,CAAC,CAC1F,4BACA;CACE,UAAU,OAAO;CACjB,YAAY,OAAO;CACnB,UAAU;AACZ,CACF,CAAC,CAAC,CAAC;AAEH,MAAa,qBAAqB,OAAO,MAAM,CAAC,yBAAyB,wBAAwB,CAAC;AAGlG,MAAa,sBAAsB,OAAO,MAAM,kBAAkB,CAAC,CAAC,MAClE,OAAO,YAAY,yBAAyB,CAC9C;AAEA,IAAa,6BAAb,cAAgD,OAAO,YAAwC,CAAC,CAC9F,8BACA;CACE,YAAY,OAAO;CACnB,eAAe,OAAO;AACxB,CACF,CAAC,CAAC,CAAC;;AAGH,IAAa,2BAAb,cAA8C,OAAO,YAAsC,CAAC,CAC1F,4BACA;CACE,mBAAmB,OAAO;CAC1B,mBAAmB,OAAO;AAC5B,CACF,CAAC,CAAC,CAAC;;AAGH,IAAa,gBAAb,cAAmC,QAAQ,QAWzC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC;;AAGjD,MAAa,0BAA0B,MAAM,OAC3C,eACA,OAAO,IAAI,aAAa;CAKtB,MAAM,QAAQ,OAAO,IAAI,KAAiB;EAAE,QAAQ,CAAC;EAAG,yBAAS,IAAI,IAAI;CAAE,CAAC;CAE5E,OAAO,cAAc,GAAG;EACtB,gBAAgB,YACd,OAAO,IAAI,aAAa;GACtB,MAAM,aAAa,SAAS,MAAM,SAAS,WAAW,OAAO,MAAM,iBAAiB,CAAC;GAErF,MAAM,QAAQ,OAAO,IAAI,OAAO,QAAQ,YAAY;IAElD,MAAM,eAAe,QAAQ,OAAO,SAAS,QAAQ,QAAQ,OAAO;IAEpE,IAAI,eAAe,2BACjB,OAAO,CACL,2BAA2B,KAAK;KAC9B,YAAY;KACZ,eAAe;IACjB,CAAC,GACD,OACF;IAGF,MAAM,QAAQ,wBAAwB,KAAK;KACzC,UAAU,QAAQ,OAAO;KACzB;KACA;IACF,CAAC;IAED,OAAO,CACL,KAAA,GACA;KACE,QAAQ,CAAC,GAAG,QAAQ,QAAQ,KAAK;KACjC,SAAS,IAAI,IAAI,QAAQ,OAAO,CAAC,CAAC,IAAI,QAAQ,SAAS;IACzD,CACF;GACF,CAAC;GAED,IAAI,UAAU,KAAA,GAAW,OAAO,OAAO;EACzC,CAAC;EACH,iBAAiB,aACf,OAAO,IAAI,aAAa;GACtB,MAAM,aAAa,SAAS,MAAM,SAAS,WAAW,OAAO,MAAM,iBAAiB,CAAC;GAErF,MAAM,QAAQ,OAAO,IAAI,OAAO,QAAQ,YAAY;IAClD,IAAI,CAAC,QAAQ,QAAQ,IAAI,SAAS,SAAS,GACzC,OAAO,CACL,yBAAyB,KAAK;KAC5B,mBAAmB,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC,MAAM;KAC9C,mBAAmB,SAAS;IAC9B,CAAC,GACD,OACF;IAEF,MAAM,UAAU,IAAI,IAAI,QAAQ,OAAO;IAEvC,QAAQ,OAAO,SAAS,SAAS;IAEjC,MAAM,QAAQ,yBAAyB,KAAK;KAC1C,UAAU,QAAQ,OAAO;KACzB;KACA;IACF,CAAC;IAED,OAAO,CACL,KAAA,GACA;KACE,QAAQ,CAAC,GAAG,QAAQ,QAAQ,KAAK;KACjC;IACF,CACF;GACF,CAAC;GAED,IAAI,UAAU,KAAA,GAAW,OAAO,OAAO;EACzC,CAAC;EACH,QAAQ,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,YAAY,QAAQ,MAAM,CAAC;CACrE,CAAC;AACH,CAAC,CACH;;AAGA,MAAa,sBAAsB,OAAO,GAAG,qBAAqB,CAAC,CAAC,WAClE,OACA,kBAC6D;CAE7D,MAAM,uBAAuB,QAAO,OADZ,SAAA,CACqB,OAAO,gBAAgB;CAEpE,OAAO,gBAAgB,KAAK;EAC1B,WAAW,MAAM;EACjB,OAAO,MAAM;EACb,UAAU,MAAM;EAChB,YAAY,MAAM;EAClB,UAAU,MAAM;EAChB,eAAe,MAAM;EACrB,iBAAiB,MAAM;EACvB,MAAM,MAAM;EACZ,WAAW,MAAM;EACjB,QAAQ,MAAM;EACd;CACF,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,SAA0B,cAC/C,eAAe,KAAK;CAClB,WAAW,QAAQ;CACnB;CACA,UAAU;CACV,QAAQ;CACR,UAAU;AACZ,CAAC;;;;;;;AAQH,MAAa,kBAAkB,OAAO,GAAG,iBAAiB,CAAC,CAAC,WAAW,SAA0B;CAC/F,MAAM,QAAQ,OAAO;CAErB,OAAO,MAAM,cAAc,OAAO;CAClC,MAAM,YAAY,OAAO,MAAM;CAC/B,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,SAAS,CAAC;CACzD,MAAM,kBAAkB,SAAS,cAAc,QAAQ,SAAS,IAAI;CAEpE,IAAI;CAEJ,IAAI,mBAAmB,GACrB,WAAW,cAAc,SAAS,GAAG;MAIrC,WAAW,QAAO,OAFM,iBAAA,CAEG,QAAQ,OAAO,CAAC,CAAC,KAC1C,OAAO,cAAc;EACnB,UAAU,SAAS,OAAO,eAAe;EACzC,cACE,MAAM,kBAAkB,KACtB,OAAO,KAAK,WACV,cAAc,SAAS,SAAS,MAAM,SAAS,WAAW,MAAM,CAAC,CAAC,CACpE,CACF;CACJ,CAAC,GACD,OAAO,SAAS,0BACd,MAAM,kBAAkB,KACtB,OAAO,KAAK,WACV,cAAc,SAAS,SAAS,MAAM,SAAS,WAAW,MAAM,CAAC,CAAC,CACpE,CACF,CACF,GACA,OAAO,eACL,MAAM,kBAAkB,KACtB,OAAO,SAAS,WACd,MAAM,eACJ,eAAe,KAAK;EAClB,WAAW,QAAQ;EACnB,WAAW,SAAS,MAAM,SAAS,WAAW,MAAM,CAAC;EACrD,UAAU;EACV,QAAQ;EACR,UAAU;CACZ,CAAC,CACH,CACF,CACF,CACF,CACF;CAEF,IAAI,SAAS,cAAc,QAAQ,WAAW;EAC5C,MAAM,WAAW,yBAAyB,KAAK;GAC7C,mBAAmB,QAAQ;GAC3B,mBAAmB,SAAS;EAC9B,CAAC;EAED,MAAM,SAAS,eAAe,KAAK;GACjC,WAAW,QAAQ;GACnB,WAAW,SAAS,MAAM,SAAS,WAAW,OAAO,MAAM,iBAAiB,CAAC;GAC7E,UAAU;GACV,QAAQ;GACR,UAAU;EACZ,CAAC;EAED,OAAO,MAAM,eAAe,MAAM;EAElC,OAAO,OAAO;CAChB;CACA,OAAO,MAAM,eAAe,QAAQ;CAEpC,OAAO;AACT,CAAC;;AAGD,MAAa,kBAAkB,MAAM,QAAQ,gBAAgB,CAAC,CAAC,EAC7D,UAAU,YACR,MAAM,kBAAkB,KACtB,OAAO,KAAK,WACV,eAAe,KAAK;CAClB,WAAW,QAAQ;CACnB,WAAW,SAAS,MAAM,SAAS,WAAW,MAAM,CAAC;CACrD,UAAU;CACV,QAAQ;CACR,UAAU;AACZ,CAAC,CACH,CACF,EACJ,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { Effect, Schema, Scope } from "effect";
2
+ declare namespace Budget_d_exports {
3
+ export { BudgetExceeded, BudgetLevel, BudgetNodeConflict, InvalidBudgetHierarchy, UsageBudgetLimits, UsageBudgetNode, UsageBudgetNodeConfig, UsageDelta, UsageTotals, makeUsageBudget, makeUsageBudgetRoot };
4
+ }
5
+ declare const BudgetLevel: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
6
+ type BudgetLevel = typeof BudgetLevel.Type;
7
+ declare const UsageTotals_base: Schema.Class<UsageTotals, Schema.Struct<{
8
+ /** Total input tokens across every model call, INCLUDING cache reads and writes at par. */
9
+ readonly inputTokens: Schema.Natural;
10
+ readonly outputTokens: Schema.Natural;
11
+ /** Informational split of `inputTokens` served from the provider prompt cache; never separately limited. */
12
+ readonly cacheReadInputTokens: Schema.Natural;
13
+ /** Informational split of `inputTokens` written to the provider prompt cache; never separately limited. */
14
+ readonly cacheWriteInputTokens: Schema.Natural;
15
+ /** The most recent model call's input tokens — the live model-context estimate (CAP-017). */
16
+ readonly lastInputTokens: Schema.Natural;
17
+ /** The most recent model call's output tokens. */
18
+ readonly lastOutputTokens: Schema.Natural;
19
+ readonly toolCalls: Schema.Natural;
20
+ readonly costMicrousd: Schema.Natural;
21
+ readonly elapsedMillis: Schema.Natural;
22
+ }>, {}>;
23
+ /** Fixed units avoid floating-point currency accounting: costs are micro-USD. */
24
+ declare class UsageTotals extends UsageTotals_base {}
25
+ declare const UsageDelta_base: Schema.Class<UsageDelta, Schema.Struct<{
26
+ /** `1` for a model-response boundary, `0` for a mid-pass tool charge; gates last-call tracking. */
27
+ readonly modelCalls: Schema.Natural;
28
+ /** Total input tokens of this boundary, INCLUDING cache reads and writes at par. */
29
+ readonly inputTokens: Schema.Natural;
30
+ readonly outputTokens: Schema.Natural;
31
+ /** Informational split of `inputTokens` served from the provider prompt cache; never separately limited. */
32
+ readonly cacheReadInputTokens: Schema.Natural;
33
+ /** Informational split of `inputTokens` written to the provider prompt cache; never separately limited. */
34
+ readonly cacheWriteInputTokens: Schema.Natural;
35
+ readonly toolCalls: Schema.Natural;
36
+ readonly costMicrousd: Schema.Natural;
37
+ }>, {}>;
38
+ /** Increment recorded at one model/tool accounting boundary. */
39
+ declare class UsageDelta extends UsageDelta_base {}
40
+ declare const UsageBudgetLimits_base: Schema.Class<UsageBudgetLimits, Schema.Struct<{
41
+ readonly maxInputTokens: Schema.optionalKey<Schema.Natural>;
42
+ readonly maxOutputTokens: Schema.optionalKey<Schema.Natural>;
43
+ readonly maxToolCalls: Schema.optionalKey<Schema.Natural>;
44
+ readonly maxCostMicrousd: Schema.optionalKey<Schema.Natural>;
45
+ readonly maxDurationMillis: Schema.optionalKey<Schema.Natural>;
46
+ }>, {}>;
47
+ /** All optional limits are finite when present; absent means not configured. */
48
+ declare class UsageBudgetLimits extends UsageBudgetLimits_base {}
49
+ declare const UsageBudgetNodeConfig_base: Schema.Class<UsageBudgetNodeConfig, Schema.Struct<{
50
+ readonly level: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
51
+ readonly id: Schema.NonEmptyString;
52
+ readonly limits: typeof UsageBudgetLimits;
53
+ }>, {}>;
54
+ /** Identity and local limits for one node in a global-to-Run budget hierarchy. */
55
+ declare class UsageBudgetNodeConfig extends UsageBudgetNodeConfig_base {}
56
+ declare const BudgetExceeded_base: Schema.Class<BudgetExceeded, Schema.TaggedStruct<"BudgetExceeded", {
57
+ readonly scopeLevel: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
58
+ readonly scopeId: Schema.NonEmptyString;
59
+ readonly limit: Schema.Literals<readonly ["input-tokens", "output-tokens", "tool-calls", "cost", "duration"]>;
60
+ readonly limitValue: Schema.Natural;
61
+ readonly observedValue: Schema.Natural;
62
+ }>, import("effect/Cause").YieldableError>;
63
+ /** Typed finite-budget rejection. A rejected increment is not committed at any hierarchy level. */
64
+ declare class BudgetExceeded extends BudgetExceeded_base {}
65
+ /** Hierarchical accounting authority. All ancestors share one atomic Ref-backed transaction. */
66
+ interface UsageBudgetNode {
67
+ readonly level: BudgetLevel;
68
+ readonly id: string;
69
+ /**
70
+ * Register or re-attach one child node. Re-attaching an already-registered
71
+ * `level:id` with identical limits returns a handle to the shared
72
+ * registration; different limits fail with BudgetNodeConflict rather than
73
+ * being silently ignored. Every returned handle owns one registration and
74
+ * must be retired when its lifetime ends; prefer `childScoped` when the
75
+ * lifetime already belongs to an Effect Scope.
76
+ */
77
+ readonly child: (config: UsageBudgetNodeConfig) => Effect.Effect<UsageBudgetNode, InvalidBudgetHierarchy | BudgetNodeConflict>;
78
+ /** Register a child whose registration is retired when the current Scope closes. */
79
+ readonly childScoped: (config: UsageBudgetNodeConfig) => Effect.Effect<UsageBudgetNode, InvalidBudgetHierarchy | BudgetNodeConflict, Scope.Scope>;
80
+ /**
81
+ * Release this handle's registration exactly once. Accumulated usage stays
82
+ * charged to every live ancestor; a node is reclaimed only after its last
83
+ * handle and every descendant have retired.
84
+ */
85
+ readonly retire: Effect.Effect<void>;
86
+ readonly consume: (delta: UsageDelta) => Effect.Effect<UsageTotals, BudgetExceeded>;
87
+ readonly snapshot: Effect.Effect<UsageTotals>;
88
+ /**
89
+ * Guard stalled model/tool work with the earliest configured ancestor deadline.
90
+ * The timeout is driven by Effect Clock and interrupts the guarded child effect.
91
+ */
92
+ readonly guard: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | BudgetExceeded, R>;
93
+ }
94
+ declare const InvalidBudgetHierarchy_base: Schema.Class<InvalidBudgetHierarchy, Schema.TaggedStruct<"InvalidBudgetHierarchy", {
95
+ readonly parentLevel: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
96
+ readonly childLevel: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
97
+ }>, import("effect/Cause").YieldableError>;
98
+ /** A child budget must move strictly inward through the declared hierarchy. */
99
+ declare class InvalidBudgetHierarchy extends InvalidBudgetHierarchy_base {}
100
+ declare const BudgetNodeConflict_base: Schema.Class<BudgetNodeConflict, Schema.TaggedStruct<"BudgetNodeConflict", {
101
+ readonly scopeLevel: Schema.Literals<readonly ["global", "tenant", "agent", "thread", "run"]>;
102
+ readonly scopeId: Schema.NonEmptyString;
103
+ }>, import("effect/Cause").YieldableError>;
104
+ /** A child `level:id` is already registered with different limits; neither set may win silently. */
105
+ declare class BudgetNodeConflict extends BudgetNodeConflict_base {}
106
+ /** Create the outermost node of a hierarchy. Child nodes share its atomic ledger. */
107
+ declare const makeUsageBudgetRoot: (config: UsageBudgetNodeConfig) => Effect.Effect<UsageBudgetNode, never, never>;
108
+ /** Compatibility constructor for a standalone Run budget. */
109
+ declare const makeUsageBudget: (limits: UsageBudgetLimits) => Effect.Effect<UsageBudgetNode>;
110
+ //#endregion
111
+ export { BudgetExceeded, BudgetLevel, BudgetNodeConflict, InvalidBudgetHierarchy, UsageBudgetLimits, UsageBudgetNode, UsageBudgetNodeConfig, UsageDelta, UsageTotals, makeUsageBudget, makeUsageBudgetRoot, Budget_d_exports as t };
112
+ //# sourceMappingURL=Budget.d.mts.map