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,148 @@
1
+ import { Context, Schema, type Scope, type Stream } from "effect";
2
+
3
+ import { PageCaptureTargetUrl } from "./PageCapture.ts";
4
+ import { SandboxImplementation } from "./Sandbox.ts";
5
+
6
+ const MAX_PAGE_BYTES = 8 * 1024 * 1024;
7
+ const MAX_TOTAL_BYTES = 64 * 1024 * 1024;
8
+ const MAX_PAGES = 100;
9
+ const MAX_DEPTH = 10;
10
+ const MAX_DEADLINE_MILLIS = 10 * 60_000;
11
+ const MAX_DIAGNOSTIC_LENGTH = 8_000;
12
+ const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));
13
+ const BoundedMarkdown = Schema.String.check(Schema.isMaxLength(MAX_PAGE_BYTES));
14
+ const BoundedMessage = Schema.String.check(Schema.isMaxLength(MAX_DIAGNOSTIC_LENGTH));
15
+
16
+ const HttpStatus = Schema.Int.check(
17
+ Schema.isGreaterThanOrEqualTo(100),
18
+ Schema.isLessThanOrEqualTo(599),
19
+ );
20
+
21
+ /** One credential-free HTTPS URL. The first adapter confines every record to its exact host. */
22
+ export const PageCrawlStartUrl = PageCaptureTargetUrl;
23
+ export type PageCrawlStartUrl = typeof PageCrawlStartUrl.Type;
24
+
25
+ /** The declared uses Cloudflare evaluates against a site's Content Signals. */
26
+ export const PageCrawlPurpose = Schema.Literals(["search", "ai-input", "ai-train"]);
27
+ export type PageCrawlPurpose = typeof PageCrawlPurpose.Type;
28
+
29
+ /** Immutable caller limits for one scoped crawl. */
30
+ export class PageCrawlLimits extends Schema.Class<PageCrawlLimits>("PageCrawlLimits")({
31
+ maxPages: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_PAGES)),
32
+ maxDepth: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_DEPTH)),
33
+ maxPageBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_PAGE_BYTES)),
34
+ maxTotalBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_TOTAL_BYTES)),
35
+ deadlineMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_DEADLINE_MILLIS)),
36
+ }) {}
37
+
38
+ /** A rendered Markdown crawl rooted at one exact HTTPS host. */
39
+ export class PageCrawlRequest extends Schema.Class<PageCrawlRequest>("PageCrawlRequest")({
40
+ startUrl: PageCrawlStartUrl,
41
+ purposes: Schema.Array(PageCrawlPurpose).check(
42
+ Schema.isMinLength(1),
43
+ Schema.isMaxLength(3),
44
+ Schema.isUnique(),
45
+ ),
46
+ limits: PageCrawlLimits,
47
+ }) {}
48
+
49
+ /** Cloudflare's documented status for one discovered URL. */
50
+ export const PageCrawlRecordStatus = Schema.Literals([
51
+ "queued",
52
+ "completed",
53
+ "disallowed",
54
+ "skipped",
55
+ "errored",
56
+ "cancelled",
57
+ ]);
58
+
59
+ export type PageCrawlRecordStatus = typeof PageCrawlRecordStatus.Type;
60
+
61
+ /** Bounded origin metadata when Cloudflare reached the URL. */
62
+ export class PageCrawlRecordMetadata extends Schema.Class<PageCrawlRecordMetadata>(
63
+ "PageCrawlRecordMetadata",
64
+ )({
65
+ status: HttpStatus,
66
+ url: PageCrawlStartUrl,
67
+ title: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(4_096))),
68
+ }) {}
69
+
70
+ /** One untrusted page record. Non-completed statuses may have no Markdown. */
71
+ export class PageCrawlRecord extends Schema.Class<PageCrawlRecord>("PageCrawlRecord")({
72
+ url: PageCrawlStartUrl,
73
+ status: PageCrawlRecordStatus,
74
+ markdown: Schema.optionalKey(BoundedMarkdown),
75
+ metadata: Schema.optionalKey(PageCrawlRecordMetadata),
76
+ }) {}
77
+
78
+ /** Cloudflare refused a request because of a request-rate or browser-quota limit. */
79
+ export class PageCrawlRateLimitedError extends Schema.TaggedError<PageCrawlRateLimitedError>()(
80
+ "PageCrawlRateLimitedError",
81
+ {
82
+ implementation: SandboxImplementation,
83
+ reason: Schema.Literals(["rate", "quota"]),
84
+ retryAfterMillis: Schema.optionalKey(Schema.Natural),
85
+ message: BoundedMessage,
86
+ cause: Schema.optionalKey(Schema.Defect()),
87
+ },
88
+ ) {}
89
+
90
+ /** The REST transport or provider response violated the crawl protocol. */
91
+ export class PageCrawlProtocolError extends Schema.TaggedError<PageCrawlProtocolError>()(
92
+ "PageCrawlProtocolError",
93
+ {
94
+ implementation: SandboxImplementation,
95
+ message: BoundedMessage,
96
+ cause: Schema.optionalKey(Schema.Defect()),
97
+ },
98
+ ) {}
99
+
100
+ /** The first record or operation that crossed one immutable caller limit. */
101
+ export class PageCrawlLimitError extends Schema.TaggedError<PageCrawlLimitError>()(
102
+ "PageCrawlLimitError",
103
+ {
104
+ implementation: SandboxImplementation,
105
+ limit: Schema.Literals(["pages", "page-bytes", "total-bytes", "deadline"]),
106
+ maximum: PositiveInt,
107
+ observed: Schema.Natural,
108
+ message: BoundedMessage,
109
+ },
110
+ ) {}
111
+
112
+ /** A documented non-success terminal job status. */
113
+ export class PageCrawlTerminalError extends Schema.TaggedError<PageCrawlTerminalError>()(
114
+ "PageCrawlTerminalError",
115
+ {
116
+ implementation: SandboxImplementation,
117
+ status: Schema.Literals([
118
+ "errored",
119
+ "cancelled_by_user",
120
+ "cancelled_due_to_timeout",
121
+ "cancelled_due_to_limits",
122
+ ]),
123
+ message: BoundedMessage,
124
+ },
125
+ ) {}
126
+
127
+ export const PageCrawlError = Schema.Union([
128
+ PageCrawlRateLimitedError,
129
+ PageCrawlProtocolError,
130
+ PageCrawlLimitError,
131
+ PageCrawlTerminalError,
132
+ ]);
133
+
134
+ export type PageCrawlError = typeof PageCrawlError.Type;
135
+
136
+ /** Scoped exact-host crawl stream. Provider job identity and polling stay adapter-private. */
137
+ export class PageCrawl extends Context.Service<
138
+ PageCrawl,
139
+ {
140
+ readonly crawl: (
141
+ request: PageCrawlRequest,
142
+ ) => Stream.Stream<PageCrawlRecord, PageCrawlError, Scope.Scope>;
143
+ }
144
+ >()("@effect-agent/sandbox/PageCrawl") {}
145
+
146
+ export type PageCrawlCrawl = (
147
+ request: PageCrawlRequest,
148
+ ) => Stream.Stream<PageCrawlRecord, PageCrawlError, Scope.Scope>;
@@ -0,0 +1,81 @@
1
+ import { Context, Schema, type Effect } from "effect";
2
+
3
+ import {
4
+ PageCaptureEngine,
5
+ PageCaptureNavigationError,
6
+ PageCaptureProtocolError,
7
+ PageCaptureRateLimitedError,
8
+ PageCaptureTarget,
9
+ PageCaptureUnsupportedError,
10
+ PageNavigationOptions,
11
+ PageResourcePolicy,
12
+ PageViewport,
13
+ } from "./PageCapture.ts";
14
+ import { SandboxImplementation } from "./Sandbox.ts";
15
+
16
+ const MAX_SCREENSHOT_BYTES = 8 * 1024 * 1024;
17
+ const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));
18
+
19
+ /** The byte limit and full-page choice are fixed before Browser Run starts. */
20
+ export class PageScreenshotLimits extends Schema.Class<PageScreenshotLimits>(
21
+ "PageScreenshotLimits",
22
+ )({
23
+ maxOutputBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_SCREENSHOT_BYTES)),
24
+ }) {}
25
+
26
+ /** Schema-first request for exactly one PNG screenshot. */
27
+ export class PageScreenshotRequest extends Schema.Class<PageScreenshotRequest>(
28
+ "PageScreenshotRequest",
29
+ )({
30
+ target: PageCaptureTarget,
31
+ engine: PageCaptureEngine,
32
+ limits: PageScreenshotLimits,
33
+ fullPage: Schema.Boolean,
34
+ navigation: Schema.optionalKey(PageNavigationOptions),
35
+ viewport: Schema.optionalKey(PageViewport),
36
+ resourcePolicy: Schema.optionalKey(PageResourcePolicy),
37
+ }) {}
38
+
39
+ /** The only successful output: bytes are caller-owned and never durable framework data. */
40
+ export class PageScreenshotResult extends Schema.Class<PageScreenshotResult>(
41
+ "PageScreenshotResult",
42
+ )({
43
+ implementation: SandboxImplementation,
44
+ mediaType: Schema.Literal("image/png"),
45
+ bytes: Schema.Uint8Array.check(Schema.isMaxLength(MAX_SCREENSHOT_BYTES)),
46
+ }) {}
47
+
48
+ /** The response crossed the request's PNG byte limit. */
49
+ export class PageScreenshotOutputLimitError extends Schema.TaggedError<PageScreenshotOutputLimitError>()(
50
+ "PageScreenshotOutputLimitError",
51
+ {
52
+ implementation: SandboxImplementation,
53
+ limit: PositiveInt,
54
+ observed: Schema.Natural,
55
+ },
56
+ ) {}
57
+
58
+ /** Expected screenshot failures. The shared capture errors keep identical semantics. */
59
+ export const PageScreenshotError = Schema.Union([
60
+ PageCaptureRateLimitedError,
61
+ PageCaptureNavigationError,
62
+ PageCaptureUnsupportedError,
63
+ PageCaptureProtocolError,
64
+ PageScreenshotOutputLimitError,
65
+ ]);
66
+
67
+ export type PageScreenshotError = typeof PageScreenshotError.Type;
68
+
69
+ /** Stateless, one-output PNG capture port. It owns neither persistence nor later byte handoff. */
70
+ export class PageScreenshot extends Context.Service<
71
+ PageScreenshot,
72
+ {
73
+ readonly capture: (
74
+ request: PageScreenshotRequest,
75
+ ) => Effect.Effect<PageScreenshotResult, PageScreenshotError>;
76
+ }
77
+ >()("@effect-agent/sandbox/PageScreenshot") {}
78
+
79
+ export type PageScreenshotCapture = (
80
+ request: PageScreenshotRequest,
81
+ ) => Effect.Effect<PageScreenshotResult, PageScreenshotError>;
@@ -0,0 +1,436 @@
1
+ import { Context, Effect, Layer, Schema, Scope, type Redacted } from "effect";
2
+
3
+ import {
4
+ InteractiveBrowserHost,
5
+ InteractiveBrowserTargetUrl,
6
+ InteractiveBrowserPolicy,
7
+ } from "./InteractiveBrowser.ts";
8
+
9
+ /** Canonical HTTPS origin, including a non-default port. Host grants match exactly. */
10
+ export const CredentialOrigin = Schema.String.check(
11
+ Schema.makeFilter(
12
+ (value) => value.startsWith("https://") && Schema.is(InteractiveBrowserHost)(value.slice(8)),
13
+ ),
14
+ );
15
+
16
+ export const BrowserReference = Schema.String.check(Schema.isUUID());
17
+ export const CredentialKind = Schema.Literals(["login", "card"]);
18
+
19
+ export const CredentialFieldRole = Schema.Literals([
20
+ "username",
21
+ "password",
22
+ "card-name",
23
+ "card-number",
24
+ "card-expiry",
25
+ "card-expiry-month",
26
+ "card-expiry-year",
27
+ "card-security-code",
28
+ ]);
29
+
30
+ const Label = Schema.String.check(Schema.isMaxLength(200));
31
+ const LinkUrl = InteractiveBrowserTargetUrl.check(Schema.isStartsWith("https://"));
32
+
33
+ export class CredentialTarget extends Schema.Class<CredentialTarget>("CredentialTarget")({
34
+ topOrigin: CredentialOrigin,
35
+ frameOrigin: CredentialOrigin,
36
+ recipientOrigin: CredentialOrigin,
37
+ document: BrowserReference,
38
+ frame: BrowserReference,
39
+ form: BrowserReference,
40
+ }) {}
41
+
42
+ export class ProtectedBrowserControl extends Schema.Class<ProtectedBrowserControl>(
43
+ "ProtectedBrowserControl",
44
+ )({
45
+ ref: BrowserReference,
46
+ target: CredentialTarget,
47
+ role: Schema.Union([
48
+ CredentialFieldRole,
49
+ Schema.Literals([
50
+ "text",
51
+ "select",
52
+ "radio",
53
+ "checkbox",
54
+ "submit",
55
+ "link",
56
+ "button",
57
+ "unsupported",
58
+ ]),
59
+ ]),
60
+ label: Label,
61
+ /** Current native radio/checkbox state; field values are never included. */
62
+ checked: Schema.optionalKey(Schema.Boolean),
63
+ /** Resolved HTTPS destination for a native link; target.recipientOrigin is its origin. */
64
+ url: Schema.optionalKey(LinkUrl),
65
+ }) {}
66
+
67
+ export class ProtectedBrowserObservation extends Schema.Class<ProtectedBrowserObservation>(
68
+ "ProtectedBrowserObservation",
69
+ )({
70
+ document: BrowserReference,
71
+ topOrigin: CredentialOrigin,
72
+ text: Schema.String.check(Schema.isMaxLength(64 * 1024)),
73
+ controls: Schema.Array(ProtectedBrowserControl).check(Schema.isMaxLength(64)),
74
+ truncated: Schema.Boolean,
75
+ observation: Schema.Literals(["before-exposure", "approved-after-exposure"]),
76
+ }) {}
77
+
78
+ export class CredentialOfferMetadata extends Schema.Class<CredentialOfferMetadata>(
79
+ "CredentialOfferMetadata",
80
+ )({
81
+ label: Label,
82
+ brand: Schema.optionalKey(Label),
83
+ lastFour: Schema.optionalKey(Schema.String.check(Schema.isPattern(/^\d{4}$/))),
84
+ /** Plaintext metadata disclosed only when the host authorizes listing this offer. */
85
+ billingAddress: Schema.optionalKey(
86
+ Schema.Struct({
87
+ name: Schema.optionalKey(Label),
88
+ line1: Schema.optionalKey(Label),
89
+ line2: Schema.optionalKey(Label),
90
+ city: Schema.optionalKey(Label),
91
+ region: Schema.optionalKey(Label),
92
+ postalCode: Schema.optionalKey(Label),
93
+ country: Schema.optionalKey(Label),
94
+ }),
95
+ ),
96
+ }) {}
97
+
98
+ export class CredentialOffer extends Schema.Class<CredentialOffer>("CredentialOffer")({
99
+ ref: BrowserReference,
100
+ kind: CredentialKind,
101
+ metadata: CredentialOfferMetadata,
102
+ }) {}
103
+
104
+ export class ListCredentialOffers extends Schema.Class<ListCredentialOffers>(
105
+ "ListCredentialOffers",
106
+ )({
107
+ kind: CredentialKind,
108
+ target: BrowserReference,
109
+ }) {}
110
+
111
+ export class UseCredential extends Schema.Class<UseCredential>("UseCredential")({
112
+ offer: BrowserReference,
113
+ fields: Schema.Array(Schema.Struct({ ref: BrowserReference, role: CredentialFieldRole })).check(
114
+ Schema.isMinLength(1),
115
+ Schema.isMaxLength(8),
116
+ ),
117
+ submit: Schema.optionalKey(BrowserReference),
118
+ }) {}
119
+
120
+ export class ProtectedBrowserNavigate extends Schema.Class<ProtectedBrowserNavigate>(
121
+ "ProtectedBrowserNavigate",
122
+ )({
123
+ url: Schema.String.check(Schema.isMaxLength(8192)),
124
+ }) {}
125
+
126
+ export class ProtectedBrowserClick extends Schema.Class<ProtectedBrowserClick>(
127
+ "ProtectedBrowserClick",
128
+ )({
129
+ ref: BrowserReference,
130
+ }) {}
131
+
132
+ /**
133
+ * Non-secret text for an ordinary text control or native single select in the current observation.
134
+ * Never pass credential material. Credential roles, including username, require useCredential.
135
+ * Selects match a unique enabled option value, then a unique exact trimmed label. Empty text clears.
136
+ */
137
+ export class ProtectedBrowserFill extends Schema.Class<ProtectedBrowserFill>(
138
+ "ProtectedBrowserFill",
139
+ )(
140
+ Schema.Struct({
141
+ ref: BrowserReference,
142
+ value: Schema.String.check(Schema.isMaxLength(8192)),
143
+ }).pipe(Schema.annotate({ parseOptions: { onExcessProperty: "error" } })),
144
+ ) {}
145
+
146
+ export const CredentialDispatch = Schema.Literals([
147
+ "not-dispatched",
148
+ "possibly-dispatched",
149
+ "dispatched",
150
+ ]);
151
+
152
+ export const CredentialMilestone = Schema.Literals([
153
+ "none",
154
+ "partial-fill",
155
+ "filled",
156
+ "submission-dispatched",
157
+ ]);
158
+
159
+ export const ProtectedObservationState = Schema.Literals([
160
+ "before-exposure",
161
+ "protected",
162
+ "approved-after-exposure",
163
+ "closed",
164
+ ]);
165
+
166
+ export const ProtectedCleanup = Schema.Literals(["not-requested", "confirmed", "unconfirmed"]);
167
+
168
+ const Evidence = {
169
+ dispatch: CredentialDispatch,
170
+ milestone: CredentialMilestone,
171
+ observation: ProtectedObservationState,
172
+ cleanup: ProtectedCleanup,
173
+ };
174
+
175
+ /** No foreign message/cause or page data may enter this failure. Closure does not undo dispatch. */
176
+ export class ProtectedBrowserError extends Schema.TaggedError<ProtectedBrowserError>()(
177
+ "ProtectedBrowserError",
178
+ {
179
+ reason: Schema.Literals([
180
+ "denied",
181
+ "missing-credential",
182
+ "stale-reference",
183
+ "unsupported",
184
+ "needs-attention",
185
+ "busy",
186
+ "closed",
187
+ "limit",
188
+ "timeout",
189
+ "provider",
190
+ "resolver",
191
+ "outcome-unknown",
192
+ "observation-blocked",
193
+ ]),
194
+ ...Evidence,
195
+ },
196
+ ) {}
197
+
198
+ export class CredentialUseResult extends Schema.Class<CredentialUseResult>("CredentialUseResult")({
199
+ ...Evidence,
200
+ authentication: Schema.Literal("unverified"),
201
+ }) {}
202
+
203
+ const SecretText = Schema.Redacted(Schema.NonEmptyString.check(Schema.isMaxLength(1024)));
204
+
205
+ /** Host-only material. Never encode it into Tool results, checkpoints, or storage. */
206
+ export const LoginCredential = Schema.TaggedStruct("LoginCredential", {
207
+ username: SecretText,
208
+ password: SecretText,
209
+ });
210
+
211
+ /** Security codes are transient, never persisted. Dummy tests are not PCI compliance evidence. */
212
+ export const CardCredential = Schema.TaggedStruct("CardCredential", {
213
+ name: SecretText,
214
+ number: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{12,19}$/))),
215
+ expiry: SecretText,
216
+ expiryMonth: Schema.Redacted(Schema.String.check(Schema.isPattern(/^(0[1-9]|1[0-2])$/))),
217
+ expiryYear: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{4}$/))),
218
+ securityCode: Schema.optionalKey(
219
+ Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{3,4}$/))),
220
+ ),
221
+ });
222
+
223
+ export const BrowserCredentialMaterial = Schema.Union([LoginCredential, CardCredential]);
224
+ export type BrowserCredentialMaterial = typeof BrowserCredentialMaterial.Type;
225
+
226
+ export class CredentialAccessError extends Schema.TaggedError<CredentialAccessError>()(
227
+ "CredentialAccessError",
228
+ {
229
+ reason: Schema.Literals(["denied", "missing-credential", "needs-attention", "resolver"]),
230
+ },
231
+ ) {}
232
+
233
+ export interface CredentialAccessRequest {
234
+ readonly caller: Redacted.Redacted<string>;
235
+ readonly kind: typeof CredentialKind.Type;
236
+ readonly target: CredentialTarget;
237
+ }
238
+
239
+ export interface CredentialUseAuthorization extends CredentialAccessRequest {
240
+ readonly key: Redacted.Redacted<string>;
241
+ readonly roles: ReadonlyArray<typeof CredentialFieldRole.Type>;
242
+ readonly submit: boolean;
243
+ }
244
+
245
+ /** Exact current action proposed to host authority; no ordinary fill value or secret is included. */
246
+ export const ProtectedBrowserAction = Schema.Union([
247
+ Schema.TaggedStruct("Navigate", { url: ProtectedBrowserNavigate.fields.url }),
248
+ Schema.TaggedStruct("Fill", {
249
+ ref: BrowserReference,
250
+ target: CredentialTarget,
251
+ role: Schema.Literals(["text", "select"]),
252
+ }),
253
+ Schema.TaggedStruct("Click", {
254
+ ref: BrowserReference,
255
+ target: CredentialTarget,
256
+ role: Schema.Literals(["button", "radio", "checkbox"]),
257
+ }),
258
+ Schema.TaggedStruct("Click", {
259
+ ref: BrowserReference,
260
+ target: CredentialTarget,
261
+ role: Schema.Literal("link"),
262
+ url: LinkUrl,
263
+ }),
264
+ Schema.TaggedStruct("Submit", { ref: BrowserReference, target: CredentialTarget }),
265
+ ]);
266
+
267
+ export type ProtectedBrowserAction = typeof ProtectedBrowserAction.Type;
268
+
269
+ /**
270
+ * Trust only these current observation origins. The top origin must be included. Other frames
271
+ * supply neither text nor usable refs. This does not expand network policy or credential grants.
272
+ */
273
+ export class CredentialObservationGrant extends Schema.Class<CredentialObservationGrant>(
274
+ "CredentialObservationGrant",
275
+ )({
276
+ decision: Schema.Literal("trust-recipient-no-credential-echo"),
277
+ origins: Schema.Array(CredentialOrigin).check(
278
+ Schema.isMinLength(1),
279
+ Schema.isMaxLength(16),
280
+ Schema.isUnique(),
281
+ ),
282
+ }) {}
283
+
284
+ export const CredentialObservationDecision = Schema.Union([
285
+ Schema.Literals(["trust-recipient-no-credential-echo", "deny"]),
286
+ CredentialObservationGrant,
287
+ ]);
288
+
289
+ /**
290
+ * Host-only vault and grant port. Derive caller from the authorized invocation, never Tool input.
291
+ * Recheck account ownership, current grants, merchant/frame/recipient pairing, and any side
292
+ * effects caused by filling. Listing authorizes metadata only. Grant checks never widen network
293
+ * policy. Implementations must not log material or put it in defects/traces.
294
+ */
295
+ export class BrowserCredentialAccess extends Context.Service<
296
+ BrowserCredentialAccess,
297
+ {
298
+ readonly caller: Effect.Effect<Redacted.Redacted<string>, CredentialAccessError>;
299
+ readonly list: (request: CredentialAccessRequest) => Effect.Effect<
300
+ ReadonlyArray<{
301
+ readonly key: Redacted.Redacted<string>;
302
+ readonly metadata: CredentialOfferMetadata;
303
+ }>,
304
+ CredentialAccessError
305
+ >;
306
+ readonly authorize: (
307
+ request: CredentialUseAuthorization,
308
+ ) => Effect.Effect<void, CredentialAccessError>;
309
+ readonly resolve: (
310
+ request: CredentialUseAuthorization,
311
+ ) => Effect.Effect<BrowserCredentialMaterial, CredentialAccessError>;
312
+ /**
313
+ * Optional host authority for every ordinary navigate/fill/click, mandatory for Submit.
314
+ * Recheck caller ownership, user intent, current submission/continuation grants for ALL prior
315
+ * exposures, and this exact target. Exposures may come from separate credential frames/forms.
316
+ * Without this hook, ordinary actions retain their observation gate and Submit is unsupported.
317
+ * Observation trust alone never authorizes a new native submit. Called again on each action;
318
+ * approvals are not cached. The pass revalidates caller and target after this hook returns.
319
+ */
320
+ readonly authorizeAction?: (request: {
321
+ readonly caller: Redacted.Redacted<string>;
322
+ readonly action: ProtectedBrowserAction;
323
+ readonly exposures: ReadonlyArray<CredentialTarget>;
324
+ }) => Effect.Effect<void, CredentialAccessError>;
325
+ /**
326
+ * Explicitly trust all observed destinations not to echo credentials, including transformed
327
+ * or delayed echoes. Called for every observation and non-secret action after exposure.
328
+ * The string grant trusts all current observed origins. Return CredentialObservationGrant
329
+ * to select an explicit subset instead. This is recipient trust, not submission authority,
330
+ * a universal secrecy guarantee, or a login verifier.
331
+ */
332
+ readonly observation: (request: {
333
+ readonly caller: Redacted.Redacted<string>;
334
+ readonly topOrigin: typeof CredentialOrigin.Type;
335
+ readonly frameOrigins: ReadonlyArray<typeof CredentialOrigin.Type>;
336
+ readonly exposures: ReadonlyArray<CredentialTarget>;
337
+ /** A human may have entered secrets; explicitly authorize observation even with no vault exposures. */
338
+ readonly humanExposure?: boolean;
339
+ /** Origins present when the human received control, retained across durable suspension. */
340
+ readonly humanOrigins?: ReadonlyArray<typeof CredentialOrigin.Type>;
341
+ }) => Effect.Effect<typeof CredentialObservationDecision.Type, CredentialAccessError>;
342
+ }
343
+ >()("@effect-agent/sandbox/BrowserCredentialAccess") {}
344
+
345
+ /**
346
+ * Host-only suspended-pass state. Persist with the host's fenced controller receipt, never in
347
+ * a Tool result. It contains no credential material, offers, DOM references usable after resume,
348
+ * cookies, page text, or provider capability. A host must restore its own credential exposure
349
+ * ledger as well. The original deadline and action allowance include time spent with the human.
350
+ */
351
+ export class ProtectedBrowserCheckpoint extends Schema.Class<ProtectedBrowserCheckpoint>(
352
+ "ProtectedBrowserCheckpoint",
353
+ )({
354
+ policy: InteractiveBrowserPolicy,
355
+ startedAt: Schema.Natural,
356
+ actions: Schema.Natural,
357
+ exposures: Schema.Array(CredentialTarget).check(Schema.isMaxLength(1000)),
358
+ humanExposure: Schema.Boolean,
359
+ humanOrigins: Schema.Array(CredentialOrigin).check(Schema.isMaxLength(16)),
360
+ dispatch: CredentialDispatch,
361
+ milestone: CredentialMilestone,
362
+ }) {}
363
+
364
+ /** A private ephemeral pass. No selectors, JavaScript, screenshots, viewer, or provider identity. */
365
+ export interface ProtectedBrowserHandle {
366
+ readonly navigate: (
367
+ request: ProtectedBrowserNavigate,
368
+ ) => Effect.Effect<void, ProtectedBrowserError>;
369
+ readonly observe: Effect.Effect<ProtectedBrowserObservation, ProtectedBrowserError>;
370
+ readonly click: (request: ProtectedBrowserClick) => Effect.Effect<void, ProtectedBrowserError>;
371
+ /** Uses the same lock, budgets, current-target checks and post-exposure grant as other actions. */
372
+ readonly fill: (request: ProtectedBrowserFill) => Effect.Effect<void, ProtectedBrowserError>;
373
+ readonly listCredentialOffers: (
374
+ request: ListCredentialOffers,
375
+ ) => Effect.Effect<ReadonlyArray<CredentialOffer>, ProtectedBrowserError>;
376
+ readonly useCredential: (
377
+ request: UseCredential,
378
+ ) => Effect.Effect<CredentialUseResult, ProtectedBrowserError>;
379
+ readonly close: Effect.Effect<typeof ProtectedCleanup.Type>;
380
+ }
381
+
382
+ export class ProtectedBrowser extends Context.Service<
383
+ ProtectedBrowser,
384
+ {
385
+ readonly open: (
386
+ policy: InteractiveBrowserPolicy,
387
+ ) => Effect.Effect<
388
+ ProtectedBrowserHandle,
389
+ ProtectedBrowserError,
390
+ Scope.Scope | BrowserCredentialAccess
391
+ >;
392
+ }
393
+ >()("@effect-agent/sandbox/ProtectedBrowser") {}
394
+
395
+ /** Build once in an execution/Attempt Layer. Acquires lazily and shares one pass across Tools. */
396
+ export class ProtectedBrowserSession extends Context.Service<
397
+ ProtectedBrowserSession,
398
+ {
399
+ readonly get: Effect.Effect<ProtectedBrowserHandle, ProtectedBrowserError>;
400
+ }
401
+ >()("@effect-agent/sandbox/ProtectedBrowserSession") {
402
+ static layer(policy: InteractiveBrowserPolicy) {
403
+ return Layer.effect(this)(
404
+ Effect.gen(function* () {
405
+ const browser = yield* ProtectedBrowser;
406
+ const access = yield* BrowserCredentialAccess;
407
+ const scope = yield* Effect.scope;
408
+
409
+ const cached = yield* Effect.cached(
410
+ browser
411
+ .open(policy)
412
+ .pipe(
413
+ Effect.provideService(BrowserCredentialAccess, access),
414
+ Effect.provideService(Scope.Scope, scope),
415
+ ),
416
+ );
417
+
418
+ return {
419
+ get: Effect.suspend(() =>
420
+ scope.state._tag === "Closed"
421
+ ? Effect.fail(
422
+ new ProtectedBrowserError({
423
+ reason: "closed",
424
+ dispatch: "not-dispatched",
425
+ milestone: "none",
426
+ observation: "closed",
427
+ cleanup: "not-requested",
428
+ }),
429
+ )
430
+ : cached,
431
+ ),
432
+ };
433
+ }),
434
+ );
435
+ }
436
+ }