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

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-sOrBVu4B.mjs +6366 -0
  13. package/dist/DurableAgentRuntime-sOrBVu4B.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 +10328 -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,722 @@
1
+ import { Effect, Option, Schema, type Layer } from "effect";
2
+ import { Tool, Toolkit } from "effect/unstable/ai";
3
+
4
+ import { ToolExecutionClass as ToolExecutionClassAnnotation } from "../engine/DurableStep.ts";
5
+ import {
6
+ CapturePageContent,
7
+ CapturePageLinks,
8
+ CapturePageMarkdown,
9
+ CapturePageScrape,
10
+ CapturePageStructured,
11
+ PageCapture,
12
+ PageCaptureLimits,
13
+ PageCaptureRequest,
14
+ PageCaptureResponseFormat,
15
+ PageResourcePolicy,
16
+ PageScrapeCaptured,
17
+ PageUrlTarget,
18
+ type PageCaptureAction,
19
+ type PageCaptureEngine,
20
+ type PageCaptureError,
21
+ } from "../sandbox/PageCapture.ts";
22
+
23
+ /**
24
+ * Web capture (capability spec §9.2): native Effect AI Tools over the
25
+ * stateless `PageCapture` port. The builders follow the Delegation pattern:
26
+ * every security-relevant choice — the host allowlist, the action set, the
27
+ * engine, the response byte budget — is fixed at construction and never
28
+ * model-selectable. Construction fails closed on an invalid policy. The
29
+ * handler Layer's `PageCapture` and Schema-decoding requirements stay
30
+ * visible in `R`.
31
+ *
32
+ * Everything a capture returns is untrusted, attacker-influenced content
33
+ * (security spec §9); results are bounded here and pass through the engine's
34
+ * ordinary result redaction like any other Tool output.
35
+ */
36
+
37
+ const maxFailureTextLength = 4 * 1024;
38
+ const BoundedFailureText = Schema.String.check(Schema.isMaxLength(maxFailureTextLength));
39
+ const BoundedErrorTag = Schema.NonEmptyString.check(Schema.isMaxLength(256));
40
+ const BoundedUrl = Schema.NonEmptyString.check(Schema.isMaxLength(8 * 1024));
41
+ const BoundedContent = Schema.String.check(Schema.isMaxLength(1024 * 1024));
42
+ const BoundedSelector = Schema.NonEmptyString.check(Schema.isMaxLength(1_024));
43
+
44
+ /** The model-selectable capture actions the first slice exposes. */
45
+ export const WebCaptureAction = Schema.Literals(["markdown", "content", "links"]);
46
+ export type WebCaptureAction = typeof WebCaptureAction.Type;
47
+
48
+ /** Model-decoded parameters: one absolute https URL plus one capture action. */
49
+ export const WebCaptureParameters = Schema.Struct({
50
+ url: BoundedUrl,
51
+ action: WebCaptureAction,
52
+ });
53
+
54
+ /** Model-decoded extraction parameters: one absolute https URL. */
55
+ export const WebCaptureExtractParameters = Schema.Struct({
56
+ url: BoundedUrl,
57
+ });
58
+
59
+ /** Model-decoded scrape parameters: one allowed URL and 1..64 CSS selectors. */
60
+ export const WebCaptureScrapeParameters = Schema.Struct({
61
+ url: BoundedUrl,
62
+ selectors: Schema.Array(BoundedSelector).check(Schema.isMinLength(1), Schema.isMaxLength(64)),
63
+ });
64
+
65
+ /**
66
+ * The bounded model-visible capture success. Exactly the field matching the
67
+ * requested action is present.
68
+ */
69
+ export class WebCaptureSuccess extends Schema.Class<WebCaptureSuccess>(
70
+ "@effect-agent/capabilities/WebCaptureSuccess",
71
+ )({
72
+ url: BoundedUrl,
73
+ action: WebCaptureAction,
74
+ markdown: Schema.optionalKey(BoundedContent),
75
+ html: Schema.optionalKey(BoundedContent),
76
+ links: Schema.optionalKey(Schema.Array(BoundedUrl).check(Schema.isMaxLength(4_096))),
77
+ }) {}
78
+
79
+ /**
80
+ * The bounded model-visible failure envelope. `failureMode: "return"` turns
81
+ * it into a failed Tool result, so a model can pick a different target or
82
+ * action without a blind retry. `retryAfterMillis` carries the platform's
83
+ * backoff hint when the capture was rate-limited.
84
+ */
85
+ export class WebCaptureFailure extends Schema.TaggedError<WebCaptureFailure>()(
86
+ "WebCaptureFailure",
87
+ {
88
+ errorTag: BoundedErrorTag,
89
+ message: BoundedFailureText,
90
+ retryAfterMillis: Schema.optionalKey(Schema.Natural),
91
+ },
92
+ ) {}
93
+
94
+ /** The bounded model-visible selector scrape success. */
95
+ export class WebCaptureScrapeSuccess extends Schema.Class<WebCaptureScrapeSuccess>(
96
+ "@effect-agent/capabilities/WebCaptureScrapeSuccess",
97
+ )({
98
+ url: BoundedUrl,
99
+ groups: PageScrapeCaptured.fields.groups,
100
+ }) {}
101
+
102
+ /** The native Effect AI Tool created by `WebCapture.make`. */
103
+ export type WebCaptureTool<Name extends string> = Tool.Tool<
104
+ Name,
105
+ {
106
+ readonly parameters: typeof WebCaptureParameters;
107
+ readonly success: typeof WebCaptureSuccess;
108
+ readonly failure: typeof WebCaptureFailure;
109
+ readonly failureMode: "return";
110
+ }
111
+ >;
112
+
113
+ /** The native Effect AI Tool created by `WebCapture.makeExtract`. */
114
+ export type WebCaptureExtractTool<Name extends string, S extends Schema.Top> = Tool.Tool<
115
+ Name,
116
+ {
117
+ readonly parameters: typeof WebCaptureExtractParameters;
118
+ readonly success: S;
119
+ readonly failure: typeof WebCaptureFailure;
120
+ readonly failureMode: "return";
121
+ },
122
+ S["DecodingServices"]
123
+ >;
124
+
125
+ /** The native Effect AI Tool created by `WebCapture.makeScrape`. */
126
+ export type WebCaptureScrapeTool<Name extends string> = Tool.Tool<
127
+ Name,
128
+ {
129
+ readonly parameters: typeof WebCaptureScrapeParameters;
130
+ readonly success: typeof WebCaptureScrapeSuccess;
131
+ readonly failure: typeof WebCaptureFailure;
132
+ readonly failureMode: "return";
133
+ }
134
+ >;
135
+
136
+ /** Singleton Tool record provided by one web-capture handler Layer. */
137
+ export type WebCaptureTools<Name extends string> = {
138
+ readonly [Key in Name]: WebCaptureTool<Name>;
139
+ };
140
+
141
+ /** Singleton Tool record provided by one extraction handler Layer. */
142
+ export type WebCaptureExtractTools<Name extends string, S extends Schema.Top> = {
143
+ readonly [Key in Name]: WebCaptureExtractTool<Name, S>;
144
+ };
145
+
146
+ /** Singleton Tool record provided by one selector-scrape handler Layer. */
147
+ export type WebCaptureScrapeTools<Name extends string> = {
148
+ readonly [Key in Name]: WebCaptureScrapeTool<Name>;
149
+ };
150
+
151
+ /** Construction requirements of a schema-shaped extraction handler Layer. */
152
+ export type WebCaptureExtractLayerRequirements<S extends Schema.Top> =
153
+ | PageCapture
154
+ | S["DecodingServices"];
155
+
156
+ interface WebCaptureSharedOptions {
157
+ /** Model-visible description; the builder appends the policy contract. */
158
+ readonly description: string;
159
+ /**
160
+ * Allowed target hosts: bare host names (`docs.example.com`) or one-level
161
+ * wildcards (`*.example.com`, matching the apex and every subdomain). The
162
+ * list must be non-empty — capture is deny-by-default (security spec §9).
163
+ */
164
+ readonly urls: ReadonlyArray<string>;
165
+ /** Rendering engine; defaults to `chromium`. */
166
+ readonly engine?: PageCaptureEngine | undefined;
167
+ /**
168
+ * Response byte budget measured on the UTF-8 encoded platform response.
169
+ * Default 131072 (128 KiB); construction fails closed outside
170
+ * [1024, 1048576].
171
+ */
172
+ readonly maxResponseBytes?: number | undefined;
173
+ }
174
+
175
+ export interface WebCaptureOptions extends WebCaptureSharedOptions {
176
+ /** Model-selectable actions; defaults to every first-slice action. */
177
+ readonly actions?: ReadonlyArray<WebCaptureAction> | undefined;
178
+ }
179
+
180
+ export interface WebCaptureExtractOptions<S extends Schema.Top> extends WebCaptureSharedOptions {
181
+ /**
182
+ * The extraction Schema. Its derived JSON Schema shapes the platform-side
183
+ * extraction, and the untrusted result is decoded through this exact
184
+ * Schema before it becomes the Tool success. Any decoding services remain
185
+ * visible in the handler Layer's requirements.
186
+ */
187
+ readonly schema: S;
188
+ /** Optional natural-language guidance sent alongside the derived schema. */
189
+ readonly prompt?: string | undefined;
190
+ }
191
+
192
+ export interface WebCaptureScrapeOptions extends WebCaptureSharedOptions {}
193
+
194
+ /**
195
+ * An immutable web-capture definition: one model-facing Tool over a fixed
196
+ * URL policy, plus the handler Layer that runs captures through the
197
+ * `PageCapture` port. It owns no acquired resources.
198
+ */
199
+ export interface WebCaptureDefinition<Name extends string> {
200
+ readonly name: Name;
201
+ /** The assembled model-facing description including the policy contract. */
202
+ readonly description: string;
203
+ /** The normalized allowed-host patterns. */
204
+ readonly urlPatterns: ReadonlyArray<string>;
205
+ readonly actions: ReadonlyArray<WebCaptureAction>;
206
+ readonly engine: PageCaptureEngine;
207
+ readonly maxResponseBytes: number;
208
+ /** The ordinary Effect AI Tool to include in the model-facing Toolkit. */
209
+ readonly tool: WebCaptureTool<Name>;
210
+ /** Handler Layer; the `PageCapture` requirement stays visible in `R`. */
211
+ readonly handlers: Layer.Layer<Tool.HandlersFor<WebCaptureTools<Name>>, never, PageCapture>;
212
+ }
213
+
214
+ /** An immutable schema-shaped extraction definition. */
215
+ export interface WebCaptureExtractDefinition<Name extends string, S extends Schema.Top> {
216
+ readonly name: Name;
217
+ readonly description: string;
218
+ readonly urlPatterns: ReadonlyArray<string>;
219
+ readonly engine: PageCaptureEngine;
220
+ readonly maxResponseBytes: number;
221
+ /** The JSON Schema document derived from the extraction Schema. */
222
+ readonly responseFormat: PageCaptureResponseFormat;
223
+ readonly tool: WebCaptureExtractTool<Name, S>;
224
+ readonly handlers: Layer.Layer<
225
+ Tool.HandlersFor<WebCaptureExtractTools<Name, S>>,
226
+ never,
227
+ WebCaptureExtractLayerRequirements<S>
228
+ >;
229
+ }
230
+
231
+ /** An immutable selector-scrape definition. */
232
+ export interface WebCaptureScrapeDefinition<Name extends string> {
233
+ readonly name: Name;
234
+ readonly description: string;
235
+ readonly urlPatterns: ReadonlyArray<string>;
236
+ readonly engine: PageCaptureEngine;
237
+ readonly maxResponseBytes: number;
238
+ readonly tool: WebCaptureScrapeTool<Name>;
239
+ readonly handlers: Layer.Layer<Tool.HandlersFor<WebCaptureScrapeTools<Name>>, never, PageCapture>;
240
+ }
241
+
242
+ const defaultMaxResponseBytes = 128 * 1024;
243
+ const allActions: ReadonlyArray<WebCaptureAction> = ["markdown", "content", "links"];
244
+
245
+ const HOST_PATTERN = /^(\*\.)?[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/;
246
+
247
+ const compileUrlPolicy = (patterns: ReadonlyArray<string>): ReadonlyArray<string> => {
248
+ if (patterns.length === 0) {
249
+ throw new Error(
250
+ "Web capture requires at least one allowed host pattern; capture is deny-by-default",
251
+ );
252
+ }
253
+
254
+ return Object.freeze(
255
+ patterns.map((raw) => {
256
+ const pattern = raw.trim().toLowerCase();
257
+
258
+ if (!HOST_PATTERN.test(pattern)) {
259
+ throw new Error(
260
+ `Web capture host pattern ${JSON.stringify(raw)} must be a bare host name such as docs.example.com or *.example.com — no scheme, path, port, or credentials`,
261
+ );
262
+ }
263
+
264
+ return pattern;
265
+ }),
266
+ );
267
+ };
268
+
269
+ const compileResourcePolicy = (patterns: ReadonlyArray<string>): PageResourcePolicy =>
270
+ PageResourcePolicy.make({
271
+ allowRequestPatterns: patterns.map((pattern) => {
272
+ const wildcard = pattern.startsWith("*.");
273
+ const escapedHost = (wildcard ? pattern.slice(2) : pattern).replaceAll(".", "\\.");
274
+ const subdomains = wildcard ? "(?:[a-z0-9-]+\\.)*" : "";
275
+
276
+ return `^https://${subdomains}${escapedHost}(?::[0-9]+)?(?:[/?#]|$)`;
277
+ }),
278
+ });
279
+
280
+ const validateMaxResponseBytes = (value: number | undefined): number => {
281
+ const bytes = value ?? defaultMaxResponseBytes;
282
+
283
+ // Fail closed on an invalid budget: NaN would make every comparison false.
284
+ if (!Number.isSafeInteger(bytes) || bytes < 1_024 || bytes > 1024 * 1024) {
285
+ throw new Error(
286
+ `Web capture maxResponseBytes must be an integer between 1024 and ${1024 * 1024}; received ${String(value)}`,
287
+ );
288
+ }
289
+
290
+ return bytes;
291
+ };
292
+
293
+ const hostMatches = (host: string, pattern: string): boolean => {
294
+ if (pattern.startsWith("*.")) {
295
+ const base = pattern.slice(2);
296
+
297
+ return host === base || host.endsWith(`.${base}`);
298
+ }
299
+
300
+ return host === pattern;
301
+ };
302
+
303
+ const failure = (errorTag: string, message: string, retryAfterMillis?: number): WebCaptureFailure =>
304
+ WebCaptureFailure.make({
305
+ errorTag,
306
+ message: message.slice(0, maxFailureTextLength),
307
+ ...(retryAfterMillis === undefined ? {} : { retryAfterMillis }),
308
+ });
309
+
310
+ const decodeUrl = Schema.decodeUnknownOption(Schema.URLFromString);
311
+
312
+ /**
313
+ * Fail-closed target validation over untrusted model output: absolute https
314
+ * URLs without embedded credentials, whose host matches the construction-time
315
+ * allowlist. Returns the denial, or `undefined` for an allowed target.
316
+ */
317
+ const deniedUrl = (raw: string, patterns: ReadonlyArray<string>): WebCaptureFailure | undefined => {
318
+ const parsed = decodeUrl(raw);
319
+
320
+ if (Option.isNone(parsed)) {
321
+ return failure("WebCaptureInvalidUrl", `${raw.slice(0, 256)} is not an absolute URL`);
322
+ }
323
+ const url = parsed.value;
324
+
325
+ if (url.protocol !== "https:") {
326
+ return failure("WebCaptureUrlDenied", "Only https:// targets are allowed");
327
+ }
328
+ if (url.username !== "" || url.password !== "") {
329
+ return failure("WebCaptureUrlDenied", "URLs carrying credentials are not allowed");
330
+ }
331
+ const host = url.hostname.toLowerCase();
332
+
333
+ if (!patterns.some((pattern) => hostMatches(host, pattern))) {
334
+ return failure(
335
+ "WebCaptureUrlDenied",
336
+ `Host ${host} is outside the allowed set: ${patterns.join(", ")}`,
337
+ );
338
+ }
339
+
340
+ return undefined;
341
+ };
342
+
343
+ const portFailure = (error: PageCaptureError): WebCaptureFailure => {
344
+ switch (error._tag) {
345
+ case "PageCaptureRateLimitedError": {
346
+ return failure(
347
+ error._tag,
348
+ error.message === "" ? "The platform rate-limited the capture" : error.message,
349
+ error.retryAfterMillis,
350
+ );
351
+ }
352
+ case "PageCaptureOutputLimitError": {
353
+ return failure(
354
+ error._tag,
355
+ `The page response of ${error.observed} bytes exceeds the ${error.limit}-byte budget; capture a smaller page or a narrower action`,
356
+ );
357
+ }
358
+ case "PageCaptureNavigationError":
359
+ case "PageCaptureInferencePolicyError":
360
+ case "PageCaptureProtocolError":
361
+ case "PageCaptureUnsupportedError": {
362
+ return failure(error._tag, error.message);
363
+ }
364
+ }
365
+ };
366
+
367
+ const policyContract = (
368
+ actionsText: string,
369
+ patterns: ReadonlyArray<string>,
370
+ maxResponseBytes: number,
371
+ ): string =>
372
+ `Allowed actions: ${actionsText}. Allowed hosts: ${patterns.join(", ")} (https:// only). Responses are bounded to ${maxResponseBytes} bytes; a larger page fails with a typed result you can react to.`;
373
+
374
+ const captureAction = (action: WebCaptureAction): PageCaptureAction => {
375
+ switch (action) {
376
+ case "markdown": {
377
+ return CapturePageMarkdown.make({});
378
+ }
379
+ case "content": {
380
+ return CapturePageContent.make({});
381
+ }
382
+ case "links": {
383
+ return CapturePageLinks.make({});
384
+ }
385
+ }
386
+ };
387
+
388
+ const make = <const Name extends string>(
389
+ name: Name,
390
+ options: WebCaptureOptions,
391
+ ): WebCaptureDefinition<Name> => {
392
+ const patterns = compileUrlPolicy(options.urls);
393
+ const resourcePolicy = compileResourcePolicy(patterns);
394
+ const maxResponseBytes = validateMaxResponseBytes(options.maxResponseBytes);
395
+ const engine = options.engine ?? "chromium";
396
+ const actions = Object.freeze([...new Set(options.actions ?? allActions)]);
397
+
398
+ if (actions.length === 0) {
399
+ throw new Error("Web capture requires at least one model-selectable action");
400
+ }
401
+
402
+ const description = [
403
+ options.description,
404
+ "",
405
+ policyContract(actions.join(", "), patterns, maxResponseBytes),
406
+ ].join("\n");
407
+
408
+ const tool = Tool.make(name, {
409
+ description,
410
+ parameters: WebCaptureParameters,
411
+ success: WebCaptureSuccess,
412
+ failure: WebCaptureFailure,
413
+ failureMode: "return",
414
+ })
415
+ .annotate(Tool.Readonly, false)
416
+ .annotate(ToolExecutionClassAnnotation, "uncertain") as WebCaptureTool<Name>;
417
+
418
+ const toolkit = Toolkit.make(tool);
419
+ const allowed = new Set(actions);
420
+
421
+ const build = Effect.gen(function* () {
422
+ const pageCapture = yield* PageCapture;
423
+
424
+ const invoke = Effect.fn(`WebCapture.${name}`)(function* (parameters: {
425
+ readonly url: string;
426
+ readonly action: WebCaptureAction;
427
+ }) {
428
+ if (!allowed.has(parameters.action)) {
429
+ return yield* failure(
430
+ "WebCaptureActionDenied",
431
+ `Action ${parameters.action} is not enabled; allowed actions: ${actions.join(", ")}`,
432
+ );
433
+ }
434
+ const denied = deniedUrl(parameters.url, patterns);
435
+
436
+ if (denied !== undefined) {
437
+ return yield* denied;
438
+ }
439
+
440
+ const result = yield* pageCapture
441
+ .capture(
442
+ PageCaptureRequest.make({
443
+ target: PageUrlTarget.make({ url: parameters.url }),
444
+ action: captureAction(parameters.action),
445
+ engine,
446
+ limits: PageCaptureLimits.make({ maxOutputBytes: maxResponseBytes }),
447
+ resourcePolicy,
448
+ }),
449
+ )
450
+ .pipe(Effect.catch((error) => Effect.fail(portFailure(error))));
451
+
452
+ const output = result.output;
453
+
454
+ if (parameters.action === "markdown" && output._tag === "PageMarkdownCaptured") {
455
+ return WebCaptureSuccess.make({
456
+ url: parameters.url,
457
+ action: parameters.action,
458
+ markdown: output.markdown,
459
+ });
460
+ }
461
+ if (parameters.action === "content" && output._tag === "PageContentCaptured") {
462
+ return WebCaptureSuccess.make({
463
+ url: parameters.url,
464
+ action: parameters.action,
465
+ html: output.html,
466
+ });
467
+ }
468
+ if (parameters.action === "links" && output._tag === "PageLinksCaptured") {
469
+ return WebCaptureSuccess.make({
470
+ url: parameters.url,
471
+ action: parameters.action,
472
+ links: output.links,
473
+ });
474
+ }
475
+
476
+ return yield* failure(
477
+ "WebCaptureProtocolMismatch",
478
+ `The capture adapter answered a ${parameters.action} request with ${output._tag}`,
479
+ );
480
+ });
481
+
482
+ return { [name]: invoke } as unknown as Toolkit.HandlersFrom<WebCaptureTools<Name>>;
483
+ });
484
+
485
+ /**
486
+ * TypeScript cannot unify the two spellings of the singleton Tool record
487
+ * over a generic `Name` (the same limit as Code Mode); the assertions pin
488
+ * the layer to its documented requirement surface and never bypass
489
+ * validation.
490
+ */
491
+ const handlers = toolkit.toLayer(
492
+ build as unknown as Effect.Effect<
493
+ Toolkit.HandlersFrom<Toolkit.ToolsByName<readonly [WebCaptureTool<Name>]>>,
494
+ never,
495
+ PageCapture
496
+ >,
497
+ ) as unknown as Layer.Layer<Tool.HandlersFor<WebCaptureTools<Name>>, never, PageCapture>;
498
+
499
+ return Object.freeze({
500
+ name,
501
+ description,
502
+ urlPatterns: patterns,
503
+ actions,
504
+ engine,
505
+ maxResponseBytes,
506
+ tool,
507
+ handlers,
508
+ });
509
+ };
510
+
511
+ const makeExtract = <const Name extends string, S extends Schema.Top>(
512
+ name: Name,
513
+ options: WebCaptureExtractOptions<S>,
514
+ ): WebCaptureExtractDefinition<Name, S> => {
515
+ const patterns = compileUrlPolicy(options.urls);
516
+ const resourcePolicy = compileResourcePolicy(patterns);
517
+ const maxResponseBytes = validateMaxResponseBytes(options.maxResponseBytes);
518
+ const engine = options.engine ?? "chromium";
519
+ const prompt = options.prompt;
520
+
521
+ if (prompt !== undefined && (prompt.length === 0 || prompt.length > 8_192)) {
522
+ throw new Error("Web capture extraction prompt must be between 1 and 8192 characters");
523
+ }
524
+
525
+ // The derived JSON Schema is BOTH the platform-side response format and
526
+ // documentation that the deriver can express the Schema at all; anything it
527
+ // cannot derive fails construction closed rather than degrading at runtime.
528
+ const derived = ((): PageCaptureResponseFormat => {
529
+ const jsonSchema = Tool.getJsonSchemaFromSchema(options.schema);
530
+ const decoded = Schema.decodeUnknownOption(PageCaptureResponseFormat)(jsonSchema);
531
+
532
+ if (Option.isNone(decoded)) {
533
+ throw new Error(
534
+ `Web capture cannot derive a bounded object JSON response format from the extraction Schema for ${name}`,
535
+ );
536
+ }
537
+
538
+ return decoded.value;
539
+ })();
540
+
541
+ const description = [
542
+ options.description,
543
+ "",
544
+ `Extracts structured data matching a fixed schema from the rendered page. ${policyContract("structured extraction", patterns, maxResponseBytes)}`,
545
+ ].join("\n");
546
+
547
+ const tool = Tool.make(name, {
548
+ description,
549
+ parameters: WebCaptureExtractParameters,
550
+ success: options.schema,
551
+ failure: WebCaptureFailure,
552
+ failureMode: "return",
553
+ })
554
+ .annotate(Tool.Readonly, false)
555
+ .annotate(ToolExecutionClassAnnotation, "uncertain") as WebCaptureExtractTool<Name, S>;
556
+
557
+ const toolkit = Toolkit.make(tool);
558
+ const decodeExtracted = Schema.decodeUnknownEffect(options.schema);
559
+
560
+ const build = Effect.gen(function* () {
561
+ const pageCapture = yield* PageCapture;
562
+
563
+ const invoke = Effect.fn(`WebCapture.${name}`)(function* (parameters: {
564
+ readonly url: string;
565
+ }) {
566
+ const denied = deniedUrl(parameters.url, patterns);
567
+
568
+ if (denied !== undefined) {
569
+ return yield* denied;
570
+ }
571
+
572
+ const result = yield* pageCapture
573
+ .capture(
574
+ PageCaptureRequest.make({
575
+ target: PageUrlTarget.make({ url: parameters.url }),
576
+ action: CapturePageStructured.make({
577
+ responseFormat: derived,
578
+ ...(prompt === undefined ? {} : { prompt }),
579
+ }),
580
+ engine,
581
+ limits: PageCaptureLimits.make({ maxOutputBytes: maxResponseBytes }),
582
+ resourcePolicy,
583
+ }),
584
+ )
585
+ .pipe(Effect.catch((error) => Effect.fail(portFailure(error))));
586
+
587
+ if (result.output._tag !== "PageStructuredCaptured") {
588
+ return yield* failure(
589
+ "WebCaptureProtocolMismatch",
590
+ `The capture adapter answered a structured request with ${result.output._tag}`,
591
+ );
592
+ }
593
+
594
+ // The platform's extraction is untrusted; only the original Effect
595
+ // Schema decides whether the value is the promised shape.
596
+ return yield* decodeExtracted(result.output.value).pipe(
597
+ Effect.mapError(() =>
598
+ failure(
599
+ "WebCaptureDecodeFailed",
600
+ "The extracted value did not match the expected schema",
601
+ ),
602
+ ),
603
+ );
604
+ });
605
+
606
+ return { [name]: invoke } as unknown as Toolkit.HandlersFrom<WebCaptureExtractTools<Name, S>>;
607
+ });
608
+
609
+ // Same private-assertion contract as `make` above.
610
+ const handlers = toolkit.toLayer(
611
+ build as unknown as Effect.Effect<
612
+ Toolkit.HandlersFrom<Toolkit.ToolsByName<readonly [WebCaptureExtractTool<Name, S>]>>,
613
+ never,
614
+ WebCaptureExtractLayerRequirements<S>
615
+ >,
616
+ ) as unknown as Layer.Layer<
617
+ Tool.HandlersFor<WebCaptureExtractTools<Name, S>>,
618
+ never,
619
+ WebCaptureExtractLayerRequirements<S>
620
+ >;
621
+
622
+ return Object.freeze({
623
+ name,
624
+ description,
625
+ urlPatterns: patterns,
626
+ engine,
627
+ maxResponseBytes,
628
+ responseFormat: derived,
629
+ tool,
630
+ handlers,
631
+ });
632
+ };
633
+
634
+ const makeScrape = <const Name extends string>(
635
+ name: Name,
636
+ options: WebCaptureScrapeOptions,
637
+ ): WebCaptureScrapeDefinition<Name> => {
638
+ const patterns = compileUrlPolicy(options.urls);
639
+ const resourcePolicy = compileResourcePolicy(patterns);
640
+ const maxResponseBytes = validateMaxResponseBytes(options.maxResponseBytes);
641
+ const engine = options.engine ?? "chromium";
642
+
643
+ const description = [
644
+ options.description,
645
+ "",
646
+ `Scrapes rendered elements for 1 to 64 CSS selectors. ${policyContract("selector scrape", patterns, maxResponseBytes)}`,
647
+ ].join("\n");
648
+
649
+ const tool = Tool.make(name, {
650
+ description,
651
+ parameters: WebCaptureScrapeParameters,
652
+ success: WebCaptureScrapeSuccess,
653
+ failure: WebCaptureFailure,
654
+ failureMode: "return",
655
+ })
656
+ .annotate(Tool.Readonly, false)
657
+ .annotate(ToolExecutionClassAnnotation, "uncertain") as WebCaptureScrapeTool<Name>;
658
+
659
+ const toolkit = Toolkit.make(tool);
660
+
661
+ const build = Effect.gen(function* () {
662
+ const pageCapture = yield* PageCapture;
663
+
664
+ const invoke = Effect.fn(`WebCapture.${name}`)(function* (parameters: {
665
+ readonly url: string;
666
+ readonly selectors: ReadonlyArray<string>;
667
+ }) {
668
+ const denied = deniedUrl(parameters.url, patterns);
669
+
670
+ if (denied !== undefined) {
671
+ return yield* denied;
672
+ }
673
+
674
+ const result = yield* pageCapture
675
+ .capture(
676
+ PageCaptureRequest.make({
677
+ target: PageUrlTarget.make({ url: parameters.url }),
678
+ action: CapturePageScrape.make({ selectors: parameters.selectors }),
679
+ engine,
680
+ limits: PageCaptureLimits.make({ maxOutputBytes: maxResponseBytes }),
681
+ resourcePolicy,
682
+ }),
683
+ )
684
+ .pipe(Effect.catch((error) => Effect.fail(portFailure(error))));
685
+
686
+ if (result.output._tag !== "PageScrapeCaptured") {
687
+ return yield* failure(
688
+ "WebCaptureProtocolMismatch",
689
+ `The capture adapter answered a selector scrape request with ${result.output._tag}`,
690
+ );
691
+ }
692
+
693
+ return WebCaptureScrapeSuccess.make({
694
+ url: parameters.url,
695
+ groups: result.output.groups,
696
+ });
697
+ });
698
+
699
+ return { [name]: invoke } as unknown as Toolkit.HandlersFrom<WebCaptureScrapeTools<Name>>;
700
+ });
701
+
702
+ const handlers = toolkit.toLayer(
703
+ build as unknown as Effect.Effect<
704
+ Toolkit.HandlersFrom<Toolkit.ToolsByName<readonly [WebCaptureScrapeTool<Name>]>>,
705
+ never,
706
+ PageCapture
707
+ >,
708
+ ) as unknown as Layer.Layer<Tool.HandlersFor<WebCaptureScrapeTools<Name>>, never, PageCapture>;
709
+
710
+ return Object.freeze({
711
+ name,
712
+ description,
713
+ urlPatterns: patterns,
714
+ engine,
715
+ maxResponseBytes,
716
+ tool,
717
+ handlers,
718
+ });
719
+ };
720
+
721
+ /** Web capture builder namespace (capability spec §9.2). */
722
+ export { make, makeExtract, makeScrape };