effect-agent 0.1.0-beta.9 → 0.1.0-beta.91

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 (538) 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-CHipL2jG.mjs +4598 -0
  7. package/dist/AgentRuntime-CHipL2jG.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-D7gDKGjH.mjs +6368 -0
  13. package/dist/DurableAgentRuntime-D7gDKGjH.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-DyfzHNdv.d.mts +826 -0
  45. package/dist/Subagent-U5qXOFE8.mjs +1469 -0
  46. package/dist/Subagent-U5qXOFE8.mjs.map +1 -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 +8 -0
  61. package/dist/ToolExposure.mjs +21 -0
  62. package/dist/ToolExposure.mjs.map +1 -0
  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 +436 -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 +89 -6
  368. package/dist/index.mjs +98 -6
  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 +273 -0
  388. package/dist/sandbox/ProtectedBrowser.mjs +287 -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 -40
  398. package/src/Ephemeral.ts +17 -0
  399. package/src/ToolExposure.ts +2 -0
  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 +778 -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 +10162 -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 +97 -22
  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 +436 -0
  538. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,142 @@
1
+ import { Duration, Schema } from "effect";
2
+
3
+ import { AgentId, DelegationId } from "../../core/Identifiers.ts";
4
+ import { SubagentDelegationCaps, SubagentReservationAmounts } from "../../core/SubagentContract.ts";
5
+
6
+ const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));
7
+ const Natural = Schema.Natural;
8
+
9
+ const FinitePositiveDuration = Schema.Duration.pipe(
10
+ Schema.refine(
11
+ (duration): duration is Duration.Duration =>
12
+ Duration.isFinite(duration) && Duration.isPositive(duration),
13
+ { expected: "a finite positive duration" },
14
+ ),
15
+ );
16
+
17
+ const SubagentPolicyFields = Schema.Struct({
18
+ /** Total invocation slots, including reserved descendants, available through this delegation budget. */
19
+ maxChildren: PositiveInt,
20
+ /** Concurrently executing children per parent Run. */
21
+ maxConcurrency: PositiveInt,
22
+ /** Invocation slots held for the entire descendant subtree; omitted reserves zero. */
23
+ descendantInvocations: Schema.optionalKey(Natural),
24
+ /** Model turns reserved for each child invocation. */
25
+ maxTurns: PositiveInt,
26
+ /** Tool Calls reserved for each child invocation. */
27
+ maxToolCalls: PositiveInt,
28
+ /** Wall-clock duration reserved for each child invocation. */
29
+ maxDuration: FinitePositiveDuration,
30
+ maxInputTokens: Schema.optionalKey(PositiveInt),
31
+ maxOutputTokens: Schema.optionalKey(PositiveInt),
32
+ maxCostMicrousd: Schema.optionalKey(Natural),
33
+ maxResultBytes: Schema.optionalKey(PositiveInt),
34
+ });
35
+
36
+ type SubagentPolicyFields = typeof SubagentPolicyFields.Type;
37
+
38
+ /** Inputs normalized and validated by `SubagentPolicy.make`. */
39
+ export type SubagentPolicyInput = Readonly<
40
+ Omit<SubagentPolicyFields, "maxDuration"> & {
41
+ /** Finite, positive wall-clock duration accepted in any Effect Duration input form. */
42
+ readonly maxDuration: Duration.Input;
43
+ }
44
+ >;
45
+
46
+ /**
47
+ * Finite delegation bounds declared by one Subagent capability.
48
+ * Structural limits are hard limits; token
49
+ * and cost caps are optional and enforced only as honestly as provider
50
+ * reporting allows.
51
+ */
52
+ export class SubagentPolicy extends Schema.Class<SubagentPolicy>(
53
+ "@effect-agent/capabilities/SubagentPolicy",
54
+ )(SubagentPolicyFields) {
55
+ /** Normalize and validate finite delegation bounds, throwing on invalid input. */
56
+ static override make(input: SubagentPolicyInput): SubagentPolicy {
57
+ return super.make({
58
+ ...input,
59
+ maxDuration: Duration.fromInputUnsafe(input.maxDuration),
60
+ });
61
+ }
62
+ }
63
+
64
+ const BoundedFailureText = Schema.String.check(Schema.isMaxLength(4 * 1024));
65
+
66
+ /**
67
+ * Delegation preflight denied before any child started.
68
+ * No reservation, identity, or event exists for the
69
+ * denied invocation; retry requires a new authorized parent Tool Call.
70
+ */
71
+ export class SubagentPrestartDenied extends Schema.TaggedError<SubagentPrestartDenied>()(
72
+ "SubagentPrestartDenied",
73
+ {
74
+ delegationId: DelegationId,
75
+ targetAgentId: AgentId,
76
+ reason: Schema.Literals(["nested-delegation", "grant-violation", "budget-conflict"]),
77
+ message: BoundedFailureText,
78
+ },
79
+ ) {}
80
+
81
+ /**
82
+ * Input or result projection failed its Schema or bounds.
83
+ * Fail closed: the message is a fixed description and
84
+ * never carries the raw child value.
85
+ */
86
+ export class SubagentProjectionFailure extends Schema.TaggedError<SubagentProjectionFailure>()(
87
+ "SubagentProjectionFailure",
88
+ {
89
+ delegationId: DelegationId,
90
+ stage: Schema.Literals(["input", "result"]),
91
+ message: BoundedFailureText,
92
+ },
93
+ ) {}
94
+
95
+ export {
96
+ SubagentExecutionFailureClassification,
97
+ SubagentExecutionFailure,
98
+ maxErrorTagLength,
99
+ } from "../../core/SubagentContract.ts";
100
+
101
+ const millisOfMaxDuration = (policy: SubagentPolicy): number =>
102
+ Math.max(1, Math.ceil(Duration.toMillis(policy.maxDuration)));
103
+
104
+ /**
105
+ * Derive the parent-Run delegation caps registered with
106
+ * `SubagentReservations` from one delegation policy: the per-invocation
107
+ * bounds scaled by `maxChildren` plus the invocation and concurrency limits.
108
+ */
109
+ export const delegationCapsFromPolicy = (policy: SubagentPolicy): SubagentDelegationCaps =>
110
+ SubagentDelegationCaps.make({
111
+ maxTotalChildInvocations: policy.maxChildren,
112
+ maxConcurrentChildren: policy.maxConcurrency,
113
+ maxTurns: policy.maxChildren * policy.maxTurns,
114
+ maxToolCalls: policy.maxChildren * policy.maxToolCalls,
115
+ maxDurationMillis: policy.maxChildren * millisOfMaxDuration(policy),
116
+ ...(policy.maxInputTokens === undefined
117
+ ? {}
118
+ : { maxInputTokens: policy.maxChildren * policy.maxInputTokens }),
119
+ ...(policy.maxOutputTokens === undefined
120
+ ? {}
121
+ : { maxOutputTokens: policy.maxChildren * policy.maxOutputTokens }),
122
+ ...(policy.maxCostMicrousd === undefined
123
+ ? {}
124
+ : { maxCostMicrousd: policy.maxChildren * policy.maxCostMicrousd }),
125
+ ...(policy.maxResultBytes === undefined
126
+ ? {}
127
+ : { maxResultBytes: policy.maxChildren * policy.maxResultBytes }),
128
+ });
129
+
130
+ /** Derive the all-or-nothing per-invocation reservation from one delegation policy. */
131
+ export const delegationAllocationFromPolicy = (
132
+ policy: SubagentPolicy,
133
+ ): SubagentReservationAmounts =>
134
+ SubagentReservationAmounts.make({
135
+ turns: policy.maxTurns,
136
+ toolCalls: policy.maxToolCalls,
137
+ durationMillis: millisOfMaxDuration(policy),
138
+ inputTokens: policy.maxInputTokens ?? 0,
139
+ outputTokens: policy.maxOutputTokens ?? 0,
140
+ costMicrousd: policy.maxCostMicrousd ?? 0,
141
+ resultBytes: policy.maxResultBytes ?? 0,
142
+ });
@@ -0,0 +1,235 @@
1
+ import { Duration } from "effect";
2
+
3
+ import type { AnyDefinition } from "../../core/Agent.ts";
4
+ import { AgentPolicy } from "../../core/AgentPolicy.ts";
5
+ import {
6
+ SubagentDelegationCaps,
7
+ type SubagentBudgetReservation,
8
+ } from "../../core/SubagentContract.ts";
9
+ import {
10
+ SubagentPolicy,
11
+ delegationCapsFromPolicy,
12
+ delegationAllocationFromPolicy,
13
+ } from "./subagent-contract.ts";
14
+
15
+ export const resolveSubagentPolicy = (
16
+ delegation: {
17
+ readonly target: Pick<AnyDefinition, "policy" | "policyOverrides">;
18
+ readonly policy?: SubagentPolicy | undefined;
19
+ },
20
+ parent: AgentPolicy,
21
+ parentCaps?: SubagentDelegationCaps,
22
+ mode: "root-attached" | "conserved" = "conserved",
23
+ resolvedTarget?: AgentPolicy,
24
+ ) => {
25
+ // A root attached declaration has its own explicit pool. Child overrides retain
26
+ // that established behavior; background and inherited subtree launches also obey
27
+ // the source's own ceilings, before their shared reservation checks the residual.
28
+ const parentCeiling = mode === "conserved" ? parent : undefined;
29
+
30
+ const inherited =
31
+ resolvedTarget ??
32
+ AgentPolicy.resolve(delegation.target.policyOverrides ?? delegation.target.policy, parent);
33
+
34
+ const policy =
35
+ delegation.policy ??
36
+ SubagentPolicy.make({
37
+ maxChildren: parent.maxToolCalls,
38
+ maxConcurrency: parent.toolConcurrency,
39
+ maxTurns: Math.min(inherited.maxTurns, parent.maxTurns),
40
+ maxToolCalls: Math.min(inherited.maxToolCalls, parent.maxToolCalls),
41
+ maxDuration: Duration.min(inherited.maxDuration, parent.maxDuration),
42
+ ...(parent.tokenBudget === undefined
43
+ ? {}
44
+ : { maxInputTokens: parent.tokenBudget, maxOutputTokens: parent.tokenBudget }),
45
+ ...(parent.costBudgetMicrousd === undefined
46
+ ? {}
47
+ : { maxCostMicrousd: parent.costBudgetMicrousd }),
48
+ maxResultBytes: parent.toolResultBounds.maxBytes,
49
+ });
50
+
51
+ const tokenCeiling =
52
+ policy.maxInputTokens === undefined || policy.maxOutputTokens === undefined
53
+ ? Math.min(inherited.tokenBudget ?? Infinity, parentCeiling?.tokenBudget ?? Infinity)
54
+ : Math.min(
55
+ inherited.tokenBudget ?? Infinity,
56
+ parentCeiling?.tokenBudget ?? Infinity,
57
+ policy.maxInputTokens + policy.maxOutputTokens,
58
+ );
59
+
60
+ const childPolicy = AgentPolicy.make({
61
+ ...inherited,
62
+ maxTurns: Math.min(inherited.maxTurns, policy.maxTurns, parentCeiling?.maxTurns ?? Infinity),
63
+ maxToolCalls: Math.min(
64
+ inherited.maxToolCalls,
65
+ policy.maxToolCalls,
66
+ parentCeiling?.maxToolCalls ?? Infinity,
67
+ ),
68
+ maxDuration: Duration.min(
69
+ Duration.min(inherited.maxDuration, policy.maxDuration),
70
+ parentCeiling?.maxDuration ?? Duration.infinity,
71
+ ),
72
+ toolConcurrency: Math.min(
73
+ inherited.toolConcurrency,
74
+ parentCeiling?.toolConcurrency ?? Infinity,
75
+ ),
76
+ ...(parentCeiling === undefined
77
+ ? {}
78
+ : {
79
+ toolResultBounds: {
80
+ maxBytes: Math.min(
81
+ inherited.toolResultBounds.maxBytes,
82
+ parentCeiling.toolResultBounds.maxBytes,
83
+ Math.max(256, policy.maxResultBytes ?? Infinity),
84
+ ),
85
+ },
86
+ }),
87
+ ...(tokenCeiling === Infinity
88
+ ? {}
89
+ : {
90
+ tokenBudget: tokenCeiling,
91
+ completionReserveTokens: Math.min(inherited.completionReserveTokens, tokenCeiling),
92
+ }),
93
+ ...(Math.min(
94
+ inherited.costBudgetMicrousd ?? Infinity,
95
+ parentCeiling?.costBudgetMicrousd ?? Infinity,
96
+ policy.maxCostMicrousd ?? Infinity,
97
+ ) === Infinity
98
+ ? {}
99
+ : {
100
+ costBudgetMicrousd: Math.min(
101
+ inherited.costBudgetMicrousd ?? Infinity,
102
+ parentCeiling?.costBudgetMicrousd ?? Infinity,
103
+ policy.maxCostMicrousd ?? Infinity,
104
+ ),
105
+ }),
106
+ });
107
+
108
+ const caps =
109
+ parentCaps ??
110
+ (delegation.policy === undefined
111
+ ? SubagentDelegationCaps.make({
112
+ maxTotalChildInvocations: parent.maxToolCalls,
113
+ maxConcurrentChildren: parent.toolConcurrency,
114
+ maxTurns: parent.maxTurns,
115
+ maxToolCalls: parent.maxToolCalls,
116
+ maxDurationMillis: Math.ceil(Duration.toMillis(parent.maxDuration)),
117
+ ...(parent.tokenBudget === undefined
118
+ ? {}
119
+ : { maxInputTokens: parent.tokenBudget, maxOutputTokens: parent.tokenBudget }),
120
+ ...(parent.costBudgetMicrousd === undefined
121
+ ? {}
122
+ : { maxCostMicrousd: parent.costBudgetMicrousd }),
123
+ })
124
+ : delegationCapsFromPolicy(policy));
125
+
126
+ return { policy, childPolicy, allocation: delegationAllocationFromPolicy(policy), caps };
127
+ };
128
+
129
+ export const resolveToolCallAllowance = <Parameters>(
130
+ option:
131
+ | {
132
+ readonly default: number;
133
+ readonly fromParameters?: (parameters: Parameters) => number | undefined;
134
+ }
135
+ | undefined,
136
+ parameters: Parameters,
137
+ policy: SubagentPolicy,
138
+ childPolicy: AgentPolicy,
139
+ ): number => {
140
+ if (option === undefined) return childPolicy.maxToolCalls;
141
+ const extracted = option.fromParameters?.(parameters);
142
+
143
+ // A non-finite parameter falls back to the author default, then the reservation.
144
+ const requested =
145
+ extracted !== undefined && Number.isFinite(extracted)
146
+ ? extracted
147
+ : Number.isFinite(option.default)
148
+ ? option.default
149
+ : policy.maxToolCalls;
150
+
151
+ return Math.min(
152
+ Math.max(1, Math.floor(requested)),
153
+ policy.maxToolCalls,
154
+ childPolicy.maxToolCalls,
155
+ );
156
+ };
157
+
158
+ /** Conservative subtree remainder after reserving this Run's own full execution ceiling. */
159
+ export const residualSubagentCaps = (
160
+ declared: SubagentDelegationCaps,
161
+ parent: AgentPolicy,
162
+ inherited: SubagentBudgetReservation,
163
+ independentRun = false,
164
+ ): SubagentDelegationCaps => {
165
+ const allocation = inherited.allocation;
166
+
167
+ const remaining = (allocated: number, own: number, cap: number | undefined) =>
168
+ Math.min(cap ?? Infinity, Math.max(0, allocated - own));
169
+
170
+ return SubagentDelegationCaps.make({
171
+ maxTotalChildInvocations: Math.min(
172
+ declared.maxTotalChildInvocations ?? Infinity,
173
+ inherited.descendantInvocations ?? 0,
174
+ ),
175
+ maxConcurrentChildren: Math.min(
176
+ declared.maxConcurrentChildren ?? Infinity,
177
+ parent.toolConcurrency,
178
+ inherited.descendantInvocations ?? 0,
179
+ ),
180
+ maxTurns: remaining(allocation.turns, parent.maxTurns, declared.maxTurns),
181
+ maxToolCalls: remaining(allocation.toolCalls, parent.maxToolCalls, declared.maxToolCalls),
182
+ maxDurationMillis: remaining(
183
+ allocation.durationMillis,
184
+ Math.ceil(Duration.toMillis(parent.maxDuration)),
185
+ declared.maxDurationMillis,
186
+ ),
187
+ ...(independentRun &&
188
+ inherited.caps.maxInputTokens === undefined &&
189
+ allocation.inputTokens === 0 &&
190
+ parent.tokenBudget === undefined
191
+ ? declared.maxInputTokens === undefined
192
+ ? {}
193
+ : { maxInputTokens: declared.maxInputTokens }
194
+ : {
195
+ maxInputTokens: remaining(
196
+ allocation.inputTokens,
197
+ parent.tokenBudget ?? allocation.inputTokens,
198
+ declared.maxInputTokens,
199
+ ),
200
+ }),
201
+ ...(independentRun &&
202
+ inherited.caps.maxOutputTokens === undefined &&
203
+ allocation.outputTokens === 0 &&
204
+ parent.tokenBudget === undefined
205
+ ? declared.maxOutputTokens === undefined
206
+ ? {}
207
+ : { maxOutputTokens: declared.maxOutputTokens }
208
+ : {
209
+ maxOutputTokens: remaining(
210
+ allocation.outputTokens,
211
+ parent.tokenBudget ?? allocation.outputTokens,
212
+ declared.maxOutputTokens,
213
+ ),
214
+ }),
215
+ ...(independentRun &&
216
+ inherited.caps.maxCostMicrousd === undefined &&
217
+ allocation.costMicrousd === 0 &&
218
+ parent.costBudgetMicrousd === undefined
219
+ ? declared.maxCostMicrousd === undefined
220
+ ? {}
221
+ : { maxCostMicrousd: declared.maxCostMicrousd }
222
+ : {
223
+ maxCostMicrousd: remaining(
224
+ allocation.costMicrousd,
225
+ parent.costBudgetMicrousd ?? allocation.costMicrousd,
226
+ declared.maxCostMicrousd,
227
+ ),
228
+ }),
229
+ maxResultBytes: remaining(
230
+ allocation.resultBytes,
231
+ parent.toolResultBounds.maxBytes,
232
+ declared.maxResultBytes,
233
+ ),
234
+ });
235
+ };
@@ -0,0 +1,261 @@
1
+ import { Effect, Schema } from "effect";
2
+
3
+ import { utf8ByteLength } from "../../core/internal/utf8.ts";
4
+ import { Receipt } from "../../core/Receipt.ts";
5
+ import { type WorkerReport, WorkerCompletion } from "../../core/Worker.ts";
6
+ import {
7
+ WorkerReportPreparationFailure,
8
+ type WorkerReporting,
9
+ type WorkerRunReport,
10
+ } from "../../engine/SubagentHost.ts";
11
+ import { type Declaration } from "./subagent-background.ts";
12
+ import { SubagentExecutionFailure } from "./subagent-contract.ts";
13
+
14
+ export { WorkerReport } from "../../core/Worker.ts";
15
+
16
+ const projectReport = <
17
+ const Name extends string,
18
+ Input extends Schema.Top,
19
+ Output extends Schema.Top,
20
+ Parameters extends Schema.Top,
21
+ Success extends Schema.Top,
22
+ Failure extends Schema.Top,
23
+ Prepare,
24
+ Project,
25
+ >(
26
+ declaration: Declaration<Name, Input, Output, Parameters, Success, Failure, Prepare, Project>,
27
+ ) =>
28
+ Effect.fn("Subagent.projectReport")(function* (report: WorkerRunReport) {
29
+ const { worker, observation } = report;
30
+ const invalid = () => WorkerReportPreparationFailure.make({ stage: "projection" });
31
+
32
+ if (
33
+ worker.delegationId !== declaration.delegationId ||
34
+ worker.targetAgentId !== declaration.target.id ||
35
+ observation.receipt.threadId !== worker.threadId
36
+ )
37
+ return yield* invalid();
38
+
39
+ const base = {
40
+ _tag: "Settled" as const,
41
+ worker,
42
+ receipt: yield* Schema.decodeEffect(Receipt)(observation.receipt).pipe(
43
+ Effect.mapError(invalid),
44
+ ),
45
+ runId: observation.runId,
46
+ settlementId: observation.settlementId,
47
+ };
48
+
49
+ let projected: WorkerReport<Success>;
50
+ let encodedResult: Schema.Json = null;
51
+
52
+ if (observation.outcome === "completed") {
53
+ const parameters = yield* Schema.decodeUnknownEffect(declaration.parameters)(
54
+ observation.encodedParameters,
55
+ ).pipe(Effect.mapError(invalid));
56
+
57
+ const output = yield* Schema.decodeUnknownEffect(declaration.target.output)(
58
+ observation.encodedResult,
59
+ ).pipe(Effect.mapError(invalid));
60
+
61
+ const result = yield* declaration.projectResult(
62
+ output,
63
+ { budgetExhausted: observation.budgetExhausted },
64
+ parameters,
65
+ );
66
+
67
+ const encoded = yield* Schema.encodeEffect(declaration.success)(result).pipe(
68
+ Effect.mapError(invalid),
69
+ );
70
+
71
+ const json = yield* Schema.decodeUnknownEffect(Schema.Json)(encoded).pipe(
72
+ Effect.mapError(invalid),
73
+ );
74
+
75
+ if (
76
+ utf8ByteLength(JSON.stringify(json)) >
77
+ (declaration.policy?.maxResultBytes ?? declaration.target.policy.toolResultBounds.maxBytes)
78
+ )
79
+ return yield* invalid();
80
+ projected = { ...base, outcome: "completed", result };
81
+ encodedResult = json;
82
+ } else {
83
+ projected = {
84
+ ...base,
85
+ outcome: observation.outcome,
86
+ failure: SubagentExecutionFailure.make({
87
+ delegationId: declaration.delegationId,
88
+ targetAgentId: declaration.target.id,
89
+ classification: observation.outcome === "failed" ? "child-failed" : "child-aborted",
90
+ childThreadId: worker.threadId,
91
+ childSubmissionId: observation.receipt.submissionId,
92
+ childRunId: observation.runId,
93
+ errorTag: observation.outcome === "failed" ? "WorkerFailed" : "WorkerAborted",
94
+ message:
95
+ observation.outcome === "failed" ? "Worker input failed" : "Worker input was aborted",
96
+ }),
97
+ };
98
+ }
99
+
100
+ return { projected, encodedResult };
101
+ });
102
+
103
+ /** Framework reporting shares the same bounded declaration projection as custom mapping. */
104
+ export const automaticReporting = <
105
+ const Name extends string,
106
+ Input extends Schema.Top,
107
+ Output extends Schema.Top,
108
+ Parameters extends Schema.Top,
109
+ Success extends Schema.Top,
110
+ Failure extends Schema.Top,
111
+ Prepare,
112
+ Project,
113
+ >(
114
+ declaration: Declaration<Name, Input, Output, Parameters, Success, Failure, Prepare, Project>,
115
+ ) => ({
116
+ delegationId: declaration.delegationId,
117
+ target: declaration.target,
118
+ mode: "standard" as const,
119
+ prepare: Effect.fn("Subagent.automaticReport")(function* (report: WorkerRunReport) {
120
+ const { projected, encodedResult } = yield* projectReport(declaration)(report);
121
+
122
+ const encoded =
123
+ projected.outcome === "completed"
124
+ ? { ...projected, result: encodedResult }
125
+ : {
126
+ ...projected,
127
+ failure: yield* Schema.encodeEffect(SubagentExecutionFailure)(projected.failure).pipe(
128
+ Effect.mapError(() => WorkerReportPreparationFailure.make({ stage: "projection" })),
129
+ ),
130
+ };
131
+
132
+ const message = yield* Schema.decodeEffect(WorkerCompletion)({
133
+ _tag: "WorkerCompletion",
134
+ schemaVersion: 1,
135
+ report: encoded,
136
+ budgetExhausted: report.observation.budgetExhausted,
137
+ }).pipe(Effect.mapError(() => WorkerReportPreparationFailure.make({ stage: "projection" })));
138
+
139
+ return { encodedInput: null, message };
140
+ }),
141
+ });
142
+
143
+ /**
144
+ * Define an optional application-specific conversion for `background({ reportToParent: report })`.
145
+ * Existing Agent Registration `reporting` arrays remain supported. The input Schema must be the coordinator Definition's exact input Schema.
146
+ * Preparation is bounded by the durable host; a retained prepared envelope is never reprojected
147
+ * during delivery retries. The callback should be deterministic and have no external side effects.
148
+ */
149
+ export const reporting = <
150
+ const Name extends string,
151
+ Input extends Schema.Top,
152
+ Output extends Schema.Top,
153
+ Parameters extends Schema.Top,
154
+ Success extends Schema.Top,
155
+ Failure extends Schema.Top,
156
+ Prepare,
157
+ Project,
158
+ CoordinatorInput extends Schema.Top,
159
+ ReportFailure extends Schema.Top = typeof Schema.Never,
160
+ ReportRequirements = never,
161
+ >(
162
+ declaration: Declaration<Name, Input, Output, Parameters, Success, Failure, Prepare, Project>,
163
+ options: {
164
+ readonly input: CoordinatorInput;
165
+ readonly failure?: ReportFailure;
166
+ readonly prepare: (
167
+ report: WorkerReport<Success>,
168
+ ) => Effect.Effect<CoordinatorInput["Type"], ReportFailure["Type"], ReportRequirements>;
169
+ },
170
+ ): WorkerReporting<
171
+ Failure["Type"] | ReportFailure["Type"],
172
+ | Parameters["DecodingServices"]
173
+ | Output["DecodingServices"]
174
+ | Success["EncodingServices"]
175
+ | CoordinatorInput["EncodingServices"]
176
+ | Project
177
+ | ReportRequirements
178
+ > => {
179
+ const prepare = Effect.fn("Subagent.reporting.prepare")(function* (report: WorkerRunReport) {
180
+ const { projected } = yield* projectReport(declaration)(report);
181
+ const input = yield* options.prepare(projected);
182
+
183
+ const encoded = yield* Schema.encodeEffect(options.input)(input).pipe(
184
+ Effect.mapError(() => WorkerReportPreparationFailure.make({ stage: "input" })),
185
+ );
186
+
187
+ const encodedInput = yield* Schema.decodeUnknownEffect(Schema.Json)(encoded).pipe(
188
+ Effect.mapError(() => WorkerReportPreparationFailure.make({ stage: "input" })),
189
+ );
190
+
191
+ return { encodedInput };
192
+ });
193
+
194
+ return Object.freeze({
195
+ delegationId: declaration.delegationId,
196
+ target: declaration.target,
197
+ input: options.input,
198
+ prepare,
199
+ });
200
+ };
201
+
202
+ /**
203
+ * Adapt a report expressed in a receiving worker declaration's Parameters to its Agent input.
204
+ * Use this on that worker's registration when it can itself launch reporting workers. This
205
+ * explicit conversion preserves custom Parameters and charges the next input to its ancestor.
206
+ */
207
+ export const reportingToWorker = <
208
+ E,
209
+ R,
210
+ const Name extends string,
211
+ Input extends Schema.Top,
212
+ Output extends Schema.Top,
213
+ Parameters extends Schema.Top,
214
+ Success extends Schema.Top,
215
+ Failure extends Schema.Top,
216
+ Prepare,
217
+ Project,
218
+ >(
219
+ report: WorkerReporting<E, R>,
220
+ destination: Declaration<Name, Input, Output, Parameters, Success, Failure, Prepare, Project>,
221
+ ): WorkerReporting<
222
+ E | Failure["Type"],
223
+ R | Prepare | Parameters["DecodingServices"] | Input["EncodingServices"]
224
+ > => {
225
+ if (report.input !== destination.parameters) {
226
+ throw new TypeError(
227
+ "Worker reporting must use the destination declaration's Parameters Schema",
228
+ );
229
+ }
230
+
231
+ return Object.freeze({
232
+ delegationId: report.delegationId,
233
+ target: report.target,
234
+ input: destination.target.input,
235
+ destination: { delegationId: destination.delegationId, target: destination.target },
236
+ prepare: Effect.fn("Subagent.reportingToWorker.prepare")(function* (run: WorkerRunReport) {
237
+ const encodedParameters = (yield* report.prepare(run)).encodedInput;
238
+ const invalid = () => WorkerReportPreparationFailure.make({ stage: "input" });
239
+
240
+ const parameters = yield* Schema.decodeEffect(destination.parameters)(encodedParameters).pipe(
241
+ Effect.mapError(invalid),
242
+ );
243
+
244
+ const input = yield* destination.prepareInput(parameters, {
245
+ source: "programmatic",
246
+ delegationId: destination.delegationId,
247
+ parent: { agentId: run.context.source.agentId, threadId: run.context.source.threadId },
248
+ });
249
+
250
+ const encoded = yield* Schema.encodeEffect(destination.target.input)(input).pipe(
251
+ Effect.mapError(invalid),
252
+ );
253
+
254
+ const encodedInput = yield* Schema.decodeUnknownEffect(Schema.Json)(encoded).pipe(
255
+ Effect.mapError(invalid),
256
+ );
257
+
258
+ return { encodedInput, encodedParameters };
259
+ }),
260
+ });
261
+ };
@@ -0,0 +1,10 @@
1
+ import { Encoding } from "effect";
2
+
3
+ /** Encode through Effect without requiring browser or Node ambient types in consumers. */
4
+ export const utf8Bytes = (value: string): Uint8Array => {
5
+ const hex = Encoding.encodeHex(value);
6
+
7
+ return Uint8Array.from({ length: hex.length / 2 }, (_, index) =>
8
+ Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16),
9
+ );
10
+ };